From 5f01c706267c595de92406a32e7f31ef5056c2d0 Mon Sep 17 00:00:00 2001 From: Lucas de Castro Borges Date: Mon, 22 Apr 2024 00:35:53 -0300 Subject: New upstream version 2.0.3pre --- .github/workflows/codeql.yml | 87 + .github/workflows/test.yml | 44 + .gitignore | 3 +- .gitmodules | 3 - AUTHORS.md | 54 - CMakeLists.txt | 461 +- CONTRIBUTING | 16 - LICENSE | 5 +- README.md | 151 +- TODO | 43 - benchmark.conf | 316 - benchmark.data | Bin 65536 -> 0 bytes cmake/GNUInstallDirs.cmake | 441 +- cmake/Translations.cmake | 2 +- config.h.cmake | 34 +- data/arm.ids | 133 + data/benchmark.data | Bin 0 -> 65536 bytes data/benchmark.json | 1 + data/cpuflags.json | 249 + data/edid.ids | 99 + data/ieee_oui.ids | 26746 ++++++++++++++++++++++++ data/kernel-module-icons.json | 3221 +++ data/pci.ids.min | 211 + data/sdcard.ids | 48 + data/usb.ids | 21334 +++++++++++++++++++ data/vendor.ids | 1353 ++ deps/sysobj_early/data/sort_vendors.pl | 43 + deps/sysobj_early/gui/uri_handler.c | 53 + deps/sysobj_early/gui/uri_handler.h | 32 + deps/sysobj_early/include/appf.h | 40 + deps/sysobj_early/include/auto_free.h | 67 + deps/sysobj_early/include/cpubits.h | 39 + deps/sysobj_early/include/format_early.h | 47 + deps/sysobj_early/include/gg_slist.h | 30 + deps/sysobj_early/include/nice_name.h | 32 + deps/sysobj_early/include/strstr_word.h | 35 + deps/sysobj_early/include/util_edid.h | 268 + deps/sysobj_early/include/util_ids.h | 76 + deps/sysobj_early/include/util_sysobj.h | 53 + deps/sysobj_early/src/appf.c | 63 + deps/sysobj_early/src/auto_free.c | 219 + deps/sysobj_early/src/cpubits.c | 132 + deps/sysobj_early/src/format_early.c | 160 + deps/sysobj_early/src/gg_slist.c | 49 + deps/sysobj_early/src/nice_name.c | 203 + deps/sysobj_early/src/strstr_word.c | 80 + deps/sysobj_early/src/util_edid.c | 1470 ++ deps/sysobj_early/src/util_edid_svd_table.c | 164 + deps/sysobj_early/src/util_ids.c | 316 + deps/sysobj_early/src/util_sysobj.c | 303 + deps/uber-graph/README | 39 + deps/uber-graph/g-ring.c | 227 + deps/uber-graph/g-ring.h | 84 + deps/uber-graph/uber-frame-source.c | 177 + deps/uber-graph/uber-frame-source.h | 43 + deps/uber-graph/uber-graph.c | 2166 ++ deps/uber-graph/uber-graph.h | 104 + deps/uber-graph/uber-heat-map.c | 347 + deps/uber-graph/uber-heat-map.h | 66 + deps/uber-graph/uber-label.c | 395 + deps/uber-graph/uber-label.h | 60 + deps/uber-graph/uber-line-graph.c | 1028 + deps/uber-graph/uber-line-graph.h | 100 + deps/uber-graph/uber-range.c | 64 + deps/uber-graph/uber-range.h | 50 + deps/uber-graph/uber-scale.c | 54 + deps/uber-graph/uber-scale.h | 38 + deps/uber-graph/uber-scatter.c | 421 + deps/uber-graph/uber-scatter.h | 66 + deps/uber-graph/uber-timeout-interval.c | 140 + deps/uber-graph/uber-timeout-interval.h | 56 + deps/uber-graph/uber-window.c | 330 + deps/uber-graph/uber-window.h | 65 + deps/uber-graph/uber.h | 30 + doc/index.hlp | 35 - hardinfo.1 | 69 - hardinfo.desktop.cmake | 15 - hardinfo/binreloc.c | 668 - hardinfo/cpu_util.c | 231 - hardinfo/cpubits.c | 113 - hardinfo/dmi_util.c | 157 - hardinfo/dt_util.c | 1040 - hardinfo/expr.c | 250 - hardinfo/hardinfo.c | 160 - hardinfo/info.c | 249 - hardinfo/socket.c | 127 - hardinfo/util.c | 1389 -- hardinfo/vendor.c | 217 - hardinfo2.1 | 30 + hardinfo2.desktop.cmake | 12 + hardinfo2/binreloc.c | 668 + hardinfo2/cpu_util.c | 252 + hardinfo2/dmi_util.c | 450 + hardinfo2/dt_util.c | 1187 ++ hardinfo2/expr.c | 250 + hardinfo2/gg_key_file_parse_string_as_value.c | 112 + hardinfo2/gg_strescape.c | 139 + hardinfo2/gpu_util.c | 477 + hardinfo2/hardinfo.c | 175 + hardinfo2/hinote_util.c | 27 + hardinfo2/info.c | 584 + hardinfo2/pci_util.c | 463 + hardinfo2/problem_marker.c | 13 + hardinfo2/socket.c | 127 + hardinfo2/storage_util.c | 250 + hardinfo2/udisks2_util.c | 641 + hardinfo2/usb_util.c | 557 + hardinfo2/util.c | 1452 ++ hardinfo2/vendor.c | 655 + hardinfo2/x_util.c | 342 + includes/alpha/processor-platform.h | 4 +- includes/arm/processor-platform.h | 4 +- includes/benchmark.h | 44 +- includes/callbacks.h | 5 +- includes/computer.h | 64 +- includes/cpu_util.h | 2 + includes/devices.h | 32 +- includes/distro_flavors.h | 37 + includes/dmi_util.h | 44 +- includes/dt_util.h | 24 +- includes/e2k/processor-platform.h | 72 + includes/egg-markdown.h | 2 +- includes/expr.h | 4 +- includes/gpu_util.h | 61 + includes/guibench.h | 4 +- includes/hardinfo.h | 96 +- includes/help-viewer.h | 4 +- includes/ia64/processor-platform.h | 4 +- includes/iconcache.h | 4 +- includes/info.h | 57 +- includes/loadgraph.h | 5 +- includes/loongarch64/processor-platform.h | 31 + includes/m68k/processor-platform.h | 4 +- includes/markdown-text-view.h | 2 +- includes/menu.h | 4 +- includes/mips/processor-platform.h | 4 +- includes/network.h | 4 +- includes/parisc/processor-platform.h | 4 +- includes/pci_util.h | 78 + includes/ppc/processor-platform.h | 4 +- includes/remote.h | 29 - includes/report.h | 32 +- includes/riscv/processor-platform.h | 4 +- includes/s390/processor-platform.h | 4 +- includes/sh/processor-platform.h | 4 +- includes/sha1.h | 2 +- includes/shell.h | 69 +- includes/socket.h | 4 +- includes/sparc/processor-platform.h | 4 +- includes/ssh-conn.h | 66 - includes/stock.h | 6 +- includes/storage_util.h | 22 + includes/syncmanager.h | 24 +- includes/udisks2_util.h | 69 + includes/uidefs.h | 103 +- includes/usb_util.h | 78 + includes/vendor.h | 64 +- includes/x86/processor-platform.h | 4 +- includes/x_util.h | 104 + includes/xmlrpc-client.h | 43 - includes/xmlrpc-server.h | 25 - modules/benchmark.c | 938 +- modules/benchmark/bench_results.c | 637 +- modules/benchmark/bench_util.c | 58 + modules/benchmark/benches.c | 220 +- modules/benchmark/blowfish.c | 45 - modules/benchmark/blowfish2.c | 83 + modules/benchmark/cryptohash.c | 49 +- modules/benchmark/drawing.c | 4 +- modules/benchmark/fbench.c | 26 +- modules/benchmark/fft.c | 41 +- modules/benchmark/fftbench.c | 6 +- modules/benchmark/fib.c | 35 +- modules/benchmark/guibench.c | 6 +- modules/benchmark/nqueens.c | 41 +- modules/benchmark/raytrace.c | 28 +- modules/benchmark/sha1.c | 2 +- modules/benchmark/sysbench.c | 270 + modules/benchmark/zlib.c | 63 +- modules/computer.c | 490 +- modules/computer/alsa.c | 4 +- modules/computer/boots.c | 8 +- modules/computer/display.c | 169 +- modules/computer/environment.c | 4 +- modules/computer/filesystem.c | 13 +- modules/computer/groups.c | 4 +- modules/computer/languages.c | 262 +- modules/computer/loadavg.c | 4 +- modules/computer/memory.c | 4 +- modules/computer/memory_usage.c | 125 + modules/computer/modules.c | 471 +- modules/computer/os.c | 249 +- modules/computer/ubuntu_flavors.c | 90 + modules/computer/uptime.c | 4 +- modules/computer/users.c | 4 +- modules/devices.c | 567 +- modules/devices/alpha/processor.c | 4 +- modules/devices/arm/arm_data.c | 112 +- modules/devices/arm/arm_data.h | 5 +- modules/devices/arm/processor.c | 52 +- modules/devices/battery.c | 23 +- modules/devices/devicetree.c | 43 +- modules/devices/devicetree/pmac_data.c | 4 +- modules/devices/devicetree/rpi_data.c | 89 +- modules/devices/devmemory.c | 120 - modules/devices/dmi.c | 156 +- modules/devices/dmi_memory.c | 1050 + modules/devices/e2k/processor.c | 420 + modules/devices/firmware.c | 261 + modules/devices/gpu.c | 291 + modules/devices/ia64/processor.c | 4 +- modules/devices/inputdevices.c | 199 +- modules/devices/loongarch64/processor.c | 90 + modules/devices/m68k/processor.c | 4 +- modules/devices/mips/processor.c | 4 +- modules/devices/monitors.c | 515 + modules/devices/parisc/processor.c | 4 +- modules/devices/pci.c | 384 +- modules/devices/ppc/processor.c | 4 +- modules/devices/printers.c | 70 +- modules/devices/resources.c | 30 +- modules/devices/riscv/processor.c | 4 +- modules/devices/riscv/riscv_data.c | 2 +- modules/devices/s390/processor.c | 4 +- modules/devices/sensors.c | 503 +- modules/devices/sh/processor.c | 4 +- modules/devices/sparc/processor.c | 4 +- modules/devices/spd-decode.c | 2064 +- modules/devices/spd-vendors.c | 292 + modules/devices/storage.c | 509 +- modules/devices/usb.c | 542 +- modules/devices/x86/processor.c | 108 +- modules/devices/x86/x86_data.c | 88 +- modules/network.c | 32 +- modules/network/net.c | 6 +- modules/network/nfs.c | 4 +- modules/network/samba.c | 11 +- pixmaps/bolt.png | Bin 0 -> 687 bytes pixmaps/camera-photo.png | Bin 0 -> 1331 bytes pixmaps/camera-web.png | Bin 0 -> 1314 bytes pixmaps/circle_green_check.svg | 1 + pixmaps/circle_red_x.svg | 1 + pixmaps/circle_yellow_exclaim.svg | 1 + pixmaps/clipboard.png | Bin 0 -> 3293 bytes pixmaps/distros/arch.svg | 1 + pixmaps/distros/clear-linux-os.svg | 1 + pixmaps/distros/debian.svg | 1 + pixmaps/distros/fedora.svg | 1 + pixmaps/distros/kubuntu.svg | 1 + pixmaps/distros/ubuntu.svg | 1 + pixmaps/distros/xubuntu.svg | 1 + pixmaps/fan.png | Bin 0 -> 1492 bytes pixmaps/file-roller.png | Bin 1444 -> 1361 bytes pixmaps/hardinfo.png | Bin 0 -> 1904 bytes pixmaps/hardinfo2.png | Bin 0 -> 15025 bytes pixmaps/logo.png | Bin 1904 -> 0 bytes pixmaps/media-floppy.png | Bin 0 -> 1006 bytes pixmaps/media-removable.png | Bin 0 -> 1104 bytes pixmaps/os.png | Bin 1381 -> 1378 bytes pixmaps/refresh.png | Bin 0 -> 18924 bytes pixmaps/security.png | Bin 0 -> 1203 bytes pixmaps/server_sync.png | Bin 0 -> 17810 bytes pixmaps/syncmanager-small.png | Bin 920 -> 1052 bytes pixmaps/syncmanager.png | Bin 3633 -> 1971 bytes po/CMakeLists.txt | 4 +- po/HOWTO.txt | 9 - po/de.po | 3845 +++- po/es.po | 4476 ++-- po/fr.po | 3944 +++- po/hardinfo.pot | 4620 ++-- po/ko.po | 6100 ++++++ po/pt.po | 6124 ++++++ po/pt_BR.po | 6127 ++++++ po/ru.po | 4281 ++-- po/salvage.sh | 83 - po/tr.po | 6295 ++++++ po/updatepo.sh | 9 +- po/zh_CN.po | 5945 ++++++ shell/callbacks.c | 150 +- shell/iconcache.c | 4 +- shell/loadgraph-uber.c | 8 +- shell/loadgraph.c | 33 +- shell/menu.c | 38 +- shell/report.c | 527 +- shell/shell.c | 1547 +- shell/stock.c | 22 +- shell/syncmanager.c | 737 +- test/data/alpha_as_cpuinfo | 19 - test/data/arm_asus_android_cpuinfo | 17 - test/data/arm_jetsontx2_cpuinfo | 61 - test/data/arm_marv_cpuinfo | 9 - test/data/arm_rpi3_aarch32_cpuinfo | 44 - test/data/arm_rpi3_aarch64_cpuinfo | 36 - test/data/ia64_x2_cpuinfo | 27 - test/data/m68k_sun3_cpuinfo | 6 - test/data/mips_loongson_cpuinfo | 13 - test/data/parisc_hppa_fortex4_cpuinfo | 59 - test/data/power8_cpuinfo | 325 - test/data/ppc_g5_cpuinfo | 30 - test/data/riscv_fake_cpuinfo | 2 - test/data/riscv_sim_cpuinfo | 2 - test/data/rpi1_raspbian.dts | 758 - test/data/rpi3_arch_arm64.dts | 666 - test/data/rpi3_raspbian.dts | 892 - test/data/s390_hurcules_cpuinfo | 5 - test/data/sh_dreamcast_cpuinfo | 9 - test/data/sh_sh3_cpuinfo | 4 - test/data/sh_sh64_cpuinfo | 13 - test/data/sparc_m7_cpuinfo | 45 - test/data/x86_amdr7_cpuinfo | 447 - test/data/x86_cyrix6x86coma_cpuinfo | 17 - test/data/x86_pent_cpuinfo | 17 - test/data/x86_pentf00f_cpuinfo | 18 - test/rm_hardinfo.sh | 30 - test/test.sh | 33 - test/ws_scan.sh | 11 - tools/rm_hardinfo.sh | 29 + 317 files changed, 130922 insertions(+), 21029 deletions(-) create mode 100644 .github/workflows/codeql.yml create mode 100644 .github/workflows/test.yml delete mode 100644 AUTHORS.md delete mode 100644 CONTRIBUTING delete mode 100644 TODO delete mode 100644 benchmark.conf delete mode 100644 benchmark.data create mode 100644 data/arm.ids create mode 100644 data/benchmark.data create mode 100644 data/benchmark.json create mode 100644 data/cpuflags.json create mode 100644 data/edid.ids create mode 100644 data/ieee_oui.ids create mode 100644 data/kernel-module-icons.json create mode 100644 data/pci.ids.min create mode 100644 data/sdcard.ids create mode 100644 data/usb.ids create mode 100644 data/vendor.ids create mode 100644 deps/sysobj_early/data/sort_vendors.pl create mode 100644 deps/sysobj_early/gui/uri_handler.c create mode 100644 deps/sysobj_early/gui/uri_handler.h create mode 100644 deps/sysobj_early/include/appf.h create mode 100644 deps/sysobj_early/include/auto_free.h create mode 100644 deps/sysobj_early/include/cpubits.h create mode 100644 deps/sysobj_early/include/format_early.h create mode 100644 deps/sysobj_early/include/gg_slist.h create mode 100644 deps/sysobj_early/include/nice_name.h create mode 100644 deps/sysobj_early/include/strstr_word.h create mode 100644 deps/sysobj_early/include/util_edid.h create mode 100644 deps/sysobj_early/include/util_ids.h create mode 100644 deps/sysobj_early/include/util_sysobj.h create mode 100644 deps/sysobj_early/src/appf.c create mode 100644 deps/sysobj_early/src/auto_free.c create mode 100644 deps/sysobj_early/src/cpubits.c create mode 100644 deps/sysobj_early/src/format_early.c create mode 100644 deps/sysobj_early/src/gg_slist.c create mode 100644 deps/sysobj_early/src/nice_name.c create mode 100644 deps/sysobj_early/src/strstr_word.c create mode 100644 deps/sysobj_early/src/util_edid.c create mode 100644 deps/sysobj_early/src/util_edid_svd_table.c create mode 100644 deps/sysobj_early/src/util_ids.c create mode 100644 deps/sysobj_early/src/util_sysobj.c create mode 100644 deps/uber-graph/README create mode 100644 deps/uber-graph/g-ring.c create mode 100644 deps/uber-graph/g-ring.h create mode 100644 deps/uber-graph/uber-frame-source.c create mode 100644 deps/uber-graph/uber-frame-source.h create mode 100644 deps/uber-graph/uber-graph.c create mode 100644 deps/uber-graph/uber-graph.h create mode 100644 deps/uber-graph/uber-heat-map.c create mode 100644 deps/uber-graph/uber-heat-map.h create mode 100644 deps/uber-graph/uber-label.c create mode 100644 deps/uber-graph/uber-label.h create mode 100644 deps/uber-graph/uber-line-graph.c create mode 100644 deps/uber-graph/uber-line-graph.h create mode 100644 deps/uber-graph/uber-range.c create mode 100644 deps/uber-graph/uber-range.h create mode 100644 deps/uber-graph/uber-scale.c create mode 100644 deps/uber-graph/uber-scale.h create mode 100644 deps/uber-graph/uber-scatter.c create mode 100644 deps/uber-graph/uber-scatter.h create mode 100644 deps/uber-graph/uber-timeout-interval.c create mode 100644 deps/uber-graph/uber-timeout-interval.h create mode 100644 deps/uber-graph/uber-window.c create mode 100644 deps/uber-graph/uber-window.h create mode 100644 deps/uber-graph/uber.h delete mode 100644 doc/index.hlp delete mode 100644 hardinfo.1 delete mode 100644 hardinfo.desktop.cmake delete mode 100644 hardinfo/binreloc.c delete mode 100644 hardinfo/cpu_util.c delete mode 100644 hardinfo/cpubits.c delete mode 100644 hardinfo/dmi_util.c delete mode 100644 hardinfo/dt_util.c delete mode 100644 hardinfo/expr.c delete mode 100644 hardinfo/hardinfo.c delete mode 100644 hardinfo/info.c delete mode 100644 hardinfo/socket.c delete mode 100644 hardinfo/util.c delete mode 100644 hardinfo/vendor.c create mode 100644 hardinfo2.1 create mode 100644 hardinfo2.desktop.cmake create mode 100644 hardinfo2/binreloc.c create mode 100644 hardinfo2/cpu_util.c create mode 100644 hardinfo2/dmi_util.c create mode 100644 hardinfo2/dt_util.c create mode 100644 hardinfo2/expr.c create mode 100644 hardinfo2/gg_key_file_parse_string_as_value.c create mode 100644 hardinfo2/gg_strescape.c create mode 100644 hardinfo2/gpu_util.c create mode 100644 hardinfo2/hardinfo.c create mode 100644 hardinfo2/hinote_util.c create mode 100644 hardinfo2/info.c create mode 100644 hardinfo2/pci_util.c create mode 100644 hardinfo2/problem_marker.c create mode 100644 hardinfo2/socket.c create mode 100644 hardinfo2/storage_util.c create mode 100644 hardinfo2/udisks2_util.c create mode 100644 hardinfo2/usb_util.c create mode 100644 hardinfo2/util.c create mode 100644 hardinfo2/vendor.c create mode 100644 hardinfo2/x_util.c create mode 100644 includes/distro_flavors.h create mode 100644 includes/e2k/processor-platform.h create mode 100644 includes/gpu_util.h create mode 100644 includes/loongarch64/processor-platform.h create mode 100644 includes/pci_util.h delete mode 100644 includes/remote.h delete mode 100644 includes/ssh-conn.h create mode 100644 includes/storage_util.h create mode 100644 includes/udisks2_util.h create mode 100644 includes/usb_util.h create mode 100644 includes/x_util.h delete mode 100644 includes/xmlrpc-client.h delete mode 100644 includes/xmlrpc-server.h create mode 100644 modules/benchmark/bench_util.c create mode 100644 modules/benchmark/blowfish2.c create mode 100644 modules/benchmark/sysbench.c create mode 100644 modules/computer/memory_usage.c create mode 100644 modules/computer/ubuntu_flavors.c delete mode 100644 modules/devices/devmemory.c create mode 100644 modules/devices/dmi_memory.c create mode 100644 modules/devices/e2k/processor.c create mode 100644 modules/devices/firmware.c create mode 100644 modules/devices/gpu.c create mode 100644 modules/devices/loongarch64/processor.c create mode 100644 modules/devices/monitors.c create mode 100644 modules/devices/spd-vendors.c create mode 100644 pixmaps/bolt.png create mode 100644 pixmaps/camera-photo.png create mode 100644 pixmaps/camera-web.png create mode 100644 pixmaps/circle_green_check.svg create mode 100644 pixmaps/circle_red_x.svg create mode 100644 pixmaps/circle_yellow_exclaim.svg create mode 100755 pixmaps/clipboard.png create mode 100644 pixmaps/distros/arch.svg create mode 100644 pixmaps/distros/clear-linux-os.svg create mode 100644 pixmaps/distros/debian.svg create mode 100644 pixmaps/distros/fedora.svg create mode 100644 pixmaps/distros/kubuntu.svg create mode 100644 pixmaps/distros/ubuntu.svg create mode 100644 pixmaps/distros/xubuntu.svg create mode 100644 pixmaps/fan.png create mode 100644 pixmaps/hardinfo.png create mode 100755 pixmaps/hardinfo2.png delete mode 100644 pixmaps/logo.png create mode 100644 pixmaps/media-floppy.png create mode 100644 pixmaps/media-removable.png create mode 100755 pixmaps/refresh.png create mode 100644 pixmaps/security.png create mode 100755 pixmaps/server_sync.png delete mode 100644 po/HOWTO.txt create mode 100644 po/ko.po create mode 100644 po/pt.po create mode 100644 po/pt_BR.po delete mode 100644 po/salvage.sh create mode 100644 po/tr.po mode change 100644 => 100755 po/updatepo.sh create mode 100644 po/zh_CN.po delete mode 100644 test/data/alpha_as_cpuinfo delete mode 100644 test/data/arm_asus_android_cpuinfo delete mode 100644 test/data/arm_jetsontx2_cpuinfo delete mode 100644 test/data/arm_marv_cpuinfo delete mode 100644 test/data/arm_rpi3_aarch32_cpuinfo delete mode 100644 test/data/arm_rpi3_aarch64_cpuinfo delete mode 100644 test/data/ia64_x2_cpuinfo delete mode 100644 test/data/m68k_sun3_cpuinfo delete mode 100644 test/data/mips_loongson_cpuinfo delete mode 100644 test/data/parisc_hppa_fortex4_cpuinfo delete mode 100644 test/data/power8_cpuinfo delete mode 100644 test/data/ppc_g5_cpuinfo delete mode 100644 test/data/riscv_fake_cpuinfo delete mode 100644 test/data/riscv_sim_cpuinfo delete mode 100644 test/data/rpi1_raspbian.dts delete mode 100644 test/data/rpi3_arch_arm64.dts delete mode 100644 test/data/rpi3_raspbian.dts delete mode 100644 test/data/s390_hurcules_cpuinfo delete mode 100644 test/data/sh_dreamcast_cpuinfo delete mode 100644 test/data/sh_sh3_cpuinfo delete mode 100644 test/data/sh_sh64_cpuinfo delete mode 100644 test/data/sparc_m7_cpuinfo delete mode 100644 test/data/x86_amdr7_cpuinfo delete mode 100644 test/data/x86_cyrix6x86coma_cpuinfo delete mode 100644 test/data/x86_pent_cpuinfo delete mode 100644 test/data/x86_pentf00f_cpuinfo delete mode 100644 test/rm_hardinfo.sh delete mode 100644 test/test.sh delete mode 100644 test/ws_scan.sh create mode 100755 tools/rm_hardinfo.sh diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml new file mode 100644 index 00000000..2a34a9b3 --- /dev/null +++ b/.github/workflows/codeql.yml @@ -0,0 +1,87 @@ +# For most projects, this workflow file will not need changing; you simply need +# to commit it to your repository. +# +# You may wish to alter this file to override the set of languages analyzed, +# or to provide custom queries or build logic. +# +# ******** NOTE ******** +# We have attempted to detect the languages in your repository. Please check +# the `language` matrix defined below to confirm you have the correct set of +# supported CodeQL languages. +# +name: "CodeQL" + +on: + push: + branches: [ "master" ] + pull_request: + branches: [ "master" ] + schedule: + - cron: '23 9 * * 4' + +jobs: + analyze: + name: Analyze + # Runner size impacts CodeQL analysis time. To learn more, please see: + # - https://gh.io/recommended-hardware-resources-for-running-codeql + # - https://gh.io/supported-runners-and-hardware-resources + # - https://gh.io/using-larger-runners + # Consider using larger runners for possible analysis time improvements. + runs-on: ${{ (matrix.language == 'swift' && 'macos-latest') || 'ubuntu-latest' }} + timeout-minutes: ${{ (matrix.language == 'swift' && 120) || 360 }} + permissions: + # required for all workflows + security-events: write + + # only required for workflows in private repositories +# actions: read +# contents: read + + strategy: + fail-fast: false + matrix: + language: [ 'c-cpp' ] + # CodeQL supports [ 'c-cpp', 'csharp', 'go', 'java-kotlin', 'javascript-typescript', 'python', 'ruby', 'swift' ] + # Use only 'java-kotlin' to analyze code written in Java, Kotlin or both + # Use only 'javascript-typescript' to analyze code written in JavaScript, TypeScript or both + # Learn more about CodeQL language support at https://aka.ms/codeql-docs/language-support + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Install system dependencies + run: sudo apt install libjson-glib-dev zlib1g-dev libsoup2.4-dev libgtk-3-dev libglib2.0-dev gettext + + # Initializes the CodeQL tools for scanning. + - name: Initialize CodeQL + uses: github/codeql-action/init@v3 + with: + languages: ${{ matrix.language }} + # If you wish to specify custom queries, you can do so here or in a config file. + # By default, queries listed here will override any specified in a config file. + # Prefix the list here with "+" to use these queries and those in the config file. + + # For more details on CodeQL's query packs, refer to: https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-queries-in-ql-packs + # queries: security-extended,security-and-quality + + + # Autobuild attempts to build any compiled languages (C/C++, C#, Go, Java, or Swift). + # If this step fails, then you should remove it and run the build manually (see below) + - name: Autobuild + uses: github/codeql-action/autobuild@v3 + + # ℹ️ Command-line programs to run using the OS shell. + # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun + + # If the Autobuild fails above, remove it and uncomment the following three lines. + # modify them (or add more) to build your code if your project, please refer to the EXAMPLE below for guidance. + + # - run: | + # echo "Run, Build Application using script" + # ./location_of_script_within_repo/buildscript.sh + + - name: Perform CodeQL Analysis + uses: github/codeql-action/analyze@v3 + with: + category: "/language:${{matrix.language}}" diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 00000000..a5232971 --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,44 @@ +# This starter workflow is for a CMake project running on a single platform. There is a different starter workflow if you need cross-platform coverage. +# See: https://github.com/actions/starter-workflows/blob/main/ci/cmake-multi-platform.yml +name: Build + +on: + push: + branches: [ "master" ] + pull_request: + branches: [ "master" ] + +env: + # Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.) + BUILD_TYPE: Release + +jobs: + build: + # The CMake configure and build commands are platform agnostic and should work equally well on Windows or Mac. + # You can convert this to a matrix build if you need cross-platform coverage. + # See: https://docs.github.com/en/free-pro-team@latest/actions/learn-github-actions/managing-complex-workflows#using-a-build-matrix + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v3 + + - name: Install system dependencies + run: sudo apt install libjson-glib-dev zlib1g-dev libsoup2.4-dev libgtk-3-dev libglib2.0-dev gettext + + - name: Configure CMake + # Configure CMake in a 'build' subdirectory. `CMAKE_BUILD_TYPE` is only required if you are using a single-configuration generator such as make. + # See https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html?highlight=cmake_build_type + run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} + + - name: Build + # Build your program with the given configuration + run: cmake --build ${{github.workspace}}/build + + #--config ${{env.BUILD_TYPE}} + +# - name: Test +# working-directory: ${{github.workspace}}/build +# # Execute tests defined by the CMake configuration. +# # See https://cmake.org/cmake/help/latest/manual/ctest.1.html for more detail +# run: ctest -C ${{env.BUILD_TYPE}} + diff --git a/.gitignore b/.gitignore index 97744313..8b1b0d95 100644 --- a/.gitignore +++ b/.gitignore @@ -5,6 +5,7 @@ config.h *~ arch/this build/ +build-*/ test/build-* po/*.old - +po/*.mo diff --git a/.gitmodules b/.gitmodules index 43026ff5..e69de29b 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +0,0 @@ -[submodule "deps/uber-graph"] - path = deps/uber-graph - url = https://github.com/chergert/uber-graph.git diff --git a/AUTHORS.md b/AUTHORS.md deleted file mode 100644 index dc7b7ded..00000000 --- a/AUTHORS.md +++ /dev/null @@ -1,54 +0,0 @@ -HardInfo was started in 2003, by Leandro Pereira, and has received -contributions from many people over the years. - -There was a time it didn't even use a version control system. The early -notes and changelogs were lost. Some important contributions were made -by simply submitting bug reports or comments. For these reasons, it -would be difficult to gather the names of all the people that -contributed to the project. - -Here is an incomplete list of contributors: - -* Leandro A. F. Pereira -* Stewart Adam -* Pascal F. Martin -* Burt P. -* TotalCaesar659 -* Andrey Esin -* Julian Ospald -* Julien Lavergne -* Fernando López -* PICCORO Lenz McKAY -* Alexander Münch -* Simon Quigley -* AsciiWolf -* George Schneeloch -* Mattia Rizzolo -* Yo -* "jamesbond" (http://chiselapp.com/user/jamesbond/) - -Includes code from or based on: - -* uber-graph by Christian Hergert , and others. -* BinReloc by Hongli Lai -* decode-dimms.pl by Philip Edelbrock , - Christian Zuckschwerdt , and - Burkart Lingner -* x86cpucaps by Osamu Kayasono -* MD5 implementation by Colin Plumb (see md5.c for details) -* SHA1 implementation by Steve Reid (see sha1.c for details) -* Blowfish implementation by Paul Kocher (see blowfish.c for details) -* Raytracing benchmark by John Walker (see fbench.c for details) -* FFT benchmark by Scott Robert Ladd (see fftbench.c for details) -* Vendor list based on GtkSysInfo by Pissens Sebastien - -Artwork: - -* Jakub Szypulka -* Tango Project -* The GNOME Project -* VMWare, Inc. (USB icon from VMWare Workstation 6) - -See also: - -* https://github.com/lpereira/hardinfo/graphs/contributors diff --git a/CMakeLists.txt b/CMakeLists.txt index ab62cad6..bf88934d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,61 +1,67 @@ -project(HardInfo) -cmake_minimum_required(VERSION 2.6) -cmake_policy(VERSION 2.6) - -set(HARDINFO_VERSION "0.6-alpha") -option(HARDINFO_NOSYNC "Disable database sync via libsoup" 1) -option(HARDINFO_GTK3 "Attempt to build for GTK3 (0/off for GTK2)" 0) -set(OVRARCH "" CACHE STRING "Override HARDINFO_ARCH value") +cmake_minimum_required(VERSION 3.0.0) +cmake_policy(VERSION 3.0.0) +project(hardinfo2) + +set(HARDINFO2_VERSION "2.0.3") + +option(HARDINFO2_GTK3 "Build for GTK3 (0/off for GTK2)" 1) +option(HARDINFO2_LIBSOUP3 "Build for libsoup-3.0(EXPERIMENTAL) (0/off for libsoup-2.4)" 0) + +set(OVRARCH "" CACHE STRING "Override HARDINFO2_ARCH value") set(OVRCPUINFO "" CACHE STRING "Specify a different file for /proc/cpuinfo") set(OVRDTRROOT "" CACHE STRING "Specify a different path for /proc/device-tree") -SET( CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake" ) +set(DISTRO "" CACHE STRING "Distro build version eg. 1.el(rpm) or 1(deb)") + +SET(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") include(GNUInstallDirs) if(${CMAKE_BUILD_TYPE} MATCHES [Dd]ebug) - set(HARDINFO_DEBUG 1) + set(HARDINFO2_DEBUG 1) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=address") endif() if(${CMAKE_HOST_SYSTEM_NAME} MATCHES "Linux") - set(HARDINFO_OS "linux") + set(HARDINFO2_OS "linux") else() message(FATAL_ERROR "Unsupported operating system: ${CMAKE_HOST_SYSTEM_NAME}") endif() if(${CMAKE_HOST_SYSTEM_PROCESSOR} MATCHES "i[3-6]86") - set(HARDINFO_ARCH "x86") + set(HARDINFO2_ARCH "x86") elseif(${CMAKE_HOST_SYSTEM_PROCESSOR} MATCHES "x86_64") - set(HARDINFO_ARCH "x86") + set(HARDINFO2_ARCH "x86") elseif(${CMAKE_HOST_SYSTEM_PROCESSOR} MATCHES "(ppc|ppc32|ppc64|ppc64le)") - set(HARDINFO_ARCH "ppc") + set(HARDINFO2_ARCH "ppc") elseif(${CMAKE_HOST_SYSTEM_PROCESSOR} MATCHES "mips") - set(HARDINFO_ARCH "mips") + set(HARDINFO2_ARCH "mips") elseif(${CMAKE_HOST_SYSTEM_PROCESSOR} MATCHES "parisc.*") - set(HARDINFO_ARCH "parisc") + set(HARDINFO2_ARCH "parisc") elseif(${CMAKE_HOST_SYSTEM_PROCESSOR} MATCHES "sparc{32,64}") - set(HARDINFO_ARCH "sparc") + set(HARDINFO2_ARCH "sparc") elseif(${CMAKE_HOST_SYSTEM_PROCESSOR} MATCHES "arm.*") - set(HARDINFO_ARCH "arm") + set(HARDINFO2_ARCH "arm") elseif(${CMAKE_HOST_SYSTEM_PROCESSOR} MATCHES "aarch64.*") - set(HARDINFO_ARCH "arm") + set(HARDINFO2_ARCH "arm") elseif(${CMAKE_HOST_SYSTEM_PROCESSOR} MATCHES "ia64") - set(HARDINFO_ARCH "ia64") + set(HARDINFO2_ARCH "ia64") +elseif(${CMAKE_HOST_SYSTEM_PROCESSOR} MATCHES "loongarch64") + set(HARDINFO2_ARCH "loongarch64") elseif(${CMAKE_HOST_SYSTEM_PROCESSOR} MATCHES "alpha") - set(HARDINFO_ARCH "alpha") + set(HARDINFO2_ARCH "alpha") elseif(${CMAKE_HOST_SYSTEM_PROCESSOR} MATCHES "s390.*") - set(HARDINFO_ARCH "s390") + set(HARDINFO2_ARCH "s390") elseif(${CMAKE_HOST_SYSTEM_PROCESSOR} MATCHES "m68k") - set(HARDINFO_ARCH "m68k") + set(HARDINFO2_ARCH "m68k") elseif(${CMAKE_HOST_SYSTEM_PROCESSOR} MATCHES "sh[3-5]") - set(HARDINFO_ARCH "sh") + set(HARDINFO2_ARCH "sh") elseif(${CMAKE_HOST_SYSTEM_PROCESSOR} MATCHES "(riscv|riscv32|riscv64)") - set(HARDINFO_ARCH "riscv") + set(HARDINFO2_ARCH "riscv") else() message(FATAL_ERROR "Unsupported architecture: ${CMAKE_HOST_SYSTEM_PROCESSOR}") endif() if (OVRARCH) - set(HARDINFO_ARCH ${OVRARCH}) + set(HARDINFO2_ARCH ${OVRARCH}) endif() if (OVRCPUINFO) add_definitions(-DPROC_CPUINFO=${OVRCPUINFO}) @@ -65,61 +71,180 @@ if (OVRDTRROOT) add_definitions(-DDTR_ROOT=${OVRDTRROOT}) message(STATUS "/proc/device-tree override: ${OVRDTRROOT}") endif() -add_definitions(-DLOCALEDIR="${CMAKE_INSTALL_PREFIX}/share/locale") -message(STATUS "LOCALEDIR = ${CMAKE_INSTALL_PREFIX}/share/locale") +add_definitions(-DLOCALEDIR="${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LOCALEDIR}") +message(STATUS "LOCALEDIR = ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LOCALEDIR}") -message(STATUS "Building HardInfo for architecture: ${HARDINFO_OS}-${HARDINFO_ARCH}") +message(STATUS "Building HardInfo2 for architecture: ${HARDINFO2_OS}-${HARDINFO2_ARCH}") add_definitions("-std=gnu89") +#add_definitions("-Wno-deprecated-declarations") +#add_definitions("-Wextra") +add_definitions("-Wno-missing-field-initializers") +add_definitions("-Wformat") +add_definitions("-Wformat-security") + +set(PACKAGE_LIBSOUP2_MINVERSION 2.42) +#Actually needed for save settings, steal_pointer - FIXME +set(PACKAGE_LIBGLIB2_MINVERSION 2.44) +#set(PACKAGE_LIBGLIB2_MINVERSION 2.28) + +###################################DISTRO CHANGES############################### +#Please add all distro relates stuff here +SET(PACKAGE_MANPAGES 1) +set(RPM 0) +file(STRINGS /etc/os-release distro REGEX "^NAME=") +string(REGEX REPLACE "NAME=" "" distro "${distro}") +string(REGEX REPLACE "\"" "" distro "${distro}") +string(REGEX REPLACE "/" "" distro "${distro}") +string(REGEX REPLACE " " "" distro "${distro}") +file(STRINGS /etc/os-release disversion REGEX "^VERSION_ID=") +string(REGEX REPLACE "VERSION_ID=" "" disversion "${disversion}") +string(REGEX REPLACE "\"" "" disversion "${disversion}") +string(REGEX REPLACE "/" "" disversion "${disversion}") +string(REGEX REPLACE " " "" disversion "${disversion}") +#RPM Distro's +if(${distro} MATCHES "Alma*" OR ${distro} MATCHES "Rocky*" OR ${distro} MATCHES "Fedora*" OR ${distro} MATCHES "Red*" OR ${distro} MATCHES "CentOS*" OR ${distro} MATCHES "Oracle*") + set(RPM 1) +endif() +#Package architecture +if(${RPM}) + set(PACKAGE_DELIMITER "-") + set(PACKAGE_ARCHITECTURE ".${CMAKE_HOST_SYSTEM_PROCESSOR}") +else() + set(PACKAGE_DELIMITER "_") + set(PACKAGE_ARCHITECTURE "_${CMAKE_HOST_SYSTEM_PROCESSOR}") + if(${CMAKE_HOST_SYSTEM_PROCESSOR} MATCHES "x86_64") + set(PACKAGE_ARCHITECTURE "_amd64") + endif() +endif() +#Package Distro build version - part of package name +set(PACKAGE_DISTRO ${HARDINFO2_VERSION}-${distro}-${disversion}${CPACK_SYSTEM_NAME}) +SET(CPACK_PACKAGE_VERSION ${HARDINFO2_VERSION}) +if(DISTRO) + string(REGEX REPLACE "[.].*" "" DISTRO_BUILD_VER ${DISTRO}) + set(CPACK_PACKAGE_VERSION "${HARDINFO2_VERSION}-${DISTRO_BUILD_VER}") + set(PACKAGE_DISTRO "${HARDINFO2_VERSION}-${DISTRO}") + if(${HARDINFO2_GTK3}) + else() + message(FATAL_ERROR "Distro-Building not supported with GTK2!!") + endif() +endif() +#Put it together +string(REPLACE " " "_" CPACK_PACKAGE_FILE_NAME "hardinfo${PACKAGE_DELIMITER}${PACKAGE_DISTRO}${PACKAGE_ARCHITECTURE}") +message("-- Found Package Target ${CPACK_PACKAGE_FILE_NAME}") +message("-- Found Package Version ${CPACK_PACKAGE_VERSION}") + +#flavour output +set(HARDINFO2_OS ${distro}) + +# currently all RPM flavours uses libsoup-2.4 +if(${RPM}) + set(HARDINFO2_LIBSOUP3 0) +endif() + +#oracle 6 +if(${distro}${disversion} MATCHES "Oracle6*") + set(HARDINFO2_LIBSOUP3 0) + set(HARDINFO2_GTK3 0) + #old deprecated version - but ok + set(PACKAGE_LIBSOUP2_MINVERSION 2.34.3) + #save settings disabled, steal_pointer disabled + set(PACKAGE_LIBGLIB2_MINVERSION 2.28.8) + message("-- Low GLIB2 version 2.28.0") +endif() + +#debian 8 +if(${distro}${disversion} MATCHES "DebianGNULinux8") + set(HARDINFO2_LIBSOUP3 0) + #save settings disabled, steal_pointer disabled + set(PACKAGE_LIBGLIB2_MINVERSION 2.42.1) + message("-- Low GLIB2 version 2.42.1") +endif() + +#ubuntu 20.04 +if(${distro}${disversion} MATCHES "Ubuntu20.04") + set(HARDINFO2_LIBSOUP3 0) +endif() + +#Debian 11 +if(${distro}${disversion} MATCHES "DebianGNULinux11") + set(HARDINFO2_LIBSOUP3 0) +endif() +#Fedora 39 - bug with man pages - probably needs upgrade.. +if(${distro}${disversion} MATCHES "FedoraLinux39") + set(PACKAGE_MANPAGES 0) +endif() + +################################################################################ add_subdirectory(po) + include(FindPkgConfig) -if (HARDINFO_GTK3) - message(STATUS "Building for GTK3 (experimental!)") - pkg_check_modules(GTK REQUIRED gtk+-3.0>=3.0 cairo>=1.0 cairo-png>=1.0 glib-2.0>=2.10 gthread-2.0>=2.10 gmodule-export-2.0>=2.10) - add_definitions(-DGTK_DISABLE_SINGLE_INCLUDES) +if (HARDINFO2_GTK3) + message(STATUS "Building for GTK3") + pkg_check_modules(GTK REQUIRED gtk+-3.0>=3.0 cairo>=1.0 cairo-png>=1.0 gthread-2.0>=2.10 gmodule-export-2.0>=2.10) + add_definitions(-DGTK_DISABLE_SINGLE_INCLUDES) else() - message(STATUS "Building for GTK2") - pkg_check_modules(GTK REQUIRED gtk+-2.0>=2.10 glib-2.0>=2.10 gthread-2.0>=2.10 gmodule-export-2.0>=2.10) + message(STATUS "Building for GTK2 - (Deprecated - Please update your distro!!)") + pkg_check_modules(GTK REQUIRED gtk+-2.0>=2.10 gthread-2.0>=2.10 gmodule-export-2.0>=2.10) endif() -if(NOT HARDINFO_NOSYNC) - pkg_check_modules(LIBSOUP libsoup-2.4>=2.24) +if (HARDINFO2_LIBSOUP3) + pkg_check_modules(LIBSOUP REQUIRED libsoup-3.0>=3.00) +else() + pkg_check_modules(LIBSOUP REQUIRED libsoup-2.4>=${PACKAGE_LIBSOUP2_MINVERSION}) endif() +pkg_check_modules(GLIB2 REQUIRED glib-2.0>=${PACKAGE_LIBGLIB2_MINVERSION}) +pkg_check_modules(JSON_GLIB REQUIRED json-glib-1.0>=0.14.2) +pkg_check_modules(X11 REQUIRED x11) include(FindZLIB REQUIRED) include_directories( ${CMAKE_SOURCE_DIR} ${CMAKE_SOURCE_DIR}/includes - ${CMAKE_SOURCE_DIR}/includes/${HARDINFO_ARCH} - ${CMAKE_SOURCE_DIR}/deps/uber-graph/uber + ${CMAKE_SOURCE_DIR}/includes/${HARDINFO2_ARCH} + ${CMAKE_SOURCE_DIR}/deps/uber-graph + ${CMAKE_SOURCE_DIR}/deps/sysobj_early/include + ${CMAKE_SOURCE_DIR}/deps/sysobj_early/gui ${CMAKE_BINARY_DIR} ${GTK_INCLUDE_DIRS} ${LIBSOUP_INCLUDE_DIRS} ${ZLIB_INCLUDE_DIRS} + ${X11_INCLUDE_DIRS} + ${JSON_GLIB_INCLUDE_DIRS} ) link_directories( ${GTK_LIBRARY_DIRS} ${LIBSOUP_LIBRARY_DIRS} + ${X11_LIBRARY_DIRS} + ${JSON_GLIB_LIBRARY_DIRS} ) -set(HARDINFO_MODULES +set(HARDINFO2_MODULES computer devices benchmark network ) -set(HARDINFO_RESOURCES - "benchmark.conf" - "benchmark.data" +set(HARDINFO2_RESOURCES + "data/benchmark.data" + "data/benchmark.json" + "data/vendor.ids" + "data/sdcard.ids" + "data/usb.ids" + "data/arm.ids" + "data/edid.ids" + "data/ieee_oui.ids" + "data/pci.ids.min" + "data/kernel-module-icons.json" ) - -set(HARDINFO_MANPAGES - "hardinfo.1" +if(${PACKAGE_MANPAGES}) +set(HARDINFO2_MANPAGES + "hardinfo2.1" ) - +endif() set(MODULE_computer_SOURCES modules/computer.c modules/computer/alsa.c @@ -130,25 +255,30 @@ set(MODULE_computer_SOURCES modules/computer/languages.c modules/computer/loadavg.c modules/computer/memory.c + modules/computer/memory_usage.c modules/computer/modules.c modules/computer/os.c + modules/computer/ubuntu_flavors.c modules/computer/uptime.c modules/computer/users.c modules/computer/groups.c ) set(MODULE_devices_SOURCES modules/devices.c - modules/devices/${HARDINFO_ARCH}/processor.c + modules/devices/${HARDINFO2_ARCH}/processor.c + modules/devices/gpu.c + modules/devices/monitors.c modules/devices/battery.c - modules/devices/devmemory.c modules/devices/dmi.c + modules/devices/dmi_memory.c + modules/devices/firmware.c modules/devices/devicetree.c modules/devices/inputdevices.c modules/devices/pci.c modules/devices/printers.c modules/devices/resources.c modules/devices/sensors.c - modules/devices/spd-decode.c +# modules/devices/spd-decode.c modules/devices/storage.c modules/devices/usb.c ) @@ -160,9 +290,10 @@ set(MODULE_network_SOURCES ) set(MODULE_benchmark_SOURCES_GTKANY modules/benchmark.c + modules/benchmark/bench_util.c modules/benchmark/blowfish.c + modules/benchmark/blowfish2.c modules/benchmark/cryptohash.c - modules/benchmark/drawing.c modules/benchmark/fbench.c modules/benchmark/fftbench.c modules/benchmark/fft.c @@ -172,11 +303,13 @@ set(MODULE_benchmark_SOURCES_GTKANY modules/benchmark/raytrace.c modules/benchmark/sha1.c modules/benchmark/zlib.c + modules/benchmark/sysbench.c ) set(MODULE_benchmark_SOURCES_GTK2 + modules/benchmark/drawing.c modules/benchmark/guibench.c ) -if (HARDINFO_GTK3) +if (HARDINFO2_GTK3) set(MODULE_benchmark_SOURCES ${MODULE_benchmark_SOURCES_GTKANY}) else() set(MODULE_benchmark_SOURCES ${MODULE_benchmark_SOURCES_GTKANY} ${MODULE_benchmark_SOURCES_GTK2}) @@ -191,39 +324,94 @@ set_source_files_properties( COMPILE_FLAGS "-O0" ) -foreach (_module ${HARDINFO_MODULES}) +set_source_files_properties( + modules/devices/monitors.c + modules/devices/dmi_memory.c +# modules/devices/spd-decode.c + hardinfo2/problem_marker.c + hardinfo2/hinote_util.c + PROPERTIES + COMPILE_FLAGS "-std=c99 -Wall -Wextra -Wno-unused-function -Wno-deprecated-declarations -Wno-switch" +) + +foreach (_module ${HARDINFO2_MODULES}) add_library(${_module} MODULE ${MODULE_${_module}_SOURCES}) set_target_properties(${_module} PROPERTIES PREFIX "") + target_link_libraries(${_module} ${JSON_GLIB_LIBRARIES}) endforeach() -if (HARDINFO_GTK3) +find_library(LIBSENSORS_LIBRARY NAMES libsensors.so) +if (LIBSENSORS_LIBRARY) + set(HAS_LIBSENSORS 1) + target_link_libraries(devices ${LIBSENSORS_LIBRARY}) +endif () + +add_library(sysobj_early STATIC + deps/sysobj_early/src/gg_slist.c + deps/sysobj_early/src/strstr_word.c + deps/sysobj_early/src/auto_free.c + deps/sysobj_early/src/util_ids.c + deps/sysobj_early/src/util_sysobj.c + deps/sysobj_early/src/appf.c + deps/sysobj_early/src/nice_name.c + deps/sysobj_early/gui/uri_handler.c + deps/sysobj_early/src/util_edid.c + deps/sysobj_early/src/format_early.c + deps/sysobj_early/src/cpubits.c +) +set_target_properties(sysobj_early PROPERTIES COMPILE_FLAGS "-std=c99 -Wall -Wextra -Wno-parentheses -Wno-unused-function") +target_link_libraries(sysobj_early m) + +if (HARDINFO2_GTK3) add_library(uber-graph STATIC - deps/uber-graph/uber/g-ring.c - deps/uber-graph/uber/uber-frame-source.c - deps/uber-graph/uber/uber-graph.c - deps/uber-graph/uber/uber-heat-map.c - deps/uber-graph/uber/uber-label.c - deps/uber-graph/uber/uber-line-graph.c - deps/uber-graph/uber/uber-range.c - deps/uber-graph/uber/uber-scale.c - deps/uber-graph/uber/uber-scatter.c - deps/uber-graph/uber/uber-timeout-interval.c - deps/uber-graph/uber/uber-window.c + deps/uber-graph/g-ring.c + deps/uber-graph/uber-frame-source.c + deps/uber-graph/uber-graph.c + deps/uber-graph/uber-heat-map.c + deps/uber-graph/uber-label.c + deps/uber-graph/uber-line-graph.c + deps/uber-graph/uber-range.c + deps/uber-graph/uber-scale.c + deps/uber-graph/uber-scatter.c + deps/uber-graph/uber-timeout-interval.c + deps/uber-graph/uber-window.c ) +set_target_properties(uber-graph PROPERTIES COMPILE_FLAGS "-Wno-deprecated-declarations") endif() -if (HARDINFO_GTK3) -add_executable(hardinfo - hardinfo/binreloc.c - hardinfo/expr.c - hardinfo/hardinfo.c - hardinfo/socket.c - hardinfo/util.c - hardinfo/vendor.c - hardinfo/info.c - hardinfo/cpu_util.c - hardinfo/dmi_util.c - hardinfo/dt_util.c +set_source_files_properties( + hardinfo2/usb_util.c + hardinfo2/pci_util.c + hardinfo2/gpu_util.c + hardinfo2/cpu_util.c + hardinfo2/x_util.c + hardinfo2/dt_util.c + PROPERTIES + COMPILE_FLAGS "-Wall -Wextra -Wno-parentheses -Wno-unused-function" +) + +if (HARDINFO2_GTK3) +add_executable(hardinfo2 + hardinfo2/usb_util.c + hardinfo2/pci_util.c + hardinfo2/binreloc.c + hardinfo2/expr.c + hardinfo2/hardinfo.c + hardinfo2/socket.c + hardinfo2/util.c + hardinfo2/gg_key_file_parse_string_as_value.c + hardinfo2/gg_strescape.c + hardinfo2/problem_marker.c + hardinfo2/hinote_util.c + hardinfo2/vendor.c + hardinfo2/info.c + hardinfo2/cpu_util.c + hardinfo2/dmi_util.c + hardinfo2/dt_util.c + hardinfo2/x_util.c + hardinfo2/gpu_util.c + hardinfo2/udisks2_util.c + hardinfo2/storage_util.c shell/callbacks.c shell/iconcache.c shell/menu.c @@ -233,25 +421,39 @@ add_executable(hardinfo shell/syncmanager.c shell/loadgraph-uber.c ) -target_link_libraries(hardinfo +target_link_libraries(hardinfo2 + -Wl,-whole-archive sysobj_early -Wl,-no-whole-archive uber-graph ${GTK_LIBRARIES} ${LIBSOUP_LIBRARIES} m ${ZLIB_LIBRARIES} + ${X11_LIBRARIES} + ${JSON_GLIB_LIBRARIES} ) +set_target_properties(hardinfo2 PROPERTIES COMPILE_FLAGS "-Wno-deprecated-declarations") else() -add_executable(hardinfo - hardinfo/binreloc.c - hardinfo/expr.c - hardinfo/hardinfo.c - hardinfo/socket.c - hardinfo/util.c - hardinfo/vendor.c - hardinfo/info.c - hardinfo/cpu_util.c - hardinfo/dmi_util.c - hardinfo/dt_util.c +add_executable(hardinfo2 + hardinfo2/usb_util.c + hardinfo2/pci_util.c + hardinfo2/binreloc.c + hardinfo2/expr.c + hardinfo2/hardinfo.c + hardinfo2/socket.c + hardinfo2/util.c + hardinfo2/gg_key_file_parse_string_as_value.c + hardinfo2/gg_strescape.c + hardinfo2/problem_marker.c + hardinfo2/hinote_util.c + hardinfo2/vendor.c + hardinfo2/info.c + hardinfo2/cpu_util.c + hardinfo2/dmi_util.c + hardinfo2/dt_util.c + hardinfo2/x_util.c + hardinfo2/gpu_util.c + hardinfo2/udisks2_util.c + hardinfo2/storage_util.c shell/callbacks.c shell/iconcache.c shell/menu.c @@ -261,41 +463,96 @@ add_executable(hardinfo shell/syncmanager.c shell/loadgraph.c ) -target_link_libraries(hardinfo +target_link_libraries(hardinfo2 + -Wl,-whole-archive sysobj_early -Wl,-no-whole-archive ${GTK_LIBRARIES} ${LIBSOUP_LIBRARIES} m ${ZLIB_LIBRARIES} + ${X11_LIBRARIES} + ${JSON_GLIB_LIBRARIES} ) endif() configure_file(config.h.cmake ${CMAKE_BINARY_DIR}/config.h @ONLY) -configure_file(hardinfo.desktop.cmake ${CMAKE_BINARY_DIR}/hardinfo.desktop @ONLY) +configure_file(hardinfo2.desktop.cmake ${CMAKE_BINARY_DIR}/hardinfo2.desktop @ONLY) -install(TARGETS hardinfo ${HARDINFO_MODULES} +install(TARGETS hardinfo2 ${HARDINFO2_MODULES} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} - LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}/hardinfo/modules + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}/hardinfo2/modules PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE ) -install(FILES ${CMAKE_BINARY_DIR}/hardinfo.desktop +install(FILES ${CMAKE_BINARY_DIR}/hardinfo2.desktop DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/applications PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ ) -install(FILES ${HARDINFO_RESOURCES} - DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/hardinfo +install(FILES ${HARDINFO2_RESOURCES} + DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/hardinfo2 PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ ) install(DIRECTORY pixmaps - DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/hardinfo + DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/hardinfo2 PATTERN "*.{png,svg}" PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ ) -install(DIRECTORY doc - DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/hardinfo - PATTERN "*.{hlp,png}" +install(FILES ${HARDINFO2_MANPAGES} + DESTINATION ${CMAKE_INSTALL_MANDIR}/man1 PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ ) -install(FILES ${HARDINFO_MANPAGES} - DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/man/man1 +install(FILES pixmaps/hardinfo2.png + DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/256x256/apps PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ ) + +########################PACKAGE BUILDING FOR DISTROS########################### +#Please update here for building packages +#keep package name as hardinfo to allow for upgrading in distro +SET(CPACK_PACKAGE_NAME "hardinfo") +SET(CPACK_PACKAGE_HOMEPAGE_URL "https://www.hardinfo2.org") +if(${RPM}) + SET(CPACK_GENERATOR "RPM") + SET(PACKAGE_GTK2 "libgtk-2-0") +else() + SET(CPACK_GENERATOR "DEB") + SET(PACKAGE_GTK2 "libgtk2.0-0") +endif() + +#RPM +SET(CPACK_RPM_PACKAGE_MAINTAINER "hwspeedy ") +SET(CPACK_RPM_PACKAGE_DESCRIPTION "Hardinfo2 is a small application that displays information about your hardware and operating system. It has online benchmarking to check your machine performance against other machines.") +SET(CPACK_RPM_PACKAGE_RECOMMENDS "sysbench, udisks2, mesa-utils, lsscsi, lm-sensors, xdg-utils") +SET(CPACK_RPM_PACKAGE_LICENSE "GPL2+") +SET(CPACK_RPM_PACKAGE_HOMEPAGE "https://github.com/hardinfo2/hardinfo2") +if(HARDINFO2_LIBSOUP3) + SET(PACKAGE_LS "libsoup (>=3.0)") +else() + SET(PACKAGE_LS "libsoup (>=${PACKAGE_LIBSOUP2_MINVERSION})") +endif() +if(HARDINFO2_GTK3) + SET(PACKAGE_GTK "libgtk-3-0 (>=3.0)") +else() + SET(PACKAGE_GTK "${PACKAGE_GTK2} (>=2.20)") +endif() +SET(CPACK_RPM_PACKAGE_DEPENDS "libjson-glib-1.0-0, zlib, ${PACKAGE_LS}, ${PACKAGE_GTK}, libglib2.0-0 (>=2.10)") + +#DEB +SET(CPACK_DEBIAN_PACKAGE_MAINTAINER "hwspeedy ") +SET(CPACK_DEBIAN_PACKAGE_DESCRIPTION "Hardinfo2 is a small application that displays information about your hardware and operating system. It has online benchmarking to check your machine performance against other machines.") +SET(CPACK_DEBIAN_PACKAGE_RECOMMENDS "sysbench, udisks2, mesa-utils, lsscsi, lm-sensors, xdg-utils") +SET(CPACK_DEBIAN_PACKAGE_HOMEPAGE "https://github.com/hardinfo2/hardinfo2") +if(HARDINFO2_LIBSOUP3) + SET(PACKAGE_LS "libsoup-3.0.0 (>=3.0)") +else() + SET(PACKAGE_LS "libsoup2.4-1 (>=${PACKAGE_LIBSOUP2_MINVERSION})") + if(${distro}${disversion} MATCHES "Debian GNU/Linux11") + SET(PACKAGE_LS "libsoup2.4-0 (>=2.42)") + endif() +endif() +if(HARDINFO2_GTK3) + SET(PACKAGE_GTK "libgtk-3-0 (>=3.0)") +else() + SET(PACKAGE_GTK "${PACKAGE_GTK2} (>=2.20)") +endif() +SET(CPACK_DEBIAN_PACKAGE_DEPENDS "libjson-glib-1.0-0, zlib1g, ${PACKAGE_LS}, ${PACKAGE_GTK}") + +INCLUDE(CPack) diff --git a/CONTRIBUTING b/CONTRIBUTING deleted file mode 100644 index 0b82439a..00000000 --- a/CONTRIBUTING +++ /dev/null @@ -1,16 +0,0 @@ -Project -======= - -Issues and Pull Requests via GitHub: - -* https://github.com/lpereira/hardinfo - -Translators -=========== - -If possible, run `bash updatepo.sh` in the po/ directory before begining. -This will regenerate hardinfo.pot and update all the .po files. -Nothing is lost if this isn't done, but it prevents wasting time translating -strings that have changed, or are no longer used. - -DO NOT use `make pot`! diff --git a/LICENSE b/LICENSE index 21b9363e..b2c8e50f 100644 --- a/LICENSE +++ b/LICENSE @@ -1,5 +1,6 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 +GPL2+ + GNU GENERAL PUBLIC LICENSE + Version 2 or Later Copyright (C) 1989, 1991 Free Software Foundation, Inc. 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA diff --git a/README.md b/README.md index 04f172f2..6f714a66 100644 --- a/README.md +++ b/README.md @@ -1,78 +1,105 @@ -HARDINFO -======== +[![Test](https://github.com/hardinfo2/hardinfo2/actions/workflows/test.yml/badge.svg)](https://github.com/hardinfo2/hardinfo2/actions/workflows/test.yml) +[![GitHub release](https://img.shields.io/github/release/hardinfo2/hardinfo2.svg)](https://github.com/hardinfo2/hardinfo2/releases) +[![GitHub release](https://img.shields.io/badge/PreRelease-v2.0.3-blue.svg)](https://github.com/hardinfo2/hardinfo2/releases/tag/release-2.0.3pre) -HardInfo is a system profiler and benchmark for Linux systems. It is able to -obtain information from both hardware and basic software, and organize them -in a simple to use GUI. +HARDINFO2 +========= + +Hardinfo2 is based on hardinfo, which have not been released >10 years. Hardinfo2 is the reboot that was needed. + +Hardinfo2 offers System Information and Benchmark for Linux Systems. It is able to +obtain information from both hardware and basic software. It can benchmark your system and compare +to other machines online. Features include: - Report generation (in either HTML or plain text) -- Benchmark result synchronization -- Ability to explore the information on remote computers +- Online Benchmarking - compare your machine against other machines Status ------ +- Capabilities: Hardinfo2 currently detects most software and hardware detected by the OS. +- Features: Online database for exchanging benchmark results. +- Development: Currently done by contributors, hwspeedy maintains -Capabilities: Hardinfo currently decteds software and detected hardware by the OS, mostly almost all. -Features: the remote sync was disable due server was lost -Development: currently are made by contribution, a stable and fixed/dedicated maintainer are required. +Server code can be found here: [https://github.com/hardinfo2/server](https://github.com/hardinfo2/server) -DEPENDENCIES +Dependencies ------------ +- GTK3 >=3.00 or GTK2+ >=2.20 - Prefer **GTK3** (GTK2+: cmake -DHARDINFO2_GTK3=0 ..) +- GLib >=2.24 +- Zlib +- glib JSON +- Libsoup2.4 >=2.42 or Libsoup-3.0 (EXPERIMENTAL) (LS3: cmake -DHARDINFO2_LIBSOUP3=1 ..) + +Building and installing +----------------------- +**Debian/Ubuntu/Mint/PopOS** +- sudo apt install git cmake build-essential gettext +- sudo apt install libjson-glib-dev zlib1g-dev libsoup2.4-dev libgtk-3-dev libglib2.0-dev +- git clone https://github.com/hardinfo2/hardinfo2 +- cd hardinfo2 +- mkdir build +- cd build +- cmake .. +- make package (Creates package so you do not polute your distro and it can be updated by distro releases) +- sudo apt install ./hardinfo2-VERSION-DISTRO-ARCH.deb (Use reinstall instead of install if already inst.) +- sudo apt install lm-sensors sysbench lsscsi mesa-utils dmidecode udisks2 xdg-utils +- hardinfo2 + +**Fedore/Centos/RedHat/Rocky/Alma/Oracle** +* NOTE: Centos 7 needs epel-release and cmake3 instead of cmake - use cmake3 instead of cmake +- sudo yum install epel-release (only CentOS 7) +- sudo yum install git cmake gcc gcc-c++ gettext rpmdevtools +- sudo yum install json-glib-devel zlib-devel libsoup-devel gtk3-devel +- git clone https://github.com/hardinfo2/hardinfo2 +- cd hardinfo2 +- mkdir build +- cd build +- cmake .. +- make package (Creates package so you do not polute your distro and it can be updated by distro releases) +- sudo yum install ./hardinfo2-VERSION-DISTRO-ARCH.rpm (Use reinstall instead of install if already inst.) +- sudo yum install lm_sensors sysbench lsscsi glx-utils dmidecode udisks2 xdg-utils +- hardinfo2 + +Distro building +--------------- +For distribution in the different distros - please use the cmake build system with CPack: +- cmake -DDISTRO=1.el8 .. (rpm style) +- cmake -DDISTRO=1 .. (deb style) +- make package + +Please add/change CMakeLists.txt for your distro, so we have an easy to use package for all distributions. + + +Setting up addition tools +--------------------------- +Most hardware is detected automatically by Hardinfo2, but some might need manual set up. + +- **sysbench**: is needed to run standard sysbench benchmarks. +- **udisks2**: is needed to provide NVME++ informations. +- **dmi-decode**: is needed to provide DMI informations. +- **mesa-utils**: is needed to provide opengl and run standard sysbench benchmarks. +- **lsscsi**: gives information about hard drives. +- **lm-sensors**: is needed to provide sensors values. +- **hddtemp**: To obtain the hard disk drive temperature, be sure to run hddtemp +in daemon mode, using the default port. +- **eeprom module**: must be loaded to display info about your currently installed memory. +Load with `modprobe eeprom` and refresh the module screen. +- **xdg-utils**: xdg_open is used to open your browser for bugs, homepage & links. +- **apcaccess**: apcaccess is used for battery information. (optional) -Required: -- GTK+ 2.10 (or newer) -- GLib 2.10 (or newer) -- Zlib (for zlib benchmark) - -Optional (for synchronization/remote): -- Libsoup 2.24 (or newer) - -BUILDING --------- - -Create a build directory and build from there: - -``` bash - hardinfo $ mkdir build - hardinfo $ cd build - build $ cmake .. - build $ make -``` - -There are some variables that can be changed: - - * `CMAKE_BUILD_TYPE` : Can be either Release or Debug - * `[Default: Release]` Debug builds prints messages to console and are not recommended for general use - * `CMAKE_INSTALL_PREFIX` : Sets the installation prefix. - * `[Default: /usr/local]` : distributions generalli changes to `/usr` - * `HARDINFO_NOSYNC` : Disables network synchronization - * `[Default: 1]` : Disabled by default due the server service was lost. - -To set a variable, pass use cmake's -D command-line parameter. For example: - -` build $ cmake .. -DCMAKE_BUILD_TYPE=Debug ` - -Network sync are enabled if libsoup are detected, if having trouble building with libsoup, disable it with: - -` build $ cmake -DHARDINFO_NOSYNC=1` - -SETTING UP ----------- - -Most things in HardInfo are detected automatically. However, some things -depends on manual set up. They are: +License +------ +The Project License has been changed in 2024 from GPL2 to **GPL2 or later** -### Sensors +Because we use LGPL2.1+ and GPL3 code. To future proof the project, lpereira and other developers has agreed to change license of source code also to GPL2+. (https://github.com/lpereira/hardinfo/issues/530) (https://github.com/lpereira/hardinfo/issues/707). -**lm-sensors**: If your computer is compatible with lm-sensors module, use by example the -`sensors-detect` program included with the lm-sensors package of Debian based distros, and be sure -to have the detected kernel modules loaded. +It is all about open source and creating together - Read more about GPL license here: https://www.gnu.org/licenses/gpl-faq.html#AllCompatibility -**hddtemp**: To obtain the hard disk drive temperature, be sure to run hddtemp -in daemon mode, using the default port. +Privacy Policy +--------------- +When using the Synchronize feature in Hardinfo2, some information may be stored indefinitely in our servers. -### Memory Speed +This information is completely anonymous, and is comprised solely from the machine configuration (e.g. CPU manufacturer and model, number of cores, maximum frequency of cores, GPU manufacturer and model, etc.), version of benchmarking tools used, etc. You can opt out by unticking the "Send benchmark results" entry in the Synchronize window. -The module `eeeprom` mus be loaded to display info about memory hardware instaled. -Load with `modprobe eeprom` and refres the module screen. +Both the Hardinfo2 client and its server components are open source GPL2 or Later and can be audited. diff --git a/TODO b/TODO deleted file mode 100644 index b65d77f8..00000000 --- a/TODO +++ /dev/null @@ -1,43 +0,0 @@ - -- Report Generation - - * Ability to create more detailed reports - * Public web page to host user's reports - -- Benchmark - - * New benchmarks - o FPU+CPU - o Disk - o Phoronix? - * Change current benchmarks - o Remove CPU Fibonacci - * Add CPU Rubik Cube solver? :P - -- More information - - * PCMCIA/Cardbus information - * S.M.A.R.T. - * Show USB devices as a tree instead of a list - * x86info integration? - -- i18n, build system - - * GNU gettext - -- Misc - - * Round benchmark results to two decimal places at most, - or get rid of decimal places altogether. - * Add preferences window - * Save/restore - * Window position - * Window size - * Proxy configuration - * Use HTTP_PROXY variable; - * Use GNOME settings; - * Manual configuration. - * Default browser - * Auto-detect; - * Use GNOME settings; - * Manual configuration. diff --git a/benchmark.conf b/benchmark.conf deleted file mode 100644 index 6f327aa4..00000000 --- a/benchmark.conf +++ /dev/null @@ -1,316 +0,0 @@ -[param] -last_update=1241368430 -[FPU FFT] -Intel(R) Pentium(R) DualCPUT3200@ 2.00GHz=5.500|2x 2000 MHz|Unknown -Intel(R) Celeron(R) CPU 2.53GHz=10.122|2527 MHz|Unknown -Genuine Intel(R) CPU T1350@ 1.86GHz=83.465|1867 MHz|Unknown -AMD Turion(tm) 64 X2 Mobile Technology TL-60=8.225|2x 2000 MHz|Unknown -AMD Turion(tm) X2 Dual-Core Mobile RM-70=8.312|2x 500 MHz|Unknown -Intel(R) Core(TM) Duo CPUT2350@ 1.86GHz=5.356|2x 1867 MHz|Unknown -Intel(R) Core(TM)2 Duo CPU T5750@ 2.00GHz=4.231|2x 1994 MHz|Unknown -Intel(R) Core(TM)2 Duo CPU T9500@ 2.60GHz=3.124|2x 2593 MHz|Unknown -AMD Athlon(tm) X2 Dual-Core QL-60=9.080|2x 1900 MHz|Unknown -Intel(R) Core(TM)2 Duo CPU T5250@ 1.50GHz=5.507|2x 1000 MHz|Unknown -Mobile AMD Athlon(tm) XP-M Processor 3000+=43.154|799 MHz|Unknown -AMD Athlon(tm) 64 X2 Dual Core Processor 4000+=7.997|2x 1000 MHz|Unknown -AMD Athlon(tm) XP processor 1800+=25.139|1533 MHz|Unknown -Genuine Intel(R) CPU2140@ 1.60GHz=5.442|2x 1595 MHz|Unknown -Intel(R) Core(TM)2 Quad CPUQ6600@ 2.40GHz=1.631|4x 1603 MHz|Unknown -Intel(R) Core(TM)2 Duo CPU P7350@ 2.00GHz=4.758|2x 2000 MHz|Unknown -Genuine Intel(R) CPU T2080@ 1.73GHz=4.985|2x 800 MHz|Unknown -Intel(R) Celeron(R) CPU 2.50GHz=14.459|2492 MHz|Unknown -Intel(R) Pentium(R) M processor 1.86GHz=11.875|1867 MHz|Unknown -Intel(R) Core(TM)2 CPU T5200@ 1.60GHz=6.486|2x 1067 MHz|Unknown -Intel(R) Core(TM)2 CPU6320@ 1.86GHz=4.908|2x 1600 MHz|Unknown -AMD Athlon(tm) XP=84.350|906 MHz|Unknown -AMD Athlon(tm) 64 Processor 3000+=25.187|1800 MHz|Unknown -Intel(R) Pentium(R) 4 CPU 2.60GHz=8.536|2x 2600 MHz|Unknown -Intel(R) Core(TM)2 Quad CPUQ9400@ 2.66GHz=1.485|4x 2003 MHz|Unknown -Intel(R) Pentium(R) M processor 1600MHz=13.500|1600 MHz|Unknown -Pentium(R) Dual-Core CPU T4200@ 2.00GHz=4.615|2x 1200 MHz|Unknown -Intel(R) Core(TM)2 Quad CPU @ 2.40GHz=1.696|4x 2400 MHz|Unknown -Intel(R) Core(TM)2 Quad CPUQ8300@ 2.50GHz=1.659|4x 2497 MHz|Unknown -Intel(R) Core(TM)2 Extreme CPU X7900@ 2.80GHz=3.065|2x 2800 MHz|Unknown -Intel(R) Celeron(R) D CPU 3.20GHz=8.552|3196 MHz|Unknown -AMD Sempron(tm) 2600+=20.952|1840 MHz|Unknown -AMD Athlon(tm) 64 X2 Dual Core Processor 4400+=6.805|2x 1000 MHz|Unknown -Intel(R) Celeron(R) CPU 2.66GHz=9.887|2666 MHz|Unknown -Intel(R) Core(TM) Duo CPUT2450@ 2.00GHz=4.331|2x 800 MHz|Unknown -Intel(R) Celeron(R) M CPU520@ 1.60GHz=11.346|1600 MHz|Unknown -Intel(R) Pentium(R) 4 CPU 3.06GHz=12.724|3058 MHz|Unknown -Intel(R) Core(TM)2 CPU4300@ 1.80GHz=5.368|2x 1200 MHz|Unknown -Intel(R) Core(TM)2 CPU6400@ 2.13GHz=4.678|2x 2128 MHz|Unknown -AMD Turion(tm) 64 Mobile Technology MK-36=19.958|800 MHz|Unknown -Intel(R) Core(TM)2 CPU6600@ 2.40GHz=3.546|2x 1596 MHz|Unknown -Intel(R) Core(TM)2 Duo CPU T7250@ 2.00GHz=4.160|2x 2001 MHz|Unknown -Intel(R) Celeron(R) M processor900MHz=24.212|900 MHz|Unknown -AMD Sempron(tm) Processor 3400+=17.114|1000 MHz|Unknown -AMD Athlon(tm) XP 2500+=27.327|1792 MHz|Unknown -AMD Sempron(tm) Processor 3000+=18.941|1800 MHz|Unknown -AMD Athlon(tm) XP 2200+=22.197|1782 MHz|Unknown -Intel(R) Pentium(R) 4 CPU 3.06GHz=7.454|2x 3065 MHz|Unknown -AMD Processor model unknown=5.242|2x 3006 MHz|Unknown -AMD Turion(tm) 64 X2 Mobile Technology TL-62=7.519|2x 800 MHz|Unknown -[CPU CryptoHash] -Intel(R) Atom(TM) CPU330 @ 1.60GHz=105.569|4x 1596 MHz|Unknown -Intel(R) Core(TM)2 Duo CPU T5250@ 1.50GHz=102.949|2x 1000 MHz|Unknown -Intel(R) Celeron(R) M processor900MHz=24.338|900 MHz|Unknown -Intel(R) Core(TM)2 CPU E8400@ 3.00GHz=163.391|2x 3000 MHz|Unknown -Intel(R) Xeon(R) CPU E5405@ 2.00GHz=117.480|2x 1995 MHz|Unknown -Intel(R) Core(TM) Duo CPUT2450@ 2.00GHz=127.241|2x 800 MHz|Unknown -Intel(R) Pentium(R) 4 CPU 2.00GHz=24.650|1994 MHz|Unknown -AMD Phenom(tm) 9350e Quad-Core Processor=237.011|4x 2000 MHz|Unknown -AMD Turion(tm) X2 Ultra Dual-Core Mobile ZM-82=100.065|2x 600 MHz|Unknown -AMD Athlon(tm) XP 3000+=66.539|2158 MHz|Unknown -Intel(R) Celeron(R) M CPU520@ 1.60GHz=52.308|1600 MHz|Unknown -Intel(R) Core(TM)2 Quad CPUQ6700@ 2.66GHz=264.055|4x 2669 MHz|Unknown -AMD Athlon(tm) XP 1900+=31.633|1593 MHz|Unknown -Intel(R) Pentium(R) 4 CPU 3.20GHz=66.611|2x 2400 MHz|Unknown -AMD Sempron(tm) 2600+=53.870|1840 MHz|Unknown -AMD Athlon(tm) 64 X2 Dual Core Processor 3800+=94.123|2x 2200 MHz|Unknown -AMD Turion(tm) 64 X2 Mobile Technology TL-62=119.427|2x 800 MHz|Unknown -AMD Athlon(tm) XP 2000+=45.755|1667 MHz|Unknown -AMD Athlon(tm) 64 Processor 3500+=62.204|1000 MHz|Unknown -AMD Turion(tm) 64 X2 Mobile Technology TL-56=92.191|2x 800 MHz|Unknown -AMD Athlon(tm) 64 X2 Dual Core Processor 4000+=97.036|2x 1000 MHz|Unknown -Intel(R) Pentium(R) D CPU 3.00GHz=96.755|2x 3000 MHz|Unknown -Mobile AMD Sempron(tm) Processor 3600+=54.437|800 MHz|Unknown -Intel(R) Core(TM)2 Quad CPUQ9650@ 3.00GHz=303.512|4x 2997 MHz|Unknown -AMD Sempron(tm) Processor 3600+=43.977|1000 MHz|Unknown -Intel(R) Core(TM)2 Duo CPU T9400@ 2.53GHz=148.711|2x 800 MHz|Unknown -AMD Turion(tm) 64 X2 Mobile Technology TL-58=101.693|2x 1900 MHz|Unknown -Intel(R) Core(TM)2 Duo CPU P7350@ 2.00GHz=103.950|2x 2000 MHz|Unknown -VIA Esther processor 1500MHz=7.752|1499 MHz|Unknown -Intel(R) Core(TM)2 Duo CPU P8600@ 2.40GHz=150.445|2x 800 MHz|Unknown -Intel(R) Core(TM)2 Duo CPU T7700@ 2.40GHz=142.537|2x 800 MHz|Unknown -Intel(R) Core(TM)2 Duo CPU T5550@ 1.83GHz=122.423|2x 1829 MHz|Unknown -Intel(R) Core(TM)2 Duo CPU T7250@ 2.00GHz=121.915|2x 2001 MHz|Unknown -Intel(R) Core(TM)2 CPU6700@ 2.66GHz=163.639|2x 2667 MHz|Unknown -Intel(R) Pentium(R) 4 CPU 2.40GHz=30.963|2400 MHz|Unknown -Intel(R) Core(TM)2 Quad CPUQ9400@ 2.66GHz=296.869|4x 2003 MHz|Unknown -AMD Athlon(tm) 64 Processor 3200+=42.300|1000 MHz|Unknown -Intel(R) Pentium(R) DualCPUT3200@ 2.00GHz=88.536|2x 2000 MHz|Unknown -Intel(R) Pentium(R) 4 CPU 2.26GHz=29.413|2267 MHz|Unknown -AMD Sempron(tm) Processor 3400+=53.845|1000 MHz|Unknown -AMD Sempron(tm) Processor 3000+=47.787|1800 MHz|Unknown -AMD Athlon(tm) XP 2400+=61.644|1991 MHz|Unknown -Intel(R) Atom(TM) CPU Z530 @ 1.60GHz=54.891|2x 1067 MHz|Unknown -Pentium III (Coppermine)=26.992|700 MHz|Unknown -Intel(R) Core(TM) i7 CPU 920@ 2.67GHz=390.240|8x 3799 MHz|Unknown -AMD Athlon(tm) 64 X2 Dual Core Processor 6000+=146.744|2x 3051 MHz|Unknown -AMD Turion(tm) 64 Mobile Technology ML-37=42.208|2000 MHz|Unknown -Intel(R) Xeon(R) CPU3040@ 1.86GHz=127.825|2x 1862 MHz|Unknown -AMD Athlon(tm) XP 2500+=39.659|1792 MHz|Unknown -Intel(R) Core(TM)2 Duo CPU T9500@ 2.60GHz=172.640|2x 2593 MHz|Unknown -[CPU N-Queens] -AMD Athlon(tm) 64 X2 Dual Core Processor 5400+=15.057|2x 1000 MHz|Unknown -Genuine Intel(R) CPU T2080@ 1.73GHz=33.309|2x 800 MHz|Unknown -Intel(R) Core(TM)2 Duo CPU T5450@ 1.66GHz=14.488|2x 1000 MHz|Unknown -Intel(R) Core(TM)2 QuadCPU Q9300@ 2.50GHz=14.100|4x 3000 MHz|Unknown -Intel(R) Atom(TM) CPU Z530 @ 1.60GHz=18.703|2x 1067 MHz|Unknown -Intel(R) Atom(TM) CPU330 @ 1.60GHz=26.065|4x 1596 MHz|Unknown -AMD Athlon(tm) XP 1600+=19.852|1398 MHz|Unknown -Intel(R) Core(TM)2 Quad CPUQ6700@ 2.66GHz=17.009|4x 2669 MHz|Unknown -Intel(R) Pentium(R) 4 CPU 2.60GHz=14.827|2x 2600 MHz|Unknown -Intel(R) Core(TM)2 CPU6320@ 1.86GHz=16.536|2x 1600 MHz|Unknown -Intel(R) Core(TM)2 Extreme CPU X7900@ 2.80GHz=7.020|2x 2800 MHz|Unknown -Intel(R) Core(TM)2 QuadCPU Q9450@ 2.66GHz=12.973|4x 2000 MHz|Unknown -Intel(R) Core(TM)2 CPU E8400@ 3.00GHz=7.841|2x 3000 MHz|Unknown -Pentium III (Coppermine)=27.983|700 MHz|Unknown -AMD Athlon(tm) 64 X2 Dual Core Processor 4000+=19.510|2x 1000 MHz|Unknown -AMD Turion(tm) 64 X2 Mobile Technology TL-50=23.257|2x 800 MHz|Unknown -Intel(R) Pentium(R) D CPU 3.40GHz=13.512|2x 2400 MHz|Unknown -Pentium III (Coppermine)=35.147|2x 999 MHz|Unknown -AMD Athlon(tm) 64 X2 Dual Core Processor 3600+=22.980|2x 1000 MHz|Unknown -AMD Athlon(tm) 64 X2 Dual Core Processor 5200+=14.954|2x 2705 MHz|Unknown -AMD Athlon(tm) 64 X2 Dual-Core Processor TK-55=20.494|2x 800 MHz|Unknown -Intel(R) Core(TM)2 Duo CPU E6850@ 3.00GHz=7.522|2x 1998 MHz|Unknown -Intel(R) Core(TM)2 Duo CPU P8400@ 2.26GHz=10.388|2x 800 MHz|Unknown -Intel(R) Core(TM)2 Quad CPUQ9400@ 2.66GHz=18.246|4x 2003 MHz|Unknown -AMD Athlon(tm) XP 1900+=26.739|1593 MHz|Unknown -Intel(R) Core(TM) Duo CPUT2350@ 1.86GHz=22.009|2x 1867 MHz|Unknown -Intel(R) Core(TM)2 Duo CPU E8400@ 3.00GHz=7.663|2x 2997 MHz|Unknown -AMD Athlon(tm) XP 2800+=13.555|2087 MHz|Unknown -Genuine Intel(R) CPU T2500@ 2.00GHz=28.389|2x 1000 MHz|Unknown -AMD Turion(tm) 64 X2 Mobile Technology TL-58=20.024|2x 1900 MHz|Unknown -Intel(R) Pentium(R) 4 CPU 3.40GHz=15.298|2x 2400 MHz|Unknown -Intel(R) Celeron(R) M processor900MHz=33.259|900 MHz|Unknown -AMD Athlon(tm) X2 Dual-Core QL-60=20.337|2x 1900 MHz|Unknown -Intel(R) Core(TM)2 Duo CPU T5850@ 2.16GHz=10.372|2x 2167 MHz|Unknown -Mobile AMD Athlon(tm) XP-M Processor 3000+=52.785|799 MHz|Unknown -AMD Phenom(tm) 9500 Quad-Core Processor=10.061|4x 1100 MHz|Unknown -Intel(R) Celeron(R) M processor 1.40GHz=94.050|1395 MHz|Unknown -Mobile AMD Athlon(tm) XP 2800+=13.362|1459 MHz|Unknown -AMD Athlon(tm) 64 Processor 3000+=18.076|1800 MHz|Unknown -Genuine Intel(R) CPU L2400@ 1.66GHz=19.551|2x 1000 MHz|Unknown -AMD Sempron(tm) Processor 2800+=17.227|1999 MHz|Unknown -AMD Sempron(tm) 2600+=14.693|1840 MHz|Unknown -Intel(R) Pentium(R) M processor 1600MHz=15.228|1600 MHz|Unknown -Genuine Intel(R) CPU 575@ 2.00GHz=15.876|1995 MHz|Unknown -Genuine Intel(R) CPU T2300@ 1.66GHz=27.251|2x 1000 MHz|Unknown -Intel(R) Pentium(R) M processor 1.70GHz=22.545|600 MHz|Unknown -AMD Athlon(tm) XP processor 1800+=17.547|1533 MHz|Unknown -Intel(R) Core(TM)2 Duo CPU T5750@ 2.00GHz=11.140|2x 1994 MHz|Unknown -Intel(R) Core(TM)2 Duo CPU T7250@ 2.00GHz=11.387|2x 2001 MHz|Unknown -Intel(R) Pentium(R) 4 CPU 1500MHz=28.460|1495 MHz|Unknown -[FPU Raytracing] -Intel(R) Core(TM) Duo CPUT2450@ 2.00GHz=28.359|2x 800 MHz|Unknown -AMD Athlon(tm) XP 2200+=29.739|1782 MHz|Unknown -Intel(R) Pentium(R) DualCPUT2370@ 1.73GHz=25.822|2x 1733 MHz|Unknown -AMD Sempron(tm) Processor 3200+=30.191|1000 MHz|Unknown -AMD Athlon(tm) 64 X2 Dual-Core Processor TK-55=16.469|2x 800 MHz|Unknown -Intel(R) Core(TM)2 CPU6600@ 2.40GHz=11.244|2x 1596 MHz|Unknown -Intel(R) Core(TM)2 Duo CPU T5270@ 1.40GHz=32.813|2x 800 MHz|Unknown -AMD Athlon(tm) 64 X2 Dual-Core Processor TK-53=18.472|2x 800 MHz|Unknown -Intel(R) Pentium(R) M processor 1.86GHz=28.196|1867 MHz|Unknown -Intel(R) Core(TM)2 Duo CPU T5750@ 2.00GHz=16.383|2x 1994 MHz|Unknown -AMD Turion(tm) 64 Mobile Technology ML-32=28.432|800 MHz|Unknown -Intel(R) Celeron(R) CPU530@ 1.73GHz=17.548|2593 MHz|Unknown -Intel(R) Core(TM) i7 CPU 920@ 2.67GHz=4.731|8x 3799 MHz|Unknown -Intel(R) Core(TM)2 Quad CPUQ9650@ 3.00GHz=18.842|4x 2997 MHz|Unknown -AMD Turion(tm) 64 Mobile Technology MK-36=30.838|800 MHz|Unknown -Intel(R) Pentium(R) D CPU 3.40GHz=25.418|2x 2400 MHz|Unknown -AMD Athlon(tm) X2 Dual-Core QL-60=18.295|2x 1900 MHz|Unknown -Intel(R) Pentium(R) III CPU - S 1400MHz=33.361|1392 MHz|Unknown -AMD Phenom(tm) II X4 20 Processor=13.290|4x 3654 MHz|Unknown -Intel(R) Core(TM)2 CPU E8400@ 3.00GHz=15.790|2x 3000 MHz|Unknown -Intel(R) Pentium(R) 4 CPU 2.66GHz=32.384|2676 MHz|Unknown -Intel(R) Pentium(R) 4 CPU 2.60GHz=57.371|2x 2600 MHz|Unknown -Intel(R) Core(TM)2 Duo CPU P9500@ 2.53GHz=5.507|2x 2535 MHz|Unknown -Intel(R) Celeron(R) M processor900MHz=64.668|900 MHz|Unknown -AMD Athlon(tm) 64 X2 Dual Core Processor 4800+=12.799|2x 2512 MHz|Unknown -Intel(R) Pentium(R) M processor 1.73GHz=27.691|798 MHz|Unknown -Genuine Intel(R) CPU T2080@ 1.73GHz=31.108|2x 800 MHz|Unknown -AMD Athlon(tm) 64 Processor 4000+=20.492|1000 MHz|Unknown -Intel(R) Pentium(R) 4 CPU 2.53GHz=36.544|2525 MHz|Unknown -Intel(R) Celeron(R) CPU560@ 2.13GHz=21.147|2128 MHz|Unknown -Intel(R) Core(TM)2 Extreme CPU X7900@ 2.80GHz=18.268|2x 2800 MHz|Unknown -Intel(R) Core(TM)2 Duo CPU T9400@ 2.53GHz=5.586|2x 800 MHz|Unknown -AMD Athlon(tm) 64 X2 Dual Core Processor 6400+=10.933|2x 1000 MHz|Unknown -Intel(R) Celeron(R) M CPU420@ 1.60GHz=36.998|1599 MHz|Unknown -Intel(R) Xeon(R) CPU E5405@ 2.00GHz=17.808|2x 1995 MHz|Unknown -Genuine Intel(R) CPU2140@ 1.60GHz=22.055|2x 1595 MHz|Unknown -Intel(R) Pentium(R) M processor 1700MHz=27.284|600 MHz|Unknown -Pentium II (Deschutes)=124.072|401 MHz|Unknown -Intel(R) Core(TM)2 Duo CPU T8100@ 2.10GHz=23.759|2x 2094 MHz|Unknown -Intel(R) Core(TM)2 CPU4300@ 1.80GHz=18.171|2x 1200 MHz|Unknown -AMD Athlon(tm) XP 3000+=23.066|2158 MHz|Unknown -AMD Phenom(tm) 8450 Triple-Core Processor=18.564|3x 1100 MHz|Unknown -Intel(R) Core(TM)2 Duo CPU P8400@ 2.26GHz=12.067|2x 800 MHz|Unknown -AMD Athlon(tm) XP 1800+=31.725|1540 MHz|Unknown -Intel(R) Celeron(R) CPU550@ 2.00GHz=23.904|1995 MHz|Unknown -Intel(R) Pentium(R) 4 CPU 3.20GHz=31.439|2x 2400 MHz|Unknown -Intel(R) Pentium(R) M processor 1.80GHz=27.133|600 MHz|Unknown -Intel(R) Celeron(R) CPU 2.80GHz=81.047|2793 MHz|Unknown -Genuine Intel(R) CPU T1350@ 1.86GHz=222.178|1867 MHz|Unknown -Intel(R) Pentium(R) 4 CPU 2.80GHz=28.658|2791 MHz|Unknown -PowerPC 740/750=161.312647|280.00 MHz|Unknown -[CPU Blowfish] -Intel(R) Pentium(R) D CPU 3.00GHz=10.838|2x 3000 MHz|Unknown -Intel(R) Celeron(R) CPU540@ 1.86GHz=25.494|1861 MHz|Unknown -AMD Turion(tm) 64 X2 TL-58=12.576|2x 800 MHz|Unknown -AMD Athlon(tm) 64 X2 Dual Core Processor 3800+=10.707|2x 2200 MHz|Unknown -AMD Athlon(tm) 64 X2 Dual Core Processor 6400+=6.421|2x 1000 MHz|Unknown -Intel(R) Core(TM)2 Extreme CPU X7900@ 2.80GHz=6.809|2x 2800 MHz|Unknown -Intel(R) Pentium(R) M processor 1.70GHz=28.279|600 MHz|Unknown -AMD Phenom(tm) 8650 Triple-Core Processor=5.965|3x 2300 MHz|Unknown -Intel(R) Pentium(R) 4 CPU 2.40GHz=24.567|2400 MHz|Unknown -AMD Athlon(tm) 64 X2 Dual Core Processor 4400+=7.918|2x 1000 MHz|Unknown -AMD Phenom(tm) II X4 940 Processor=3.488|4x 800 MHz|Unknown -Pentium III (Coppermine)=17.808|2x 999 MHz|Unknown -Intel(R) Pentium(R) 4 CPU 3.20GHz=12.058|2x 2400 MHz|Unknown -Intel(R) Pentium(R) 4 CPU 1500MHz=46.556|1495 MHz|Unknown -AMD Turion(tm) 64 X2 Mobile Technology TL-58=10.104|2x 1900 MHz|Unknown -Intel(R) Celeron(R) M processor 1.40GHz=80.940|1395 MHz|Unknown -Mobile AMD Athlon(tm) XP 2800+=18.040|1459 MHz|Unknown -Intel(R) Celeron(R) CPU420@ 1.60GHz=21.238|1600 MHz|Unknown -AMD Phenom(tm) 9750 Quad-Core Processor=4.291|4x 1200 MHz|Unknown -Intel(R) Atom(TM) CPU N280 @ 1.66GHz=16.764|2x 1000 MHz|Unknown -AMD Athlon(tm) X2 Dual-Core QL-60=10.585|2x 1900 MHz|Unknown -Intel(R) Pentium(R) DualCPUT2370@ 1.73GHz=9.581|2x 1733 MHz|Unknown -AMD Athlon(tm) XP 1900+=31.620|1593 MHz|Unknown -AMD Athlon(tm) XP 1800+=23.128|1540 MHz|Unknown -Intel(R) Pentium(R) M processor 1.73GHz=19.657|798 MHz|Unknown -AMD Sempron(tm) Processor 3200+=25.468|1000 MHz|Unknown -VIA Esther processor 1500MHz=41.594|1499 MHz|Unknown -Intel(R) Core(TM)2 Quad CPUQ6700@ 2.66GHz=3.174|4x 2669 MHz|Unknown -AMD Athlon(tm) 64 X2 Dual Core Processor 5000+=7.489|2x 1000 MHz|Unknown -Intel(R) Xeon(R) CPU3040@ 1.86GHz=9.113|2x 1862 MHz|Unknown -Intel(R) Pentium(R) DualCPUT2310@ 1.46GHz=11.596|2x 1463 MHz|Unknown -Intel(R) Core(TM)2 Duo CPU P8400@ 2.26GHz=8.293|2x 800 MHz|Unknown -AMD Turion(tm) X2 Dual-Core Mobile RM-74=8.970|2x 600 MHz|Unknown -Genuine Intel(R) CPU 575@ 2.00GHz=20.357|1995 MHz|Unknown -AMD Turion(tm) 64 X2 Mobile Technology TL-62=8.836|2x 800 MHz|Unknown -AMD Turion(tm) 64 X2 Mobile Technology TL-56=10.790|2x 800 MHz|Unknown -Intel(R) Celeron(R) CPU 2.80GHz=40.872|2793 MHz|Unknown -Intel(R) Pentium(R) 4 CPU 2.80GHz=11.699|2x 2800 MHz|Unknown -Genuine Intel(R) CPU2140@ 1.60GHz=10.672|2x 1595 MHz|Unknown -AMD Athlon(tm) 7750 Dual-Core Processor=7.449|2x 1350 MHz|Unknown -Intel(R) Core(TM)2 Duo CPU E8400@ 3.00GHz=5.538|2x 2997 MHz|Unknown -Intel(R) Core(TM)2 CPU T7400@ 2.16GHz=9.372|2x 2161 MHz|Unknown -Intel(R) Pentium(R) 4 CPU 2.53GHz=48.077|2525 MHz|Unknown -Intel(R) Core(TM)2 Quad CPUQ9550@ 2.83GHz=3.244|4x 2830 MHz|Unknown -Intel(R) Core(TM)2 CPU6700@ 2.66GHz=6.902|2x 2667 MHz|Unknown -AMD Turion(tm) X2 Dual-Core Mobile RM-72=11.859|2x 500 MHz|Unknown -Intel(R) Core(TM)2 Duo CPU T9400@ 2.53GHz=6.757|2x 800 MHz|Unknown -AMD Athlon(tm) 64 X2 Dual Core Processor 4800+=8.735|2x 2512 MHz|Unknown -Intel(R) Celeron(R) M CPU520@ 1.60GHz=22.072|1600 MHz|Unknown -Intel(R) Core(TM)2 Quad CPUQ8300@ 2.50GHz=3.346|4x 2497 MHz|Unknown -PowerPC 740/750=172.816713|280.00 MHz|Unknown -[CPU SHA1] -[CPU MD5] -[CPU Fibonacci] -AMD Phenom(tm) 9500 Quad-Core Processor=3.061|4x 1100 MHz|Unknown -Intel(R) Core(TM)2 Duo CPU T7250@ 2.00GHz=4.572|2x 2001 MHz|Unknown -Intel(R) Pentium(R) 4 CPU 2.80GHz=4.603|2x 2800 MHz|Unknown -AMD Athlon(tm) Processor=7.342|1210 MHz|Unknown -Intel(R) Core(TM)2 CPU T5200@ 1.60GHz=7.274|2x 1067 MHz|Unknown -Intel(R) Atom(TM) CPU330 @ 1.60GHz=8.789|4x 1596 MHz|Unknown -AMD Phenom(tm) 9150e Quad-Core Processor=3.281|4x 900 MHz|Unknown -AMD Turion(tm) 64 Mobile Technology MK-36=6.202|800 MHz|Unknown -AMD Athlon(tm) 64 Processor 3200+=5.764|1000 MHz|Unknown -Intel(R) Core(TM)2 Quad CPUQ9400@ 2.66GHz=2.759|4x 2003 MHz|Unknown -Intel(R) Core(TM)2 Duo CPU T7500@ 2.20GHz=4.090|2x 800 MHz|Unknown -AMD Athlon(tm) XP=33.451|906 MHz|Unknown -Intel(R) Core(TM)2 Quad CPUQ6700@ 2.66GHz=3.537|4x 2669 MHz|Unknown -Intel(R) Pentium(R) 4 CPU 2.00GHz=8.698|1994 MHz|Unknown -Intel(R) Core(TM)2 Duo CPU E6550@ 2.33GHz=3.657|2x 2700 MHz|Unknown -Intel(R) Core(TM)2 Duo CPU T7100@ 1.80GHz=4.788|2x 1801 MHz|Unknown -Dual Core AMD Opteron(tm) Processor 165=4.257|2x 1979 MHz|Unknown -Intel(R) Pentium(R) 4 CPU 2.40GHz=6.348|2400 MHz|Unknown -Intel(R) Core(TM)2 Duo CPU P8600@ 2.40GHz=3.374|2x 800 MHz|Unknown -AMD Turion(tm) X2 Dual-Core Mobile RM-70=4.974|2x 500 MHz|Unknown -Intel(R) Pentium(R) 4 CPU 2.53GHz=10.356|2525 MHz|Unknown -Unknown CPU Type=5.728|1660 MHz|Unknown -Pentium III (Coppermine)=10.217|2x 999 MHz|Unknown -Intel(R) Core(TM)2 CPU T5600@ 1.83GHz=5.239|2x 1000 MHz|Unknown -Intel(R) Celeron(R) CPU 3.06GHz=3.961|3059 MHz|Unknown -AMD Phenom(tm) 9850 Quad-Core Processor=2.594|4x 1300 MHz|Unknown -Intel(R) Pentium(R) 4 CPU 3.00GHz=4.977|2x 3458 MHz|Unknown -AMD Sempron(tm) Processor LE-1200=6.085|2109 MHz|Unknown -Intel(R) Pentium(R) 4 CPU 2.80GHz=5.654|2791 MHz|Unknown -AMD Athlon(tm) 64 X2 Dual Core Processor 4000+=4.124|2x 1000 MHz|Unknown -AMD Athlon(tm) XP 1600+=6.387|1398 MHz|Unknown -Genuine Intel(R) CPU T2050@ 1.60GHz=6.104|2x 800 MHz|Unknown -Intel(R) Celeron(R) CPU560@ 2.13GHz=4.776|2128 MHz|Unknown -AMD Phenom(tm) 8650 Triple-Core Processor=3.093|3x 2300 MHz|Unknown -Intel(R) Core(TM) i7 CPU 920@ 2.67GHz=2.787|8x 3799 MHz|Unknown -AMD Athlon(tm) 64 X2 Dual Core Processor 5000+=3.110|2x 1000 MHz|Unknown -AMD Athlon(tm) XP 2500+=7.183|1792 MHz|Unknown -Intel(R) Xeon(R) CPU3040@ 1.86GHz=4.808|2x 1862 MHz|Unknown -AMD Athlon(tm) X2 Dual-Core QL-60=4.354|2x 1900 MHz|Unknown -Intel(R) Core(TM)2 CPU T7400@ 2.16GHz=4.984|2x 2161 MHz|Unknown -AMD Turion(tm) 64 X2 Mobile Technology TL-60=4.189|2x 2000 MHz|Unknown -AMD Turion(tm) 64 X2 Mobile Technology TL-52=5.447|2x 1600 MHz|Unknown -AMD Athlon(tm) 64 X2 Dual Core Processor 6000+=2.747|2x 3051 MHz|Unknown -Intel(R) Atom(TM) CPU N280 @ 1.66GHz=8.973|2x 1000 MHz|Unknown -Intel(R) Core(TM)2 Quad CPUQ9550@ 2.83GHz=2.724|4x 2830 MHz|Unknown -Intel(R) Core(TM)2 Duo CPU T7300@ 2.00GHz=4.773|2x 2001 MHz|Unknown -AMD Sempron(tm) Processor 3600+=5.696|1000 MHz|Unknown -AMD Athlon(tm)=4.475|2305 MHz|Unknown -AMD Athlon(tm) X2 Dual Core Processor BE-2300=4.373|2x 1899 MHz|Unknown -Intel(R) Core(TM)2 Duo CPU E6750@ 2.66GHz=4.096|2x 2671 MHz|Unknown -PowerPC 740/750=58.07682|280.00 MHz|Unknown -[CPU Zlib] -PowerPC 740/750=2150.597408|280.00 MHz|Unknown -[GPU Drawing] diff --git a/benchmark.data b/benchmark.data deleted file mode 100644 index efb964db..00000000 Binary files a/benchmark.data and /dev/null differ diff --git a/cmake/GNUInstallDirs.cmake b/cmake/GNUInstallDirs.cmake index 8f555154..814d21ae 100644 --- a/cmake/GNUInstallDirs.cmake +++ b/cmake/GNUInstallDirs.cmake @@ -1,158 +1,304 @@ -# - Define GNU standard installation directories -# Provides install directory variables as defined for GNU software: -# https://www.gnu.org/prep/standards/html_node/Directory-Variables.html -# Inclusion of this module defines the following variables: -# CMAKE_INSTALL_ - destination for files of a given type -# CMAKE_INSTALL_FULL_ - corresponding absolute path -# where is one of: -# BINDIR - user executables (bin) -# SBINDIR - system admin executables (sbin) -# LIBEXECDIR - program executables (libexec) -# SYSCONFDIR - read-only single-machine data (etc) -# SHAREDSTATEDIR - modifiable architecture-independent data (com) -# LOCALSTATEDIR - modifiable single-machine data (var) -# LIBDIR - object code libraries (lib or lib64) -# INCLUDEDIR - C header files (include) -# OLDINCLUDEDIR - C header files for non-gcc (/usr/include) -# DATAROOTDIR - read-only architecture-independent data root (share) -# DATADIR - read-only architecture-independent data (DATAROOTDIR) -# INFODIR - info documentation (DATAROOTDIR/info) -# LOCALEDIR - locale-dependent data (DATAROOTDIR/locale) -# MANDIR - man documentation (DATAROOTDIR/man) -# DOCDIR - documentation root (DATAROOTDIR/doc/PROJECT_NAME) -# Each CMAKE_INSTALL_ value may be passed to the DESTINATION options of -# install() commands for the corresponding file type. If the includer does -# not define a value the above-shown default will be used and the value will -# appear in the cache for editing by the user. -# Each CMAKE_INSTALL_FULL_ value contains an absolute path constructed -# from the corresponding destination by prepending (if necessary) the value -# of CMAKE_INSTALL_PREFIX. - -#============================================================================= -# Copyright 2011 Nikita Krupen'ko -# Copyright 2011 Kitware, Inc. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# -# * Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# -# * 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. -# -# * Neither the name of Kitware, Inc. nor the names of Contributors -# may be used to endorse or promote products derived from this -# software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -# "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 THE 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. -# -#============================================================================= +# Distributed under the OSI-approved BSD 3-Clause License. See accompanying +# file Copyright.txt or https://cmake.org/licensing for details. -# Installation directories -# -if(NOT DEFINED CMAKE_INSTALL_BINDIR) - set(CMAKE_INSTALL_BINDIR "bin" CACHE PATH "user executables (bin)") -endif() +#[=======================================================================[.rst: +GNUInstallDirs +-------------- -if(NOT DEFINED CMAKE_INSTALL_SBINDIR) - set(CMAKE_INSTALL_SBINDIR "sbin" CACHE PATH "system admin executables (sbin)") -endif() +Define GNU standard installation directories -if(NOT DEFINED CMAKE_INSTALL_LIBEXECDIR) - set(CMAKE_INSTALL_LIBEXECDIR "libexec" CACHE PATH "program executables (libexec)") -endif() +Provides install directory variables as defined by the +`GNU Coding Standards`_. -if(NOT DEFINED CMAKE_INSTALL_SYSCONFDIR) - set(CMAKE_INSTALL_SYSCONFDIR "etc" CACHE PATH "read-only single-machine data (etc)") -endif() +.. _`GNU Coding Standards`: https://www.gnu.org/prep/standards/html_node/Directory-Variables.html -if(NOT DEFINED CMAKE_INSTALL_SHAREDSTATEDIR) - set(CMAKE_INSTALL_SHAREDSTATEDIR "com" CACHE PATH "modifiable architecture-independent data (com)") -endif() +Result Variables +^^^^^^^^^^^^^^^^ -if(NOT DEFINED CMAKE_INSTALL_LOCALSTATEDIR) - set(CMAKE_INSTALL_LOCALSTATEDIR "var" CACHE PATH "modifiable single-machine data (var)") -endif() +Inclusion of this module defines the following variables: + +``CMAKE_INSTALL_`` + + Destination for files of a given type. This value may be passed to + the ``DESTINATION`` options of :command:`install` commands for the + corresponding file type. + +``CMAKE_INSTALL_FULL_`` + + The absolute path generated from the corresponding ``CMAKE_INSTALL_`` + value. If the value is not already an absolute path, an absolute path + is constructed typically by prepending the value of the + :variable:`CMAKE_INSTALL_PREFIX` variable. However, there are some + `special cases`_ as documented below. + +where ```` is one of: + +``BINDIR`` + user executables (``bin``) +``SBINDIR`` + system admin executables (``sbin``) +``LIBEXECDIR`` + program executables (``libexec``) +``SYSCONFDIR`` + read-only single-machine data (``etc``) +``SHAREDSTATEDIR`` + modifiable architecture-independent data (``com``) +``LOCALSTATEDIR`` + modifiable single-machine data (``var``) +``RUNSTATEDIR`` + run-time variable data (``LOCALSTATEDIR/run``) +``LIBDIR`` + object code libraries (``lib`` or ``lib64`` + or ``lib/`` on Debian) +``INCLUDEDIR`` + C header files (``include``) +``OLDINCLUDEDIR`` + C header files for non-gcc (``/usr/include``) +``DATAROOTDIR`` + read-only architecture-independent data root (``share``) +``DATADIR`` + read-only architecture-independent data (``DATAROOTDIR``) +``INFODIR`` + info documentation (``DATAROOTDIR/info``) +``LOCALEDIR`` + locale-dependent data (``DATAROOTDIR/locale``) +``MANDIR`` + man documentation (``DATAROOTDIR/man``) +``DOCDIR`` + documentation root (``DATAROOTDIR/doc/PROJECT_NAME``) + +If the includer does not define a value the above-shown default will be +used and the value will appear in the cache for editing by the user. + +Special Cases +^^^^^^^^^^^^^ + +The following values of :variable:`CMAKE_INSTALL_PREFIX` are special: + +``/`` + + For ```` other than the ``SYSCONFDIR``, ``LOCALSTATEDIR`` and + ``RUNSTATEDIR``, the value of ``CMAKE_INSTALL_`` is prefixed + with ``usr/`` if it is not user-specified as an absolute path. + For example, the ``INCLUDEDIR`` value ``include`` becomes ``usr/include``. + This is required by the `GNU Coding Standards`_, which state: + + When building the complete GNU system, the prefix will be empty + and ``/usr`` will be a symbolic link to ``/``. + +``/usr`` + + For ```` equal to ``SYSCONFDIR``, ``LOCALSTATEDIR`` or + ``RUNSTATEDIR``, the ``CMAKE_INSTALL_FULL_`` is computed by + prepending just ``/`` to the value of ``CMAKE_INSTALL_`` + if it is not user-specified as an absolute path. + For example, the ``SYSCONFDIR`` value ``etc`` becomes ``/etc``. + This is required by the `GNU Coding Standards`_. + +``/opt/...`` + + For ```` equal to ``SYSCONFDIR``, ``LOCALSTATEDIR`` or + ``RUNSTATEDIR``, the ``CMAKE_INSTALL_FULL_`` is computed by + *appending* the prefix to the value of ``CMAKE_INSTALL_`` + if it is not user-specified as an absolute path. + For example, the ``SYSCONFDIR`` value ``etc`` becomes ``/etc/opt/...``. + This is defined by the `Filesystem Hierarchy Standard`_. + +.. _`Filesystem Hierarchy Standard`: https://refspecs.linuxfoundation.org/FHS_3.0/fhs/index.html + +Macros +^^^^^^ + +.. command:: GNUInstallDirs_get_absolute_install_dir + + :: + + GNUInstallDirs_get_absolute_install_dir(absvar var) + + Set the given variable ``absvar`` to the absolute path contained + within the variable ``var``. This is to allow the computation of an + absolute path, accounting for all the special cases documented + above. While this macro is used to compute the various + ``CMAKE_INSTALL_FULL_`` variables, it is exposed publicly to + allow users who create additional path variables to also compute + absolute paths where necessary, using the same logic. +#]=======================================================================] + +cmake_policy(PUSH) + +# Convert a cache variable to PATH type + +macro(_GNUInstallDirs_cache_convert_to_path var description) + get_property(_GNUInstallDirs_cache_type CACHE ${var} PROPERTY TYPE) + if(_GNUInstallDirs_cache_type STREQUAL "UNINITIALIZED") + file(TO_CMAKE_PATH "${${var}}" _GNUInstallDirs_cmakepath) + set_property(CACHE ${var} PROPERTY TYPE PATH) + set_property(CACHE ${var} PROPERTY VALUE "${_GNUInstallDirs_cmakepath}") + set_property(CACHE ${var} PROPERTY HELPSTRING "${description}") + unset(_GNUInstallDirs_cmakepath) + endif() + unset(_GNUInstallDirs_cache_type) +endmacro() + +# Create a cache variable with default for a path. +macro(_GNUInstallDirs_cache_path var default description) + if(NOT DEFINED ${var}) + set(${var} "${default}" CACHE PATH "${description}") + endif() + _GNUInstallDirs_cache_convert_to_path("${var}" "${description}") +endmacro() + +# Create a cache variable with not default for a path, with a fallback +# when unset; used for entries slaved to other entries such as +# DATAROOTDIR. +macro(_GNUInstallDirs_cache_path_fallback var default description) + if(NOT ${var}) + set(${var} "" CACHE PATH "${description}") + set(${var} "${default}") + endif() + _GNUInstallDirs_cache_convert_to_path("${var}" "${description}") +endmacro() + +# Installation directories +# + +_GNUInstallDirs_cache_path(CMAKE_INSTALL_BINDIR "bin" + "User executables (bin)") +_GNUInstallDirs_cache_path(CMAKE_INSTALL_SBINDIR "sbin" + "System admin executables (sbin)") +_GNUInstallDirs_cache_path(CMAKE_INSTALL_LIBEXECDIR "libexec" + "Program executables (libexec)") +_GNUInstallDirs_cache_path(CMAKE_INSTALL_SYSCONFDIR "etc" + "Read-only single-machine data (etc)") +_GNUInstallDirs_cache_path(CMAKE_INSTALL_SHAREDSTATEDIR "com" + "Modifiable architecture-independent data (com)") +_GNUInstallDirs_cache_path(CMAKE_INSTALL_LOCALSTATEDIR "var" + "Modifiable single-machine data (var)") + +# We check if the variable was manually set and not cached, in order to +# allow projects to set the values as normal variables before including +# GNUInstallDirs to avoid having the entries cached or user-editable. It +# replaces the "if(NOT DEFINED CMAKE_INSTALL_XXX)" checks in all the +# other cases. +# If CMAKE_INSTALL_LIBDIR is defined, if _libdir_set is false, then the +# variable is a normal one, otherwise it is a cache one. +get_property(_libdir_set CACHE CMAKE_INSTALL_LIBDIR PROPERTY TYPE SET) +if(NOT DEFINED CMAKE_INSTALL_LIBDIR OR (_libdir_set + AND DEFINED _GNUInstallDirs_LAST_CMAKE_INSTALL_PREFIX + AND NOT "${_GNUInstallDirs_LAST_CMAKE_INSTALL_PREFIX}" STREQUAL "${CMAKE_INSTALL_PREFIX}")) + # If CMAKE_INSTALL_LIBDIR is not defined, it is always executed. + # Otherwise: + # * if _libdir_set is false it is not executed (meaning that it is + # not a cache variable) + # * if _GNUInstallDirs_LAST_CMAKE_INSTALL_PREFIX is not defined it is + # not executed + # * if _GNUInstallDirs_LAST_CMAKE_INSTALL_PREFIX and + # CMAKE_INSTALL_PREFIX are the same string it is not executed. + # _GNUInstallDirs_LAST_CMAKE_INSTALL_PREFIX is updated after the + # execution, of this part of code, therefore at the next inclusion + # of the file, CMAKE_INSTALL_LIBDIR is defined, and the 2 strings + # are equal, meaning that the if is not executed the code the + # second time. -if(NOT DEFINED CMAKE_INSTALL_LIBDIR) set(_LIBDIR_DEFAULT "lib") # Override this default 'lib' with 'lib64' iff: # - we are on Linux system but NOT cross-compiling # - we are NOT on debian # - we are on a 64 bits system - # reason is: amd64 ABI: http://www.x86-64.org/documentation/abi.pdf - # Note that the future of multi-arch handling may be even - # more complicated than that: https://wiki.debian.org/Multiarch - if(CMAKE_SYSTEM_NAME MATCHES "Linux" - AND NOT CMAKE_CROSSCOMPILING - AND NOT EXISTS "/etc/debian_version") - if(NOT DEFINED CMAKE_SIZEOF_VOID_P) - message(AUTHOR_WARNING - "Unable to determine default CMAKE_INSTALL_LIBDIR directory because no target architecture is known. " - "Please enable at least one language before including GNUInstallDirs.") - else() - if("${CMAKE_SIZEOF_VOID_P}" EQUAL "8") - set(_LIBDIR_DEFAULT "lib64") + # reason is: amd64 ABI: https://github.com/hjl-tools/x86-psABI/wiki/X86-psABI + # For Debian with multiarch, use 'lib/${CMAKE_LIBRARY_ARCHITECTURE}' if + # CMAKE_LIBRARY_ARCHITECTURE is set (which contains e.g. "i386-linux-gnu" + # and CMAKE_INSTALL_PREFIX is "/usr" + # See http://wiki.debian.org/Multiarch + if(DEFINED _GNUInstallDirs_LAST_CMAKE_INSTALL_PREFIX) + set(__LAST_LIBDIR_DEFAULT "lib") + # __LAST_LIBDIR_DEFAULT is the default value that we compute from + # _GNUInstallDirs_LAST_CMAKE_INSTALL_PREFIX, not a cache entry for + # the value that was last used as the default. + # This value is used to figure out whether the user changed the + # CMAKE_INSTALL_LIBDIR value manually, or if the value was the + # default one. When CMAKE_INSTALL_PREFIX changes, the value is + # updated to the new default, unless the user explicitly changed it. + endif() + if(CMAKE_SYSTEM_NAME MATCHES "^(Linux|kFreeBSD|GNU)$" + AND NOT CMAKE_CROSSCOMPILING) + if (EXISTS "/etc/debian_version") # is this a debian system ? + if(CMAKE_LIBRARY_ARCHITECTURE) + if("${CMAKE_INSTALL_PREFIX}" MATCHES "^/usr/?$") + set(_LIBDIR_DEFAULT "lib/${CMAKE_LIBRARY_ARCHITECTURE}") + endif() + if(DEFINED _GNUInstallDirs_LAST_CMAKE_INSTALL_PREFIX + AND "${_GNUInstallDirs_LAST_CMAKE_INSTALL_PREFIX}" MATCHES "^/usr/?$") + set(__LAST_LIBDIR_DEFAULT "lib/${CMAKE_LIBRARY_ARCHITECTURE}") + endif() + endif() + else() # not debian, rely on CMAKE_SIZEOF_VOID_P: + if(NOT DEFINED CMAKE_SIZEOF_VOID_P) + message(AUTHOR_WARNING + "Unable to determine default CMAKE_INSTALL_LIBDIR directory because no target architecture is known. " + "Please enable at least one language before including GNUInstallDirs.") + else() + if("${CMAKE_SIZEOF_VOID_P}" EQUAL "8") + set(_LIBDIR_DEFAULT "lib64") + if(DEFINED _GNUInstallDirs_LAST_CMAKE_INSTALL_PREFIX) + set(__LAST_LIBDIR_DEFAULT "lib64") + endif() + endif() endif() endif() endif() - set(CMAKE_INSTALL_LIBDIR "${_LIBDIR_DEFAULT}" CACHE PATH "object code libraries (${_LIBDIR_DEFAULT})") -endif() - -if(NOT DEFINED CMAKE_INSTALL_INCLUDEDIR) - set(CMAKE_INSTALL_INCLUDEDIR "include" CACHE PATH "C header files (include)") + if(NOT DEFINED CMAKE_INSTALL_LIBDIR) + set(CMAKE_INSTALL_LIBDIR "${_LIBDIR_DEFAULT}" CACHE PATH "Object code libraries (${_LIBDIR_DEFAULT})") + elseif(DEFINED __LAST_LIBDIR_DEFAULT + AND "${__LAST_LIBDIR_DEFAULT}" STREQUAL "${CMAKE_INSTALL_LIBDIR}") + set_property(CACHE CMAKE_INSTALL_LIBDIR PROPERTY VALUE "${_LIBDIR_DEFAULT}") + endif() endif() +_GNUInstallDirs_cache_convert_to_path(CMAKE_INSTALL_LIBDIR "Object code libraries (lib)") -if(NOT DEFINED CMAKE_INSTALL_OLDINCLUDEDIR) - set(CMAKE_INSTALL_OLDINCLUDEDIR "/usr/include" CACHE PATH "C header files for non-gcc (/usr/include)") -endif() +# Save for next run +set(_GNUInstallDirs_LAST_CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}" CACHE INTERNAL "CMAKE_INSTALL_PREFIX during last run") +unset(_libdir_set) +unset(__LAST_LIBDIR_DEFAULT) -if(NOT DEFINED CMAKE_INSTALL_DATAROOTDIR) - set(CMAKE_INSTALL_DATAROOTDIR "share" CACHE PATH "read-only architecture-independent data root (share)") -endif() +_GNUInstallDirs_cache_path(CMAKE_INSTALL_INCLUDEDIR "include" + "C header files (include)") +_GNUInstallDirs_cache_path(CMAKE_INSTALL_OLDINCLUDEDIR "/usr/include" + "C header files for non-gcc (/usr/include)") +_GNUInstallDirs_cache_path(CMAKE_INSTALL_DATAROOTDIR "share" + "Read-only architecture-independent data root (share)") #----------------------------------------------------------------------------- # Values whose defaults are relative to DATAROOTDIR. Store empty values in # the cache and store the defaults in local variables if the cache values are # not set explicitly. This auto-updates the defaults as DATAROOTDIR changes. -if(NOT CMAKE_INSTALL_DATADIR) - set(CMAKE_INSTALL_DATADIR "" CACHE PATH "read-only architecture-independent data (DATAROOTDIR)") - set(CMAKE_INSTALL_DATADIR "${CMAKE_INSTALL_DATAROOTDIR}") -endif() +_GNUInstallDirs_cache_path_fallback(CMAKE_INSTALL_DATADIR "${CMAKE_INSTALL_DATAROOTDIR}" + "Read-only architecture-independent data (DATAROOTDIR)") -if(NOT CMAKE_INSTALL_INFODIR) - set(CMAKE_INSTALL_INFODIR "" CACHE PATH "info documentation (DATAROOTDIR/info)") - set(CMAKE_INSTALL_INFODIR "${CMAKE_INSTALL_DATAROOTDIR}/info") +if(CMAKE_SYSTEM_NAME MATCHES "^(([^kF].*)?BSD|DragonFly)$") + _GNUInstallDirs_cache_path_fallback(CMAKE_INSTALL_INFODIR "info" + "Info documentation (info)") +else() + _GNUInstallDirs_cache_path_fallback(CMAKE_INSTALL_INFODIR "${CMAKE_INSTALL_DATAROOTDIR}/info" + "Info documentation (DATAROOTDIR/info)") endif() -if(NOT CMAKE_INSTALL_LOCALEDIR) - set(CMAKE_INSTALL_LOCALEDIR "" CACHE PATH "locale-dependent data (DATAROOTDIR/locale)") - set(CMAKE_INSTALL_LOCALEDIR "${CMAKE_INSTALL_DATAROOTDIR}/locale") +if(CMAKE_SYSTEM_NAME MATCHES "^(([^k].*)?BSD|DragonFly)$") + _GNUInstallDirs_cache_path_fallback(CMAKE_INSTALL_MANDIR "man" + "Man documentation (man)") +else() + _GNUInstallDirs_cache_path_fallback(CMAKE_INSTALL_MANDIR "${CMAKE_INSTALL_DATAROOTDIR}/man" + "Man documentation (DATAROOTDIR/man)") endif() -if(NOT CMAKE_INSTALL_MANDIR) - set(CMAKE_INSTALL_MANDIR "" CACHE PATH "man documentation (DATAROOTDIR/man)") - set(CMAKE_INSTALL_MANDIR "${CMAKE_INSTALL_DATAROOTDIR}/man") -endif() +_GNUInstallDirs_cache_path_fallback(CMAKE_INSTALL_LOCALEDIR "${CMAKE_INSTALL_DATAROOTDIR}/locale" + "Locale-dependent data (DATAROOTDIR/locale)") +_GNUInstallDirs_cache_path_fallback(CMAKE_INSTALL_DOCDIR "${CMAKE_INSTALL_DATAROOTDIR}/doc/${PROJECT_NAME}" + "Documentation root (DATAROOTDIR/doc/PROJECT_NAME)") -if(NOT CMAKE_INSTALL_DOCDIR) - set(CMAKE_INSTALL_DOCDIR "" CACHE PATH "documentation root (DATAROOTDIR/doc/PROJECT_NAME)") - set(CMAKE_INSTALL_DOCDIR "${CMAKE_INSTALL_DATAROOTDIR}/doc/${PROJECT_NAME}") -endif() +_GNUInstallDirs_cache_path_fallback(CMAKE_INSTALL_RUNSTATEDIR "${CMAKE_INSTALL_LOCALSTATEDIR}/run" + "Run-time variable data (LOCALSTATEDIR/run)") #----------------------------------------------------------------------------- @@ -163,6 +309,7 @@ mark_as_advanced( CMAKE_INSTALL_SYSCONFDIR CMAKE_INSTALL_SHAREDSTATEDIR CMAKE_INSTALL_LOCALSTATEDIR + CMAKE_INSTALL_RUNSTATEDIR CMAKE_INSTALL_LIBDIR CMAKE_INSTALL_INCLUDEDIR CMAKE_INSTALL_OLDINCLUDEDIR @@ -174,6 +321,41 @@ mark_as_advanced( CMAKE_INSTALL_DOCDIR ) +macro(GNUInstallDirs_get_absolute_install_dir absvar var) + if(NOT IS_ABSOLUTE "${${var}}") + # Handle special cases: + # - CMAKE_INSTALL_PREFIX == / + # - CMAKE_INSTALL_PREFIX == /usr + # - CMAKE_INSTALL_PREFIX == /opt/... + if("${CMAKE_INSTALL_PREFIX}" STREQUAL "/") + if("${dir}" STREQUAL "SYSCONFDIR" OR "${dir}" STREQUAL "LOCALSTATEDIR" OR "${dir}" STREQUAL "RUNSTATEDIR") + set(${absvar} "/${${var}}") + else() + if (NOT "${${var}}" MATCHES "^usr/") + set(${var} "usr/${${var}}") + endif() + set(${absvar} "/${${var}}") + endif() + elseif("${CMAKE_INSTALL_PREFIX}" MATCHES "^/usr/?$") + if("${dir}" STREQUAL "SYSCONFDIR" OR "${dir}" STREQUAL "LOCALSTATEDIR" OR "${dir}" STREQUAL "RUNSTATEDIR") + set(${absvar} "/${${var}}") + else() + set(${absvar} "${CMAKE_INSTALL_PREFIX}/${${var}}") + endif() + elseif("${CMAKE_INSTALL_PREFIX}" MATCHES "^/opt/.*") + if("${dir}" STREQUAL "SYSCONFDIR" OR "${dir}" STREQUAL "LOCALSTATEDIR" OR "${dir}" STREQUAL "RUNSTATEDIR") + set(${absvar} "/${${var}}${CMAKE_INSTALL_PREFIX}") + else() + set(${absvar} "${CMAKE_INSTALL_PREFIX}/${${var}}") + endif() + else() + set(${absvar} "${CMAKE_INSTALL_PREFIX}/${${var}}") + endif() + else() + set(${absvar} "${${var}}") + endif() +endmacro() + # Result directories # foreach(dir @@ -183,6 +365,7 @@ foreach(dir SYSCONFDIR SHAREDSTATEDIR LOCALSTATEDIR + RUNSTATEDIR LIBDIR INCLUDEDIR OLDINCLUDEDIR @@ -193,9 +376,7 @@ foreach(dir MANDIR DOCDIR ) - if(NOT IS_ABSOLUTE ${CMAKE_INSTALL_${dir}}) - set(CMAKE_INSTALL_FULL_${dir} "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_${dir}}") - else() - set(CMAKE_INSTALL_FULL_${dir} "${CMAKE_INSTALL_${dir}}") - endif() + GNUInstallDirs_get_absolute_install_dir(CMAKE_INSTALL_FULL_${dir} CMAKE_INSTALL_${dir}) endforeach() + +cmake_policy(POP) diff --git a/cmake/Translations.cmake b/cmake/Translations.cmake index dd06cee4..d729b37d 100644 --- a/cmake/Translations.cmake +++ b/cmake/Translations.cmake @@ -10,7 +10,7 @@ macro(add_translations_directory NLS_PACKAGE) add_custom_command (TARGET i18n COMMAND ${MSGFMT_EXECUTABLE} -o ${MO_OUTPUT} ${PO_INPUT}) install (FILES ${MO_OUTPUT} DESTINATION - share/locale/${PO_INPUT_BASE}/LC_MESSAGES + ${CMAKE_INSTALL_LOCALEDIR}/${PO_INPUT_BASE}/LC_MESSAGES RENAME ${NLS_PACKAGE}.mo) endforeach (PO_INPUT ${PO_FILES}) endmacro(add_translations_directory) diff --git a/config.h.cmake b/config.h.cmake index 496f7535..974842a5 100644 --- a/config.h.cmake +++ b/config.h.cmake @@ -1,36 +1,34 @@ #ifndef __CONFIG_H__ #define __CONFIG_H__ -#define VERSION "@HARDINFO_VERSION@" +#define VERSION "@HARDINFO2_VERSION@" -#define ARCH "ARCH_@HARDINFO_ARCH@" -#define OS "@HARDINFO_OS@" +#define ARCH "ARCH_@HARDINFO2_ARCH@" +#define OS "@HARDINFO2_OS@" #define PLATFORM OS "-" ARCH #define KERNEL "" #define HOSTNAME "" -#define ARCH_@HARDINFO_ARCH@ +#define ARCH_@HARDINFO2_ARCH@ #define LIBDIR "@CMAKE_INSTALL_LIBDIR@" -#define LIBPREFIX "@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_LIBDIR@/hardinfo" -#define PREFIX "@CMAKE_INSTALL_PREFIX@/share/hardinfo" +#define LIBPREFIX "@CMAKE_INSTALL_FULL_LIBDIR@/hardinfo2" +#define PREFIX "@CMAKE_INSTALL_DATAROOTDIR@/hardinfo2" -#cmakedefine LIBSOUP_FOUND -#cmakedefine HARDINFO_DEBUG @HARDINFO_DEBUG@ +#cmakedefine HARDINFO2_DEBUG @HARDINFO2_DEBUG@ -#ifdef LIBSOUP_FOUND -# define HAS_LIBSOUP -#endif /* LIBSOUP_FOUND */ - -#if defined(HARDINFO_DEBUG) && (HARDINFO_DEBUG==1) -# define RELEASE 0 -# define DEBUG(msg,...) fprintf(stderr, "*** %s:%d (%s) *** " msg "\n", \ +#if defined(HARDINFO2_DEBUG) && (HARDINFO2_DEBUG==1) + #define RELEASE 0 + #define DEBUG(msg,...) fprintf(stderr, "*** %s:%d (%s) *** " msg "\n", \ __FILE__, __LINE__, __FUNCTION__, ##__VA_ARGS__) #else -# define RELEASE 1 -# define DEBUG(msg,...) -#endif /* HARDINFO_DEBUG */ + #define RELEASE 1 + #define DEBUG(msg,...) +#endif /* HARDINFO2_DEBUG */ #define ENABLE_BINRELOC 1 #define HAS_LINUX_WE 1 +#define HAS_LIBSOUP 1 + +#cmakedefine01 HAS_LIBSENSORS #endif /* __CONFIG_H__ */ diff --git a/data/arm.ids b/data/arm.ids new file mode 100644 index 00000000..8e256ec3 --- /dev/null +++ b/data/arm.ids @@ -0,0 +1,133 @@ +# +# List of ARM CPU IDs +# in a format similar to pci.ids/usb.ids. +# +# Version: 2018.12.22 +# Maintained by: Burt P. (pburt0@gmail.com) +# https://github.com/bp0/armids +# +# Syntax: +# implementer implementer_name +# part part_name <-- single tab +# +# is two hex digits, is three hex digits, keep in order. +# Comments start with '#'. +# +# This file can be distributed under the GNU General Public License +# (version 2 or higher). +# +# Based on lscpu-arm.c by Riku Voipio +# +# The information here is gathered from +# - ARM manuals +# - Linux kernel: arch/armX/include/asm/cputype.h +# - GCC sources: config/arch/arch-cores.def +# - Ancient wisdom +# + +41 ARM + 810 ARM810 + 920 ARM920 + 922 ARM922 + 926 ARM926 + 940 ARM940 + 946 ARM946 + 966 ARM966 + a20 ARM1020 + a22 ARM1022 + a26 ARM1026 + b02 ARM11 MPCore + b36 ARM1136 + b56 ARM1156 + b76 ARM1176 + c05 Cortex-A5 + c07 Cortex-A7 + c08 Cortex-A8 + c09 Cortex-A9 + c0d Cortex-A17 # Originally A12 + c0f Cortex-A15 + c0e Cortex-A17 + c14 Cortex-R4 + c15 Cortex-R5 + c17 Cortex-R7 + c18 Cortex-R8 + c20 Cortex-M0 + c21 Cortex-M1 + c23 Cortex-M3 + c24 Cortex-M4 + c27 Cortex-M7 + c60 Cortex-M0+ + d01 Cortex-A32 + d03 Cortex-A53 + d04 Cortex-A35 + d05 Cortex-A55 + d07 Cortex-A57 + d08 Cortex-A72 + d09 Cortex-A73 + d0a Cortex-A75 + d13 Cortex-R52 + d20 Cortex-M23 + d21 Cortex-M33 +42 Broadcom + 00f Brahma B15 + 100 Brahma B53 + 516 ThunderX2 +43 Cavium + 0a0 ThunderX + 0a1 ThunderX 88XX + 0a2 ThunderX 81XX + 0a3 ThunderX 83XX + 0af ThunderX2 99xx +44 DEC + a10 SA110 + a11 SA1100 +4e nVidia + 000 Denver + 003 Denver 2 +50 APM + 000 X-Gene +51 Qualcomm + 00f Scorpion + 02d Scorpion + 04d Krait + 06f Krait + 201 Kryo + 205 Kryo + 211 Kryo + 800 Falkor V1/Kryo + 801 Kryo V2 + c00 Falkor + c01 Saphira +53 Samsung + 001 exynos-m1 +54 Texas Instruments +56 Marvell + 131 Feroceon 88FR131 + 581 PJ4/PJ4b + 584 PJ4B-MP +66 Faraday + 526 FA526 + 626 FA626 +69 Intel + 200 i80200 + 210 PXA250A + 212 PXA210A + 242 i80321-400 + 243 i80321-600 + 290 PXA250B/PXA26x + 292 PXA210B + 2c2 i80321-400-B0 + 2c3 i80321-600-B0 + 2d0 PXA250C/PXA255/PXA26x + 2d2 PXA210C + 2e3 i80219 + 411 PXA27x + 41c IPX425-533 + 41d IPX425-400 + 41f IPX425-266 + 682 PXA32x + 683 PXA930/PXA935 + 688 PXA30x + 689 PXA31x + b11 SA1110 + c12 IPX1200 diff --git a/data/benchmark.data b/data/benchmark.data new file mode 100644 index 00000000..efb964db Binary files /dev/null and b/data/benchmark.data differ diff --git a/data/benchmark.json b/data/benchmark.json new file mode 100644 index 00000000..c173b781 --- /dev/null +++ b/data/benchmark.json @@ -0,0 +1 @@ +{"CPU Blowfish (Multi-core)":[{"MachineId":"Raspberry_Pi_Model_B_Rev_2;Broadcom_BCM2835;700_00","ExtraInfo":"7,0s, k:6eac709cca51a228bfa70150c9c5a7c4, d:c25cf5c889f7bead2ff39788eedae37b","UserNote":"","BenchmarkVersion":1,"MachineDataVersion":0,"BenchmarkResult":1.06,"ElapsedTime":7.000957,"UsedThreads":1,"Board":"Raspberry Pi Model B Rev 2","MachineType":"Single-board computer","CpuName":"Broadcom BCM2835","CpuDesc":"1 CPU","NumCpus":1,"NumCores":1,"NumThreads":1,"NumNodes":1,"CpuConfig":"1x 700.00 MHz","CpuConfigMap":{"700.00":1},"MemoryInKiB":439196,"PhysicalMemoryInMiB":0,"MemoryTypes":"RAM","OpenGlRenderer":"llvmpipe (LLVM 15.0.6, 128 bits)","GpuDesc":"Broadcom VideoCore IV","PointerBits":32,"DataFromSuperUser":true,"Legacy":false},{"MachineId":"(Unknown);AMD_Ryzen_9_7950X;143997_44","ExtraInfo":"7.0s, k:6eac709cca51a228bfa70150c9c5a7c4, d:c25cf5c889f7bead2ff39788eedae37b","UserNote":"","BenchmarkVersion":1,"MachineDataVersion":0,"BenchmarkResult":641.38,"ElapsedTime":7.001311,"UsedThreads":16,"Board":"(Unknown)","MachineType":"Unknown physical machine type","CpuName":"AMD Ryzen 9 7950X","CpuDesc":"1 CPU; 16 cores; 32 threads","NumCpus":1,"NumCores":16,"NumThreads":32,"NumNodes":1,"CpuConfig":"32x 4499.92 MHz","CpuConfigMap":{"4499.92":32},"MemoryInKiB":32716664,"PhysicalMemoryInMiB":32640,"MemoryTypes":"RAM","OpenGlRenderer":"D3D12 (NVIDIA GeForce RTX 4090)","GpuDesc":"Microsoft Device","PointerBits":64,"DataFromSuperUser":true,"Legacy":false},{"MachineId":"Raspberry_Pi_3_Model_B_Rev_1_2;Broadcom_BCM2837;4800_00","ExtraInfo":"7.0s, k:6eac709cca51a228bfa70150c9c5a7c4, d:c25cf5c889f7bead2ff39788eedae37b","UserNote":"","BenchmarkVersion":1,"MachineDataVersion":0,"BenchmarkResult":10.51,"ElapsedTime":7.000881,"UsedThreads":4,"Board":"Raspberry Pi 3 Model B Rev 1.2","MachineType":"Single-board computer","CpuName":"Broadcom BCM2837","CpuDesc":"1 CPU; 4 cores; 4 threads","NumCpus":1,"NumCores":4,"NumThreads":4,"NumNodes":1,"CpuConfig":"4x 1200.00 MHz","CpuConfigMap":{"1200.00":4},"MemoryInKiB":944480,"PhysicalMemoryInMiB":0,"MemoryTypes":"RAM","OpenGlRenderer":"llvmpipe (LLVM 15.0.6, 128 bits)","GpuDesc":"Broadcom VideoCore IV","PointerBits":32,"DataFromSuperUser":true,"Legacy":false},{"MachineId":"Hardkernel_ODROID_C2;Amlogic_(Unknown);6144_00","ExtraInfo":"7.0s, k:6eac709cca51a228bfa70150c9c5a7c4, d:c25cf5c889f7bead2ff39788eedae37b","UserNote":"","BenchmarkVersion":1,"MachineDataVersion":0,"BenchmarkResult":20.77,"ElapsedTime":7.00113,"UsedThreads":4,"Board":"Hardkernel ODROID-C2","MachineType":"Single-board computer","CpuName":"Amlogic (Unknown)","CpuDesc":"1 CPU; 4 cores; 4 threads","NumCpus":1,"NumCores":4,"NumThreads":4,"NumNodes":1,"CpuConfig":"4x 1536.00 MHz","CpuConfigMap":{"1536.00":4},"MemoryInKiB":1978296,"PhysicalMemoryInMiB":0,"MemoryTypes":"RAM","OpenGlRenderer":"","GpuDesc":"arm Mali 450","PointerBits":64,"DataFromSuperUser":true,"Legacy":false},{"MachineId":"Intel_440BX_Desktop_Reference_Platform_(VMware_VMware_Virtual_Platform);AMD_EPYC_9354P;208001_92","ExtraInfo":"7.0s, k:6eac709cca51a228bfa70150c9c5a7c4, d:c25cf5c889f7bead2ff39788eedae37b","UserNote":"","BenchmarkVersion":1,"MachineDataVersion":0,"BenchmarkResult":1272.77,"ElapsedTime":7.012544,"UsedThreads":64,"Board":"Intel 440BX Desktop Reference Platform (VMware VMware Virtual Platform)","MachineType":"Virtual (VMware)","CpuName":"AMD EPYC 9354P","CpuDesc":"1 CPU; 64 cores; 64 threads","NumCpus":1,"NumCores":64,"NumThreads":64,"NumNodes":1,"CpuConfig":"64x 3250.03 MHz","CpuConfigMap":{"3250.03":64},"MemoryInKiB":32846368,"PhysicalMemoryInMiB":32768,"MemoryTypes":"RAM","OpenGlRenderer":"llvmpipe (LLVM 15.0.7, 256 bits)","GpuDesc":"VMware SVGA II Adapter","PointerBits":64,"DataFromSuperUser":true,"Legacy":false},{"MachineId":"Raspberry_Pi_4_Model_B_Rev_1_2;Broadcom_(Unknown);8000_00","ExtraInfo":"7.0s, k:6eac709cca51a228bfa70150c9c5a7c4, d:c25cf5c889f7bead2ff39788eedae37b","UserNote":"","BenchmarkVersion":1,"MachineDataVersion":0,"BenchmarkResult":21.44,"ElapsedTime":7.000895,"UsedThreads":4,"Board":"Raspberry Pi 4 Model B Rev 1.2","MachineType":"Single-board computer","CpuName":"Broadcom (Unknown)","CpuDesc":"1 CPU; 4 cores; 4 threads","NumCpus":1,"NumCores":4,"NumThreads":4,"NumNodes":1,"CpuConfig":"4x 2000.00 MHz","CpuConfigMap":{"2000.00":4},"MemoryInKiB":3447996,"PhysicalMemoryInMiB":0,"MemoryTypes":"RAM","OpenGlRenderer":"llvmpipe (LLVM 15.0.6, 128 bits)","GpuDesc":"Unknown Device","PointerBits":32,"DataFromSuperUser":true,"Legacy":false},{"MachineId":"Radxa_ROCK_Pi_S;Rockchip_RK33xx_family;5184_00","ExtraInfo":"7.0s, k:6eac709cca51a228bfa70150c9c5a7c4, d:c25cf5c889f7bead2ff39788eedae37b","UserNote":"","BenchmarkVersion":1,"MachineDataVersion":0,"BenchmarkResult":8.09,"ElapsedTime":7.000845,"UsedThreads":4,"Board":"Radxa ROCK Pi S","MachineType":"Unknown physical machine type","CpuName":"Rockchip RK33xx-family","CpuDesc":"1 CPU; 4 cores; 4 threads","NumCpus":1,"NumCores":4,"NumThreads":4,"NumNodes":1,"CpuConfig":"4x 1296.00 MHz","CpuConfigMap":{"1296.00":4},"MemoryInKiB":177872,"PhysicalMemoryInMiB":0,"MemoryTypes":"RAM","OpenGlRenderer":"llvmpipe (LLVM 12.0.0, 128 bits)","GpuDesc":"","PointerBits":64,"DataFromSuperUser":true,"Legacy":false}],"CPU Blowfish (Multi-thread)":[{"MachineId":"Raspberry_Pi_Model_B_Rev_2;Broadcom_BCM2835;700_00","ExtraInfo":"7,0s, k:6eac709cca51a228bfa70150c9c5a7c4, d:c25cf5c889f7bead2ff39788eedae37b","UserNote":"","BenchmarkVersion":1,"MachineDataVersion":0,"BenchmarkResult":1.06,"ElapsedTime":7.00113,"UsedThreads":1,"Board":"Raspberry Pi Model B Rev 2","MachineType":"Single-board computer","CpuName":"Broadcom BCM2835","CpuDesc":"1 CPU","NumCpus":1,"NumCores":1,"NumThreads":1,"NumNodes":1,"CpuConfig":"1x 700.00 MHz","CpuConfigMap":{"700.00":1},"MemoryInKiB":439196,"PhysicalMemoryInMiB":0,"MemoryTypes":"RAM","OpenGlRenderer":"llvmpipe (LLVM 15.0.6, 128 bits)","GpuDesc":"Broadcom VideoCore IV","PointerBits":32,"DataFromSuperUser":true,"Legacy":false},{"MachineId":"Hardkernel_ODROID_C2;Amlogic_(Unknown);6144_00","ExtraInfo":"7.0s, k:6eac709cca51a228bfa70150c9c5a7c4, d:c25cf5c889f7bead2ff39788eedae37b","UserNote":"","BenchmarkVersion":1,"MachineDataVersion":0,"BenchmarkResult":24.755,"ElapsedTime":7.002804,"UsedThreads":4,"Board":"Hardkernel ODROID-C2","MachineType":"Single-board computer","CpuName":"Amlogic (Unknown)","CpuDesc":"1 CPU; 4 cores; 4 threads","NumCpus":1,"NumCores":4,"NumThreads":4,"NumNodes":1,"CpuConfig":"4x 1536.00 MHz","CpuConfigMap":{"1536.00":4},"MemoryInKiB":1978296,"PhysicalMemoryInMiB":0,"MemoryTypes":"RAM","OpenGlRenderer":"","GpuDesc":"arm Mali 450","PointerBits":64,"DataFromSuperUser":true,"Legacy":false},{"MachineId":"Radxa_ROCK_Pi_S;Rockchip_RK33xx_family;5184_00","ExtraInfo":"7.0s, k:6eac709cca51a228bfa70150c9c5a7c4, d:c25cf5c889f7bead2ff39788eedae37b","UserNote":"","BenchmarkVersion":1,"MachineDataVersion":0,"BenchmarkResult":8.32,"ElapsedTime":7.001061,"UsedThreads":4,"Board":"Radxa ROCK Pi S","MachineType":"Unknown physical machine type","CpuName":"Rockchip RK33xx-family","CpuDesc":"1 CPU; 4 cores; 4 threads","NumCpus":1,"NumCores":4,"NumThreads":4,"NumNodes":1,"CpuConfig":"4x 1296.00 MHz","CpuConfigMap":{"1296.00":4},"MemoryInKiB":177872,"PhysicalMemoryInMiB":0,"MemoryTypes":"RAM","OpenGlRenderer":"llvmpipe (LLVM 12.0.0, 128 bits)","GpuDesc":"","PointerBits":64,"DataFromSuperUser":true,"Legacy":false},{"MachineId":"Intel_440BX_Desktop_Reference_Platform_(VMware_VMware_Virtual_Platform);AMD_EPYC_9354P;208001_92","ExtraInfo":"7.0s, k:6eac709cca51a228bfa70150c9c5a7c4, d:c25cf5c889f7bead2ff39788eedae37b","UserNote":"","BenchmarkVersion":1,"MachineDataVersion":0,"BenchmarkResult":1274.82,"ElapsedTime":7.015273,"UsedThreads":64,"Board":"Intel 440BX Desktop Reference Platform (VMware VMware Virtual Platform)","MachineType":"Virtual (VMware)","CpuName":"AMD EPYC 9354P","CpuDesc":"1 CPU; 64 cores; 64 threads","NumCpus":1,"NumCores":64,"NumThreads":64,"NumNodes":1,"CpuConfig":"64x 3250.03 MHz","CpuConfigMap":{"3250.03":64},"MemoryInKiB":32846368,"PhysicalMemoryInMiB":32768,"MemoryTypes":"RAM","OpenGlRenderer":"llvmpipe (LLVM 15.0.7, 256 bits)","GpuDesc":"VMware SVGA II Adapter","PointerBits":64,"DataFromSuperUser":true,"Legacy":false},{"MachineId":"Raspberry_Pi_3_Model_B_Rev_1_2;Broadcom_BCM2837;4800_00","ExtraInfo":"7.0s, k:6eac709cca51a228bfa70150c9c5a7c4, d:c25cf5c889f7bead2ff39788eedae37b","UserNote":"","BenchmarkVersion":1,"MachineDataVersion":0,"BenchmarkResult":10.51,"ElapsedTime":7.000798,"UsedThreads":4,"Board":"Raspberry Pi 3 Model B Rev 1.2","MachineType":"Single-board computer","CpuName":"Broadcom BCM2837","CpuDesc":"1 CPU; 4 cores; 4 threads","NumCpus":1,"NumCores":4,"NumThreads":4,"NumNodes":1,"CpuConfig":"4x 1200.00 MHz","CpuConfigMap":{"1200.00":4},"MemoryInKiB":944480,"PhysicalMemoryInMiB":0,"MemoryTypes":"RAM","OpenGlRenderer":"llvmpipe (LLVM 15.0.6, 128 bits)","GpuDesc":"Broadcom VideoCore IV","PointerBits":32,"DataFromSuperUser":true,"Legacy":false},{"MachineId":"(Unknown);AMD_Ryzen_9_7950X;143997_44","ExtraInfo":"7.0s, k:6eac709cca51a228bfa70150c9c5a7c4, d:c25cf5c889f7bead2ff39788eedae37b","UserNote":"","BenchmarkVersion":1,"MachineDataVersion":0,"BenchmarkResult":865.35,"ElapsedTime":7.003706,"UsedThreads":32,"Board":"(Unknown)","MachineType":"Unknown physical machine type","CpuName":"AMD Ryzen 9 7950X","CpuDesc":"1 CPU; 16 cores; 32 threads","NumCpus":1,"NumCores":16,"NumThreads":32,"NumNodes":1,"CpuConfig":"32x 4499.92 MHz","CpuConfigMap":{"4499.92":32},"MemoryInKiB":32716664,"PhysicalMemoryInMiB":32640,"MemoryTypes":"RAM","OpenGlRenderer":"D3D12 (NVIDIA GeForce RTX 4090)","GpuDesc":"Microsoft Device","PointerBits":64,"DataFromSuperUser":true,"Legacy":false},{"MachineId":"Raspberry_Pi_4_Model_B_Rev_1_2;Broadcom_(Unknown);8000_00","ExtraInfo":"7.0s, k:6eac709cca51a228bfa70150c9c5a7c4, d:c25cf5c889f7bead2ff39788eedae37b","UserNote":"","BenchmarkVersion":1,"MachineDataVersion":0,"BenchmarkResult":21.32,"ElapsedTime":7.000859,"UsedThreads":4,"Board":"Raspberry Pi 4 Model B Rev 1.2","MachineType":"Single-board computer","CpuName":"Broadcom (Unknown)","CpuDesc":"1 CPU; 4 cores; 4 threads","NumCpus":1,"NumCores":4,"NumThreads":4,"NumNodes":1,"CpuConfig":"4x 2000.00 MHz","CpuConfigMap":{"2000.00":4},"MemoryInKiB":3447996,"PhysicalMemoryInMiB":0,"MemoryTypes":"RAM","OpenGlRenderer":"llvmpipe (LLVM 15.0.6, 128 bits)","GpuDesc":"Unknown Device","PointerBits":32,"DataFromSuperUser":true,"Legacy":false}],"CPU Blowfish (Single-thread)":[{"MachineId":"Raspberry_Pi_Model_B_Rev_2;Broadcom_BCM2835;700_00","ExtraInfo":"7,0s, k:6eac709cca51a228bfa70150c9c5a7c4, d:c25cf5c889f7bead2ff39788eedae37b","UserNote":"","BenchmarkVersion":1,"MachineDataVersion":0,"BenchmarkResult":1.06,"ElapsedTime":7.00111,"UsedThreads":1,"Board":"Raspberry Pi Model B Rev 2","MachineType":"Single-board computer","CpuName":"Broadcom BCM2835","CpuDesc":"1 CPU","NumCpus":1,"NumCores":1,"NumThreads":1,"NumNodes":1,"CpuConfig":"1x 700.00 MHz","CpuConfigMap":{"700.00":1},"MemoryInKiB":439196,"PhysicalMemoryInMiB":0,"MemoryTypes":"RAM","OpenGlRenderer":"llvmpipe (LLVM 15.0.6, 128 bits)","GpuDesc":"Broadcom VideoCore IV","PointerBits":32,"DataFromSuperUser":true,"Legacy":false},{"MachineId":"Raspberry_Pi_4_Model_B_Rev_1_2;Broadcom_(Unknown);8000_00","ExtraInfo":"7.0s, k:6eac709cca51a228bfa70150c9c5a7c4, d:c25cf5c889f7bead2ff39788eedae37b","UserNote":"","BenchmarkVersion":1,"MachineDataVersion":0,"BenchmarkResult":5.41,"ElapsedTime":7.000292,"UsedThreads":1,"Board":"Raspberry Pi 4 Model B Rev 1.2","MachineType":"Single-board computer","CpuName":"Broadcom (Unknown)","CpuDesc":"1 CPU; 4 cores; 4 threads","NumCpus":1,"NumCores":4,"NumThreads":4,"NumNodes":1,"CpuConfig":"4x 2000.00 MHz","CpuConfigMap":{"2000.00":4},"MemoryInKiB":3447996,"PhysicalMemoryInMiB":0,"MemoryTypes":"RAM","OpenGlRenderer":"llvmpipe (LLVM 15.0.6, 128 bits)","GpuDesc":"Unknown Device","PointerBits":32,"DataFromSuperUser":true,"Legacy":false},{"MachineId":"Hardkernel_ODROID_C2;Amlogic_(Unknown);6144_00","ExtraInfo":"7.0s, k:6eac709cca51a228bfa70150c9c5a7c4, d:c25cf5c889f7bead2ff39788eedae37b","UserNote":"","BenchmarkVersion":1,"MachineDataVersion":0,"BenchmarkResult":5.2,"ElapsedTime":7.000397,"UsedThreads":1,"Board":"Hardkernel ODROID-C2","MachineType":"Single-board computer","CpuName":"Amlogic (Unknown)","CpuDesc":"1 CPU; 4 cores; 4 threads","NumCpus":1,"NumCores":4,"NumThreads":4,"NumNodes":1,"CpuConfig":"4x 1536.00 MHz","CpuConfigMap":{"1536.00":4},"MemoryInKiB":1978296,"PhysicalMemoryInMiB":0,"MemoryTypes":"RAM","OpenGlRenderer":"","GpuDesc":"arm Mali 450","PointerBits":64,"DataFromSuperUser":true,"Legacy":false},{"MachineId":"(Unknown);AMD_Ryzen_9_7950X;143997_44","ExtraInfo":"7.0s, k:6eac709cca51a228bfa70150c9c5a7c4, d:c25cf5c889f7bead2ff39788eedae37b","UserNote":"","BenchmarkVersion":1,"MachineDataVersion":0,"BenchmarkResult":49.63,"ElapsedTime":7.000147,"UsedThreads":1,"Board":"(Unknown)","MachineType":"Unknown physical machine type","CpuName":"AMD Ryzen 9 7950X","CpuDesc":"1 CPU; 16 cores; 32 threads","NumCpus":1,"NumCores":16,"NumThreads":32,"NumNodes":1,"CpuConfig":"32x 4499.92 MHz","CpuConfigMap":{"4499.92":32},"MemoryInKiB":32716664,"PhysicalMemoryInMiB":32640,"MemoryTypes":"RAM","OpenGlRenderer":"D3D12 (NVIDIA GeForce RTX 4090)","GpuDesc":"Microsoft Device","PointerBits":64,"DataFromSuperUser":true,"Legacy":false},{"MachineId":"Intel_440BX_Desktop_Reference_Platform_(VMware_VMware_Virtual_Platform);AMD_EPYC_9354P;208001_92","ExtraInfo":"7.0s, k:6eac709cca51a228bfa70150c9c5a7c4, d:c25cf5c889f7bead2ff39788eedae37b","UserNote":"","BenchmarkVersion":1,"MachineDataVersion":0,"BenchmarkResult":35.25,"ElapsedTime":7.000194,"UsedThreads":1,"Board":"Intel 440BX Desktop Reference Platform (VMware VMware Virtual Platform)","MachineType":"Virtual (VMware)","CpuName":"AMD EPYC 9354P","CpuDesc":"1 CPU; 64 cores; 64 threads","NumCpus":1,"NumCores":64,"NumThreads":64,"NumNodes":1,"CpuConfig":"64x 3250.03 MHz","CpuConfigMap":{"3250.03":64},"MemoryInKiB":32846368,"PhysicalMemoryInMiB":32768,"MemoryTypes":"RAM","OpenGlRenderer":"llvmpipe (LLVM 15.0.7, 256 bits)","GpuDesc":"VMware SVGA II Adapter","PointerBits":64,"DataFromSuperUser":true,"Legacy":false},{"MachineId":"Radxa_ROCK_Pi_S;Rockchip_RK33xx_family;5184_00","ExtraInfo":"7.0s, k:6eac709cca51a228bfa70150c9c5a7c4, d:c25cf5c889f7bead2ff39788eedae37b","UserNote":"","BenchmarkVersion":1,"MachineDataVersion":0,"BenchmarkResult":2.49,"ElapsedTime":7.000419,"UsedThreads":1,"Board":"Radxa ROCK Pi S","MachineType":"Unknown physical machine type","CpuName":"Rockchip RK33xx-family","CpuDesc":"1 CPU; 4 cores; 4 threads","NumCpus":1,"NumCores":4,"NumThreads":4,"NumNodes":1,"CpuConfig":"4x 1296.00 MHz","CpuConfigMap":{"1296.00":4},"MemoryInKiB":177872,"PhysicalMemoryInMiB":0,"MemoryTypes":"RAM","OpenGlRenderer":"llvmpipe (LLVM 12.0.0, 128 bits)","GpuDesc":"","PointerBits":64,"DataFromSuperUser":true,"Legacy":false},{"MachineId":"Raspberry_Pi_3_Model_B_Rev_1_2;Broadcom_BCM2837;4800_00","ExtraInfo":"7.0s, k:6eac709cca51a228bfa70150c9c5a7c4, d:c25cf5c889f7bead2ff39788eedae37b","UserNote":"","BenchmarkVersion":1,"MachineDataVersion":0,"BenchmarkResult":2.67,"ElapsedTime":7.000362,"UsedThreads":1,"Board":"Raspberry Pi 3 Model B Rev 1.2","MachineType":"Single-board computer","CpuName":"Broadcom BCM2837","CpuDesc":"1 CPU; 4 cores; 4 threads","NumCpus":1,"NumCores":4,"NumThreads":4,"NumNodes":1,"CpuConfig":"4x 1200.00 MHz","CpuConfigMap":{"1200.00":4},"MemoryInKiB":944480,"PhysicalMemoryInMiB":0,"MemoryTypes":"RAM","OpenGlRenderer":"llvmpipe (LLVM 15.0.6, 128 bits)","GpuDesc":"Broadcom VideoCore IV","PointerBits":32,"DataFromSuperUser":true,"Legacy":false}],"CPU CryptoHash":[{"MachineId":"(Unknown);AMD_Ryzen_9_7950X;143997_44","ExtraInfo":"r:250, d:c25cf5c889f7bead2ff39788eedae37b","UserNote":"","BenchmarkVersion":2,"MachineDataVersion":0,"BenchmarkResult":705.5,"ElapsedTime":5.001464,"UsedThreads":32,"Board":"(Unknown)","MachineType":"Unknown physical machine type","CpuName":"AMD Ryzen 9 7950X","CpuDesc":"1 CPU; 16 cores; 32 threads","NumCpus":1,"NumCores":16,"NumThreads":32,"NumNodes":1,"CpuConfig":"32x 4499.92 MHz","CpuConfigMap":{"4499.92":32},"MemoryInKiB":32716664,"PhysicalMemoryInMiB":32640,"MemoryTypes":"RAM","OpenGlRenderer":"D3D12 (NVIDIA GeForce RTX 4090)","GpuDesc":"Microsoft Device","PointerBits":64,"DataFromSuperUser":true,"Legacy":false},{"MachineId":"Raspberry_Pi_3_Model_B_Rev_1_2;Broadcom_BCM2837;4800_00","ExtraInfo":"r:250, d:c25cf5c889f7bead2ff39788eedae37b","UserNote":"","BenchmarkVersion":2,"MachineDataVersion":0,"BenchmarkResult":15.2,"ElapsedTime":5.000745,"UsedThreads":4,"Board":"Raspberry Pi 3 Model B Rev 1.2","MachineType":"Single-board computer","CpuName":"Broadcom BCM2837","CpuDesc":"1 CPU; 4 cores; 4 threads","NumCpus":1,"NumCores":4,"NumThreads":4,"NumNodes":1,"CpuConfig":"4x 1200.00 MHz","CpuConfigMap":{"1200.00":4},"MemoryInKiB":944480,"PhysicalMemoryInMiB":0,"MemoryTypes":"RAM","OpenGlRenderer":"llvmpipe (LLVM 15.0.6, 128 bits)","GpuDesc":"Broadcom VideoCore IV","PointerBits":32,"DataFromSuperUser":true,"Legacy":false},{"MachineId":"Intel_440BX_Desktop_Reference_Platform_(VMware_VMware_Virtual_Platform);AMD_EPYC_9354P;208001_92","ExtraInfo":"r:250, d:c25cf5c889f7bead2ff39788eedae37b","UserNote":"","BenchmarkVersion":2,"MachineDataVersion":0,"BenchmarkResult":1035.9,"ElapsedTime":5.00733,"UsedThreads":64,"Board":"Intel 440BX Desktop Reference Platform (VMware VMware Virtual Platform)","MachineType":"Virtual (VMware)","CpuName":"AMD EPYC 9354P","CpuDesc":"1 CPU; 64 cores; 64 threads","NumCpus":1,"NumCores":64,"NumThreads":64,"NumNodes":1,"CpuConfig":"64x 3250.03 MHz","CpuConfigMap":{"3250.03":64},"MemoryInKiB":32846368,"PhysicalMemoryInMiB":32768,"MemoryTypes":"RAM","OpenGlRenderer":"llvmpipe (LLVM 15.0.7, 256 bits)","GpuDesc":"VMware SVGA II Adapter","PointerBits":64,"DataFromSuperUser":true,"Legacy":false},{"MachineId":"Radxa_ROCK_Pi_S;Rockchip_RK33xx_family;5184_00","ExtraInfo":"r:250, d:c25cf5c889f7bead2ff39788eedae37b","UserNote":"","BenchmarkVersion":2,"MachineDataVersion":0,"BenchmarkResult":2.7,"ElapsedTime":5.000858,"UsedThreads":4,"Board":"Radxa ROCK Pi S","MachineType":"Unknown physical machine type","CpuName":"Rockchip RK33xx-family","CpuDesc":"1 CPU; 4 cores; 4 threads","NumCpus":1,"NumCores":4,"NumThreads":4,"NumNodes":1,"CpuConfig":"4x 1296.00 MHz","CpuConfigMap":{"1296.00":4},"MemoryInKiB":177872,"PhysicalMemoryInMiB":0,"MemoryTypes":"RAM","OpenGlRenderer":"llvmpipe (LLVM 12.0.0, 128 bits)","GpuDesc":"","PointerBits":64,"DataFromSuperUser":true,"Legacy":false},{"MachineId":"Hardkernel_ODROID_C2;Amlogic_(Unknown);6144_00","ExtraInfo":"r:250, d:c25cf5c889f7bead2ff39788eedae37b","UserNote":"","BenchmarkVersion":2,"MachineDataVersion":0,"BenchmarkResult":35.599999999999994,"ElapsedTime":5.000944,"UsedThreads":4,"Board":"Hardkernel ODROID-C2","MachineType":"Single-board computer","CpuName":"Amlogic (Unknown)","CpuDesc":"1 CPU; 4 cores; 4 threads","NumCpus":1,"NumCores":4,"NumThreads":4,"NumNodes":1,"CpuConfig":"4x 1536.00 MHz","CpuConfigMap":{"1536.00":4},"MemoryInKiB":1978296,"PhysicalMemoryInMiB":0,"MemoryTypes":"RAM","OpenGlRenderer":"","GpuDesc":"arm Mali 450","PointerBits":64,"DataFromSuperUser":true,"Legacy":false},{"MachineId":"Raspberry_Pi_4_Model_B_Rev_1_2;Broadcom_(Unknown);8000_00","ExtraInfo":"r:250, d:c25cf5c889f7bead2ff39788eedae37b","UserNote":"","BenchmarkVersion":2,"MachineDataVersion":0,"BenchmarkResult":33.2,"ElapsedTime":5.000758,"UsedThreads":4,"Board":"Raspberry Pi 4 Model B Rev 1.2","MachineType":"Single-board computer","CpuName":"Broadcom (Unknown)","CpuDesc":"1 CPU; 4 cores; 4 threads","NumCpus":1,"NumCores":4,"NumThreads":4,"NumNodes":1,"CpuConfig":"4x 2000.00 MHz","CpuConfigMap":{"2000.00":4},"MemoryInKiB":3447996,"PhysicalMemoryInMiB":0,"MemoryTypes":"RAM","OpenGlRenderer":"llvmpipe (LLVM 15.0.6, 128 bits)","GpuDesc":"Unknown Device","PointerBits":32,"DataFromSuperUser":true,"Legacy":false},{"MachineId":"Raspberry_Pi_Model_B_Rev_2;Broadcom_BCM2835;700_00","ExtraInfo":"r:250, d:c25cf5c889f7bead2ff39788eedae37b","UserNote":"","BenchmarkVersion":2,"MachineDataVersion":0,"BenchmarkResult":1.1,"ElapsedTime":5.006308,"UsedThreads":1,"Board":"Raspberry Pi Model B Rev 2","MachineType":"Single-board computer","CpuName":"Broadcom BCM2835","CpuDesc":"1 CPU","NumCpus":1,"NumCores":1,"NumThreads":1,"NumNodes":1,"CpuConfig":"1x 700.00 MHz","CpuConfigMap":{"700.00":1},"MemoryInKiB":439196,"PhysicalMemoryInMiB":0,"MemoryTypes":"RAM","OpenGlRenderer":"llvmpipe (LLVM 15.0.6, 128 bits)","GpuDesc":"Broadcom VideoCore IV","PointerBits":32,"DataFromSuperUser":true,"Legacy":false}],"CPU Fibonacci":[{"MachineId":"Radxa_ROCK_Pi_S;Rockchip_RK33xx_family;5184_00","ExtraInfo":"a:25","UserNote":"","BenchmarkVersion":2,"MachineDataVersion":0,"BenchmarkResult":55.11,"ElapsedTime":5.000748,"UsedThreads":4,"Board":"Radxa ROCK Pi S","MachineType":"Unknown physical machine type","CpuName":"Rockchip RK33xx-family","CpuDesc":"1 CPU; 4 cores; 4 threads","NumCpus":1,"NumCores":4,"NumThreads":4,"NumNodes":1,"CpuConfig":"4x 1296.00 MHz","CpuConfigMap":{"1296.00":4},"MemoryInKiB":177872,"PhysicalMemoryInMiB":0,"MemoryTypes":"RAM","OpenGlRenderer":"llvmpipe (LLVM 12.0.0, 128 bits)","GpuDesc":"","PointerBits":64,"DataFromSuperUser":true,"Legacy":false},{"MachineId":"Raspberry_Pi_Model_B_Rev_2;Broadcom_BCM2835;700_00","ExtraInfo":"a:25","UserNote":"","BenchmarkVersion":2,"MachineDataVersion":0,"BenchmarkResult":6.62,"ElapsedTime":5.000991,"UsedThreads":1,"Board":"Raspberry Pi Model B Rev 2","MachineType":"Single-board computer","CpuName":"Broadcom BCM2835","CpuDesc":"1 CPU","NumCpus":1,"NumCores":1,"NumThreads":1,"NumNodes":1,"CpuConfig":"1x 700.00 MHz","CpuConfigMap":{"700.00":1},"MemoryInKiB":439196,"PhysicalMemoryInMiB":0,"MemoryTypes":"RAM","OpenGlRenderer":"llvmpipe (LLVM 15.0.6, 128 bits)","GpuDesc":"Broadcom VideoCore IV","PointerBits":32,"DataFromSuperUser":true,"Legacy":false},{"MachineId":"(Unknown);AMD_Ryzen_9_7950X;143997_44","ExtraInfo":"a:25","UserNote":"","BenchmarkVersion":2,"MachineDataVersion":0,"BenchmarkResult":5418.79,"ElapsedTime":5.001437,"UsedThreads":32,"Board":"(Unknown)","MachineType":"Unknown physical machine type","CpuName":"AMD Ryzen 9 7950X","CpuDesc":"1 CPU; 16 cores; 32 threads","NumCpus":1,"NumCores":16,"NumThreads":32,"NumNodes":1,"CpuConfig":"32x 4499.92 MHz","CpuConfigMap":{"4499.92":32},"MemoryInKiB":32716664,"PhysicalMemoryInMiB":32640,"MemoryTypes":"RAM","OpenGlRenderer":"D3D12 (NVIDIA GeForce RTX 4090)","GpuDesc":"Microsoft Device","PointerBits":64,"DataFromSuperUser":true,"Legacy":false},{"MachineId":"Raspberry_Pi_3_Model_B_Rev_1_2;Broadcom_BCM2837;4800_00","ExtraInfo":"a:25","UserNote":"","BenchmarkVersion":2,"MachineDataVersion":0,"BenchmarkResult":57.06,"ElapsedTime":5.000851,"UsedThreads":4,"Board":"Raspberry Pi 3 Model B Rev 1.2","MachineType":"Single-board computer","CpuName":"Broadcom BCM2837","CpuDesc":"1 CPU; 4 cores; 4 threads","NumCpus":1,"NumCores":4,"NumThreads":4,"NumNodes":1,"CpuConfig":"4x 1200.00 MHz","CpuConfigMap":{"1200.00":4},"MemoryInKiB":944480,"PhysicalMemoryInMiB":0,"MemoryTypes":"RAM","OpenGlRenderer":"llvmpipe (LLVM 15.0.6, 128 bits)","GpuDesc":"Broadcom VideoCore IV","PointerBits":32,"DataFromSuperUser":true,"Legacy":false},{"MachineId":"Intel_440BX_Desktop_Reference_Platform_(VMware_VMware_Virtual_Platform);AMD_EPYC_9354P;208001_92","ExtraInfo":"a:25","UserNote":"","BenchmarkVersion":2,"MachineDataVersion":0,"BenchmarkResult":8282.39,"ElapsedTime":5.004962,"UsedThreads":64,"Board":"Intel 440BX Desktop Reference Platform (VMware VMware Virtual Platform)","MachineType":"Virtual (VMware)","CpuName":"AMD EPYC 9354P","CpuDesc":"1 CPU; 64 cores; 64 threads","NumCpus":1,"NumCores":64,"NumThreads":64,"NumNodes":1,"CpuConfig":"64x 3250.03 MHz","CpuConfigMap":{"3250.03":64},"MemoryInKiB":32846368,"PhysicalMemoryInMiB":32768,"MemoryTypes":"RAM","OpenGlRenderer":"llvmpipe (LLVM 15.0.7, 256 bits)","GpuDesc":"VMware SVGA II Adapter","PointerBits":64,"DataFromSuperUser":true,"Legacy":false},{"MachineId":"Raspberry_Pi_4_Model_B_Rev_1_2;Broadcom_(Unknown);8000_00","ExtraInfo":"a:25","UserNote":"","BenchmarkVersion":2,"MachineDataVersion":0,"BenchmarkResult":200.51,"ElapsedTime":5.000704,"UsedThreads":4,"Board":"Raspberry Pi 4 Model B Rev 1.2","MachineType":"Single-board computer","CpuName":"Broadcom (Unknown)","CpuDesc":"1 CPU; 4 cores; 4 threads","NumCpus":1,"NumCores":4,"NumThreads":4,"NumNodes":1,"CpuConfig":"4x 2000.00 MHz","CpuConfigMap":{"2000.00":4},"MemoryInKiB":3447996,"PhysicalMemoryInMiB":0,"MemoryTypes":"RAM","OpenGlRenderer":"llvmpipe (LLVM 15.0.6, 128 bits)","GpuDesc":"Unknown Device","PointerBits":32,"DataFromSuperUser":true,"Legacy":false},{"MachineId":"Hardkernel_ODROID_C2;Amlogic_(Unknown);6144_00","ExtraInfo":"a:25","UserNote":"","BenchmarkVersion":2,"MachineDataVersion":0,"BenchmarkResult":197.505,"ElapsedTime":5.000919,"UsedThreads":4,"Board":"Hardkernel ODROID-C2","MachineType":"Single-board computer","CpuName":"Amlogic (Unknown)","CpuDesc":"1 CPU; 4 cores; 4 threads","NumCpus":1,"NumCores":4,"NumThreads":4,"NumNodes":1,"CpuConfig":"4x 1536.00 MHz","CpuConfigMap":{"1536.00":4},"MemoryInKiB":1978296,"PhysicalMemoryInMiB":0,"MemoryTypes":"RAM","OpenGlRenderer":"","GpuDesc":"arm Mali 450","PointerBits":64,"DataFromSuperUser":true,"Legacy":false}],"CPU N-Queens":[{"MachineId":"Raspberry_Pi_4_Model_B_Rev_1_2;Broadcom_(Unknown);8000_00","ExtraInfo":"q:6","UserNote":"","BenchmarkVersion":2,"MachineDataVersion":0,"BenchmarkResult":946.68,"ElapsedTime":5.000675,"UsedThreads":4,"Board":"Raspberry Pi 4 Model B Rev 1.2","MachineType":"Single-board computer","CpuName":"Broadcom (Unknown)","CpuDesc":"1 CPU; 4 cores; 4 threads","NumCpus":1,"NumCores":4,"NumThreads":4,"NumNodes":1,"CpuConfig":"4x 2000.00 MHz","CpuConfigMap":{"2000.00":4},"MemoryInKiB":3447996,"PhysicalMemoryInMiB":0,"MemoryTypes":"RAM","OpenGlRenderer":"llvmpipe (LLVM 15.0.6, 128 bits)","GpuDesc":"Unknown Device","PointerBits":32,"DataFromSuperUser":true,"Legacy":false},{"MachineId":"Raspberry_Pi_Model_B_Rev_2;Broadcom_BCM2835;700_00","ExtraInfo":"q:6","UserNote":"","BenchmarkVersion":2,"MachineDataVersion":0,"BenchmarkResult":126,"ElapsedTime":5.000942,"UsedThreads":1,"Board":"Raspberry Pi Model B Rev 2","MachineType":"Single-board computer","CpuName":"Broadcom BCM2835","CpuDesc":"1 CPU","NumCpus":1,"NumCores":1,"NumThreads":1,"NumNodes":1,"CpuConfig":"1x 700.00 MHz","CpuConfigMap":{"700.00":1},"MemoryInKiB":439196,"PhysicalMemoryInMiB":0,"MemoryTypes":"RAM","OpenGlRenderer":"llvmpipe (LLVM 15.0.6, 128 bits)","GpuDesc":"Broadcom VideoCore IV","PointerBits":32,"DataFromSuperUser":true,"Legacy":false},{"MachineId":"Raspberry_Pi_3_Model_B_Rev_1_2;Broadcom_BCM2837;4800_00","ExtraInfo":"q:6","UserNote":"","BenchmarkVersion":2,"MachineDataVersion":0,"BenchmarkResult":633.52,"ElapsedTime":5.000678,"UsedThreads":4,"Board":"Raspberry Pi 3 Model B Rev 1.2","MachineType":"Single-board computer","CpuName":"Broadcom BCM2837","CpuDesc":"1 CPU; 4 cores; 4 threads","NumCpus":1,"NumCores":4,"NumThreads":4,"NumNodes":1,"CpuConfig":"4x 1200.00 MHz","CpuConfigMap":{"1200.00":4},"MemoryInKiB":944480,"PhysicalMemoryInMiB":0,"MemoryTypes":"RAM","OpenGlRenderer":"llvmpipe (LLVM 15.0.6, 128 bits)","GpuDesc":"Broadcom VideoCore IV","PointerBits":32,"DataFromSuperUser":true,"Legacy":false},{"MachineId":"Hardkernel_ODROID_C2;Amlogic_(Unknown);6144_00","ExtraInfo":"q:6","UserNote":"","BenchmarkVersion":2,"MachineDataVersion":0,"BenchmarkResult":1175.3600000000001,"ElapsedTime":5.000947,"UsedThreads":4,"Board":"Hardkernel ODROID-C2","MachineType":"Single-board computer","CpuName":"Amlogic (Unknown)","CpuDesc":"1 CPU; 4 cores; 4 threads","NumCpus":1,"NumCores":4,"NumThreads":4,"NumNodes":1,"CpuConfig":"4x 1536.00 MHz","CpuConfigMap":{"1536.00":4},"MemoryInKiB":1978296,"PhysicalMemoryInMiB":0,"MemoryTypes":"RAM","OpenGlRenderer":"","GpuDesc":"arm Mali 450","PointerBits":64,"DataFromSuperUser":true,"Legacy":false},{"MachineId":"Intel_440BX_Desktop_Reference_Platform_(VMware_VMware_Virtual_Platform);AMD_EPYC_9354P;208001_92","ExtraInfo":"q:6","UserNote":"","BenchmarkVersion":2,"MachineDataVersion":0,"BenchmarkResult":1427.56,"ElapsedTime":5.00801,"UsedThreads":64,"Board":"Intel 440BX Desktop Reference Platform (VMware VMware Virtual Platform)","MachineType":"Virtual (VMware)","CpuName":"AMD EPYC 9354P","CpuDesc":"1 CPU; 64 cores; 64 threads","NumCpus":1,"NumCores":64,"NumThreads":64,"NumNodes":1,"CpuConfig":"64x 3250.03 MHz","CpuConfigMap":{"3250.03":64},"MemoryInKiB":32846368,"PhysicalMemoryInMiB":32768,"MemoryTypes":"RAM","OpenGlRenderer":"llvmpipe (LLVM 15.0.7, 256 bits)","GpuDesc":"VMware SVGA II Adapter","PointerBits":64,"DataFromSuperUser":true,"Legacy":false},{"MachineId":"Radxa_ROCK_Pi_S;Rockchip_RK33xx_family;5184_00","ExtraInfo":"q:6","UserNote":"","BenchmarkVersion":2,"MachineDataVersion":0,"BenchmarkResult":667.36,"ElapsedTime":5.000801,"UsedThreads":4,"Board":"Radxa ROCK Pi S","MachineType":"Unknown physical machine type","CpuName":"Rockchip RK33xx-family","CpuDesc":"1 CPU; 4 cores; 4 threads","NumCpus":1,"NumCores":4,"NumThreads":4,"NumNodes":1,"CpuConfig":"4x 1296.00 MHz","CpuConfigMap":{"1296.00":4},"MemoryInKiB":177872,"PhysicalMemoryInMiB":0,"MemoryTypes":"RAM","OpenGlRenderer":"llvmpipe (LLVM 12.0.0, 128 bits)","GpuDesc":"","PointerBits":64,"DataFromSuperUser":true,"Legacy":false},{"MachineId":"(Unknown);AMD_Ryzen_9_7950X;143997_44","ExtraInfo":"q:6","UserNote":"","BenchmarkVersion":2,"MachineDataVersion":0,"BenchmarkResult":1547.68,"ElapsedTime":5.001441,"UsedThreads":32,"Board":"(Unknown)","MachineType":"Unknown physical machine type","CpuName":"AMD Ryzen 9 7950X","CpuDesc":"1 CPU; 16 cores; 32 threads","NumCpus":1,"NumCores":16,"NumThreads":32,"NumNodes":1,"CpuConfig":"32x 4499.92 MHz","CpuConfigMap":{"4499.92":32},"MemoryInKiB":32716664,"PhysicalMemoryInMiB":32640,"MemoryTypes":"RAM","OpenGlRenderer":"D3D12 (NVIDIA GeForce RTX 4090)","GpuDesc":"Microsoft Device","PointerBits":64,"DataFromSuperUser":true,"Legacy":false}],"CPU Zlib":[{"MachineId":"Raspberry_Pi_3_Model_B_Rev_1_2;Broadcom_BCM2837;4800_00","ExtraInfo":"zlib 1.2.13 (built against: 1.2.13), d:3753b649c4fa9ea4576fc8f89a773de2, e:0","UserNote":"","BenchmarkVersion":3,"MachineDataVersion":0,"BenchmarkResult":5.44,"ElapsedTime":7.000974,"UsedThreads":4,"Board":"Raspberry Pi 3 Model B Rev 1.2","MachineType":"Single-board computer","CpuName":"Broadcom BCM2837","CpuDesc":"1 CPU; 4 cores; 4 threads","NumCpus":1,"NumCores":4,"NumThreads":4,"NumNodes":1,"CpuConfig":"4x 1200.00 MHz","CpuConfigMap":{"1200.00":4},"MemoryInKiB":944480,"PhysicalMemoryInMiB":0,"MemoryTypes":"RAM","OpenGlRenderer":"llvmpipe (LLVM 15.0.6, 128 bits)","GpuDesc":"Broadcom VideoCore IV","PointerBits":32,"DataFromSuperUser":true,"Legacy":false},{"MachineId":"(Unknown);AMD_Ryzen_9_7950X;143997_44","ExtraInfo":"zlib 1.2.11 (built against: 1.2.11), d:3753b649c4fa9ea4576fc8f89a773de2, e:0","UserNote":"","BenchmarkVersion":3,"MachineDataVersion":0,"BenchmarkResult":459.52,"ElapsedTime":7.010488,"UsedThreads":32,"Board":"(Unknown)","MachineType":"Unknown physical machine type","CpuName":"AMD Ryzen 9 7950X","CpuDesc":"1 CPU; 16 cores; 32 threads","NumCpus":1,"NumCores":16,"NumThreads":32,"NumNodes":1,"CpuConfig":"32x 4499.92 MHz","CpuConfigMap":{"4499.92":32},"MemoryInKiB":32716664,"PhysicalMemoryInMiB":32640,"MemoryTypes":"RAM","OpenGlRenderer":"D3D12 (NVIDIA GeForce RTX 4090)","GpuDesc":"Microsoft Device","PointerBits":64,"DataFromSuperUser":true,"Legacy":false},{"MachineId":"Raspberry_Pi_Model_B_Rev_2;Broadcom_BCM2835;700_00","ExtraInfo":"zlib 1.2.13 (built against: 1.2.13), d:3753b649c4fa9ea4576fc8f89a773de2, e:0","UserNote":"","BenchmarkVersion":3,"MachineDataVersion":0,"BenchmarkResult":0.45,"ElapsedTime":7.000957,"UsedThreads":1,"Board":"Raspberry Pi Model B Rev 2","MachineType":"Single-board computer","CpuName":"Broadcom BCM2835","CpuDesc":"1 CPU","NumCpus":1,"NumCores":1,"NumThreads":1,"NumNodes":1,"CpuConfig":"1x 700.00 MHz","CpuConfigMap":{"700.00":1},"MemoryInKiB":439196,"PhysicalMemoryInMiB":0,"MemoryTypes":"RAM","OpenGlRenderer":"llvmpipe (LLVM 15.0.6, 128 bits)","GpuDesc":"Broadcom VideoCore IV","PointerBits":32,"DataFromSuperUser":true,"Legacy":false},{"MachineId":"Radxa_ROCK_Pi_S;Rockchip_RK33xx_family;5184_00","ExtraInfo":"zlib 1.2.11 (built against: 1.2.11), d:3753b649c4fa9ea4576fc8f89a773de2, e:0","UserNote":"","BenchmarkVersion":3,"MachineDataVersion":0,"BenchmarkResult":2.84,"ElapsedTime":7.000853,"UsedThreads":4,"Board":"Radxa ROCK Pi S","MachineType":"Unknown physical machine type","CpuName":"Rockchip RK33xx-family","CpuDesc":"1 CPU; 4 cores; 4 threads","NumCpus":1,"NumCores":4,"NumThreads":4,"NumNodes":1,"CpuConfig":"4x 1296.00 MHz","CpuConfigMap":{"1296.00":4},"MemoryInKiB":177872,"PhysicalMemoryInMiB":0,"MemoryTypes":"RAM","OpenGlRenderer":"llvmpipe (LLVM 12.0.0, 128 bits)","GpuDesc":"","PointerBits":64,"DataFromSuperUser":true,"Legacy":false},{"MachineId":"Hardkernel_ODROID_C2;Amlogic_(Unknown);6144_00","ExtraInfo":"zlib 1.2.13 (built against: 1.2.13), d:3753b649c4fa9ea4576fc8f89a773de2, e:0","UserNote":"","BenchmarkVersion":3,"MachineDataVersion":0,"BenchmarkResult":15.559999999999999,"ElapsedTime":7.000961,"UsedThreads":4,"Board":"Hardkernel ODROID-C2","MachineType":"Single-board computer","CpuName":"Amlogic (Unknown)","CpuDesc":"1 CPU; 4 cores; 4 threads","NumCpus":1,"NumCores":4,"NumThreads":4,"NumNodes":1,"CpuConfig":"4x 1536.00 MHz","CpuConfigMap":{"1536.00":4},"MemoryInKiB":1978296,"PhysicalMemoryInMiB":0,"MemoryTypes":"RAM","OpenGlRenderer":"","GpuDesc":"arm Mali 450","PointerBits":64,"DataFromSuperUser":true,"Legacy":false},{"MachineId":"Raspberry_Pi_4_Model_B_Rev_1_2;Broadcom_(Unknown);8000_00","ExtraInfo":"zlib 1.2.13 (built against: 1.2.13), d:3753b649c4fa9ea4576fc8f89a773de2, e:0","UserNote":"","BenchmarkVersion":3,"MachineDataVersion":0,"BenchmarkResult":15.56,"ElapsedTime":7.000986,"UsedThreads":4,"Board":"Raspberry Pi 4 Model B Rev 1.2","MachineType":"Single-board computer","CpuName":"Broadcom (Unknown)","CpuDesc":"1 CPU; 4 cores; 4 threads","NumCpus":1,"NumCores":4,"NumThreads":4,"NumNodes":1,"CpuConfig":"4x 2000.00 MHz","CpuConfigMap":{"2000.00":4},"MemoryInKiB":3447996,"PhysicalMemoryInMiB":0,"MemoryTypes":"RAM","OpenGlRenderer":"llvmpipe (LLVM 15.0.6, 128 bits)","GpuDesc":"Unknown Device","PointerBits":32,"DataFromSuperUser":true,"Legacy":false},{"MachineId":"Intel_440BX_Desktop_Reference_Platform_(VMware_VMware_Virtual_Platform);AMD_EPYC_9354P;208001_92","ExtraInfo":"zlib 1.2.11 (built against: 1.2.11), d:3753b649c4fa9ea4576fc8f89a773de2, e:0","UserNote":"","BenchmarkVersion":3,"MachineDataVersion":0,"BenchmarkResult":648.59,"ElapsedTime":7.027805,"UsedThreads":64,"Board":"Intel 440BX Desktop Reference Platform (VMware VMware Virtual Platform)","MachineType":"Virtual (VMware)","CpuName":"AMD EPYC 9354P","CpuDesc":"1 CPU; 64 cores; 64 threads","NumCpus":1,"NumCores":64,"NumThreads":64,"NumNodes":1,"CpuConfig":"64x 3250.03 MHz","CpuConfigMap":{"3250.03":64},"MemoryInKiB":32846368,"PhysicalMemoryInMiB":32768,"MemoryTypes":"RAM","OpenGlRenderer":"llvmpipe (LLVM 15.0.7, 256 bits)","GpuDesc":"VMware SVGA II Adapter","PointerBits":64,"DataFromSuperUser":true,"Legacy":false}],"FPU FFT":[{"MachineId":"Raspberry_Pi_Model_B_Rev_2;Broadcom_BCM2835;700_00","ExtraInfo":"","UserNote":"","BenchmarkVersion":2,"MachineDataVersion":0,"BenchmarkResult":0.85,"ElapsedTime":5.000905,"UsedThreads":1,"Board":"Raspberry Pi Model B Rev 2","MachineType":"Single-board computer","CpuName":"Broadcom BCM2835","CpuDesc":"1 CPU","NumCpus":1,"NumCores":1,"NumThreads":1,"NumNodes":1,"CpuConfig":"1x 700.00 MHz","CpuConfigMap":{"700.00":1},"MemoryInKiB":439196,"PhysicalMemoryInMiB":0,"MemoryTypes":"RAM","OpenGlRenderer":"llvmpipe (LLVM 15.0.6, 128 bits)","GpuDesc":"Broadcom VideoCore IV","PointerBits":32,"DataFromSuperUser":true,"Legacy":false},{"MachineId":"Hardkernel_ODROID_C2;Amlogic_(Unknown);6144_00","ExtraInfo":"","UserNote":"","BenchmarkVersion":2,"MachineDataVersion":0,"BenchmarkResult":33.485,"ElapsedTime":5.000856,"UsedThreads":4,"Board":"Hardkernel ODROID-C2","MachineType":"Single-board computer","CpuName":"Amlogic (Unknown)","CpuDesc":"1 CPU; 4 cores; 4 threads","NumCpus":1,"NumCores":4,"NumThreads":4,"NumNodes":1,"CpuConfig":"4x 1536.00 MHz","CpuConfigMap":{"1536.00":4},"MemoryInKiB":1978296,"PhysicalMemoryInMiB":0,"MemoryTypes":"RAM","OpenGlRenderer":"","GpuDesc":"arm Mali 450","PointerBits":64,"DataFromSuperUser":true,"Legacy":false},{"MachineId":"(Unknown);AMD_Ryzen_9_7950X;143997_44","ExtraInfo":"","UserNote":"","BenchmarkVersion":2,"MachineDataVersion":0,"BenchmarkResult":1185.79,"ElapsedTime":5.001676,"UsedThreads":32,"Board":"(Unknown)","MachineType":"Unknown physical machine type","CpuName":"AMD Ryzen 9 7950X","CpuDesc":"1 CPU; 16 cores; 32 threads","NumCpus":1,"NumCores":16,"NumThreads":32,"NumNodes":1,"CpuConfig":"32x 4499.92 MHz","CpuConfigMap":{"4499.92":32},"MemoryInKiB":32716664,"PhysicalMemoryInMiB":32640,"MemoryTypes":"RAM","OpenGlRenderer":"D3D12 (NVIDIA GeForce RTX 4090)","GpuDesc":"Microsoft Device","PointerBits":64,"DataFromSuperUser":true,"Legacy":false},{"MachineId":"Raspberry_Pi_4_Model_B_Rev_1_2;Broadcom_(Unknown);8000_00","ExtraInfo":"","UserNote":"","BenchmarkVersion":2,"MachineDataVersion":0,"BenchmarkResult":43.18,"ElapsedTime":5.000755,"UsedThreads":4,"Board":"Raspberry Pi 4 Model B Rev 1.2","MachineType":"Single-board computer","CpuName":"Broadcom (Unknown)","CpuDesc":"1 CPU; 4 cores; 4 threads","NumCpus":1,"NumCores":4,"NumThreads":4,"NumNodes":1,"CpuConfig":"4x 2000.00 MHz","CpuConfigMap":{"2000.00":4},"MemoryInKiB":3447996,"PhysicalMemoryInMiB":0,"MemoryTypes":"RAM","OpenGlRenderer":"llvmpipe (LLVM 15.0.6, 128 bits)","GpuDesc":"Unknown Device","PointerBits":32,"DataFromSuperUser":true,"Legacy":false},{"MachineId":"Intel_440BX_Desktop_Reference_Platform_(VMware_VMware_Virtual_Platform);AMD_EPYC_9354P;208001_92","ExtraInfo":"","UserNote":"","BenchmarkVersion":2,"MachineDataVersion":0,"BenchmarkResult":1806.92,"ElapsedTime":5.013553,"UsedThreads":64,"Board":"Intel 440BX Desktop Reference Platform (VMware VMware Virtual Platform)","MachineType":"Virtual (VMware)","CpuName":"AMD EPYC 9354P","CpuDesc":"1 CPU; 64 cores; 64 threads","NumCpus":1,"NumCores":64,"NumThreads":64,"NumNodes":1,"CpuConfig":"64x 3250.03 MHz","CpuConfigMap":{"3250.03":64},"MemoryInKiB":32846368,"PhysicalMemoryInMiB":32768,"MemoryTypes":"RAM","OpenGlRenderer":"llvmpipe (LLVM 15.0.7, 256 bits)","GpuDesc":"VMware SVGA II Adapter","PointerBits":64,"DataFromSuperUser":true,"Legacy":false},{"MachineId":"Radxa_ROCK_Pi_S;Rockchip_RK33xx_family;5184_00","ExtraInfo":"","UserNote":"","BenchmarkVersion":2,"MachineDataVersion":0,"BenchmarkResult":6.82,"ElapsedTime":5.000792,"UsedThreads":4,"Board":"Radxa ROCK Pi S","MachineType":"Unknown physical machine type","CpuName":"Rockchip RK33xx-family","CpuDesc":"1 CPU; 4 cores; 4 threads","NumCpus":1,"NumCores":4,"NumThreads":4,"NumNodes":1,"CpuConfig":"4x 1296.00 MHz","CpuConfigMap":{"1296.00":4},"MemoryInKiB":177872,"PhysicalMemoryInMiB":0,"MemoryTypes":"RAM","OpenGlRenderer":"llvmpipe (LLVM 12.0.0, 128 bits)","GpuDesc":"","PointerBits":64,"DataFromSuperUser":true,"Legacy":false},{"MachineId":"Raspberry_Pi_3_Model_B_Rev_1_2;Broadcom_BCM2837;4800_00","ExtraInfo":"","UserNote":"","BenchmarkVersion":2,"MachineDataVersion":0,"BenchmarkResult":8.93,"ElapsedTime":5.00077,"UsedThreads":4,"Board":"Raspberry Pi 3 Model B Rev 1.2","MachineType":"Single-board computer","CpuName":"Broadcom BCM2837","CpuDesc":"1 CPU; 4 cores; 4 threads","NumCpus":1,"NumCores":4,"NumThreads":4,"NumNodes":1,"CpuConfig":"4x 1200.00 MHz","CpuConfigMap":{"1200.00":4},"MemoryInKiB":944480,"PhysicalMemoryInMiB":0,"MemoryTypes":"RAM","OpenGlRenderer":"llvmpipe (LLVM 15.0.6, 128 bits)","GpuDesc":"Broadcom VideoCore IV","PointerBits":32,"DataFromSuperUser":true,"Legacy":false}],"FPU Raytracing (Single-thread)":[{"MachineId":"Radxa_ROCK_Pi_S;Rockchip_RK33xx_family;5184_00","ExtraInfo":"r:500","UserNote":"","BenchmarkVersion":2,"MachineDataVersion":0,"BenchmarkResult":134.4,"ElapsedTime":5.000584,"UsedThreads":1,"Board":"Radxa ROCK Pi S","MachineType":"Unknown physical machine type","CpuName":"Rockchip RK33xx-family","CpuDesc":"1 CPU; 4 cores; 4 threads","NumCpus":1,"NumCores":4,"NumThreads":4,"NumNodes":1,"CpuConfig":"4x 1296.00 MHz","CpuConfigMap":{"1296.00":4},"MemoryInKiB":177872,"PhysicalMemoryInMiB":0,"MemoryTypes":"RAM","OpenGlRenderer":"llvmpipe (LLVM 12.0.0, 128 bits)","GpuDesc":"","PointerBits":64,"DataFromSuperUser":true,"Legacy":false},{"MachineId":"Raspberry_Pi_Model_B_Rev_2;Broadcom_BCM2835;700_00","ExtraInfo":"r:500","UserNote":"","BenchmarkVersion":2,"MachineDataVersion":0,"BenchmarkResult":47.5,"ElapsedTime":5.000881,"UsedThreads":1,"Board":"Raspberry Pi Model B Rev 2","MachineType":"Single-board computer","CpuName":"Broadcom BCM2835","CpuDesc":"1 CPU","NumCpus":1,"NumCores":1,"NumThreads":1,"NumNodes":1,"CpuConfig":"1x 700.00 MHz","CpuConfigMap":{"700.00":1},"MemoryInKiB":439196,"PhysicalMemoryInMiB":0,"MemoryTypes":"RAM","OpenGlRenderer":"llvmpipe (LLVM 15.0.6, 128 bits)","GpuDesc":"Broadcom VideoCore IV","PointerBits":32,"DataFromSuperUser":true,"Legacy":false},{"MachineId":"(Unknown);AMD_Ryzen_9_7950X;143997_44","ExtraInfo":"r:500","UserNote":"","BenchmarkVersion":2,"MachineDataVersion":0,"BenchmarkResult":3218.8,"ElapsedTime":5.000118,"UsedThreads":1,"Board":"(Unknown)","MachineType":"Unknown physical machine type","CpuName":"AMD Ryzen 9 7950X","CpuDesc":"1 CPU; 16 cores; 32 threads","NumCpus":1,"NumCores":16,"NumThreads":32,"NumNodes":1,"CpuConfig":"32x 4499.92 MHz","CpuConfigMap":{"4499.92":32},"MemoryInKiB":32716664,"PhysicalMemoryInMiB":32640,"MemoryTypes":"RAM","OpenGlRenderer":"D3D12 (NVIDIA GeForce RTX 4090)","GpuDesc":"Microsoft Device","PointerBits":64,"DataFromSuperUser":true,"Legacy":false},{"MachineId":"Intel_440BX_Desktop_Reference_Platform_(VMware_VMware_Virtual_Platform);AMD_EPYC_9354P;208001_92","ExtraInfo":"r:500","UserNote":"","BenchmarkVersion":2,"MachineDataVersion":0,"BenchmarkResult":2385.7,"ElapsedTime":5.000289,"UsedThreads":1,"Board":"Intel 440BX Desktop Reference Platform (VMware VMware Virtual Platform)","MachineType":"Virtual (VMware)","CpuName":"AMD EPYC 9354P","CpuDesc":"1 CPU; 64 cores; 64 threads","NumCpus":1,"NumCores":64,"NumThreads":64,"NumNodes":1,"CpuConfig":"64x 3250.03 MHz","CpuConfigMap":{"3250.03":64},"MemoryInKiB":32846368,"PhysicalMemoryInMiB":32768,"MemoryTypes":"RAM","OpenGlRenderer":"llvmpipe (LLVM 15.0.7, 256 bits)","GpuDesc":"VMware SVGA II Adapter","PointerBits":64,"DataFromSuperUser":true,"Legacy":false},{"MachineId":"Raspberry_Pi_3_Model_B_Rev_1_2;Broadcom_BCM2837;4800_00","ExtraInfo":"r:500","UserNote":"","BenchmarkVersion":2,"MachineDataVersion":0,"BenchmarkResult":125.9,"ElapsedTime":5.00032,"UsedThreads":1,"Board":"Raspberry Pi 3 Model B Rev 1.2","MachineType":"Single-board computer","CpuName":"Broadcom BCM2837","CpuDesc":"1 CPU; 4 cores; 4 threads","NumCpus":1,"NumCores":4,"NumThreads":4,"NumNodes":1,"CpuConfig":"4x 1200.00 MHz","CpuConfigMap":{"1200.00":4},"MemoryInKiB":944480,"PhysicalMemoryInMiB":0,"MemoryTypes":"RAM","OpenGlRenderer":"llvmpipe (LLVM 15.0.6, 128 bits)","GpuDesc":"Broadcom VideoCore IV","PointerBits":32,"DataFromSuperUser":true,"Legacy":false},{"MachineId":"Raspberry_Pi_4_Model_B_Rev_1_2;Broadcom_(Unknown);8000_00","ExtraInfo":"r:500","UserNote":"","BenchmarkVersion":2,"MachineDataVersion":0,"BenchmarkResult":540,"ElapsedTime":5.00027,"UsedThreads":1,"Board":"Raspberry Pi 4 Model B Rev 1.2","MachineType":"Single-board computer","CpuName":"Broadcom (Unknown)","CpuDesc":"1 CPU; 4 cores; 4 threads","NumCpus":1,"NumCores":4,"NumThreads":4,"NumNodes":1,"CpuConfig":"4x 2000.00 MHz","CpuConfigMap":{"2000.00":4},"MemoryInKiB":3447996,"PhysicalMemoryInMiB":0,"MemoryTypes":"RAM","OpenGlRenderer":"llvmpipe (LLVM 15.0.6, 128 bits)","GpuDesc":"Unknown Device","PointerBits":32,"DataFromSuperUser":true,"Legacy":false},{"MachineId":"Hardkernel_ODROID_C2;Amlogic_(Unknown);6144_00","ExtraInfo":"r:500","UserNote":"","BenchmarkVersion":2,"MachineDataVersion":0,"BenchmarkResult":467.54999999999995,"ElapsedTime":5.00037,"UsedThreads":1,"Board":"Hardkernel ODROID-C2","MachineType":"Single-board computer","CpuName":"Amlogic (Unknown)","CpuDesc":"1 CPU; 4 cores; 4 threads","NumCpus":1,"NumCores":4,"NumThreads":4,"NumNodes":1,"CpuConfig":"4x 1536.00 MHz","CpuConfigMap":{"1536.00":4},"MemoryInKiB":1978296,"PhysicalMemoryInMiB":0,"MemoryTypes":"RAM","OpenGlRenderer":"","GpuDesc":"arm Mali 450","PointerBits":64,"DataFromSuperUser":true,"Legacy":false}],"SysBench CPU (Multi-thread)":[{"MachineId":"Radxa_ROCK_Pi_S;Rockchip_RK33xx_family;5184_00","ExtraInfo":"--time=7 --cpu-max-prime=10000","UserNote":"","BenchmarkVersion":1000018,"MachineDataVersion":0,"BenchmarkResult":2303.030029,"ElapsedTime":7.0018,"UsedThreads":4,"Board":"Radxa ROCK Pi S","MachineType":"Unknown physical machine type","CpuName":"Rockchip RK33xx-family","CpuDesc":"1 CPU; 4 cores; 4 threads","NumCpus":1,"NumCores":4,"NumThreads":4,"NumNodes":1,"CpuConfig":"4x 1296.00 MHz","CpuConfigMap":{"1296.00":4},"MemoryInKiB":177872,"PhysicalMemoryInMiB":0,"MemoryTypes":"RAM","OpenGlRenderer":"llvmpipe (LLVM 12.0.0, 128 bits)","GpuDesc":"","PointerBits":64,"DataFromSuperUser":true,"Legacy":false},{"MachineId":"Raspberry_Pi_3_Model_B_Rev_1_2;Broadcom_BCM2837;4800_00","ExtraInfo":"--time=7 --cpu-max-prime=10000","UserNote":"","BenchmarkVersion":1000020,"MachineDataVersion":0,"BenchmarkResult":228.419998,"ElapsedTime":7.0127,"UsedThreads":4,"Board":"Raspberry Pi 3 Model B Rev 1.2","MachineType":"Single-board computer","CpuName":"Broadcom BCM2837","CpuDesc":"1 CPU; 4 cores; 4 threads","NumCpus":1,"NumCores":4,"NumThreads":4,"NumNodes":1,"CpuConfig":"4x 1200.00 MHz","CpuConfigMap":{"1200.00":4},"MemoryInKiB":944480,"PhysicalMemoryInMiB":0,"MemoryTypes":"RAM","OpenGlRenderer":"llvmpipe (LLVM 15.0.6, 128 bits)","GpuDesc":"Broadcom VideoCore IV","PointerBits":32,"DataFromSuperUser":true,"Legacy":false},{"MachineId":"Hardkernel_ODROID_C2;Amlogic_(Unknown);6144_00","ExtraInfo":"--time=7 --cpu-max-prime=10000","UserNote":"","BenchmarkVersion":1000020,"MachineDataVersion":0,"BenchmarkResult":6454.5599365,"ElapsedTime":7.001,"UsedThreads":4,"Board":"Hardkernel ODROID-C2","MachineType":"Single-board computer","CpuName":"Amlogic (Unknown)","CpuDesc":"1 CPU; 4 cores; 4 threads","NumCpus":1,"NumCores":4,"NumThreads":4,"NumNodes":1,"CpuConfig":"4x 1536.00 MHz","CpuConfigMap":{"1536.00":4},"MemoryInKiB":1978296,"PhysicalMemoryInMiB":0,"MemoryTypes":"RAM","OpenGlRenderer":"","GpuDesc":"arm Mali 450","PointerBits":64,"DataFromSuperUser":true,"Legacy":false},{"MachineId":"(Unknown);AMD_Ryzen_9_7950X;143997_44","ExtraInfo":"--time=7 --cpu-max-prime=10000","UserNote":"","BenchmarkVersion":1000020,"MachineDataVersion":0,"BenchmarkResult":106448.757812,"ElapsedTime":7.0003,"UsedThreads":32,"Board":"(Unknown)","MachineType":"Unknown physical machine type","CpuName":"AMD Ryzen 9 7950X","CpuDesc":"1 CPU; 16 cores; 32 threads","NumCpus":1,"NumCores":16,"NumThreads":32,"NumNodes":1,"CpuConfig":"32x 4499.92 MHz","CpuConfigMap":{"4499.92":32},"MemoryInKiB":32716664,"PhysicalMemoryInMiB":32640,"MemoryTypes":"RAM","OpenGlRenderer":"D3D12 (NVIDIA GeForce RTX 4090)","GpuDesc":"Microsoft Device","PointerBits":64,"DataFromSuperUser":true,"Legacy":false},{"MachineId":"Raspberry_Pi_Model_B_Rev_2;Broadcom_BCM2835;700_00","ExtraInfo":"--time=7 --cpu-max-prime=10000","UserNote":"","BenchmarkVersion":1000020,"MachineDataVersion":0,"BenchmarkResult":23,"ElapsedTime":7,"UsedThreads":1,"Board":"Raspberry Pi Model B Rev 2","MachineType":"Single-board computer","CpuName":"Broadcom BCM2835","CpuDesc":"1 CPU","NumCpus":1,"NumCores":1,"NumThreads":1,"NumNodes":1,"CpuConfig":"1x 700.00 MHz","CpuConfigMap":{"700.00":1},"MemoryInKiB":439196,"PhysicalMemoryInMiB":0,"MemoryTypes":"RAM","OpenGlRenderer":"llvmpipe (LLVM 15.0.6, 128 bits)","GpuDesc":"Broadcom VideoCore IV","PointerBits":32,"DataFromSuperUser":true,"Legacy":false},{"MachineId":"Intel_440BX_Desktop_Reference_Platform_(VMware_VMware_Virtual_Platform);AMD_EPYC_9354P;208001_92","ExtraInfo":"--time=7 --cpu-max-prime=10000","UserNote":"","BenchmarkVersion":1000020,"MachineDataVersion":0,"BenchmarkResult":151020.578125,"ElapsedTime":7.0005,"UsedThreads":64,"Board":"Intel 440BX Desktop Reference Platform (VMware VMware Virtual Platform)","MachineType":"Virtual (VMware)","CpuName":"AMD EPYC 9354P","CpuDesc":"1 CPU; 64 cores; 64 threads","NumCpus":1,"NumCores":64,"NumThreads":64,"NumNodes":1,"CpuConfig":"64x 3250.03 MHz","CpuConfigMap":{"3250.03":64},"MemoryInKiB":32846368,"PhysicalMemoryInMiB":32768,"MemoryTypes":"RAM","OpenGlRenderer":"llvmpipe (LLVM 15.0.7, 256 bits)","GpuDesc":"VMware SVGA II Adapter","PointerBits":64,"DataFromSuperUser":true,"Legacy":false},{"MachineId":"Raspberry_Pi_4_Model_B_Rev_1_2;Broadcom_(Unknown);8000_00","ExtraInfo":"--time=7 --cpu-max-prime=10000","UserNote":"","BenchmarkVersion":1000020,"MachineDataVersion":0,"BenchmarkResult":521.150024,"ElapsedTime":7.0062,"UsedThreads":4,"Board":"Raspberry Pi 4 Model B Rev 1.2","MachineType":"Single-board computer","CpuName":"Broadcom (Unknown)","CpuDesc":"1 CPU; 4 cores; 4 threads","NumCpus":1,"NumCores":4,"NumThreads":4,"NumNodes":1,"CpuConfig":"4x 2000.00 MHz","CpuConfigMap":{"2000.00":4},"MemoryInKiB":3447996,"PhysicalMemoryInMiB":0,"MemoryTypes":"RAM","OpenGlRenderer":"llvmpipe (LLVM 15.0.6, 128 bits)","GpuDesc":"Unknown Device","PointerBits":32,"DataFromSuperUser":true,"Legacy":false}],"SysBench CPU (Single-thread)":[{"MachineId":"(Unknown);AMD_Ryzen_9_7950X;143997_44","ExtraInfo":"--time=7 --cpu-max-prime=10000","UserNote":"","BenchmarkVersion":1000020,"MachineDataVersion":0,"BenchmarkResult":6124.279785,"ElapsedTime":7.0002,"UsedThreads":1,"Board":"(Unknown)","MachineType":"Unknown physical machine type","CpuName":"AMD Ryzen 9 7950X","CpuDesc":"1 CPU; 16 cores; 32 threads","NumCpus":1,"NumCores":16,"NumThreads":32,"NumNodes":1,"CpuConfig":"32x 4499.92 MHz","CpuConfigMap":{"4499.92":32},"MemoryInKiB":32716664,"PhysicalMemoryInMiB":32640,"MemoryTypes":"RAM","OpenGlRenderer":"D3D12 (NVIDIA GeForce RTX 4090)","GpuDesc":"Microsoft Device","PointerBits":64,"DataFromSuperUser":true,"Legacy":false},{"MachineId":"Hardkernel_ODROID_C2;Amlogic_(Unknown);6144_00","ExtraInfo":"--time=7 --cpu-max-prime=10000","UserNote":"","BenchmarkVersion":1000020,"MachineDataVersion":0,"BenchmarkResult":1383.924988,"ElapsedTime":7.0009,"UsedThreads":1,"Board":"Hardkernel ODROID-C2","MachineType":"Single-board computer","CpuName":"Amlogic (Unknown)","CpuDesc":"1 CPU; 4 cores; 4 threads","NumCpus":1,"NumCores":4,"NumThreads":4,"NumNodes":1,"CpuConfig":"4x 1536.00 MHz","CpuConfigMap":{"1536.00":4},"MemoryInKiB":1978296,"PhysicalMemoryInMiB":0,"MemoryTypes":"RAM","OpenGlRenderer":"","GpuDesc":"arm Mali 450","PointerBits":64,"DataFromSuperUser":true,"Legacy":false},{"MachineId":"Raspberry_Pi_3_Model_B_Rev_1_2;Broadcom_BCM2837;4800_00","ExtraInfo":"--time=7 --cpu-max-prime=10000","UserNote":"","BenchmarkVersion":1000020,"MachineDataVersion":0,"BenchmarkResult":58,"ElapsedTime":7.0081,"UsedThreads":1,"Board":"Raspberry Pi 3 Model B Rev 1.2","MachineType":"Single-board computer","CpuName":"Broadcom BCM2837","CpuDesc":"1 CPU; 4 cores; 4 threads","NumCpus":1,"NumCores":4,"NumThreads":4,"NumNodes":1,"CpuConfig":"4x 1200.00 MHz","CpuConfigMap":{"1200.00":4},"MemoryInKiB":944480,"PhysicalMemoryInMiB":0,"MemoryTypes":"RAM","OpenGlRenderer":"llvmpipe (LLVM 15.0.6, 128 bits)","GpuDesc":"Broadcom VideoCore IV","PointerBits":32,"DataFromSuperUser":true,"Legacy":false},{"MachineId":"Intel_440BX_Desktop_Reference_Platform_(VMware_VMware_Virtual_Platform);AMD_EPYC_9354P;208001_92","ExtraInfo":"--time=7 --cpu-max-prime=10000","UserNote":"","BenchmarkVersion":1000020,"MachineDataVersion":0,"BenchmarkResult":4599.810059,"ElapsedTime":7.0003,"UsedThreads":1,"Board":"Intel 440BX Desktop Reference Platform (VMware VMware Virtual Platform)","MachineType":"Virtual (VMware)","CpuName":"AMD EPYC 9354P","CpuDesc":"1 CPU; 64 cores; 64 threads","NumCpus":1,"NumCores":64,"NumThreads":64,"NumNodes":1,"CpuConfig":"64x 3250.03 MHz","CpuConfigMap":{"3250.03":64},"MemoryInKiB":32846368,"PhysicalMemoryInMiB":32768,"MemoryTypes":"RAM","OpenGlRenderer":"llvmpipe (LLVM 15.0.7, 256 bits)","GpuDesc":"VMware SVGA II Adapter","PointerBits":64,"DataFromSuperUser":true,"Legacy":false},{"MachineId":"Raspberry_Pi_4_Model_B_Rev_1_2;Broadcom_(Unknown);8000_00","ExtraInfo":"--time=7 --cpu-max-prime=10000","UserNote":"","BenchmarkVersion":1000020,"MachineDataVersion":0,"BenchmarkResult":131.919998,"ElapsedTime":7.0051,"UsedThreads":1,"Board":"Raspberry Pi 4 Model B Rev 1.2","MachineType":"Single-board computer","CpuName":"Broadcom (Unknown)","CpuDesc":"1 CPU; 4 cores; 4 threads","NumCpus":1,"NumCores":4,"NumThreads":4,"NumNodes":1,"CpuConfig":"4x 2000.00 MHz","CpuConfigMap":{"2000.00":4},"MemoryInKiB":3447996,"PhysicalMemoryInMiB":0,"MemoryTypes":"RAM","OpenGlRenderer":"llvmpipe (LLVM 15.0.6, 128 bits)","GpuDesc":"Unknown Device","PointerBits":32,"DataFromSuperUser":true,"Legacy":false},{"MachineId":"Raspberry_Pi_Model_B_Rev_2;Broadcom_BCM2835;700_00","ExtraInfo":"--time=7 --cpu-max-prime=10000","UserNote":"","BenchmarkVersion":1000020,"MachineDataVersion":0,"BenchmarkResult":23,"ElapsedTime":7,"UsedThreads":1,"Board":"Raspberry Pi Model B Rev 2","MachineType":"Single-board computer","CpuName":"Broadcom BCM2835","CpuDesc":"1 CPU","NumCpus":1,"NumCores":1,"NumThreads":1,"NumNodes":1,"CpuConfig":"1x 700.00 MHz","CpuConfigMap":{"700.00":1},"MemoryInKiB":439196,"PhysicalMemoryInMiB":0,"MemoryTypes":"RAM","OpenGlRenderer":"llvmpipe (LLVM 15.0.6, 128 bits)","GpuDesc":"Broadcom VideoCore IV","PointerBits":32,"DataFromSuperUser":true,"Legacy":false},{"MachineId":"Radxa_ROCK_Pi_S;Rockchip_RK33xx_family;5184_00","ExtraInfo":"--time=7 --cpu-max-prime=10000","UserNote":"","BenchmarkVersion":1000018,"MachineDataVersion":0,"BenchmarkResult":576.090027,"ElapsedTime":7.0012,"UsedThreads":1,"Board":"Radxa ROCK Pi S","MachineType":"Unknown physical machine type","CpuName":"Rockchip RK33xx-family","CpuDesc":"1 CPU; 4 cores; 4 threads","NumCpus":1,"NumCores":4,"NumThreads":4,"NumNodes":1,"CpuConfig":"4x 1296.00 MHz","CpuConfigMap":{"1296.00":4},"MemoryInKiB":177872,"PhysicalMemoryInMiB":0,"MemoryTypes":"RAM","OpenGlRenderer":"llvmpipe (LLVM 12.0.0, 128 bits)","GpuDesc":"","PointerBits":64,"DataFromSuperUser":true,"Legacy":false}],"SysBench Memory (Multi-thread)":[{"MachineId":"Raspberry_Pi_3_Model_B_Rev_1_2;Broadcom_BCM2837;4800_00","ExtraInfo":"--time=7 --memory-block-size=1K --memory-total-size=3056M --memory-scope=global --memory-hugetlb=off --memory-oper=write --memory-access-mode=seq","UserNote":"","BenchmarkVersion":1000020,"MachineDataVersion":0,"BenchmarkResult":2146.120117,"ElapsedTime":1.4145,"UsedThreads":4,"Board":"Raspberry Pi 3 Model B Rev 1.2","MachineType":"Single-board computer","CpuName":"Broadcom BCM2837","CpuDesc":"1 CPU; 4 cores; 4 threads","NumCpus":1,"NumCores":4,"NumThreads":4,"NumNodes":1,"CpuConfig":"4x 1200.00 MHz","CpuConfigMap":{"1200.00":4},"MemoryInKiB":944480,"PhysicalMemoryInMiB":0,"MemoryTypes":"RAM","OpenGlRenderer":"llvmpipe (LLVM 15.0.6, 128 bits)","GpuDesc":"Broadcom VideoCore IV","PointerBits":32,"DataFromSuperUser":true,"Legacy":false},{"MachineId":"Intel_440BX_Desktop_Reference_Platform_(VMware_VMware_Virtual_Platform);AMD_EPYC_9354P;208001_92","ExtraInfo":"--time=7 --memory-block-size=1K --memory-total-size=100G --memory-scope=global --memory-hugetlb=off --memory-oper=write --memory-access-mode=seq","UserNote":"","BenchmarkVersion":1000020,"MachineDataVersion":0,"BenchmarkResult":10712.950195,"ElapsedTime":7.0009,"UsedThreads":64,"Board":"Intel 440BX Desktop Reference Platform (VMware VMware Virtual Platform)","MachineType":"Virtual (VMware)","CpuName":"AMD EPYC 9354P","CpuDesc":"1 CPU; 64 cores; 64 threads","NumCpus":1,"NumCores":64,"NumThreads":64,"NumNodes":1,"CpuConfig":"64x 3250.03 MHz","CpuConfigMap":{"3250.03":64},"MemoryInKiB":32846368,"PhysicalMemoryInMiB":32768,"MemoryTypes":"RAM","OpenGlRenderer":"llvmpipe (LLVM 15.0.7, 256 bits)","GpuDesc":"VMware SVGA II Adapter","PointerBits":64,"DataFromSuperUser":true,"Legacy":false},{"MachineId":"Hardkernel_ODROID_C2;Amlogic_(Unknown);6144_00","ExtraInfo":"--time=7 --memory-block-size=1K --memory-total-size=100G --memory-scope=global --memory-hugetlb=off --memory-oper=write --memory-access-mode=seq","UserNote":"","BenchmarkVersion":1000020,"MachineDataVersion":0,"BenchmarkResult":5995.9150389999995,"ElapsedTime":7.0002,"UsedThreads":4,"Board":"Hardkernel ODROID-C2","MachineType":"Single-board computer","CpuName":"Amlogic (Unknown)","CpuDesc":"1 CPU; 4 cores; 4 threads","NumCpus":1,"NumCores":4,"NumThreads":4,"NumNodes":1,"CpuConfig":"4x 1536.00 MHz","CpuConfigMap":{"1536.00":4},"MemoryInKiB":1978296,"PhysicalMemoryInMiB":0,"MemoryTypes":"RAM","OpenGlRenderer":"","GpuDesc":"arm Mali 450","PointerBits":64,"DataFromSuperUser":true,"Legacy":false},{"MachineId":"Raspberry_Pi_Model_B_Rev_2;Broadcom_BCM2835;700_00","ExtraInfo":"--time=7 --memory-block-size=1K --memory-total-size=3056M --memory-scope=global --memory-hugetlb=off --memory-oper=write --memory-access-mode=seq","UserNote":"","BenchmarkVersion":1000020,"MachineDataVersion":0,"BenchmarkResult":86,"ElapsedTime":7,"UsedThreads":1,"Board":"Raspberry Pi Model B Rev 2","MachineType":"Single-board computer","CpuName":"Broadcom BCM2835","CpuDesc":"1 CPU","NumCpus":1,"NumCores":1,"NumThreads":1,"NumNodes":1,"CpuConfig":"1x 700.00 MHz","CpuConfigMap":{"700.00":1},"MemoryInKiB":439196,"PhysicalMemoryInMiB":0,"MemoryTypes":"RAM","OpenGlRenderer":"llvmpipe (LLVM 15.0.6, 128 bits)","GpuDesc":"Broadcom VideoCore IV","PointerBits":32,"DataFromSuperUser":true,"Legacy":false},{"MachineId":"Raspberry_Pi_4_Model_B_Rev_1_2;Broadcom_(Unknown);8000_00","ExtraInfo":"--time=7 --memory-block-size=1K --memory-total-size=3056M --memory-scope=global --memory-hugetlb=off --memory-oper=write --memory-access-mode=seq","UserNote":"","BenchmarkVersion":1000020,"MachineDataVersion":0,"BenchmarkResult":796.77002,"ElapsedTime":3.8304,"UsedThreads":4,"Board":"Raspberry Pi 4 Model B Rev 1.2","MachineType":"Single-board computer","CpuName":"Broadcom (Unknown)","CpuDesc":"1 CPU; 4 cores; 4 threads","NumCpus":1,"NumCores":4,"NumThreads":4,"NumNodes":1,"CpuConfig":"4x 2000.00 MHz","CpuConfigMap":{"2000.00":4},"MemoryInKiB":3447996,"PhysicalMemoryInMiB":0,"MemoryTypes":"RAM","OpenGlRenderer":"llvmpipe (LLVM 15.0.6, 128 bits)","GpuDesc":"Unknown Device","PointerBits":32,"DataFromSuperUser":true,"Legacy":false},{"MachineId":"Radxa_ROCK_Pi_S;Rockchip_RK33xx_family;5184_00","ExtraInfo":"--time=7 --memory-block-size=1K --memory-total-size=100G --memory-scope=global --memory-hugetlb=off --memory-oper=write --memory-access-mode=seq","UserNote":"","BenchmarkVersion":1000018,"MachineDataVersion":0,"BenchmarkResult":1763.459961,"ElapsedTime":7.0002,"UsedThreads":4,"Board":"Radxa ROCK Pi S","MachineType":"Unknown physical machine type","CpuName":"Rockchip RK33xx-family","CpuDesc":"1 CPU; 4 cores; 4 threads","NumCpus":1,"NumCores":4,"NumThreads":4,"NumNodes":1,"CpuConfig":"4x 1296.00 MHz","CpuConfigMap":{"1296.00":4},"MemoryInKiB":177872,"PhysicalMemoryInMiB":0,"MemoryTypes":"RAM","OpenGlRenderer":"llvmpipe (LLVM 12.0.0, 128 bits)","GpuDesc":"","PointerBits":64,"DataFromSuperUser":true,"Legacy":false}],"SysBench Memory (Multi-threads)":[{"MachineId":"(Unknown);AMD_Ryzen_9_7950X;143997_44","ExtraInfo":"--time=7 --memory-block-size=1K --memory-total-size=100G --memory-scope=global --memory-hugetlb=off --memory-oper=write --memory-access-mode=seq","UserNote":"","BenchmarkVersion":1000020,"MachineDataVersion":0,"BenchmarkResult":11805.269531,"ElapsedTime":7.0004,"UsedThreads":32,"Board":"(Unknown)","MachineType":"Unknown physical machine type","CpuName":"AMD Ryzen 9 7950X","CpuDesc":"1 CPU; 16 cores; 32 threads","NumCpus":1,"NumCores":16,"NumThreads":32,"NumNodes":1,"CpuConfig":"32x 4499.92 MHz","CpuConfigMap":{"4499.92":32},"MemoryInKiB":32716664,"PhysicalMemoryInMiB":32640,"MemoryTypes":"RAM","OpenGlRenderer":"D3D12 (NVIDIA GeForce RTX 4090)","GpuDesc":"Microsoft Device","PointerBits":64,"DataFromSuperUser":true,"Legacy":false}],"SysBench Memory (Single-thread)":[{"MachineId":"Hardkernel_ODROID_C2;Amlogic_(Unknown);6144_00","ExtraInfo":"--time=7 --memory-block-size=1K --memory-total-size=100G --memory-scope=global --memory-hugetlb=off --memory-oper=write --memory-access-mode=seq","UserNote":"","BenchmarkVersion":1000020,"MachineDataVersion":0,"BenchmarkResult":2035.0749515,"ElapsedTime":7.0002,"UsedThreads":1,"Board":"Hardkernel ODROID-C2","MachineType":"Single-board computer","CpuName":"Amlogic (Unknown)","CpuDesc":"1 CPU; 4 cores; 4 threads","NumCpus":1,"NumCores":4,"NumThreads":4,"NumNodes":1,"CpuConfig":"4x 1536.00 MHz","CpuConfigMap":{"1536.00":4},"MemoryInKiB":1978296,"PhysicalMemoryInMiB":0,"MemoryTypes":"RAM","OpenGlRenderer":"","GpuDesc":"arm Mali 450","PointerBits":64,"DataFromSuperUser":true,"Legacy":false},{"MachineId":"Raspberry_Pi_Model_B_Rev_2;Broadcom_BCM2835;700_00","ExtraInfo":"--time=7 --memory-block-size=1K --memory-total-size=3056M --memory-scope=global --memory-hugetlb=off --memory-oper=write --memory-access-mode=seq","UserNote":"","BenchmarkVersion":1000020,"MachineDataVersion":0,"BenchmarkResult":99,"ElapsedTime":7,"UsedThreads":1,"Board":"Raspberry Pi Model B Rev 2","MachineType":"Single-board computer","CpuName":"Broadcom BCM2835","CpuDesc":"1 CPU","NumCpus":1,"NumCores":1,"NumThreads":1,"NumNodes":1,"CpuConfig":"1x 700.00 MHz","CpuConfigMap":{"700.00":1},"MemoryInKiB":439196,"PhysicalMemoryInMiB":0,"MemoryTypes":"RAM","OpenGlRenderer":"llvmpipe (LLVM 15.0.6, 128 bits)","GpuDesc":"Broadcom VideoCore IV","PointerBits":32,"DataFromSuperUser":true,"Legacy":false},{"MachineId":"Radxa_ROCK_Pi_S;Rockchip_RK33xx_family;5184_00","ExtraInfo":"--time=7 --memory-block-size=1K --memory-total-size=100G --memory-scope=global --memory-hugetlb=off --memory-oper=write --memory-access-mode=seq","UserNote":"","BenchmarkVersion":1000018,"MachineDataVersion":0,"BenchmarkResult":545.700012,"ElapsedTime":7.0002,"UsedThreads":1,"Board":"Radxa ROCK Pi S","MachineType":"Unknown physical machine type","CpuName":"Rockchip RK33xx-family","CpuDesc":"1 CPU; 4 cores; 4 threads","NumCpus":1,"NumCores":4,"NumThreads":4,"NumNodes":1,"CpuConfig":"4x 1296.00 MHz","CpuConfigMap":{"1296.00":4},"MemoryInKiB":177872,"PhysicalMemoryInMiB":0,"MemoryTypes":"RAM","OpenGlRenderer":"llvmpipe (LLVM 12.0.0, 128 bits)","GpuDesc":"","PointerBits":64,"DataFromSuperUser":true,"Legacy":false},{"MachineId":"(Unknown);AMD_Ryzen_9_7950X;143997_44","ExtraInfo":"--time=7 --memory-block-size=1K --memory-total-size=100G --memory-scope=global --memory-hugetlb=off --memory-oper=write --memory-access-mode=seq","UserNote":"","BenchmarkVersion":1000020,"MachineDataVersion":0,"BenchmarkResult":10442.919922,"ElapsedTime":7.0001,"UsedThreads":1,"Board":"(Unknown)","MachineType":"Unknown physical machine type","CpuName":"AMD Ryzen 9 7950X","CpuDesc":"1 CPU; 16 cores; 32 threads","NumCpus":1,"NumCores":16,"NumThreads":32,"NumNodes":1,"CpuConfig":"32x 4499.92 MHz","CpuConfigMap":{"4499.92":32},"MemoryInKiB":32716664,"PhysicalMemoryInMiB":32640,"MemoryTypes":"RAM","OpenGlRenderer":"D3D12 (NVIDIA GeForce RTX 4090)","GpuDesc":"Microsoft Device","PointerBits":64,"DataFromSuperUser":true,"Legacy":false},{"MachineId":"Raspberry_Pi_4_Model_B_Rev_1_2;Broadcom_(Unknown);8000_00","ExtraInfo":"--time=7 --memory-block-size=1K --memory-total-size=3056M --memory-scope=global --memory-hugetlb=off --memory-oper=write --memory-access-mode=seq","UserNote":"","BenchmarkVersion":1000020,"MachineDataVersion":0,"BenchmarkResult":203.699997,"ElapsedTime":7.0001,"UsedThreads":1,"Board":"Raspberry Pi 4 Model B Rev 1.2","MachineType":"Single-board computer","CpuName":"Broadcom (Unknown)","CpuDesc":"1 CPU; 4 cores; 4 threads","NumCpus":1,"NumCores":4,"NumThreads":4,"NumNodes":1,"CpuConfig":"4x 2000.00 MHz","CpuConfigMap":{"2000.00":4},"MemoryInKiB":3447996,"PhysicalMemoryInMiB":0,"MemoryTypes":"RAM","OpenGlRenderer":"llvmpipe (LLVM 15.0.6, 128 bits)","GpuDesc":"Unknown Device","PointerBits":32,"DataFromSuperUser":true,"Legacy":false},{"MachineId":"Raspberry_Pi_3_Model_B_Rev_1_2;Broadcom_BCM2837;4800_00","ExtraInfo":"--time=7 --memory-block-size=1K --memory-total-size=3056M --memory-scope=global --memory-hugetlb=off --memory-oper=write --memory-access-mode=seq","UserNote":"","BenchmarkVersion":1000020,"MachineDataVersion":0,"BenchmarkResult":573.619995,"ElapsedTime":5.3183,"UsedThreads":1,"Board":"Raspberry Pi 3 Model B Rev 1.2","MachineType":"Single-board computer","CpuName":"Broadcom BCM2837","CpuDesc":"1 CPU; 4 cores; 4 threads","NumCpus":1,"NumCores":4,"NumThreads":4,"NumNodes":1,"CpuConfig":"4x 1200.00 MHz","CpuConfigMap":{"1200.00":4},"MemoryInKiB":944480,"PhysicalMemoryInMiB":0,"MemoryTypes":"RAM","OpenGlRenderer":"llvmpipe (LLVM 15.0.6, 128 bits)","GpuDesc":"Broadcom VideoCore IV","PointerBits":32,"DataFromSuperUser":true,"Legacy":false},{"MachineId":"Intel_440BX_Desktop_Reference_Platform_(VMware_VMware_Virtual_Platform);AMD_EPYC_9354P;208001_92","ExtraInfo":"--time=7 --memory-block-size=1K --memory-total-size=100G --memory-scope=global --memory-hugetlb=off --memory-oper=write --memory-access-mode=seq","UserNote":"","BenchmarkVersion":1000020,"MachineDataVersion":0,"BenchmarkResult":7455.029785,"ElapsedTime":7.0001,"UsedThreads":1,"Board":"Intel 440BX Desktop Reference Platform (VMware VMware Virtual Platform)","MachineType":"Virtual (VMware)","CpuName":"AMD EPYC 9354P","CpuDesc":"1 CPU; 64 cores; 64 threads","NumCpus":1,"NumCores":64,"NumThreads":64,"NumNodes":1,"CpuConfig":"64x 3250.03 MHz","CpuConfigMap":{"3250.03":64},"MemoryInKiB":32846368,"PhysicalMemoryInMiB":32768,"MemoryTypes":"RAM","OpenGlRenderer":"llvmpipe (LLVM 15.0.7, 256 bits)","GpuDesc":"VMware SVGA II Adapter","PointerBits":64,"DataFromSuperUser":true,"Legacy":false}]} \ No newline at end of file diff --git a/data/cpuflags.json b/data/cpuflags.json new file mode 100644 index 00000000..6d6984e3 --- /dev/null +++ b/data/cpuflags.json @@ -0,0 +1,249 @@ +{ + "x86": { + "fpu": "Onboard FPU (floating point support)", + "vme": "Virtual 8086 mode enhancements", + "de": "Debugging Extensions (CR4.DE)", + "pse": "Page Size Extensions (4MB memory pages)", + "tsc": "Time Stamp Counter (RDTSC)", + "msr": "Model-Specific Registers (RDMSR, WRMSR)", + "pae": "Physical Address Extensions (support for more than 4GB of RAM)", + "mce": "Machine Check Exception", + "cx8": "CMPXCHG8 instruction (64-bit compare-and-swap)", + "apic": "Onboard APIC", + "sep": "SYSENTER/SYSEXIT", + "mtrr": "Memory Type Range Registers", + "pge": "Page Global Enable (global bit in PDEs and PTEs)", + "mca": "Machine Check Architecture", + "cmov": "CMOV instructions (conditional move) (also FCMOV)", + "pat": "Page Attribute Table", + "pse36": "36-bit PSEs (huge pages)", + "pn": "Processor serial number", + "clflush": "Cache Line Flush instruction", + "dts": "Debug Store (buffer for debugging and profiling instructions), or alternately: digital thermal sensor", + "acpi": "ACPI via MSR (temperature monitoring and clock speed modulation)", + "mmx": "Multimedia Extensions", + "fxsr": "FXSAVE/FXRSTOR, CR4.OSFXSR", + "sse": "Intel SSE vector instructions", + "sse2": "SSE2", + "ss": "CPU self snoop", + "ht": "Hyper-Threading", + "tm": "Automatic clock control (Thermal Monitor)", + "ia64": "Intel Itanium Architecture 64-bit (not to be confused with Intel's 64-bit x86 architecture with flag x86-64 or \"AMD64\" bit indicated by flag lm)", + "pbe": "Pending Break Enable (PBE# pin) wakeup support", + "syscall": "SYSCALL (Fast System Call) and SYSRET (Return From Fast System Call)", + "mp": "Multiprocessing Capable.", + "nx": "Execute Disable", + "mmxext": "AMD MMX extensions", + "fxsr_opt": "FXSAVE/FXRSTOR optimizations", + "pdpe1gb": "One GB pages (allows hugepagesz=1G)", + "rdtscp": "Read Time-Stamp Counter and Processor ID", + "lm": "Long Mode (x86-64: amd64, also known as Intel 64, i.e. 64-bit capable)", + "3dnow": "3DNow! (AMD vector instructions, competing with Intel's SSE1)", + "3dnowext": "AMD 3DNow! extensions", + "recovery": "CPU in recovery mode", + "longrun": "Longrun power control", + "lrti": "LongRun table interface", + "cxmmx": "Cyrix MMX extensions", + "k6_mtrr": "AMD K6 nonstandard MTRRs", + "cyrix_arr": "Cyrix ARRs (= MTRRs)", + "centaur_mcr": "Centaur MCRs (= MTRRs)", + "constant_tsc": "TSC ticks at a constant rate", + "up": "SMP kernel running on UP", + "art": "Always-Running Timer", + "arch_perfmon": "Intel Architectural PerfMon", + "pebs": "Precise-Event Based Sampling", + "bts": "Branch Trace Store", + "rep_good": "rep microcode works well", + "acc_power": "AMD accumulated power mechanism", + "nopl": "The NOPL (0F 1F) instructions", + "xtopology": "cpu topology enum extensions", + "tsc_reliable": "TSC is known to be reliable", + "nonstop_tsc": "TSC does not stop in C states", + "extd_apicid": "has extended APICID (8 bits)", + "amd_dcm": "multi-node processor", + "aperfmperf": "APERFMPERF", + "eagerfpu": "Non lazy FPU restore", + "nonstop_tsc_s3": "TSC doesn't stop in S3 state", + "mce_recovery": "CPU has recoverable machine checks", + "pni": "SSE-3 (Prescott New Instructions)", + "pclmulqdq": "Perform a Carry-Less Multiplication of Quadword instruction - accelerator for GCM)", + "dtes64": "64-bit Debug Store", + "monitor": "Monitor/Mwait support (Intel SSE3 supplements)", + "ds_cpl": "CPL Qual. Debug Store", + "vmx": "Hardware virtualization, Intel VMX", + "smx": "Safer mode TXT (TPM support)", + "est": "Enhanced SpeedStep", + "tm2": "Thermal Monitor 2", + "ssse3": "Supplemental SSE-3", + "cid": "Context ID", + "sdbg": "silicon debug", + "fma": "Fused multiply-add", + "cx16": "CMPXCHG16B", + "xtpr": "Send Task Priority Messages", + "pdcm": "Performance Capabilities", + "pcid": "Process Context Identifiers", + "dca": "Direct Cache Access", + "sse4_1": "SSE-4.1", + "sse4_2": "SSE-4.2", + "x2apic": "x2APIC", + "movbe": "Move Data After Swapping Bytes instruction", + "popcnt": "Return the Count of Number of Bits Set to 1 instruction (Hamming weight, i.e. bit count)", + "tsc_deadline_timer": "Tsc deadline timer", + "aes/aes-ni": "Advanced Encryption Standard (New Instructions)", + "xsave": "Save Processor Extended States: also provides XGETBY,XRSTOR,XSETBY", + "avx": "Advanced Vector Extensions", + "f16c": "16-bit fp conversions (CVT16)", + "rdrand": "Read Random Number from hardware random number generator instruction", + "hypervisor": "Running on a hypervisor", + "rng": "Random Number Generator present (xstore)", + "rng_en": "Random Number Generator enabled", + "ace": "on-CPU crypto (xcrypt)", + "ace_en": "on-CPU crypto enabled", + "ace2": "Advanced Cryptography Engine v2", + "ace2_en": "ACE v2 enabled", + "phe": "PadLock Hash Engine", + "phe_en": "PHE enabled", + "pmm": "PadLock Montgomery Multiplier", + "pmm_en": "PMM enabled", + "lahf_lm": "Load AH from Flags (LAHF) and Store AH into Flags (SAHF) in long mode", + "cmp_legacy": "If yes HyperThreading not valid", + "svm": "Secure virtual machine: AMD-V", + "extapic": "Extended APIC space", + "cr8_legacy": "CR8 in 32-bit mode", + "abm": "Advanced Bit Manipulation", + "sse4a": "SSE-4A", + "misalignsse": "indicates if a general-protection exception (#GP) is generated when some legacy SSE instructions operate on unaligned data. Also depends on CR0 and Alignment Checking bit", + "3dnowprefetch": "3DNow prefetch instructions", + "osvw": "indicates OS Visible Workaround, which allows the OS to work around processor errata.", + "ibs": "Instruction Based Sampling", + "xop": "extended AVX instructions", + "skinit": "SKINIT/STGI instructions", + "wdt": "Watchdog timer", + "lwp": "Light Weight Profiling", + "fma4": "4 operands MAC instructions", + "tce": "translation cache extension", + "nodeid_msr": "NodeId MSR", + "tbm": "Trailing Bit Manipulation", + "topoext": "Topology Extensions CPUID leafs", + "perfctr_core": "Core Performance Counter Extensions", + "perfctr_nb": "NB Performance Counter Extensions", + "bpext": "data breakpoint extension", + "ptsc": "performance time-stamp counter", + "perfctr_l2": "L2 Performance Counter Extensions", + "mwaitx": "MWAIT extension (MONITORX/MWAITX)", + "cpb": "AMD Core Performance Boost", + "epb": "IA32_ENERGY_PERF_BIAS support", + "hw_pstate": "AMD HW-PState", + "proc_feedback": "AMD ProcFeedbackInterface", + "intel_pt": "Intel Processor Tracing", + "tpr_shadow": "Intel TPR Shadow", + "vnmi": "Intel Virtual NMI", + "flexpriority": "Intel FlexPriority", + "ept": "Intel Extended Page Table", + "vpid": "Intel Virtual Processor ID", + "vmmcall": "prefer VMMCALL to VMCALL", + "fsgsbase": "{RD/WR}{FS/GS}BASE instructions", + "tsc_adjust": "TSC adjustment MSR", + "bmi1": "1st group bit manipulation extensions", + "hle": "Hardware Lock Elision", + "avx2": "AVX2 instructions", + "smep": "Supervisor Mode Execution Protection", + "bmi2": "2nd group bit manipulation extensions", + "erms": "Enhanced REP MOVSB/STOSB", + "invpcid": "Invalidate Processor Context ID", + "rtm": "Restricted Transactional Memory", + "cqm": "Cache QoS Monitoring", + "mpx": "Memory Protection Extension", + "avx512f": "AVX-512 foundation", + "avx512dq": "AVX-512 Double/Quad instructions", + "rdseed": "The RDSEED instruction", + "adx": "The ADCX and ADOX instructions", + "smap": "Supervisor Mode Access Prevention", + "clflushopt": "CLFLUSHOPT instruction", + "clwb": "CLWB instruction", + "avx512pf": "AVX-512 Prefetch", + "avx512er": "AVX-512 Exponential and Reciprocal", + "avx512cd": "AVX-512 Conflict Detection", + "sha_ni": "SHA1/SHA256 Instruction Extensions", + "avx512bw": "AVX-512 Byte/Word instructions", + "avx512vl": "AVX-512 128/256 Vector Length extensions", + "xsaveopt": "Optimized XSAVE", + "xsavec": "XSAVEC", + "xgetbv1": "XGETBV with ECX = 1", + "xsaves": "XSAVES/XRSTORS", + "cqm_llc": "LLC QoS", + "cqm_occup_llc": "LLC occupancy monitoring", + "cqm_mbm_total": "LLC total MBM monitoring", + "cqm_mbm_local": "LLC local MBM monitoring", + "clzero": "CLZERO instruction", + "irperf": "instructions retired performance counter", + "dtherm": "digital thermal sensor", + "ida": "Intel Dynamic Acceleration", + "arat": "Always Running APIC Timer", + "pln": "Intel Power Limit Notification", + "pts": "Intel Package Thermal Status", + "hwp": "Intel Hardware P-states", + "hwp_notify": "HWP notification", + "hwp_act_window": "HWP Activity Window", + "hwp_epp": "HWP Energy Performance Preference", + "hwp_pkg_req": "HWP package-level request", + "npt": "AMD Nested Page Table support", + "lbrv": "AMD LBR Virtualization support", + "svm_lock": "AMD SVM locking MSR", + "nrip_save": "AMD SVM next_rip save", + "tsc_scale": "AMD TSC scaling support", + "vmcb_clean": "AMD VMCB clean bits support", + "flushbyasid": "AMD flush-by-ASID support", + "decodeassists": "AMD Decode Assists support", + "pausefilter": "AMD filtered pause intercept", + "pfthreshold": "AMD pause filter threshold", + "avic": "Virtual Interrupt Controller", + "pku": "Protection Keys for Userspace", + "ospke": "OS Protection Keys Enable", + "overflow_recov": "MCA overflow recovery support", + "succor": "uncorrectable error containment and recovery", + "smca": "Scalable MCA", + "bug:f00f": "Intel F00F bug", + "bug:fdiv": "FPU FDIV", + "bug:coma": "Cyrix 6x86 coma", + "bug:tlb_mmatch": "AMD Erratum 383", + "bug:apic_c1e": "AMD Erratum 400", + "bug:11ap": "Bad local APIC aka 11AP", + "bug:fxsave_leak": "FXSAVE leaks FOP/FIP/FOP", + "bug:clflush_monitor": "AAI65, CLFLUSH required before MONITOR", + "bug:sysret_ss_attrs": "SYSRET doesn't fix up SS attrs", + "bug:espfix": "IRET to 16-bit SS corrupts ESP/RSP high bits", + "bug:null_seg": "Nulling a selector preserves the base", + "bug:swapgs_fence": "SWAPGS without input dep on GS", + "bug:monitor": "IPI required to wake up remote CPU", + "bug:amd_e400": "AMD Erratum 400", + "bug:cpu_insecure": "CPU is affected by meltdown attack and needs kernel page table isolation", + "bug:cpu_meltdown": "CPU is affected by meltdown attack and needs kernel page table isolation", + "bug:spectre_v1": "CPU is affected by Spectre variant 1 attack with conditional branches", + "bug:spectre_v2": "CPU is affected by Spectre variant 2 attack with indirect branches", + "bug:spec_store_bypass": "CPU is affected by speculative store bypass attack", + "bug:l1tf": "CPU is affected by L1 Terminal Fault", + "pm:ts": "temperature sensor", + "pm:fid": "frequency id control", + "pm:vid": "voltage id control", + "pm:ttp": "thermal trip", + "pm:tm": "hardware thermal control", + "pm:stc": "software thermal control", + "pm:100mhzsteps": "100 MHz multiplier control", + "pm:hwpstate": "hardware P-state control", + "pm:cpb": "core performance boost", + "pm:eff_freq_ro": "Readonly aperf/mperf", + "pm:proc_feedback": "processor feedback interface", + "pm:acc_power": "accumulated power mechanism", + "cpuid": "CPUID instruction", + "aes": "AES instructions", + "ssbd": "Speculative Store Bypass Disable", + "ibrs": "Indirect Branch Restricted Speculation", + "ibpb": "Indirect Branch Predictor Barrier", + "stibp": "Single Thread Indirect Branch Predictor", + "ibrs_enhanced": "Enhanced Indirect Branch Restructed Speculation", + "ept_ad": "Intel Extended Page Table access-dirty bit", + "md_clear": "Microarchitectural Data Sampling mitigation", + "flush_l1d": "Unconditional L1D flushing" + } +} diff --git a/data/edid.ids b/data/edid.ids new file mode 100644 index 00000000..9f959804 --- /dev/null +++ b/data/edid.ids @@ -0,0 +1,99 @@ +# +# https://github.com/bp0/verbose-spork/blob/master/data/edid.ids +# +# List of known/observed EDID three-letter vendor codes +# See http://edid.tv/manufacturer +# These codes are also the three-letter "EISA" or "PNP" codes. +# See http://uefi.org/sites/default/files/resources/PNPID_List.pdf +# +# Syntax: +# VEN Vendor Name +# +# Please keep sorted. +# + +AAA Avolites +ACI Ancor Communications +ACR Acer Technologies +ADA Addi-Data GmbH +AGO AlgolTek +AOC AOC International +APP Apple Computer +ATO ASTRO DESIGN +AUO AU Optronics +AVT Avtek +BMD Blackmagic Design +BNO Bang & Olufsen +BNQ BenQ +BOE BOE +CMN Chimei Innolux Corporation +CMO Chi Mei Optoelectronics +CNL Valve Corporation +CRO Extraordinary Technologies +CUK Calibre UK +DEL Dell +DGC Data General Corporation +DON DENON +ENC Eizo Nanao Corporation +EPH Epiphan Systems +EXP Data Export Corporation +FNI Funai Electric +FUS Fujitsu Siemens Computers +GSM Goldstar Company +HIQ Kaohsiung Opto Electronics Americas +HPN Hewlett-Packard Company +HSD HannStar Display Corporation +HTC Hitachi +HWP Hewlett-Packard Company +IBM International Business Machines +INO Innolab Pte Ltd +INT Interphase Corporation +INX Communications Supply Corporation (A division of WESCO) +ITE Integrated Tech Express +IVM Iiyama North America +JVC Victor Company of Japan (JVC) +KTC Kingston Tech Corporation +LEN Lenovo Group +LGD LG Display +LNX The Linux Foundation +LWR Lightware Visual Engineering +MAX Rogen Tech Distribution +MEG Abeam Tech +MEI Panasonic Industry Company +MGW Magewell +MST MS Telematica +MTC Mars-Tech Corporation +MTX Matrox +NEC NEC Corporation +NEX Nexgen Mediatech +ONK ONKYO Corporation +ORN ORION ELECTRIC +OTM Optoma Corporation +OVR Oculus VR +PHL Koninklijke Philips +PIO Pioneer Electronic Corporation +PLN Planar +PNR Planar Systems +QDS Quanta Display +RAT Rent-A-Tech +REN Renesas Technology Corporation +SAM Samsung Electric Company +SAN Sanyo Electric Company +SEC Seiko Epson Corporation +SHP Sharp Corporation +SII Silicon Image +SNY Sony +STD STD Computer +SVS AMX (Harman, SVSI) +SYN Synaptics +TCL Technical Concepts +TDC Teradici +TOP Orion Communications Company +TSB Toshiba Corporation +TST Transtream +VES Vestel Elektronik Sanayi ve Ticaret A. S. +VIT Visitech +VIZ Vizio +VSC ViewSonic Corporation +WDE Westinghouse Digital Electronics +YMH Yamaha Corporation diff --git a/data/ieee_oui.ids b/data/ieee_oui.ids new file mode 100644 index 00000000..1d9a5580 --- /dev/null +++ b/data/ieee_oui.ids @@ -0,0 +1,26746 @@ +000000 XEROX CORPORATION +000001 XEROX CORPORATION +000002 XEROX CORPORATION +000003 XEROX CORPORATION +000004 XEROX CORPORATION +000005 XEROX CORPORATION +000006 XEROX CORPORATION +000007 XEROX CORPORATION +000008 XEROX CORPORATION +000009 XEROX CORPORATION +00000a OMRON TATEISI ELECTRONICS CO. +00000b MATRIX CORPORATION +00000c Cisco Systems, Inc +00000d FIBRONICS LTD. +00000e FUJITSU LIMITED +00000f NEXT, INC. +000010 SYTEK INC. +000011 NORMEREL SYSTEMES +000012 INFORMATION TECHNOLOGY LIMITED +000013 CAMEX +000014 NETRONIX +000015 DATAPOINT CORPORATION +000016 DU PONT PIXEL SYSTEMS . +000017 Oracle +000018 WEBSTER COMPUTER CORPORATION +000019 APPLIED DYNAMICS INTERNATIONAL +00001a ADVANCED MICRO DEVICES +00001b Novell, Inc. +00001c BELL TECHNOLOGIES +00001d Cabletron Systems, Inc. +00001e TELSIST INDUSTRIA ELECTRONICA +00001f Telco Systems, Inc. +000020 DATAINDUSTRIER DIAB AB +000021 SUREMAN COMP. & COMMUN. CORP. +000022 VISUAL TECHNOLOGY INC. +000023 ABB INDUSTRIAL SYSTEMS AB +000024 CONNECT AS +000025 RAMTEK CORP. +000026 SHA-KEN CO., LTD. +000027 JAPAN RADIO COMPANY +000028 PRODIGY SYSTEMS CORPORATION +000029 IMC NETWORKS CORP. +00002a TRW - SEDD/INP +00002b CRISP AUTOMATION, INC +00002c AUTOTOTE LIMITED +00002d CHROMATICS INC +00002e SOCIETE EVIRA +00002f TIMEPLEX INC. +000030 VG LABORATORY SYSTEMS LTD +000031 QPSX COMMUNICATIONS, LTD. +000032 Marconi plc +000033 EGAN MACHINERY COMPANY +000034 NETWORK RESOURCES CORPORATION +000035 SPECTRAGRAPHICS CORPORATION +000036 ATARI CORPORATION +000037 OXFORD METRICS LIMITED +000038 CSS LABS +000039 TOSHIBA CORPORATION +00003a CHYRON CORPORATION +00003b i Controls, Inc. +00003c AUSPEX SYSTEMS INC. +00003d UNISYS +00003e SIMPACT +00003f SYNTREX, INC. +000040 APPLICON, INC. +000041 ICE CORPORATION +000042 METIER MANAGEMENT SYSTEMS LTD. +000043 MICRO TECHNOLOGY +000044 CASTELLE CORPORATION +000045 FORD AEROSPACE & COMM. CORP. +000046 OLIVETTI NORTH AMERICA +000047 NICOLET INSTRUMENTS CORP. +000048 Seiko Epson Corporation +000049 APRICOT COMPUTERS, LTD +00004a ADC CODENOLL TECHNOLOGY CORP. +00004b ICL DATA OY +00004c NEC Corporation +00004d DCI CORPORATION +00004e AMPEX CORPORATION +00004f LOGICRAFT, INC. +000050 RADISYS CORPORATION +000051 HOB ELECTRONIC GMBH & CO. KG +000052 Intrusion.com, Inc. +000053 COMPUCORP +000054 Schneider Electric +000055 COMMISSARIAT A L`ENERGIE ATOM. +000056 DR. B. STRUCK +000057 SCITEX CORPORATION LTD. +000058 RACORE COMPUTER PRODUCTS INC. +000059 Hellige GMBH +00005a SysKonnect GmbH +00005b ELTEC ELEKTRONIK AG +00005c TELEMATICS INTERNATIONAL INC. +00005d CS TELECOM +00005e ICANN, IANA Department +00005f Sumitomo Electric Industries,Ltd +000060 KONTRON ELEKTRONIK GMBH +000061 GATEWAY COMMUNICATIONS +000062 BULL HN INFORMATION SYSTEMS +000063 BARCO CONTROL ROOMS GMBH +000064 Yokogawa Digital Computer Corporation +000065 Network General Corporation +000066 TALARIS SYSTEMS, INC. +000067 SOFT * RITE, INC. +000068 ROSEMOUNT CONTROLS +000069 CONCORD COMMUNICATIONS INC +00006a COMPUTER CONSOLES INC. +00006b Silicon Graphics +00006c Private +00006d CRAY COMMUNICATIONS, LTD. +00006e Artisoft Inc. +00006f Madge Ltd. +000070 HCL LIMITED +000071 ADRA SYSTEMS INC. +000072 MINIWARE TECHNOLOGY +000073 SIECOR CORPORATION +000074 RICOH COMPANY LTD. +000075 Nortel Networks +000076 ABEKAS VIDEO SYSTEM +000077 INTERPHASE CORPORATION +000078 LABTAM LIMITED +000079 NETWORTH INCORPORATED +00007a DANA COMPUTER INC. +00007b RESEARCH MACHINES +00007c AMPERE INCORPORATED +00007d Oracle Corporation +00007e CLUSTRIX CORPORATION +00007f LINOTYPE-HELL AG +000080 CRAY COMMUNICATIONS A/S +000081 Bay Networks +000082 LECTRA SYSTEMES SA +000083 TADPOLE TECHNOLOGY PLC +000084 SUPERNET +000085 CANON INC. +000086 MEGAHERTZ CORPORATION +000087 HITACHI, LTD. +000088 Brocade Communications Systems, Inc. +000089 CAYMAN SYSTEMS INC. +00008a DATAHOUSE INFORMATION SYSTEMS +00008b INFOTRON +00008c Alloy Computer Products (Australia) Pty Ltd +00008d Cryptek Inc. +00008e SOLBOURNE COMPUTER, INC. +00008f Raytheon +000090 MICROCOM +000091 ANRITSU CORPORATION +000092 COGENT DATA TECHNOLOGIES +000093 PROTEON INC. +000094 ASANTE TECHNOLOGIES +000095 SONY TEKTRONIX CORP. +000096 MARCONI ELECTRONICS LTD. +000097 Dell EMC +000098 CROSSCOMM CORPORATION +000099 MTX, INC. +00009a RC COMPUTER A/S +00009b INFORMATION INTERNATIONAL, INC +00009c ROLM MIL-SPEC COMPUTERS +00009d LOCUS COMPUTING CORPORATION +00009e MARLI S.A. +00009f AMERISTAR TECHNOLOGIES INC. +0000a0 SANYO Electric Co., Ltd. +0000a1 MARQUETTE ELECTRIC CO. +0000a2 Bay Networks +0000a3 NETWORK APPLICATION TECHNOLOGY +0000a4 ACORN COMPUTERS LIMITED +0000a5 Tattile SRL +0000a6 NETWORK GENERAL CORPORATION +0000a7 NETWORK COMPUTING DEVICES INC. +0000a8 Stratus Technologies +0000a9 NETWORK SYSTEMS CORP. +0000aa XEROX CORPORATION +0000ab LOGIC MODELING CORPORATION +0000ac CONWARE COMPUTER CONSULTING +0000ad BRUKER INSTRUMENTS INC. +0000ae DASSAULT ELECTRONIQUE +0000af Canberra Industries, Inc. +0000b0 RND-RAD NETWORK DEVICES +0000b1 Alpha Micro +0000b2 TELEVIDEO SYSTEMS, INC. +0000b3 CIMLINC INCORPORATED +0000b4 Edimax Technology Co. Ltd. +0000b5 DATABILITY SOFTWARE SYS. INC. +0000b6 MICRO-MATIC RESEARCH +0000b7 DOVE COMPUTER CORPORATION +0000b8 SEIKOSHA CO., LTD. +0000b9 MCDONNELL DOUGLAS COMPUTER SYS +0000ba SIIG, INC. +0000bb TRI-DATA +0000bc Rockwell Automation +0000bd Mitsubishi Cable Industries, Ltd. / Ryosei Systems +0000be THE NTI GROUP +0000bf SYMMETRIC COMPUTER SYSTEMS +0000c0 WESTERN DIGITAL CORPORATION +0000c1 Madge Ltd. +0000c2 INFORMATION PRESENTATION TECH. +0000c3 Harris Corporation +0000c4 WATERS DIV. OF MILLIPORE +0000c5 ARRIS Group, Inc. +0000c6 EON SYSTEMS +0000c7 ARIX CORPORATION +0000c8 ALTOS COMPUTER SYSTEMS +0000c9 Emulex Corporation +0000ca ARRIS Group, Inc. +0000cb COMPU-SHACK ELECTRONIC GMBH +0000cc DENSAN CO., LTD. +0000cd Allied Telesis Labs Ltd +0000ce MEGADATA CORP. +0000cf HAYES MICROCOMPUTER PRODUCTS +0000d0 DEVELCON ELECTRONICS LTD. +0000d1 ADAPTEC INCORPORATED +0000d2 SBE, INC. +0000d3 WANG LABORATORIES INC. +0000d4 PURE DATA LTD. +0000d5 MICROGNOSIS INTERNATIONAL +0000d6 PUNCH LINE HOLDING +0000d7 DARTMOUTH COLLEGE +0000d8 Novell, Inc. +0000d9 NIPPON TELEGRAPH & TELEPHONE +0000da ATEX +0000db British Telecommunications plc +0000dc HAYES MICROCOMPUTER PRODUCTS +0000dd TCL INCORPORATED +0000de CETIA +0000df BELL & HOWELL PUB SYS DIV +0000e0 QUADRAM CORP. +0000e1 GRID SYSTEMS +0000e2 ACER TECHNOLOGIES CORP. +0000e3 INTEGRATED MICRO PRODUCTS LTD +0000e4 IN2 GROUPE INTERTECHNIQUE +0000e5 SIGMEX LTD. +0000e6 APTOR PRODUITS DE COMM INDUST +0000e7 Star Gate Technologies +0000e8 ACCTON TECHNOLOGY CORP. +0000e9 ISICAD, INC. +0000ea UPNOD AB +0000eb MATSUSHITA COMM. IND. CO. LTD. +0000ec MICROPROCESS +0000ed APRIL +0000ee NETWORK DESIGNERS, LTD. +0000ef KTI +0000f0 Samsung Electronics Co.,Ltd +0000f1 MAGNA COMPUTER CORPORATION +0000f2 SPIDER COMMUNICATIONS +0000f3 GANDALF DATA LIMITED +0000f4 Allied Telesis, Inc. +0000f5 DIAMOND SALES LIMITED +0000f6 APPLIED MICROSYSTEMS CORP. +0000f7 YOUTH KEEP ENTERPRISE CO LTD +0000f8 DIGITAL EQUIPMENT CORPORATION +0000f9 QUOTRON SYSTEMS INC. +0000fa MICROSAGE COMPUTER SYSTEMS INC +0000fb RECHNER ZUR KOMMUNIKATION +0000fc MEIKO +0000fd HIGH LEVEL HARDWARE +0000fe Annapolis Micro Systems, Inc. +0000ff CAMTEC ELECTRONICS LTD. +000100 EQUIP'TRANS +000101 Private +000102 3COM +000103 3COM +000104 DVICO Co., Ltd. +000105 Beckhoff Automation GmbH +000106 Tews Datentechnik GmbH +000107 Leiser GmbH +000108 AVLAB Technology, Inc. +000109 Nagano Japan Radio Co., Ltd. +00010a CIS TECHNOLOGY INC. +00010b Space CyberLink, Inc. +00010c System Talks Inc. +00010d Teledyne DALSA Inc. +00010e Bri-Link Technologies Co., Ltd +00010f Brocade Communications Systems, Inc. +000110 Gotham Networks +000111 iDigm Inc. +000112 Shark Multimedia Inc. +000113 OLYMPUS CORPORATION +000114 KANDA TSUSHIN KOGYO CO., LTD. +000115 EXTRATECH CORPORATION +000116 Netspect Technologies, Inc. +000117 Canal + +000118 EZ Digital Co., Ltd. +000119 RTUnet (Australia) +00011a Hoffmann und Burmeister GbR +00011b Unizone Technologies, Inc. +00011c Universal Talkware Corporation +00011d Centillium Communications +00011e Precidia Technologies, Inc. +00011f RC Networks, Inc. +000120 OSCILLOQUARTZ S.A. +000121 WatchGuard Technologies, Inc. +000122 Trend Communications, Ltd. +000123 Schneider Electric Japan Holdings Ltd. +000124 Acer Incorporated +000125 YAESU MUSEN CO., LTD. +000126 PAC Labs +000127 OPEN Networks Pty Ltd +000128 EnjoyWeb, Inc. +000129 DFI Inc. +00012a Telematica Sistems Inteligente +00012b TELENET Co., Ltd. +00012c Aravox Technologies, Inc. +00012d Komodo Technology +00012e PC Partner Ltd. +00012f Twinhead International Corp +000130 Extreme Networks, Inc. +000131 Bosch Security Systems, Inc. +000132 Dranetz - BMI +000133 KYOWA Electronic Instruments C +000134 Selectron Systems AG +000135 KDC Corp. +000136 CyberTAN Technology Inc. +000137 IT Farm Corporation +000138 XAVi Technologies Corp. +000139 Point Multimedia Systems +00013a SHELCAD COMMUNICATIONS, LTD. +00013b BNA SYSTEMS +00013c TIW SYSTEMS +00013d RiscStation Ltd. +00013e Ascom Tateco AB +00013f Neighbor World Co., Ltd. +000140 Sendtek Corporation +000141 CABLE PRINT +000142 Cisco Systems, Inc +000143 Cisco Systems, Inc +000144 Dell EMC +000145 WINSYSTEMS, INC. +000146 Tesco Controls, Inc. +000147 Zhone Technologies +000148 X-traWeb Inc. +000149 TDT AG +00014a Sony Corporation +00014b Ennovate Networks, Inc. +00014c Berkeley Process Control +00014d Shin Kin Enterprises Co., Ltd +00014e WIN Enterprises, Inc. +00014f Adtran Inc +000150 GILAT COMMUNICATIONS, LTD. +000151 Ensemble Communications +000152 CHROMATEK INC. +000153 ARCHTEK TELECOM CORPORATION +000154 G3M Corporation +000155 Promise Technology, Inc. +000156 FIREWIREDIRECT.COM, INC. +000157 SYSWAVE CO., LTD +000158 Electro Industries/Gauge Tech +000159 S1 Corporation +00015a Digital Video Broadcasting +00015b ITALTEL S.p.A/RF-UP-I +00015c CADANT INC. +00015d Oracle Corporation +00015e BEST TECHNOLOGY CO., LTD. +00015f DIGITAL DESIGN GmbH +000160 ELMEX Co., LTD. +000161 Meta Machine Technology +000162 Cygnet Technologies, Inc. +000163 Cisco Systems, Inc +000164 Cisco Systems, Inc +000165 AirSwitch Corporation +000166 TC GROUP A/S +000167 HIOKI E.E. CORPORATION +000168 VITANA CORPORATION +000169 Celestix Networks Pte Ltd. +00016a ALITEC +00016b LightChip, Inc. +00016c FOXCONN +00016d CarrierComm Inc. +00016e Conklin Corporation +00016f Inkel Corp. +000170 ESE Embedded System Engineer'g +000171 Allied Data Technologies +000172 TechnoLand Co., LTD. +000173 AMCC +000174 CyberOptics Corporation +000175 Radiant Communications Corp. +000176 Orient Silver Enterprises +000177 EDSL +000178 MARGI Systems, Inc. +000179 WIRELESS TECHNOLOGY, INC. +00017a Chengdu Maipu Electric Industrial Co., Ltd. +00017b Heidelberger Druckmaschinen AG +00017c AG-E GmbH +00017d ThermoQuest +00017e ADTEK System Science Co., Ltd. +00017f Experience Music Project +000180 AOpen, Inc. +000181 Nortel Networks +000182 DICA TECHNOLOGIES AG +000183 ANITE TELECOMS +000184 SIEB & MEYER AG +000185 Hitachi Aloka Medical, Ltd. +000186 Uwe Disch +000187 I2SE GmbH +000188 LXCO Technologies ag +000189 Refraction Technology, Inc. +00018a ROI COMPUTER AG +00018b NetLinks Co., Ltd. +00018c Mega Vision +00018d AudeSi Technologies +00018e Logitec Corporation +00018f Kenetec, Inc. +000190 SMK-M +000191 SYRED Data Systems +000192 Texas Digital Systems +000193 Hanbyul Telecom Co., Ltd. +000194 Capital Equipment Corporation +000195 Sena Technologies, Inc. +000196 Cisco Systems, Inc +000197 Cisco Systems, Inc +000198 Darim Vision +000199 HeiSei Electronics +00019a LEUNIG GmbH +00019b Kyoto Microcomputer Co., Ltd. +00019c JDS Uniphase Inc. +00019d E-Control Systems, Inc. +00019e ESS Technology, Inc. +00019f ReadyNet +0001a0 Infinilink Corporation +0001a1 Mag-Tek, Inc. +0001a2 Logical Co., Ltd. +0001a3 GENESYS LOGIC, INC. +0001a4 Microlink Corporation +0001a5 Nextcomm, Inc. +0001a6 Scientific-Atlanta Arcodan A/S +0001a7 UNEX TECHNOLOGY CORPORATION +0001a8 Welltech Computer Co., Ltd. +0001a9 BMW AG +0001aa Airspan Communications, Ltd. +0001ab Main Street Networks +0001ac Sitara Networks, Inc. +0001ad Coach Master International d.b.a. CMI Worldwide, Inc. +0001ae Trex Enterprises +0001af Artesyn Embedded Technologies +0001b0 Fulltek Technology Co., Ltd. +0001b1 General Bandwidth +0001b2 Digital Processing Systems, Inc. +0001b3 Precision Electronic Manufacturing +0001b4 Wayport, Inc. +0001b5 Turin Networks, Inc. +0001b6 SAEJIN T&M Co., Ltd. +0001b7 Centos, Inc. +0001b8 Netsensity, Inc. +0001b9 SKF (U.K.) Limited +0001ba IC-Net, Inc. +0001bb Frequentis +0001bc Brains Corporation +0001bd Peterson Electro-Musical Products, Inc. +0001be Gigalink Co., Ltd. +0001bf Teleforce Co., Ltd. +0001c0 CompuLab, Ltd. +0001c1 Vitesse Semiconductor Corporation +0001c2 ARK Research Corp. +0001c3 Acromag, Inc. +0001c4 NeoWave, Inc. +0001c5 Simpler Networks +0001c6 Quarry Technologies +0001c7 Cisco Systems, Inc +0001c8 CONRAD CORP. +0001c8 THOMAS CONRAD CORP. +0001c9 Cisco Systems, Inc +0001ca Geocast Network Systems, Inc. +0001cb EVR +0001cc Japan Total Design Communication Co., Ltd. +0001cd ARtem +0001ce Custom Micro Products, Ltd. +0001cf Alpha Data Parallel Systems, Ltd. +0001d0 VitalPoint, Inc. +0001d1 CoNet Communications, Inc. +0001d2 inXtron, Inc. +0001d3 PAXCOMM, Inc. +0001d4 Leisure Time, Inc. +0001d5 HAEDONG INFO & COMM CO., LTD +0001d6 manroland AG +0001d7 F5 Networks, Inc. +0001d8 Teltronics, Inc. +0001d9 Sigma, Inc. +0001da WINCOMM Corporation +0001db Freecom Technologies GmbH +0001dc Activetelco +0001dd Avail Networks +0001de Trango Systems, Inc. +0001df ISDN Communications, Ltd. +0001e0 Fast Systems, Inc. +0001e1 Kinpo Electronics, Inc. +0001e2 Ando Electric Corporation +0001e3 Siemens AG +0001e4 Sitera, Inc. +0001e5 Supernet, Inc. +0001e6 Hewlett Packard +0001e7 Hewlett Packard +0001e8 Force10 Networks, Inc. +0001e9 Litton Marine Systems B.V. +0001ea Cirilium Corp. +0001eb C-COM Corporation +0001ec Ericsson Group +0001ed SETA Corp. +0001ee Comtrol Europe, Ltd. +0001ef Camtel Technology Corp. +0001f0 Tridium, Inc. +0001f1 Innovative Concepts, Inc. +0001f2 Mark of the Unicorn, Inc. +0001f3 QPS, Inc. +0001f4 Enterasys +0001f5 ERIM S.A. +0001f6 Association of Musical Electronics Industry +0001f7 Image Display Systems, Inc. +0001f8 TEXIO TECHNOLOGY CORPORATION +0001f9 TeraGlobal Communications Corp. +0001fa HOROSCAS +0001fb DoTop Technology, Inc. +0001fc Keyence Corporation +0001fd Digital Voice Systems, Inc. +0001fe DIGITAL EQUIPMENT CORPORATION +0001ff Data Direct Networks, Inc. +000200 Net & Sys Co., Ltd. +000201 IFM Electronic gmbh +000202 Amino Communications, Ltd. +000203 Woonsang Telecom, Inc. +000204 Bodmann Industries Elektronik GmbH +000205 Hitachi Denshi, Ltd. +000206 Telital R&D Denmark A/S +000207 VisionGlobal Network Corp. +000208 Unify Networks, Inc. +000209 Shenzhen SED Information Technology Co., Ltd. +00020a Gefran Spa +00020b Native Networks, Inc. +00020c Metro-Optix +00020d Micronpc.com +00020e ECI Telecom Ltd. +00020f AATR +000210 Fenecom +000211 Nature Worldwide Technology Corp. +000212 SierraCom +000213 S.D.E.L. +000214 DTVRO +000215 Cotas Computer Technology A/B +000216 Cisco Systems, Inc +000217 Cisco Systems, Inc +000218 Advanced Scientific Corp +000219 Paralon Technologies +00021a Zuma Networks +00021b Kollmorgen-Servotronix +00021c Network Elements, Inc. +00021d Data General Communication Ltd. +00021e SIMTEL S.R.L. +00021f Aculab PLC +000220 CANON FINETECH INC. +000221 DSP Application, Ltd. +000222 Chromisys, Inc. +000223 ClickTV +000224 C-COR +000225 One Stop Systems +000226 XESystems, Inc. +000227 ESD Electronic System Design GmbH +000228 Necsom, Ltd. +000229 Adtec Corporation +00022a Asound Electronic +00022b SAXA, Inc. +00022c ABB Bomem, Inc. +00022d Agere Systems +00022e TEAC Corp. R& D +00022f P-Cube, Ltd. +000230 Intersoft Electronics +000231 Ingersoll-Rand +000232 Avision, Inc. +000233 Mantra Communications, Inc. +000234 Imperial Technology, Inc. +000235 Paragon Networks International +000236 INIT GmbH +000237 Cosmo Research Corp. +000238 Serome Technology, Inc. +000239 Visicom +00023a ZSK Stickmaschinen GmbH +00023b Ericsson +00023c Creative Technology, Ltd. +00023d Cisco Systems, Inc +00023e Selta Telematica S.p.a +00023f Compal Electronics INC. +000240 Seedek Co., Ltd. +000241 Amer.com +000242 Videoframe Systems +000243 Raysis Co., Ltd. +000244 SURECOM Technology Co. +000245 Lampus Co, Ltd. +000246 All-Win Tech Co., Ltd. +000247 Great Dragon Information Technology (Group) Co., Ltd. +000248 Pilz GmbH & Co. +000249 Aviv Infocom Co, Ltd. +00024a Cisco Systems, Inc +00024b Cisco Systems, Inc +00024c SiByte, Inc. +00024d Mannesman Dematic Colby Pty. Ltd. +00024e Datacard Group +00024f IPM Datacom S.R.L. +000250 Geyser Networks, Inc. +000251 Soma Networks, Inc. +000252 Carrier Corporation +000253 Televideo, Inc. +000254 WorldGate +000255 IBM Corp +000256 Alpha Processor, Inc. +000257 Microcom Corp. +000258 Flying Packets Communications +000259 Tsann Kuen China (Shanghai)Enterprise Co., Ltd. IT Group +00025a Catena Networks +00025b Cambridge Silicon Radio +00025c SCI Systems (Kunshan) Co., Ltd. +00025d Calix Networks +00025e High Technology Ltd +00025f Nortel Networks +000260 Accordion Networks, Inc. +000261 Tilgin AB +000262 Soyo Group Soyo Com Tech Co., Ltd +000263 UPS Manufacturing SRL +000264 AudioRamp.com +000265 Virditech Co. Ltd. +000266 Thermalogic Corporation +000267 NODE RUNNER, INC. +000268 Harris Government Communications +000269 Nadatel Co., Ltd +00026a Cocess Telecom Co., Ltd. +00026b BCM Computers Co., Ltd. +00026c Philips CFT +00026d Adept Telecom +00026e NeGeN Access, Inc. +00026f Senao International Co., Ltd. +000270 Crewave Co., Ltd. +000271 Zhone Technologies +000272 CC&C Technologies, Inc. +000273 Coriolis Networks +000274 Tommy Technologies Corp. +000275 SMART Technologies, Inc. +000276 Primax Electronics Ltd. +000277 Cash Systemes Industrie +000278 SAMSUNG ELECTRO MECHANICS CO., LTD. +000279 Control Applications, Ltd. +00027a IOI Technology Corporation +00027b Amplify Net, Inc. +00027c Trilithic, Inc. +00027d Cisco Systems, Inc +00027e Cisco Systems, Inc +00027f ask-technologies.com +000280 Mu Net, Inc. +000281 Madge Ltd. +000282 ViaClix, Inc. +000283 Spectrum Controls, Inc. +000284 UK Grid Solutions Limited +000285 Riverstone Networks +000286 Occam Networks +000287 Adapcom +000288 GLOBAL VILLAGE COMMUNICATION +000289 DNE Technologies +00028a Ambit Microsystems Corporation +00028b VDSL Systems OY +00028c Micrel-Synergy Semiconductor +00028d Movita Technologies, Inc. +00028e Rapid 5 Networks, Inc. +00028f Globetek, Inc. +000290 Woorigisool, Inc. +000291 Open Network Co., Ltd. +000292 Logic Innovations, Inc. +000293 Solid Data Systems +000294 Tokyo Sokushin Co., Ltd. +000295 IP.Access Limited +000296 Lectron Co,. Ltd. +000297 C-COR.net +000298 Broadframe Corporation +000299 Apex, Inc. +00029a Storage Apps +00029b Kreatel Communications AB +00029c 3COM +00029d Merix Corp. +00029e Information Equipment Co., Ltd. +00029f L-3 Communication Aviation Recorders +0002a0 Flatstack Ltd. +0002a1 World Wide Packets +0002a2 Hilscher GmbH +0002a3 ABB Switzerland Ltd, Power Systems +0002a4 AddPac Technology Co., Ltd. +0002a5 Hewlett Packard +0002a6 Effinet Systems Co., Ltd. +0002a7 Vivace Networks +0002a8 Air Link Technology +0002a9 RACOM, s.r.o. +0002aa PLcom Co., Ltd. +0002ab CTC Union Technologies Co., Ltd. +0002ac 3PAR data +0002ad HOYA Corporation +0002ae Scannex Electronics Ltd. +0002af TeleCruz Technology, Inc. +0002b0 Hokubu Communication & Industrial Co., Ltd. +0002b1 Anritsu, Ltd. +0002b2 Cablevision +0002b3 Intel Corporation +0002b4 DAPHNE +0002b5 Avnet, Inc. +0002b6 Acrosser Technology Co., Ltd. +0002b7 Watanabe Electric Industry Co., Ltd. +0002b8 WHI KONSULT AB +0002b9 Cisco Systems, Inc +0002ba Cisco Systems, Inc +0002bb Continuous Computing Corp +0002bc LVL 7 Systems, Inc. +0002bd Bionet Co., Ltd. +0002be Totsu Engineering, Inc. +0002bf dotRocket, Inc. +0002c0 Bencent Tzeng Industry Co., Ltd. +0002c1 Innovative Electronic Designs, Inc. +0002c2 Net Vision Telecom +0002c3 Arelnet Ltd. +0002c4 Vector International BVBA +0002c5 Evertz Microsystems Ltd. +0002c6 Data Track Technology PLC +0002c7 ALPS ELECTRIC CO., LTD. +0002c8 Technocom Communications Technology (pte) Ltd +0002c9 Mellanox Technologies, Inc. +0002ca EndPoints, Inc. +0002cb TriState Ltd. +0002cc M.C.C.I +0002cd TeleDream, Inc. +0002ce FoxJet, Inc. +0002cf ZyGate Communications, Inc. +0002d0 Comdial Corporation +0002d1 Vivotek, Inc. +0002d2 Workstation AG +0002d3 NetBotz, Inc. +0002d4 PDA Peripherals, Inc. +0002d5 ACR +0002d6 NICE Systems +0002d7 EMPEG Ltd +0002d8 BRECIS Communications Corporation +0002d9 Reliable Controls +0002da ExiO Communications, Inc. +0002db NETSEC +0002dc Fujitsu General Limited +0002dd Bromax Communications, Ltd. +0002de Astrodesign, Inc. +0002df Net Com Systems, Inc. +0002e0 ETAS GmbH +0002e1 Integrated Network Corporation +0002e2 NDC Infared Engineering +0002e3 LITE-ON Communications, Inc. +0002e4 JC HYUN Systems, Inc. +0002e5 Timeware Ltd. +0002e6 Gould Instrument Systems, Inc. +0002e7 CAB GmbH & Co KG +0002e8 E.D.&A. +0002e9 CS Systemes De Securite - C3S +0002ea Focus Enhancements +0002eb Pico Communications +0002ec Maschoff Design Engineering +0002ed DXO Telecom Co., Ltd. +0002ee Nokia Danmark A/S +0002ef CCC Network Systems Group Ltd. +0002f0 AME Optimedia Technology Co., Ltd. +0002f1 Pinetron Co., Ltd. +0002f2 eDevice, Inc. +0002f3 Media Serve Co., Ltd. +0002f4 PCTEL, Inc. +0002f5 VIVE Synergies, Inc. +0002f6 Equipe Communications +0002f7 ARM +0002f8 SEAKR Engineering, Inc. +0002f9 MIMOS Berhad +0002fa DX Antenna Co., Ltd. +0002fb Baumuller Aulugen-Systemtechnik GmbH +0002fc Cisco Systems, Inc +0002fd Cisco Systems, Inc +0002fe Viditec, Inc. +0002ff Handan BroadInfoCom +000300 Barracuda Networks, Inc. +000301 EXFO +000302 Charles Industries, Ltd. +000303 JAMA Electronics Co., Ltd. +000304 Pacific Broadband Communications +000305 MSC Vertriebs GmbH +000306 Fusion In Tech Co., Ltd. +000307 Secure Works, Inc. +000308 AM Communications, Inc. +000309 Texcel Technology PLC +00030a Argus Technologies +00030b Hunter Technology, Inc. +00030c Telesoft Technologies Ltd. +00030d Uniwill Computer Corp. +00030e Core Communications Co., Ltd. +00030f Digital China (Shanghai) Networks Ltd. +000310 E-Globaledge Corporation +000311 Micro Technology Co., Ltd. +000312 TRsystems GmbH +000313 Access Media SPA +000314 Teleware Network Systems +000315 Cidco Incorporated +000316 Nobell Communications, Inc. +000317 Merlin Systems, Inc. +000318 Cyras Systems, Inc. +000319 Infineon AG +00031a Beijing Broad Telecom Ltd., China +00031b Cellvision Systems, Inc. +00031c Svenska Hardvarufabriken AB +00031d Taiwan Commate Computer, Inc. +00031e Optranet, Inc. +00031f Condev Ltd. +000320 Xpeed, Inc. +000321 Reco Research Co., Ltd. +000322 IDIS Co., Ltd. +000323 Cornet Technology, Inc. +000324 SANYO Consumer Electronics Co., Ltd. +000325 Arima Computer Corp. +000326 Iwasaki Information Systems Co., Ltd. +000327 ACT'L +000328 Mace Group, Inc. +000329 F3, Inc. +00032a UniData Communication Systems, Inc. +00032b GAI Datenfunksysteme GmbH +00032c ABB Switzerland Ltd +00032d IBASE Technology, Inc. +00032e Scope Information Management, Ltd. +00032f Global Sun Technology, Inc. +000330 Imagenics, Co., Ltd. +000331 Cisco Systems, Inc +000332 Cisco Systems, Inc +000333 Digitel Co., Ltd. +000334 Newport Electronics +000335 Mirae Technology +000336 Zetes Technologies +000337 Vaone, Inc. +000338 Oak Technology +000339 Eurologic Systems, Ltd. +00033a Silicon Wave, Inc. +00033b TAMI Tech Co., Ltd. +00033c Daiden Co., Ltd. +00033d ILSHin Lab +00033e Tateyama System Laboratory Co., Ltd. +00033f BigBand Networks, Ltd. +000340 Floware Wireless Systems, Ltd. +000341 Axon Digital Design +000342 Nortel Networks +000343 Martin Professional A/S +000344 Tietech.Co., Ltd. +000345 Routrek Networks Corporation +000346 Hitachi Kokusai Electric, Inc. +000347 Intel Corporation +000348 Norscan Instruments, Ltd. +000349 Vidicode Datacommunicatie B.V. +00034a RIAS Corporation +00034b Nortel Networks +00034c Shanghai DigiVision Technology Co., Ltd. +00034d Chiaro Networks, Ltd. +00034e Pos Data Company, Ltd. +00034f Sur-Gard Security +000350 BTICINO SPA +000351 Diebold, Inc. +000352 Colubris Networks +000353 Mitac, Inc. +000354 Fiber Logic Communications +000355 TeraBeam Internet Systems +000356 Wincor Nixdorf International GmbH +000357 Intervoice-Brite, Inc. +000358 Hanyang Digitech Co.Ltd +000359 DigitalSis +00035a Photron Limited +00035b BridgeWave Communications +00035c Saint Song Corp. +00035d Bosung Hi-Net Co., Ltd. +00035e Metropolitan Area Networks, Inc. +00035f Prüftechnik Condition Monitoring GmbH & Co. KG +000360 PAC Interactive Technology, Inc. +000361 Widcomm, Inc. +000362 Vodtel Communications, Inc. +000363 Miraesys Co., Ltd. +000364 Scenix Semiconductor, Inc. +000365 Kira Information & Communications, Ltd. +000366 ASM Pacific Technology +000367 Jasmine Networks, Inc. +000368 Embedone Co., Ltd. +000369 Nippon Antenna Co., Ltd. +00036a Mainnet, Ltd. +00036b Cisco Systems, Inc +00036c Cisco Systems, Inc +00036d Runtop, Inc. +00036e Nicon Systems (Pty) Limited +00036f Telsey SPA +000370 NXTV, Inc. +000371 Acomz Networks Corp. +000372 ULAN +000373 Aselsan A.S +000374 Control Microsystems +000375 NetMedia, Inc. +000376 Graphtec Technology, Inc. +000377 Gigabit Wireless +000378 HUMAX Co., Ltd. +000379 Proscend Communications, Inc. +00037a Taiyo Yuden Co., Ltd. +00037b IDEC IZUMI Corporation +00037c Coax Media +00037d Stellcom +00037e PORTech Communications, Inc. +00037f Atheros Communications, Inc. +000380 SSH Communications Security Corp. +000381 Ingenico International +000382 A-One Co., Ltd. +000383 Metera Networks, Inc. +000384 AETA +000385 Actelis Networks, Inc. +000386 Ho Net, Inc. +000387 Blaze Network Products +000388 Fastfame Technology Co., Ltd. +000389 PLANTRONICS, INC. +00038a America Online, Inc. +00038b PLUS-ONE I&T, Inc. +00038c Total Impact +00038d PCS Revenue Control Systems, Inc. +00038e Atoga Systems, Inc. +00038f Weinschel Corporation +000390 Digital Video Communications, Inc. +000391 Advanced Digital Broadcast, Ltd. +000392 Hyundai Teletek Co., Ltd. +000393 Apple, Inc. +000394 Connect One +000395 California Amplifier +000396 EZ Cast Co., Ltd. +000397 FireBrick Limited +000398 WISI +000399 Dongju Informations & Communications Co., Ltd. +00039a SiConnect +00039b NetChip Technology, Inc. +00039c OptiMight Communications, Inc. +00039d Qisda Corporation +00039e Tera System Co., Ltd. +00039f Cisco Systems, Inc +0003a0 Cisco Systems, Inc +0003a1 HIPER Information & Communication, Inc. +0003a2 Catapult Communications +0003a3 MAVIX, Ltd. +0003a4 Imation Corp. +0003a5 Medea Corporation +0003a6 Traxit Technology, Inc. +0003a7 Unixtar Technology, Inc. +0003a8 IDOT Computers, Inc. +0003a9 AXCENT Media AG +0003aa Watlow +0003ab Bridge Information Systems +0003ac Fronius Schweissmaschinen +0003ad Emerson Energy Systems AB +0003ae Allied Advanced Manufacturing Pte, Ltd. +0003af Paragea Communications +0003b0 Xsense Technology Corp. +0003b1 Hospira Inc. +0003b2 Radware +0003b3 IA Link Systems Co., Ltd. +0003b4 Macrotek International Corp. +0003b5 Entra Technology Co. +0003b6 QSI Corporation +0003b7 ZACCESS Systems +0003b8 NetKit Solutions, LLC +0003b9 Hualong Telecom Co., Ltd. +0003ba Oracle Corporation +0003bb Signal Communications Limited +0003bc COT GmbH +0003bd OmniCluster Technologies, Inc. +0003be Netility +0003bf Centerpoint Broadband Technologies, Inc. +0003c0 RFTNC Co., Ltd. +0003c1 Packet Dynamics Ltd +0003c2 Solphone K.K. +0003c3 Micronik Multimedia +0003c4 Tomra Systems ASA +0003c5 Mobotix AG +0003c6 ICUE Systems, Inc. +0003c7 hopf Elektronik GmbH +0003c8 CML Emergency Services +0003c9 TECOM Co., Ltd. +0003ca MTS Systems Corp. +0003cb Nippon Systems Development Co., Ltd. +0003cc Momentum Computer, Inc. +0003cd Clovertech, Inc. +0003ce ETEN Technologies, Inc. +0003cf Muxcom, Inc. +0003d0 KOANKEISO Co., Ltd. +0003d1 Takaya Corporation +0003d2 Crossbeam Systems, Inc. +0003d3 Internet Energy Systems, Inc. +0003d4 Alloptic, Inc. +0003d5 Advanced Communications Co., Ltd. +0003d6 RADVision, Ltd. +0003d7 NextNet Wireless, Inc. +0003d8 iMPath Networks, Inc. +0003d9 Secheron SA +0003da Takamisawa Cybernetics Co., Ltd. +0003db Apogee Electronics Corp. +0003dc Lexar Media, Inc. +0003dd Comark Interactive Solutions +0003de OTC Wireless +0003df Desana Systems +0003e0 ARRIS Group, Inc. +0003e1 Winmate Communication, Inc. +0003e2 Comspace Corporation +0003e3 Cisco Systems, Inc +0003e4 Cisco Systems, Inc +0003e5 Hermstedt SG +0003e6 Entone, Inc. +0003e7 Logostek Co. Ltd. +0003e8 Wavelength Digital Limited +0003e9 Akara Canada, Inc. +0003ea Mega System Technologies, Inc. +0003eb Atrica +0003ec ICG Research, Inc. +0003ed Shinkawa Electric Co., Ltd. +0003ee MKNet Corporation +0003ef Oneline AG +0003f0 Redfern Broadband Networks +0003f1 Cicada Semiconductor, Inc. +0003f2 Seneca Networks +0003f3 Dazzle Multimedia, Inc. +0003f4 NetBurner +0003f5 Chip2Chip +0003f6 Allegro Networks, Inc. +0003f7 Plast-Control GmbH +0003f8 SanCastle Technologies, Inc. +0003f9 Pleiades Communications, Inc. +0003fa TiMetra Networks +0003fb ENEGATE Co.,Ltd. +0003fc Intertex Data AB +0003fd Cisco Systems, Inc +0003fe Cisco Systems, Inc +0003ff Microsoft Corporation +000400 LEXMARK INTERNATIONAL, INC. +000401 Osaki Electric Co., Ltd. +000402 Nexsan Technologies, Ltd. +000403 Nexsi Corporation +000404 Makino Milling Machine Co., Ltd. +000405 ACN Technologies +000406 Fa. Metabox AG +000407 Topcon Positioning Systems, Inc. +000408 Sanko Electronics Co., Ltd. +000409 Cratos Networks +00040a Sage Systems +00040b 3COM EUROPE LTD +00040c Kanno Works, Ltd. +00040d Avaya Inc +00040e AVM GmbH +00040f Asus Network Technologies, Inc. +000410 Spinnaker Networks, Inc. +000411 Inkra Networks, Inc. +000412 WaveSmith Networks, Inc. +000413 snom technology GmbH +000414 Umezawa Musen Denki Co., Ltd. +000415 Rasteme Systems Co., Ltd. +000416 Parks S/A Comunicacoes Digitais +000417 ELAU AG +000418 Teltronic S.A.U. +000419 Fibercycle Networks, Inc. +00041a Ines Test and Measurement GmbH & CoKG +00041b Bridgeworks Ltd. +00041c ipDialog, Inc. +00041d Corega of America +00041e Shikoku Instrumentation Co., Ltd. +00041f Sony Interactive Entertainment Inc. +000420 Slim Devices, Inc. +000421 Ocular Networks +000422 Studio Technologies, Inc +000423 Intel Corporation +000424 TMC s.r.l. +000425 Atmel Corporation +000426 Autosys +000427 Cisco Systems, Inc +000428 Cisco Systems, Inc +000429 Pixord Corporation +00042a Wireless Networks, Inc. +00042b IT Access Co., Ltd. +00042c Minet, Inc. +00042d Sarian Systems, Ltd. +00042e Netous Technologies, Ltd. +00042f International Communications Products, Inc. +000430 Netgem +000431 GlobalStreams, Inc. +000432 Voyetra Turtle Beach, Inc. +000433 Cyberboard A/S +000434 Accelent Systems, Inc. +000435 InfiNet LLC +000436 ELANsat Technologies, Inc. +000437 Powin Information Technology, Inc. +000438 Nortel Networks +000439 Rosco Entertainment Technology, Inc. +00043a Intelligent Telecommunications, Inc. +00043b Lava Computer Mfg., Inc. +00043c SONOS Co., Ltd. +00043d INDEL AG +00043e Telencomm +00043f ESTeem Wireless Modems, Inc +000440 cyberPIXIE, Inc. +000441 Half Dome Systems, Inc. +000442 NACT +000443 Agilent Technologies, Inc. +000444 Western Multiplex Corporation +000445 LMS Skalar Instruments GmbH +000446 CYZENTECH Co., Ltd. +000447 Acrowave Systems Co., Ltd. +000448 Polaroid Corporation +000449 Mapletree Networks +00044a iPolicy Networks, Inc. +00044b NVIDIA +00044c JENOPTIK +00044d Cisco Systems, Inc +00044e Cisco Systems, Inc +00044f Schubert System Elektronik Gmbh +000450 DMD Computers SRL +000451 Medrad, Inc. +000452 RocketLogix, Inc. +000453 YottaYotta, Inc. +000454 Quadriga UK +000455 ANTARA.net +000456 Cambium Networks Limited +000457 Universal Access Technology, Inc. +000458 Fusion X Co., Ltd. +000459 Veristar Corporation +00045a The Linksys Group, Inc. +00045b Techsan Electronics Co., Ltd. +00045c Mobiwave Pte Ltd +00045d BEKA Elektronik +00045e PolyTrax Information Technology AG +00045f Avalue Technology, Inc. +000460 Knilink Technology, Inc. +000461 EPOX Computer Co., Ltd. +000462 DAKOS Data & Communication Co., Ltd. +000463 Bosch Security Systems +000464 Pulse-Link Inc +000465 i.s.t isdn-support technik GmbH +000466 ARMITEL Co. +000467 Wuhan Research Institute of MII +000468 Vivity, Inc. +000469 Innocom, Inc. +00046a Navini Networks +00046b Palm Wireless, Inc. +00046c Cyber Technology Co., Ltd. +00046d Cisco Systems, Inc +00046e Cisco Systems, Inc +00046f Digitel S/A Industria Eletronica +000470 ipUnplugged AB +000471 IPrad +000472 Telelynx, Inc. +000473 Photonex Corporation +000474 LEGRAND +000475 3COM +000476 3COM +000477 Scalant Systems, Inc. +000478 G. Star Technology Corporation +000479 Radius Co., Ltd. +00047a AXXESSIT ASA +00047b Schlumberger +00047c Skidata AG +00047d Pelco +00047e Siqura B.V. +00047f Chr. Mayr GmbH & Co. KG +000480 Brocade Communications Systems, Inc. +000481 Econolite Control Products, Inc. +000482 Medialogic Corp. +000483 Deltron Technology, Inc. +000484 Amann GmbH +000485 PicoLight +000486 ITTC, University of Kansas +000487 Cogency Semiconductor, Inc. +000488 Eurotherm Controls +000489 YAFO Networks, Inc. +00048a Temia Vertriebs GmbH +00048b Poscon Corporation +00048c Nayna Networks, Inc. +00048d Teo Technologies, Inc +00048e Ohm Tech Labs, Inc. +00048f TD Systems Corporation +000490 Optical Access +000491 Technovision, Inc. +000492 Hive Internet, Ltd. +000493 Tsinghua Unisplendour Co., Ltd. +000494 Breezecom, Ltd. +000495 Tejas Networks India Limited +000496 Extreme Networks, Inc. +000497 MacroSystem Digital Video AG +000498 Mahi Networks +000499 Chino Corporation +00049a Cisco Systems, Inc +00049b Cisco Systems, Inc +00049c Surgient Networks, Inc. +00049d Ipanema Technologies +00049e Wirelink Co., Ltd. +00049f Freescale Semiconductor +0004a0 Verity Instruments, Inc. +0004a1 Pathway Connectivity +0004a2 L.S.I. Japan Co., Ltd. +0004a3 Microchip Technology Inc. +0004a4 NetEnabled, Inc. +0004a5 Barco Projection Systems NV +0004a6 SAF Tehnika Ltd. +0004a7 FabiaTech Corporation +0004a8 Broadmax Technologies, Inc. +0004a9 SandStream Technologies, Inc. +0004aa Jetstream Communications +0004ab Mavenir Inc. +0004ac IBM Corp +0004ad Malibu Networks +0004ae Sullair Corporation +0004af Digital Fountain, Inc. +0004b0 ELESIGN Co., Ltd. +0004b1 Signal Technology, Inc. +0004b2 ESSEGI SRL +0004b3 Videotek, Inc. +0004b4 CIAC +0004b5 Equitrac Corporation +0004b6 Stratex Networks, Inc. +0004b7 AMB i.t. Holding +0004b8 Kumahira Co., Ltd. +0004b9 S.I. Soubou, Inc. +0004ba KDD Media Will Corporation +0004bb Bardac Corporation +0004bc Giantec, Inc. +0004bd ARRIS Group, Inc. +0004be OptXCon, Inc. +0004bf VersaLogic Corp. +0004c0 Cisco Systems, Inc +0004c1 Cisco Systems, Inc +0004c2 Magnipix, Inc. +0004c3 CASTOR Informatique +0004c4 Audiotonix Group Limited +0004c5 ASE Technologies, USA +0004c6 YAMAHA MOTOR CO.,LTD +0004c7 NetMount +0004c8 LIBA Maschinenfabrik GmbH +0004c9 Micro Electron Co., Ltd. +0004ca FreeMs Corp. +0004cb Tdsoft Communication, Ltd. +0004cc Peek Traffic B.V. +0004cd Extenway Solutions Inc +0004ce Patria Ailon +0004cf Seagate Technology +0004d0 Softlink s.r.o. +0004d1 Drew Technologies, Inc. +0004d2 Adcon Telemetry GmbH +0004d3 Toyokeiki Co., Ltd. +0004d4 Proview Electronics Co., Ltd. +0004d5 Hitachi Information & Communication Engineering, Ltd. +0004d6 Takagi Industrial Co., Ltd. +0004d7 Omitec Instrumentation Ltd. +0004d8 IPWireless, Inc. +0004d9 Titan Electronics, Inc. +0004da Relax Technology, Inc. +0004db Tellus Group Corp. +0004dc Nortel Networks +0004dd Cisco Systems, Inc +0004de Cisco Systems, Inc +0004df TERACOM TELEMATICA S.A +0004e0 Procket Networks +0004e1 Infinior Microsystems +0004e2 SMC Networks, Inc. +0004e3 Accton Technology Corp +0004e4 Daeryung Ind., Inc. +0004e5 Glonet Systems, Inc. +0004e6 Banyan Network Private Limited +0004e7 Lightpointe Communications, Inc +0004e8 IER, Inc. +0004e9 Infiniswitch Corporation +0004ea Hewlett Packard +0004eb Paxonet Communications, Inc. +0004ec Memobox SA +0004ed Billion Electric Co., Ltd. +0004ee Lincoln Electric Company +0004ef Polestar Corp. +0004f0 International Computers, Ltd +0004f1 WhereNet +0004f2 Polycom +0004f3 FS FORTH-SYSTEME GmbH +0004f4 Infinite Electronics Inc. +0004f5 SnowShore Networks, Inc. +0004f6 Amphus +0004f7 Omega Band, Inc. +0004f8 QUALICABLE TV Industria E Com., Ltda +0004f9 Xtera Communications, Inc. +0004fa NBS Technologies Inc. +0004fb Commtech, Inc. +0004fc Stratus Technologies +0004fd Japan Control Engineering Co., Ltd. +0004fe Pelago Networks +0004ff Acronet Co., Ltd. +000500 Cisco Systems, Inc +000501 Cisco Systems, Inc +000502 Apple, Inc. +000503 ICONAG +000504 Naray Information & Communication Enterprise +000505 Systems Integration Solutions, Inc. +000506 Reddo Networks AB +000507 Fine Appliance Corp. +000508 Inetcam, Inc. +000509 AVOC Nishimura Ltd. +00050a ICS Spa +00050b SICOM Systems, Inc. +00050c Network Photonics, Inc. +00050d Midstream Technologies, Inc. +00050e 3ware, Inc. +00050f Tanaka S/S Ltd. +000510 Infinite Shanghai Communication Terminals Ltd. +000511 Complementary Technologies Ltd +000512 Zebra Technologies Inc +000513 VTLinx Multimedia Systems, Inc. +000514 KDT Systems Co., Ltd. +000515 Nuark Co., Ltd. +000516 SMART Modular Technologies +000517 Shellcomm, Inc. +000518 Jupiters Technology +000519 Siemens Building Technologies AG, +00051a 3COM EUROPE LTD +00051b Magic Control Technology Corporation +00051c Xnet Technology Corp. +00051d Airocon, Inc. +00051e Brocade Communications Systems, Inc. +00051f Taijin Media Co., Ltd. +000520 Smartronix, Inc. +000521 Control Microsystems +000522 LEA*D Corporation, Inc. +000523 AVL List GmbH +000524 BTL System (HK) Limited +000525 Puretek Industrial Co., Ltd. +000526 IPAS GmbH +000527 SJ Tek Co. Ltd +000528 New Focus, Inc. +000529 Shanghai Broadan Communication Technology Co., Ltd +00052a Ikegami Tsushinki Co., Ltd. +00052b HORIBA, Ltd. +00052c Supreme Magic Corporation +00052d Zoltrix International Limited +00052e Cinta Networks +00052f Leviton Network Solutions +000530 Andiamo Systems, Inc. +000531 Cisco Systems, Inc +000532 Cisco Systems, Inc +000533 Brocade Communications Systems, Inc. +000534 Northstar Engineering Ltd. +000535 Chip PC Ltd. +000536 Danam Communications, Inc. +000537 Nets Technology Co., Ltd. +000538 Merilus, Inc. +000539 A Brand New World in Sweden AB +00053a Willowglen Services Pte Ltd +00053b Harbour Networks Ltd., Co. Beijing +00053c XIRCOM +00053d Agere Systems +00053e KID Systeme GmbH +00053f VisionTek, Inc. +000540 FAST Corporation +000541 Advanced Systems Co., Ltd. +000542 Otari, Inc. +000543 IQ Wireless GmbH +000544 Valley Technologies, Inc. +000545 Internet Photonics +000546 KDDI Network & Solultions Inc. +000547 Starent Networks +000548 Disco Corporation +000549 Salira Optical Network Systems +00054a Ario Data Networks, Inc. +00054b Eaton Automation AG +00054c RF Innovations Pty Ltd +00054d Brans Technologies, Inc. +00054e Philips +00054f Garmin International +000550 Vcomms Connect Limited +000551 F & S Elektronik Systeme GmbH +000552 Xycotec Computer GmbH +000553 DVC Company, Inc. +000554 Rangestar Wireless +000555 Japan Cash Machine Co., Ltd. +000556 360 Systems +000557 Agile TV Corporation +000558 Synchronous, Inc. +000559 Intracom S.A. +00055a Power Dsine Ltd. +00055b Charles Industries, Ltd. +00055c Kowa Company, Ltd. +00055d D-LINK SYSTEMS, INC. +00055e Cisco Systems, Inc +00055f Cisco Systems, Inc +000560 LEADER COMM.CO., LTD +000561 nac Image Technology, Inc. +000562 Digital View Limited +000563 J-Works, Inc. +000564 Tsinghua Bitway Co., Ltd. +000565 Tailyn Communication Company Ltd. +000566 Secui.com Corporation +000567 Etymonic Design, Inc. +000568 Piltofish Networks AB +000569 VMware, Inc. +00056a Heuft Systemtechnik GmbH +00056b C.P. Technology Co., Ltd. +00056c Hung Chang Co., Ltd. +00056d Pacific Corporation +00056e National Enhance Technology, Inc. +00056f Innomedia Technologies Pvt. Ltd. +000570 Baydel Ltd. +000571 Seiwa Electronics Co. +000572 Deonet Co., Ltd. +000573 Cisco Systems, Inc +000574 Cisco Systems, Inc +000575 CDS-Electronics BV +000576 NSM Technology Ltd. +000577 SM Information & Communication +000578 Private +000579 Universal Control Solution Corp. +00057a Overture Networks +00057b Chung Nam Electronic Co., Ltd. +00057c RCO Security AB +00057d Sun Communications, Inc. +00057e Eckelmann Steuerungstechnik GmbH +00057f Acqis Technology +000580 FibroLAN Ltd. +000581 Snell +000582 ClearCube Technology +000583 ImageCom Limited +000584 AbsoluteValue Systems, Inc. +000585 Juniper Networks +000586 Lucent Technologies +000587 Locus, Incorporated +000588 Sensoria Corp. +000589 National Datacomputer +00058a Netcom Co., Ltd. +00058b IPmental, Inc. +00058c Opentech Inc. +00058d Lynx Photonic Networks, Inc. +00058e Flextronics International GmbH & Co. Nfg. KG +00058f CLCsoft co. +000590 Swissvoice Ltd. +000591 Active Silicon Ltd +000592 Pultek Corp. +000593 Grammar Engine Inc. +000594 HMS Industrial Networks +000595 Alesis Corporation +000596 Genotech Co., Ltd. +000597 Eagle Traffic Control Systems +000598 CRONOS S.r.l. +000599 DRS Test and Energy Management or DRS-TEM +00059a Cisco Systems, Inc +00059b Cisco Systems, Inc +00059c Kleinknecht GmbH, Ing. Büro +00059d Daniel Computing Systems, Inc. +00059e Zinwell Corporation +00059f Yotta Networks, Inc. +0005a0 MOBILINE Kft. +0005a1 Zenocom +0005a2 CELOX Networks +0005a3 QEI, Inc. +0005a4 Lucid Voice Ltd. +0005a5 KOTT +0005a6 Extron Electronics +0005a7 HYPERCHIP Inc. +0005a8 WYLE ELECTRONICS +0005a9 Princeton Networks, Inc. +0005aa Moore Industries International Inc. +0005ab Cyber Fone, Inc. +0005ac Northern Digital, Inc. +0005ad Topspin Communications, Inc. +0005ae Mediaport USA +0005af InnoScan Computing A/S +0005b0 Korea Computer Technology Co., Ltd. +0005b1 ASB Technology BV +0005b2 Medison Co., Ltd. +0005b3 Asahi-Engineering Co., Ltd. +0005b4 Aceex Corporation +0005b5 Broadcom Technologies +0005b6 INSYS Microelectronics GmbH +0005b7 Arbor Technology Corp. +0005b8 Electronic Design Associates, Inc. +0005b9 Airvana, Inc. +0005ba Area Netwoeks, Inc. +0005bb Myspace AB +0005bc Resource Data Management Ltd +0005bd ROAX BV +0005be Kongsberg Seatex AS +0005bf JustEzy Technology, Inc. +0005c0 Digital Network Alacarte Co., Ltd. +0005c1 A-Kyung Motion, Inc. +0005c2 Soronti, Inc. +0005c3 Pacific Instruments, Inc. +0005c4 Telect, Inc. +0005c5 Flaga HF +0005c6 Triz Communications +0005c7 I/F-COM A/S +0005c8 VERYTECH +0005c9 LG Innotek Co., Ltd. +0005ca Hitron Technology, Inc. +0005cb ROIS Technologies, Inc. +0005cc Sumtel Communications, Inc. +0005cd D&M Holdings Inc. +0005ce Prolink Microsystems Corporation +0005cf Thunder River Technologies, Inc. +0005d0 Solinet Systems +0005d1 Metavector Technologies +0005d2 DAP Technologies +0005d3 eProduction Solutions, Inc. +0005d4 FutureSmart Networks, Inc. +0005d5 Speedcom Wireless +0005d6 L-3 Linkabit +0005d7 Vista Imaging, Inc. +0005d8 Arescom, Inc. +0005d9 Techno Valley, Inc. +0005da Apex Automationstechnik +0005db PSI Nentec GmbH +0005dc Cisco Systems, Inc +0005dd Cisco Systems, Inc +0005de Gi Fone Korea, Inc. +0005df Electronic Innovation, Inc. +0005e0 Empirix Corp. +0005e1 Trellis Photonics, Ltd. +0005e2 Creativ Network Technologies +0005e3 LightSand Communications, Inc. +0005e4 Red Lion Controls Inc. +0005e5 Renishaw PLC +0005e6 Egenera, Inc. +0005e7 Netrake an AudioCodes Company +0005e8 TurboWave, Inc. +0005e9 Unicess Network, Inc. +0005ea Rednix +0005eb Blue Ridge Networks, Inc. +0005ec Mosaic Systems Inc. +0005ed Technikum Joanneum GmbH +0005ee Vanderbilt International (SWE) AB +0005ef ADOIR Digital Technology +0005f0 SATEC +0005f1 Vrcom, Inc. +0005f2 Power R, Inc. +0005f3 Webyn +0005f4 System Base Co., Ltd. +0005f5 Geospace Technologies +0005f6 Young Chang Co. Ltd. +0005f7 Analog Devices, Inc. +0005f8 Real Time Access, Inc. +0005f9 TOA Corporation +0005fa IPOptical, Inc. +0005fb ShareGate, Inc. +0005fc Schenck Pegasus Corp. +0005fd PacketLight Networks Ltd. +0005fe Traficon N.V. +0005ff SNS Solutions, Inc. +000600 Toshiba Teli Corporation +000601 Otanikeiki Co., Ltd. +000602 Cirkitech Electronics Co. +000603 Baker Hughes Inc. +000604 @Track Communications, Inc. +000605 Inncom International, Inc. +000606 RapidWAN, Inc. +000607 Omni Directional Control Technology Inc. +000608 At-Sky SAS +000609 Crossport Systems +00060a Blue2space +00060b Artesyn Embedded Technologies +00060c Melco Industries, Inc. +00060d Wave7 Optics +00060e IGYS Systems, Inc. +00060f Narad Networks Inc +000610 Abeona Networks Inc +000611 Zeus Wireless, Inc. +000612 Accusys, Inc. +000613 Kawasaki Microelectronics Incorporated +000614 Prism Holdings +000615 Kimoto Electric Co., Ltd. +000616 Tel Net Co., Ltd. +000617 Redswitch Inc. +000618 DigiPower Manufacturing Inc. +000619 Connection Technology Systems +00061a Zetari Inc. +00061b Notebook Development Lab. Lenovo Japan Ltd. +00061c Hoshino Metal Industries, Ltd. +00061d MIP Telecom, Inc. +00061e Maxan Systems +00061f Vision Components GmbH +000620 Serial System Ltd. +000621 Hinox, Co., Ltd. +000622 Chung Fu Chen Yeh Enterprise Corp. +000623 MGE UPS Systems France +000624 Gentner Communications Corp. +000625 The Linksys Group, Inc. +000626 MWE GmbH +000627 Uniwide Technologies, Inc. +000628 Cisco Systems, Inc +000629 IBM Corp +00062a Cisco Systems, Inc +00062b INTRASERVER TECHNOLOGY +00062c Bivio Networks +00062d TouchStar Technologies, L.L.C. +00062e Aristos Logic Corp. +00062f Pivotech Systems Inc. +000630 Adtranz Sweden +000631 Calix Inc. +000632 Mesco Engineering GmbH +000633 Cross Match Technologies GmbH +000634 GTE Airfone Inc. +000635 PacketAir Networks, Inc. +000636 Jedai Broadband Networks +000637 Toptrend-Meta Information (ShenZhen) Inc. +000638 Sungjin C&C Co., Ltd. +000639 Newtec +00063a Dura Micro, Inc. +00063b Arcturus Networks Inc. +00063c Intrinsyc Software International Inc. +00063d Microwave Data Systems Inc. +00063e Opthos Inc. +00063f Everex Communications Inc. +000640 White Rock Networks +000641 ITCN +000642 Genetel Systems Inc. +000643 SONO Computer Co., Ltd. +000644 NextGen Business Solutions, Inc +000645 Meisei Electric Co. Ltd. +000646 ShenZhen XunBao Network Technology Co Ltd +000647 Etrali S.A. +000648 Seedsware, Inc. +000649 3M Deutschland GmbH +00064a Honeywell Co., Ltd. (KOREA) +00064b Alexon Co., Ltd. +00064c Invicta Networks, Inc. +00064d Sencore +00064e Broad Net Technology Inc. +00064f PRO-NETS Technology Corporation +000650 Tiburon Networks, Inc. +000651 Aspen Networks Inc. +000652 Cisco Systems, Inc +000653 Cisco Systems, Inc +000654 Winpresa Building Automation Technologies GmbH +000655 Yipee, Inc. +000656 Tactel AB +000657 Market Central, Inc. +000658 Helmut Fischer GmbH Institut für Elektronik und Messtechnik +000659 EAL (Apeldoorn) B.V. +00065a Strix Systems +00065b Dell Inc. +00065c Malachite Technologies, Inc. +00065d Heidelberg Web Systems +00065e Photuris, Inc. +00065f ECI Telecom Ltd. +000660 NADEX Co., Ltd. +000661 NIA Home Technologies Corp. +000662 MBM Technology Ltd. +000663 Human Technology Co., Ltd. +000664 Fostex Corporation +000665 Sunny Giken, Inc. +000666 Roving Networks +000667 Tripp Lite +000668 Vicon Industries Inc. +000669 Datasound Laboratories Ltd +00066a InfiniCon Systems, Inc. +00066b Sysmex Corporation +00066c Robinson Corporation +00066d Compuprint S.P.A. +00066e Delta Electronics, Inc. +00066f Korea Data Systems +000670 Upponetti Oy +000671 Softing AG +000672 Netezza +000673 TKH Security Solutions USA +000674 Spectrum Control, Inc. +000675 Banderacom, Inc. +000676 Novra Technologies Inc. +000677 SICK AG +000678 D&M Holdings Inc. +000679 Konami Corporation +00067a JMP Systems +00067b Toplink C&C Corporation +00067c Cisco Systems, Inc +00067d Takasago Ltd. +00067e WinCom Systems, Inc. +00067f Digeo, Inc. +000680 Card Access, Inc. +000681 Goepel Electronic GmbH +000682 Convedia +000683 Bravara Communications, Inc. +000684 Biacore AB +000685 NetNearU Corporation +000686 ZARDCOM Co., Ltd. +000687 Omnitron Systems Technology, Inc. +000688 Telways Communication Co., Ltd. +000689 yLez Technologies Pte Ltd +00068a NeuronNet Co. Ltd. R&D Center +00068b AirRunner Technologies, Inc. +00068c 3COM +00068d SEPATON, Inc. +00068e HID Corporation +00068f Telemonitor, Inc. +000690 Euracom Communication GmbH +000691 PT Inovacao +000692 Intruvert Networks, Inc. +000693 Flexus Computer Technology, Inc. +000694 Mobillian Corporation +000695 Ensure Technologies, Inc. +000696 Advent Networks +000697 R & D Center +000698 egnite GmbH +000699 Vida Design Co. +00069a e & Tel +00069b AVT Audio Video Technologies GmbH +00069c Transmode Systems AB +00069d Petards Ltd +00069e UNIQA, Inc. +00069f Kuokoa Networks +0006a0 Mx Imaging +0006a1 Celsian Technologies, Inc. +0006a2 Microtune, Inc. +0006a3 Bitran Corporation +0006a4 INNOWELL Corp. +0006a5 PINON Corp. +0006a6 Artistic Licence Engineering Ltd +0006a7 Primarion +0006a8 KC Technology, Inc. +0006a9 Universal Instruments Corp. +0006aa VT Miltope +0006ab W-Link Systems, Inc. +0006ac Intersoft Co. +0006ad KB Electronics Ltd. +0006ae Himachal Futuristic Communications Ltd +0006af Xalted Networks +0006b0 Comtech EF Data Corp. +0006b1 Sonicwall +0006b2 Linxtek Co. +0006b3 Diagraph Corporation +0006b4 Vorne Industries, Inc. +0006b5 Source Photonics, Inc. +0006b6 Nir-Or Israel Ltd. +0006b7 TELEM GmbH +0006b8 Bandspeed Pty Ltd +0006b9 A5TEK Corp. +0006ba Westwave Communications +0006bb ATI Technologies Inc. +0006bc Macrolink, Inc. +0006bd BNTECHNOLOGY Co., Ltd. +0006be Baumer Optronic GmbH +0006bf Accella Technologies Co., Ltd. +0006c0 United Internetworks, Inc. +0006c1 Cisco Systems, Inc +0006c2 Smartmatic Corporation +0006c3 Schindler Elevator Ltd. +0006c4 Piolink Inc. +0006c5 INNOVI Technologies Limited +0006c6 lesswire AG +0006c7 RFNET Technologies Pte Ltd (S) +0006c8 Sumitomo Metal Micro Devices, Inc. +0006c9 Technical Marketing Research, Inc. +0006ca American Computer & Digital Components, Inc. (ACDC) +0006cb Jotron Electronics A/S +0006cc JMI Electronics Co., Ltd. +0006cd Leaf Imaging Ltd. +0006ce DATENO +0006cf Thales Avionics In-Flight Systems, LLC +0006d0 Elgar Electronics Corp. +0006d1 Tahoe Networks, Inc. +0006d2 Tundra Semiconductor Corp. +0006d3 Alpha Telecom, Inc. U.S.A. +0006d4 Interactive Objects, Inc. +0006d5 Diamond Systems Corp. +0006d6 Cisco Systems, Inc +0006d7 Cisco Systems, Inc +0006d8 Maple Optical Systems +0006d9 IPM-Net S.p.A. +0006da ITRAN Communications Ltd. +0006db ICHIPS Co., Ltd. +0006dc Syabas Technology (Amquest) +0006dd AT & T Laboratories - Cambridge Ltd +0006de Flash Technology +0006df AIDONIC Corporation +0006e0 MAT Co., Ltd. +0006e1 Techno Trade s.a +0006e2 Ceemax Technology Co., Ltd. +0006e3 Quantitative Imaging Corporation +0006e4 Citel Technologies Ltd. +0006e5 Fujian Newland Computer Ltd. Co. +0006e6 DongYang Telecom Co., Ltd. +0006e7 Bit Blitz Communications Inc. +0006e8 Optical Network Testing, Inc. +0006e9 Intime Corp. +0006ea ELZET80 Mikrocomputer GmbH&Co. KG +0006eb Global Data +0006ec Harris Corporation +0006ed Inara Networks +0006ee Shenyang Neu-era Information & Technology Stock Co., Ltd +0006ef Maxxan Systems, Inc. +0006f0 Digeo, Inc. +0006f1 Optillion +0006f2 Platys Communications +0006f3 AcceLight Networks +0006f4 Prime Electronics & Satellitics Inc. +0006f5 ALPS ELECTRIC CO., LTD. +0006f6 Cisco Systems, Inc +0006f7 ALPS ELECTRIC CO., LTD. +0006f8 The Boeing Company +0006f9 Mitsui Zosen Systems Research Inc. +0006fa IP SQUARE Co, Ltd. +0006fb Hitachi Printing Solutions, Ltd. +0006fc Fnet Co., Ltd. +0006fd Comjet Information Systems Corp. +0006fe Ambrado, Inc +0006ff Sheba Systems Co., Ltd. +000700 Zettamedia Korea +000701 RACAL-DATACOM +000702 Varex Imaging +000703 CSEE Transport +000704 ALPS ELECTRIC CO., LTD. +000705 Endress & Hauser GmbH & Co +000706 Sanritz Corporation +000707 Interalia Inc. +000708 Bitrage Inc. +000709 Westerstrand Urfabrik AB +00070a Unicom Automation Co., Ltd. +00070b Novabase SGPS, SA +00070c SVA-Intrusion.com Co. Ltd. +00070d Cisco Systems, Inc +00070e Cisco Systems, Inc +00070f Fujant, Inc. +000710 Adax, Inc. +000711 Acterna +000712 JAL Information Technology +000713 IP One, Inc. +000714 Brightcom +000715 General Research of Electronics, Inc. +000716 J & S Marine Ltd. +000717 Wieland Electric GmbH +000718 iCanTek Co., Ltd. +000719 Mobiis Co., Ltd. +00071a Finedigital Inc. +00071b CDVI Americas Ltd +00071c AT&T +00071d Satelsa Sistemas Y Aplicaciones De Telecomunicaciones, S.A. +00071e Tri-M Engineering / Nupak Dev. Corp. +00071f European Systems Integration +000720 Trutzschler GmbH & Co. KG +000721 Formac Elektronik GmbH +000722 The Nielsen Company +000723 ELCON Systemtechnik GmbH +000724 Telemax Co., Ltd. +000725 Bematech International Corp. +000726 SHENZHEN GONGJIN ELECTRONICS CO.,LT +000727 Zi Corporation (HK) Ltd. +000728 Neo Telecom +000729 Kistler Instrumente AG +00072a Innovance Networks +00072b Jung Myung Telecom Co., Ltd. +00072c Fabricom +00072d CNSystems +00072e North Node AB +00072f Intransa, Inc. +000730 Hutchison OPTEL Telecom Technology Co., Ltd. +000731 Ophir-Spiricon LLC +000732 AAEON Technology Inc. +000733 DANCONTROL Engineering +000734 ONStor, Inc. +000735 Flarion Technologies, Inc. +000736 Data Video Technologies Co., Ltd. +000737 Soriya Co. Ltd. +000738 Young Technology Co., Ltd. +000739 Scotty Group Austria Gmbh +00073a INVENTEL +00073b Tenovis GmbH & Co KG +00073c Telecom Design +00073d Nanjing Postel Telecommunications Co., Ltd. +00073e China Great-Wall Computer Shenzhen Co., Ltd. +00073f Woojyun Systec Co., Ltd. +000740 BUFFALO.INC +000741 Sierra Automated Systems +000742 Ormazabal +000743 Chelsio Communications +000744 Unico, Inc. +000745 Radlan Computer Communications Ltd. +000746 TURCK, Inc. +000747 Mecalc +000748 The Imaging Source Europe +000749 CENiX Inc. +00074a Carl Valentin GmbH +00074b Daihen Corporation +00074c Beicom Inc. +00074d Zebra Technologies Corp. +00074e IPFRONT Inc +00074f Cisco Systems, Inc +000750 Cisco Systems, Inc +000751 m-u-t AG +000752 Rhythm Watch Co., Ltd. +000753 Beijing Qxcomm Technology Co., Ltd. +000754 Xyterra Computing, Inc. +000755 Lafon +000756 Juyoung Telecom +000757 Topcall International AG +000758 DragonWave Inc. +000759 Boris Manufacturing Corp. +00075a Air Products and Chemicals, Inc. +00075b Gibson Guitars +00075c Eastman Kodak Company +00075d Celleritas Inc. +00075e Ametek Power Instruments +00075f VCS Video Communication Systems AG +000760 TOMIS Information & Telecom Corp. +000761 29530 +000762 Group Sense Limited +000763 Sunniwell Cyber Tech. Co., Ltd. +000764 YoungWoo Telecom Co. Ltd. +000765 Jade Quantum Technologies, Inc. +000766 Chou Chin Industrial Co., Ltd. +000767 Yuxing Electronics Company Limited +000768 Danfoss A/S +000769 Italiana Macchi SpA +00076a NEXTEYE Co., Ltd. +00076b Stralfors AB +00076c Daehanet, Inc. +00076d Flexlight Networks +00076e Sinetica Corporation Limited +00076f Synoptics Limited +000770 Ubiquoss Inc +000771 Embedded System Corporation +000772 Alcatel-Lucent Shanghai Bell Co., Ltd +000773 Ascom Powerline Communications Ltd. +000774 GuangZhou Thinker Technology Co. Ltd. +000775 Valence Semiconductor, Inc. +000776 Federal APD +000777 Motah Ltd. +000778 GERSTEL GmbH & Co. KG +000779 Sungil Telecom Co., Ltd. +00077a Infoware System Co., Ltd. +00077b Millimetrix Broadband Networks +00077c Westermo Network Technologies AB +00077d Cisco Systems, Inc +00077e Elrest GmbH +00077f J Communications Co., Ltd. +000780 Bluegiga Technologies OY +000781 Itron Inc. +000782 Oracle Corporation +000783 SynCom Network, Inc. +000784 Cisco Systems, Inc +000785 Cisco Systems, Inc +000786 Wireless Networks Inc. +000787 Idea System Co., Ltd. +000788 Clipcomm, Inc. +000789 Allradio Co., Ltd +00078a Mentor Data System Inc. +00078b Wegener Communications, Inc. +00078c Elektronikspecialisten i Borlange AB +00078d NetEngines Ltd. +00078e Garz & Friche GmbH +00078f Emkay Innovative Products +000790 Tri-M Technologies (s) Limited +000791 International Data Communications, Inc. +000792 Sütron Electronic GmbH +000793 Shin Satellite Public Company Limited +000794 Simple Devices, Inc. +000795 Elitegroup Computer Systems Co.,Ltd. +000796 LSI Systems, Inc. +000797 Netpower Co., Ltd. +000798 Selea SRL +000799 Tipping Point Technologies, Inc. +00079a Verint Systems Inc +00079b Aurora Networks +00079c Golden Electronics Technology Co., Ltd. +00079d Musashi Co., Ltd. +00079e Ilinx Co., Ltd. +00079f Action Digital Inc. +0007a0 e-Watch Inc. +0007a1 VIASYS Healthcare GmbH +0007a2 Opteon Corporation +0007a3 Ositis Software, Inc. +0007a4 GN Netcom Ltd. +0007a5 Y.D.K Co. Ltd. +0007a6 Leviton Manufacturing Co., Inc. +0007a7 A-Z Inc. +0007a8 Haier Group Technologies Ltd +0007a9 Novasonics +0007aa Quantum Data Inc. +0007ab Samsung Electronics Co.,Ltd +0007ac Eolring +0007ad Pentacon GmbH Foto-und Feinwerktechnik +0007ae Britestream Networks, Inc. +0007af Red Lion Controls, LP +0007b0 Office Details, Inc. +0007b1 Equator Technologies +0007b2 Transaccess S.A. +0007b3 Cisco Systems, Inc +0007b4 Cisco Systems, Inc +0007b5 Any One Wireless Ltd. +0007b6 Telecom Technology Ltd. +0007b7 Samurai Ind. Prods Eletronicos Ltda +0007b8 Corvalent Corporation +0007b9 Ginganet Corporation +0007ba UTStarcom Inc +0007bb Candera Inc. +0007bc Identix Inc. +0007bd Radionet Ltd. +0007be DataLogic SpA +0007bf Armillaire Technologies, Inc. +0007c0 NetZerver Inc. +0007c1 Overture Networks, Inc. +0007c2 Netsys Telecom +0007c3 Thomson +0007c4 JEAN Co. Ltd. +0007c5 Gcom, Inc. +0007c6 VDS Vosskuhler GmbH +0007c7 Synectics Systems Limited +0007c8 Brain21, Inc. +0007c9 Technol Seven Co., Ltd. +0007ca Creatix Polymedia Ges Fur Kommunikaitonssysteme +0007cb FREEBOX SAS +0007cc Kaba Benzing GmbH +0007cd Kumoh Electronic Co, Ltd +0007ce Cabletime Limited +0007cf Anoto AB +0007d0 Automat Engenharia de Automação Ltda. +0007d1 Spectrum Signal Processing Inc. +0007d2 Logopak Systeme GmbH & Co. KG +0007d3 SPGPrints B.V. +0007d4 Zhejiang Yutong Network Communication Co Ltd. +0007d5 3e Technologies Int;., Inc. +0007d6 Commil Ltd. +0007d7 Caporis Networks AG +0007d8 Hitron Technologies. Inc +0007d9 Splicecom +0007da Neuro Telecom Co., Ltd. +0007db Kirana Networks, Inc. +0007dc Atek Co, Ltd. +0007dd Cradle Technologies +0007de eCopilt AB +0007df Vbrick Systems Inc. +0007e0 Palm Inc. +0007e1 WIS Communications Co. Ltd. +0007e2 Bitworks, Inc. +0007e3 Navcom Technology, Inc. +0007e4 SoftRadio Co., Ltd. +0007e5 Coup Corporation +0007e6 edgeflow Canada Inc. +0007e7 FreeWave Technologies +0007e8 EdgeWave +0007e9 Intel Corporation +0007ea Massana, Inc. +0007eb Cisco Systems, Inc +0007ec Cisco Systems, Inc +0007ed Altera Corporation +0007ee telco Informationssysteme GmbH +0007ef Lockheed Martin Tactical Systems +0007f0 LogiSync LLC +0007f1 TeraBurst Networks Inc. +0007f2 IOA Corporation +0007f3 Thinkengine Networks +0007f4 Eletex Co., Ltd. +0007f5 Bridgeco Co AG +0007f6 Qqest Software Systems +0007f7 Galtronics +0007f8 ITDevices, Inc. +0007f9 Sensaphone +0007fa ITT Co., Ltd. +0007fb Giga Stream UMTS Technologies GmbH +0007fc Adept Systems Inc. +0007fd LANergy Ltd. +0007fe Rigaku Corporation +0007ff Gluon Networks +000800 MULTITECH SYSTEMS, INC. +000801 HighSpeed Surfing Inc. +000802 Hewlett Packard +000803 Cos Tron +000804 ICA Inc. +000805 Techno-Holon Corporation +000806 Raonet Systems, Inc. +000807 Access Devices Limited +000808 PPT Vision, Inc. +000809 Systemonic AG +00080a Espera-Werke GmbH +00080b Birka BPA Informationssystem AB +00080c VDA Elettronica spa +00080d Toshiba +00080e ARRIS Group, Inc. +00080f Proximion Fiber Optics AB +000810 Key Technology, Inc. +000811 VOIX Corporation +000812 GM-2 Corporation +000813 Diskbank, Inc. +000814 TIL Technologies +000815 CATS Co., Ltd. +000816 Bluelon ApS +000817 EmergeCore Networks LLC +000818 Pixelworks, Inc. +000819 Banksys +00081a Sanrad Intelligence Storage Communications (2000) Ltd. +00081b Windigo Systems +00081c @pos.com +00081d Ipsil, Incorporated +00081e Repeatit AB +00081f Pou Yuen Tech Corp. Ltd. +000820 Cisco Systems, Inc +000821 Cisco Systems, Inc +000822 InPro Comm +000823 Texa Corp. +000824 Nuance Document Imaging +000825 Acme Packet +000826 Colorado Med Tech +000827 ADB Broadband Italia +000828 Koei Engineering Ltd. +000829 TOKYO ELECTRON DEVICE NAGASAKI LIMITED +00082a Powerwallz Network Security +00082b Wooksung Electronics, Inc. +00082c Homag AG +00082d Indus Teqsite Private Limited +00082e Multitone Electronics PLC +00082f Cisco Systems, Inc +000830 Cisco Systems, Inc +000831 Cisco Systems, Inc +000832 Cisco Systems, Inc +00084e DivergeNet, Inc. +00084f Qualstar Corporation +000850 Arizona Instrument Corp. +000851 Canadian Bank Note Company, Ltd. +000852 Davolink Co. Inc. +000853 Schleicher GmbH & Co. Relaiswerke KG +000854 Netronix, Inc. +000855 NASA-Goddard Space Flight Center +000856 Gamatronic Electronic Industries Ltd. +000857 Polaris Networks, Inc. +000858 Novatechnology Inc. +000859 ShenZhen Unitone Electronics Co., Ltd. +00085a IntiGate Inc. +00085b Hanbit Electronics Co., Ltd. +00085c Shanghai Dare Technologies Co. Ltd. +00085d Mitel Corporation +00085e PCO AG +00085f Picanol N.V. +000860 LodgeNet Entertainment Corp. +000861 SoftEnergy Co., Ltd. +000862 NEC Eluminant Technologies, Inc. +000863 Entrisphere Inc. +000864 Fasy S.p.A. +000865 JASCOM CO., LTD +000866 DSX Access Systems, Inc. +000867 Uptime Devices +000868 PurOptix +000869 Command-e Technology Co.,Ltd. +00086a Securiton Gmbh +00086b MIPSYS +00086c Plasmon LMS +00086d Missouri FreeNet +00086e Hyglo AB +00086f Resources Computer Network Ltd. +000870 Rasvia Systems, Inc. +000871 NORTHDATA Co., Ltd. +000872 Sorenson Communications +000873 DapTechnology B.V. +000874 Dell Inc. +000875 Acorp Electronics Corp. +000876 SDSystem +000877 Liebert-Hiross Spa +000878 Benchmark Storage Innovations +000879 CEM Corporation +00087a Wipotec GmbH +00087b RTX Telecom A/S +00087c Cisco Systems, Inc +00087d Cisco Systems, Inc +00087e Bon Electro-Telecom Inc. +00087f SPAUN electronic GmbH & Co. KG +000880 BroadTel Canada Communications inc. +000881 DIGITAL HANDS CO.,LTD. +000882 SIGMA CORPORATION +000883 Hewlett Packard +000884 Index Braille AB +000885 EMS Dr. Thomas Wünsche +000886 Hansung Teliann, Inc. +000887 Maschinenfabrik Reinhausen GmbH +000888 OULLIM Information Technology Inc,. +000889 Dish Technologies Corp +00088a Minds@Work +00088b Tropic Networks Inc. +00088c Quanta Network Systems Inc. +00088d Sigma-Links Inc. +00088e Nihon Computer Co., Ltd. +00088f ADVANCED DIGITAL TECHNOLOGY +000890 AVILINKS SA +000891 Lyan Inc. +000892 EM Solutions +000893 LE INFORMATION COMMUNICATION INC. +000894 InnoVISION Multimedia Ltd. +000895 DIRC Technologie GmbH & Co.KG +000896 Printronix, Inc. +000897 Quake Technologies +000898 Gigabit Optics Corporation +000899 Netbind, Inc. +00089a Alcatel Microelectronics +00089b ICP Electronics Inc. +00089c Elecs Industry Co., Ltd. +00089d UHD-Elektronik +00089e Beijing Enter-Net co.LTD +00089f EFM Networks +0008a0 Stotz Feinmesstechnik GmbH +0008a1 CNet Technology Inc. +0008a2 ADI Engineering, Inc. +0008a3 Cisco Systems, Inc +0008a4 Cisco Systems, Inc +0008a5 Peninsula Systems Inc. +0008a6 Multiware & Image Co., Ltd. +0008a7 iLogic Inc. +0008a8 Systec Co., Ltd. +0008a9 SangSang Technology, Inc. +0008aa KARAM +0008ab EnerLinx.com, Inc. +0008ac Eltromat GmbH +0008ad Toyo-Linx Co., Ltd. +0008ae PacketFront Network Products AB +0008af Novatec Corporation +0008b0 BKtel communications GmbH +0008b1 ProQuent Systems +0008b2 SHENZHEN COMPASS TECHNOLOGY DEVELOPMENT CO.,LTD +0008b3 Fastwel +0008b4 SYSPOL +0008b5 TAI GUEN ENTERPRISE CO., LTD +0008b6 RouteFree, Inc. +0008b7 HIT Incorporated +0008b8 E.F. Johnson +0008b9 Kaonmedia CO., LTD. +0008ba Erskine Systems Ltd +0008bb NetExcell +0008bc Ilevo AB +0008bd TEPG-US +0008be XENPAK MSA Group +0008bf Aptus Elektronik AB +0008c0 ASA SYSTEMS +0008c1 Avistar Communications Corporation +0008c2 Cisco Systems, Inc +0008c3 Contex A/S +0008c4 Hikari Co.,Ltd. +0008c5 Liontech Co., Ltd. +0008c6 Philips Consumer Communications +0008c7 Hewlett Packard +0008c8 Soneticom, Inc. +0008c9 TechniSat Digital GmbH Daun +0008ca TwinHan Technology Co.,Ltd +0008cb Zeta Broadband Inc. +0008cc Remotec, Inc. +0008cd With-Net Inc +0008ce IPMobileNet Inc. +0008cf Nippon Koei Power Systems Co., Ltd. +0008d0 Musashi Engineering Co., LTD. +0008d1 KAREL INC. +0008d2 ZOOM Networks Inc. +0008d3 Hercules Technologies S.A.S. +0008d4 IneoQuest Technologies, Inc +0008d5 Vanguard Networks Solutions, LLC +0008d6 HASSNET Inc. +0008d7 HOW CORPORATION +0008d8 Dowkey Microwave +0008d9 Mitadenshi Co.,LTD +0008da SofaWare Technologies Ltd. +0008db Corrigent Systems +0008dc Wiznet +0008dd Telena Communications, Inc. +0008de 3UP Systems +0008df Alistel Inc. +0008e0 ATO Technology Ltd. +0008e1 Barix AG +0008e2 Cisco Systems, Inc +0008e3 Cisco Systems, Inc +0008e4 Envenergy Inc +0008e5 IDK Corporation +0008e6 Littlefeet +0008e7 SHI ControlSystems,Ltd. +0008e8 Excel Master Ltd. +0008e9 NextGig +0008ea Motion Control Engineering, Inc +0008eb ROMWin Co.,Ltd. +0008ec Optical Zonu Corporation +0008ed ST&T Instrument Corp. +0008ee Logic Product Development +0008ef DIBAL,S.A. +0008f0 Next Generation Systems, Inc. +0008f1 Voltaire +0008f2 C&S Technology +0008f3 WANY +0008f4 Bluetake Technology Co., Ltd. +0008f5 YESTECHNOLOGY Co.,Ltd. +0008f6 Sumitomo Electric Industries,Ltd +0008f7 Hitachi Ltd, Semiconductor & Integrated Circuits Gr +0008f8 UTC CCS +0008f9 Artesyn Embedded Technologies +0008fa KEB Automation KG +0008fb SonoSite, Inc. +0008fc Gigaphoton Inc. +0008fd BlueKorea Co., Ltd. +0008fe UNIK C&C Co.,Ltd. +0008ff Trilogy Communications Ltd +000900 TMT +000901 Shenzhen Shixuntong Information & Technoligy Co +000902 Redline Communications Inc. +000903 Panasas, Inc +000904 MONDIAL electronic +000905 iTEC Technologies Ltd. +000906 Esteem Networks +000907 Chrysalis Development +000908 VTech Technology Corp. +000909 Telenor Connect A/S +00090a SnedFar Technology Co., Ltd. +00090b MTL Instruments PLC +00090c Mayekawa Mfg. Co. Ltd. +00090d LEADER ELECTRONICS CORP. +00090e Helix Technology Inc. +00090f Fortinet Inc. +000910 Simple Access Inc. +000911 Cisco Systems, Inc +000912 Cisco Systems, Inc +000913 SystemK Corporation +000914 COMPUTROLS INC. +000915 CAS Corp. +000916 Listman Home Technologies, Inc. +000917 WEM Technology Inc +000918 SAMSUNG TECHWIN CO.,LTD +000919 MDS Gateways +00091a Macat Optics & Electronics Co., Ltd. +00091b Digital Generation Inc. +00091c CacheVision, Inc +00091d Proteam Computer Corporation +00091e Firstech Technology Corp. +00091f A&D Co., Ltd. +000920 EpoX COMPUTER CO.,LTD. +000921 Planmeca Oy +000922 TST Biometrics GmbH +000923 Heaman System Co., Ltd +000924 Telebau GmbH +000925 VSN Systemen BV +000926 YODA COMMUNICATIONS, INC. +000927 TOYOKEIKI CO.,LTD. +000928 Telecore +000929 Sanyo Industries (UK) Limited +00092a MYTECS Co.,Ltd. +00092b iQstor Networks, Inc. +00092c Hitpoint Inc. +00092d HTC Corporation +00092e B&Tech System Inc. +00092f Akom Technology Corporation +000930 AeroConcierge Inc. +000931 Future Internet, Inc. +000932 Omnilux +000933 Ophit Co.Ltd. +000934 Dream-Multimedia-Tv GmbH +000935 Sandvine Incorporated +000936 Ipetronik GmbH & Co. KG +000937 Inventec Appliance Corp +000938 Allot Communications +000939 ShibaSoku Co.,Ltd. +00093a Molex CMS +00093b HYUNDAI NETWORKS INC. +00093c Jacques Technologies P/L +00093d Newisys,Inc. +00093e C&I Technologies +00093f Double-Win Enterpirse CO., LTD +000940 AGFEO GmbH & Co. KG +000941 Allied Telesis R&D Center K.K. +000942 Wireless Technologies, Inc +000943 Cisco Systems, Inc +000944 Cisco Systems, Inc +000945 Palmmicro Communications Inc +000946 Cluster Labs GmbH +000947 Aztek, Inc. +000948 Vista Control Systems, Corp. +000949 Glyph Technologies Inc. +00094a Homenet Communications +00094b FillFactory NV +00094c Communication Weaver Co.,Ltd. +00094d Braintree Communications Pty Ltd +00094e BARTECH SYSTEMS INTERNATIONAL, INC +00094f elmegt GmbH & Co. KG +000950 Independent Storage Corporation +000951 Apogee Imaging Systems +000952 Auerswald GmbH & Co. KG +000953 Linkage System Integration Co.Ltd. +000954 AMiT spol. s. r. o. +000955 Young Generation International Corp. +000956 Network Systems Group, Ltd. (NSG) +000957 Supercaller, Inc. +000958 INTELNET S.A. +000959 Sitecsoft +00095a RACEWOOD TECHNOLOGY +00095b NETGEAR +00095c Philips Medical Systems - Cardiac and Monitoring Systems (CM +00095d Dialogue Technology Corp. +00095e Masstech Group Inc. +00095f Telebyte, Inc. +000960 YOZAN Inc. +000961 Switchgear and Instrumentation Ltd +000962 Sonitor Technologies AS +000963 Dominion Lasercom Inc. +000964 Hi-Techniques, Inc. +000965 HyunJu Computer Co., Ltd. +000966 TRIMBLE EUROPE BV +000967 Tachyon, Inc +000968 TECHNOVENTURE, INC. +000969 Meret Optical Communications +00096a Cloverleaf Communications Inc. +00096b IBM Corp +00096c Imedia Semiconductor Corp. +00096d Powernet Technologies Corp. +00096e GIANT ELECTRONICS LTD. +00096f Beijing Zhongqing Elegant Tech. Corp.,Limited +000970 Vibration Research Corporation +000971 Time Management, Inc. +000972 Securebase,Inc +000973 Lenten Technology Co., Ltd. +000974 Innopia Technologies, Inc. +000975 fSONA Communications Corporation +000976 Datasoft ISDN Systems GmbH +000977 Brunner Elektronik AG +000978 AIJI System Co., Ltd. +000979 Advanced Television Systems Committee, Inc. +00097a Louis Design Labs. +00097b Cisco Systems, Inc +00097c Cisco Systems, Inc +00097d SecWell Networks Oy +00097e IMI TECHNOLOGY CO., LTD +00097f Vsecure 2000 LTD. +000980 Power Zenith Inc. +000981 Newport Networks +000982 Loewe Opta GmbH +000983 GlobalTop Technology, Inc. +000984 MyCasa Network Inc. +000985 Auto Telecom Company +000986 Metalink LTD. +000987 NISHI NIPPON ELECTRIC WIRE & CABLE CO.,LTD. +000988 Nudian Electron Co., Ltd. +000989 VividLogic Inc. +00098a EqualLogic Inc +00098b Entropic Communications, Inc. +00098c Option Wireless Sweden +00098d Velocity Semiconductor +00098e ipcas GmbH +00098f Cetacean Networks +000990 ACKSYS Communications & systems +000991 GE Fanuc Automation Manufacturing, Inc. +000992 InterEpoch Technology,INC. +000993 Visteon Corporation +000994 Cronyx Engineering +000995 Castle Technology Ltd +000996 RDI +000997 Nortel Networks +000998 Capinfo Company Limited +000999 CP GEORGES RENAULT +00099a ELMO COMPANY, LIMITED +00099b Western Telematic Inc. +00099c Naval Research Laboratory +00099d Haliplex Communications +00099e Testech, Inc. +00099f VIDEX INC. +0009a0 Microtechno Corporation +0009a1 Telewise Communications, Inc. +0009a2 Interface Co., Ltd. +0009a3 Leadfly Techologies Corp. Ltd. +0009a4 HARTEC Corporation +0009a5 HANSUNG ELETRONIC INDUSTRIES DEVELOPMENT CO., LTD +0009a6 Ignis Optics, Inc. +0009a7 Bang & Olufsen A/S +0009a8 Eastmode Pte Ltd +0009a9 Ikanos Communications +0009aa Data Comm for Business, Inc. +0009ab Netcontrol Oy +0009ac LANVOICE +0009ad HYUNDAI SYSCOMM, INC. +0009ae OKANO ELECTRIC CO.,LTD +0009af e-generis +0009b0 Onkyo Corporation +0009b1 Kanematsu Electronics, Ltd. +0009b2 L&F Inc. +0009b3 MCM Systems Ltd +0009b4 KISAN TELECOM CO., LTD. +0009b5 3J Tech. Co., Ltd. +0009b6 Cisco Systems, Inc +0009b7 Cisco Systems, Inc +0009b8 Entise Systems +0009b9 Action Imaging Solutions +0009ba MAKU Informationstechik GmbH +0009bb MathStar, Inc. +0009bc Utility, Inc +0009bd Epygi Technologies, Ltd. +0009be Mamiya-OP Co.,Ltd. +0009bf Nintendo Co., Ltd. +0009c0 6WIND +0009c1 PROCES-DATA A/S +0009c2 Onity, Inc. +0009c3 NETAS +0009c4 Medicore Co., Ltd +0009c5 KINGENE Technology Corporation +0009c6 Visionics Corporation +0009c7 Movistec +0009c8 SINAGAWA TSUSHIN KEISOU SERVICE +0009c9 BlueWINC Co., Ltd. +0009ca iMaxNetworks(Shenzhen)Limited. +0009cb HBrain +0009cc Moog GmbH +0009cd HUDSON SOFT CO.,LTD. +0009ce SpaceBridge Semiconductor Corp. +0009cf iAd GmbH +0009d0 Solacom Technologies Inc. +0009d1 SERANOA NETWORKS INC +0009d2 Mai Logic Inc. +0009d3 Western DataCom Co., Inc. +0009d4 Transtech Networks +0009d5 Signal Communication, Inc. +0009d6 KNC One GmbH +0009d7 DC Security Products +0009d8 Fält Communications AB +0009d9 Neoscale Systems, Inc +0009da Control Module Inc. +0009db eSpace +0009dc Galaxis Technology AG +0009dd Mavin Technology Inc. +0009de Samjin Information & Communications Co., Ltd. +0009df Vestel Elektronik San ve Tic. A.Ş. +0009e0 XEMICS S.A. +0009e1 Gemtek Technology Co., Ltd. +0009e2 Sinbon Electronics Co., Ltd. +0009e3 Angel Iglesias S.A. +0009e4 K Tech Infosystem Inc. +0009e5 Hottinger Baldwin Messtechnik GmbH +0009e6 Cyber Switching Inc. +0009e7 ADC Techonology +0009e8 Cisco Systems, Inc +0009e9 Cisco Systems, Inc +0009ea YEM Inc. +0009eb HuMANDATA LTD. +0009ec Daktronics, Inc. +0009ed CipherOptics +0009ee MEIKYO ELECTRIC CO.,LTD +0009ef Vocera Communications +0009f0 Shimizu Technology Inc. +0009f1 Yamaki Electric Corporation +0009f2 Cohu, Inc., Electronics Division +0009f3 WELL Communication Corp. +0009f4 Alcon Laboratories, Inc. +0009f5 Emerson Network Power Co.,Ltd +0009f6 Shenzhen Eastern Digital Tech Ltd. +0009f7 SED, a division of Calian +0009f8 UNIMO TECHNOLOGY CO., LTD. +0009f9 ART JAPAN CO., LTD. +0009fb Philips Patient Monitoring +0009fc IPFLEX Inc. +0009fd Ubinetics Limited +0009fe Daisy Technologies, Inc. +0009ff X.net 2000 GmbH +000a00 Mediatek Corp. +000a01 SOHOware, Inc. +000a02 ANNSO CO., LTD. +000a03 ENDESA SERVICIOS, S.L. +000a04 3Com Ltd +000a05 Widax Corp. +000a06 Teledex LLC +000a07 WebWayOne Ltd +000a08 Alpine Electronics, Inc. +000a09 TaraCom Integrated Products, Inc. +000a0a SUNIX Co., Ltd. +000a0b Sealevel Systems, Inc. +000a0c Scientific Research Corporation +000a0d FCI Deutschland GmbH +000a0e Invivo Research Inc. +000a0f Ilryung Telesys, Inc +000a10 FAST media integrations AG +000a11 ExPet Technologies, Inc +000a12 Azylex Technology, Inc +000a13 Honeywell Video Systems +000a14 TECO a.s. +000a15 Silicon Data, Inc +000a16 Lassen Research +000a17 NESTAR COMMUNICATIONS, INC +000a18 Vichel Inc. +000a19 Valere Power, Inc. +000a1a Imerge Ltd +000a1b Stream Labs +000a1c Bridge Information Co., Ltd. +000a1d Optical Communications Products Inc. +000a1e Red-M Products Limited +000a1f ART WARE Telecommunication Co., Ltd. +000a20 SVA Networks, Inc. +000a21 Integra Telecom Co. Ltd +000a22 Amperion Inc +000a23 Parama Networks Inc +000a24 Octave Communications +000a25 CERAGON NETWORKS +000a26 CEIA S.p.A. +000a27 Apple, Inc. +000a28 Motorola +000a29 Pan Dacom Networking AG +000a2a QSI Systems Inc. +000a2b Etherstuff +000a2c Active Tchnology Corporation +000a2d Cabot Communications Limited +000a2e MAPLE NETWORKS CO., LTD +000a2f Artnix Inc. +000a30 Visteon Corporation +000a31 HCV Consulting +000a32 Xsido Corporation +000a33 Emulex Corporation +000a34 Identicard Systems Incorporated +000a35 Xilinx +000a36 Synelec Telecom Multimedia +000a37 Procera Networks, Inc. +000a38 Apani Networks +000a39 LoPA Information Technology +000a3a J-THREE INTERNATIONAL Holding Co., Ltd. +000a3b GCT Semiconductor, Inc +000a3c Enerpoint Ltd. +000a3d Elo Sistemas Eletronicos S.A. +000a3e EADS Telecom +000a3f Data East Corporation +000a40 Crown Audio -- Harmanm International +000a41 Cisco Systems, Inc +000a42 Cisco Systems, Inc +000a43 Chunghwa Telecom Co., Ltd. +000a44 Avery Dennison Deutschland GmbH +000a45 Audio-Technica Corp. +000a46 ARO WELDING TECHNOLOGIES SAS +000a47 Allied Vision Technologies +000a48 Albatron Technology +000a49 F5 Networks, Inc. +000a4a Targa Systems Ltd. +000a4b DataPower Technology, Inc. +000a4c Molecular Devices Corporation +000a4d Noritz Corporation +000a4e UNITEK Electronics INC. +000a4f Brain Boxes Limited +000a50 REMOTEK CORPORATION +000a51 GyroSignal Technology Co., Ltd. +000a52 AsiaRF Ltd. +000a53 Intronics, Incorporated +000a54 Laguna Hills, Inc. +000a55 MARKEM Corporation +000a56 HITACHI Maxell Ltd. +000a57 Hewlett Packard +000a58 Freyer & Siegel Elektronik GmbH & Co. KG +000a59 HW server +000a5a GreenNET Technologies Co.,Ltd. +000a5b Power-One as +000a5c Carel s.p.a. +000a5d FingerTec Worldwide Sdn Bhd +000a5e 3COM +000a5f almedio inc. +000a60 Autostar Technology Pte Ltd +000a61 Cellinx Systems Inc. +000a62 Crinis Networks, Inc. +000a63 DHD GmbH +000a64 Eracom Technologies +000a65 GentechMedia.co.,ltd. +000a66 MITSUBISHI ELECTRIC SYSTEM & SERVICE CO.,LTD. +000a67 OngCorp +000a68 Solarflare Communications Inc. +000a69 SUNNY bell Technology Co., Ltd. +000a6a SVM Microwaves s.r.o. +000a6b Tadiran Telecom Business Systems LTD +000a6c Walchem Corporation +000a6d EKS Elektronikservice GmbH +000a6e Harmonic, Inc +000a6f ZyFLEX Technologies Inc +000a70 MPLS Forum +000a71 Avrio Technologies, Inc +000a72 STEC, INC. +000a73 Scientific Atlanta +000a74 Manticom Networks Inc. +000a75 Caterpillar, Inc +000a76 Beida Jade Bird Huaguang Technology Co.,Ltd +000a77 Bluewire Technologies LLC +000a78 OLITEC +000a79 corega K.K +000a7a Kyoritsu Electric Co., Ltd. +000a7b Cornelius Consult +000a7c Tecton Ltd +000a7d Valo, Inc. +000a7e The Advantage Group +000a7f Teradon Industries, Inc +000a80 Telkonet Inc. +000a81 TEIMA Audiotex S.L. +000a82 TATSUTA SYSTEM ELECTRONICS CO.,LTD. +000a83 SALTO SYSTEMS S.L. +000a84 Rainsun Enterprise Co., Ltd. +000a85 PLAT'C2,Inc +000a86 Lenze +000a87 Integrated Micromachines Inc. +000a88 InCypher S.A. +000a89 Creval Systems, Inc. +000a8a Cisco Systems, Inc +000a8b Cisco Systems, Inc +000a8c Guardware Systems Ltd. +000a8d EUROTHERM LIMITED +000a8e Invacom Ltd +000a8f Aska International Inc. +000a90 Bayside Interactive, Inc. +000a91 HemoCue AB +000a92 Presonus Corporation +000a93 W2 Networks, Inc. +000a94 ShangHai cellink CO., LTD +000a95 Apple, Inc. +000a96 MEWTEL TECHNOLOGY INC. +000a97 SONICblue, Inc. +000a98 M+F Gwinner GmbH & Co +000a99 Calamp Wireless Networks Inc +000a9a Aiptek International Inc +000a9b TB Group Inc +000a9c Server Technology, Inc. +000a9d King Young Technology Co. Ltd. +000a9e BroadWeb Corportation +000a9f Pannaway Technologies, Inc. +000aa0 Cedar Point Communications +000aa1 V V S Limited +000aa2 SYSTEK INC. +000aa3 SHIMAFUJI ELECTRIC CO.,LTD. +000aa4 SHANGHAI SURVEILLANCE TECHNOLOGY CO,LTD +000aa5 MAXLINK INDUSTRIES LIMITED +000aa6 Hochiki Corporation +000aa7 FEI Electron Optics +000aa8 ePipe Pty. Ltd. +000aa9 Brooks Automation GmbH +000aaa AltiGen Communications Inc. +000aab Toyota Technical Development Corporation +000aac TerraTec Electronic GmbH +000aad Stargames Corporation +000aae Rosemount Process Analytical +000aaf Pipal Systems +000ab0 LOYTEC electronics GmbH +000ab1 GENETEC Corporation +000ab2 Fresnel Wireless Systems +000ab3 Fa. GIRA +000ab4 ETIC Telecommunications +000ab5 Digital Electronic Network +000ab6 COMPUNETIX, INC +000ab7 Cisco Systems, Inc +000ab8 Cisco Systems, Inc +000ab9 Astera Technologies Corp. +000aba Arcon Technology Limited +000abb Taiwan Secom Co,. Ltd +000abc Seabridge Ltd. +000abd Rupprecht & Patashnick Co. +000abe OPNET Technologies CO., LTD. +000abf HIROTA SS +000ac0 Fuyoh Video Industry CO., LTD. +000ac1 Futuretel +000ac2 Wuhan FiberHome Digital Technology Co.,Ltd. +000ac3 eM Technics Co., Ltd. +000ac4 Daewoo Teletech Co., Ltd +000ac5 Color Kinetics +000ac6 Overture Networks. +000ac7 Unication Group +000ac8 ZPSYS CO.,LTD. (Planning&Management) +000ac9 Zambeel Inc +000aca YOKOYAMA SHOKAI CO.,Ltd. +000acb XPAK MSA Group +000acc Winnow Networks, Inc. +000acd Sunrich Technology Limited +000ace RADIANTECH, INC. +000acf PROVIDEO Multimedia Co. Ltd. +000ad0 Niigata Develoment Center, F.I.T. Co., Ltd. +000ad1 MWS +000ad2 JEPICO Corporation +000ad3 INITECH Co., Ltd +000ad4 CoreBell Systems Inc. +000ad5 Brainchild Electronic Co., Ltd. +000ad6 BeamReach Networks +000ad7 Origin ELECTRIC CO.,LTD. +000ad8 IPCserv Technology Corp. +000ad9 Sony Mobile Communications Inc +000ada Vindicator Technologies +000adb Trilliant +000adc RuggedCom Inc. +000add Allworx Corp. +000ade Happy Communication Co., Ltd. +000adf Gennum Corporation +000ae0 Fujitsu Softek +000ae1 EG Technology +000ae2 Binatone Electronics International, Ltd +000ae3 YANG MEI TECHNOLOGY CO., LTD +000ae4 Wistron Corporation +000ae5 ScottCare Corporation +000ae6 Elitegroup Computer Systems Co.,Ltd. +000ae7 ELIOP S.A. +000ae8 Cathay Roxus Information Technology Co. LTD +000ae9 AirVast Technology Inc. +000aea ADAM ELEKTRONIK LTD. ŞTI +000aeb TP-LINK TECHNOLOGIES CO.,LTD. +000aec Koatsu Gas Kogyo Co., Ltd. +000aed HARTING Electronics GmbH +000aee GCD Hard- & Software GmbH +000aef OTRUM ASA +000af0 SHIN-OH ELECTRONICS CO., LTD. R&D +000af1 Clarity Design, Inc. +000af2 NeoAxiom Corp. +000af3 Cisco Systems, Inc +000af4 Cisco Systems, Inc +000af5 Airgo Networks, Inc. +000af6 Emerson Climate Technologies Retail Solutions, Inc. +000af7 Broadcom +000af8 American Telecare Inc. +000af9 HiConnect, Inc. +000afa Traverse Technologies Australia +000afb Ambri Limited +000afc Core Tec Communications, LLC +000afd Kentec Electronics +000afe NovaPal Ltd +000aff Kilchherr Elektronik AG +000b00 FUJIAN START COMPUTER EQUIPMENT CO.,LTD +000b01 DAIICHI ELECTRONICS CO., LTD. +000b02 Dallmeier electronic +000b03 Taekwang Industrial Co., Ltd +000b04 Volktek Corporation +000b05 Pacific Broadband Networks +000b06 ARRIS Group, Inc. +000b07 Voxpath Networks +000b08 Pillar Data Systems +000b09 Ifoundry Systems Singapore +000b0a dBm Optics +000b0b Corrent Corporation +000b0c Agile Systems Inc. +000b0d Air2U, Inc. +000b0e Trapeze Networks +000b0f Bosch Rexroth +000b10 11wave Technonlogy Co.,Ltd +000b11 HIMEJI ABC TRADING CO.,LTD. +000b12 NURI Telecom Co., Ltd. +000b13 ZETRON INC +000b14 ViewSonic Corporation +000b15 Platypus Technology +000b16 Communication Machinery Corporation +000b17 MKS Instruments +000b18 Private +000b19 Vernier Networks, Inc. +000b1a Industrial Defender, Inc. +000b1b Systronix, Inc. +000b1c SIBCO bv +000b1d LayerZero Power Systems, Inc. +000b1e KAPPA opto-electronics GmbH +000b1f I CON Computer Co. +000b20 Hirata corporation +000b21 G-Star Communications Inc. +000b22 Environmental Systems and Services +000b23 Siemens Home & Office Comm. Devices +000b24 AirLogic +000b25 Aeluros +000b26 Wetek Corporation +000b27 Scion Corporation +000b28 Quatech Inc. +000b29 LS(LG) Industrial Systems co.,Ltd +000b2a HOWTEL Co., Ltd. +000b2b HOSTNET CORPORATION +000b2c Eiki Industrial Co. Ltd. +000b2d Danfoss Inc. +000b2e Cal-Comp Electronics & Communications Company Ltd. +000b2f bplan GmbH +000b30 Beijing Gongye Science & Technology Co.,Ltd +000b31 Yantai ZhiYang Scientific and technology industry CO., LTD +000b32 VORMETRIC, INC. +000b33 Vivato Technologies +000b34 ShangHai Broadband Technologies CO.LTD +000b35 Quad Bit System co., Ltd. +000b36 Productivity Systems, Inc. +000b37 MANUFACTURE DES MONTRES ROLEX SA +000b38 Knürr GmbH +000b39 Keisoku Giken Co.,Ltd. +000b3a QuStream Corporation +000b3b devolo AG +000b3c Cygnal Integrated Products, Inc. +000b3d CONTAL OK Ltd. +000b3e BittWare, Inc +000b3f Anthology Solutions Inc. +000b40 Cambridge Industries Group (CIG) +000b41 Ing. Büro Dr. Beutlhauser +000b42 commax Co., Ltd. +000b43 Microscan Systems, Inc. +000b44 Concord IDea Corp. +000b45 Cisco Systems, Inc +000b46 Cisco Systems, Inc +000b47 Advanced Energy +000b48 sofrel +000b49 RF-Link System Inc. +000b4a Visimetrics (UK) Ltd +000b4b VISIOWAVE SA +000b4c Clarion (M) Sdn Bhd +000b4d Emuzed +000b4e VertexRSI, General Dynamics SatCOM Technologies, Inc. +000b4f Verifone +000b50 Oxygnet +000b51 Micetek International Inc. +000b52 JOYMAX ELECTRONICS CO. LTD. +000b53 INITIUM Co., Ltd. +000b54 BiTMICRO Networks, Inc. +000b55 ADInstruments +000b56 Cybernetics +000b57 Silicon Laboratories +000b58 Astronautics C.A LTD +000b59 ScriptPro, LLC +000b5a HyperEdge +000b5b Rincon Research Corporation +000b5c Newtech Co.,Ltd +000b5d FUJITSU LIMITED +000b5e Audio Engineering Society Inc. +000b5f Cisco Systems, Inc +000b60 Cisco Systems, Inc +000b61 Friedrich Lütze GmbH & Co. KG +000b62 ib-mohnen KG +000b63 Kaleidescape +000b64 Kieback & Peter GmbH & Co KG +000b65 Sy.A.C. srl +000b66 Teralink Communications +000b67 Topview Technology Corporation +000b68 Addvalue Communications Pte Ltd +000b69 Franke Finland Oy +000b6a Asiarock Technology Limited +000b6b Wistron Neweb Corporation +000b6c Sychip Inc. +000b6d SOLECTRON JAPAN NAKANIIDA +000b6e Neff Instrument Corp. +000b6f Media Streaming Networks Inc +000b70 Load Technology, Inc. +000b71 Litchfield Communications Inc. +000b72 Lawo AG +000b73 Kodeos Communications +000b74 Kingwave Technology Co., Ltd. +000b75 Iosoft Ltd. +000b76 ET&T Technology Co. Ltd. +000b77 Cogent Systems, Inc. +000b78 TAIFATECH INC. +000b79 X-COM, Inc. +000b7a L-3 Linkabit +000b7b Test-Um Inc. +000b7c Telex Communications +000b7d SOLOMON EXTREME INTERNATIONAL LTD. +000b7e SAGINOMIYA Seisakusho Inc. +000b7f Align Engineering LLC +000b80 Lycium Networks +000b81 Kaparel Corporation +000b82 Grandstream Networks, Inc. +000b83 DATAWATT B.V. +000b84 BODET +000b85 Cisco Systems, Inc +000b86 Aruba, a Hewlett Packard Enterprise Company +000b87 American Reliance Inc. +000b88 Vidisco ltd. +000b89 Top Global Technology, Ltd. +000b8a MITEQ Inc. +000b8b KERAJET, S.A. +000b8c Flextronics +000b8d Avvio Networks +000b8e Ascent Corporation +000b8f AKITA ELECTRONICS SYSTEMS CO.,LTD. +000b90 ADVA Optical Networking Ltd. +000b91 Aglaia Gesellschaft für Bildverarbeitung und Kommunikation mbH +000b92 Ascom Danmark A/S +000b93 Ritter Elektronik +000b94 Digital Monitoring Products, Inc. +000b95 eBet Gaming Systems Pty Ltd +000b96 Innotrac Diagnostics Oy +000b97 Matsushita Electric Industrial Co.,Ltd. +000b98 NiceTechVision +000b99 SensAble Technologies, Inc. +000b9a Shanghai Ulink Telecom Equipment Co. Ltd. +000b9b Sirius System Co, Ltd. +000b9c TriBeam Technologies, Inc. +000b9d TwinMOS Technologies Inc. +000b9e Yasing Technology Corp. +000b9f Neue ELSA GmbH +000ba0 T&L Information Inc. +000ba1 Fujikura Solutions Ltd. +000ba2 Sumitomo Electric Industries,Ltd +000ba3 Siemens AG +000ba4 Shiron Satellite Communications Ltd. (1996) +000ba5 Quasar Cipta Mandiri, PT +000ba6 Miyakawa Electric Works Ltd. +000ba7 Maranti Networks +000ba8 HANBACK ELECTRONICS CO., LTD. +000ba9 CloudShield Technologies, Inc. +000baa Aiphone co.,Ltd +000bab Advantech Technology (CHINA) Co., Ltd. +000bac 3Com Ltd +000bad PC-PoS Inc. +000bae Vitals System Inc. +000baf WOOJU COMMUNICATIONS Co,.Ltd +000bb0 Sysnet Telematica srl +000bb1 Super Star Technology Co., Ltd. +000bb2 SMALLBIG TECHNOLOGY +000bb3 RiT technologies Ltd. +000bb4 RDC Semiconductor Inc., +000bb5 nStor Technologies, Inc. +000bb6 Metalligence Technology Corp. +000bb7 Micro Systems Co.,Ltd. +000bb8 Kihoku Electronic Co. +000bb9 Imsys AB +000bba Harmonic, Inc +000bbb Etin Systems Co., Ltd +000bbc En Garde Systems, Inc. +000bbd Connexionz Limited +000bbe Cisco Systems, Inc +000bbf Cisco Systems, Inc +000bc0 China IWNComm Co., Ltd. +000bc1 Bay Microsystems, Inc. +000bc2 Corinex Communication Corp. +000bc3 Multiplex, Inc. +000bc4 BIOTRONIK GmbH & Co +000bc5 SMC Networks, Inc. +000bc6 ISAC, Inc. +000bc7 ICET S.p.A. +000bc8 AirFlow Networks +000bc9 Electroline Equipment +000bca DATAVAN TC +000bcb Fagor Automation , S. Coop +000bcc JUSAN, S.A. +000bcd Hewlett Packard +000bce Free2move AB +000bcf AGFA NDT INC. +000bd0 XiMeta Technology Americas Inc. +000bd1 Aeronix, Inc. +000bd2 Remopro Technology Inc. +000bd3 cd3o +000bd4 Beijing Wise Technology & Science Development Co.Ltd +000bd5 Nvergence, Inc. +000bd6 Paxton Access Ltd +000bd7 DORMA Time + Access GmbH +000bd8 Industrial Scientific Corp. +000bd9 General Hydrogen +000bda EyeCross Co.,Inc. +000bdb Dell Inc. +000bdc AKCP +000bdd TOHOKU RICOH Co., LTD. +000bde TELDIX GmbH +000bdf Shenzhen RouterD Networks Limited +000be0 SercoNet Ltd. +000be1 Nokia NET Product Operations +000be2 Lumenera Corporation +000be3 Key Stream Co., Ltd. +000be4 Hosiden Corporation +000be5 HIMS International Corporation +000be6 Datel Electronics +000be7 COMFLUX TECHNOLOGY INC. +000be8 AOIP +000be9 Actel Corporation +000bea Zultys Technologies +000beb Systegra AG +000bec NIPPON ELECTRIC INSTRUMENT, INC. +000bed ELM Inc. +000bee inc.jet, Incorporated +000bef Code Corporation +000bf0 MoTEX Products Co., Ltd. +000bf1 LAP Laser Applikations +000bf2 Chih-Kan Technology Co., Ltd. +000bf3 BAE SYSTEMS +000bf4 Private +000bf5 Shanghai Sibo Telecom Technology Co.,Ltd +000bf6 Nitgen Co., Ltd +000bf7 NIDEK CO.,LTD +000bf8 Infinera +000bf9 Gemstone Communications, Inc. +000bfa EXEMYS SRL +000bfb D-NET International Corporation +000bfc Cisco Systems, Inc +000bfd Cisco Systems, Inc +000bfe CASTEL Broadband Limited +000bff Berkeley Camera Engineering +000c00 BEB Industrie-Elektronik AG +000c01 Abatron AG +000c02 ABB Oy +000c03 HDMI Licensing, LLC +000c04 Tecnova +000c05 RPA Reserch Co., Ltd. +000c06 Nixvue Systems Pte Ltd +000c07 Iftest AG +000c08 HUMEX Technologies Corp. +000c09 Hitachi IE Systems Co., Ltd +000c0a Guangdong Province Electronic Technology Research Institute +000c0b Broadbus Technologies +000c0c APPRO TECHNOLOGY INC. +000c0d Communications & Power Industries / Satcom Division +000c0e XtremeSpectrum, Inc. +000c0f Techno-One Co., Ltd +000c10 PNI Corporation +000c11 NIPPON DEMPA CO.,LTD. +000c12 Micro-Optronic-Messtechnik GmbH +000c13 MediaQ +000c14 Diagnostic Instruments, Inc. +000c15 CyberPower Systems, Inc. +000c16 Concorde Microsystems Inc. +000c17 AJA Video Systems Inc +000c18 Zenisu Keisoku Inc. +000c19 Telio Communications GmbH +000c1a Quest Technical Solutions Inc. +000c1b ORACOM Co, Ltd. +000c1c MicroWeb Co., Ltd. +000c1d Mettler & Fuchs AG +000c1e Global Cache +000c1f Glimmerglass Networks +000c20 Fi WIn, Inc. +000c21 Faculty of Science and Technology, Keio University +000c22 Double D Electronics Ltd +000c23 Beijing Lanchuan Tech. Co., Ltd. +000c24 ANATOR +000c25 Allied Telesis Labs, Inc. +000c26 Weintek Labs. Inc. +000c27 Sammy Corporation +000c28 RIFATRON +000c29 VMware, Inc. +000c2a OCTTEL Communication Co., Ltd. +000c2b ELIAS Technology, Inc. +000c2c Enwiser Inc. +000c2d FullWave Technology Co., Ltd. +000c2e Openet information technology(shenzhen) Co., Ltd. +000c2f SeorimTechnology Co.,Ltd. +000c30 Cisco Systems, Inc +000c31 Cisco Systems, Inc +000c32 Avionic Design Development GmbH +000c33 Compucase Enterprise Co. Ltd. +000c34 Vixen Co., Ltd. +000c35 KaVo Dental GmbH & Co. KG +000c36 SHARP TAKAYA ELECTRONICS INDUSTRY CO.,LTD. +000c37 Geomation, Inc. +000c38 TelcoBridges Inc. +000c39 Sentinel Wireless Inc. +000c3a Oxance +000c3b Orion Electric Co., Ltd. +000c3c MediaChorus, Inc. +000c3d Glsystech Co., Ltd. +000c3e Crest Audio +000c3f Cogent Defence & Security Networks, +000c40 Altech Controls +000c41 Cisco-Linksys, LLC +000c42 Routerboard.com +000c43 Ralink Technology, Corp. +000c44 Automated Interfaces, Inc. +000c45 Animation Technologies Inc. +000c46 Allied Telesyn Inc. +000c47 SK Teletech(R&D Planning Team) +000c48 QoStek Corporation +000c49 Dangaard Telecom Denmark A/S +000c4a Cygnus Microsystems (P) Limited +000c4b Cheops Elektronik +000c4c Arcor AG&Co. +000c4d Curtiss-Wright Controls Avionics & Electronics +000c4e Winbest Technology CO,LT +000c4f UDTech Japan Corporation +000c50 Seagate Technology +000c51 Scientific Technologies Inc. +000c52 Roll Systems Inc. +000c53 Private +000c54 Pedestal Networks, Inc +000c55 Microlink Communications Inc. +000c56 Megatel Computer (1986) Corp. +000c57 MACKIE Engineering Services Belgium BVBA +000c58 M&S Systems +000c59 Indyme Electronics, Inc. +000c5a IBSmm Embedded Electronics Consulting +000c5b HANWANG TECHNOLOGY CO.,LTD +000c5c GTN Systems B.V. +000c5d CHIC TECHNOLOGY (CHINA) CORP. +000c5e Calypso Medical +000c5f Avtec, Inc. +000c60 ACM Systems +000c61 AC Tech corporation DBA Advanced Digital +000c62 ABB AB, Cewe-Control +000c63 Zenith Electronics Corporation +000c64 X2 MSA Group +000c65 Sunin Telecom +000c66 Pronto Networks Inc +000c67 OYO ELECTRIC CO.,LTD +000c68 SigmaTel, Inc. +000c69 National Radio Astronomy Observatory +000c6a MBARI +000c6b Kurz Industrie-Elektronik GmbH +000c6c Eve Systems GmbH +000c6d Edwards Ltd. +000c6e ASUSTek COMPUTER INC. +000c6f Amtek system co.,LTD. +000c70 ACC GmbH +000c71 Wybron, Inc +000c72 Tempearl Industrial Co., Ltd. +000c73 TELSON ELECTRONICS CO., LTD +000c74 RIVERTEC CORPORATION +000c75 Oriental integrated electronics. LTD +000c76 MICRO-STAR INTERNATIONAL CO., LTD. +000c77 Life Racing Ltd +000c78 In-Tech Electronics Limited +000c79 Extel Communications P/L +000c7a DaTARIUS Technologies GmbH +000c7b ALPHA PROJECT Co.,Ltd. +000c7c Internet Information Image Inc. +000c7d TEIKOKU ELECTRIC MFG. CO., LTD +000c7e Tellium Incorporated +000c7f synertronixx GmbH +000c80 Opelcomm Inc. +000c81 Schneider Electric (Australia) +000c82 NETWORK TECHNOLOGIES INC +000c83 Logical Solutions +000c84 Eazix, Inc. +000c85 Cisco Systems, Inc +000c86 Cisco Systems, Inc +000c87 AMD +000c88 Apache Micro Peripherals, Inc. +000c89 AC Electric Vehicles, Ltd. +000c8a Bose Corporation +000c8b Connect Tech Inc +000c8c KODICOM CO.,LTD. +000c8d MATRIX VISION GmbH +000c8e Mentor Engineering Inc +000c8f Nergal s.r.l. +000c90 Octasic Inc. +000c91 Riverhead Networks Inc. +000c92 WolfVision Gmbh +000c93 Xeline Co., Ltd. +000c94 United Electronic Industries, Inc. (EUI) +000c95 PrimeNet +000c96 OQO, Inc. +000c97 NV ADB TTV Technologies SA +000c98 LETEK Communications Inc. +000c99 HITEL LINK Co.,Ltd +000c9a Hitech Electronics Corp. +000c9b EE Solutions, Inc +000c9c Chongho information & communications +000c9d UbeeAirWalk, Inc. +000c9e MemoryLink Corp. +000c9f NKE Corporation +000ca0 StorCase Technology, Inc. +000ca1 SIGMACOM Co., LTD. +000ca2 Harmonic Video Network +000ca3 Rancho Technology, Inc. +000ca4 Prompttec Product Management GmbH +000ca5 Naman NZ LTd +000ca6 Mintera Corporation +000ca7 Metro (Suzhou) Technologies Co., Ltd. +000ca8 Garuda Networks Corporation +000ca9 Ebtron Inc. +000caa Cubic Transportation Systems Inc +000cab Commend International GmbH +000cac Citizen Watch Co., Ltd. +000cad BTU International +000cae Ailocom Oy +000caf TRI TERM CO.,LTD. +000cb0 Star Semiconductor Corporation +000cb1 Salland Engineering (Europe) BV +000cb2 UNION co., ltd. +000cb3 ROUND Co.,Ltd. +000cb4 AutoCell Laboratories, Inc. +000cb5 Premier Technolgies, Inc +000cb6 NANJING SEU MOBILE & INTERNET TECHNOLOGY CO.,LTD +000cb7 Nanjing Huazhuo Electronics Co., Ltd. +000cb8 MEDION AG +000cb9 LEA +000cba Jamex, Inc. +000cbb ISKRAEMECO +000cbc Iscutum +000cbd Interface Masters, Inc +000cbe Innominate Security Technologies AG +000cbf Holy Stone Ent. Co., Ltd. +000cc0 Genera Oy +000cc1 Eaton Corporation +000cc2 ControlNet (India) Private Limited +000cc3 BeWAN systems +000cc4 Tiptel AG +000cc5 Nextlink Co., Ltd. +000cc6 Ka-Ro electronics GmbH +000cc7 Intelligent Computer Solutions Inc. +000cc8 Xytronix Research & Design, Inc. +000cc9 ILWOO DATA & TECHNOLOGY CO.,LTD +000cca HGST a Western Digital Company +000ccb Design Combus Ltd +000ccc Aeroscout Ltd. +000ccd IEC - TC57 +000cce Cisco Systems, Inc +000ccf Cisco Systems, Inc +000cd0 Symetrix +000cd1 SFOM Technology Corp. +000cd2 Schaffner EMV AG +000cd3 Prettl Elektronik Radeberg GmbH +000cd4 Positron Public Safety Systems inc. +000cd5 Passave Inc. +000cd6 PARTNER TECH +000cd7 Nallatech Ltd +000cd8 M. K. Juchheim GmbH & Co +000cd9 Itcare Co., Ltd +000cda FreeHand Systems, Inc. +000cdb Brocade Communications Systems, Inc. +000cdc BECS Technology, Inc +000cdd AOS technologies AG +000cde ABB STOTZ-KONTAKT GmbH +000cdf PULNiX America, Inc +000ce0 Trek Diagnostics Inc. +000ce1 The Open Group +000ce2 Rolls-Royce +000ce3 Option International N.V. +000ce4 NeuroCom International, Inc. +000ce5 ARRIS Group, Inc. +000ce6 Meru Networks Inc +000ce7 MediaTek Inc. +000ce8 GuangZhou AnJuBao Co., Ltd +000ce9 BLOOMBERG L.P. +000cea aphona Kommunikationssysteme +000ceb CNMP Networks, Inc. +000cec Spectracom Corp. +000ced Real Digital Media +000cee jp-embedded +000cef Open Networks Engineering Ltd +000cf0 M & N GmbH +000cf1 Intel Corporation +000cf2 GAMESA Eólica +000cf3 CALL IMAGE SA +000cf4 AKATSUKI ELECTRIC MFG.CO.,LTD. +000cf5 InfoExpress +000cf6 Sitecom Europe BV +000cf7 Nortel Networks +000cf8 Nortel Networks +000cf9 Xylem Water Solutions +000cfa Digital Systems Corp +000cfb Korea Network Systems +000cfc S2io Technologies Corp +000cfd Hyundai ImageQuest Co.,Ltd. +000cfe Grand Electronic Co., Ltd +000cff MRO-TEK Realty Limited +000d00 Seaway Networks Inc. +000d01 P&E Microcomputer Systems, Inc. +000d02 NEC Platforms, Ltd. +000d03 Matrics, Inc. +000d04 Foxboro Eckardt Development GmbH +000d05 cybernet manufacturing inc. +000d06 Compulogic Limited +000d07 Calrec Audio Ltd +000d08 AboveCable, Inc. +000d09 Yuehua(Zhuhai) Electronic CO. LTD +000d0a Projectiondesign as +000d0b BUFFALO.INC +000d0c MDI Security Systems +000d0d ITSupported, LLC +000d0e Inqnet Systems, Inc. +000d0f Finlux Ltd +000d10 Embedtronics Oy +000d11 DENTSPLY - Gendex +000d12 AXELL Corporation +000d13 Wilhelm Rutenbeck GmbH&Co.KG +000d14 Vtech Innovation LP dba Advanced American Telephones +000d15 Voipac s.r.o. +000d16 UHS Systems Pty Ltd +000d17 Turbo Networks Co.Ltd +000d18 Mega-Trend Electronics CO., LTD. +000d19 ROBE Show lighting +000d1a Mustek System Inc. +000d1b Kyoto Electronics Manufacturing Co., Ltd. +000d1c Amesys Defense +000d1d HIGH-TEK HARNESS ENT. CO., LTD. +000d1e Control Techniques +000d1f AV Digital +000d20 ASAHIKASEI TECHNOSYSTEM CO.,LTD. +000d21 WISCORE Inc. +000d22 Unitronics LTD +000d23 Smart Solution, Inc +000d24 SENTEC E&E CO., LTD. +000d25 SANDEN CORPORATION +000d26 Primagraphics Limited +000d27 MICROPLEX Printware AG +000d28 Cisco Systems, Inc +000d29 Cisco Systems, Inc +000d2a Scanmatic AS +000d2b Racal Instruments +000d2c Net2Edge Limited +000d2d NCT Deutschland GmbH +000d2e Matsushita Avionics Systems Corporation +000d2f AIN Comm.Tech.Co., LTD +000d30 IceFyre Semiconductor +000d31 Compellent Technologies, Inc. +000d32 DispenseSource, Inc. +000d33 Prediwave Corp. +000d34 Shell International Exploration and Production, Inc. +000d35 PAC International Ltd +000d36 Wu Han Routon Electronic Co., Ltd +000d37 WIPLUG +000d38 NISSIN INC. +000d39 Network Electronics +000d3a Microsoft Corp. +000d3b Microelectronics Technology Inc. +000d3c i.Tech Dynamic Ltd +000d3d Hammerhead Systems, Inc. +000d3e APLUX Communications Ltd. +000d3f VTI Instruments Corporation +000d40 Verint Loronix Video Solutions +000d41 Siemens AG ICM MP UC RD IT KLF1 +000d42 Newbest Development Limited +000d43 DRS Tactical Systems Inc. +000d44 Audio BU - Logitech +000d45 Tottori SANYO Electric Co., Ltd. +000d46 Parker SSD Drives +000d47 Collex +000d48 AEWIN Technologies Co., Ltd. +000d49 Triton Systems of Delaware, Inc. +000d4a Steag ETA-Optik +000d4b Roku, Inc. +000d4c Outline Electronics Ltd. +000d4d Ninelanes +000d4e NDR Co.,LTD. +000d4f Kenwood Corporation +000d50 Galazar Networks +000d51 DIVR Systems, Inc. +000d52 Comart system +000d53 Beijing 5w Communication Corp. +000d54 3Com Ltd +000d55 SANYCOM Technology Co.,Ltd +000d56 Dell Inc. +000d57 Fujitsu I-Network Systems Limited. +000d58 Private +000d59 Amity Systems, Inc. +000d5a Tiesse SpA +000d5b Smart Empire Investments Limited +000d5c Robert Bosch GmbH, VT-ATMO +000d5d Raritan Computer, Inc +000d5e NEC Personal Products +000d5f Minds Inc +000d60 IBM Corp +000d61 Giga-Byte Technology Co., Ltd. +000d62 Funkwerk Dabendorf GmbH +000d63 DENT Instruments, Inc. +000d64 COMAG Handels AG +000d65 Cisco Systems, Inc +000d66 Cisco Systems, Inc +000d67 Ericsson +000d68 Vinci Systems, Inc. +000d69 TMT&D Corporation +000d6a Redwood Technologies LTD +000d6b Mita-Teknik A/S +000d6c M-Audio +000d6d K-Tech Devices Corp. +000d6e K-Patents Oy +000d6f Ember Corporation +000d70 Datamax Corporation +000d71 boca systems +000d72 2Wire Inc +000d73 Technical Support, Inc. +000d74 Sand Network Systems, Inc. +000d75 Kobian Pte Ltd - Taiwan Branch +000d76 Hokuto Denshi Co,. Ltd. +000d77 FalconStor Software +000d78 Engineering & Security +000d79 Dynamic Solutions Co,.Ltd. +000d7a DiGATTO Asia Pacific Pte Ltd +000d7b Consensys Computers Inc. +000d7c Codian Ltd +000d7d Afco Systems +000d7e Axiowave Networks, Inc. +000d7f MIDAS COMMUNICATION TECHNOLOGIES PTE LTD ( Foreign Branch) +000d80 Online Development Inc +000d81 Pepperl+Fuchs GmbH +000d82 PHSNET +000d83 Sanmina-SCI Hungary Ltd. +000d84 Makus Inc. +000d85 Tapwave, Inc. +000d86 Huber + Suhner AG +000d87 Elitegroup Computer Systems Co.,Ltd. +000d88 D-Link Corporation +000d89 Bils Technology Inc +000d8a Winners Electronics Co., Ltd. +000d8b T&D Corporation +000d8c Shanghai Wedone Digital Ltd. CO. +000d8d Prosoft Technology, Inc +000d8e Koden Electronics Co., Ltd. +000d8f King Tsushin Kogyo Co., LTD. +000d90 Factum Electronics AB +000d91 Eclipse (HQ Espana) S.L. +000d92 ARIMA Communications Corp. +000d93 Apple, Inc. +000d94 AFAR Communications,Inc +000d95 Opti-cell, Inc. +000d96 Vtera Technology Inc. +000d97 ABB Inc./Tropos +000d98 S.W.A.C. Schmitt-Walter Automation Consult GmbH +000d99 Orbital Sciences Corp.; Launch Systems Group +000d9a INFOTEC LTD +000d9b Heraeus Electro-Nite International N.V. +000d9c Elan GmbH & Co KG +000d9d Hewlett Packard +000d9e TOKUDEN OHIZUMI SEISAKUSYO Co.,Ltd. +000d9f RF Micro Devices +000da0 NEDAP N.V. +000da1 MIRAE ITS Co.,LTD. +000da2 Infrant Technologies, Inc. +000da3 Emerging Technologies Limited +000da4 DOSCH & AMAND SYSTEMS AG +000da5 Fabric7 Systems, Inc +000da6 Universal Switching Corporation +000da7 Private +000da8 Teletronics Technology Corporation +000da9 T.E.A.M. S.L. +000daa S.A.Tehnology co.,Ltd. +000dab Parker Hannifin GmbH Electromechanical Division Europe +000dac Japan CBM Corporation +000dad Dataprobe, Inc. +000dae SAMSUNG HEAVY INDUSTRIES CO., LTD. +000daf Plexus Corp (UK) Ltd +000db0 Olym-tech Co.,Ltd. +000db1 Japan Network Service Co., Ltd. +000db2 Ammasso, Inc. +000db3 SDO Communication Corperation +000db4 NETASQ +000db5 GLOBALSAT TECHNOLOGY CORPORATION +000db6 Broadcom +000db7 SANKO ELECTRIC CO,.LTD +000db8 SCHILLER AG +000db9 PC Engines GmbH +000dba Océ Document Technologies GmbH +000dbb Nippon Dentsu Co.,Ltd. +000dbc Cisco Systems, Inc +000dbd Cisco Systems, Inc +000dbe Bel Fuse Europe Ltd.,UK +000dbf TekTone Sound & Signal Mfg., Inc. +000dc0 Spagat AS +000dc1 SafeWeb Inc +000dc2 Private +000dc3 First Communication, Inc. +000dc4 Emcore Corporation +000dc5 EchoStar Global B.V. +000dc6 DigiRose Technology Co., Ltd. +000dc7 COSMIC ENGINEERING INC. +000dc8 AirMagnet, Inc +000dc9 THALES Elektronik Systeme GmbH +000dca Tait Electronics +000dcb Petcomkorea Co., Ltd. +000dcc NEOSMART Corp. +000dcd GROUPE TXCOM +000dce Dynavac Technology Pte Ltd +000dcf Cidra Corp. +000dd0 TetraTec Instruments GmbH +000dd1 Stryker Corporation +000dd2 Simrad Optronics ASA +000dd3 SAMWOO Telecommunication Co.,Ltd. +000dd4 Symantec Corporation +000dd5 O'RITE TECHNOLOGY CO.,LTD +000dd6 ITI LTD +000dd7 Bright +000dd8 BBN +000dd9 Anton Paar GmbH +000dda ALLIED TELESIS K.K. +000ddb AIRWAVE TECHNOLOGIES INC. +000ddc VAC +000ddd Profilo Telra Elektronik Sanayi ve Ticaret. A.Ş +000dde Joyteck Co., Ltd. +000ddf Japan Image & Network Inc. +000de0 ICPDAS Co.,LTD +000de1 Control Products, Inc. +000de2 CMZ Sistemi Elettronici +000de3 AT Sweden AB +000de4 DIGINICS, Inc. +000de5 Samsung Thales +000de6 YOUNGBO ENGINEERING CO.,LTD +000de7 Snap-on OEM Group +000de8 Nasaco Electronics Pte. Ltd +000de9 Napatech Aps +000dea Kingtel Telecommunication Corp. +000deb CompXs Limited +000dec Cisco Systems, Inc +000ded Cisco Systems, Inc +000dee Andrew RF Power Amplifier Group +000def Soc. Coop. Bilanciai +000df0 QCOM TECHNOLOGY INC. +000df1 IONIX INC. +000df2 Private +000df3 Asmax Solutions +000df4 Watertek Co. +000df5 Teletronics International Inc. +000df6 Technology Thesaurus Corp. +000df7 Space Dynamics Lab +000df8 ORGA Kartensysteme GmbH +000df9 NDS Limited +000dfa Micro Control Systems Ltd. +000dfb Komax AG +000dfc ITFOR Inc. +000dfd Huges Hi-Tech Inc., +000dfe Hauppauge Computer Works, Inc. +000dff CHENMING MOLD INDUSTRY CORP. +000e00 Atrie +000e01 ASIP Technologies Inc. +000e02 Advantech AMT Inc. +000e03 Emulex Corporation +000e04 CMA/Microdialysis AB +000e05 WIRELESS MATRIX CORP. +000e06 Team Simoco Ltd +000e07 Sony Mobile Communications Inc +000e08 Cisco-Linksys, LLC +000e09 Shenzhen Coship Software Co.,LTD. +000e0a SAKUMA DESIGN OFFICE +000e0b Netac Technology Co., Ltd. +000e0c Intel Corporation +000e0d Hesch Schröder GmbH +000e0e ESA elettronica S.P.A. +000e0f ERMME +000e10 C-guys, Inc. +000e11 BDT Büro und Datentechnik GmbH & Co.KG +000e12 Adaptive Micro Systems Inc. +000e13 Accu-Sort Systems inc. +000e14 Visionary Solutions, Inc. +000e15 Tadlys LTD +000e16 SouthWing S.L. +000e17 Private +000e18 MyA Technology +000e19 LogicaCMG Pty Ltd +000e1a JPS Communications +000e1b IAV GmbH +000e1c Hach Company +000e1d ARION Technology Inc. +000e1e QLogic Corporation +000e1f TCL Networks Equipment Co., Ltd. +000e20 ACCESS Systems Americas, Inc. +000e21 MTU Friedrichshafen GmbH +000e22 Private +000e23 Incipient, Inc. +000e24 Huwell Technology Inc. +000e25 Hannae Technology Co., Ltd +000e26 Gincom Technology Corp. +000e27 Crere Networks, Inc. +000e28 Dynamic Ratings P/L +000e29 Shester Communications Inc +000e2a Private +000e2b Safari Technologies +000e2c Netcodec co. +000e2d Hyundai Digital Technology Co.,Ltd. +000e2e Edimax Technology Co. Ltd. +000e2f Roche Diagnostics GmbH +000e30 AERAS Networks, Inc. +000e31 Olympus Soft Imaging Solutions GmbH +000e32 Kontron Medical +000e33 Shuko Electronics Co.,Ltd +000e34 NexGen City, LP +000e35 Intel Corporation +000e36 HEINESYS, Inc. +000e37 Harms & Wende GmbH & Co.KG +000e38 Cisco Systems, Inc +000e39 Cisco Systems, Inc +000e3a Cirrus Logic +000e3b Hawking Technologies, Inc. +000e3c Transact Technologies Inc +000e3d Televic N.V. +000e3e Sun Optronics Inc +000e3f Soronti, Inc. +000e40 Nortel Networks +000e41 NIHON MECHATRONICS CO.,LTD. +000e42 Motic Incoporation Ltd. +000e43 G-Tek Electronics Sdn. Bhd. +000e44 Digital 5, Inc. +000e45 Beijing Newtry Electronic Technology Ltd +000e46 Niigata Seimitsu Co.,Ltd. +000e47 NCI System Co.,Ltd. +000e48 Lipman TransAction Solutions +000e49 Forsway Scandinavia AB +000e4a Changchun Huayu WEBPAD Co.,LTD +000e4b atrium c and i +000e4c Bermai Inc. +000e4d Numesa Inc. +000e4e Waveplus Technology Co., Ltd. +000e4f Trajet GmbH +000e50 Thomson Telecom Belgium +000e51 tecna elettronica srl +000e52 Optium Corporation +000e53 AV TECH CORPORATION +000e54 AlphaCell Wireless Ltd. +000e55 AUVITRAN +000e56 4G Systems GmbH & Co. KG +000e57 Iworld Networking, Inc. +000e58 Sonos, Inc. +000e59 Sagemcom Broadband SAS +000e5a TELEFIELD inc. +000e5b ParkerVision - Direct2Data +000e5c ARRIS Group, Inc. +000e5d Triple Play Technologies A/S +000e5e Raisecom Technology +000e5f activ-net GmbH & Co. KG +000e60 360SUN Digital Broadband Corporation +000e61 MICROTROL LIMITED +000e62 Nortel Networks +000e63 Lemke Diagnostics GmbH +000e64 Elphel, Inc +000e65 TransCore +000e66 Hitachi Industry & Control Solutions, Ltd. +000e67 Eltis Microelectronics Ltd. +000e68 E-TOP Network Technology Inc. +000e69 China Electric Power Research Institute +000e6a 3Com Ltd +000e6b Janitza electronics GmbH +000e6c Device Drivers Limited +000e6d Murata Manufacturing Co., Ltd. +000e6e MAT S.A. (Mircrelec Advanced Technology) +000e6f IRIS Corporation Berhad +000e70 in2 Networks +000e71 Gemstar Technology Development Ltd. +000e72 CTS electronics +000e73 Tpack A/S +000e74 Solar Telecom. Tech +000e75 New York Air Brake Corp. +000e76 GEMSOC INNOVISION INC. +000e77 Decru, Inc. +000e78 Amtelco +000e79 Ample Communications Inc. +000e7a GemWon Communications Co., Ltd. +000e7b Toshiba +000e7c Televes S.A. +000e7d Electronics Line 3000 Ltd. +000e7e ionSign Oy +000e7f Hewlett Packard +000e80 Thomson Technology Inc +000e81 Devicescape Software, Inc. +000e82 Commtech Wireless +000e83 Cisco Systems, Inc +000e84 Cisco Systems, Inc +000e85 Catalyst Enterprises, Inc. +000e86 Alcatel North America +000e87 adp Gauselmann GmbH +000e88 VIDEOTRON CORP. +000e89 CLEMATIC +000e8a Avara Technologies Pty. Ltd. +000e8b Astarte Technology Co, Ltd. +000e8c Siemens AG +000e8d Systems in Progress Holding GmbH +000e8e SparkLAN Communications, Inc. +000e8f Sercomm Corporation. +000e90 PONICO CORP. +000e91 Navico Auckland Ltd +000e92 Open Telecom +000e93 Milénio 3 Sistemas Electrónicos, Lda. +000e94 Maas International BV +000e95 Fujiya Denki Seisakusho Co.,Ltd. +000e96 Cubic Defense Applications, Inc. +000e97 Ultracker Technology CO., Inc +000e98 HME Clear-Com LTD. +000e99 Spectrum Digital, Inc +000e9a BOE TECHNOLOGY GROUP CO.,LTD +000e9b Ambit Microsystems Corporation +000e9c Benchmark Electronics +000e9d Tiscali UK Ltd +000e9e Topfield Co., Ltd +000e9f TEMIC SDS GmbH +000ea0 NetKlass Technology Inc. +000ea1 Formosa Teletek Corporation +000ea2 McAfee, Inc +000ea3 CNCR-IT CO.,LTD,HangZhou P.R.CHINA +000ea4 Certance Inc. +000ea5 BLIP Systems +000ea6 ASUSTek COMPUTER INC. +000ea7 Endace Technology +000ea8 United Technologists Europe Limited +000ea9 Shanghai Xun Shi Communications Equipment Ltd. Co. +000eaa Scalent Systems, Inc. +000eab Cray Inc +000eac MINTRON ENTERPRISE CO., LTD. +000ead Metanoia Technologies, Inc. +000eae GAWELL TECHNOLOGIES CORP. +000eaf CASTEL +000eb0 Solutions Radio BV +000eb1 Newcotech,Ltd +000eb2 Micro-Research Finland Oy +000eb3 Hewlett Packard +000eb4 GUANGZHOU GAOKE COMMUNICATIONS TECHNOLOGY CO.LTD. +000eb5 Ecastle Electronics Co., Ltd. +000eb6 Riverbed Technology, Inc. +000eb7 Knovative, Inc. +000eb8 Iiga co.,Ltd +000eb9 HASHIMOTO Electronics Industry Co.,Ltd. +000eba HANMI SEMICONDUCTOR CO., LTD. +000ebb Everbee Networks +000ebc Paragon Fidelity GmbH +000ebd Burdick, a Quinton Compny +000ebe B&B Electronics Manufacturing Co. +000ebf Remsdaq Limited +000ec0 Nortel Networks +000ec1 MYNAH Technologies +000ec2 Lowrance Electronics, Inc. +000ec3 Logic Controls, Inc. +000ec4 Iskra Transmission d.d. +000ec5 Digital Multitools Inc +000ec6 ASIX ELECTRONICS CORP. +000ec7 Motorola Korea +000ec8 Zoran Corporation +000ec9 YOKO Technology Corp. +000eca WTSS Inc +000ecb VineSys Technology +000ecc Tableau, LLC +000ecd SKOV A/S +000ece S.I.T.T.I. S.p.A. +000ecf PROFIBUS Nutzerorganisation e.V. +000ed0 Privaris, Inc. +000ed1 Osaka Micro Computer. +000ed2 Filtronic plc +000ed3 Epicenter, Inc. +000ed4 CRESITT INDUSTRIE +000ed5 COPAN Systems Inc. +000ed6 Cisco Systems, Inc +000ed7 Cisco Systems, Inc +000ed8 Positron Access Solutions Corp +000ed9 Aksys, Ltd. +000eda C-TECH UNITED CORP. +000edb XiNCOM Corp. +000edc Tellion INC. +000edd SHURE INCORPORATED +000ede REMEC, Inc. +000edf PLX Technology +000ee0 Mcharge +000ee1 ExtremeSpeed Inc. +000ee2 Custom Engineering +000ee3 Chiyu Technology Co.,Ltd +000ee4 BOE TECHNOLOGY GROUP CO.,LTD +000ee5 bitWallet, Inc. +000ee6 Adimos Systems LTD +000ee7 AAC ELECTRONICS CORP. +000ee8 Zioncom Electronics (Shenzhen) Ltd. +000ee9 WayTech Development, Inc. +000eea Shadong Luneng Jicheng Electronics,Co.,Ltd +000eeb Sandmartin(zhong shan)Electronics Co.,Ltd +000eec Orban +000eed Nokia Danmark A/S +000eee Muco Industrie BV +000eef Private +000ef0 Festo AG & Co. KG +000ef1 EZQUEST INC. +000ef2 Infinico Corporation +000ef3 Smarthome +000ef4 Kasda Networks Inc +000ef5 iPAC Technology Co., Ltd. +000ef6 E-TEN Information Systems Co., Ltd. +000ef7 Vulcan Portals Inc +000ef8 SBC ASI +000ef9 REA Elektronik GmbH +000efa Optoway Technology Incorporation +000efb Macey Enterprises +000efc JTAG Technologies B.V. +000efd FUJINON CORPORATION +000efe EndRun Technologies LLC +000eff Megasolution,Inc. +000f00 Legra Systems, Inc. +000f01 DIGITALKS INC +000f02 Digicube Technology Co., Ltd +000f03 COM&C CO., LTD +000f04 cim-usa inc +000f05 3B SYSTEM INC. +000f06 Nortel Networks +000f07 Mangrove Systems, Inc. +000f08 Indagon Oy +000f09 Private +000f0a Clear Edge Networks +000f0b Kentima Technologies AB +000f0c SYNCHRONIC ENGINEERING +000f0d Hunt Electronic Co., Ltd. +000f0e WaveSplitter Technologies, Inc. +000f0f Real ID Technology Co., Ltd. +000f10 RDM Corporation +000f11 Prodrive B.V. +000f12 Panasonic Europe Ltd. +000f13 Nisca corporation +000f14 Mindray Co., Ltd. +000f15 Icotera A/S +000f16 JAY HOW TECHNOLOGY CO., +000f17 Insta Elektro GmbH +000f18 Industrial Control Systems +000f19 Boston Scientific +000f1a Gaming Support B.V. +000f1b Ego Systems Inc. +000f1c DigitAll World Co., Ltd +000f1d Cosmo Techs Co., Ltd. +000f1e Chengdu KT Electric Co.of High & New Technology +000f1f Dell Inc. +000f20 Hewlett Packard +000f21 Scientific Atlanta, Inc +000f22 Helius, Inc. +000f23 Cisco Systems, Inc +000f24 Cisco Systems, Inc +000f25 AimValley B.V. +000f26 WorldAccxx LLC +000f27 TEAL Electronics, Inc. +000f28 Itronix Corporation +000f29 Augmentix Corporation +000f2a Cableware Electronics +000f2b GREENBELL SYSTEMS +000f2c Uplogix, Inc. +000f2d CHUNG-HSIN ELECTRIC & MACHINERY MFG.CORP. +000f2e Megapower International Corp. +000f2f W-LINX TECHNOLOGY CO., LTD. +000f30 Raza Microelectronics Inc +000f31 Allied Vision Technologies Canada Inc +000f32 Lootom Telcovideo Network Wuxi Co Ltd +000f33 DUALi Inc. +000f34 Cisco Systems, Inc +000f35 Cisco Systems, Inc +000f36 Accurate Techhnologies, Inc. +000f37 Xambala Incorporated +000f38 Netstar +000f39 IRIS SENSORS +000f3a HISHARP +000f3b Fuji System Machines Co., Ltd. +000f3c Endeleo Limited +000f3d D-Link Corporation +000f3e CardioNet, Inc +000f3f Big Bear Networks +000f40 Optical Internetworking Forum +000f41 Zipher Ltd +000f42 Xalyo Systems +000f43 Wasabi Systems Inc. +000f44 Tivella Inc. +000f45 Stretch, Inc. +000f46 SINAR AG +000f47 ROBOX SPA +000f48 Polypix Inc. +000f49 Northover Solutions Limited +000f4a Kyushu-kyohan co.,ltd +000f4b Oracle Corporation +000f4c Elextech INC +000f4d TalkSwitch +000f4e Cellink +000f4f PCS Systemtechnik GmbH +000f50 StreamScale Limited +000f51 Azul Systems, Inc. +000f52 YORK Refrigeration, Marine & Controls +000f53 Solarflare Communications Inc. +000f54 Entrelogic Corporation +000f55 Datawire Communication Networks Inc. +000f56 Continuum Photonics Inc +000f57 CABLELOGIC Co., Ltd. +000f58 Adder Technology Limited +000f59 Phonak AG +000f5a Peribit Networks +000f5b Delta Information Systems, Inc. +000f5c Day One Digital Media Limited +000f5d Genexis BV +000f5e Veo +000f5f Nicety Technologies Inc. (NTS) +000f60 Lifetron Co.,Ltd +000f61 Hewlett Packard +000f62 Alcatel Bell Space N.V. +000f63 Obzerv Technologies +000f64 D&R Electronica Weesp BV +000f65 icube Corp. +000f66 Cisco-Linksys, LLC +000f67 West Instruments +000f68 Vavic Network Technology, Inc. +000f69 SEW Eurodrive GmbH & Co. KG +000f6a Nortel Networks +000f6b GateWare Communications GmbH +000f6c ADDI-DATA GmbH +000f6d Midas Engineering +000f6e BBox +000f6f FTA Communication Technologies +000f70 Wintec Industries, inc. +000f71 Sanmei Electronics Co.,Ltd +000f72 Sandburst +000f73 RS Automation Co., Ltd +000f74 Qamcom Technology AB +000f75 First Silicon Solutions +000f76 Digital Keystone, Inc. +000f77 DENTUM CO.,LTD +000f78 Datacap Systems Inc +000f79 Bluetooth Interest Group Inc. +000f7a BeiJing NuQX Technology CO.,LTD +000f7b Arce Sistemas, S.A. +000f7c ACTi Corporation +000f7d Xirrus +000f7e Ablerex Electronics Co., LTD +000f7f UBSTORAGE Co.,Ltd. +000f80 Trinity Security Systems,Inc. +000f81 PAL Pacific Inc. +000f82 Mortara Instrument, Inc. +000f83 Brainium Technologies Inc. +000f84 Astute Networks, Inc. +000f85 ADDO-Japan Corporation +000f86 BlackBerry RTS +000f87 Maxcess International +000f88 AMETEK, Inc. +000f89 Winnertec System Co., Ltd. +000f8a WideView +000f8b Orion MultiSystems Inc +000f8c Gigawavetech Pte Ltd +000f8d FAST TV-Server AG +000f8e DONGYANG TELECOM CO.,LTD. +000f8f Cisco Systems, Inc +000f90 Cisco Systems, Inc +000f91 Aerotelecom Co.,Ltd. +000f92 Microhard Systems Inc. +000f93 Landis+Gyr Ltd. +000f94 Genexis BV +000f95 ELECOM Co.,LTD Laneed Division +000f96 Telco Systems, Inc. +000f97 Avanex Corporation +000f98 Avamax Co. Ltd. +000f99 APAC opto Electronics Inc. +000f9a Synchrony, Inc. +000f9b Ross Video Limited +000f9c Panduit Corp +000f9d DisplayLink (UK) Ltd +000f9e Murrelektronik GmbH +000f9f ARRIS Group, Inc. +000fa0 CANON KOREA BUSINESS SOLUTIONS INC. +000fa1 Gigabit Systems Inc. +000fa2 2xWireless +000fa3 Alpha Networks Inc. +000fa4 Sprecher Automation GmbH +000fa5 BWA Technology GmbH +000fa6 S2 Security Corporation +000fa7 Raptor Networks Technology +000fa8 Photometrics, Inc. +000fa9 PC Fabrik +000faa Nexus Technologies +000fab Kyushu Electronics Systems Inc. +000fac IEEE 802.11 +000fad FMN communications GmbH +000fae E2O Communications +000faf Dialog Inc. +000fb0 Compal Electronics INC. +000fb1 Cognio Inc. +000fb2 Broadband Pacenet (India) Pvt. Ltd. +000fb3 Actiontec Electronics, Inc +000fb4 Timespace Technology +000fb5 NETGEAR +000fb6 Europlex Technologies +000fb7 Cavium +000fb8 CallURL Inc. +000fb9 Adaptive Instruments +000fba Tevebox AB +000fbb Nokia Siemens Networks GmbH & Co. KG. +000fbc Onkey Technologies, Inc. +000fbd MRV Communications (Networks) LTD +000fbe e-w/you Inc. +000fbf DGT Sp. z o.o. +000fc0 DELCOMp +000fc1 WAVE Corporation +000fc2 Uniwell Corporation +000fc3 PalmPalm Technology, Inc. +000fc4 NST co.,LTD. +000fc5 KeyMed Ltd +000fc6 Eurocom Industries A/S +000fc7 Dionica R&D Ltd. +000fc8 Chantry Networks +000fc9 Allnet GmbH +000fca A-JIN TECHLINE CO, LTD +000fcb 3Com Ltd +000fcc ARRIS Group, Inc. +000fcd Nortel Networks +000fce Kikusui Electronics Corp. +000fcf DataWind Research +000fd0 ASTRI +000fd1 Applied Wireless Identifications Group, Inc. +000fd2 EWA Technologies, Inc. +000fd3 Digium +000fd4 Soundcraft +000fd5 Schwechat - RISE +000fd6 Sarotech Co., Ltd +000fd7 Harman Music Group +000fd8 Force, Inc. +000fd9 FlexDSL Telecommunications AG +000fda YAZAKI CORPORATION +000fdb Westell Technologies Inc. +000fdc Ueda Japan Radio Co., Ltd. +000fdd SORDIN AB +000fde Sony Mobile Communications Inc +000fdf SOLOMON Technology Corp. +000fe0 NComputing Co.,Ltd. +000fe1 ID DIGITAL CORPORATION +000fe2 Hangzhou H3C Technologies Co., Limited +000fe3 Damm Cellular Systems A/S +000fe4 Pantech Co.,Ltd +000fe5 MERCURY SECURITY CORPORATION +000fe6 MBTech Systems, Inc. +000fe7 Lutron Electronics Co., Inc. +000fe8 Lobos, Inc. +000fe9 GW TECHNOLOGIES CO.,LTD. +000fea Giga-Byte Technology Co.,LTD. +000feb Cylon Controls +000fec ARKUS Inc. +000fed Anam Electronics Co., Ltd +000fee XTec, Incorporated +000fef Thales e-Transactions GmbH +000ff0 Sunray Co. Ltd. +000ff1 nex-G Systems Pte.Ltd +000ff2 Loud Technologies Inc. +000ff3 Jung Myoung Communications&Technology +000ff4 Guntermann & Drunck GmbH +000ff5 GN&S company +000ff6 DARFON LIGHTING CORP +000ff7 Cisco Systems, Inc +000ff8 Cisco Systems, Inc +000ff9 Valcretec, Inc. +000ffa Optinel Systems, Inc. +000ffb Nippon Denso Industry Co., Ltd. +000ffc Merit Li-Lin Ent. +000ffd Glorytek Network Inc. +000ffe G-PRO COMPUTER +000fff Control4 +001000 CABLE TELEVISION LABORATORIES, INC. +001001 Citel +001002 ACTIA +001003 IMATRON, INC. +001004 THE BRANTLEY COILE COMPANY,INC +001005 UEC COMMERCIAL +001006 Thales Contact Solutions Ltd. +001007 Cisco Systems, Inc +001008 VIENNA SYSTEMS CORPORATION +001009 HORANET +00100a WILLIAMS COMMUNICATIONS GROUP +00100b Cisco Systems, Inc +00100c ITO CO., LTD. +00100d Cisco Systems, Inc +00100e MICRO LINEAR COPORATION +00100f INDUSTRIAL CPU SYSTEMS +001010 INITIO CORPORATION +001011 Cisco Systems, Inc +001012 PROCESSOR SYSTEMS (I) PVT LTD +001013 Kontron America, Inc. +001014 Cisco Systems, Inc +001015 OOmon Inc. +001016 T.SQWARE +001017 Bosch Access Systems GmbH +001018 Broadcom +001019 SIRONA DENTAL SYSTEMS GmbH & Co. KG +00101a PictureTel Corp. +00101b CORNET TECHNOLOGY, INC. +00101c OHM TECHNOLOGIES INTL, LLC +00101d WINBOND ELECTRONICS CORP. +00101e MATSUSHITA ELECTRONIC INSTRUMENTS CORP. +00101f Cisco Systems, Inc +001020 Hand Held Products Inc +001021 ENCANTO NETWORKS, INC. +001022 SatCom Media Corporation +001023 Network Equipment Technologies +001024 NAGOYA ELECTRIC WORKS CO., LTD +001025 Grayhill, Inc +001026 ACCELERATED NETWORKS, INC. +001027 L-3 COMMUNICATIONS EAST +001028 COMPUTER TECHNICA, INC. +001029 Cisco Systems, Inc +00102a ZF MICROSYSTEMS, INC. +00102b UMAX DATA SYSTEMS, INC. +00102c Lasat Networks A/S +00102d HITACHI SOFTWARE ENGINEERING +00102e NETWORK SYSTEMS & TECHNOLOGIES PVT. LTD. +00102f Cisco Systems, Inc +001030 EION Inc. +001031 OBJECTIVE COMMUNICATIONS, INC. +001032 ALTA TECHNOLOGY +001033 ACCESSLAN COMMUNICATIONS, INC. +001034 GNP Computers +001035 Elitegroup Computer Systems Co.,Ltd. +001036 INTER-TEL INTEGRATED SYSTEMS +001037 CYQ've Technology Co., Ltd. +001038 MICRO RESEARCH INSTITUTE, INC. +001039 Vectron Systems AG +00103a DIAMOND NETWORK TECH +00103b HIPPI NETWORKING FORUM +00103c IC ENSEMBLE, INC. +00103d PHASECOM, LTD. +00103e NETSCHOOLS CORPORATION +00103f TOLLGRADE COMMUNICATIONS, INC. +001040 INTERMEC CORPORATION +001041 BRISTOL BABCOCK, INC. +001042 Alacritech, Inc. +001043 A2 CORPORATION +001044 InnoLabs Corporation +001045 Nortel Networks +001046 ALCORN MCBRIDE INC. +001047 ECHO ELETRIC CO. LTD. +001048 HTRC AUTOMATION, INC. +001049 ShoreTel, Inc +00104a The Parvus Corporation +00104b 3COM +00104c Teledyne LeCroy, Inc +00104d SURTEC INDUSTRIES, INC. +00104e CEOLOGIC +00104f Oracle Corporation +001050 RION CO., LTD. +001051 CMICRO CORPORATION +001052 METTLER-TOLEDO (ALBSTADT) GMBH +001053 COMPUTER TECHNOLOGY CORP. +001054 Cisco Systems, Inc +001055 FUJITSU MICROELECTRONICS, INC. +001056 SODICK CO., LTD. +001057 Rebel.com, Inc. +001058 ArrowPoint Communications +001059 DIABLO RESEARCH CO. LLC +00105a 3COM +00105b NET INSIGHT AB +00105c QUANTUM DESIGNS (H.K.) LTD. +00105d Draeger Medical +00105e Spirent plc, Service Assurance Broadband +00105f ZODIAC DATA SYSTEMS +001060 BILLIONTON SYSTEMS, INC. +001061 HOSTLINK CORP. +001062 NX SERVER, ILNC. +001063 STARGUIDE DIGITAL NETWORKS +001064 DNPG, LLC +001065 RADYNE CORPORATION +001066 ADVANCED CONTROL SYSTEMS, INC. +001067 Ericsson +001068 COMOS TELECOM +001069 HELIOSS COMMUNICATIONS, INC. +00106a DIGITAL MICROWAVE CORPORATION +00106b SONUS NETWORKS, INC. +00106c EDNT GmbH +00106d Axxcelera Broadband Wireless +00106e TADIRAN COM. LTD. +00106f TRENTON TECHNOLOGY INC. +001070 CARADON TREND LTD. +001071 ADVANET INC. +001072 GVN TECHNOLOGIES, INC. +001073 TECHNOBOX, INC. +001074 ATEN INTERNATIONAL CO., LTD. +001075 Segate Technology LLC +001076 EUREM GmbH +001077 SAF DRIVE SYSTEMS, LTD. +001078 NUERA COMMUNICATIONS, INC. +001079 Cisco Systems, Inc +00107a AmbiCom, Inc. +00107b Cisco Systems, Inc +00107c P-COM, INC. +00107d AURORA COMMUNICATIONS, LTD. +00107e BACHMANN ELECTRONIC GmbH +00107f CRESTRON ELECTRONICS, INC. +001080 METAWAVE COMMUNICATIONS +001081 DPS, INC. +001082 JNA TELECOMMUNICATIONS LIMITED +001083 Hewlett Packard +001084 K-BOT COMMUNICATIONS +001085 POLARIS COMMUNICATIONS, INC. +001086 ATTO Technology, Inc. +001087 XSTREAMIS PLC +001088 AMERICAN NETWORKS INC. +001089 WebSonic +00108a TeraLogic, Inc. +00108b LASERANIMATION SOLLINGER GMBH +00108c Fujitsu Services Ltd +00108d Johnson Controls, Inc. +00108e HUGH SYMONS CONCEPT Technologies Ltd. +00108f RAPTOR SYSTEMS +001090 CIMETRICS, INC. +001091 NO WIRES NEEDED BV +001092 NETCORE INC. +001093 CMS COMPUTERS, LTD. +001094 Performance Analysis Broadband, Spirent plc +001095 Thomson Inc. +001096 TRACEWELL SYSTEMS, INC. +001097 WinNet Metropolitan Communications Systems, Inc. +001098 STARNET TECHNOLOGIES, INC. +001099 InnoMedia, Inc. +00109a NETLINE +00109b Emulex Corporation +00109c M-SYSTEM CO., LTD. +00109d CLARINET SYSTEMS, INC. +00109e AWARE, INC. +00109f PAVO, INC. +0010a0 INNOVEX TECHNOLOGIES, INC. +0010a1 KENDIN SEMICONDUCTOR, INC. +0010a2 TNS +0010a3 OMNITRONIX, INC. +0010a4 XIRCOM +0010a5 OXFORD INSTRUMENTS +0010a6 Cisco Systems, Inc +0010a7 UNEX TECHNOLOGY CORPORATION +0010a8 RELIANCE COMPUTER CORP. +0010a9 ADHOC TECHNOLOGIES +0010aa MEDIA4, INC. +0010ab KOITO ELECTRIC INDUSTRIES, LTD. +0010ac IMCI TECHNOLOGIES +0010ad SOFTRONICS USB, INC. +0010ae SHINKO ELECTRIC INDUSTRIES CO. +0010af TAC SYSTEMS, INC. +0010b0 MERIDIAN TECHNOLOGY CORP. +0010b1 FOR-A CO., LTD. +0010b2 COACTIVE AESTHETICS +0010b3 NOKIA MULTIMEDIA TERMINALS +0010b4 ATMOSPHERE NETWORKS +0010b5 Accton Technology Corp +0010b6 ENTRATA COMMUNICATIONS CORP. +0010b7 COYOTE TECHNOLOGIES, LLC +0010b8 ISHIGAKI COMPUTER SYSTEM CO. +0010b9 MAXTOR CORP. +0010ba MARTINHO-DAVIS SYSTEMS, INC. +0010bb DATA & INFORMATION TECHNOLOGY +0010bc Aastra Telecom +0010bd THE TELECOMMUNICATION TECHNOLOGY COMMITTEE (TTC) +0010be MARCH NETWORKS CORPORATION +0010bf InterAir Wireless +0010c0 ARMA, Inc. +0010c1 OI ELECTRIC CO.,LTD +0010c2 WILLNET, INC. +0010c3 CSI-CONTROL SYSTEMS +0010c4 MEDIA GLOBAL LINKS CO., LTD. +0010c5 PROTOCOL TECHNOLOGIES, INC. +0010c6 Universal Global Scientific Industrial Co., Ltd. +0010c7 DATA TRANSMISSION NETWORK +0010c8 COMMUNICATIONS ELECTRONICS SECURITY GROUP +0010c9 MITSUBISHI ELECTRONICS LOGISTIC SUPPORT CO. +0010ca Telco Systems, Inc. +0010cb FACIT K.K. +0010cc CLP COMPUTER LOGISTIK PLANUNG GmbH +0010cd INTERFACE CONCEPT +0010ce VOLAMP, LTD. +0010cf FIBERLANE COMMUNICATIONS +0010d0 WITCOM, LTD. +0010d1 Top Layer Networks, Inc. +0010d2 NITTO TSUSHINKI CO., LTD +0010d3 GRIPS ELECTRONIC GMBH +0010d4 STORAGE COMPUTER CORPORATION +0010d5 IMASDE CANARIAS, S.A. +0010d6 Exelis +0010d7 ARGOSY RESEARCH INC. +0010d8 CALISTA +0010d9 IBM JAPAN, FUJISAWA MT+D +0010da Kollmorgen Corp +0010db Juniper Networks +0010dc MICRO-STAR INTERNATIONAL CO., LTD. +0010dd ENABLE SEMICONDUCTOR, INC. +0010de INTERNATIONAL DATACASTING CORPORATION +0010df RISE COMPUTER INC. +0010e0 Oracle Corporation +0010e1 S.I. TECH, INC. +0010e2 ArrayComm, Inc. +0010e3 Hewlett Packard +0010e4 NSI CORPORATION +0010e5 SOLECTRON TEXAS +0010e6 APPLIED INTELLIGENT SYSTEMS, INC. +0010e7 Breezecom, Ltd. +0010e8 TELOCITY, INCORPORATED +0010e9 RAIDTEC LTD. +0010ea ADEPT TECHNOLOGY +0010eb SELSIUS SYSTEMS, INC. +0010ec RPCG, LLC +0010ed SUNDANCE TECHNOLOGY, INC. +0010ee CTI PRODUCTS, INC. +0010ef DBTEL INCORPORATED +0010f0 RITTAL-WERK RUDOLF LOH GmbH & Co. +0010f1 I-O CORPORATION +0010f2 ANTEC +0010f3 Nexcom International Co., Ltd. +0010f4 Vertical Communications +0010f5 AMHERST SYSTEMS, INC. +0010f6 Cisco Systems, Inc +0010f7 IRIICHI TECHNOLOGIES Inc. +0010f8 TEXIO TECHNOLOGY CORPORATION +0010f9 UNIQUE SYSTEMS, INC. +0010fa Apple, Inc. +0010fb ZIDA TECHNOLOGIES LIMITED +0010fc BROADBAND NETWORKS, INC. +0010fd COCOM A/S +0010fe DIGITAL EQUIPMENT CORPORATION +0010ff Cisco Systems, Inc +001100 Schneider Electric +001101 CET Technologies Pte Ltd +001102 Aurora Multimedia Corp. +001103 kawamura electric inc. +001104 TELEXY +001105 Sunplus Technology Co., Ltd. +001106 Siemens NV (Belgium) +001107 RGB Networks Inc. +001108 Orbital Data Corporation +001109 Micro-Star International +00110a Hewlett Packard +00110b Franklin Technology Systems +00110c Atmark Techno, Inc. +00110d SANBlaze Technology, Inc. +00110e Tsurusaki Sealand Transportation Co. Ltd. +00110f netplat,Inc. +001110 Maxanna Technology Co., Ltd. +001111 Intel Corporation +001112 Honeywell CMSS +001113 Fraunhofer FOKUS +001114 EverFocus Electronics Corp. +001115 EPIN Technologies, Inc. +001116 COTEAU VERT CO., LTD. +001117 CESNET +001118 BLX IC Design Corp., Ltd. +001119 Solteras, Inc. +00111a ARRIS Group, Inc. +00111b Targa Systems Div L-3 Communications +00111c Pleora Technologies Inc. +00111d Hectrix Limited +00111e ETHERNET Powerlink Standarization Group (EPSG) +00111f Doremi Labs, Inc. +001120 Cisco Systems, Inc +001121 Cisco Systems, Inc +001122 CIMSYS Inc +001123 Appointech, Inc. +001124 Apple, Inc. +001125 IBM Corp +001126 Venstar Inc. +001127 TASI, Inc +001128 Streamit +001129 Paradise Datacom Ltd. +00112a Niko NV +00112b NetModule AG +00112c IZT GmbH +00112d iPulse Systems +00112e CEICOM +00112f ASUSTek COMPUTER INC. +001130 Allied Telesis (Hong Kong) Ltd. +001131 UNATECH. CO.,LTD +001132 Synology Incorporated +001133 Siemens AG Austria +001134 MediaCell, Inc. +001135 Grandeye Ltd +001136 Goodrich Sensor Systems +001137 AICHI ELECTRIC CO., LTD. +001138 TAISHIN CO., LTD. +001139 STOEBER ANTRIEBSTECHNIK GmbH + Co. KG. +00113a SHINBORAM +00113b Micronet Communications Inc. +00113c Micronas GmbH +00113d KN SOLTEC CO.,LTD. +00113e JL Corporation +00113f Alcatel DI +001140 Nanometrics Inc. +001141 GoodMan Corporation +001142 e-SMARTCOM INC. +001143 Dell Inc. +001144 Assurance Technology Corp +001145 ValuePoint Networks +001146 Telecard-Pribor Ltd +001147 Secom-Industry co.LTD. +001148 Prolon Control Systems +001149 Proliphix Inc. +00114a KAYABA INDUSTRY Co,.Ltd. +00114b Francotyp-Postalia GmbH +00114c caffeina applied research ltd. +00114d Atsumi Electric Co.,LTD. +00114e 690885 Ontario Inc. +00114f US Digital Television, Inc +001150 Belkin Corporation +001151 Mykotronx +001152 Eidsvoll Electronics AS +001153 Trident Tek, Inc. +001154 Webpro Technologies Inc. +001155 Sevis Systems +001156 Pharos Systems NZ +001157 Oki Electric Industry Co., Ltd. +001158 Nortel Networks +001159 MATISSE NETWORKS INC +00115a Ivoclar Vivadent AG +00115b Elitegroup Computer Systems Co.,Ltd. +00115c Cisco Systems, Inc +00115d Cisco Systems, Inc +00115e ProMinent Dosiertechnik GmbH +00115f ITX Security Co., Ltd. +001160 ARTDIO Company Co., LTD +001161 NetStreams, LLC +001162 STAR MICRONICS CO.,LTD. +001163 SYSTEM SPA DEPT. ELECTRONICS +001164 ACARD Technology Corp. +001165 ZNYX Networks, Inc. +001166 Taelim Electronics Co., Ltd. +001167 Integrated System Solution Corp. +001168 HomeLogic LLC +001169 EMS Satcom +00116a Domo Ltd +00116b Digital Data Communications Asia Co.,Ltd +00116c Nanwang Multimedia Inc.,Ltd +00116d American Time and Signal +00116e Peplink International Ltd. +00116f Netforyou Co., LTD. +001170 GSC SRL +001171 DEXTER Communications, Inc. +001172 COTRON CORPORATION +001173 SMART Storage Systems +001174 Mojo Networks, Inc. +001175 Intel Corporation +001176 Intellambda Systems, Inc. +001177 Coaxial Networks, Inc. +001178 Chiron Technology Ltd +001179 Singular Technology Co. Ltd. +00117a Singim International Corp. +00117b Büchi Labortechnik AG +00117c e-zy.net +00117d ZMD America, Inc. +00117e Midmark Corp +00117f Neotune Information Technology Corporation,.LTD +001180 ARRIS Group, Inc. +001181 InterEnergy Co.Ltd, +001182 IMI Norgren Ltd +001183 Datalogic ADC, Inc. +001184 Humo Laboratory,Ltd. +001185 Hewlett Packard +001186 Prime Systems, Inc. +001187 Category Solutions, Inc +001188 Enterasys +001189 Aerotech Inc +00118a Viewtran Technology Limited +00118b Alcatel-Lucent Enterprise +00118c Missouri Department of Transportation +00118d Hanchang System Corp. +00118e Halytech Mace +00118f EUTECH INSTRUMENTS PTE. LTD. +001190 Digital Design Corporation +001191 CTS-Clima Temperatur Systeme GmbH +001192 Cisco Systems, Inc +001193 Cisco Systems, Inc +001194 Chi Mei Communication Systems, Inc. +001195 D-Link Corporation +001196 Actuality Systems, Inc. +001197 Monitoring Technologies Limited +001198 Prism Media Products Limited +001199 2wcom Systems GmbH +00119a Alkeria srl +00119b Telesynergy Research Inc. +00119c EP&T Energy +00119d Diginfo Technology Corporation +00119e Solectron Brazil +00119f Nokia Danmark A/S +0011a0 Vtech Engineering Canada Ltd +0011a1 VISION NETWARE CO.,LTD +0011a2 Manufacturing Technology Inc +0011a3 LanReady Technologies Inc. +0011a4 JStream Technologies Inc. +0011a5 Fortuna Electronic Corp. +0011a6 Sypixx Networks +0011a7 Infilco Degremont Inc. +0011a8 Quest Technologies +0011a9 MOIMSTONE Co., LTD +0011aa Uniclass Technology, Co., LTD +0011ab TRUSTABLE TECHNOLOGY CO.,LTD. +0011ac Simtec Electronics +0011ad Shanghai Ruijie Technology +0011ae ARRIS Group, Inc. +0011af Medialink-i,Inc +0011b0 Fortelink Inc. +0011b1 BlueExpert Technology Corp. +0011b2 2001 Technology Inc. +0011b3 YOSHIMIYA CO.,LTD. +0011b4 Westermo Network Technologies AB +0011b5 Shenzhen Powercom Co.,Ltd +0011b6 Open Systems International +0011b7 Octalix B.V. +0011b8 Liebherr - Elektronik GmbH +0011b9 Inner Range Pty. Ltd. +0011ba Elexol Pty Ltd +0011bb Cisco Systems, Inc +0011bc Cisco Systems, Inc +0011bd Bombardier Transportation +0011be AGP Telecom Co. Ltd +0011bf AESYS S.p.A. +0011c0 Aday Technology Inc +0011c1 4P MOBILE DATA PROCESSING +0011c2 United Fiber Optic Communication +0011c3 Transceiving System Technology Corporation +0011c4 Terminales de Telecomunicacion Terrestre, S.L. +0011c5 TEN Technology +0011c6 Seagate Technology +0011c7 Raymarine UK Ltd +0011c8 Powercom Co., Ltd. +0011c9 MTT Corporation +0011ca Long Range Systems, Inc. +0011cb Jacobsons AB +0011cc Guangzhou Jinpeng Group Co.,Ltd. +0011cd Axsun Technologies +0011ce Ubisense Limited +0011cf Thrane & Thrane A/S +0011d0 Tandberg Data ASA +0011d1 Soft Imaging System GmbH +0011d2 Perception Digital Ltd +0011d3 NextGenTel Holding ASA +0011d4 NetEnrich, Inc +0011d5 Hangzhou Sunyard System Engineering Co.,Ltd. +0011d6 HandEra, Inc. +0011d7 eWerks Inc +0011d8 ASUSTek COMPUTER INC. +0011d9 TiVo +0011da Vivaas Technology Inc. +0011db Land-Cellular Corporation +0011dc Glunz & Jensen +0011dd FROMUS TEC. Co., Ltd. +0011de EURILOGIC +0011df Current Energy +0011e0 U-MEDIA Communications, Inc. +0011e1 Arcelik A.S +0011e2 Hua Jung Components Co., Ltd. +0011e3 Thomson, Inc. +0011e4 Danelec Electronics A/S +0011e5 KCodes Corporation +0011e6 Scientific Atlanta +0011e7 WORLDSAT - Texas de France +0011e8 Tixi.Com +0011e9 STARNEX CO., LTD. +0011ea IWICS Inc. +0011eb Innovative Integration +0011ec AVIX INC. +0011ed 802 Global +0011ee Estari, Inc. +0011ef Conitec Datensysteme GmbH +0011f0 Wideful Limited +0011f1 QinetiQ Ltd +0011f2 Institute of Network Technologies +0011f3 NeoMedia Europe AG +0011f4 woori-net +0011f5 ASKEY COMPUTER CORP +0011f6 Asia Pacific Microsystems , Inc. +0011f7 Shenzhen Forward Industry Co., Ltd +0011f8 AIRAYA Corp +0011f9 Nortel Networks +0011fa Rane Corporation +0011fb Heidelberg Engineering GmbH +0011fc HARTING Electronics GmbH +0011fd KORG INC. +0011fe Keiyo System Research, Inc. +0011ff Digitro Tecnologia Ltda +001200 Cisco Systems, Inc +001201 Cisco Systems, Inc +001202 Decrane Aerospace - Audio International Inc. +001203 ActivNetworks +001204 u10 Networks, Inc. +001205 Terrasat Communications, Inc. +001206 iQuest (NZ) Ltd +001207 Head Strong International Limited +001208 Gantner Instruments GmbH +001209 Fastrax Ltd +00120a Emerson Climate Technologies GmbH +00120b Chinasys Technologies Limited +00120c CE-Infosys Pte Ltd +00120d Advanced Telecommunication Technologies, Inc. +00120e AboCom +00120f IEEE 802.3 +001210 WideRay Corp +001211 Protechna Herbst GmbH & Co. KG +001212 PLUS Corporation +001213 Metrohm AG +001214 Koenig & Bauer AG +001215 iStor Networks, Inc. +001216 ICP Internet Communication Payment AG +001217 Cisco-Linksys, LLC +001218 ARUZE Corporation +001219 General Datacomm LLC +00121a Techno Soft Systemnics Inc. +00121b Sound Devices, LLC +00121c PARROT SA +00121d Netfabric Corporation +00121e Juniper Networks +00121f Harding Instruments +001220 Cadco Systems +001221 B.Braun Melsungen AG +001222 Skardin (UK) Ltd +001223 Pixim +001224 NexQL Corporation +001225 ARRIS Group, Inc. +001226 Japan Direx Corporation +001227 Franklin Electric Co., Inc. +001228 Data Ltd. +001229 BroadEasy Technologies Co.,Ltd +00122a VTech Telecommunications Ltd. +00122b Virbiage Pty Ltd +00122c Soenen Controls N.V. +00122d SiNett Corporation +00122e Signal Technology - AISD +00122f Sanei Electric Inc. +001230 Picaso Infocommunication CO., LTD. +001231 Motion Control Systems, Inc. +001232 LeWiz Communications Inc. +001233 JRC TOKKI Co.,Ltd. +001234 Camille Bauer +001235 Andrew Corporation +001236 ConSentry Networks +001237 Texas Instruments +001238 SetaBox Technology Co., Ltd. +001239 S Net Systems Inc. +00123a Posystech Inc., Co. +00123b KeRo Systems ApS +00123c Second Rule LLC +00123d GES Co, Ltd +00123e ERUNE technology Co., Ltd. +00123f Dell Inc. +001240 AMOI ELECTRONICS CO.,LTD +001241 a2i marketing center +001242 Millennial Net +001243 Cisco Systems, Inc +001244 Cisco Systems, Inc +001245 Zellweger Analytics, Inc. +001246 T.O.M TECHNOLOGY INC.. +001247 Samsung Electronics Co.,Ltd +001248 Dell EMC +001249 Delta Elettronica S.p.A. +00124a Dedicated Devices, Inc. +00124b Texas Instruments +00124c BBWM Corporation +00124d Inducon BV +00124e XAC AUTOMATION CORP. +00124f nVent +001250 Tokyo Aircaft Instrument Co., Ltd. +001251 SILINK +001252 Citronix, LLC +001253 AudioDev AB +001254 Spectra Technologies Holdings Company Ltd +001255 NetEffect Incorporated +001256 LG INFORMATION & COMM. +001257 LeapComm Communication Technologies Inc. +001258 Activis Polska +001259 THERMO ELECTRON KARLSRUHE +00125a Microsoft Corporation +00125b KAIMEI ELECTRONI +00125c Green Hills Software, Inc. +00125d CyberNet Inc. +00125e CAEN +00125f AWIND Inc. +001260 Stanton Magnetics,inc. +001261 Adaptix, Inc +001262 Nokia Danmark A/S +001263 Data Voice Technologies GmbH +001264 daum electronic gmbh +001265 Enerdyne Technologies, Inc. +001266 Swisscom Hospitality Services SA +001267 Panasonic Corporation +001268 IPS d.o.o. +001269 Value Electronics +00126a OPTOELECTRONICS Co., Ltd. +00126b Ascalade Communications Limited +00126c Visonic Technologies 1993 Ltd. +00126d University of California, Berkeley +00126e Seidel Elektronik GmbH Nfg.KG +00126f Rayson Technology Co., Ltd. +001270 NGES Denro Systems +001271 Measurement Computing Corp +001272 Redux Communications Ltd. +001273 Stoke Inc +001274 NIT lab +001275 Sentilla Corporation +001276 CG Power Systems Ireland Limited +001277 Korenix Technologies Co., Ltd. +001278 International Bar Code +001279 Hewlett Packard +00127a Sanyu Industry Co.,Ltd. +00127b VIA Networking Technologies, Inc. +00127c SWEGON AB +00127d MobileAria +00127e Digital Lifestyles Group, Inc. +00127f Cisco Systems, Inc +001280 Cisco Systems, Inc +001281 March Networks S.p.A. +001282 Qovia +001283 Nortel Networks +001284 Lab33 Srl +001285 Gizmondo Europe Ltd +001286 ENDEVCO CORP +001287 Digital Everywhere Unterhaltungselektronik GmbH +001288 2Wire Inc +001289 Advance Sterilization Products +00128a ARRIS Group, Inc. +00128b Sensory Networks Inc +00128c Woodward Governor +00128d STB Datenservice GmbH +00128e Q-Free ASA +00128f Montilio +001290 KYOWA Electric & Machinery Corp. +001291 KWS Computersysteme GmbH +001292 Griffin Technology +001293 GE Energy +001294 SUMITOMO ELECTRIC DEVICE INNOVATIONS, INC +001295 Aiware Inc. +001296 Addlogix +001297 O2Micro, Inc. +001298 MICO ELECTRIC(SHENZHEN) LIMITED +001299 Ktech Telecommunications Inc +00129a IRT Electronics Pty Ltd +00129b E2S Electronic Engineering Solutions, S.L. +00129c Yulinet +00129d First International Computer do Brasil +00129e Surf Communications Inc. +00129f RAE Systems +0012a0 NeoMeridian Sdn Bhd +0012a1 BluePacket Communications Co., Ltd. +0012a2 VITA +0012a3 Trust International B.V. +0012a4 ThingMagic, LLC +0012a5 Dolphin Interconnect Solutions AS +0012a6 Dolby Australia +0012a7 ISR TECHNOLOGIES Inc +0012a8 intec GmbH +0012a9 3Com Ltd +0012aa IEE, Inc. +0012ab WiLife, Inc. +0012ac ONTIMETEK INC. +0012ad IDS GmbH +0012ae HLS HARD-LINE Solutions Inc. +0012af ELPRO Technologies +0012b0 Efore Oyj (Plc) +0012b1 Dai Nippon Printing Co., Ltd +0012b2 AVOLITES LTD. +0012b3 Advance Wireless Technology Corp. +0012b4 Work Microwave GmbH +0012b5 Vialta, Inc. +0012b6 Santa Barbara Infrared, Inc. +0012b7 PTW Freiburg +0012b8 G2 Microsystems +0012b9 Fusion Digital Technology +0012ba FSI Systems, Inc. +0012bb Telecommunications Industry Association TR-41 Committee +0012bc Echolab LLC +0012bd Avantec Manufacturing Limited +0012be Astek Corporation +0012bf Arcadyan Technology Corporation +0012c0 HotLava Systems, Inc. +0012c1 Check Point Software Technologies +0012c2 Apex Electronics Factory +0012c3 WIT S.A. +0012c4 Viseon, Inc. +0012c5 V-Show Technology (China) Co.,Ltd +0012c6 TGC America, Inc +0012c7 SECURAY Technologies Ltd.Co. +0012c8 Perfect tech +0012c9 ARRIS Group, Inc. +0012ca Mechatronic Brick Aps +0012cb CSS Inc. +0012cc Bitatek CO., LTD +0012cd ASEM SpA +0012ce Advanced Cybernetics Group +0012cf Accton Technology Corp +0012d0 Gossen-Metrawatt-GmbH +0012d1 Texas Instruments +0012d2 Texas Instruments +0012d3 Zetta Systems, Inc. +0012d4 Princeton Technology, Ltd +0012d5 Motion Reality Inc. +0012d6 Jiangsu Yitong High-Tech Co.,Ltd +0012d7 Invento Networks, Inc. +0012d8 International Games System Co., Ltd. +0012d9 Cisco Systems, Inc +0012da Cisco Systems, Inc +0012db ZIEHL industrie-elektronik GmbH + Co KG +0012dc SunCorp Industrial Limited +0012dd Shengqu Information Technology (Shanghai) Co., Ltd. +0012de Radio Components Sweden AB +0012df Novomatic AG +0012e0 Codan Limited +0012e1 Alliant Networks, Inc +0012e2 ALAXALA Networks Corporation +0012e3 Agat-RT, Ltd. +0012e4 ZIEHL industrie-electronik GmbH + Co KG +0012e5 Time America, Inc. +0012e6 SPECTEC COMPUTER CO., LTD. +0012e7 Projectek Networking Electronics Corp. +0012e8 Fraunhofer IMS +0012e9 Abbey Systems Ltd +0012ea Trane +0012eb PDH Solutions, LLC +0012ec Movacolor b.v. +0012ed AVG Advanced Technologies +0012ee Sony Mobile Communications Inc +0012ef OneAccess SA +0012f0 Intel Corporate +0012f1 IFOTEC +0012f2 Brocade Communications Systems, Inc. +0012f3 connectBlue AB +0012f4 Belco International Co.,Ltd. +0012f5 Imarda New Zealand Limited +0012f6 MDK CO.,LTD. +0012f7 Xiamen Xinglian Electronics Co., Ltd. +0012f8 WNI Resources, LLC +0012f9 URYU SEISAKU, LTD. +0012fa THX LTD +0012fb Samsung Electronics Co.,Ltd +0012fc PLANET System Co.,LTD +0012fd OPTIMUS IC S.A. +0012fe Lenovo Mobile Communication Technology Ltd. +0012ff Lely Industries N.V. +001300 IT-FACTORY, INC. +001301 IronGate S.L. +001302 Intel Corporate +001303 GateConnect +001304 Flaircomm Technologies Co. LTD +001305 Epicom, Inc. +001306 Always On Wireless +001307 Paravirtual Corporation +001308 Nuvera Fuel Cells +001309 Ocean Broadband Networks +00130a Nortel Networks +00130b Mextal B.V. +00130c HF System Corporation +00130d GALILEO AVIONICA +00130e Focusrite Audio Engineering Limited +00130f EGEMEN Bilgisayar Muh San ve Tic LTD STI +001310 Cisco-Linksys, LLC +001311 ARRIS Group, Inc. +001312 Amedia Networks Inc. +001313 GuangZhou Post & Telecom Equipment ltd +001314 Asiamajor Inc. +001315 Sony Interactive Entertainment Inc. +001316 L-S-B Broadcast Technologies GmbH +001317 GN Netcom A/S +001318 DGSTATION Co., Ltd. +001319 Cisco Systems, Inc +00131a Cisco Systems, Inc +00131b BeCell Innovations Corp. +00131c LiteTouch, Inc. +00131d Scanvaegt International A/S +00131e peiker acustic GmbH +00131f NxtPhase T&D, Corp. +001320 Intel Corporate +001321 Hewlett Packard +001322 DAQ Electronics, Inc. +001323 Cap Co., Ltd. +001324 Schneider Electric Ultra Terminal +001325 Cortina Systems Inc +001326 ECM Systems Ltd +001327 Data Acquisitions limited +001328 Westech Korea Inc., +001329 VSST Co., LTD +00132a Sitronics Telecom Solutions +00132b Phoenix Digital +00132c MAZ Brandenburg GmbH +00132d iWise Communications +00132e ITian Coporation +00132f Interactek +001330 EURO PROTECTION SURVEILLANCE +001331 CellPoint Connect +001332 Beijing Topsec Network Security Technology Co., Ltd. +001333 BaudTec Corporation +001334 Arkados, Inc. +001335 VS Industry Berhad +001336 Tianjin 712 Communication Broadcasting co., ltd. +001337 Orient Power Home Network Ltd. +001338 FRESENIUS-VIAL +001339 CCV Deutschland GmbH +00133a VadaTech Inc. +00133b Speed Dragon Multimedia Limited +00133c QUINTRON SYSTEMS INC. +00133d Micro Memory Curtiss Wright Co +00133e MetaSwitch +00133f Eppendorf Instrumente GmbH +001340 AD.EL s.r.l. +001341 Shandong New Beiyang Information Technology Co.,Ltd +001342 Vision Research, Inc. +001343 Matsushita Electronic Components (Europe) GmbH +001344 Fargo Electronics Inc. +001345 Eaton Corporation +001346 D-Link Corporation +001347 Red Lion Controls, LP +001348 Artila Electronics Co., Ltd. +001349 Zyxel Communications Corporation +00134a Engim, Inc. +00134b ToGoldenNet Technology Inc. +00134c YDT Technology International +00134d Inepro BV +00134e Valox Systems, Inc. +00134f Rapidus Wireless Networks Inc. +001350 Silver Spring Networks, Inc +001351 Niles Audio Corporation +001352 Naztec, Inc. +001353 HYDAC Filtertechnik GMBH +001354 Zcomax Technologies, Inc. +001355 TOMEN Cyber-business Solutions, Inc. +001356 FLIR Radiation Inc +001357 Soyal Technology Co., Ltd. +001358 Realm Systems, Inc. +001359 ProTelevision Technologies A/S +00135a Project T&E Limited +00135b PanelLink Cinema, LLC +00135c OnSite Systems, Inc. +00135d NTTPC Communications, Inc. +00135e EAB/RWI/K +00135f Cisco Systems, Inc +001360 Cisco Systems, Inc +001361 Biospace Co., Ltd. +001362 ShinHeung Precision Co., Ltd. +001363 Verascape, Inc. +001364 Paradigm Technology Inc.. +001365 Nortel Networks +001366 Neturity Technologies Inc. +001367 Narayon. Co., Ltd. +001368 Saab Danmark A/S +001369 Honda Electron Co., LED. +00136a Hach Lange Sarl +00136b E-TEC +00136c TomTom +00136d Tentaculus AB +00136e Techmetro Corp. +00136f PacketMotion, Inc. +001370 Nokia Danmark A/S +001371 ARRIS Group, Inc. +001372 Dell Inc. +001373 BLwave Electronics Co., Ltd +001374 Atheros Communications, Inc. +001375 American Security Products Co. +001376 Tabor Electronics Ltd. +001377 Samsung Electronics Co.,Ltd +001378 Qsan Technology, Inc. +001379 PONDER INFORMATION INDUSTRIES LTD. +00137a Netvox Technology Co., Ltd. +00137b Movon Corporation +00137c Kaicom co., Ltd. +00137d Dynalab, Inc. +00137e CorEdge Networks, Inc. +00137f Cisco Systems, Inc +001380 Cisco Systems, Inc +001381 CHIPS & Systems, Inc. +001382 Cetacea Networks Corporation +001383 Application Technologies and Engineering Research Laboratory +001384 Advanced Motion Controls +001385 Add-On Technology Co., LTD. +001386 ABB Inc/Totalflow +001387 27M Technologies AB +001388 WiMedia Alliance +001389 Redes de Telefonía Móvil S.A. +00138a Qingdao GoerTek Technology Co., Ltd. +00138b Phantom Technologies LLC +00138c Kumyoung.Co.Ltd +00138d Kinghold +00138e FOAB Elektronik AB +00138f Asiarock Technology Limited +001390 Termtek Computer Co., Ltd +001391 OUEN CO.,LTD. +001392 Ruckus Wireless +001393 Panta Systems, Inc. +001394 Infohand Co.,Ltd +001395 congatec AG +001396 Acbel Polytech Inc. +001397 Oracle Corporation +001398 TrafficSim Co.,Ltd +001399 STAC Corporation. +00139a K-ubique ID Corp. +00139b ioIMAGE Ltd. +00139c Exavera Technologies, Inc. +00139d MaxLinear Hispania S.L.U. +00139e Ciara Technologies Inc. +00139f Electronics Design Services, Co., Ltd. +0013a0 ALGOSYSTEM Co., Ltd. +0013a1 Crow Electronic Engeneering +0013a2 MaxStream, Inc +0013a3 Siemens Home & Office Comm. Devices +0013a4 KeyEye Communications +0013a5 General Solutions, LTD. +0013a6 Extricom Ltd +0013a7 BATTELLE MEMORIAL INSTITUTE +0013a8 Tanisys Technology +0013a9 Sony Corporation +0013aa ALS & TEC Ltd. +0013ab Telemotive AG +0013ac Sunmyung Electronics Co., LTD +0013ad Sendo Ltd +0013ae Radiance Technologies, Inc. +0013af NUMA Technology,Inc. +0013b0 Jablotron +0013b1 Intelligent Control Systems (Asia) Pte Ltd +0013b2 Carallon Limited +0013b3 Ecom Communications Technology Co., Ltd. +0013b4 Appear TV +0013b5 Wavesat +0013b6 Sling Media, Inc. +0013b7 Scantech ID +0013b8 RyCo Electronic Systems Limited +0013b9 BM SPA +0013ba ReadyLinks Inc +0013bb Smartvue Corporation +0013bc Artimi Ltd +0013bd HYMATOM SA +0013be Virtual Conexions +0013bf Media System Planning Corp. +0013c0 Trix Tecnologia Ltda. +0013c1 Asoka USA Corporation +0013c2 WACOM Co.,Ltd +0013c3 Cisco Systems, Inc +0013c4 Cisco Systems, Inc +0013c5 LIGHTRON FIBER-OPTIC DEVICES INC. +0013c6 OpenGear, Inc +0013c7 IONOS Co.,Ltd. +0013c8 ADB Broadband Italia +0013c9 Beyond Achieve Enterprises Ltd. +0013ca Pico Digital +0013cb Zenitel Norway AS +0013cc Tall Maple Systems +0013cd MTI co. LTD +0013ce Intel Corporate +0013cf 4Access Communications +0013d0 t+ Medical Ltd +0013d1 KIRK telecom A/S +0013d2 PAGE IBERICA, S.A. +0013d3 MICRO-STAR INTERNATIONAL CO., LTD. +0013d4 ASUSTek COMPUTER INC. +0013d5 RuggedCom +0013d6 TII NETWORK TECHNOLOGIES, INC. +0013d7 SPIDCOM Technologies SA +0013d8 Princeton Instruments +0013d9 Matrix Product Development, Inc. +0013da Diskware Co., Ltd +0013db SHOEI Electric Co.,Ltd +0013dc IBTEK INC. +0013dd Abbott Diagnostics +0013de Adapt4, LLC +0013df Ryvor Corp. +0013e0 Murata Manufacturing Co., Ltd. +0013e1 Iprobe AB +0013e2 GeoVision Inc. +0013e3 CoVi Technologies, Inc. +0013e4 YANGJAE SYSTEMS CORP. +0013e5 TENOSYS, INC. +0013e6 Technolution +0013e7 Halcro +0013e8 Intel Corporate +0013e9 VeriWave, Inc. +0013ea Kamstrup A/S +0013eb Sysmaster Corporation +0013ec Netsnapper Technologies SARL +0013ed PSIA +0013ee JBX Designs Inc. +0013ef Kingjon Digital Technology Co.,Ltd +0013f0 Wavefront Semiconductor +0013f1 AMOD Technology Co., Ltd. +0013f2 Klas Ltd +0013f3 Giga-byte Communications Inc. +0013f4 Psitek (Pty) Ltd +0013f5 Akimbi Systems +0013f6 Cintech +0013f7 SMC Networks, Inc. +0013f8 Dex Security Solutions +0013f9 Cavera Systems +0013fa LifeSize Communications, Inc +0013fb RKC INSTRUMENT INC. +0013fc SiCortex, Inc +0013fd Nokia Danmark A/S +0013fe GRANDTEC ELECTRONIC CORP. +0013ff Dage-MTI of MC, Inc. +001400 MINERVA KOREA CO., LTD +001401 Rivertree Networks Corp. +001402 kk-electronic a/s +001403 Renasis, LLC +001404 ARRIS Group, Inc. +001405 OpenIB, Inc. +001406 Go Networks +001407 Sperian Protection Instrumentation +001408 Eka Systems Inc. +001409 MAGNETI MARELLI S.E. S.p.A. +00140a WEPIO Co., Ltd. +00140b FIRST INTERNATIONAL COMPUTER, INC. +00140c GKB CCTV CO., LTD. +00140d Nortel Networks +00140e Nortel Networks +00140f Federal State Unitary Enterprise Leningrad R&D Institute of +001410 Suzhou Keda Technology CO.,Ltd +001411 Deutschmann Automation GmbH & Co. KG +001412 S-TEC electronics AG +001413 Trebing & Himstedt Prozeßautomation GmbH & Co. KG +001414 Jumpnode Systems LLC. +001415 Intec Automation inc. +001416 Scosche Industries, Inc. +001417 RSE Informations Technologie GmbH +001418 C4Line +001419 SIDSA +00141a DEICY CORPORATION +00141b Cisco Systems, Inc +00141c Cisco Systems, Inc +00141d LTI-Motion GmbH +00141e P.A. Semi, Inc. +00141f SunKwang Electronics Co., Ltd +001420 G-Links networking company +001421 Total Wireless Technologies Pte. Ltd. +001422 Dell Inc. +001423 J-S Co. NEUROCOM +001424 Merry Electrics CO., LTD. +001425 Galactic Computing Corp. +001426 NL Technology +001427 JazzMutant +001428 Vocollect Inc +001429 V Center Technologies Co., Ltd. +00142a Elitegroup Computer Systems Co.,Ltd. +00142b Edata Communication Inc. +00142c Koncept International, Inc. +00142d Toradex AG +00142e 77 Elektronika Kft. +00142f Savvius +001430 ViPowER, Inc +001431 PDL Electronics Ltd +001432 Tarallax Wireless, Inc. +001433 Empower Technologies(Canada) Inc. +001434 Keri Systems, Inc +001435 CityCom Corp. +001436 Qwerty Elektronik AB +001437 GSTeletech Co.,Ltd. +001438 Hewlett Packard Enterprise +001439 Blonder Tongue Laboratories, Inc +00143a RAYTALK INTERNATIONAL SRL +00143b Sensovation AG +00143c Rheinmetall Canada Inc. +00143d Aevoe Inc. +00143e AirLink Communications, Inc. +00143f Hotway Technology Corporation +001440 ATOMIC Corporation +001441 Innovation Sound Technology Co., LTD. +001442 ATTO CORPORATION +001443 Consultronics Europe Ltd +001444 Grundfos Holding +001445 Telefon-Gradnja d.o.o. +001446 SuperVision Solutions LLC +001447 BOAZ Inc. +001448 Inventec Multimedia & Telecom Corporation +001449 Sichuan Changhong Electric Ltd. +00144a Taiwan Thick-Film Ind. Corp. +00144b Hifn, Inc. +00144c General Meters Corp. +00144d Intelligent Systems +00144e SRISA +00144f Oracle Corporation +001450 Heim Systems GmbH +001451 Apple, Inc. +001452 CALCULEX,INC. +001453 ADVANTECH TECHNOLOGIES CO.,LTD +001454 Symwave +001455 Coder Electronics Corporation +001456 Edge Products +001457 T-VIPS AS +001458 HS Automatic ApS +001459 Moram Co., Ltd. +00145a Neratec Solutions AG +00145b SeekerNet Inc. +00145c Intronics B.V. +00145d WJ Communications, Inc. +00145e IBM Corp +00145f ADITEC CO. LTD +001460 Kyocera Wireless Corp. +001461 CORONA CORPORATION +001462 Digiwell Technology, inc +001463 IDCS N.V. +001464 Cryptosoft +001465 Novo Nordisk A/S +001466 Kleinhenz Elektronik GmbH +001467 ArrowSpan Inc. +001468 CelPlan International, Inc. +001469 Cisco Systems, Inc +00146a Cisco Systems, Inc +00146b Anagran, Inc. +00146c NETGEAR +00146d RF Technologies +00146e H. Stoll GmbH & Co. KG +00146f Kohler Co +001470 Prokom Software SA +001471 Eastern Asia Technology Limited +001472 China Broadband Wireless IP Standard group(ChinaBWIPS) +001473 Bookham Inc +001474 K40 Electronics +001475 Wiline Networks, Inc. +001476 MultiCom Industries Limited +001477 Trilliant +001478 TP-LINK TECHNOLOGIES CO.,LTD. +001479 NEC Magnus Communications,Ltd. +00147a Eubus GmbH +00147b Iteris, Inc. +00147c 3Com Ltd +00147d Aeon Digital International +00147e InnerWireless +00147f Thomson Telecom Belgium +001480 Hitachi-LG Data Storage Korea, Inc +001481 Multilink Inc +001482 Aurora Networks +001483 eXS Inc. +001484 Cermate Technologies Inc. +001485 Giga-Byte +001486 Echo Digital Audio Corporation +001487 American Technology Integrators +001488 Akorri +001489 B15402100 - JANDEI, S.L. +00148a Elin Ebg Traction Gmbh +00148b Globo Electronic GmbH & Co. KG +00148c General Dynamics Mission Systems +00148d Cubic Defense Simulation Systems +00148e Tele Power Inc. +00148f Protronic (Far East) Ltd. +001490 ASP Corporation +001491 Daniels Electronics Ltd. dbo Codan Rado Communications +001492 Liteon, Mobile Media Solution SBU +001493 Systimax Solutions +001494 ESU AG +001495 2Wire Inc +001496 Phonic Corp. +001497 ZHIYUAN Eletronics co.,ltd. +001498 Viking Design Technology +001499 Helicomm Inc +00149a ARRIS Group, Inc. +00149b Nokota Communications, LLC +00149c HF Company +00149d Sound ID Inc. +00149e UbONE Co., Ltd +00149f System and Chips, Inc. +0014a0 Accsense, Inc. +0014a1 Synchronous Communication Corp +0014a2 Core Micro Systems Inc. +0014a3 Vitelec BV +0014a4 Hon Hai Precision Ind. Co.,Ltd. +0014a5 Gemtek Technology Co., Ltd. +0014a6 Teranetics, Inc. +0014a7 Nokia Danmark A/S +0014a8 Cisco Systems, Inc +0014a9 Cisco Systems, Inc +0014aa Ashly Audio, Inc. +0014ab Senhai Electronic Technology Co., Ltd. +0014ac Bountiful WiFi +0014ad Gassner Wiege- und Meßtechnik GmbH +0014ae Wizlogics Co., Ltd. +0014af Datasym POS Inc. +0014b0 Naeil Community +0014b1 Axell Wireless Limited +0014b2 mCubelogics Corporation +0014b3 CoreStar International Corp +0014b4 General Dynamics United Kingdom Ltd +0014b5 PHYSIOMETRIX,INC +0014b6 Enswer Technology Inc. +0014b7 AR Infotek Inc. +0014b8 Hill-Rom +0014b9 MSTAR SEMICONDUCTOR +0014ba Carvers SA de CV +0014bb Open Interface North America +0014bc SYNECTIC TELECOM EXPORTS PVT. LTD. +0014bd incNETWORKS, Inc +0014be Wink communication technology CO.LTD +0014bf Cisco-Linksys, LLC +0014c0 Symstream Technology Group Ltd +0014c1 U.S. Robotics Corporation +0014c2 Hewlett Packard +0014c3 Seagate Technology +0014c4 Vitelcom Mobile Technology +0014c5 Alive Technologies Pty Ltd +0014c6 Quixant Ltd +0014c7 Nortel Networks +0014c8 Contemporary Research Corp +0014c9 Brocade Communications Systems, Inc. +0014ca Key Radio Systems Limited +0014cb LifeSync Corporation +0014cc Zetec, Inc. +0014cd DigitalZone Co., Ltd. +0014ce NF CORPORATION +0014cf INVISIO Communications +0014d0 BTI Systems Inc. +0014d1 TRENDnet, Inc. +0014d2 Kyuden Technosystems Corporation +0014d3 SEPSA +0014d4 K Technology Corporation +0014d5 Datang Telecom Technology CO. , LCD,Optical Communication Br +0014d6 Jeongmin Electronics Co.,Ltd. +0014d7 Datastore Technology Corp +0014d8 bio-logic SA +0014d9 IP Fabrics, Inc. +0014da Huntleigh Healthcare +0014db Elma Trenew Electronic GmbH +0014dc Communication System Design & Manufacturing (CSDM) +0014dd Covergence Inc. +0014de Sage Instruments Inc. +0014df HI-P Tech Corporation +0014e0 LET'S Corporation +0014e1 Data Display AG +0014e2 datacom systems inc. +0014e3 mm-lab GmbH +0014e4 infinias, LLC +0014e5 Alticast +0014e6 AIM Infrarotmodule GmbH +0014e7 Stolinx,. Inc +0014e8 ARRIS Group, Inc. +0014e9 Nortech International +0014ea S Digm Inc. (Safe Paradigm Inc.) +0014eb AwarePoint Corporation +0014ec Acro Telecom +0014ed Airak, Inc. +0014ee Western Digital Technologies, Inc. +0014ef TZero Technologies, Inc. +0014f0 Business Security OL AB +0014f1 Cisco Systems, Inc +0014f2 Cisco Systems, Inc +0014f3 ViXS Systems Inc +0014f4 DekTec Digital Video B.V. +0014f5 OSI Security Devices +0014f6 Juniper Networks +0014f7 CREVIS Co., LTD +0014f8 Scientific Atlanta +0014f9 Vantage Controls +0014fa AsGa S.A. +0014fb Technical Solutions Inc. +0014fc Extandon, Inc. +0014fd Thecus Technology Corp. +0014fe Artech Electronics +0014ff Precise Automation, Inc. +001500 Intel Corporate +001501 LexBox +001502 BETA tech +001503 PROFIcomms s.r.o. +001504 GAME PLUS CO., LTD. +001505 Actiontec Electronics, Inc +001506 Neo Photonics +001507 Renaissance Learning Inc +001508 Global Target Enterprise Inc +001509 Plus Technology Co., Ltd +00150a Sonoa Systems, Inc +00150b SAGE INFOTECH LTD. +00150c AVM GmbH +00150d Hoana Medical, Inc. +00150e OPENBRAIN TECHNOLOGIES CO., LTD. +00150f mingjong +001510 Techsphere Co., Ltd +001511 Data Center Systems +001512 Zurich University of Applied Sciences +001513 EFS sas +001514 Hu Zhou NAVA Networks&Electronics Ltd. +001515 Leipold+Co.GmbH +001516 URIEL SYSTEMS INC. +001517 Intel Corporate +001518 Shenzhen 10MOONS Technology Development CO.,Ltd +001519 StoreAge Networking Technologies +00151a Hunter Engineering Company +00151b Isilon Systems Inc. +00151c LENECO +00151d M2I CORPORATION +00151e ETHERNET Powerlink Standarization Group (EPSG) +00151f Multivision Intelligent Surveillance (Hong Kong) Ltd +001520 Radiocrafts AS +001521 Horoquartz +001522 Dea Security +001523 Meteor Communications Corporation +001524 Numatics, Inc. +001525 Chamberlain Access Solutions +001526 Remote Technologies Inc +001527 Balboa Instruments +001528 Beacon Medical Products LLC d.b.a. BeaconMedaes +001529 N3 Corporation +00152a Nokia Corporation +00152b Cisco Systems, Inc +00152c Cisco Systems, Inc +00152d TenX Networks, LLC +00152e PacketHop, Inc. +00152f ARRIS Group, Inc. +001530 Dell EMC +001531 KOCOM +001532 Consumer Technologies Group, LLC +001533 NADAM.CO.,LTD +001534 A Beltrónica-Companhia de Comunicações, Lda +001535 OTE Spa +001536 Powertech co.,Ltd +001537 Ventus Networks +001538 RFID, Inc. +001539 Technodrive srl +00153a Shenzhen Syscan Technology Co.,Ltd. +00153b EMH metering GmbH & Co. KG +00153c Kprotech Co., Ltd. +00153d ELIM PRODUCT CO. +00153e Q-Matic Sweden AB +00153f Alcatel Alenia Space Italia +001540 Nortel Networks +001541 StrataLight Communications, Inc. +001542 MICROHARD S.R.L. +001543 Aberdeen Test Center +001544 coM.s.a.t. AG +001545 SEECODE Co., Ltd. +001546 ITG Worldwide Sdn Bhd +001547 AiZen Solutions Inc. +001548 CUBE TECHNOLOGIES +001549 Dixtal Biomedica Ind. Com. Ltda +00154a WANSHIH ELECTRONIC CO., LTD +00154b Wonde Proud Technology Co., Ltd +00154c Saunders Electronics +00154d Netronome Systems, Inc. +00154e IEC +00154f one RF Technology +001550 Nits Technology Inc +001551 RadioPulse Inc. +001552 Wi-Gear Inc. +001553 Cytyc Corporation +001554 Atalum Wireless S.A. +001555 DFM GmbH +001556 Sagemcom Broadband SAS +001557 Olivetti +001558 FOXCONN +001559 Securaplane Technologies, Inc. +00155a DAINIPPON PHARMACEUTICAL CO., LTD. +00155b Sampo Corporation +00155c Dresser Wayne +00155d Microsoft Corporation +00155e Morgan Stanley +00155f GreenPeak Technologies +001560 Hewlett Packard +001561 JJPlus Corporation +001562 Cisco Systems, Inc +001563 Cisco Systems, Inc +001564 BEHRINGER Spezielle Studiotechnik GmbH +001565 XIAMEN YEALINK NETWORK TECHNOLOGY CO.,LTD +001566 A-First Technology Co., Ltd. +001567 RADWIN Inc. +001568 Dilithium Networks +001569 PECO II, Inc. +00156a DG2L Technologies Pvt. Ltd. +00156b Perfisans Networks Corp. +00156c SANE SYSTEM CO., LTD +00156d Ubiquiti Networks Inc. +00156e A. W. Communication Systems Ltd +00156f Xiranet Communications GmbH +001570 Zebra Technologies Inc +001571 Nolan Systems +001572 Red-Lemon +001573 NewSoft Technology Corporation +001574 Horizon Semiconductors Ltd. +001575 Nevis Networks Inc. +001576 LABiTec - Labor Biomedical Technologies GmbH +001577 Allied Telesis, Inc. +001578 Audio / Video Innovations +001579 Lunatone Industrielle Elektronik GmbH +00157a Telefin S.p.A. +00157b Leuze electronic GmbH + Co. KG +00157c Dave Networks, Inc. +00157d POSDATA +00157e Weidmüller Interface GmbH & Co. KG +00157f ChuanG International Holding CO.,LTD. +001580 U-WAY CORPORATION +001581 MAKUS Inc. +001582 Pulse Eight Limited +001583 IVT corporation +001584 Schenck Process GmbH +001585 Aonvision Technolopy Corp. +001586 Xiamen Overseas Chinese Electronic Co., Ltd. +001587 Takenaka Seisakusho Co.,Ltd +001588 Salutica Allied Solutions Sdn Bhd +001589 D-MAX Technology Co.,Ltd +00158a SURECOM Technology Corp. +00158b Park Air Systems Ltd +00158c Liab ApS +00158d Jennic Ltd +00158e Plustek.INC +00158f NTT Advanced Technology Corporation +001590 Hectronic GmbH +001591 RLW Inc. +001592 Facom UK Ltd (Melksham) +001593 U4EA Technologies Inc. +001594 BIXOLON CO.,LTD +001595 Quester Tangent Corporation +001596 ARRIS Group, Inc. +001597 AETA AUDIO SYSTEMS +001598 Kolektor group +001599 Samsung Electronics Co.,Ltd +00159a ARRIS Group, Inc. +00159b Nortel Networks +00159c B-KYUNG SYSTEM Co.,Ltd. +00159d Tripp Lite +00159e Mad Catz Interactive Inc +00159f Terascala, Inc. +0015a0 Nokia Danmark A/S +0015a1 ECA-SINTERS +0015a2 ARRIS Group, Inc. +0015a3 ARRIS Group, Inc. +0015a4 ARRIS Group, Inc. +0015a5 DCI Co., Ltd. +0015a6 Digital Electronics Products Ltd. +0015a7 Robatech AG +0015a8 ARRIS Group, Inc. +0015a9 KWANG WOO I&C CO.,LTD +0015aa Rextechnik International Co., +0015ab PRO CO SOUND INC +0015ac Capelon AB +0015ad Accedian Networks +0015ae kyung il +0015af AzureWave Technology Inc. +0015b0 AUTOTELENET CO.,LTD +0015b1 Ambient Corporation +0015b2 Advanced Industrial Computer, Inc. +0015b3 Caretech AB +0015b4 Polymap Wireless LLC +0015b5 CI Network Corp. +0015b6 ShinMaywa Industries, Ltd. +0015b7 Toshiba +0015b8 Tahoe +0015b9 Samsung Electronics Co.,Ltd +0015ba iba AG +0015bb SMA Solar Technology AG +0015bc Develco +0015bd Group 4 Technology Ltd +0015be Iqua Ltd. +0015bf technicob +0015c0 DIGITAL TELEMEDIA CO.,LTD. +0015c1 Sony Interactive Entertainment Inc. +0015c2 3M Germany +0015c3 Ruf Telematik AG +0015c4 FLOVEL CO., LTD. +0015c5 Dell Inc. +0015c6 Cisco Systems, Inc +0015c7 Cisco Systems, Inc +0015c8 FlexiPanel Ltd +0015c9 Gumstix, Inc +0015ca TeraRecon, Inc. +0015cb Surf Communication Solutions Ltd. +0015cc UQUEST, LTD. +0015cd Exartech International Corp. +0015ce ARRIS Group, Inc. +0015cf ARRIS Group, Inc. +0015d0 ARRIS Group, Inc. +0015d1 ARRIS Group, Inc. +0015d2 Xantech Corporation +0015d3 Pantech&Curitel Communications, Inc. +0015d4 Emitor AB +0015d5 NICEVT +0015d6 OSLiNK Sp. z o.o. +0015d7 Reti Corporation +0015d8 Interlink Electronics +0015d9 PKC Electronics Oy +0015da IRITEL A.D. +0015db Canesta Inc. +0015dc KT&C Co., Ltd. +0015dd IP Control Systems Ltd. +0015de Nokia Danmark A/S +0015df Clivet S.p.A. +0015e0 Ericsson +0015e1 Picochip Ltd +0015e2 Dr.Ing. Herbert Knauer GmbH +0015e3 Dream Technologies Corporation +0015e4 Zimmer Elektromedizin +0015e5 Cheertek Inc. +0015e6 MOBILE TECHNIKA Inc. +0015e7 Quantec Tontechnik +0015e8 Nortel Networks +0015e9 D-Link Corporation +0015ea Tellumat (Pty) Ltd +0015eb zte corporation +0015ec Boca Devices LLC +0015ed Fulcrum Microsystems, Inc. +0015ee Omnex Control Systems +0015ef NEC TOKIN Corporation +0015f0 EGO BV +0015f1 KYLINK Communications Corp. +0015f2 ASUSTek COMPUTER INC. +0015f3 PELTOR AB +0015f4 Eventide +0015f5 Sustainable Energy Systems +0015f6 SCIENCE AND ENGINEERING SERVICES, INC. +0015f7 Wintecronics Ltd. +0015f8 Kingtronics Industrial Co. Ltd. +0015f9 Cisco Systems, Inc +0015fa Cisco Systems, Inc +0015fb setex schermuly textile computer gmbh +0015fc Littelfuse Startco +0015fd Complete Media Systems +0015fe SCHILLING ROBOTICS LLC +0015ff Novatel Wireless Solutions, Inc. +001600 CelleBrite Mobile Synchronization +001601 BUFFALO.INC +001602 CEYON TECHNOLOGY CO.,LTD. +001603 COOLKSKY Co., LTD +001604 Sigpro +001605 YORKVILLE SOUND INC. +001606 Ideal Industries +001607 Curves International Inc. +001608 Sequans Communications +001609 Unitech electronics co., ltd. +00160a SWEEX Europe BV +00160b TVWorks LLC +00160c LPL DEVELOPMENT S.A. DE C.V +00160d Be Here Corporation +00160e Optica Technologies Inc. +00160f BADGER METER INC +001610 Carina Technology +001611 Altecon Srl +001612 Otsuka Electronics Co., Ltd. +001613 LibreStream Technologies Inc. +001614 Picosecond Pulse Labs +001615 Nittan Company, Limited +001616 BROWAN COMMUNICATION INC. +001617 MSI +001618 HIVION Co., Ltd. +001619 Lancelan Technologies S.L. +00161a Dametric AB +00161b Micronet Corporation +00161c e:cue +00161d Innovative Wireless Technologies, Inc. +00161e Woojinnet +00161f SUNWAVETEC Co., Ltd. +001620 Sony Mobile Communications Inc +001621 Colorado Vnet +001622 BBH SYSTEMS GMBH +001623 Interval Media +001624 Teneros, Inc. +001625 Impinj, Inc. +001626 ARRIS Group, Inc. +001627 embedded-logic DESIGN AND MORE GmbH +001628 Magicard Ltd +001629 Nivus GmbH +00162a Antik computers & communications s.r.o. +00162b Togami Electric Mfg.co.,Ltd. +00162c Xanboo +00162d STNet Co., Ltd. +00162e Space Shuttle Hi-Tech Co., Ltd. +00162f Geutebrück GmbH +001630 Vativ Technologies +001631 Xteam +001632 Samsung Electronics Co.,Ltd +001633 Oxford Diagnostics Ltd. +001634 Mathtech, Inc. +001635 Hewlett Packard +001636 QUANTA COMPUTER INC. +001637 CITEL SpA +001638 TECOM Co., Ltd. +001639 Ubiquam Co., Ltd. +00163a YVES TECHNOLOGY CO., LTD. +00163b VertexRSI/General Dynamics +00163c Rebox B.V. +00163d Tsinghua Tongfang Legend Silicon Tech. Co., Ltd. +00163e Xensource, Inc. +00163f CReTE SYSTEMS Inc. +001640 Asmobile Communication Inc. +001641 Universal Global Scientific Industrial Co., Ltd. +001642 Pangolin +001643 Sunhillo Corporation +001644 LITE-ON Technology Corp. +001645 Power Distribution, Inc. +001646 Cisco Systems, Inc +001647 Cisco Systems, Inc +001648 SSD Company Limited +001649 SetOne GmbH +00164a Vibration Technology Limited +00164b Quorion Data Systems GmbH +00164c PLANET INT Co., Ltd +00164d Alcatel-Lucent IPD +00164e Nokia Danmark A/S +00164f World Ethnic Broadcastin Inc. +001650 Kratos EPD +001651 Exeo Systems +001652 Hoatech Technologies, Inc. +001653 LEGO System A/S IE Electronics Division +001654 Flex-P Industries Sdn. Bhd. +001655 FUHO TECHNOLOGY Co., LTD +001656 Nintendo Co., Ltd. +001657 Aegate Ltd +001658 Fusiontech Technologies Inc. +001659 Z.M.P. RADWAG +00165a Harman Specialty Group +00165b Grip Audio +00165c Trackflow Ltd. +00165d AirDefense, Inc. +00165e Precision I/O +00165f Fairmount Automation +001660 Nortel Networks +001661 Novatium Solutions (P) Ltd +001662 Liyuh Technology Ltd. +001663 KBT Mobile +001664 Prod-El SpA +001665 Cellon France +001666 Quantier Communication Inc. +001667 A-TEC Subsystem INC. +001668 Eishin Electronics +001669 MRV Communication (Networks) LTD +00166a TPS +00166b Samsung Electronics Co.,Ltd +00166c Samsung Electronics Co.,Ltd +00166d Yulong Computer Telecommunication Scientific (Shenzhen) Co.,Ltd +00166e Arbitron Inc. +00166f Intel Corporate +001670 SKNET Corporation +001671 Symphox Information Co. +001672 Zenway enterprise ltd +001673 Bury GmbH & Co. KG +001674 EuroCB (Phils.), Inc. +001675 ARRIS Group, Inc. +001676 Intel Corporate +001677 Bihl + Wiedemann GmbH +001678 SHENZHEN BAOAN GAOKE ELECTRONICS CO., LTD +001679 eOn Communications +00167a Skyworth Overseas Development Ltd. +00167b Haver&Boecker +00167c iRex Technologies BV +00167d Sky-Line Information Co., Ltd. +00167e DIBOSS.CO.,LTD +00167f Bluebird Soft Inc. +001680 Bally Gaming + Systems +001681 Vector Informatik GmbH +001682 Pro Dex, Inc +001683 WEBIO International Co.,.Ltd. +001684 Donjin Co.,Ltd. +001685 Elisa Oyj +001686 Karl Storz Imaging +001687 Chubb CSC-Vendor AP +001688 ServerEngines LLC +001689 Pilkor Electronics Co., Ltd +00168a id-Confirm Inc +00168b Paralan Corporation +00168c DSL Partner AS +00168d KORWIN CO., Ltd. +00168e Vimicro corporation +00168f GN Netcom A/S +001690 J-TEK INCORPORATION +001691 Moser-Baer AG +001692 Scientific-Atlanta, Inc. +001693 PowerLink Technology Inc. +001694 Sennheiser Communications A/S +001695 AVC Technology (International) Limited +001696 QDI Technology (H.K.) Limited +001697 NEC Corporation +001698 T&A Mobile Phones +001699 Tonic DVB Marketing Ltd +00169a Quadrics Ltd +00169b Alstom Transport +00169c Cisco Systems, Inc +00169d Cisco Systems, Inc +00169e TV One Ltd +00169f Vimtron Electronics Co., Ltd. +0016a0 Auto-Maskin +0016a1 3Leaf Networks +0016a2 CentraLite Systems, Inc. +0016a3 Ingeteam Transmission&Distribution, S.A. +0016a4 Ezurio Ltd +0016a5 Tandberg Storage ASA +0016a6 Dovado FZ-LLC +0016a7 AWETA G&P +0016a8 CWT CO., LTD. +0016a9 2EI +0016aa Kei Communication Technology Inc. +0016ab Dansensor A/S +0016ac Toho Technology Corp. +0016ad BT-Links Company Limited +0016ae INVENTEL +0016af Shenzhen Union Networks Equipment Co.,Ltd. +0016b0 VK Corporation +0016b1 KBS +0016b2 DriveCam Inc +0016b3 Photonicbridges (China) Co., Ltd. +0016b4 Private +0016b5 ARRIS Group, Inc. +0016b6 Cisco-Linksys, LLC +0016b7 Seoul Commtech +0016b8 Sony Mobile Communications Inc +0016b9 ProCurve Networking by HP +0016ba WEATHERNEWS INC. +0016bb Law-Chain Computer Technology Co Ltd +0016bc Nokia Danmark A/S +0016bd ATI Industrial Automation +0016be INFRANET, Inc. +0016bf PaloDEx Group Oy +0016c0 Semtech Corporation +0016c1 Eleksen Ltd +0016c2 Avtec Systems Inc +0016c3 BA Systems Inc +0016c4 SiRF Technology, Inc. +0016c5 Shenzhen Xing Feng Industry Co.,Ltd +0016c6 North Atlantic Industries +0016c7 Cisco Systems, Inc +0016c8 Cisco Systems, Inc +0016c9 NAT Seattle, Inc. +0016ca Nortel Networks +0016cb Apple, Inc. +0016cc Xcute Mobile Corp. +0016cd HIJI HIGH-TECH CO., LTD. +0016ce Hon Hai Precision Ind. Co.,Ltd. +0016cf Hon Hai Precision Ind. Co.,Ltd. +0016d0 ATech elektronika d.o.o. +0016d1 ZAT a.s. +0016d2 Caspian +0016d3 Wistron Corporation +0016d4 Compal Communications, Inc. +0016d5 Synccom Co., Ltd +0016d6 TDA Tech Pty Ltd +0016d7 Sunways AG +0016d8 Senea AB +0016d9 NINGBO BIRD CO.,LTD. +0016da Futronic Technology Co. Ltd. +0016db Samsung Electronics Co.,Ltd +0016dc ARCHOS +0016dd Gigabeam Corporation +0016de FAST Inc +0016df Lundinova AB +0016e0 3Com Ltd +0016e1 SiliconStor, Inc. +0016e2 American Fibertek, Inc. +0016e3 ASKEY COMPUTER CORP +0016e4 VANGUARD SECURITY ENGINEERING CORP. +0016e5 FORDLEY DEVELOPMENT LIMITED +0016e6 GIGA-BYTE TECHNOLOGY CO.,LTD. +0016e7 Dynamix Promotions Limited +0016e8 Sigma Designs, Inc. +0016e9 Tiba Medical Inc +0016ea Intel Corporate +0016eb Intel Corporate +0016ec Elitegroup Computer Systems Co.,Ltd. +0016ed Utility, Inc +0016ee Royaldigital Inc. +0016ef Koko Fitness, Inc. +0016f0 Dell +0016f1 OmniSense, LLC +0016f2 Dmobile System Co., Ltd. +0016f3 CAST Information Co., Ltd +0016f4 Eidicom Co., Ltd. +0016f5 Dalian Golden Hualu Digital Technology Co.,Ltd +0016f6 Video Products Group +0016f7 L-3 Communications, Aviation Recorders +0016f8 AVIQTECH TECHNOLOGY CO., LTD. +0016f9 CETRTA POT, d.o.o., Kranj +0016fa ECI Telecom Ltd. +0016fb SHENZHEN MTC CO LTD +0016fc TOHKEN CO.,LTD. +0016fd Jaty Electronics +0016fe ALPS ELECTRIC CO., LTD. +0016ff Wamin Optocomm Mfg Corp +001700 ARRIS Group, Inc. +001701 KDE, Inc. +001702 Osung Midicom Co., Ltd +001703 MOSDAN Internation Co.,Ltd +001704 Shinco Electronics Group Co.,Ltd +001705 Methode Electronics +001706 Techfaithwireless Communication Technology Limited. +001707 InGrid, Inc +001708 Hewlett Packard +001709 Exalt Communications +00170a INEW DIGITAL COMPANY +00170b Contela, Inc. +00170c Twig Com Ltd. +00170d Dust Networks Inc. +00170e Cisco Systems, Inc +00170f Cisco Systems, Inc +001710 Casa Systems Inc. +001711 GE Healthcare Bio-Sciences AB +001712 ISCO International +001713 Tiger NetCom +001714 BR Controls Nederland bv +001715 Qstik +001716 Qno Technology Inc. +001717 Leica Geosystems AG +001718 Vansco Electronics Oy +001719 Audiocodes USA, Inc +00171a Winegard Company +00171b Innovation Lab Corp. +00171c NT MicroSystems, Inc. +00171d DIGIT +00171e Theo Benning GmbH & Co. KG +00171f IMV Corporation +001720 Image Sensing Systems, Inc. +001721 FITRE S.p.A. +001722 Hanazeder Electronic GmbH +001723 Summit Data Communications +001724 Studer Professional Audio GmbH +001725 Liquid Computing +001726 m2c Electronic Technology Ltd. +001727 Thermo Ramsey Italia s.r.l. +001728 Selex Communications +001729 Ubicod Co.LTD +00172a Proware Technology Corp.(By Unifosa) +00172b Global Technologies Inc. +00172c TAEJIN INFOTECH +00172d Axcen Photonics Corporation +00172e FXC Inc. +00172f NeuLion Incorporated +001730 Automation Electronics +001731 ASUSTek COMPUTER INC. +001732 Science-Technical Center RISSA +001733 SFR +001734 ADC Telecommunications +001735 Intel Wireless Network Group +001736 iiTron Inc. +001737 Industrie Dial Face S.p.A. +001738 International Business Machines +001739 Bright Headphone Electronics Company +00173a Cloudastructure Inc +00173b Cisco Systems, Inc +00173c Extreme Engineering Solutions +00173d Neology +00173e LeucotronEquipamentos Ltda. +00173f Belkin International Inc. +001740 Bluberi Gaming Technologies Inc +001741 DEFIDEV +001742 FUJITSU LIMITED +001743 Deck Srl +001744 Araneo Ltd. +001745 INNOTZ CO., Ltd +001746 Freedom9 Inc. +001747 Trimble +001748 Neokoros Brasil Ltda +001749 HYUNDAE YONG-O-SA CO.,LTD +00174a SOCOMEC +00174b Nokia Danmark A/S +00174c Millipore +00174d DYNAMIC NETWORK FACTORY, INC. +00174e Parama-tech Co.,Ltd. +00174f iCatch Inc. +001750 GSI Group, MicroE Systems +001751 Online Corporation +001752 DAGS, Inc +001753 nFore Technology Inc. +001754 Arkino HiTOP Corporation Limited +001755 GE Security +001756 Vinci Labs Oy +001757 RIX TECHNOLOGY LIMITED +001758 ThruVision Ltd +001759 Cisco Systems, Inc +00175a Cisco Systems, Inc +00175b ACS Solutions Switzerland Ltd. +00175c SHARP CORPORATION +00175d Dongseo system. +00175e Zed-3 +00175f XENOLINK Communications Co., Ltd. +001760 Naito Densei Machida MFG.CO.,LTD +001761 Private +001762 Solar Technology, Inc. +001763 Essentia S.p.A. +001764 ATMedia GmbH +001765 Nortel Networks +001766 Accense Technology, Inc. +001767 Earforce AS +001768 Zinwave Ltd +001769 Cymphonix Corp +00176a Avago Technologies +00176b Kiyon, Inc. +00176c Pivot3, Inc. +00176d CORE CORPORATION +00176e DUCATI SISTEMI +00176f PAX Computer Technology(Shenzhen) Ltd. +001770 Arti Industrial Electronics Ltd. +001771 APD Communications Ltd +001772 ASTRO Strobel Kommunikationssysteme GmbH +001773 Laketune Technologies Co. Ltd +001774 Elesta GmbH +001775 TTE Germany GmbH +001776 Meso Scale Diagnostics, LLC +001777 Obsidian Research Corporation +001778 Central Music Co. +001779 QuickTel +00177a ASSA ABLOY AB +00177b Azalea Networks inc +00177c Smartlink Network Systems Limited +00177d IDT Technology Limited +00177e Meshcom Technologies Inc. +00177f Worldsmart Retech +001780 Applied Biosystems B.V. +001781 Greystone Data System, Inc. +001782 LoBenn Inc. +001783 Texas Instruments +001784 ARRIS Group, Inc. +001785 Sparr Electronics Ltd +001786 wisembed +001787 Brother, Brother & Sons ApS +001788 Philips Lighting BV +001789 Zenitron Corporation +00178a DARTS TECHNOLOGIES CORP. +00178b Teledyne Technologies Incorporated +00178c Independent Witness, Inc +00178d Checkpoint Systems, Inc. +00178e Gunnebo Cash Automation AB +00178f NINGBO YIDONG ELECTRONIC CO.,LTD. +001790 HYUNDAI DIGITECH Co, Ltd. +001791 LinTech GmbH +001792 Falcom Wireless Comunications Gmbh +001793 Tigi Corporation +001794 Cisco Systems, Inc +001795 Cisco Systems, Inc +001796 Rittmeyer AG +001797 Telsy Elettronica S.p.A. +001798 Azonic Technology Co., LTD +001799 SmarTire Systems Inc. +00179a D-Link Corporation +00179b CHANT SINCERE CO.,LTD +00179c DEPRAG SCHULZ GMBH u. CO. +00179d Kelman Limited +00179e Sirit Inc +00179f Apricorn +0017a0 RoboTech srl +0017a1 3soft inc. +0017a2 Camrivox Ltd. +0017a3 MIX s.r.l. +0017a4 Hewlett Packard +0017a5 Ralink Technology Corp +0017a6 YOSIN ELECTRONICS CO., LTD. +0017a7 Mobile Computing Promotion Consortium +0017a8 EDM Corporation +0017a9 Sentivision +0017aa elab-experience inc. +0017ab Nintendo Co., Ltd. +0017ac O'Neil Product Development Inc. +0017ad AceNet Corporation +0017ae GAI-Tronics +0017af Enermet +0017b0 Nokia Danmark A/S +0017b1 ACIST Medical Systems, Inc. +0017b2 SK Telesys +0017b3 Aftek Infosys Limited +0017b4 Remote Security Systems, LLC +0017b5 Peerless Systems Corporation +0017b6 Aquantia Corporation +0017b7 Tonze Technology Co. +0017b8 NOVATRON CO., LTD. +0017b9 Gambro Lundia AB +0017ba SEDO CO., LTD. +0017bb Syrinx Industrial Electronics +0017bc Touchtunes Music Corporation +0017bd Tibetsystem +0017be Tratec Telecom B.V. +0017bf Coherent Research Limited +0017c0 PureTech Systems, Inc. +0017c1 CM Precision Technology LTD. +0017c2 ADB Broadband Italia +0017c3 KTF Technologies Inc. +0017c4 Quanta Microsystems, INC. +0017c5 SonicWALL +0017c6 Cross Match Technologies Inc +0017c7 MARA Systems Consulting AB +0017c8 KYOCERA Display Corporation +0017c9 Samsung Electronics Co.,Ltd +0017ca Qisda Corporation +0017cb Juniper Networks +0017cc Alcatel-Lucent +0017cd CEC Wireless R&D Ltd. +0017ce Screen Service Spa +0017cf iMCA-GmbH +0017d0 Opticom Communications, LLC +0017d1 Nortel Networks +0017d2 THINLINX PTY LTD +0017d3 Etymotic Research, Inc. +0017d4 Monsoon Multimedia, Inc +0017d5 Samsung Electronics Co.,Ltd +0017d6 Bluechips Microhouse Co.,Ltd. +0017d7 ION Geophysical Corporation Inc. +0017d8 Magnum Semiconductor, Inc. +0017d9 AAI Corporation +0017da Spans Logic +0017db CANKO TECHNOLOGIES INC. +0017dc DAEMYUNG ZERO1 +0017dd Clipsal Australia +0017de Advantage Six Ltd +0017df Cisco Systems, Inc +0017e0 Cisco Systems, Inc +0017e1 DACOS Technologies Co., Ltd. +0017e2 ARRIS Group, Inc. +0017e3 Texas Instruments +0017e4 Texas Instruments +0017e5 Texas Instruments +0017e6 Texas Instruments +0017e7 Texas Instruments +0017e8 Texas Instruments +0017e9 Texas Instruments +0017ea Texas Instruments +0017eb Texas Instruments +0017ec Texas Instruments +0017ed WooJooIT Ltd. +0017ee ARRIS Group, Inc. +0017ef IBM Corp +0017f0 SZCOM Broadband Network Technology Co.,Ltd +0017f1 Renu Electronics Pvt Ltd +0017f2 Apple, Inc. +0017f3 Harris Corporation +0017f4 ZERON ALLIANCE +0017f5 LIG NEOPTEK +0017f6 Pyramid Meriden Inc. +0017f7 CEM Solutions Pvt Ltd +0017f8 Motech Industries Inc. +0017f9 Forcom Sp. z o.o. +0017fa Microsoft Corporation +0017fb FA +0017fc Suprema Inc. +0017fd Amulet Hotkey +0017fe TALOS SYSTEM INC. +0017ff PLAYLINE Co.,Ltd. +001800 UNIGRAND LTD +001801 Actiontec Electronics, Inc +001802 Alpha Networks Inc. +001803 ArcSoft Shanghai Co. LTD +001804 E-TEK DIGITAL TECHNOLOGY LIMITED +001805 Beijing InHand Networking Technology Co.,Ltd. +001806 Hokkei Industries Co., Ltd. +001807 Fanstel Corp. +001808 SightLogix, Inc. +001809 CRESYN +00180a Cisco Meraki +00180b Brilliant Telecommunications +00180c Optelian Access Networks +00180d Terabytes Server Storage Tech Corp +00180e Avega Systems +00180f Nokia Danmark A/S +001810 IPTrade S.A. +001811 Neuros Technology International, LLC. +001812 Beijing Xinwei Telecom Technology Co., Ltd. +001813 Sony Mobile Communications Inc +001814 Mitutoyo Corporation +001815 GZ Technologies, Inc. +001816 Ubixon Co., Ltd. +001817 D. E. Shaw Research, LLC +001818 Cisco Systems, Inc +001819 Cisco Systems, Inc +00181a AVerMedia Information Inc. +00181b TaiJin Metal Co., Ltd. +00181c Exterity Limited +00181d ASIA ELECTRONICS CO.,LTD +00181e GDX Technologies Ltd. +00181f Palmmicro Communications +001820 w5networks +001821 SINDORICOH +001822 CEC TELECOM CO.,LTD. +001823 Delta Electronics, Inc. +001824 Kimaldi Electronics, S.L. +001825 Private +001826 Cale Access AB +001827 NEC UNIFIED SOLUTIONS NEDERLAND B.V. +001828 e2v technologies (UK) ltd. +001829 Gatsometer +00182a Taiwan Video & Monitor +00182b Softier +00182c Ascend Networks, Inc. +00182d Artec Design +00182e XStreamHD +00182f Texas Instruments +001830 Texas Instruments +001831 Texas Instruments +001832 Texas Instruments +001833 Texas Instruments +001834 Texas Instruments +001835 Thoratec / ITC +001836 REJ Co.,Ltd +001837 Universal ABIT Co., Ltd. +001838 PanAccess Communications,Inc. +001839 Cisco-Linksys, LLC +00183a Westell Technologies Inc. +00183b CENITS Co., Ltd. +00183c Encore Software Limited +00183d Vertex Link Corporation +00183e Digilent, Inc +00183f 2Wire Inc +001840 3 Phoenix, Inc. +001841 High Tech Computer Corp +001842 Nokia Danmark A/S +001843 Dawevision Ltd +001844 Heads Up Technologies, Inc. +001845 Pulsar-Telecom LLC. +001846 Crypto S.A. +001847 AceNet Technology Inc. +001848 Vecima Networks Inc. +001849 nVent, Schroff GmbH +00184a Catcher, Inc. +00184b Las Vegas Gaming, Inc. +00184c Bogen Communications +00184d NETGEAR +00184e Lianhe Technologies, Inc. +00184f 8 Ways Technology Corp. +001850 Secfone Kft +001851 SWsoft +001852 StorLink Semiconductors, Inc. +001853 Atera Networks LTD. +001854 Argard Co., Ltd +001855 Aeromaritime Systembau GmbH +001856 EyeFi, Inc +001857 Unilever R&D +001858 TagMaster AB +001859 Strawberry Linux Co.,Ltd. +00185a uControl, Inc. +00185b Network Chemistry, Inc +00185c EDSLAB Technologies +00185d TAIGUEN TECHNOLOGY (SHEN-ZHEN) CO., LTD. +00185e Nexterm Inc. +00185f TAC Inc. +001860 SIM Technology Group Shanghai Simcom Ltd., +001861 Ooma, Inc. +001862 Seagate Technology +001863 Veritech Electronics Limited +001864 Eaton Corporation +001865 Siemens Healthcare Diagnostics Manufacturing Ltd +001866 Leutron Vision +001867 Datalogic ADC +001868 Cisco SPVTG +001869 KINGJIM +00186a Global Link Digital Technology Co,.LTD +00186b Sambu Communics CO., LTD. +00186c Neonode AB +00186d Zhenjiang Sapphire Electronic Industry CO. +00186e 3Com Ltd +00186f Setha Industria Eletronica LTDA +001870 E28 Shanghai Limited +001871 Hewlett Packard +001872 Expertise Engineering +001873 Cisco Systems, Inc +001874 Cisco Systems, Inc +001875 AnaCise Testnology Pte Ltd +001876 WowWee Ltd. +001877 Amplex A/S +001878 Mackware GmbH +001879 dSys +00187a Wiremold +00187b 4NSYS Co. Ltd. +00187c INTERCROSS, LLC +00187d Armorlink Co .Ltd +00187e RGB Spectrum +00187f ZODIANET +001880 Maxim Integrated Products +001881 Buyang Electronics Industrial Co., Ltd +001882 HUAWEI TECHNOLOGIES CO.,LTD +001883 FORMOSA21 INC. +001884 Fon Technology S.L. +001885 Avigilon Corporation +001886 EL-TECH, INC. +001887 Metasystem SpA +001888 GOTIVE a.s. +001889 WinNet Solutions Limited +00188a Infinova LLC +00188b Dell Inc. +00188c Mobile Action Technology Inc. +00188d Nokia Danmark A/S +00188e Ekahau, Inc. +00188f Montgomery Technology, Inc. +001890 RadioCOM, s.r.o. +001891 Zhongshan General K-mate Electronics Co., Ltd +001892 ads-tec GmbH +001893 SHENZHEN PHOTON BROADBAND TECHNOLOGY CO.,LTD +001894 NPCore, Inc. +001895 Hansun Technologies Inc. +001896 Great Well Electronic LTD +001897 JESS-LINK PRODUCTS Co., LTD +001898 KINGSTATE ELECTRONICS CORPORATION +001899 ShenZhen jieshun Science&Technology Industry CO,LTD. +00189a HANA Micron Inc. +00189b Thomson Inc. +00189c Weldex Corporation +00189d Navcast Inc. +00189e OMNIKEY GmbH. +00189f Lenntek Corporation +0018a0 Cierma Ascenseurs +0018a1 Tiqit Computers, Inc. +0018a2 XIP Technology AB +0018a3 ZIPPY TECHNOLOGY CORP. +0018a4 ARRIS Group, Inc. +0018a5 ADigit Technologies Corp. +0018a6 Persistent Systems, LLC +0018a7 Yoggie Security Systems LTD. +0018a8 AnNeal Technology Inc. +0018a9 Ethernet Direct Corporation +0018aa Protec Fire Detection plc +0018ab BEIJING LHWT MICROELECTRONICS INC. +0018ac Shanghai Jiao Da HISYS Technology Co. Ltd. +0018ad NIDEC SANKYO CORPORATION +0018ae TVT CO.,LTD +0018af Samsung Electronics Co.,Ltd +0018b0 Nortel Networks +0018b1 IBM Corp +0018b2 ADEUNIS RF +0018b3 TEC WizHome Co., Ltd. +0018b4 Dawon Media Inc. +0018b5 Magna Carta +0018b6 S3C, Inc. +0018b7 D3 LED, LLC +0018b8 New Voice International AG +0018b9 Cisco Systems, Inc +0018ba Cisco Systems, Inc +0018bb Eliwell Controls srl +0018bc ZAO NVP Bolid +0018bd SHENZHEN DVBWORLD TECHNOLOGY CO., LTD. +0018be ANSA Corporation +0018bf Essence Technology Solution, Inc. +0018c0 ARRIS Group, Inc. +0018c1 Almitec Informática e Comércio +0018c2 Firetide, Inc +0018c3 CS Corporation +0018c4 Raba Technologies LLC +0018c5 Nokia Danmark A/S +0018c6 OPW Fuel Management Systems +0018c7 Real Time Automation +0018c8 ISONAS Inc. +0018c9 EOps Technology Limited +0018ca Viprinet GmbH +0018cb Tecobest Technology Limited +0018cc AXIOHM SAS +0018cd Erae Electronics Industry Co., Ltd +0018ce Dreamtech Co., Ltd +0018cf Baldor Electric Company +0018d0 AtRoad, A Trimble Company +0018d1 Siemens Home & Office Comm. Devices +0018d2 High-Gain Antennas LLC +0018d3 TEAMCAST +0018d4 Unified Display Interface SIG +0018d5 REIGNCOM +0018d6 Swirlnet A/S +0018d7 JAVAD GNSS, Inc. +0018d8 ARCH METER Corporation +0018d9 Santosha Internatonal, Inc +0018da Würth Elektronik eiSos GmbH & Co. KG +0018db EPL Technology Ltd +0018dc Prostar Co., Ltd. +0018dd Silicondust Engineering Ltd +0018de Intel Corporate +0018df The Morey Corporation +0018e0 ANAVEO +0018e1 Verkerk Service Systemen +0018e2 Topdata Sistemas de Automacao Ltda +0018e3 Visualgate Systems, Inc. +0018e4 YIGUANG +0018e5 Adhoco AG +0018e6 Computer Hardware Design SIA +0018e7 Cameo Communications, INC. +0018e8 Hacetron Corporation +0018e9 Numata Corporation +0018ea Alltec GmbH +0018eb Blue Zen Enterprises Private Limited +0018ec Welding Technology Corporation +0018ed Accutech Ultrasystems Co., Ltd. +0018ee Videology Imaging Solutions, Inc. +0018ef Escape Communications, Inc. +0018f0 JOYTOTO Co., Ltd. +0018f1 Chunichi Denshi Co.,LTD. +0018f2 Beijing Tianyu Communication Equipment Co., Ltd +0018f3 ASUSTek COMPUTER INC. +0018f4 EO TECHNICS Co., Ltd. +0018f5 Shenzhen Streaming Video Technology Company Limited +0018f6 Thomson Telecom Belgium +0018f7 Kameleon Technologies +0018f8 Cisco-Linksys, LLC +0018f9 VVOND, Inc. +0018fa Yushin Precision Equipment Co.,Ltd. +0018fb Compro Technology +0018fc Altec Electronic AG +0018fd Optimal Technologies International Inc. +0018fe Hewlett Packard +0018ff PowerQuattro Co. +001900 Intelliverese - DBA Voicecom +001901 F1MEDIA +001902 Cambridge Consultants Ltd +001903 Bigfoot Networks Inc +001904 WB Electronics Sp. z o.o. +001905 SCHRACK Seconet AG +001906 Cisco Systems, Inc +001907 Cisco Systems, Inc +001908 Duaxes Corporation +001909 DEVI - Danfoss A/S +00190a HASWARE INC. +00190b Southern Vision Systems, Inc. +00190c Encore Electronics, Inc. +00190d IEEE 1394c +00190e Atech Technology Co., Ltd. +00190f Advansus Corp. +001910 Knick Elektronische Messgeraete GmbH & Co. KG +001911 Just In Mobile Information Technologies (Shanghai) Co., Ltd. +001912 Welcat Inc +001913 Chuang-Yi Network Equipment Co.Ltd. +001914 Winix Co., Ltd +001915 TECOM Co., Ltd. +001916 PayTec AG +001917 Posiflex Inc. +001918 Interactive Wear AG +001919 ASTEL Inc. +00191a IRLINK +00191b Sputnik Engineering AG +00191c Sensicast Systems +00191d Nintendo Co., Ltd. +00191e Beyondwiz Co., Ltd. +00191f Microlink communications Inc. +001920 KUME electric Co.,Ltd. +001921 Elitegroup Computer Systems Co.,Ltd. +001922 CM Comandos Lineares +001923 Phonex Korea Co., LTD. +001924 LBNL Engineering +001925 Intelicis Corporation +001926 BitsGen Co., Ltd. +001927 ImCoSys Ltd +001928 Siemens AG, Transportation Systems +001929 2M2B Montadora de Maquinas Bahia Brasil LTDA +00192a Antiope Associates +00192b Aclara RF Systems Inc. +00192c ARRIS Group, Inc. +00192d Nokia Corporation +00192e Spectral Instruments, Inc. +00192f Cisco Systems, Inc +001930 Cisco Systems, Inc +001931 Balluff GmbH +001932 Gude Analog- und Digialsysteme GmbH +001933 Strix Systems, Inc. +001934 TRENDON TOUCH TECHNOLOGY CORP. +001935 DUERR DENTAL AG +001936 STERLITE OPTICAL TECHNOLOGIES LIMITED +001937 CommerceGuard AB +001938 UMB Communications Co., Ltd. +001939 Gigamips +00193a OESOLUTIONS +00193b LigoWave +00193c HighPoint Technologies Incorporated +00193d GMC Guardian Mobility Corp. +00193e ADB Broadband Italia +00193f RDI technology(Shenzhen) Co.,LTD +001940 Rackable Systems +001941 Pitney Bowes, Inc +001942 ON SOFTWARE INTERNATIONAL LIMITED +001943 Belden +001944 Fossil Partners, L.P. +001945 RF COncepts, LLC +001946 Cianet Industria e Comercio S/A +001947 Cisco SPVTG +001948 AireSpider Networks +001949 TENTEL COMTECH CO., LTD. +00194a TESTO AG +00194b Sagemcom Broadband SAS +00194c Fujian Stelcom information & Technology CO.,Ltd +00194d Avago Technologies Sdn Bhd +00194e Ultra Electronics - TCS (Tactical Communication Systems) +00194f Nokia Danmark A/S +001950 Harman Multimedia +001951 NETCONS, s.r.o. +001952 ACOGITO Co., Ltd +001953 Chainleader Communications Corp. +001954 Leaf Corporation. +001955 Cisco Systems, Inc +001956 Cisco Systems, Inc +001957 Saafnet Canada Inc. +001958 Bluetooth SIG, Inc. +001959 Staccato Communications Inc. +00195a Jenaer Antriebstechnik GmbH +00195b D-Link Corporation +00195c Innotech Corporation +00195d ShenZhen XinHuaTong Opto Electronics Co.,Ltd +00195e ARRIS Group, Inc. +00195f Valemount Networks Corporation +001960 DoCoMo Systems, Inc. +001961 Blaupunkt Embedded Systems GmbH +001962 Commerciant, LP +001963 Sony Mobile Communications Inc +001964 Doorking Inc. +001965 YuHua TelTech (ShangHai) Co., Ltd. +001966 Asiarock Technology Limited +001967 TELDAT Sp.J. +001968 Digital Video Networks(Shanghai) CO. LTD. +001969 Nortel Networks +00196a MikroM GmbH +00196b Danpex Corporation +00196c ETROVISION TECHNOLOGY +00196d Raybit Systems Korea, Inc +00196e Metacom (Pty) Ltd. +00196f SensoPart GmbH +001970 Z-Com, Inc. +001971 Guangzhou Unicomp Technology Co.,Ltd +001972 Plexus (Xiamen) Co.,ltd. +001973 Zeugma Systems +001974 16063 +001975 Beijing Huisen networks technology Inc +001976 Xipher Technologies, LLC +001977 Aerohive Networks Inc. +001978 Datum Systems, Inc. +001979 Nokia Danmark A/S +00197a MAZeT GmbH +00197b Picotest Corp. +00197c Riedel Communications GmbH +00197d Hon Hai Precision Ind. Co.,Ltd. +00197e Hon Hai Precision Ind. Co.,Ltd. +00197f PLANTRONICS, INC. +001980 Gridpoint Systems +001981 Vivox Inc +001982 SmarDTV +001983 CCT R&D Limited +001984 ESTIC Corporation +001985 IT Watchdogs, Inc +001986 Cheng Hongjian +001987 Panasonic Mobile Communications Co.,Ltd. +001988 Wi2Wi, Inc +001989 Sonitrol Corporation +00198a Northrop Grumman Systems Corp. +00198b Novera Optics Korea, Inc. +00198c iXSea +00198d Ocean Optics, Inc. +00198e Oticon A/S +00198f Nokia Bell N.V. +001990 ELM DATA Co., Ltd. +001991 avinfo +001992 Adtran Inc +001993 Changshu Switchgear MFG. Co.,Ltd. (Former Changshu Switchgea +001994 Jorjin Technologies Inc. +001995 Jurong Hi-Tech (Suzhou)Co.ltd +001996 TurboChef Technologies Inc. +001997 Soft Device Sdn Bhd +001998 SATO CORPORATION +001999 Fujitsu Technology Solutions GmbH +00199a EDO-EVI +00199b Diversified Technical Systems, Inc. +00199c CTRING +00199d Vizio, Inc +00199e Nifty +00199f DKT A/S +0019a0 NIHON DATA SYSTENS, INC. +0019a1 LG INFORMATION & COMM. +0019a2 ORDYN TECHNOLOGIES +0019a3 asteel electronique atlantique +0019a4 Austar Technology (hang zhou) Co.,Ltd +0019a5 RadarFind Corporation +0019a6 ARRIS Group, Inc. +0019a7 ITU-T +0019a8 WiQuest Communications +0019a9 Cisco Systems, Inc +0019aa Cisco Systems, Inc +0019ab Raycom CO ., LTD +0019ac GSP SYSTEMS Inc. +0019ad BOBST SA +0019ae Hopling Technologies b.v. +0019af Rigol Technologies, Inc. +0019b0 HanYang System +0019b1 Arrow7 Corporation +0019b2 XYnetsoft Co.,Ltd +0019b3 Stanford Research Systems +0019b4 Intellio Ltd +0019b5 Famar Fueguina S.A. +0019b6 Euro Emme s.r.l. +0019b7 Nokia Danmark A/S +0019b8 Boundary Devices +0019b9 Dell Inc. +0019ba Paradox Security Systems Ltd +0019bb Hewlett Packard +0019bc ELECTRO CHANCE SRL +0019bd New Media Life +0019be Altai Technologies Limited +0019bf Citiway technology Co.,ltd +0019c0 ARRIS Group, Inc. +0019c1 ALPS ELECTRIC CO., LTD. +0019c2 Equustek Solutions, Inc. +0019c3 Qualitrol +0019c4 Infocrypt Inc. +0019c5 Sony Interactive Entertainment Inc. +0019c6 zte corporation +0019c7 Cambridge Industries(Group) Co.,Ltd. +0019c8 AnyDATA Corporation +0019c9 S&C ELECTRIC COMPANY +0019ca Broadata Communications, Inc +0019cb Zyxel Communications Corporation +0019cc RCG (HK) Ltd +0019cd Chengdu ethercom information technology Ltd. +0019ce Progressive Gaming International +0019cf SALICRU, S.A. +0019d0 Cathexis +0019d1 Intel Corporate +0019d2 Intel Corporate +0019d3 TRAK Microwave +0019d4 ICX Technologies +0019d5 IP Innovations, Inc. +0019d6 LS Cable and System Ltd. +0019d7 FORTUNETEK CO., LTD +0019d8 MAXFOR +0019d9 Zeutschel GmbH +0019da Welltrans O&E Technology Co. , Ltd. +0019db MICRO-STAR INTERNATIONAL CO., LTD. +0019dc ENENSYS Technologies +0019dd FEI-Zyfer, Inc. +0019de MOBITEK +0019df Thomson Inc. +0019e0 TP-LINK TECHNOLOGIES CO.,LTD. +0019e1 Nortel Networks +0019e2 Juniper Networks +0019e3 Apple, Inc. +0019e4 2Wire Inc +0019e5 Lynx Studio Technology, Inc. +0019e6 TOYO MEDIC CO.,LTD. +0019e7 Cisco Systems, Inc +0019e8 Cisco Systems, Inc +0019e9 S-Information Technolgy, Co., Ltd. +0019ea TeraMage Technologies Co., Ltd. +0019eb Pyronix Ltd +0019ec Sagamore Systems, Inc. +0019ed Axesstel Inc. +0019ee CARLO GAVAZZI CONTROLS SPA-Controls Division +0019ef SHENZHEN LINNKING ELECTRONICS CO.,LTD +0019f0 UNIONMAN TECHNOLOGY CO.,LTD +0019f1 Star Communication Network Technology Co.,Ltd +0019f2 Teradyne K.K. +0019f3 Cetis, Inc +0019f4 Convergens Oy Ltd +0019f5 Imagination Technologies Ltd +0019f6 Acconet (PTE) Ltd +0019f7 Onset Computer Corporation +0019f8 Embedded Systems Design, Inc. +0019f9 TDK-Lambda +0019fa Cable Vision Electronics CO., LTD. +0019fb BSkyB Ltd +0019fc PT. Ufoakses Sukses Luarbiasa +0019fd Nintendo Co., Ltd. +0019fe SHENZHEN SEECOMM TECHNOLOGY CO.,LTD. +0019ff Finnzymes +001a00 MATRIX INC. +001a01 Smiths Medical +001a02 SECURE CARE PRODUCTS, INC +001a03 Angel Electronics Co., Ltd. +001a04 Interay Solutions BV +001a05 OPTIBASE LTD +001a06 OpVista, Inc. +001a07 Arecont Vision +001a08 Simoco Ltd. +001a09 Wayfarer Transit Systems Ltd +001a0a Adaptive Micro-Ware Inc. +001a0b BONA TECHNOLOGY INC. +001a0c Swe-Dish Satellite Systems AB +001a0d HandHeld entertainment, Inc. +001a0e Cheng Uei Precision Industry Co.,Ltd +001a0f Sistemas Avanzados de Control, S.A. +001a10 LUCENT TRANS ELECTRONICS CO.,LTD +001a11 Google, Inc. +001a12 Essilor +001a13 Wanlida Group Co., LTD +001a14 Xin Hua Control Engineering Co.,Ltd. +001a15 gemalto e-Payment +001a16 Nokia Danmark A/S +001a17 Teak Technologies, Inc. +001a18 Advanced Simulation Technology inc. +001a19 Computer Engineering Limited +001a1a Gentex Corporation/Electro-Acoustic Products +001a1b ARRIS Group, Inc. +001a1c GT&T Engineering Pte Ltd +001a1d PChome Online Inc. +001a1e Aruba, a Hewlett Packard Enterprise Company +001a1f Coastal Environmental Systems +001a20 CMOTECH Co. Ltd. +001a21 Brookhuis Applied Technologies BV +001a22 eQ-3 Entwicklung GmbH +001a23 Ice Qube, Inc +001a24 Galaxy Telecom Technologies Ltd +001a25 DELTA DORE +001a26 Deltanode Solutions AB +001a27 Ubistar +001a28 ASWT Co., LTD. Taiwan Branch H.K. +001a29 Johnson Outdoors Marine Electronics d/b/a Minnkota +001a2a Arcadyan Technology Corporation +001a2b Ayecom Technology Co., Ltd. +001a2c SATEC Co.,LTD +001a2d The Navvo Group +001a2e Ziova Coporation +001a2f Cisco Systems, Inc +001a30 Cisco Systems, Inc +001a31 SCAN COIN AB +001a32 ACTIVA MULTIMEDIA +001a33 ASI Communications, Inc. +001a34 Konka Group Co., Ltd. +001a35 BARTEC GmbH +001a36 Aipermon GmbH & Co. KG +001a37 Lear Corporation +001a38 Sanmina-SCI +001a39 Merten GmbH&CoKG +001a3a Dongahelecomm +001a3b Doah Elecom Inc. +001a3c Technowave Ltd. +001a3d Ajin Vision Co.,Ltd +001a3e Faster Technology LLC +001a3f Intelbras +001a40 A-FOUR TECH CO., LTD. +001a41 INOCOVA Co.,Ltd +001a42 Techcity Technology co., Ltd. +001a43 Logical Link Communications +001a44 JWTrading Co., Ltd +001a45 GN Netcom A/S +001a46 Digital Multimedia Technology Co., Ltd +001a47 Agami Systems, Inc. +001a48 Takacom Corporation +001a49 Micro Vision Co.,LTD +001a4a Qumranet Inc. +001a4b Hewlett Packard +001a4c Crossbow Technology, Inc +001a4d GIGA-BYTE TECHNOLOGY CO.,LTD. +001a4e NTI AG / LinMot +001a4f AVM GmbH +001a50 PheeNet Technology Corp. +001a51 Alfred Mann Foundation +001a52 Meshlinx Wireless Inc. +001a53 Zylaya +001a54 Hip Shing Electronics Ltd. +001a55 ACA-Digital Corporation +001a56 ViewTel Co,. Ltd. +001a57 Matrix Design Group, LLC +001a58 CCV Deutschland GmbH - Celectronic eHealth Div. +001a59 Ircona +001a5a Korea Electric Power Data Network (KDN) Co., Ltd +001a5b NetCare Service Co., Ltd. +001a5c Euchner GmbH+Co. KG +001a5d Mobinnova Corp. +001a5e Thincom Technology Co.,Ltd +001a5f KitWorks.fi Ltd. +001a60 Wave Electronics Co.,Ltd. +001a61 PacStar Corp. +001a62 Data Robotics, Incorporated +001a63 Elster Solutions, LLC, +001a64 IBM Corp +001a65 Seluxit +001a66 ARRIS Group, Inc. +001a67 Infinite QL Sdn Bhd +001a68 Weltec Enterprise Co., Ltd. +001a69 Wuhan Yangtze Optical Technology CO.,Ltd. +001a6a Tranzas, Inc. +001a6b Universal Global Scientific Industrial Co., Ltd. +001a6c Cisco Systems, Inc +001a6d Cisco Systems, Inc +001a6e Impro Technologies +001a6f MI.TEL s.r.l. +001a70 Cisco-Linksys, LLC +001a71 Diostech Co., Ltd. +001a72 Mosart Semiconductor Corp. +001a73 Gemtek Technology Co., Ltd. +001a74 Procare International Co +001a75 Sony Mobile Communications Inc +001a76 SDT information Technology Co.,LTD. +001a77 ARRIS Group, Inc. +001a78 ubtos +001a79 TELECOMUNICATION TECHNOLOGIES LTD. +001a7a Lismore Instruments Limited +001a7b Teleco, Inc. +001a7c Hirschmann Multimedia B.V. +001a7d cyber-blue(HK)Ltd +001a7e LN Srithai Comm Ltd. +001a7f GCI Science & Technology Co.,LTD +001a80 Sony Corporation +001a81 Zelax +001a82 PROBA Building Automation Co.,LTD +001a83 Pegasus Technologies Inc. +001a84 V One Multimedia Pte Ltd +001a85 NV Michel Van de Wiele +001a86 AdvancedIO Systems Inc +001a87 Canhold International Limited +001a88 Venergy,Co,Ltd +001a89 Nokia Danmark A/S +001a8a Samsung Electronics Co.,Ltd +001a8b CHUNIL ELECTRIC IND., CO. +001a8c Sophos Ltd +001a8d AVECS Bergen GmbH +001a8e 3Way Networks Ltd +001a8f Nortel Networks +001a90 Trópico Sistemas e Telecomunicações da Amazônia LTDA. +001a91 FusionDynamic Ltd. +001a92 ASUSTek COMPUTER INC. +001a93 ERCO Leuchten GmbH +001a94 Votronic GmbH +001a95 Hisense Mobile Communications Technoligy Co.,Ltd. +001a96 ECLER S.A. +001a97 fitivision technology Inc. +001a98 Asotel Communication Limited Taiwan Branch +001a99 Smarty (HZ) Information Electronics Co., Ltd +001a9a Skyworth Digital Technology(Shenzhen) Co.,Ltd +001a9b ADEC & Parter AG +001a9c RightHand Technologies, Inc. +001a9d Skipper Wireless, Inc. +001a9e ICON Digital International Limited +001a9f A-Link Ltd +001aa0 Dell Inc. +001aa1 Cisco Systems, Inc +001aa2 Cisco Systems, Inc +001aa3 DELORME +001aa4 Future University-Hakodate +001aa5 BRN Phoenix +001aa6 Telefunken Radio Communication Systems GmbH &CO.KG +001aa7 Torian Wireless +001aa8 Mamiya Digital Imaging Co., Ltd. +001aa9 FUJIAN STAR-NET COMMUNICATION CO.,LTD +001aaa Analogic Corp. +001aab eWings s.r.l. +001aac Corelatus AB +001aad ARRIS Group, Inc. +001aae Savant Systems LLC +001aaf BLUSENS TECHNOLOGY +001ab0 Signal Networks Pvt. Ltd., +001ab1 Asia Pacific Satellite Industries Co., Ltd. +001ab2 Cyber Solutions Inc. +001ab3 VISIONITE INC. +001ab4 FFEI Ltd. +001ab5 Home Network System +001ab6 Texas Instruments +001ab7 Ethos Networks LTD. +001ab8 Anseri Corporation +001ab9 PMC +001aba Caton Overseas Limited +001abb Fontal Technology Incorporation +001abc U4EA Technologies Ltd +001abd Impatica Inc. +001abe COMPUTER HI-TECH INC. +001abf TRUMPF Laser Marking Systems AG +001ac0 JOYBIEN TECHNOLOGIES CO., LTD. +001ac1 3Com Ltd +001ac2 YEC Co.,Ltd. +001ac3 Scientific-Atlanta, Inc +001ac4 2Wire Inc +001ac5 Keysight Technologies, Inc. +001ac6 Micro Control Designs +001ac7 UNIPOINT +001ac8 ISL (Instrumentation Scientifique de Laboratoire) +001ac9 SUZUKEN CO.,LTD +001aca Tilera Corporation +001acb Autocom Products Ltd +001acc Celestial Semiconductor, Ltd +001acd Tidel Engineering LP +001ace YUPITERU CORPORATION +001acf C.T. ELETTRONICA +001ad0 Albis Technologies AG +001ad1 FARGO CO., LTD. +001ad2 Eletronica Nitron Ltda +001ad3 Vamp Ltd. +001ad4 iPOX Technology Co., Ltd. +001ad5 KMC CHAIN INDUSTRIAL CO., LTD. +001ad6 JIAGNSU AETNA ELECTRIC CO.,LTD +001ad7 Christie Digital Systems, Inc. +001ad8 AlsterAero GmbH +001ad9 International Broadband Electric Communications, Inc. +001ada Biz-2-Me Inc. +001adb ARRIS Group, Inc. +001adc Nokia Danmark A/S +001add PePWave Ltd +001ade ARRIS Group, Inc. +001adf Interactivetv Pty Limited +001ae0 Mythology Tech Express Inc. +001ae1 EDGE ACCESS INC +001ae2 Cisco Systems, Inc +001ae3 Cisco Systems, Inc +001ae4 Medicis Technologies Corporation +001ae5 Mvox Technologies Inc. +001ae6 Atlanta Advanced Communications Holdings Limited +001ae7 Aztek Networks, Inc. +001ae8 Unify Software and Solutions GmbH & Co. KG +001ae9 Nintendo Co., Ltd. +001aea Radio Terminal Systems Pty Ltd +001aeb Allied Telesis R&D Center K.K. +001aec Keumbee Electronics Co.,Ltd. +001aed INCOTEC GmbH +001aee Shenztech Ltd +001aef Loopcomm Technology, Inc. +001af0 Alcatel-Lucent IPD +001af1 Embedded Artists AB +001af2 Dynavisions Schweiz AG +001af3 Samyoung Electronics +001af4 Handreamnet +001af5 PENTAONE. CO., LTD. +001af6 Woven Systems, Inc. +001af7 dataschalt e+a GmbH +001af8 Copley Controls Corporation +001af9 AeroVIronment (AV Inc) +001afa Welch Allyn, Inc. +001afb Joby Inc. +001afc ModusLink Corporation +001afd EVOLIS +001afe SOFACREAL +001aff Wizyoung Tech. +001b00 Neopost Technologies +001b01 Applied Radio Technologies +001b02 ED Co.Ltd +001b03 Action Technology (SZ) Co., Ltd +001b04 Affinity International S.p.a +001b05 YMC AG +001b06 Ateliers R. LAUMONIER +001b07 Mendocino Software +001b08 Danfoss Drives A/S +001b09 Matrix Telecom Pvt. Ltd. +001b0a Intelligent Distributed Controls Ltd +001b0b Phidgets Inc. +001b0c Cisco Systems, Inc +001b0d Cisco Systems, Inc +001b0e InoTec GmbH Organisationssysteme +001b0f Petratec +001b10 ShenZhen Kang Hui Technology Co.,ltd +001b11 D-Link Corporation +001b12 Apprion +001b13 Icron Technologies Corporation +001b14 Carex Lighting Equipment Factory +001b15 Voxtel, Inc. +001b16 Celtro Ltd. +001b17 Palo Alto Networks +001b18 Tsuken Electric Ind. Co.,Ltd +001b19 IEEE I&M Society TC9 +001b1a e-trees Japan, Inc. +001b1b Siemens AG, +001b1c Coherent +001b1d Phoenix International Co., Ltd +001b1e HART Communication Foundation +001b1f DELTA - Danish Electronics, Light & Acoustics +001b20 TPine Technology +001b21 Intel Corporate +001b22 Palit Microsystems ( H.K.) Ltd. +001b23 SimpleComTools +001b24 QUANTA COMPUTER INC. +001b25 Nortel Networks +001b26 RON-Telecom ZAO +001b27 Merlin CSI +001b28 POLYGON, JSC +001b29 Avantis.Co.,Ltd +001b2a Cisco Systems, Inc +001b2b Cisco Systems, Inc +001b2c ATRON electronic GmbH +001b2d Med-Eng Systems Inc. +001b2e Sinkyo Electron Inc +001b2f NETGEAR +001b30 Solitech Inc. +001b31 Neural Image. Co. Ltd. +001b32 QLogic Corporation +001b33 Nokia Danmark A/S +001b34 Focus System Inc. +001b35 ChongQing JINOU Science & Technology Development CO.,Ltd +001b36 Tsubata Engineering Co.,Ltd. (Head Office) +001b37 Computec Oy +001b38 COMPAL INFORMATION (KUNSHAN) CO., LTD. +001b39 Proxicast +001b3a SIMS Corp. +001b3b Yi-Qing CO., LTD +001b3c Software Technologies Group,Inc. +001b3d EuroTel Spa +001b3e Curtis, Inc. +001b3f ProCurve Networking by HP +001b40 Network Automation mxc AB +001b41 General Infinity Co.,Ltd. +001b42 Wise & Blue +001b43 Beijing DG Telecommunications equipment Co.,Ltd +001b44 SanDisk Corporation +001b45 ABB AS, Division Automation Products +001b46 Blueone Technology Co.,Ltd +001b47 Futarque A/S +001b48 Shenzhen Lantech Electronics Co., Ltd. +001b49 Roberts Radio limited +001b4a W&W Communications, Inc. +001b4b SANION Co., Ltd. +001b4c Signtech +001b4d Areca Technology Corporation +001b4e Navman New Zealand +001b4f Avaya Inc +001b50 Nizhny Novgorod Factory named after M.Frunze, FSUE (NZiF) +001b51 Vector Technology Corp. +001b52 ARRIS Group, Inc. +001b53 Cisco Systems, Inc +001b54 Cisco Systems, Inc +001b55 Hurco Automation Ltd. +001b56 Tehuti Networks Ltd. +001b57 SEMINDIA SYSTEMS PRIVATE LIMITED +001b58 ACE CAD Enterprise Co., Ltd. +001b59 Sony Mobile Communications Inc +001b5a Apollo Imaging Technologies, Inc. +001b5b 2Wire Inc +001b5c Azuretec Co., Ltd. +001b5d Vololink Pty Ltd +001b5e BPL Limited +001b5f Alien Technology +001b60 NAVIGON AG +001b61 Digital Acoustics, LLC +001b62 JHT Optoelectronics Co.,Ltd. +001b63 Apple, Inc. +001b64 IsaacLandKorea Co., Ltd, +001b65 China Gridcom Co., Ltd +001b66 Sennheiser electronic GmbH & Co. KG +001b67 Cisco Systems Inc +001b68 Modnnet Co., Ltd +001b69 Equaline Corporation +001b6a Powerwave Technologies Sweden AB +001b6b Swyx Solutions AG +001b6c LookX Digital Media BV +001b6d Midtronics, Inc. +001b6e Keysight Technologies, Inc. +001b6f Teletrak Ltd +001b70 IRI Ubiteq, INC. +001b71 Telular Corp. +001b72 Sicep s.p.a. +001b73 DTL Broadcast Ltd +001b74 MiraLink Corporation +001b75 Hypermedia Systems +001b76 Ripcode, Inc. +001b77 Intel Corporate +001b78 Hewlett Packard +001b79 FAIVELEY TRANSPORT +001b7a Nintendo Co., Ltd. +001b7b The Tintometer Ltd +001b7c A & R Cambridge +001b7d CXR Anderson Jacobson +001b7e Beckmann GmbH +001b7f TMN Technologies Telecomunicacoes Ltda +001b80 LORD Corporation +001b81 DATAQ Instruments, Inc. +001b82 Taiwan Semiconductor Co., Ltd. +001b83 Finsoft Ltd +001b84 Scan Engineering Telecom +001b85 MAN Diesel SE +001b86 Bosch Access Systems GmbH +001b87 Deepsound Tech. Co., Ltd +001b88 Divinet Access Technologies Ltd +001b89 EMZA Visual Sense Ltd. +001b8a 2M Electronic A/S +001b8b NEC Platforms, Ltd. +001b8c JMicron Technology Corp. +001b8d Electronic Computer Systems, Inc. +001b8e Hulu Sweden AB +001b8f Cisco Systems, Inc +001b90 Cisco Systems, Inc +001b91 EFKON AG +001b92 l-acoustics +001b93 JC Decaux SA DNT +001b94 T.E.M.A. S.p.A. +001b95 VIDEO SYSTEMS SRL +001b96 General Sensing +001b97 Violin Technologies +001b98 Samsung Electronics Co.,Ltd +001b99 KS System GmbH +001b9a Apollo Fire Detectors Ltd +001b9b Hose-McCann Communications +001b9c SATEL sp. z o.o. +001b9d Novus Security Sp. z o.o. +001b9e ASKEY COMPUTER CORP +001b9f Calyptech Pty Ltd +001ba0 Awox +001ba1 Åmic AB +001ba2 IDS Imaging Development Systems GmbH +001ba3 Flexit Group GmbH +001ba4 S.A.E Afikim +001ba5 MyungMin Systems, Inc. +001ba6 intotech inc. +001ba7 Lorica Solutions +001ba8 UBI&MOBI,.Inc +001ba9 Brother industries, LTD. +001baa XenICs nv +001bab Telchemy, Incorporated +001bac Curtiss Wright Controls Embedded Computing +001bad iControl Incorporated +001bae Micro Control Systems, Inc +001baf Nokia Danmark A/S +001bb0 BHARAT ELECTRONICS +001bb1 Wistron Neweb Corporation +001bb2 Intellect International NV +001bb3 Condalo GmbH +001bb4 Airvod Limited +001bb5 Cherry GmbH +001bb6 Bird Electronic Corp. +001bb7 Alta Heights Technology Corp. +001bb8 BLUEWAY ELECTRONIC CO;LTD +001bb9 Elitegroup Computer Systems Co.,Ltd. +001bba Nortel Networks +001bbb RFTech Co.,Ltd +001bbc Silver Peak Systems, Inc. +001bbd FMC Kongsberg Subsea AS +001bbe ICOP Digital +001bbf Sagemcom Broadband SAS +001bc0 Juniper Networks +001bc1 HOLUX Technology, Inc. +001bc2 Integrated Control Technology Limitied +001bc3 Mobisolution Co.,Ltd +001bc4 Ultratec, Inc. +001bc5 IEEE Registration Authority +001bc6 Strato Rechenzentrum AG +001bc7 StarVedia Technology Inc. +001bc8 MIURA CO.,LTD +001bc9 FSN DISPLAY INC +001bca Beijing Run Technology LTD. Company +001bcb PEMPEK SYSTEMS PTY LTD +001bcc KINGTEK CCTV ALLIANCE CO., LTD. +001bcd DAVISCOMMS (S) PTE LTD +001bce Measurement Devices Ltd +001bcf Dataupia Corporation +001bd0 IDENTEC SOLUTIONS +001bd1 SOGESTMATIC +001bd2 ULTRA-X ASIA PACIFIC Inc. +001bd3 Panasonic Corporation AVC Networks Company +001bd4 Cisco Systems, Inc +001bd5 Cisco Systems, Inc +001bd6 Kelvin Hughes Ltd +001bd7 Cisco SPVTG +001bd8 FLIR Systems Inc +001bd9 Edgewater Wireless Systems Inc +001bda UTStarcom Inc +001bdb Valeo VECS +001bdc Vencer Co., Ltd. +001bdd ARRIS Group, Inc. +001bde Renkus-Heinz, Inc. +001bdf Iskra Sistemi d.d. +001be0 TELENOT ELECTRONIC GmbH +001be1 ViaLogy +001be2 AhnLab,Inc. +001be3 Health Hero Network, Inc. +001be4 TOWNET SRL +001be5 802automation Limited +001be6 VR AG +001be7 Postek Electronics Co., Ltd. +001be8 Ultratronik GmbH +001be9 Broadcom +001bea Nintendo Co., Ltd. +001beb DMP Electronics INC. +001bec Netio Technologies Co., Ltd +001bed Brocade Communications Systems, Inc. +001bee Nokia Danmark A/S +001bef Blossoms Digital Technology Co.,Ltd. +001bf0 Value Platforms Limited +001bf1 Nanjing SilverNet Software Co., Ltd. +001bf2 KWORLD COMPUTER CO., LTD +001bf3 TRANSRADIO SenderSysteme Berlin AG +001bf4 KENWIN INDUSTRIAL(HK) LTD. +001bf5 Tellink Sistemas de Telecomunicación S.L. +001bf6 CONWISE Technology Corporation Ltd. +001bf7 Lund IP Products AB +001bf8 Digitrax Inc. +001bf9 Intellitect Water Ltd +001bfa G.i.N. mbH +001bfb ALPS ELECTRIC CO., LTD. +001bfc ASUSTek COMPUTER INC. +001bfd Dignsys Inc. +001bfe Zavio Inc. +001bff Millennia Media inc. +001c00 Entry Point, LLC +001c01 ABB Oy Drives +001c02 Pano Logic +001c03 Betty TV Technology AG +001c04 Airgain, Inc. +001c05 Nonin Medical Inc. +001c06 Siemens Numerical Control Ltd., Nanjing +001c07 Cwlinux Limited +001c08 Echo360, Inc. +001c09 SAE Electronic Co.,Ltd. +001c0a Shenzhen AEE Technology Co.,Ltd. +001c0b SmartAnt Telecom +001c0c TANITA Corporation +001c0d G-Technology, Inc. +001c0e Cisco Systems, Inc +001c0f Cisco Systems, Inc +001c10 Cisco-Linksys, LLC +001c11 ARRIS Group, Inc. +001c12 ARRIS Group, Inc. +001c13 OPTSYS TECHNOLOGY CO., LTD. +001c14 VMware, Inc. +001c15 iPhotonix LLC +001c16 ThyssenKrupp Elevator +001c17 Nortel Networks +001c18 Sicert S.r.L. +001c19 secunet Security Networks AG +001c1a Thomas Instrumentation, Inc +001c1b Hyperstone GmbH +001c1c Center Communication Systems GmbH +001c1d CHENZHOU GOSPELL DIGITAL TECHNOLOGY CO.,LTD +001c1e emtrion GmbH +001c1f Quest Retail Technology Pty Ltd +001c20 CLB Benelux +001c21 Nucsafe Inc. +001c22 Aeris Elettronica s.r.l. +001c23 Dell Inc. +001c24 Formosa Wireless Systems Corp. +001c25 Hon Hai Precision Ind. Co.,Ltd. +001c26 Hon Hai Precision Ind. Co.,Ltd. +001c27 Sunell Electronics Co. +001c28 Sphairon Technologies GmbH +001c29 CORE DIGITAL ELECTRONICS CO., LTD +001c2a Envisacor Technologies Inc. +001c2b Alertme.com Limited +001c2c Synapse +001c2d FlexRadio Systems +001c2e HPN Supply Chain +001c2f Pfister GmbH +001c30 Mode Lighting (UK ) Ltd. +001c31 Mobile XP Technology Co., LTD +001c32 Telian Corporation +001c33 Sutron +001c34 HUEY CHIAO INTERNATIONAL CO., LTD. +001c35 Nokia Danmark A/S +001c36 iNEWiT NV +001c37 Callpod, Inc. +001c38 Bio-Rad Laboratories, Inc. +001c39 S Netsystems Inc. +001c3a Element Labs, Inc. +001c3b AmRoad Technology Inc. +001c3c Seon Design Inc. +001c3d WaveStorm +001c3e ECKey Corporation +001c3f International Police Technologies, Inc. +001c40 VDG-Security bv +001c41 scemtec Transponder Technology GmbH +001c42 Parallels, Inc. +001c43 Samsung Electronics Co.,Ltd +001c44 Bosch Security Systems BV +001c45 Chenbro Micom Co., Ltd. +001c46 QTUM +001c47 Hangzhou Hollysys Automation Co., Ltd +001c48 WiDeFi, Inc. +001c49 Zoltan Technology Inc. +001c4a AVM GmbH +001c4b Gener8, Inc. +001c4c Petrotest Instruments +001c4d Aplix IP Holdings Corporation +001c4e TASA International Limited +001c4f MACAB AB +001c50 TCL Technoly Electronics (Huizhou) Co., Ltd. +001c51 Celeno Communications +001c52 VISIONEE SRL +001c53 Synergy Lighting Controls +001c54 Hillstone Networks Inc +001c55 Shenzhen Kaifa Technology Co. +001c56 Pado Systems, Inc. +001c57 Cisco Systems, Inc +001c58 Cisco Systems, Inc +001c59 DEVON IT +001c5a Advanced Relay Corporation +001c5b Chubb Electronic Security Systems Ltd +001c5c Integrated Medical Systems, Inc. +001c5d Leica Microsystems +001c5e ASTON France +001c5f Winland Electronics, Inc. +001c60 CSP Frontier Technologies,Inc. +001c61 Galaxy Microsystems LImited +001c62 LG Electronics (Mobile Communications) +001c63 TRUEN +001c64 Landis+Gyr +001c65 JoeScan, Inc. +001c66 UCAMP CO.,LTD +001c67 Pumpkin Networks, Inc. +001c68 Anhui Sun Create Electronics Co., Ltd +001c69 Packet Vision Ltd +001c6a Weiss Engineering Ltd. +001c6b COVAX Co. Ltd +001c6c 30805 +001c6d KYOHRITSU ELECTRONIC INDUSTRY CO., LTD. +001c6e Newbury Networks, Inc. +001c6f Emfit Ltd +001c70 NOVACOMM LTDA +001c71 Emergent Electronics +001c72 Mayer & Cie GmbH & Co KG +001c73 Arista Networks +001c74 Syswan Technologies Inc. +001c75 Segnet Ltd. +001c76 The Wandsworth Group Ltd +001c77 Prodys +001c78 WYPLAY SAS +001c79 Cohesive Financial Technologies LLC +001c7a Perfectone Netware Company Ltd +001c7b Castlenet Technology Inc. +001c7c PERQ SYSTEMS CORPORATION +001c7d Excelpoint Manufacturing Pte Ltd +001c7e Toshiba +001c7f Check Point Software Technologies +001c80 New Business Division/Rhea-Information CO., LTD. +001c81 NextGen Venturi LTD +001c82 Genew Technologies +001c83 New Level Telecom Co., Ltd. +001c84 STL Solution Co.,Ltd. +001c85 Eunicorn +001c86 Cranite Systems, Inc. +001c87 Uriver Inc. +001c88 TRANSYSTEM INC. +001c89 Force Communications, Inc. +001c8a Cirrascale Corporation +001c8b MJ Innovations Ltd. +001c8c DIAL TECHNOLOGY LTD. +001c8d Mesa Imaging +001c8e Alcatel-Lucent IPD +001c8f Advanced Electronic Design, Inc. +001c90 Empacket Corporation +001c91 Gefen Inc. +001c92 Tervela +001c93 ExaDigm Inc +001c94 LI-COR Biosciences +001c95 Opticomm Corporation +001c96 Linkwise Technology Pte Ltd +001c97 Enzytek Technology Inc., +001c98 LUCKY TECHNOLOGY (HK) COMPANY LIMITED +001c99 Shunra Software Ltd. +001c9a Nokia Danmark A/S +001c9b FEIG ELECTRONIC GmbH +001c9c Nortel Networks +001c9d Liecthi AG +001c9e Dualtech IT AB +001c9f Razorstream, LLC +001ca0 Production Resource Group, LLC +001ca1 AKAMAI TECHNOLOGIES, INC. +001ca2 ADB Broadband Italia +001ca3 Terra +001ca4 Sony Mobile Communications Inc +001ca5 Zygo Corporation +001ca6 Win4NET +001ca7 International Quartz Limited +001ca8 AirTies Wireless Networks +001ca9 Audiomatica Srl +001caa Bellon Pty Ltd +001cab Meyer Sound Laboratories, Inc. +001cac Qniq Technology Corp. +001cad Wuhan Telecommunication Devices Co.,Ltd +001cae WiChorus, Inc. +001caf Plato Networks Inc. +001cb0 Cisco Systems, Inc +001cb1 Cisco Systems, Inc +001cb2 BPT SPA +001cb3 Apple, Inc. +001cb4 Iridium Satellite LLC +001cb5 Neihua Network Technology Co.,LTD.(NHN) +001cb6 Duzon CNT Co., Ltd. +001cb7 USC DigiArk Corporation +001cb8 CBC Co., Ltd +001cb9 KWANG SUNG ELECTRONICS CO., LTD. +001cba VerScient, Inc. +001cbb MusicianLink +001cbc CastGrabber, LLC +001cbd Ezze Mobile Tech., Inc. +001cbe Nintendo Co., Ltd. +001cbf Intel Corporate +001cc0 Intel Corporate +001cc1 ARRIS Group, Inc. +001cc2 Part II Research, Inc. +001cc3 ARRIS Group, Inc. +001cc4 Hewlett Packard +001cc5 3Com Ltd +001cc6 ProStor Systems +001cc7 Rembrandt Technologies, LLC d/b/a REMSTREAM +001cc8 INDUSTRONIC Industrie-Electronic GmbH & Co. KG +001cc9 Kaise Electronic Technology Co., Ltd. +001cca Shanghai Gaozhi Science & Technology Development Co. +001ccb Forth Corporation Public Company Limited +001ccc BlackBerry RTS +001ccd Alektrona Corporation +001cce By Techdesign +001ccf LIMETEK +001cd0 Circleone Co.,Ltd. +001cd1 Waves Audio LTD +001cd2 King Champion (Hong Kong) Limited +001cd3 ZP Engineering SEL +001cd4 Nokia Danmark A/S +001cd5 ZeeVee, Inc. +001cd6 Nokia Danmark A/S +001cd7 Harman/Becker Automotive Systems GmbH +001cd8 BlueAnt Wireless +001cd9 GlobalTop Technology Inc. +001cda Exegin Technologies Limited +001cdb CARPOINT CO.,LTD +001cdc Custom Computer Services, Inc. +001cdd COWBELL ENGINEERING CO., LTD. +001cde Interactive Multimedia eXchange Inc. +001cdf Belkin International Inc. +001ce0 DASAN TPS +001ce1 INDRA SISTEMAS, S.A. +001ce2 Attero Tech, LLC. +001ce3 Optimedical Systems +001ce4 EleSy JSC +001ce5 MBS Electronic Systems GmbH +001ce6 INNES +001ce7 Rocon PLC Research Centre +001ce8 Cummins Inc +001ce9 Galaxy Technology Limited +001cea Scientific-Atlanta, Inc +001ceb Nortel Networks +001cec Mobilesoft (Aust.) Pty Ltd +001ced ENVIRONNEMENT SA +001cee SHARP Corporation +001cef Primax Electronics Ltd. +001cf0 D-Link Corporation +001cf1 SUPoX Technology Co. , LTD. +001cf2 Tenlon Technology Co.,Ltd. +001cf3 EVS BROADCAST EQUIPMENT +001cf4 Media Technology Systems Inc +001cf5 Wiseblue Technology Limited +001cf6 Cisco Systems, Inc +001cf7 AudioScience +001cf8 Parade Technologies, Ltd. +001cf9 Cisco Systems, Inc +001cfa Alarm.com +001cfb ARRIS Group, Inc. +001cfc Sumitomo Electric Industries,Ltd +001cfd Universal Electronics, Inc. +001cfe Quartics Inc +001cff Napera Networks Inc +001d00 Brivo Systems, LLC +001d01 Neptune Digital +001d02 Cybertech Telecom Development +001d03 Design Solutions Inc. +001d04 Zipit Wireless, Inc. +001d05 Eaton Corporation +001d06 HM Electronics, Inc. +001d07 Shenzhen Sang Fei Consumer Communications Co.,Ltd +001d08 Jiangsu Yinhe Electronics Co.,Ltd. +001d09 Dell Inc. +001d0a Davis Instruments, Inc. +001d0b Power Standards Lab +001d0c MobileCompia +001d0d Sony Interactive Entertainment Inc. +001d0e Agapha Technology co., Ltd. +001d0f TP-LINK TECHNOLOGIES CO.,LTD. +001d10 LightHaus Logic, Inc. +001d11 Analogue & Micro Ltd +001d12 ROHM CO., LTD. +001d13 NextGTV +001d14 SPERADTONE INFORMATION TECHNOLOGY LIMITED +001d15 Shenzhen Dolphin Electronic Co., Ltd +001d16 SFR +001d17 Digital Sky Corporation +001d18 Power Innovation GmbH +001d19 Arcadyan Technology Corporation +001d1a OvisLink S.A. +001d1b Sangean Electronics Inc. +001d1c Gennet s.a. +001d1d Inter-M Corporation +001d1e KYUSHU TEN CO.,LTD +001d1f Siauliu Tauro Televizoriai, JSC +001d20 Comtrend Corporation +001d21 Alcad SL +001d22 Foss Analytical A/S +001d23 SENSUS +001d24 Aclara Power-Line Systems Inc. +001d25 Samsung Electronics Co.,Ltd +001d26 Rockridgesound Technology Co. +001d27 NAC-INTERCOM +001d28 Sony Mobile Communications Inc +001d29 Doro AB +001d2a SHENZHEN BUL-TECH CO.,LTD. +001d2b Wuhan Pont Technology CO. , LTD +001d2c Wavetrend Technologies (Pty) Limited +001d2d Pylone, Inc. +001d2e Ruckus Wireless +001d2f QuantumVision Corporation +001d30 YX Wireless S.A. +001d31 HIGHPRO INTERNATIONAL R&D CO,.LTD. +001d32 Longkay Communication & Technology (Shanghai) Co. Ltd +001d33 Maverick Systems Inc. +001d34 SYRIS Technology Corp +001d35 Viconics Electronics Inc. +001d36 ELECTRONICS CORPORATION OF INDIA LIMITED +001d37 Thales-Panda Transportation System +001d38 Seagate Technology +001d39 MOOHADIGITAL CO., LTD +001d3a mh acoustics LLC +001d3b Nokia Danmark A/S +001d3c Muscle Corporation +001d3d Avidyne Corporation +001d3e SAKA TECHNO SCIENCE CO.,LTD +001d3f Mitron Pty Ltd +001d40 Intel – GE Care Innovations LLC +001d41 Hardy Instruments +001d42 Nortel Networks +001d43 Shenzhen G-link Digital Technology Co., Ltd. +001d44 Krohne +001d45 Cisco Systems, Inc +001d46 Cisco Systems, Inc +001d47 Covote GmbH & Co KG +001d48 Sensor-Technik Wiedemann GmbH +001d49 Innovation Wireless Inc. +001d4a Carestream Health, Inc. +001d4b Grid Connect Inc. +001d4c Alcatel-Lucent +001d4d Adaptive Recognition Hungary, Inc +001d4e TCM Mobile LLC +001d4f Apple, Inc. +001d50 SPINETIX SA +001d51 Babcock & Wilcox Power Generation Group, Inc +001d52 Defzone B.V. +001d53 S&O Electronics (Malaysia) Sdn. Bhd. +001d54 Sunnic Technology & Merchandise INC. +001d55 ZANTAZ, Inc +001d56 Kramer Electronics Ltd. +001d57 CAETEC Messtechnik +001d58 CQ Inc +001d59 Mitra Energy & Infrastructure +001d5a 2Wire Inc +001d5b Tecvan Informática Ltda +001d5c Tom Communication Industrial Co.,Ltd. +001d5d Control Dynamics Pty. Ltd. +001d5e COMING MEDIA CORP. +001d5f OverSpeed SARL +001d60 ASUSTek COMPUTER INC. +001d61 BIJ Corporation +001d62 InPhase Technologies +001d63 Miele & Cie. KG +001d64 Adam Communications Systems Int Ltd +001d65 Microwave Radio Communications +001d66 Hyundai Telecom +001d67 AMEC +001d68 Thomson Telecom Belgium +001d69 Knorr-Bremse IT-Services GmbH +001d6a Alpha Networks Inc. +001d6b ARRIS Group, Inc. +001d6c ClariPhy Communications, Inc. +001d6d Confidant International LLC +001d6e Nokia Danmark A/S +001d6f Chainzone Technology Co., Ltd +001d70 Cisco Systems, Inc +001d71 Cisco Systems, Inc +001d72 Wistron Corporation +001d73 BUFFALO.INC +001d74 Tianjin China-Silicon Microelectronics Co., Ltd. +001d75 Radioscape PLC +001d76 Eyeheight Ltd. +001d77 NSGate +001d78 Invengo Information Technology Co.,Ltd +001d79 SIGNAMAX LLC +001d7a Wideband Semiconductor, Inc. +001d7b Ice Energy, Inc. +001d7c ABE Elettronica S.p.A. +001d7d GIGA-BYTE TECHNOLOGY CO.,LTD. +001d7e Cisco-Linksys, LLC +001d7f Tekron International Ltd +001d80 Beijing Huahuan Eletronics Co.,Ltd +001d81 GUANGZHOU GATEWAY ELECTRONICS CO., LTD +001d82 GN Netcom A/S +001d83 Emitech Corporation +001d84 Gateway, Inc. +001d85 Call Direct Cellular Solutions +001d86 Shinwa Industries(China) Ltd. +001d87 VigTech Labs Sdn Bhd +001d88 Clearwire +001d89 VaultStor Corporation +001d8a TechTrex Inc +001d8b ADB Broadband Italia +001d8c La Crosse Technology LTD +001d8d Fluke Process Instruments GmbH +001d8e Alereon, Inc. +001d8f PureWave Networks +001d90 EMCO Flow Systems +001d91 Digitize, Inc +001d92 MICRO-STAR INT'L CO.,LTD. +001d93 Modacom +001d94 Climax Technology Co., Ltd +001d95 Flash, Inc. +001d96 WatchGuard Video +001d97 Alertus Technologies LLC +001d98 Nokia Danmark A/S +001d99 Cyan Optic, Inc. +001d9a GODEX INTERNATIONAL CO., LTD +001d9b Hokuyo Automatic Co., Ltd. +001d9c Rockwell Automation +001d9d ARTJOY INTERNATIONAL LIMITED +001d9e AXION TECHNOLOGIES +001d9f MATT R.P.Traczynscy Sp.J. +001da0 Heng Yu Electronic Manufacturing Company Limited +001da1 Cisco Systems, Inc +001da2 Cisco Systems, Inc +001da3 SabiOso +001da4 Hangzhou System Technology CO., LTD +001da5 WB Electronics +001da6 Media Numerics Limited +001da7 Seamless Internet +001da8 Takahata Electronics Co.,Ltd +001da9 Castles Technology, Co., LTD +001daa DrayTek Corp. +001dab SwissQual License AG +001dac Gigamon Systems LLC +001dad Sinotech Engineering Consultants, Inc. Geotechnical Enginee +001dae CHANG TSENG TECHNOLOGY CO., LTD +001daf Nortel Networks +001db0 FuJian HengTong Information Technology Co.,Ltd +001db1 Crescendo Networks +001db2 HOKKAIDO ELECTRIC ENGINEERING CO.,LTD. +001db3 HPN Supply Chain +001db4 KUMHO ENG CO.,LTD +001db5 Juniper Networks +001db6 BestComm Networks, Inc. +001db7 Tendril Networks, Inc. +001db8 Intoto Inc. +001db9 Wellspring Wireless +001dba Sony Corporation +001dbb Dynamic System Electronics Corp. +001dbc Nintendo Co., Ltd. +001dbd Versamed Inc. +001dbe ARRIS Group, Inc. +001dbf Radiient Technologies, Inc. +001dc0 Enphase Energy +001dc1 Audinate Pty L +001dc2 XORTEC OY +001dc3 RIKOR TV, Ltd +001dc4 AIOI Systems Co., Ltd. +001dc5 Beijing Jiaxun Feihong Electricial Co., Ltd. +001dc6 SNR Inc. +001dc7 L-3 Communications Geneva Aerospace +001dc8 Navionics Research Inc., dba SCADAmetrics +001dc9 GainSpan Corp. +001dca PAV Electronics Limited +001dcb Exéns Development Oy +001dcc Ayon Cyber Security, Inc +001dcd ARRIS Group, Inc. +001dce ARRIS Group, Inc. +001dcf ARRIS Group, Inc. +001dd0 ARRIS Group, Inc. +001dd1 ARRIS Group, Inc. +001dd2 ARRIS Group, Inc. +001dd3 ARRIS Group, Inc. +001dd4 ARRIS Group, Inc. +001dd5 ARRIS Group, Inc. +001dd6 ARRIS Group, Inc. +001dd7 Algolith +001dd8 Microsoft Corporation +001dd9 Hon Hai Precision Ind. Co.,Ltd. +001dda Mikroelektronika spol. s r. o. +001ddb C-BEL Corporation +001ddc HangZhou DeChangLong Tech&Info Co.,Ltd +001ddd DAT H.K. LIMITED +001dde Zhejiang Broadcast&Television Technology Co.,Ltd. +001ddf Sunitec Enterprise Co.,Ltd +001de0 Intel Corporate +001de1 Intel Corporate +001de2 Radionor Communications +001de3 Intuicom +001de4 Visioneered Image Systems +001de5 Cisco Systems, Inc +001de6 Cisco Systems, Inc +001de7 Marine Sonic Technology, Ltd. +001de8 Nikko Denki Tsushin Corporation(NDTC) +001de9 Nokia Danmark A/S +001dea Commtest Instruments Ltd +001deb DINEC International +001dec Marusys +001ded Grid Net, Inc. +001dee NEXTVISION SISTEMAS DIGITAIS DE TELEVISÃO LTDA. +001def TRIMM, INC. +001df0 Vidient Systems, Inc. +001df1 Intego Systems, Inc. +001df2 Netflix, Inc. +001df3 SBS Science & Technology Co., Ltd +001df4 Magellan Technology Pty Limited +001df5 Sunshine Co,LTD +001df6 Samsung Electronics Co.,Ltd +001df7 R. STAHL Schaltgeräte GmbH +001df8 Webpro Vision Technology Corporation +001df9 Cybiotronics (Far East) Limited +001dfa Fujian LANDI Commercial Equipment Co.,Ltd +001dfb NETCLEUS Systems Corporation +001dfc KSIC +001dfd Nokia Danmark A/S +001dfe Palm, Inc +001dff Network Critical Solutions Ltd +001e00 Shantou Institute of Ultrasonic Instruments +001e01 Renesas Technology Sales Co., Ltd. +001e02 Sougou Keikaku Kougyou Co.,Ltd. +001e03 LiComm Co., Ltd. +001e04 Hanson Research Corporation +001e05 Xseed Technologies & Computing +001e06 WIBRAIN +001e07 Winy Technology Co., Ltd. +001e08 Centec Networks Inc +001e09 ZEFATEK Co.,LTD +001e0a Syba Tech Limited +001e0b Hewlett Packard +001e0c Sherwood Information Partners, Inc. +001e0d Micran Ltd. +001e0e MAXI VIEW HOLDINGS LIMITED +001e0f Briot International +001e10 HUAWEI TECHNOLOGIES CO.,LTD +001e11 ELELUX INTERNATIONAL LTD +001e12 Ecolab +001e13 Cisco Systems, Inc +001e14 Cisco Systems, Inc +001e15 Beech Hill Electronics +001e16 Keytronix +001e17 STN BV +001e18 Radio Activity srl +001e19 GTRI +001e1a Best Source Taiwan Inc. +001e1b Digital Stream Technology, Inc. +001e1c SWS Australia Pty Limited +001e1d East Coast Datacom, Inc. +001e1e Honeywell Life Safety +001e1f Nortel Networks +001e20 Intertain Inc. +001e21 Qisda Corporation +001e22 ARVOO Imaging Products BV +001e23 Electronic Educational Devices, Inc +001e24 Zhejiang Bell Technology Co.,ltd +001e25 INTEK DIGITAL +001e26 Digifriends Co. Ltd +001e27 SBN TECH Co.,Ltd. +001e28 Lumexis Corporation +001e29 Hypertherm Inc +001e2a NETGEAR +001e2b Radio Systems Design, Inc. +001e2c CyVerse Corporation +001e2d STIM +001e2e SIRTI S.p.A. +001e2f DiMoto Pty Ltd +001e30 Shireen Inc +001e31 INFOMARK CO.,LTD. +001e32 Zensys +001e33 INVENTEC CORPORATION +001e34 CryptoMetrics +001e35 Nintendo Co., Ltd. +001e36 IPTE +001e37 Universal Global Scientific Industrial Co., Ltd. +001e38 Bluecard Software Technology Co., Ltd. +001e39 Comsys Communication Ltd. +001e3a Nokia Danmark A/S +001e3b Nokia Danmark A/S +001e3c Lyngbox Media AB +001e3d ALPS ELECTRIC CO., LTD. +001e3e KMW Inc. +001e3f TrellisWare Technologies, Inc. +001e40 Shanghai DareGlobal Technologies Co.,Ltd +001e41 Microwave Communication & Component, Inc. +001e42 Teltonika +001e43 AISIN AW CO.,LTD. +001e44 SANTEC +001e45 Sony Mobile Communications Inc +001e46 ARRIS Group, Inc. +001e47 PT. Hariff Daya Tunggal Engineering +001e48 Wi-Links +001e49 Cisco Systems, Inc +001e4a Cisco Systems, Inc +001e4b City Theatrical +001e4c Hon Hai Precision Ind. Co.,Ltd. +001e4d Welkin Sciences, LLC +001e4e DAKO EDV-Ingenieur- und Systemhaus GmbH +001e4f Dell Inc. +001e50 BATTISTONI RESEARCH +001e51 Converter Industry Srl +001e52 Apple, Inc. +001e53 Further Tech Co., LTD +001e54 TOYO ELECTRIC Corporation +001e55 COWON SYSTEMS,Inc. +001e56 Bally Wulff Entertainment GmbH +001e57 ALCOMA, spol. s r.o. +001e58 D-Link Corporation +001e59 Silicon Turnkey Express, LLC +001e5a ARRIS Group, Inc. +001e5b Unitron Company, Inc. +001e5c RB GeneralEkonomik +001e5d Holosys d.o.o. +001e5e COmputime Ltd. +001e5f KwikByte, LLC +001e60 Digital Lighting Systems, Inc +001e61 ITEC GmbH +001e62 Siemon +001e63 Vibro-Meter SA +001e64 Intel Corporate +001e65 Intel Corporate +001e66 RESOL Elektronische Regelungen GmbH +001e67 Intel Corporate +001e68 QUANTA COMPUTER INC. +001e69 Thomson Inc. +001e6a Beijing Bluexon Technology Co.,Ltd +001e6b Cisco SPVTG +001e6c Opaque Systems +001e6d IT R&D Center +001e6e Shenzhen First Mile Communications Ltd +001e6f Magna-Power Electronics, Inc. +001e70 Cobham Antenna Systems +001e71 MIrcom Group of Companies +001e72 PCS +001e73 zte corporation +001e74 Sagemcom Broadband SAS +001e75 LG Electronics (Mobile Communications) +001e76 Thermo Fisher Scientific +001e77 Air2App +001e78 Owitek Technology Ltd., +001e79 Cisco Systems, Inc +001e7a Cisco Systems, Inc +001e7b R.I.CO. S.r.l. +001e7c Taiwick Limited +001e7d Samsung Electronics Co.,Ltd +001e7e Nortel Networks +001e7f CBM of America +001e80 Icotera A/S +001e81 CNB Technology Inc. +001e82 SanDisk Corporation +001e83 LAN/MAN Standards Association (LMSC) +001e84 Pika Technologies Inc. +001e85 Lagotek Corporation +001e86 MEL Co.,Ltd. +001e87 Realease Limited +001e88 ANDOR SYSTEM SUPPORT CO., LTD. +001e89 CRFS Limited +001e8a eCopy, Inc +001e8b Infra Access Korea Co., Ltd. +001e8c ASUSTek COMPUTER INC. +001e8d ARRIS Group, Inc. +001e8e Hunkeler AG +001e8f CANON INC. +001e90 Elitegroup Computer Systems Co.,Ltd. +001e91 KIMIN Electronic Co., Ltd. +001e92 JEULIN S.A. +001e93 CiriTech Systems Inc +001e94 SUPERCOM TECHNOLOGY CORPORATION +001e95 SIGMALINK +001e96 Sepura Plc +001e97 Medium Link System Technology CO., LTD, +001e98 GreenLine Communications +001e99 Vantanol Industrial Corporation +001e9a HAMILTON Bonaduz AG +001e9b San-Eisha, Ltd. +001e9c Fidustron INC +001e9d Recall Technologies, Inc. +001e9e ddm hopt + schuler Gmbh + Co. KG +001e9f Visioneering Systems, Inc. +001ea0 XLN-t +001ea1 Brunata a/s +001ea2 Symx Systems, Inc. +001ea3 Nokia Danmark A/S +001ea4 Nokia Danmark A/S +001ea5 ROBOTOUS, Inc. +001ea6 Best IT World (India) Pvt. Ltd. +001ea7 Actiontec Electronics, Inc +001ea8 Datang Mobile Communications Equipment CO.,LTD +001ea9 Nintendo Co., Ltd. +001eaa E-Senza Technologies GmbH +001eab TeleWell Oy +001eac Armadeus Systems +001ead Wingtech Group Limited +001eae Continental Automotive Systems Inc. +001eaf Ophir Optronics Ltd +001eb0 ImesD Electronica S.L. +001eb1 Cryptsoft Pty Ltd +001eb2 LG innotek +001eb3 Primex Wireless +001eb4 UNIFAT TECHNOLOGY LTD. +001eb5 Ever Sparkle Technologies Ltd +001eb6 TAG Heuer SA +001eb7 TBTech, Co., Ltd. +001eb8 Aloys, Inc +001eb9 Sing Fai Technology Limited +001eba High Density Devices AS +001ebb BLUELIGHT TECHNOLOGY INC. +001ebc WINTECH AUTOMATION CO.,LTD. +001ebd Cisco Systems, Inc +001ebe Cisco Systems, Inc +001ebf Haas Automation Inc. +001ec0 Microchip Technology Inc. +001ec1 3COM EUROPE LTD +001ec2 Apple, Inc. +001ec3 Kozio, Inc. +001ec4 Celio Corp +001ec5 Middle Atlantic Products Inc +001ec6 Obvius Holdings LLC +001ec7 2Wire Inc +001ec8 Rapid Mobile (Pty) Ltd +001ec9 Dell Inc. +001eca Nortel Networks +001ecb RPC Energoautomatika Ltd +001ecc CDVI +001ecd KYLAND Technology Co. LTD +001ece BISA Technologies (Hong Kong) Limited +001ecf PHILIPS ELECTRONICS UK LTD +001ed0 Ingespace +001ed1 Keyprocessor B.V. +001ed2 Ray Shine Video Technology Inc +001ed3 Dot Technology Int'l Co., Ltd. +001ed4 Doble Engineering +001ed5 Tekon-Automatics +001ed6 Alentec & Orion AB +001ed7 H-Stream Wireless, Inc. +001ed8 Digital United Inc. +001ed9 Mitsubishi Precision Co.,LTd. +001eda Wesemann Elektrotechniek B.V. +001edb Giken Trastem Co., Ltd. +001edc Sony Mobile Communications Inc +001edd WASKO S.A. +001ede BYD COMPANY LIMITED +001edf Master Industrialization Center Kista +001ee0 Urmet Domus SpA +001ee1 Samsung Electronics Co.,Ltd +001ee2 Samsung Electronics Co.,Ltd +001ee3 T&W Electronics (ShenZhen) Co.,Ltd +001ee4 ACS Solutions France +001ee5 Cisco-Linksys, LLC +001ee6 Shenzhen Advanced Video Info-Tech Co., Ltd. +001ee7 Epic Systems Inc +001ee8 Mytek +001ee9 Stoneridge Electronics AB +001eea Sensor Switch, Inc. +001eeb Talk-A-Phone Co. +001eec COMPAL INFORMATION (KUNSHAN) CO., LTD. +001eed Adventiq Ltd. +001eee ETL Systems Ltd +001eef Cantronic International Limited +001ef0 Gigafin Networks +001ef1 Servimat +001ef2 Micro Motion Inc +001ef3 From2 +001ef4 L-3 Communications Display Systems +001ef5 Hitek Automated Inc. +001ef6 Cisco Systems, Inc +001ef7 Cisco Systems, Inc +001ef8 Emfinity Inc. +001ef9 Pascom Kommunikations systeme GmbH. +001efa PROTEI Ltd. +001efb Trio Motion Technology Ltd +001efc JSC MASSA-K +001efd Microbit 2.0 AB +001efe LEVEL s.r.o. +001eff Mueller-Elektronik GmbH & Co. KG +001f00 Nokia Danmark A/S +001f01 Nokia Danmark A/S +001f02 Pixelmetrix Corporation Pte Ltd +001f03 NUM AG +001f04 Granch Ltd. +001f05 iTAS Technology Corp. +001f06 Integrated Dispatch Solutions +001f07 AZTEQ Mobile +001f08 RISCO LTD +001f09 Jastec +001f0a Nortel Networks +001f0b Federal State Unitary Enterprise Industrial UnionElectropribor +001f0c Intelligent Digital Services GmbH +001f0d L3 Communications - Telemetry West +001f0e Japan Kyastem Co., Ltd +001f0f Select Engineered Systems +001f10 TOLEDO DO BRASIL INDUSTRIA DE BALANCAS LTDA +001f11 OPENMOKO, INC. +001f12 Juniper Networks +001f13 S.& A.S. Ltd. +001f14 NexG +001f15 Bioscrypt Inc +001f16 Wistron Corporation +001f17 IDX Company, Ltd. +001f18 Hakusan.Mfg.Co,.Ltd +001f19 BEN-RI ELECTRONICA S.A. +001f1a Prominvest +001f1b RoyalTek Company Ltd. +001f1c KOBISHI ELECTRIC Co.,Ltd. +001f1d Atlas Material Testing Technology LLC +001f1e Astec Technology Co., Ltd +001f1f Edimax Technology Co. Ltd. +001f20 Logitech Europe SA +001f21 Inner Mongolia Yin An Science & Technology Development Co.,L +001f22 Source Photonics, Inc. +001f23 Interacoustics +001f24 DIGITVIEW TECHNOLOGY CO., LTD. +001f25 MBS GmbH +001f26 Cisco Systems, Inc +001f27 Cisco Systems, Inc +001f28 HPN Supply Chain +001f29 Hewlett Packard +001f2a ACCM +001f2b Orange Logic +001f2c Starbridge Networks +001f2d Electro-Optical Imaging, Inc. +001f2e Triangle Research Int'l Pte Ltd +001f2f Berker GmbH & Co. KG +001f30 Travelping +001f31 Radiocomp +001f32 Nintendo Co., Ltd. +001f33 NETGEAR +001f34 Lung Hwa Electronics Co., Ltd. +001f35 AIR802 LLC +001f36 Bellwin Information Co. Ltd., +001f37 Genesis I&C +001f38 POSITRON +001f39 Construcciones y Auxiliar de Ferrocarriles, S.A. +001f3a Hon Hai Precision Ind. Co.,Ltd. +001f3b Intel Corporate +001f3c Intel Corporate +001f3d Qbit GmbH +001f3e RP-Technik e.K. +001f3f AVM GmbH +001f40 Speakercraft Inc. +001f41 Ruckus Wireless +001f42 Etherstack plc +001f43 ENTES ELEKTRONIK +001f44 GE Transportation Systems +001f45 Enterasys +001f46 Nortel Networks +001f47 MCS Logic Inc. +001f48 Mojix Inc. +001f49 Manhattan TV Ltd +001f4a Albentia Systems S.A. +001f4b Lineage Power +001f4c Roseman Engineering Ltd +001f4d Segnetics LLC +001f4e ConMed Linvatec +001f4f Thinkware Co. Ltd. +001f50 Swissdis AG +001f51 HD Communications Corp +001f52 UVT Unternehmensberatung fur Verkehr und Technik GmbH +001f53 GEMAC Chemnitz GmbH +001f54 Lorex Technology Inc. +001f55 Honeywell Security (China) Co., Ltd. +001f56 DIGITAL FORECAST +001f57 Phonik Innovation Co.,LTD +001f58 EMH Energiemesstechnik GmbH +001f59 Kronback Tracers +001f5a Beckwith Electric Co. +001f5b Apple, Inc. +001f5c Nokia Danmark A/S +001f5d Nokia Danmark A/S +001f5e Dyna Technology Co.,Ltd. +001f5f Blatand GmbH +001f60 COMPASS SYSTEMS CORP. +001f61 Talent Communication Networks Inc. +001f62 JSC Stilsoft +001f63 JSC Goodwin-Europa +001f64 Beijing Autelan Technology Inc. +001f65 KOREA ELECTRIC TERMINAL CO., LTD. +001f66 PLANAR LLC +001f67 Hitachi,Ltd. +001f68 Martinsson Elektronik AB +001f69 Pingood Technology Co., Ltd. +001f6a PacketFlux Technologies, Inc. +001f6b LG Electronics (Mobile Communications) +001f6c Cisco Systems, Inc +001f6d Cisco Systems, Inc +001f6e Vtech Engineering Corporation +001f6f Fujian Sunnada Communication Co.,Ltd. +001f70 Botik Technologies LTD +001f71 xG Technology, Inc. +001f72 QingDao Hiphone Technology Co,.Ltd +001f73 Teraview Technology Co., Ltd. +001f74 Eigen Development +001f75 GiBahn Media +001f76 AirLogic Systems Inc. +001f77 HEOL DESIGN +001f78 Blue Fox Porini Textile +001f79 Lodam Electronics A/S +001f7a WiWide Inc. +001f7b TechNexion Ltd. +001f7c Witelcom AS +001f7d Embedded Wireless GmbH +001f7e ARRIS Group, Inc. +001f7f Phabrix Limited +001f80 Lucas Holding bv +001f81 Accel Semiconductor Corp +001f82 Cal-Comp Electronics & Communications Company Ltd. +001f83 Teleplan Technology Services Sdn Bhd +001f84 Gigle Semiconductor +001f85 Apriva ISS, LLC +001f86 digEcor +001f87 Skydigital Inc. +001f88 FMS Force Measuring Systems AG +001f89 Signalion GmbH +001f8a Ellion Digital Inc. +001f8b Cache IQ +001f8c CCS Inc. +001f8d Ingenieurbuero Stark GmbH und Ko. KG +001f8e Metris USA Inc. +001f8f Shanghai Bellmann Digital Source Co.,Ltd. +001f90 Actiontec Electronics, Inc +001f91 DBS Lodging Technologies, LLC +001f92 Avigilon Corporation +001f93 Xiotech Corporation +001f94 Lascar Electronics Ltd +001f95 Sagemcom Broadband SAS +001f96 APROTECH CO.LTD +001f97 BERTANA srl +001f98 DAIICHI-DENTSU LTD. +001f99 SERONICS co.ltd +001f9a Nortel Networks +001f9b POSBRO +001f9c LEDCO +001f9d Cisco Systems, Inc +001f9e Cisco Systems, Inc +001f9f Thomson Telecom Belgium +001fa0 A10 Networks +001fa1 Gtran Inc +001fa2 Datron World Communications, Inc. +001fa3 T&W Electronics(Shenzhen)Co.,Ltd. +001fa4 SHENZHEN GONGJIN ELECTRONICS CO.,LT +001fa5 Blue-White Industries +001fa6 Stilo srl +001fa7 Sony Interactive Entertainment Inc. +001fa8 Smart Energy Instruments Inc. +001fa9 Atlanta DTH, Inc. +001faa Taseon, Inc. +001fab I.S HIGH TECH.INC +001fac Goodmill Systems Ltd +001fad Brown Innovations, Inc +001fae Blick South Africa (Pty) Ltd +001faf NextIO, Inc. +001fb0 TimeIPS, Inc. +001fb1 Cybertech Inc. +001fb2 Sontheim Industrie Elektronik GmbH +001fb3 2Wire Inc +001fb4 SmartShare Systems +001fb5 I/O Interconnect Inc. +001fb6 Chi Lin Technology Co., Ltd. +001fb7 WiMate Technologies Corp. +001fb8 Universal Remote Control, Inc. +001fb9 Paltronics +001fba Boyoung Tech +001fbb Xenatech Co.,LTD +001fbc EVGA Corporation +001fbd Kyocera Wireless Corp. +001fbe Shenzhen Mopnet Industrial Co.,Ltd +001fbf Fulhua Microelectronics Corp. Taiwan Branch +001fc0 Control Express Finland Oy +001fc1 Hanlong Technology Co.,LTD +001fc2 Jow Tong Technology Co Ltd +001fc3 SmartSynch, Inc +001fc4 ARRIS Group, Inc. +001fc5 Nintendo Co., Ltd. +001fc6 ASUSTek COMPUTER INC. +001fc7 Casio Hitachi Mobile Communications Co., Ltd. +001fc8 Up-Today Industrial Co., Ltd. +001fc9 Cisco Systems, Inc +001fca Cisco Systems, Inc +001fcb NIW Solutions +001fcc Samsung Electronics Co.,Ltd +001fcd Samsung Electronics Co.,Ltd +001fce QTECH LLC +001fcf MSI Technology GmbH +001fd0 GIGA-BYTE TECHNOLOGY CO.,LTD. +001fd1 OPTEX CO.,LTD. +001fd2 COMMTECH TECHNOLOGY MACAO COMMERCIAL OFFSHORE LTD. +001fd3 RIVA Networks Inc. +001fd4 4IPNET, INC. +001fd5 MICRORISC s.r.o. +001fd6 Shenzhen Allywll +001fd7 TELERAD SA +001fd8 A-TRUST COMPUTER CORPORATION +001fd9 RSD Communications Ltd +001fda Nortel Networks +001fdb Network Supply Corp., +001fdc Mobile Safe Track Ltd +001fdd GDI LLC +001fde Nokia Danmark A/S +001fdf Nokia Danmark A/S +001fe0 EdgeVelocity Corp +001fe1 Hon Hai Precision Ind. Co.,Ltd. +001fe2 Hon Hai Precision Ind. Co.,Ltd. +001fe3 LG Electronics (Mobile Communications) +001fe4 Sony Mobile Communications Inc +001fe5 In-Circuit GmbH +001fe6 Alphion Corporation +001fe7 Simet +001fe8 KURUSUGAWA Electronics Industry Inc,. +001fe9 Printrex, Inc. +001fea Applied Media Technologies Corporation +001feb Trio Datacom Pty Ltd +001fec Synapse Électronique +001fed Tecan Systems Inc. +001fee ubisys technologies GmbH +001fef SHINSEI INDUSTRIES CO.,LTD +001ff0 Audio Partnership +001ff1 Paradox Hellas S.A. +001ff2 VIA Technologies, Inc. +001ff3 Apple, Inc. +001ff4 Power Monitors, Inc. +001ff5 Kongsberg Defence & Aerospace +001ff6 PS Audio International +001ff7 Nakajima All Precision Co., Ltd. +001ff8 Siemens AG, Sector Industry, Drive Technologies, Motion Control Systems +001ff9 Advanced Knowledge Associates +001ffa Coretree, Co, Ltd +001ffb Green Packet Bhd +001ffc Riccius+Sohn GmbH +001ffd Indigo Mobile Technologies Corp. +001ffe HPN Supply Chain +001fff Respironics, Inc. +002000 LEXMARK INTERNATIONAL, INC. +002001 DSP SOLUTIONS, INC. +002002 SERITECH ENTERPRISE CO., LTD. +002003 PIXEL POWER LTD. +002004 YAMATAKE-HONEYWELL CO., LTD. +002005 SIMPLE TECHNOLOGY +002006 GARRETT COMMUNICATIONS, INC. +002007 SFA, INC. +002008 CABLE & COMPUTER TECHNOLOGY +002009 PACKARD BELL ELEC., INC. +00200a SOURCE-COMM CORP. +00200b OCTAGON SYSTEMS CORP. +00200c ADASTRA SYSTEMS CORP. +00200d CARL ZEISS +00200e NSSLGlobal Technologies AS +00200f EBRAINS Inc +002010 JEOL SYSTEM TECHNOLOGY CO. LTD +002011 CANOPUS CO., LTD. +002012 CAMTRONICS MEDICAL SYSTEMS +002013 DIVERSIFIED TECHNOLOGY, INC. +002014 GLOBAL VIEW CO., LTD. +002015 ACTIS COMPUTER SA +002016 SHOWA ELECTRIC WIRE & CABLE CO +002017 ORBOTECH +002018 CIS TECHNOLOGY INC. +002019 OHLER GMBH +00201a MRV Communications, Inc. +00201b NORTHERN TELECOM/NETWORK +00201c EXCEL, INC. +00201d KATANA PRODUCTS +00201e NETQUEST CORPORATION +00201f BEST POWER TECHNOLOGY, INC. +002020 MEGATRON COMPUTER INDUSTRIES PTY, LTD. +002021 ALGORITHMS SOFTWARE PVT. LTD. +002022 NMS Communications +002023 T.C. TECHNOLOGIES PTY. LTD +002024 PACIFIC COMMUNICATION SCIENCES +002025 CONTROL TECHNOLOGY, INC. +002026 AMKLY SYSTEMS, INC. +002027 MING FORTUNE INDUSTRY CO., LTD +002028 WEST EGG SYSTEMS, INC. +002029 TELEPROCESSING PRODUCTS, INC. +00202a N.V. DZINE +00202b ADVANCED TELECOMMUNICATIONS MODULES, LTD. +00202c WELLTRONIX CO., LTD. +00202d TAIYO CORPORATION +00202e DAYSTAR DIGITAL +00202f ZETA COMMUNICATIONS, LTD. +002030 ANALOG & DIGITAL SYSTEMS +002031 Tattile SRL +002032 ALCATEL TAISEL +002033 SYNAPSE TECHNOLOGIES, INC. +002034 ROTEC INDUSTRIEAUTOMATION GMBH +002035 IBM Corp +002036 BMC SOFTWARE +002037 Seagate Technology +002038 VME MICROSYSTEMS INTERNATIONAL CORPORATION +002039 SCINETS +00203a DIGITAL BI0METRICS INC. +00203b WISDM LTD. +00203c EUROTIME AB +00203d Honeywell Environmental & Combustion Controls +00203e LogiCan Technologies, Inc. +00203f JUKI CORPORATION +002040 ARRIS Group, Inc. +002041 DATA NET +002042 DATAMETRICS CORP. +002043 NEURON COMPANY LIMITED +002044 GENITECH PTY LTD +002045 ION Networks, Inc. +002046 CIPRICO, INC. +002047 STEINBRECHER CORP. +002048 Marconi Communications +002049 COMTRON, INC. +00204a PRONET GMBH +00204b AUTOCOMPUTER CO., LTD. +00204c MITRON COMPUTER PTE LTD. +00204d INOVIS GMBH +00204e NETWORK SECURITY SYSTEMS, INC. +00204f DEUTSCHE AEROSPACE AG +002050 KOREA COMPUTER INC. +002051 Verilink Corporation +002052 RAGULA SYSTEMS +002053 HUNTSVILLE MICROSYSTEMS, INC. +002054 Sycamore Networks +002055 ALTECH CO., LTD. +002056 NEOPRODUCTS +002057 TITZE DATENTECHNIK GmbH +002058 ALLIED SIGNAL INC. +002059 MIRO COMPUTER PRODUCTS AG +00205a COMPUTER IDENTICS +00205b Kentrox, LLC +00205c InterNet Systems of Florida, Inc. +00205d NANOMATIC OY +00205e CASTLE ROCK, INC. +00205f GAMMADATA COMPUTER GMBH +002060 ALCATEL ITALIA S.p.A. +002061 GarrettCom, Inc. +002062 SCORPION LOGIC, LTD. +002063 WIPRO INFOTECH LTD. +002064 PROTEC MICROSYSTEMS, INC. +002065 SUPERNET NETWORKING INC. +002066 GENERAL MAGIC, INC. +002067 Private +002068 ISDYNE +002069 ISDN SYSTEMS CORPORATION +00206a OSAKA COMPUTER CORP. +00206b KONICA MINOLTA HOLDINGS, INC. +00206c EVERGREEN TECHNOLOGY CORP. +00206d DATA RACE, INC. +00206e XACT, INC. +00206f FLOWPOINT CORPORATION +002070 HYNET, LTD. +002071 IBR GMBH +002072 WORKLINK INNOVATIONS +002073 FUSION SYSTEMS CORPORATION +002074 SUNGWOON SYSTEMS +002075 MOTOROLA COMMUNICATION ISRAEL +002076 REUDO CORPORATION +002077 KARDIOS SYSTEMS CORP. +002078 RUNTOP, INC. +002079 MIKRON GMBH +00207a WiSE Communications, Inc. +00207b Intel Corporation +00207c AUTEC GMBH +00207d ADVANCED COMPUTER APPLICATIONS +00207e FINECOM CO., LTD. +00207f KYOEI SANGYO CO., LTD. +002080 SYNERGY (UK) LTD. +002081 TITAN ELECTRONICS +002082 ONEAC CORPORATION +002083 PRESTICOM INCORPORATED +002084 OCE PRINTING SYSTEMS, GMBH +002085 Eaton Corporation +002086 MICROTECH ELECTRONICS LIMITED +002087 MEMOTEC, INC. +002088 GLOBAL VILLAGE COMMUNICATION +002089 T3PLUS NETWORKING, INC. +00208a SONIX COMMUNICATIONS, LTD. +00208b LAPIS TECHNOLOGIES, INC. +00208c GALAXY NETWORKS, INC. +00208d CMD TECHNOLOGY +00208e CHEVIN SOFTWARE ENG. LTD. +00208f ECI Telecom Ltd. +002090 ADVANCED COMPRESSION TECHNOLOGY, INC. +002091 J125, NATIONAL SECURITY AGENCY +002092 CHESS ENGINEERING B.V. +002093 LANDINGS TECHNOLOGY CORP. +002094 CUBIX CORPORATION +002095 RIVA ELECTRONICS +002096 Invensys +002097 APPLIED SIGNAL TECHNOLOGY +002098 HECTRONIC AB +002099 BON ELECTRIC CO., LTD. +00209a THE 3DO COMPANY +00209b ERSAT ELECTRONIC GMBH +00209c PRIMARY ACCESS CORP. +00209d LIPPERT AUTOMATIONSTECHNIK +00209e BROWN'S OPERATING SYSTEM SERVICES, LTD. +00209f MERCURY COMPUTER SYSTEMS, INC. +0020a0 OA LABORATORY CO., LTD. +0020a1 DOVATRON +0020a2 GALCOM NETWORKING LTD. +0020a3 Harmonic, Inc +0020a4 MULTIPOINT NETWORKS +0020a5 API ENGINEERING +0020a6 Proxim Wireless +0020a7 PAIRGAIN TECHNOLOGIES, INC. +0020a8 SAST TECHNOLOGY CORP. +0020a9 WHITE HORSE INDUSTRIAL +0020aa Ericsson Television Limited +0020ab MICRO INDUSTRIES CORP. +0020ac INTERFLEX DATENSYSTEME GMBH +0020ad LINQ SYSTEMS +0020ae ORNET DATA COMMUNICATION TECH. +0020af 3COM +0020b0 GATEWAY DEVICES, INC. +0020b1 COMTECH RESEARCH INC. +0020b2 GKD Gesellschaft Fur Kommunikation Und Datentechnik +0020b3 Tattile SRL +0020b4 TERMA ELEKTRONIK AS +0020b5 YASKAWA ELECTRIC CORPORATION +0020b6 AGILE NETWORKS, INC. +0020b7 NAMAQUA COMPUTERWARE +0020b8 PRIME OPTION, INC. +0020b9 METRICOM, INC. +0020ba CENTER FOR HIGH PERFORMANCE +0020bb ZAX CORPORATION +0020bc Long Reach Networks Pty Ltd +0020bd NIOBRARA R & D CORPORATION +0020be LAN ACCESS CORP. +0020bf AEHR TEST SYSTEMS +0020c0 PULSE ELECTRONICS, INC. +0020c1 SAXA, Inc. +0020c2 TEXAS MEMORY SYSTEMS, INC. +0020c3 COUNTER SOLUTIONS LTD. +0020c4 INET,INC. +0020c5 EAGLE TECHNOLOGY +0020c6 NECTEC +0020c7 AKAI Professional M.I. Corp. +0020c8 LARSCOM INCORPORATED +0020c9 VICTRON BV +0020ca DIGITAL OCEAN +0020cb PRETEC ELECTRONICS CORP. +0020cc DIGITAL SERVICES, LTD. +0020cd HYBRID NETWORKS, INC. +0020ce LOGICAL DESIGN GROUP, INC. +0020cf TEST & MEASUREMENT SYSTEMS INC +0020d0 VERSALYNX CORPORATION +0020d1 MICROCOMPUTER SYSTEMS (M) SDN. +0020d2 RAD DATA COMMUNICATIONS, LTD. +0020d3 OST (OUEST STANDARD TELEMATIQU +0020d4 Cabletron Systems, Inc. +0020d5 VIPA GMBH +0020d6 Breezecom, Ltd. +0020d7 JAPAN MINICOMPUTER SYSTEMS CO., Ltd. +0020d8 Nortel Networks +0020d9 PANASONIC TECHNOLOGIES, INC./MIECO-US +0020da Alcatel-Lucent Enterprise +0020db XNET TECHNOLOGY, INC. +0020dc DENSITRON TAIWAN LTD. +0020dd Cybertec Pty Ltd +0020de JAPAN DIGITAL LABORAT'Y CO.LTD +0020df KYOSAN ELECTRIC MFG. CO., LTD. +0020e0 Actiontec Electronics, Inc +0020e1 ALAMAR ELECTRONICS +0020e2 INFORMATION RESOURCE ENGINEERING +0020e3 MCD KENCOM CORPORATION +0020e4 HSING TECH ENTERPRISE CO., LTD +0020e5 APEX DATA, INC. +0020e6 LIDKOPING MACHINE TOOLS AB +0020e7 B&W NUCLEAR SERVICE COMPANY +0020e8 DATATREK CORPORATION +0020e9 DANTEL +0020ea EFFICIENT NETWORKS, INC. +0020eb CINCINNATI MICROWAVE, INC. +0020ec TECHWARE SYSTEMS CORP. +0020ed GIGA-BYTE TECHNOLOGY CO., LTD. +0020ee GTECH CORPORATION +0020ef USC CORPORATION +0020f0 UNIVERSAL MICROELECTRONICS CO. +0020f1 ALTOS INDIA LIMITED +0020f2 Oracle Corporation +0020f3 RAYNET CORPORATION +0020f4 SPECTRIX CORPORATION +0020f5 PANDATEL AG +0020f6 NET TEK AND KARLNET, INC. +0020f7 CYBERDATA CORPORATION +0020f8 CARRERA COMPUTERS, INC. +0020f9 PARALINK NETWORKS, INC. +0020fa GDE SYSTEMS, INC. +0020fb OCTEL COMMUNICATIONS CORP. +0020fc MATROX +0020fd ITV TECHNOLOGIES, INC. +0020fe TOPWARE INC. / GRAND COMPUTER +0020ff SYMMETRICAL TECHNOLOGIES +002100 Gemtek Technology Co., Ltd. +002101 Aplicaciones Electronicas Quasar (AEQ) +002102 UpdateLogic Inc. +002103 GHI Electronics, LLC +002104 Gigaset Communications GmbH +002105 Alcatel-Lucent IPD +002106 RIM Testing Services +002107 Seowonintech Co Ltd. +002108 Nokia Danmark A/S +002109 Nokia Danmark A/S +00210a byd:sign Corporation +00210b GEMINI TRAZE RFID PVT. LTD. +00210c Cymtec Systems, Inc. +00210d SAMSIN INNOTEC +00210e Orpak Systems L.T.D. +00210f Cernium Corp +002110 Clearbox Systems +002111 Uniphone Inc. +002112 WISCOM SYSTEM CO.,LTD +002113 Padtec S/A +002114 Hylab Technology Inc. +002115 PHYWE Systeme GmbH & Co. KG +002116 Transcon Electronic Systems, spol. s r. o. +002117 Tellord +002118 Athena Tech, Inc. +002119 SAMSUNG ELECTRO MECHANICS CO., LTD. +00211a LInTech Corporation +00211b Cisco Systems, Inc +00211c Cisco Systems, Inc +00211d Dataline AB +00211e ARRIS Group, Inc. +00211f SHINSUNG DELTATECH CO.,LTD. +002120 Sequel Technologies +002121 VRmagic GmbH +002122 Chip-pro Ltd. +002123 Aerosat Avionics +002124 Optos Plc +002125 KUK JE TONG SHIN Co.,LTD +002126 Shenzhen Torch Equipment Co., Ltd. +002127 TP-LINK TECHNOLOGIES CO.,LTD. +002128 Oracle Corporation +002129 Cisco-Linksys, LLC +00212a Audiovox Corporation +00212b MSA Auer +00212c SemIndia System Private Limited +00212d SCIMOLEX CORPORATION +00212e dresden-elektronik +00212f Phoebe Micro Inc. +002130 Keico Hightech Inc. +002131 Blynke Inc. +002132 Masterclock, Inc. +002133 Building B, Inc +002134 Brandywine Communications +002135 ALCATEL-LUCENT +002136 ARRIS Group, Inc. +002137 Bay Controls, LLC +002138 Cepheid +002139 Escherlogic Inc. +00213a Winchester Systems Inc. +00213b Berkshire Products, Inc +00213c AliphCom +00213d Cermetek Microelectronics, Inc. +00213e TomTom +00213f A-Team Technology Ltd. +002140 EN Technologies Inc. +002141 RADLIVE +002142 Advanced Control Systems doo +002143 ARRIS Group, Inc. +002144 SS Telecoms +002145 Semptian Technologies Ltd. +002146 Sanmina-SCI +002147 Nintendo Co., Ltd. +002148 Kaco Solar Korea +002149 China Daheng Group ,Inc. +00214a Pixel Velocity, Inc +00214b Shenzhen HAMP Science & Technology Co.,Ltd +00214c Samsung Electronics Co.,Ltd +00214d Guangzhou Skytone Transmission Technology Com. Ltd. +00214e GS Yuasa Power Supply Ltd. +00214f ALPS ELECTRIC CO., LTD. +002150 EYEVIEW ELECTRONICS +002151 Millinet Co., Ltd. +002152 General Satellite Research & Development Limited +002153 SeaMicro Inc. +002154 D-TACQ Solutions Ltd +002155 Cisco Systems, Inc +002156 Cisco Systems, Inc +002157 National Datacast, Inc. +002158 Style Flying Technology Co. +002159 Juniper Networks +00215a Hewlett Packard +00215b SenseAnywhere +00215c Intel Corporate +00215d Intel Corporate +00215e IBM Corp +00215f IHSE GmbH +002160 Hidea Solutions Co. Ltd. +002161 Yournet Inc. +002162 Nortel Networks +002163 ASKEY COMPUTER CORP +002164 Special Design Bureau for Seismic Instrumentation +002165 Presstek Inc. +002166 NovAtel Inc. +002167 HWA JIN T&I Corp. +002168 iVeia, LLC +002169 Prologix, LLC. +00216a Intel Corporate +00216b Intel Corporate +00216c ODVA +00216d Soltech Co., Ltd. +00216e Function ATI (Huizhou) Telecommunications Co., Ltd. +00216f SymCom, Inc. +002170 Dell Inc. +002171 Wesung TNC Co., Ltd. +002172 Seoultek Valley +002173 Ion Torrent Systems, Inc. +002174 AvaLAN Wireless +002175 Pacific Satellite International Ltd. +002176 YMax Telecom Ltd. +002177 W. L. Gore & Associates +002178 Matuschek Messtechnik GmbH +002179 IOGEAR, Inc. +00217a Sejin Electron, Inc. +00217b Bastec AB +00217c 2Wire Inc +00217d PYXIS S.R.L. +00217e Telit Communication s.p.a +00217f Intraco Technology Pte Ltd +002180 ARRIS Group, Inc. +002181 Si2 Microsystems Limited +002182 SandLinks Systems, Ltd. +002183 ANDRITZ HYDRO GmbH +002184 POWERSOFT SRL +002185 MICRO-STAR INT'L CO.,LTD. +002186 Universal Global Scientific Industrial Co., Ltd. +002187 Imacs GmbH +002188 EMC Corporation +002189 AppTech, Inc. +00218a Electronic Design and Manufacturing Company +00218b Wescon Technology, Inc. +00218c TopControl GMBH +00218d AP Router Ind. Eletronica LTDA +00218e MEKICS CO., LTD. +00218f Avantgarde Acoustic Lautsprechersysteme GmbH +002190 Goliath Solutions +002191 D-Link Corporation +002192 Baoding Galaxy Electronic Technology Co.,Ltd +002193 Videofon MV +002194 Ping Communication +002195 GWD Media Limited +002196 Telsey S.p.A. +002197 Elitegroup Computer Systems Co.,Ltd. +002198 Thai Radio Co, LTD +002199 Vacon Plc +00219a Cambridge Visual Networks Ltd +00219b Dell Inc. +00219c Honeywld Technology Corp. +00219d Adesys BV +00219e Sony Mobile Communications Inc +00219f SATEL OY +0021a0 Cisco Systems, Inc +0021a1 Cisco Systems, Inc +0021a2 EKE-Electronics Ltd. +0021a3 Micromint +0021a4 Dbii Networks +0021a5 ERLPhase Power Technologies Ltd. +0021a6 Videotec Spa +0021a7 Hantle System Co., Ltd. +0021a8 Telephonics Corporation +0021a9 Mobilink Telecom Co.,Ltd +0021aa Nokia Danmark A/S +0021ab Nokia Danmark A/S +0021ac Infrared Integrated Systems Ltd +0021ad Nordic ID Oy +0021ae ALCATEL-LUCENT FRANCE - WTD +0021af Radio Frequency Systems +0021b0 Tyco Telecommunications +0021b1 DIGITAL SOLUTIONS LTD +0021b2 Fiberblaze A/S +0021b3 Ross Controls +0021b4 APRO MEDIA CO., LTD +0021b5 Galvanic Ltd +0021b6 Triacta Power Technologies Inc. +0021b7 LEXMARK INTERNATIONAL, INC. +0021b8 Inphi Corporation +0021b9 Universal Devices Inc. +0021ba Texas Instruments +0021bb Riken Keiki Co., Ltd. +0021bc ZALA COMPUTER +0021bd Nintendo Co., Ltd. +0021be Cisco SPVTG +0021bf Hitachi High-Tech Control Systems Corporation +0021c0 Mobile Appliance, Inc. +0021c1 ABB Oy / Medium Voltage Products +0021c2 GL Communications Inc +0021c3 CORNELL Communications, Inc. +0021c4 Consilium AB +0021c5 3DSP Corp +0021c6 CSJ Global, Inc. +0021c7 Russound +0021c8 LOHUIS Networks +0021c9 Wavecom Asia Pacific Limited +0021ca ART System Co., Ltd. +0021cb SMS TECNOLOGIA ELETRONICA LTDA +0021cc Flextronics International +0021cd LiveTV +0021ce NTC-Metrotek +0021cf The Crypto Group +0021d0 Global Display Solutions Spa +0021d1 Samsung Electronics Co.,Ltd +0021d2 Samsung Electronics Co.,Ltd +0021d3 BOCOM SECURITY(ASIA PACIFIC) LIMITED +0021d4 Vollmer Werke GmbH +0021d5 X2E GmbH +0021d6 LXI Consortium +0021d7 Cisco Systems, Inc +0021d8 Cisco Systems, Inc +0021d9 SEKONIC CORPORATION +0021da Automation Products Group Inc. +0021db Santachi Video Technology (Shenzhen) Co., Ltd. +0021dc TECNOALARM S.r.l. +0021dd Northstar Systems Corp +0021de Firepro Wireless +0021df Martin Christ GmbH +0021e0 CommAgility Ltd +0021e1 Nortel Networks +0021e2 visago Systems & Controls GmbH & Co. KG +0021e3 SerialTek LLC +0021e4 I-WIN +0021e5 Display Solution AG +0021e6 Starlight Video Limited +0021e7 Informatics Services Corporation +0021e8 Murata Manufacturing Co., Ltd. +0021e9 Apple, Inc. +0021ea Bystronic Laser AG +0021eb ESP SYSTEMS, LLC +0021ec Solutronic GmbH +0021ed Telegesis +0021ee Full Spectrum Inc. +0021ef Kapsys +0021f0 EW3 Technologies LLC +0021f1 Tutus Data AB +0021f2 EASY3CALL Technology Limited +0021f3 Si14 SpA +0021f4 INRange Systems, Inc +0021f5 Western Engravers Supply, Inc. +0021f6 Oracle Corporation +0021f7 HPN Supply Chain +0021f8 Enseo, Inc. +0021f9 WIRECOM Technologies +0021fa A4SP Technologies Ltd. +0021fb LG Electronics (Mobile Communications) +0021fc Nokia Danmark A/S +0021fd LACROIX TRAFFIC S.A.U +0021fe Nokia Danmark A/S +0021ff Cyfrowy Polsat SA +002200 IBM Corp +002201 Aksys Networks Inc +002202 Excito Elektronik i Skåne AB +002203 Glensound Electronics Ltd +002204 KORATEK +002205 WeLink Solutions, Inc. +002206 Cyberdyne Inc. +002207 Inteno Broadband Technology AB +002208 Certicom Corp +002209 Omron Healthcare Co., Ltd +00220a OnLive, Inc +00220b National Source Coding Center +00220c Cisco Systems, Inc +00220d Cisco Systems, Inc +00220e Indigo Security Co., Ltd. +00220f MoCA (Multimedia over Coax Alliance) +002210 ARRIS Group, Inc. +002211 Rohati Systems +002212 CAI Networks, Inc. +002213 PCI CORPORATION +002214 RINNAI KOREA +002215 ASUSTek COMPUTER INC. +002216 SHIBAURA VENDING MACHINE CORPORATION +002217 Neat Electronics +002218 AKAMAI TECHNOLOGIES INC +002219 Dell Inc. +00221a Audio Precision +00221b Morega Systems +00221c Private +00221d Freegene Technology LTD +00221e Media Devices Co., Ltd. +00221f eSang Technologies Co., Ltd. +002220 Mitac Technology Corp +002221 ITOH DENKI CO,LTD. +002222 Schaffner Deutschland GmbH +002223 TimeKeeping Systems, Inc. +002224 Good Will Instrument Co., Ltd. +002225 Thales Avionics Ltd +002226 Avaak, Inc. +002227 uv-electronic GmbH +002228 Breeze Innovations Ltd. +002229 Compumedics Ltd +00222a SoundEar A/S +00222b Nucomm, Inc. +00222c Ceton Corp +00222d SMC Networks Inc. +00222e maintech GmbH +00222f Open Grid Computing, Inc. +002230 FutureLogic Inc. +002231 SMT&C Co., Ltd. +002232 Design Design Technology Ltd +002233 ADB Broadband Italia +002234 Corventis Inc. +002235 Strukton Systems bv +002236 VECTOR SP. Z O.O. +002237 Shinhint Group +002238 LOGIPLUS +002239 Indiana Life Sciences Incorporated +00223a Cisco SPVTG +00223b Communication Networks, LLC +00223c RATIO Entwicklungen GmbH +00223d JumpGen Systems, LLC +00223e IRTrans GmbH +00223f NETGEAR +002240 Universal Telecom S/A +002241 Apple, Inc. +002242 Alacron Inc. +002243 AzureWave Technology Inc. +002244 Chengdu Linkon Communications Device Co., Ltd +002245 Leine & Linde AB +002246 Evoc Intelligent Technology Co.,Ltd. +002247 DAC ENGINEERING CO., LTD. +002248 Microsoft Corporation +002249 HOME MULTIENERGY SL +00224a RAYLASE AG +00224b AIRTECH TECHNOLOGIES, INC. +00224c Nintendo Co., Ltd. +00224d MITAC INTERNATIONAL CORP. +00224e SEEnergy Corp. +00224f Byzoro Networks Ltd. +002250 Point Six Wireless, LLC +002251 Lumasense Technologies +002252 ZOLL Lifecor Corporation +002253 Entorian Technologies +002254 Bigelow Aerospace +002255 Cisco Systems, Inc +002256 Cisco Systems, Inc +002257 3COM EUROPE LTD +002258 Taiyo Yuden Co., Ltd. +002259 Guangzhou New Postcom Equipment Co.,Ltd. +00225a Garde Security AB +00225b Teradici Corporation +00225c Multimedia & Communication Technology +00225d Digicable Network India Pvt. Ltd. +00225e Uwin Technologies Co.,LTD +00225f Liteon Technology Corporation +002260 AFREEY Inc. +002261 Frontier Silicon Ltd +002262 BEP Marine +002263 Koos Technical Services, Inc. +002264 Hewlett Packard +002265 Nokia Danmark A/S +002266 Nokia Danmark A/S +002267 Nortel Networks +002268 Hon Hai Precision Ind. Co.,Ltd. +002269 Hon Hai Precision Ind. Co.,Ltd. +00226a Honeywell +00226b Cisco-Linksys, LLC +00226c LinkSprite Technologies, Inc. +00226d Shenzhen GIEC Electronics Co., Ltd. +00226e Gowell Electronic Limited +00226f 3onedata Technology Co. Ltd. +002270 ABK North America, LLC +002271 Jäger Computergesteuerte Meßtechnik GmbH. +002272 American Micro-Fuel Device Corp. +002273 Techway +002274 FamilyPhone AB +002275 Belkin International Inc. +002276 Triple EYE B.V. +002277 NEC Australia Pty Ltd +002278 Shenzhen Tongfang Multimedia Technology Co.,Ltd. +002279 Nippon Conlux Co., Ltd. +00227a Telecom Design +00227b Apogee Labs, Inc. +00227c Woori SMT Co.,ltd +00227d YE DATA INC. +00227e Chengdu 30Kaitian Communication Industry Co.Ltd +00227f Ruckus Wireless +002280 A2B Electronics AB +002281 Daintree Networks Pty +002282 8086 Consultancy +002283 Juniper Networks +002284 DESAY A&V SCIENCE AND TECHNOLOGY CO.,LTD +002285 NOMUS COMM SYSTEMS +002286 ASTRON +002287 Titan Wireless LLC +002288 Sagrad, Inc. +002289 Vandelrande APC inc. +00228a Teratronik elektronische systeme gmbh +00228b Kensington Computer Products Group +00228c Photon Europe GmbH +00228d GBS Laboratories LLC +00228e TV-NUMERIC +00228f CNRS +002290 Cisco Systems, Inc +002291 Cisco Systems, Inc +002292 Cinetal +002293 zte corporation +002294 KYOCERA CORPORATION +002295 SGM Technology for lighting spa +002296 LinoWave Corporation +002297 XMOS Semiconductor +002298 Sony Mobile Communications Inc +002299 SeaMicro Inc. +00229a Lastar, Inc. +00229b AverLogic Technologies, Inc. +00229c Verismo Networks Inc +00229d PYUNG-HWA IND.CO.,LTD +00229e Social Aid Research Co., Ltd. +00229f Sensys Traffic AB +0022a0 Delphi Corporation +0022a1 Huawei Symantec Technologies Co.,Ltd. +0022a2 Xtramus Technologies +0022a3 California Eastern Laboratories +0022a4 2Wire Inc +0022a5 Texas Instruments +0022a6 Sony Computer Entertainment America +0022a7 Tyco Electronics AMP GmbH +0022a8 Ouman Oy +0022a9 LG Electronics (Mobile Communications) +0022aa Nintendo Co., Ltd. +0022ab Shenzhen Turbosight Technology Ltd +0022ac Hangzhou Siyuan Tech. Co., Ltd +0022ad TELESIS TECHNOLOGIES, INC. +0022ae Mattel Inc. +0022af Safety Vision, LLC +0022b0 D-Link Corporation +0022b1 Elbit Systems Ltd. +0022b2 4RF Communications Ltd +0022b3 Sei S.p.A. +0022b4 ARRIS Group, Inc. +0022b5 NOVITA +0022b6 Superflow Technologies Group +0022b7 GSS Grundig SAT-Systems GmbH +0022b8 Norcott +0022b9 Analogix Seminconductor, Inc +0022ba HUTH Elektronik Systeme GmbH +0022bb beyerdynamic GmbH & Co. KG +0022bc JDSU France SAS +0022bd Cisco Systems, Inc +0022be Cisco Systems, Inc +0022bf SieAmp Group of Companies +0022c0 Shenzhen Forcelink Electronic Co, Ltd +0022c1 Active Storage Inc. +0022c2 Proview Eletrônica do Brasil LTDA +0022c3 Zeeport Technology Inc. +0022c4 epro GmbH +0022c5 INFORSON Co,Ltd. +0022c6 Sutus Inc +0022c7 SEGGER Microcontroller GmbH & Co. KG +0022c8 Applied Instruments B.V. +0022c9 Lenord, Bauer & Co GmbH +0022ca Anviz Biometric Tech. Co., Ltd. +0022cb IONODES Inc. +0022cc SciLog, Inc. +0022cd Ared Technology Co., Ltd. +0022ce Cisco SPVTG +0022cf PLANEX COMMUNICATIONS INC. +0022d0 Polar Electro Oy +0022d1 Albrecht Jung GmbH & Co. KG +0022d2 All Earth Comércio de Eletrônicos LTDA. +0022d3 Hub-Tech +0022d4 ComWorth Co., Ltd. +0022d5 Eaton Corp. Electrical Group Data Center Solutions - Pulizzi +0022d6 Cypak AB +0022d7 Nintendo Co., Ltd. +0022d8 Shenzhen GST Security and Safety Technology Limited +0022d9 Fortex Industrial Ltd. +0022da ANATEK, LLC +0022db Translogic Corporation +0022dc Vigil Health Solutions Inc. +0022dd Protecta Electronics Ltd +0022de OPPO Digital, Inc. +0022df TAMUZ Monitors +0022e0 Atlantic Software Technologies S.r.L. +0022e1 ZORT Labs, LLC. +0022e2 WABTEC Transit Division +0022e3 Amerigon +0022e4 APASS TECHNOLOGY CO., LTD. +0022e5 Fisher-Rosemount Systems Inc. +0022e6 Intelligent Data +0022e7 WPS Parking Systems +0022e8 Applition Co., Ltd. +0022e9 ProVision Communications +0022ea Rustelcom Inc. +0022eb Data Respons A/S +0022ec IDEALBT TECHNOLOGY CORPORATION +0022ed TSI Power Corporation +0022ee Algo Communication Products Ltd +0022ef iWDL Technologies +0022f0 3 Greens Aviation Limited +0022f1 Private +0022f2 SunPower Corp +0022f3 SHARP Corporation +0022f4 AMPAK Technology, Inc. +0022f5 Advanced Realtime Tracking GmbH +0022f6 Syracuse Research Corporation +0022f7 Conceptronic +0022f8 PIMA Electronic Systems Ltd. +0022f9 Pollin Electronic GmbH +0022fa Intel Corporate +0022fb Intel Corporate +0022fc Nokia Danmark A/S +0022fd Nokia Danmark A/S +0022fe Advanced Illumination +0022ff NIVIS LLC +002300 Cayee Computer Ltd. +002301 Witron Technology Limited +002302 Cobalt Digital, Inc. +002303 LITE-ON IT Corporation +002304 Cisco Systems, Inc +002305 Cisco Systems, Inc +002306 ALPS ELECTRIC CO., LTD. +002307 FUTURE INNOVATION TECH CO.,LTD +002308 Arcadyan Technology Corporation +002309 Janam Technologies LLC +00230a ARBURG GmbH & Co KG +00230b ARRIS Group, Inc. +00230c CLOVER ELECTRONICS CO.,LTD. +00230d Nortel Networks +00230e Gorba AG +00230f Hirsch Electronics Corporation +002310 LNC Technology Co., Ltd. +002311 Gloscom Co., Ltd. +002312 Apple, Inc. +002313 Qool Technologies Ltd. +002314 Intel Corporate +002315 Intel Corporate +002316 KISAN ELECTRONICS CO +002317 Lasercraft Inc +002318 Toshiba +002319 Sielox LLC +00231a ITF Co., Ltd. +00231b Danaher Motion - Kollmorgen +00231c Fourier Systems Ltd. +00231d Deltacom Electronics Ltd +00231e Cezzer Multimedia Technologies +00231f Guangda Electronic & Telecommunication Technology Development Co., Ltd. +002320 Nicira Networks +002321 Avitech International Corp +002322 KISS Teknical Solutions, Inc. +002323 Zylin AS +002324 G-PRO COMPUTER +002325 IOLAN Holding +002326 FUJITSU LIMITED +002327 Shouyo Electronics CO., LTD +002328 ALCON TELECOMMUNICATIONS CO., LTD. +002329 DDRdrive LLC +00232a eonas IT-Beratung und -Entwicklung GmbH +00232b IRD A/S +00232c Senticare +00232d SandForce +00232e Kedah Electronics Engineering, LLC +00232f Advanced Card Systems Ltd. +002330 DIZIPIA, INC. +002331 Nintendo Co., Ltd. +002332 Apple, Inc. +002333 Cisco Systems, Inc +002334 Cisco Systems, Inc +002335 Linkflex Co.,Ltd +002336 METEL s.r.o. +002337 Global Star Solutions ULC +002338 OJ-Electronics A/S +002339 Samsung Electronics Co.,Ltd +00233a Samsung Electronics Co.,Ltd +00233b C-Matic Systems Ltd +00233c Alflex +00233d Laird Technologies +00233e Alcatel-Lucent IPD +00233f Purechoice Inc +002340 MiXTelematics +002341 Vanderbilt International (SWE) AB +002342 Coffee Equipment Company +002343 TEM AG +002344 Objective Interface Systems, Inc. +002345 Sony Mobile Communications Inc +002346 Vestac +002347 ProCurve Networking by HP +002348 Sagemcom Broadband SAS +002349 Helmholtz Centre Berlin for Material and Energy +00234a Private +00234b Inyuan Technology Inc. +00234c KTC AB +00234d Hon Hai Precision Ind. Co.,Ltd. +00234e Hon Hai Precision Ind. Co.,Ltd. +00234f Luminous Power Technologies Pvt. Ltd. +002350 RDC, Inc. dba LynTec +002351 2Wire Inc +002352 DATASENSOR S.p.A. +002353 F E T Elettronica snc +002354 ASUSTek COMPUTER INC. +002355 Kinco Automation(Shanghai) Ltd. +002356 Packet Forensics LLC +002357 Pitronot Technologies and Engineering P.T.E. Ltd. +002358 SYSTEL SA +002359 Benchmark Electronics ( Thailand ) Public Company Limited +00235a COMPAL INFORMATION (KUNSHAN) CO., LTD. +00235b Gulfstream +00235c Aprius, Inc. +00235d Cisco Systems, Inc +00235e Cisco Systems, Inc +00235f Silicon Micro Sensors GmbH +002360 Lookit Technology Co., Ltd +002361 Unigen Corporation +002362 Goldline Controls +002363 Zhuhai Raysharp Technology Co.,Ltd +002364 Power Instruments Pte Ltd +002365 Insta Elektro GmbH +002366 Beijing Siasun Electronic System Co.,Ltd. +002367 UniControls a.s. +002368 Zebra Technologies Inc +002369 Cisco-Linksys, LLC +00236a SmartRG Inc +00236b Xembedded, Inc. +00236c Apple, Inc. +00236d ResMed Ltd +00236e Burster GmbH & Co KG +00236f DAQ System +002370 Snell +002371 SOAM Systel +002372 MORE STAR INDUSTRIAL GROUP LIMITED +002373 GridIron Systems, Inc. +002374 ARRIS Group, Inc. +002375 ARRIS Group, Inc. +002376 HTC Corporation +002377 Isotek Electronics Ltd +002378 GN Netcom A/S +002379 Union Business Machines Co. Ltd. +00237a RIM +00237b WHDI LLC +00237c NEOTION +00237d Hewlett Packard +00237e ELSTER GMBH +00237f PLANTRONICS, INC. +002380 Nanoteq +002381 Lengda Technology(Xiamen) Co.,Ltd. +002382 Lih Rong electronic Enterprise Co., Ltd. +002383 InMage Systems Inc +002384 GGH Engineering s.r.l. +002385 ANTIPODE +002386 Tour & Andersson AB +002387 ThinkFlood, Inc. +002388 V.T. Telematica S.p.a. +002389 Hangzhou H3C Technologies Co., Limited +00238a Ciena Corporation +00238b QUANTA COMPUTER INC. +00238c Private +00238d Techno Design Co., Ltd. +00238e ADB Broadband Italia +00238f NIDEC COPAL CORPORATION +002390 Algolware Corporation +002391 Maxian +002392 Proteus Industries Inc. +002393 AJINEXTEK +002394 Samjeon +002395 ARRIS Group, Inc. +002396 ANDES TECHNOLOGY CORPORATION +002397 Westell Technologies Inc. +002398 Vutlan sro +002399 Samsung Electronics Co.,Ltd +00239a EasyData Hardware GmbH +00239b Elster Solutions, LLC +00239c Juniper Networks +00239d Mapower Electronics Co., Ltd +00239e Jiangsu Lemote Technology Corporation Limited +00239f Institut für Prüftechnik +0023a0 Hana CNS Co., LTD. +0023a1 Trend Electronics Ltd +0023a2 ARRIS Group, Inc. +0023a3 ARRIS Group, Inc. +0023a4 New Concepts Development Corp. +0023a5 SageTV, LLC +0023a6 E-Mon +0023a7 Redpine Signals, Inc. +0023a8 Marshall Electronics +0023a9 Beijing Detianquan Electromechanical Equipment Co., Ltd +0023aa HFR, Inc. +0023ab Cisco Systems, Inc +0023ac Cisco Systems, Inc +0023ad Xmark Corporation +0023ae Dell Inc. +0023af ARRIS Group, Inc. +0023b0 COMXION Technology Inc. +0023b1 Longcheer Technology (Singapore) Pte Ltd +0023b2 Intelligent Mechatronic Systems Inc +0023b3 Lyyn AB +0023b4 Nokia Danmark A/S +0023b5 ORTANA LTD +0023b6 SECURITE COMMUNICATIONS / HONEYWELL +0023b7 Q-Light Co., Ltd. +0023b8 Sichuan Jiuzhou Electronic Technology Co.,Ltd +0023b9 Airbus Defence and Space Deutschland GmbH +0023ba Chroma +0023bb Schmitt Industries +0023bc EQ-SYS GmbH +0023bd Digital Ally, Inc. +0023be Cisco SPVTG +0023bf Mainpine, Inc. +0023c0 Broadway Networks +0023c1 Securitas Direct AB +0023c2 SAMSUNG Electronics. Co. LTD +0023c3 LogMeIn, Inc. +0023c4 Lux Lumen +0023c5 Radiation Safety and Control Services Inc +0023c6 SMC Corporation +0023c7 AVSystem +0023c8 TEAM-R +0023c9 Sichuan Tianyi Information Science & Technology Stock CO.,LTD +0023ca Behind The Set, LLC +0023cb Shenzhen Full-join Technology Co.,Ltd +0023cc Nintendo Co., Ltd. +0023cd TP-LINK TECHNOLOGIES CO.,LTD. +0023ce KITA DENSHI CORPORATION +0023cf CUMMINS-ALLISON CORP. +0023d0 Uniloc USA Inc. +0023d1 TRG +0023d2 Inhand Electronics, Inc. +0023d3 AirLink WiFi Networking Corp. +0023d4 Texas Instruments +0023d5 WAREMA electronic GmbH +0023d6 Samsung Electronics Co.,Ltd +0023d7 Samsung Electronics Co.,Ltd +0023d8 Ball-It Oy +0023d9 Banner Engineering +0023da Industrial Computer Source (Deutschland)GmbH +0023db saxnet gmbh +0023dc Benein, Inc +0023dd ELGIN S.A. +0023de Ansync Inc. +0023df Apple, Inc. +0023e0 INO Therapeutics LLC +0023e1 Cavena Image Products AB +0023e2 SEA Signalisation +0023e3 Microtronic AG +0023e4 IPnect co. ltd. +0023e5 IPaXiom Networks +0023e6 Pirkus, Inc. +0023e7 Hinke A/S +0023e8 Demco Corp. +0023e9 F5 Networks, Inc. +0023ea Cisco Systems, Inc +0023eb Cisco Systems, Inc +0023ec Algorithmix GmbH +0023ed ARRIS Group, Inc. +0023ee ARRIS Group, Inc. +0023ef Zuend Systemtechnik AG +0023f0 Shanghai Jinghan Weighing Apparatus Co. Ltd. +0023f1 Sony Mobile Communications Inc +0023f2 TVLogic +0023f3 Glocom, Inc. +0023f4 Masternaut +0023f5 WILO SE +0023f6 Softwell Technology Co., Ltd. +0023f7 Private +0023f8 Zyxel Communications Corporation +0023f9 Double-Take Software, INC. +0023fa RG Nets, Inc. +0023fb IP Datatel, LLC. +0023fc Ultra Stereo Labs, Inc +0023fd AFT Atlas Fahrzeugtechnik GmbH +0023fe Biodevices, SA +0023ff Beijing HTTC Technology Ltd. +002400 Nortel Networks +002401 D-Link Corporation +002402 Op-Tection GmbH +002403 Nokia Danmark A/S +002404 Nokia Danmark A/S +002405 Dilog Nordic AB +002406 Pointmobile +002407 TELEM SAS +002408 Pacific Biosciences +002409 The Toro Company +00240a US Beverage Net +00240b Virtual Computer Inc. +00240c DELEC GmbH +00240d OnePath Networks LTD. +00240e Inventec Besta Co., Ltd. +00240f Ishii Tool & Engineering Corporation +002410 NUETEQ Technology,Inc. +002411 PharmaSmart LLC +002412 Benign Technologies Co, Ltd. +002413 Cisco Systems, Inc +002414 Cisco Systems, Inc +002415 Magnetic Autocontrol GmbH +002416 Any Use +002417 Thomson Telecom Belgium +002418 Nextwave Semiconductor +002419 Private +00241a Red Beetle Inc. +00241b iWOW Communications Pte Ltd +00241c FuGang Electronic (DG) Co.,Ltd +00241d GIGA-BYTE TECHNOLOGY CO.,LTD. +00241e Nintendo Co., Ltd. +00241f DCT-Delta GmbH +002420 NetUP Inc. +002421 MICRO-STAR INT'L CO., LTD. +002422 Knapp Logistik Automation GmbH +002423 AzureWave Technologies (Shanghai) Inc. +002424 Ace Axis Limited +002425 Shenzhenshi chuangzhicheng Technology Co.,Ltd +002426 NOHMI BOSAI LTD. +002427 SSI COMPUTER CORP +002428 EnergyICT +002429 MK MASTER INC. +00242a Hittite Microwave Corporation +00242b Hon Hai Precision Ind. Co.,Ltd. +00242c Hon Hai Precision Ind. Co.,Ltd. +00242e Datastrip Inc. +00242f Micron +002430 Ruby Tech Corp. +002431 Uni-v co.,ltd +002432 Neostar Technology Co.,LTD +002433 ALPS ELECTRIC CO., LTD. +002434 Lectrosonics, Inc. +002435 WIDE CORPORATION +002436 Apple, Inc. +002437 Motorola - BSG +002438 Brocade Communications Systems, Inc. +002439 Digital Barriers Advanced Technologies +00243a Ludl Electronic Products +00243b CSSI (S) Pte Ltd +00243c S.A.A.A. +00243d Emerson Appliance Motors and Controls +00243f Storwize, Inc. +002440 Halo Monitoring, Inc. +002441 Wanzl Metallwarenfabrik GmbH +002442 Axona Limited +002443 Nortel Networks +002444 Nintendo Co., Ltd. +002445 Adtran Inc +002446 MMB Research Inc. +002447 Kaztek Systems +002448 SpiderCloud Wireless, Inc +002449 Shen Zhen Lite Star Electronics Technology Co., Ltd +00244a Voyant International +00244b PERCEPTRON INC +00244c Solartron Metrology Ltd +00244d Hokkaido Electronics Corporation +00244e RadChips, Inc. +00244f Asantron Technologies Ltd. +002450 Cisco Systems, Inc +002451 Cisco Systems, Inc +002452 Silicon Software GmbH +002453 Initra d.o.o. +002454 Samsung Electronics Co.,Ltd +002455 MuLogic BV +002456 2Wire Inc +002458 PA Bastion CC +002459 ABB Automation products GmbH +00245a Nanjing Panda Electronics Company Limited +00245b RAIDON TECHNOLOGY, INC. +00245c Design-Com Technologies Pty. Ltd. +00245d Terberg besturingstechniek B.V. +00245e Hivision Co.,ltd +00245f Vine Telecom CO.,Ltd. +002460 Giaval Science Development Co. Ltd. +002461 Shin Wang Tech. +002462 Rayzone Corporation +002463 Phybridge Inc +002464 Bridge Technologies Co AS +002465 Elentec +002466 Unitron nv +002467 AOC International (Europe) GmbH +002468 Sumavision Technologies Co.,Ltd +002469 Smart Doorphones +00246a Solid Year Co., Ltd. +00246b Covia, Inc. +00246c Aruba, a Hewlett Packard Enterprise Company +00246d Weinzierl Engineering GmbH +00246e Phihong USA Corp. +00246f Onda Communication spa +002470 AUROTECH ultrasound AS. +002471 Fusion MultiSystems dba Fusion-io +002472 ReDriven Power Inc. +002473 3COM EUROPE LTD +002474 Autronica Fire And Securirty +002475 Compass System(Embedded Dept.) +002476 TAP.tv +002477 Tibbo Technology +002478 Mag Tech Electronics Co Limited +002479 Optec Displays, Inc. +00247a FU YI CHENG Technology Co., Ltd. +00247b Actiontec Electronics, Inc +00247c Nokia Danmark A/S +00247d Nokia Danmark A/S +00247e Universal Global Scientific Industrial Co., Ltd. +00247f Nortel Networks +002480 Meteocontrol GmbH +002481 Hewlett Packard +002482 Ruckus Wireless +002483 LG Electronics (Mobile Communications) +002484 Bang and Olufsen Medicom a/s +002485 ConteXtream Ltd +002486 DesignArt Networks +002487 Transact Campus, Inc. +002488 Centre For Development Of Telematics +002489 Vodafone Omnitel N.V. +00248a Kaga Electronics Co., Ltd. +00248b HYBUS CO., LTD. +00248c ASUSTek COMPUTER INC. +00248d Sony Interactive Entertainment Inc. +00248e Infoware ZRt. +00248f DO-MONIX +002490 Samsung Electronics Co.,Ltd +002491 Samsung Electronics Co.,Ltd +002492 Motorola, Broadband Solutions Group +002493 ARRIS Group, Inc. +002494 Shenzhen Baoxin Tech CO., Ltd. +002495 ARRIS Group, Inc. +002496 Ginzinger electronic systems +002497 Cisco Systems, Inc +002498 Cisco Systems, Inc +002499 Aquila Technologies +00249a Beijing Zhongchuang Telecommunication Test Co., Ltd. +00249b Action Star Enterprise Co., Ltd. +00249c Bimeng Comunication System Co. Ltd +00249d NES Technology Inc. +00249e ADC-Elektronik GmbH +00249f RIM Testing Services +0024a0 ARRIS Group, Inc. +0024a1 ARRIS Group, Inc. +0024a2 Hong Kong Middleware Technology Limited +0024a3 Sonim Technologies Inc +0024a4 Siklu Communication +0024a5 BUFFALO.INC +0024a6 TELESTAR DIGITAL GmbH +0024a7 Advanced Video Communications Inc. +0024a8 ProCurve Networking by HP +0024a9 Ag Leader Technology +0024aa Dycor Technologies Ltd. +0024ab A7 Engineering, Inc. +0024ac Hangzhou DPtech Technologies Co., Ltd. +0024ad Adolf Thies Gmbh & Co. KG +0024ae IDEMIA +0024af Dish Technologies Corp +0024b0 ESAB AB +0024b1 Coulomb Technologies +0024b2 NETGEAR +0024b3 Graf-Syteco GmbH & Co. KG +0024b4 ESCATRONIC GmbH +0024b5 Nortel Networks +0024b6 Seagate Technology +0024b7 GridPoint, Inc. +0024b8 free alliance sdn bhd +0024b9 Wuhan Higheasy Electronic Technology Development Co.Ltd +0024ba Texas Instruments +0024bb CENTRAL Corporation +0024bc HuRob Co.,Ltd +0024bd Hainzl Industriesysteme GmbH +0024be Sony Corporation +0024bf CIAT +0024c0 NTI COMODO INC +0024c1 ARRIS Group, Inc. +0024c2 Asumo Co.,Ltd. +0024c3 Cisco Systems, Inc +0024c4 Cisco Systems, Inc +0024c5 Meridian Audio Limited +0024c6 Hager Electro SAS +0024c7 Mobilarm Ltd +0024c8 Broadband Solutions Group +0024c9 Broadband Solutions Group +0024ca Tobii Technology AB +0024cb Autonet Mobile +0024cc Fascinations Toys and Gifts, Inc. +0024cd Willow Garage, Inc. +0024ce Exeltech Inc +0024cf Inscape Data Corporation +0024d0 Shenzhen SOGOOD Industry CO.,LTD. +0024d1 Thomson Inc. +0024d2 ASKEY COMPUTER CORP +0024d3 QUALICA Inc. +0024d4 FREEBOX SAS +0024d5 Winward Industrial Limited +0024d6 Intel Corporate +0024d7 Intel Corporate +0024d8 IlSung Precision +0024d9 BICOM, Inc. +0024da Innovar Systems Limited +0024db Alcohol Monitoring Systems +0024dc Juniper Networks +0024dd Centrak, Inc. +0024de GLOBAL Technology Inc. +0024df Digitalbox Europe GmbH +0024e0 DS Tech, LLC +0024e1 Convey Computer Corp. +0024e2 HASEGAWA ELECTRIC CO.,LTD. +0024e3 CAO Group +0024e4 Withings +0024e5 Seer Technology, Inc +0024e6 In Motion Technology Inc. +0024e7 Plaster Networks +0024e8 Dell Inc. +0024e9 Samsung Electronics Co.,Ltd +0024ea iris-GmbH infrared & intelligent sensors +0024eb ClearPath Networks, Inc. +0024ec United Information Technology Co.,Ltd. +0024ed YT Elec. Co,.Ltd. +0024ee Wynmax Inc. +0024ef Sony Mobile Communications Inc +0024f0 Seanodes +0024f1 Shenzhen Fanhai Sanjiang Electronics Co., Ltd. +0024f2 Uniphone Telecommunication Co., Ltd. +0024f3 Nintendo Co., Ltd. +0024f4 Kaminario, Ltd. +0024f5 NDS Surgical Imaging +0024f6 MIYOSHI ELECTRONICS CORPORATION +0024f7 Cisco Systems, Inc +0024f8 Technical Solutions Company Ltd. +0024f9 Cisco Systems, Inc +0024fa Hilger u. Kern GMBH +0024fb Private +0024fc QuoPin Co., Ltd. +0024fd Accedian Networks Inc +0024fe AVM GmbH +0024ff QLogic Corporation +002500 Apple, Inc. +002501 JSC Supertel +002502 NaturalPoint +002503 IBM Corp +002504 Valiant Communications Limited +002505 eks Engel GmbH & Co. KG +002506 A.I. ANTITACCHEGGIO ITALIA SRL +002507 ASTAK Inc. +002508 Maquet Cardiopulmonary AG +002509 SHARETRONIC Group LTD +00250a Security Expert Co. Ltd +00250b CENTROFACTOR INC +00250c Senet Inc +00250d GZT Telkom-Telmor sp. z o.o. +00250e gt german telematics gmbh +00250f On-Ramp Wireless, Inc. +002510 Pico-Tesla Magnetic Therapies +002511 Elitegroup Computer Systems Co.,Ltd. +002512 zte corporation +002513 CXP DIGITAL BV +002514 PC Worth Int'l Co., Ltd. +002515 SFR +002516 Integrated Design Tools, Inc. +002517 Venntis, LLC +002518 Power PLUS Communications AG +002519 Viaas Inc +00251a Psiber Data Systems Inc. +00251b Philips CareServant +00251c EDT +00251d DSA Encore, LLC +00251e ROTEL TECHNOLOGIES +00251f ZYNUS VISION INC. +002520 SMA Railway Technology GmbH +002521 Logitek Electronic Systems, Inc. +002522 ASRock Incorporation +002523 OCP Inc. +002524 Lightcomm Technology Co., Ltd +002525 CTERA Networks Ltd. +002526 Genuine Technologies Co., Ltd. +002527 Bitrode Corp. +002528 Daido Signal Co., Ltd. +002529 COMELIT GROUP S.P.A +00252a Chengdu GeeYa Technology Co.,LTD +00252b Stirling Energy Systems +00252c Entourage Systems, Inc. +00252d Kiryung Electronics +00252e Cisco SPVTG +00252f Energy, Inc. +002530 Aetas Systems Inc. +002531 Cloud Engines, Inc. +002532 Digital Recorders +002533 WITTENSTEIN AG +002535 Minimax GmbH & Co KG +002536 Oki Electric Industry Co., Ltd. +002537 Runcom Technologies Ltd. +002538 Samsung Electronics Co., Ltd., Memory Division +002539 IfTA GmbH +00253a CEVA, Ltd. +00253b din Dietmar Nocker Facilitymanagement GmbH +00253c 2Wire Inc +00253d DRS Consolidated Controls +00253e Sensus Metering Systems +002540 Quasar Technologies, Inc. +002541 Maquet Critical Care AB +002542 Pittasoft +002543 MONEYTECH +002544 LoJack Corporation +002545 Cisco Systems, Inc +002546 Cisco Systems, Inc +002547 Nokia Danmark A/S +002548 Nokia Danmark A/S +002549 Jeorich Tech. Co.,Ltd. +00254a RingCube Technologies, Inc. +00254b Apple, Inc. +00254c Videon Central, Inc. +00254d Singapore Technologies Electronics Limited +00254e Vertex Wireless Co., Ltd. +00254f ELETTROLAB Srl +002550 Riverbed Technology, Inc. +002551 SE-Elektronic GmbH +002552 VXi Corporation +002553 ADB Broadband Italia +002554 Pixel8 Networks +002555 Visonic Technologies 1993 Ltd. +002556 Hon Hai Precision Ind. Co.,Ltd. +002557 BlackBerry RTS +002558 MPEDIA +002559 Syphan Technologies Ltd +00255a Tantalus Systems Corp. +00255b CoachComm, LLC +00255c NEC Corporation +00255d Morningstar Corporation +00255e Shanghai Dare Technologies Co.,Ltd. +00255f SenTec AG +002560 Ibridge Networks & Communications Ltd. +002561 ProCurve Networking by HP +002562 interbro Co. Ltd. +002563 Luxtera Inc +002564 Dell Inc. +002565 Vizimax Inc. +002566 Samsung Electronics Co.,Ltd +002567 Samsung Electronics Co.,Ltd +002568 HUAWEI TECHNOLOGIES CO.,LTD +002569 Sagemcom Broadband SAS +00256a inIT - Institut Industrial IT +00256b ATENIX E.E. s.r.l. +00256c Azimut Production Association JSC +00256d Broadband Forum +00256e Van Breda B.V. +00256f Dantherm Power +002570 Eastern Communications Company Limited +002571 Zhejiang Tianle Digital Electric Co.,Ltd +002572 Nemo-Q International AB +002573 ST Electronics (Info-Security) Pte Ltd +002574 KUNIMI MEDIA DEVICE Co., Ltd. +002575 FiberPlex Technologies, LLC +002576 NELI TECHNOLOGIES +002577 D-BOX Technologies +002578 JSC Concern Sozvezdie +002579 J & F Labs +00257a CAMCO Produktions- und Vertriebs-GmbH für Beschallungs- und Beleuchtungsanlagen +00257b STJ ELECTRONICS PVT LTD +00257c Huachentel Technology Development Co., Ltd +00257d PointRed Telecom Private Ltd. +00257e NEW POS TECHNOLOGY LIMITED +00257f CallTechSolution Co.,Ltd +002580 Equipson S.A. +002581 x-star networks Inc. +002582 Maksat Technologies (P) Ltd +002583 Cisco Systems, Inc +002584 Cisco Systems, Inc +002585 KOKUYO S&T Co., Ltd. +002586 TP-LINK TECHNOLOGIES CO.,LTD. +002587 Vitality, Inc. +002588 Genie Industries, Inc. +002589 Hills Industries Limited +00258a Pole/Zero Corporation +00258b Mellanox Technologies, Inc. +00258c ESUS ELEKTRONIK SAN. VE DIS. TIC. LTD. STI. +00258d Haier +00258e The Weather Channel +00258f Trident Microsystems, Inc. +002590 Super Micro Computer, Inc. +002591 NEXTEK, Inc. +002592 Guangzhou Shirui Electronic Co., Ltd +002593 DatNet Informatikai Kft. +002594 Eurodesign BG LTD +002595 Northwest Signal Supply, Inc +002596 GIGAVISION srl +002597 Kalki Communication Technologies +002598 Zhong Shan City Litai Electronic Industrial Co. Ltd +002599 Hedon e.d. B.V. +00259a CEStronics GmbH +00259b Beijing PKUNITY Microsystems Technology Co., Ltd +00259c Cisco-Linksys, LLC +00259d Private +00259e HUAWEI TECHNOLOGIES CO.,LTD +00259f TechnoDigital Technologies GmbH +0025a0 Nintendo Co., Ltd. +0025a1 Enalasys +0025a2 Alta Definicion LINCEO S.L. +0025a3 Trimax Wireless, Inc. +0025a4 EuroDesign embedded technologies GmbH +0025a5 Walnut Media Network +0025a6 Central Network Solution Co., Ltd. +0025a7 itron +0025a8 Kontron (BeiJing) Technology Co.,Ltd +0025a9 Shanghai Embedway Information Technologies Co.,Ltd +0025aa Beijing Soul Technology Co.,Ltd. +0025ab AIO LCD PC BU / TPV +0025ac I-Tech corporation +0025ad Manufacturing Resources International +0025ae Microsoft Corporation +0025af COMFILE Technology +0025b0 Schmartz Inc +0025b1 Maya-Creation Corporation +0025b2 MBDA Deutschland GmbH +0025b3 Hewlett Packard +0025b4 Cisco Systems, Inc +0025b5 Cisco Systems, Inc +0025b6 Telecom FM +0025b7 Costar electronics, inc., +0025b8 Agile Communications, Inc. +0025b9 Cypress Solutions Inc +0025ba Alcatel-Lucent IPD +0025bb INNERINT Co., Ltd. +0025bc Apple, Inc. +0025bd Italdata Ingegneria dell'Idea S.p.A. +0025be Tektrap Systems Inc. +0025bf Wireless Cables Inc. +0025c0 ZillionTV Corporation +0025c1 Nawoo Korea Corp. +0025c2 RingBell Co.,Ltd. +0025c3 21168 +0025c4 Ruckus Wireless +0025c5 Star Link Communication Pvt. Ltd. +0025c6 kasercorp, ltd +0025c7 altek Corporation +0025c8 S-Access GmbH +0025c9 SHENZHEN HUAPU DIGITAL CO., LTD +0025ca LS Research, LLC +0025cb Reiner SCT +0025cc Mobile Communications Korea Incorporated +0025cd Skylane Optics +0025ce InnerSpace +0025cf Nokia Danmark A/S +0025d0 Nokia Danmark A/S +0025d1 Eastern Asia Technology Limited +0025d2 InpegVision Co., Ltd +0025d3 AzureWave Technology Inc. +0025d4 General Dynamics Mission Systems +0025d5 Robonica (Pty) Ltd +0025d6 The Kroger Co. +0025d7 CEDO +0025d8 KOREA MAINTENANCE +0025d9 DataFab Systems Inc. +0025da Secura Key +0025db ATI Electronics(Shenzhen) Co., LTD +0025dc Sumitomo Electric Industries,Ltd +0025dd SUNNYTEK INFORMATION CO., LTD. +0025de Probits Co., LTD. +0025df Private +0025e0 CeedTec Sdn Bhd +0025e1 SHANGHAI SEEYOO ELECTRONIC & TECHNOLOGY CO., LTD +0025e2 Everspring Industry Co., Ltd. +0025e3 Hanshinit Inc. +0025e4 OMNI-WiFi, LLC +0025e5 LG Electronics (Mobile Communications) +0025e6 Belgian Monitoring Systems bvba +0025e7 Sony Mobile Communications Inc +0025e8 Idaho Technology +0025e9 i-mate Development, Inc. +0025ea Iphion BV +0025eb Reutech Radar Systems (PTY) Ltd +0025ec Humanware +0025ed NuVo Technologies LLC +0025ee Avtex Ltd +0025ef I-TEC Co., Ltd. +0025f0 Suga Electronics Limited +0025f1 ARRIS Group, Inc. +0025f2 ARRIS Group, Inc. +0025f3 Nordwestdeutsche Zählerrevision +0025f4 KoCo Connector AG +0025f5 DVS Korea, Co., Ltd +0025f6 netTALK.com, Inc. +0025f7 Ansaldo STS USA +0025f9 GMK electronic design GmbH +0025fa J&M Analytik AG +0025fb Tunstall Healthcare A/S +0025fc ENDA ENDUSTRIYEL ELEKTRONIK LTD. STI. +0025fd OBR Centrum Techniki Morskiej S.A. +0025fe Pilot Electronics Corporation +0025ff CreNova Multimedia Co., Ltd +002600 TEAC Australia Pty Ltd. +002601 Cutera Inc +002602 SMART Temps LLC +002603 Shenzhen Wistar Technology Co., Ltd +002604 Audio Processing Technology Ltd +002605 CC Systems AB +002606 RAUMFELD GmbH +002607 Enabling Technology Pty Ltd +002608 Apple, Inc. +002609 Phyllis Co., Ltd. +00260a Cisco Systems, Inc +00260b Cisco Systems, Inc +00260c Dataram +00260d Mercury Systems, Inc. +00260e Ablaze Systems, LLC +00260f Linn Products Ltd +002610 Apacewave Technologies +002611 Licera AB +002612 Space Exploration Technologies +002613 Engel Axil S.L. +002614 KTNF +002615 Teracom Limited +002616 Rosemount Inc. +002617 OEM Worldwide +002618 ASUSTek COMPUTER INC. +002619 FRC +00261a Femtocomm System Technology Corp. +00261b LAUREL BANK MACHINES CO., LTD. +00261c NEOVIA INC. +00261d COP SECURITY SYSTEM CORP. +00261e QINGBANG ELEC(SZ) CO., LTD +00261f SAE Magnetics (H.K.) Ltd. +002620 ISGUS GmbH +002621 InteliCloud Technology Inc. +002622 COMPAL INFORMATION (KUNSHAN) CO., LTD. +002623 JRD Communication Inc +002624 Thomson Inc. +002625 MediaSputnik +002626 Geophysical Survey Systems, Inc. +002627 Truesell +002628 companytec automação e controle ltda. +002629 Juphoon System Software Inc. +00262a Proxense, LLC +00262b Wongs Electronics Co. Ltd. +00262c IKT Advanced Technologies s.r.o. +00262d Wistron Corporation +00262e Chengdu Jiuzhou Electronic Technology Inc +00262f HAMAMATSU TOA ELECTRONICS +002630 ACOREL S.A.S +002631 COMMTACT LTD +002632 Instrumentation Technologies d.d. +002633 MIR - Medical International Research +002634 Infineta Systems, Inc +002635 Bluetechnix GmbH +002636 ARRIS Group, Inc. +002637 SAMSUNG ELECTRO MECHANICS CO., LTD. +002638 Xia Men Joyatech Co., Ltd. +002639 T.M. Electronics, Inc. +00263a Digitec Systems +00263b Onbnetech +00263c Bachmann Technology GmbH & Co. KG +00263d MIA Corporation +00263e Trapeze Networks +00263f LIOS Technology GmbH +002640 Baustem Broadband Technologies, Ltd. +002641 ARRIS Group, Inc. +002642 ARRIS Group, Inc. +002643 ALPS ELECTRIC CO., LTD. +002644 Thomson Telecom Belgium +002645 Circontrol S.A. +002646 SHENYANG TONGFANG MULTIMEDIA TECHNOLOGY COMPANY LIMITED +002647 WFE TECHNOLOGY CORP. +002648 Emitech Corp. +00264a Apple, Inc. +00264c Shanghai DigiVision Technology Co., Ltd. +00264d Arcadyan Technology Corporation +00264e Rail & Road Protec GmbH +00264f Krüger &Gothe GmbH +002650 2Wire Inc +002651 Cisco Systems, Inc +002652 Cisco Systems, Inc +002653 DaySequerra Corporation +002654 3COM +002655 Hewlett Packard +002656 Sansonic Electronics USA +002657 OOO NPP EKRA +002658 T-Platforms (Cyprus) Limited +002659 Nintendo Co., Ltd. +00265a D-Link Corporation +00265b Hitron Technologies. Inc +00265c Hon Hai Precision Ind. Co.,Ltd. +00265d Samsung Electronics Co.,Ltd +00265e Hon Hai Precision Ind. Co.,Ltd. +00265f Samsung Electronics Co.,Ltd +002660 Logiways +002661 Irumtek Co., Ltd. +002662 Actiontec Electronics, Inc +002663 Shenzhen Huitaiwei Tech. Ltd, co. +002664 Core System Japan +002665 ProtectedLogic Corporation +002666 EFM Networks +002667 CARECOM CO.,LTD. +002668 Nokia Danmark A/S +002669 Nokia Danmark A/S +00266a ESSENSIUM NV +00266b SHINE UNION ENTERPRISE LIMITED +00266c INVENTEC CORPORATION +00266d MobileAccess Networks +00266e Nissho-denki Co.,LTD. +00266f Coordiwise Technology Corp. +002670 Cinch Connectors +002671 AUTOVISION Co., Ltd +002672 AAMP of America +002673 RICOH COMPANY,LTD. +002674 Electronic Solutions, Inc. +002675 Aztech Electronics Pte Ltd +002676 COMMidt AS +002677 DEIF A/S +002678 Logic Instrument SA +002679 Euphonic Technologies, Inc. +00267a wuhan hongxin telecommunication technologies co.,ltd +00267b GSI Helmholtzzentrum für Schwerionenforschung GmbH +00267c Metz-Werke GmbH & Co KG +00267d A-Max Technology Macao Commercial Offshore Company Limited +00267e PARROT SA +00267f Zenterio AB +002680 SIL3 Pty.Ltd +002681 Interspiro AB +002682 Gemtek Technology Co., Ltd. +002683 Ajoho Enterprise Co., Ltd. +002684 KISAN SYSTEM +002685 Digital Innovation +002686 Quantenna Communcations, Inc. +002687 corega K.K +002688 Juniper Networks +002689 General Dynamics Robotic Systems +00268a Terrier SC Ltd +00268b Guangzhou Escene Computer Technology Limited +00268c StarLeaf Ltd. +00268d CellTel S.p.A. +00268e Alta Solutions, Inc. +00268f MTA SpA +002690 I DO IT +002691 Sagemcom Broadband SAS +002692 Mitsubishi Electric Corporation +002693 QVidium Technologies, Inc. +002694 Senscient Ltd +002695 ZT Group Int'l Inc +002696 NOOLIX Co., Ltd +002697 Alpha Technologies Inc. +002698 Cisco Systems, Inc +002699 Cisco Systems, Inc +00269a Carina System Co., Ltd. +00269b SOKRAT Ltd. +00269c ITUS JAPAN CO. LTD +00269d M2Mnet Co., Ltd. +00269e QUANTA COMPUTER INC. +00269f Private +0026a0 moblic +0026a1 Megger +0026a2 Instrumentation Technology Systems +0026a3 FQ Ingenieria Electronica S.A. +0026a4 Novus Produtos Eletronicos Ltda +0026a5 MICROROBOT.CO.,LTD +0026a6 TRIXELL +0026a7 CONNECT SRL +0026a8 DAEHAP HYPER-TECH +0026a9 Strong Technologies Pty Ltd +0026aa Kenmec Mechanical Engineering Co., Ltd. +0026ab Seiko Epson Corporation +0026ac Shanghai LUSTER Teraband photonic Co., Ltd. +0026ad Arada Systems, Inc. +0026ae Wireless Measurement Ltd +0026af Duelco A/S +0026b0 Apple, Inc. +0026b1 Navis Auto Motive Systems, Inc. +0026b2 Setrix GmbH +0026b3 Thales Communications Inc +0026b4 Ford Motor Company +0026b5 ICOMM Tele Ltd +0026b6 ASKEY COMPUTER CORP +0026b7 Kingston Technology Company, Inc. +0026b8 Actiontec Electronics, Inc +0026b9 Dell Inc. +0026ba ARRIS Group, Inc. +0026bb Apple, Inc. +0026bc General Jack Technology Ltd. +0026bd JTEC Card & Communication Co., Ltd +0026be Schoonderbeek Elektronica Systemen B.V. +0026bf ShenZhen Temobi Science&Tech Development Co.,Ltd +0026c0 EnergyHub +0026c1 ARTRAY CO., LTD. +0026c2 SCDI Co. LTD +0026c3 Insightek Corp. +0026c4 Cadmos microsystems S.r.l. +0026c5 Guangdong Gosun Telecommunications Co.,Ltd +0026c6 Intel Corporate +0026c7 Intel Corporate +0026c8 System Sensor +0026c9 Proventix Systems, Inc. +0026ca Cisco Systems, Inc +0026cb Cisco Systems, Inc +0026cc Nokia Danmark A/S +0026cd PurpleComm, Inc. +0026ce Kozumi USA Corp. +0026cf DEKA R&D +0026d0 Semihalf +0026d1 S Squared Innovations Inc. +0026d2 Pcube Systems, Inc. +0026d3 Zeno Information System +0026d4 IRCA SpA +0026d5 Ory Solucoes em Comercio de Informatica Ltda. +0026d6 Ningbo Andy Optoelectronic Co., Ltd. +0026d7 KM Electornic Technology Co., Ltd. +0026d8 Magic Point Inc. +0026d9 ARRIS Group, Inc. +0026da Universal Media Corporation /Slovakia/ s.r.o. +0026db Ionics EMS Inc. +0026dc Optical Systems Design +0026dd Fival Science & Technology Co.,Ltd. +0026de FDI MATELEC +0026df TaiDoc Technology Corp. +0026e0 ASITEQ +0026e1 Stanford University, OpenFlow Group +0026e2 LG Electronics (Mobile Communications) +0026e3 DTI +0026e4 Canal + +0026e5 AEG Power Solutions +0026e6 Visionhitech Co., Ltd. +0026e7 Shanghai ONLAN Communication Tech. Co., Ltd. +0026e8 Murata Manufacturing Co., Ltd. +0026e9 SP Corp +0026ea Cheerchip Electronic Technology (ShangHai) Co., Ltd. +0026eb Advanced Spectrum Technology Co., Ltd. +0026ec Legrand Home Systems, Inc +0026ed zte corporation +0026ee TKM GmbH +0026ef Technology Advancement Group, Inc. +0026f0 cTrixs International GmbH. +0026f1 ProCurve Networking by HP +0026f2 NETGEAR +0026f3 SMC Networks +0026f4 Nesslab +0026f5 XRPLUS Inc. +0026f6 Military Communication Institute +0026f7 Nivetti Systems Pvt. Ltd. +0026f8 Golden Highway Industry Development Co., Ltd. +0026f9 S.E.M. srl +0026fa BandRich Inc. +0026fb AirDio Wireless, Inc. +0026fc AcSiP Technology Corp. +0026fd Interactive Intelligence +0026fe MKD Technology Inc. +0026ff BlackBerry RTS +002700 Shenzhen Siglent Technology Co., Ltd. +002701 INCOstartec GmbH +002702 SolarEdge Technologies +002703 Testech Electronics Pte Ltd +002704 Accelerated Concepts, Inc +002705 Sectronic +002706 YOISYS +002707 Lift Complex DS, JSC +002708 Nordiag ASA +002709 Nintendo Co., Ltd. +00270a IEE S.A. +00270b Adura Technologies +00270c Cisco Systems, Inc +00270d Cisco Systems, Inc +00270e Intel Corporate +00270f Envisionnovation Inc +002710 Intel Corporate +002711 LanPro Inc +002712 MaxVision LLC +002713 Universal Global Scientific Industrial Co., Ltd. +002714 Grainmustards, Co,ltd. +002715 Rebound Telecom. Co., Ltd +002716 Adachi-Syokai Co., Ltd. +002717 CE Digital(Zhenjiang)Co.,Ltd +002718 Suzhou NEW SEAUNION Video Technology Co.,Ltd +002719 TP-LINK TECHNOLOGIES CO.,LTD. +00271a Geenovo Technology Ltd. +00271b Alec Sicherheitssysteme GmbH +00271c MERCURY CORPORATION +00271d Comba Telecom Systems (China) Ltd. +00271e Xagyl Communications +00271f MIPRO Electronics Co., Ltd +002720 NEW-SOL COM +002721 Shenzhen Baoan Fenda Industrial Co., Ltd +002722 Ubiquiti Networks Inc. +002790 Cisco Systems, Inc +0027e3 Cisco Systems, Inc +0027f8 Brocade Communications Systems, Inc. +00289f Semptian Co., Ltd. +0028f8 Intel Corporate +002926 Applied Optoelectronics, Inc Taiwan Branch +0029c2 Cisco Systems, Inc +002a10 Cisco Systems, Inc +002a6a Cisco Systems, Inc +002aaf LARsys-Automation GmbH +002cc8 Cisco Systems, Inc +002d76 TITECH GmbH +002ec7 HUAWEI TECHNOLOGIES CO.,LTD +002f5c Cisco Systems, Inc +002fd9 Fiberhome Telecommunication Technologies Co.,LTD +003000 ALLWELL TECHNOLOGY CORP. +003001 SMP +003002 Expand Networks +003003 Phasys Ltd. +003004 LEADTEK RESEARCH INC. +003005 Fujitsu Siemens Computers +003006 SUPERPOWER COMPUTER +003007 OPTI, INC. +003008 AVIO DIGITAL, INC. +003009 Tachion Networks, Inc. +00300a Aztech Electronics Pte Ltd +00300b mPHASE Technologies, Inc. +00300c CONGRUENCY, LTD. +00300d MMC Technology, Inc. +00300e Klotz Digital AG +00300f IMT - Information Management T +003010 VISIONETICS INTERNATIONAL +003011 HMS Industrial Networks +003012 DIGITAL ENGINEERING LTD. +003013 NEC Corporation +003014 DIVIO, INC. +003015 CP CLARE CORP. +003016 ISHIDA CO., LTD. +003017 BlueArc UK Ltd +003018 Jetway Information Co., Ltd. +003019 Cisco Systems, Inc +00301a SMARTBRIDGES PTE. LTD. +00301b SHUTTLE, INC. +00301c ALTVATER AIRDATA SYSTEMS +00301d SKYSTREAM, INC. +00301e 3COM EUROPE LTD +00301f OPTICAL NETWORKS, INC. +003020 TSI, Inc.. +003021 HSING TECH. ENTERPRISE CO.,LTD +003022 Fong Kai Industrial Co., Ltd. +003023 COGENT COMPUTER SYSTEMS, INC. +003024 Cisco Systems, Inc +003025 CHECKOUT COMPUTER SYSTEMS, LTD +003026 HeiTel Digital Video GmbH +003027 KERBANGO, INC. +003028 FASE Saldatura srl +003029 OPICOM +00302a SOUTHERN INFORMATION +00302b INALP NETWORKS, INC. +00302c SYLANTRO SYSTEMS CORPORATION +00302d QUANTUM BRIDGE COMMUNICATIONS +00302e Hoft & Wessel AG +00302f GE Aviation System +003030 HARMONIX CORPORATION +003031 LIGHTWAVE COMMUNICATIONS, INC. +003032 MagicRam, Inc. +003033 ORIENT TELECOM CO., LTD. +003034 SET ENGINEERING +003035 Corning Incorporated +003036 RMP ELEKTRONIKSYSTEME GMBH +003037 Packard Bell Nec Services +003038 XCP, INC. +003039 SOFTBOOK PRESS +00303a MAATEL +00303b PowerCom Technology +00303c ONNTO CORP. +00303d IVA CORPORATION +00303e Radcom Ltd. +00303f TurboComm Tech Inc. +003040 Cisco Systems, Inc +003041 SAEJIN T & M CO., LTD. +003042 DeTeWe-Deutsche Telephonwerke +003043 IDREAM TECHNOLOGIES, PTE. LTD. +003044 CradlePoint, Inc +003045 Village Networks, Inc. (VNI) +003046 Controlled Electronic Manageme +003047 NISSEI ELECTRIC CO., LTD. +003048 Super Micro Computer, Inc. +003049 BRYANT TECHNOLOGY, LTD. +00304a Fraunhofer IPMS +00304b ORBACOM SYSTEMS, INC. +00304c APPIAN COMMUNICATIONS, INC. +00304d ESI +00304e BUSTEC PRODUCTION LTD. +00304f PLANET Technology Corporation +003050 Versa Technology +003051 ORBIT AVIONIC & COMMUNICATION +003052 ELASTIC NETWORKS +003053 Basler AG +003054 CASTLENET TECHNOLOGY, INC. +003055 Renesas Technology America, Inc. +003056 HMS Industrial Networks +003057 QTelNet, Inc. +003058 API MOTION +003059 KONTRON COMPACT COMPUTERS AG +00305a TELGEN CORPORATION +00305b Toko Inc. +00305c SMAR Laboratories Corp. +00305d DIGITRA SYSTEMS, INC. +00305e Abelko Innovation +00305f Hasselblad +003060 Powerfile, Inc. +003061 MobyTEL +003062 IP Video Networks Inc +003063 SANTERA SYSTEMS, INC. +003064 ADLINK TECHNOLOGY, INC. +003065 Apple, Inc. +003066 RFM +003067 BIOSTAR Microtech Int'l Corp. +003068 CYBERNETICS TECH. CO., LTD. +003069 IMPACCT TECHNOLOGY CORP. +00306a PENTA MEDIA CO., LTD. +00306b CMOS SYSTEMS, INC. +00306c Hitex Holding GmbH +00306d LUCENT TECHNOLOGIES +00306e Hewlett Packard +00306f SEYEON TECH. CO., LTD. +003070 1Net Corporation +003071 Cisco Systems, Inc +003072 Intellibyte Inc. +003073 International Microsystems, In +003074 EQUIINET LTD. +003075 ADTECH +003076 Akamba Corporation +003077 ONPREM NETWORKS +003078 Cisco Systems, Inc +003079 CQOS, INC. +00307a Advanced Technology & Systems +00307b Cisco Systems, Inc +00307c ADID SA +00307d GRE AMERICA, INC. +00307e Redflex Communication Systems +00307f IRLAN LTD. +003080 Cisco Systems, Inc +003081 ALTOS C&C +003082 TAIHAN ELECTRIC WIRE CO., LTD. +003083 Ivron Systems +003084 ALLIED TELESYN INTERNAIONAL +003085 Cisco Systems, Inc +003086 Transistor Devices, Inc. +003087 VEGA GRIESHABER KG +003088 Ericsson +003089 Spectrapoint Wireless, LLC +00308a NICOTRA SISTEMI S.P.A +00308b Brix Networks +00308c Quantum Corporation +00308d Pinnacle Systems, Inc. +00308e CROSS MATCH TECHNOLOGIES, INC. +00308f MICRILOR, Inc. +003090 CYRA TECHNOLOGIES, INC. +003091 TAIWAN FIRST LINE ELEC. CORP. +003092 Kontron Electronics AG +003093 Sonnet Technologies, Inc +003094 Cisco Systems, Inc +003095 Procomp Informatics, Ltd. +003096 Cisco Systems, Inc +003097 AB Regin +003098 Global Converging Technologies +003099 BOENIG UND KALLENBACH OHG +00309a ASTRO TERRA CORP. +00309b Smartware +00309c Timing Applications, Inc. +00309d Nimble Microsystems, Inc. +00309e WORKBIT CORPORATION. +00309f AMBER NETWORKS +0030a0 TYCO SUBMARINE SYSTEMS, LTD. +0030a1 WEBGATE Inc. +0030a2 Lightner Engineering +0030a3 Cisco Systems, Inc +0030a4 Woodwind Communications System +0030a5 ACTIVE POWER +0030a6 VIANET TECHNOLOGIES, LTD. +0030a7 SCHWEITZER ENGINEERING +0030a8 OL'E COMMUNICATIONS, INC. +0030a9 Netiverse, Inc. +0030aa AXUS MICROSYSTEMS, INC. +0030ab DELTA NETWORKS, INC. +0030ac Systeme Lauer GmbH & Co., Ltd. +0030ad SHANGHAI COMMUNICATION +0030ae Times N System, Inc. +0030af Honeywell GmbH +0030b0 Convergenet Technologies +0030b1 TrunkNet +0030b2 L-3 Sonoma EO +0030b3 San Valley Systems, Inc. +0030b4 INTERSIL CORP. +0030b5 Tadiran Microwave Networks +0030b6 Cisco Systems, Inc +0030b7 Teletrol Systems, Inc. +0030b8 RiverDelta Networks +0030b9 ECTEL +0030ba AC&T SYSTEM CO., LTD. +0030bb CacheFlow, Inc. +0030bc Optronic AG +0030bd BELKIN COMPONENTS +0030be City-Net Technology, Inc. +0030bf MULTIDATA GMBH +0030c0 Lara Technology, Inc. +0030c1 Hewlett Packard +0030c2 COMONE +0030c3 FLUECKIGER ELEKTRONIK AG +0030c4 Canon Imaging Systems Inc. +0030c5 CADENCE DESIGN SYSTEMS, INC. +0030c6 CONTROL SOLUTIONS, INC. +0030c7 Macromate Corp. +0030c8 GAD LINE, LTD. +0030c9 LuxN, N +0030ca Discovery Com +0030cb OMNI FLOW COMPUTERS, INC. +0030cc Tenor Networks, Inc. +0030cd CONEXANT SYSTEMS, INC. +0030ce Zaffire +0030cf TWO TECHNOLOGIES, INC. +0030d0 Tellabs +0030d1 INOVA CORPORATION +0030d2 WIN TECHNOLOGIES, CO., LTD. +0030d3 Agilent Technologies, Inc. +0030d4 AAE Systems, Inc. +0030d5 DResearch GmbH +0030d6 MSC VERTRIEBS GMBH +0030d7 Innovative Systems, L.L.C. +0030d8 SITEK +0030d9 DATACORE SOFTWARE CORP. +0030da Comtrend Corporation +0030db Mindready Solutions, Inc. +0030dc RIGHTECH CORPORATION +0030dd INDIGITA CORPORATION +0030de WAGO Kontakttechnik GmbH +0030df KB/TEL TELECOMUNICACIONES +0030e0 OXFORD SEMICONDUCTOR LTD. +0030e1 Network Equipment Technologies, Inc. +0030e2 GARNET SYSTEMS CO., LTD. +0030e3 SEDONA NETWORKS CORP. +0030e4 CHIYODA SYSTEM RIKEN +0030e5 Amper Datos S.A. +0030e6 Draeger Medical Systems, Inc. +0030e7 CNF MOBILE SOLUTIONS, INC. +0030e8 ENSIM CORP. +0030e9 GMA COMMUNICATION MANUFACT'G +0030ea TeraForce Technology Corporation +0030eb TURBONET COMMUNICATIONS, INC. +0030ec BORGARDT +0030ed Expert Magnetics Corp. +0030ee DSG Technology, Inc. +0030ef NEON TECHNOLOGY, INC. +0030f0 Uniform Industrial Corp. +0030f1 Accton Technology Corp +0030f2 Cisco Systems, Inc +0030f3 At Work Computers +0030f4 STARDOT TECHNOLOGIES +0030f5 Wild Lab. Ltd. +0030f6 SECURELOGIX CORPORATION +0030f7 RAMIX INC. +0030f8 Dynapro Systems, Inc. +0030f9 Sollae Systems Co., Ltd. +0030fa TELICA, INC. +0030fb AZS Technology AG +0030fc Terawave Communications, Inc. +0030fd INTEGRATED SYSTEMS DESIGN +0030fe DSA GmbH +0030ff DataFab Systems Inc. +003146 Juniper Networks +003217 Cisco Systems, Inc +00323a so-logic +00336c SynapSense Corporation +0034da LG Electronics (Mobile Communications) +0034f1 Radicom Research, Inc. +0034fe HUAWEI TECHNOLOGIES CO.,LTD +00351a Cisco Systems, Inc +003532 Electro-Metrics Corporation +003560 Rosen Aviation +0035ff Texas Instruments +003676 ARRIS Group, Inc. +0036f8 Conti Temic microelectronic GmbH +0036fe SuperVision +00376d Murata Manufacturing Co., Ltd. +0037b7 Sagemcom Broadband SAS +0038df Cisco Systems, Inc +003a7d Cisco Systems, Inc +003a98 Cisco Systems, Inc +003a99 Cisco Systems, Inc +003a9a Cisco Systems, Inc +003a9b Cisco Systems, Inc +003a9c Cisco Systems, Inc +003a9d NEC Platforms, Ltd. +003aaf BlueBit Ltd. +003c10 Cisco Systems, Inc +003cc5 WONWOO Engineering Co., Ltd +003d41 Hatteland Computer AS +003de8 LG Electronics (Mobile Communications) +003ee1 Apple, Inc. +004000 PCI COMPONENTES DA AMZONIA LTD +004001 Zero One Technology Co. Ltd. +004002 PERLE SYSTEMS LIMITED +004003 Emerson Process Management Power & Water Solutions, Inc. +004004 ICM CO. LTD. +004005 ANI COMMUNICATIONS INC. +004006 SAMPO TECHNOLOGY CORPORATION +004007 TELMAT INFORMATIQUE +004008 A PLUS INFO CORPORATION +004009 TACHIBANA TECTRON CO., LTD. +00400a PIVOTAL TECHNOLOGIES, INC. +00400b Cisco Systems, Inc +00400c GENERAL MICRO SYSTEMS, INC. +00400d LANNET DATA COMMUNICATIONS,LTD +00400e MEMOTEC, INC. +00400f DATACOM TECHNOLOGIES +004010 SONIC SYSTEMS, INC. +004011 ANDOVER CONTROLS CORPORATION +004012 WINDATA, INC. +004013 NTT DATA COMM. SYSTEMS CORP. +004014 COMSOFT GMBH +004015 ASCOM INFRASYS AG +004016 ADC - Global Connectivity Solutions Division +004017 Silex Technology America +004018 ADOBE SYSTEMS, INC. +004019 AEON SYSTEMS, INC. +00401a FUJI ELECTRIC CO., LTD. +00401b PRINTER SYSTEMS CORP. +00401c AST RESEARCH, INC. +00401d INVISIBLE SOFTWARE, INC. +00401e ICC +00401f COLORGRAPH LTD +004020 CommScope Inc +004021 RASTER GRAPHICS +004022 KLEVER COMPUTERS, INC. +004023 LOGIC CORPORATION +004024 COMPAC INC. +004025 MOLECULAR DYNAMICS +004026 BUFFALO.INC +004027 SMC MASSACHUSETTS, INC. +004028 NETCOMM LIMITED +004029 Compex +00402a Canoga Perkins Corporation +00402b TRIGEM COMPUTER, INC. +00402c ISIS DISTRIBUTED SYSTEMS, INC. +00402d HARRIS ADACOM CORPORATION +00402e PRECISION SOFTWARE, INC. +00402f XLNT DESIGNS INC. +004030 GK COMPUTER +004031 KOKUSAI ELECTRIC CO., LTD +004032 DIGITAL COMMUNICATIONS +004033 ADDTRON TECHNOLOGY CO., LTD. +004034 BUSTEK CORPORATION +004035 OPCOM +004036 Zoom Telephonics, Inc +004037 SEA-ILAN, INC. +004038 TALENT ELECTRIC INCORPORATED +004039 OPTEC DAIICHI DENKO CO., LTD. +00403a IMPACT TECHNOLOGIES +00403b SYNERJET INTERNATIONAL CORP. +00403c FORKS, INC. +00403d Teradata Corporation +00403e RASTER OPS CORPORATION +00403f SSANGYONG COMPUTER SYSTEMS +004040 RING ACCESS, INC. +004041 FUJIKURA LTD. +004042 N.A.T. GMBH +004043 Nokia Siemens Networks GmbH & Co. KG. +004044 QNIX COMPUTER CO., LTD. +004045 TWINHEAD CORPORATION +004046 UDC RESEARCH LIMITED +004047 WIND RIVER SYSTEMS +004048 SMD INFORMATICA S.A. +004049 Roche Diagnostics International Ltd. +00404a WEST AUSTRALIAN DEPARTMENT +00404b MAPLE COMPUTER SYSTEMS +00404c HYPERTEC PTY LTD. +00404d TELECOMMUNICATIONS TECHNIQUES +00404e FLUENT, INC. +00404f SPACE & NAVAL WARFARE SYSTEMS +004050 IRONICS, INCORPORATED +004051 Garbee and Garbee +004052 STAR TECHNOLOGIES, INC. +004053 AMPRO COMPUTERS +004054 CONNECTION MACHINES SERVICES +004055 METRONIX GMBH +004056 MCM JAPAN LTD. +004057 LOCKHEED - SANDERS +004058 KRONOS, INC. +004059 YOSHIDA KOGYO K. K. +00405a GOLDSTAR INFORMATION & COMM. +00405b FUNASSET LIMITED +00405c FUTURE SYSTEMS, INC. +00405d STAR-TEK, INC. +00405e NORTH HILLS ISRAEL +00405f AFE COMPUTERS LTD. +004060 COMENDEC LTD +004061 DATATECH ENTERPRISES CO., LTD. +004062 E-SYSTEMS, INC./GARLAND DIV. +004063 VIA TECHNOLOGIES, INC. +004064 KLA INSTRUMENTS CORPORATION +004065 GTE SPACENET +004066 APRESIA Systems Ltd +004067 OMNIBYTE CORPORATION +004068 EXTENDED SYSTEMS +004069 LEMCOM SYSTEMS, INC. +00406a KENTEK INFORMATION SYSTEMS,INC +00406b SYSGEN +00406c COPERNIQUE +00406d LANCO, INC. +00406e COROLLARY, INC. +00406f SYNC RESEARCH INC. +004070 INTERWARE CO., LTD. +004071 ATM COMPUTER GMBH +004072 Applied Innovation Inc. +004073 BASS ASSOCIATES +004074 CABLE AND WIRELESS +004075 Tattile SRL +004076 Sun Conversion Technologies +004077 MAXTON TECHNOLOGY CORPORATION +004078 WEARNES AUTOMATION PTE LTD +004079 JUKO MANUFACTURE COMPANY, LTD. +00407a SOCIETE D'EXPLOITATION DU CNIT +00407b SCIENTIFIC ATLANTA +00407c QUME CORPORATION +00407d EXTENSION TECHNOLOGY CORP. +00407e EVERGREEN SYSTEMS, INC. +00407f FLIR Systems +004080 ATHENIX CORPORATION +004081 MANNESMANN SCANGRAPHIC GMBH +004082 LABORATORY EQUIPMENT CORP. +004083 TDA INDUSTRIA DE PRODUTOS +004084 Honeywell International HPS +004085 SAAB INSTRUMENTS AB +004086 MICHELS & KLEBERHOFF COMPUTER +004087 UBITREX CORPORATION +004088 MOBIUS TECHNOLOGIES, INC. +004089 MEIDENSHA CORPORATION +00408a TPS TELEPROCESSING SYS. GMBH +00408b RAYLAN CORPORATION +00408c AXIS COMMUNICATIONS AB +00408d THE GOODYEAR TIRE & RUBBER CO. +00408e Tattile SRL +00408f WM-DATA MINFO AB +004090 ANSEL COMMUNICATIONS +004091 PROCOMP INDUSTRIA ELETRONICA +004092 ASP COMPUTER PRODUCTS, INC. +004093 PAXDATA NETWORKS LTD. +004094 SHOGRAPHICS, INC. +004095 R.P.T. INTERGROUPS INT'L LTD. +004096 Cisco Systems, Inc +004097 DATEX DIVISION OF +004098 DRESSLER GMBH & CO. +004099 NEWGEN SYSTEMS CORP. +00409a NETWORK EXPRESS, INC. +00409b HAL COMPUTER SYSTEMS INC. +00409c TRANSWARE +00409d DigiBoard +00409e CONCURRENT TECHNOLOGIES LTD. +00409f Telco Systems, Inc. +0040a0 GOLDSTAR CO., LTD. +0040a1 ERGO COMPUTING +0040a2 KINGSTAR TECHNOLOGY INC. +0040a3 MICROUNITY SYSTEMS ENGINEERING +0040a4 ROSE ELECTRONICS +0040a5 CLINICOMP INTL. +0040a6 Cray, Inc. +0040a7 ITAUTEC PHILCO S.A. +0040a8 IMF INTERNATIONAL LTD. +0040a9 DATACOM INC. +0040aa Valmet Automation +0040ab ROLAND DG CORPORATION +0040ac SUPER WORKSTATION, INC. +0040ad SMA REGELSYSTEME GMBH +0040ae DELTA CONTROLS, INC. +0040af DIGITAL PRODUCTS, INC. +0040b0 BYTEX CORPORATION, ENGINEERING +0040b1 CODONICS INC. +0040b2 SYSTEMFORSCHUNG +0040b3 ParTech Inc. +0040b4 NEXTCOM K.K. +0040b5 VIDEO TECHNOLOGY COMPUTERS LTD +0040b6 COMPUTERM CORPORATION +0040b7 STEALTH COMPUTER SYSTEMS +0040b8 IDEA ASSOCIATES +0040b9 MACQ ELECTRONIQUE SA +0040ba ALLIANT COMPUTER SYSTEMS CORP. +0040bb GOLDSTAR CABLE CO., LTD. +0040bc ALGORITHMICS LTD. +0040bd STARLIGHT NETWORKS, INC. +0040be BOEING DEFENSE & SPACE +0040bf CHANNEL SYSTEMS INTERN'L INC. +0040c0 VISTA CONTROLS CORPORATION +0040c1 BIZERBA-WERKE WILHEIM KRAUT +0040c2 APPLIED COMPUTING DEVICES +0040c3 FISCHER AND PORTER CO. +0040c4 KINKEI SYSTEM CORPORATION +0040c5 MICOM COMMUNICATIONS INC. +0040c6 FIBERNET RESEARCH, INC. +0040c7 RUBY TECH CORPORATION +0040c8 MILAN TECHNOLOGY CORPORATION +0040c9 NCUBE +0040ca FIRST INTERNAT'L COMPUTER, INC +0040cb LANWAN TECHNOLOGIES +0040cc SILCOM MANUF'G TECHNOLOGY INC. +0040cd TERA MICROSYSTEMS, INC. +0040ce NET-SOURCE, INC. +0040cf STRAWBERRY TREE, INC. +0040d0 MITAC INTERNATIONAL CORP. +0040d1 FUKUDA DENSHI CO., LTD. +0040d2 PAGINE CORPORATION +0040d3 KIMPSION INTERNATIONAL CORP. +0040d4 GAGE TALKER CORP. +0040d5 Sartorius Mechatronics T&H GmbH +0040d6 LOCAMATION B.V. +0040d7 STUDIO GEN INC. +0040d8 OCEAN OFFICE AUTOMATION LTD. +0040d9 AMERICAN MEGATRENDS INC. +0040da TELSPEC LTD +0040db ADVANCED TECHNICAL SOLUTIONS +0040dc TRITEC ELECTRONIC GMBH +0040dd HONG TECHNOLOGIES +0040de Elsag Datamat spa +0040df DIGALOG SYSTEMS, INC. +0040e0 ATOMWIDE LTD. +0040e1 MARNER INTERNATIONAL, INC. +0040e2 MESA RIDGE TECHNOLOGIES, INC. +0040e3 QUIN SYSTEMS LTD +0040e4 E-M TECHNOLOGY, INC. +0040e5 SYBUS CORPORATION +0040e6 C.A.E.N. +0040e7 ARNOS INSTRUMENTS & COMPUTER +0040e8 CHARLES RIVER DATA SYSTEMS,INC +0040e9 ACCORD SYSTEMS, INC. +0040ea PLAIN TREE SYSTEMS INC +0040eb MARTIN MARIETTA CORPORATION +0040ec MIKASA SYSTEM ENGINEERING +0040ed NETWORK CONTROLS INT'NATL INC. +0040ee OPTIMEM +0040ef HYPERCOM, INC. +0040f0 MicroBrain,Inc. +0040f1 CHUO ELECTRONICS CO., LTD. +0040f2 JANICH & KLASS COMPUTERTECHNIK +0040f3 NETCOR +0040f4 CAMEO COMMUNICATIONS, INC. +0040f5 OEM ENGINES +0040f6 KATRON COMPUTERS INC. +0040f7 Polaroid Corporation +0040f8 SYSTEMHAUS DISCOM +0040f9 COMBINET +0040fa MICROBOARDS, INC. +0040fb CASCADE COMMUNICATIONS +0040fc IBR COMPUTER TECHNIK GMBH +0040fd LXE +0040fe SYMPLEX COMMUNICATIONS +0040ff TELEBIT CORPORATION +0041b4 Wuxi Zhongxing Optoelectronics Technology Co.,Ltd. +0041d2 Cisco Systems, Inc +004252 RLX Technologies +00425a Cisco Systems, Inc +004268 Cisco Systems, Inc +004279 Sunitec Enterprise Co.,Ltd +0043ff KETRON S.R.L. +004501 Midmark RTLS +00451d Cisco Systems, Inc +00464b HUAWEI TECHNOLOGIES CO.,LTD +004a77 zte corporation +004bf3 SHENZHEN MERCURY COMMUNICATION TECHNOLOGIES CO.,LTD. +004d32 Andon Health Co.,Ltd. +004e01 Dell Inc. +004e35 Hewlett Packard Enterprise +005000 NEXO COMMUNICATIONS, INC. +005001 YAMASHITA SYSTEMS CORP. +005002 OMNISEC AG +005003 Xrite Inc +005004 3COM +005006 TAC AB +005007 SIEMENS TELECOMMUNICATION SYSTEMS LIMITED +005008 TIVA MICROCOMPUTER CORP. (TMC) +005009 PHILIPS BROADBAND NETWORKS +00500a IRIS TECHNOLOGIES, INC. +00500b Cisco Systems, Inc +00500c e-Tek Labs, Inc. +00500d SATORI ELECTORIC CO., LTD. +00500e CHROMATIS NETWORKS, INC. +00500f Cisco Systems, Inc +005010 NovaNET Learning, Inc. +005012 CBL - GMBH +005013 Seagate Cloud Systems Inc +005014 Cisco Systems, Inc +005015 BRIGHT STAR ENGINEERING +005016 Molex Canada Ltd +005017 RSR S.R.L. +005018 AMIT, Inc. +005019 SPRING TIDE NETWORKS, INC. +00501a IQinVision +00501b ABL CANADA, INC. +00501c JATOM SYSTEMS, INC. +00501e Grass Valley, A Belden Brand +00501f MRG SYSTEMS, LTD. +005020 MEDIASTAR CO., LTD. +005021 EIS INTERNATIONAL, INC. +005022 ZONET TECHNOLOGY, INC. +005023 PG DESIGN ELECTRONICS, INC. +005024 NAVIC SYSTEMS, INC. +005026 COSYSTEMS, INC. +005027 GENICOM CORPORATION +005028 AVAL COMMUNICATIONS +005029 1394 PRINTER WORKING GROUP +00502a Cisco Systems, Inc +00502b GENRAD LTD. +00502c SOYO COMPUTER, INC. +00502d ACCEL, INC. +00502e CAMBEX CORPORATION +00502f TollBridge Technologies, Inc. +005030 FUTURE PLUS SYSTEMS +005031 AEROFLEX LABORATORIES, INC. +005032 PICAZO COMMUNICATIONS, INC. +005033 MAYAN NETWORKS +005036 NETCAM, LTD. +005037 KOGA ELECTRONICS CO. +005038 DAIN TELECOM CO., LTD. +005039 MARINER NETWORKS +00503a DATONG ELECTRONICS LTD. +00503b MEDIAFIRE CORPORATION +00503c TSINGHUA NOVEL ELECTRONICS +00503e Cisco Systems, Inc +00503f ANCHOR GAMES +005040 Panasonic Electric Works Co., Ltd. +005041 Coretronic Corporation +005042 SCI MANUFACTURING SINGAPORE PTE, LTD. +005043 MARVELL SEMICONDUCTOR, INC. +005044 ASACA CORPORATION +005045 RIOWORKS SOLUTIONS, INC. +005046 MENICX INTERNATIONAL CO., LTD. +005047 Private +005048 INFOLIBRIA +005049 Arbor Networks Inc +00504a ELTECO A.S. +00504b BARCONET N.V. +00504c Galil Motion Control +00504d Tokyo Electron Device Limited +00504e SIERRA MONITOR CORP. +00504f OLENCOM ELECTRONICS +005050 Cisco Systems, Inc +005051 IWATSU ELECTRIC CO., LTD. +005052 TIARA NETWORKS, INC. +005053 Cisco Systems, Inc +005054 Cisco Systems, Inc +005055 DOMS A/S +005056 VMware, Inc. +005057 BROADBAND ACCESS SYSTEMS +005058 Sangoma Technologies +005059 iBAHN +00505a NETWORK ALCHEMY, INC. +00505b KAWASAKI LSI U.S.A., INC. +00505c TUNDO CORPORATION +00505e DIGITEK MICROLOGIC S.A. +00505f BRAND INNOVATORS +005060 TANDBERG TELECOM AS +005062 KOUWELL ELECTRONICS CORP. ** +005063 OY COMSEL SYSTEM AB +005064 CAE ELECTRONICS +005065 TDK-Lambda Corporation +005066 AtecoM GmbH advanced telecomunication modules +005067 AEROCOMM, INC. +005068 ELECTRONIC INDUSTRIES ASSOCIATION +005069 PixStream Incorporated +00506a EDEVA, INC. +00506b SPX-ATEG +00506c Beijer Electronics Products AB +00506d VIDEOJET SYSTEMS +00506e CORDER ENGINEERING CORPORATION +00506f G-CONNECT +005070 CHAINTECH COMPUTER CO., LTD. +005071 AIWA CO., LTD. +005072 CORVIS CORPORATION +005073 Cisco Systems, Inc +005074 ADVANCED HI-TECH CORP. +005075 KESTREL SOLUTIONS +005076 IBM Corp +005077 PROLIFIC TECHNOLOGY, INC. +005078 MEGATON HOUSE, LTD. +005079 Private +00507a XPEED, INC. +00507b MERLOT COMMUNICATIONS +00507c VIDEOCON AG +00507d IFP +00507e NEWER TECHNOLOGY +00507f DrayTek Corp. +005080 Cisco Systems, Inc +005081 MURATA MACHINERY, LTD. +005082 FORESSON CORPORATION +005083 GILBARCO, INC. +005084 ATL PRODUCTS +005086 TELKOM SA, LTD. +005087 TERASAKI ELECTRIC CO., LTD. +005088 AMANO CORPORATION +005089 SAFETY MANAGEMENT SYSTEMS +00508b Hewlett Packard +00508c RSI SYSTEMS +00508d ABIT COMPUTER CORPORATION +00508e OPTIMATION, INC. +00508f ASITA TECHNOLOGIES INT'L LTD. +005090 DCTRI +005091 NETACCESS, INC. +005092 Rigaku Corporation Osaka Plant +005093 BOEING +005094 ARRIS Group, Inc. +005095 PERACOM NETWORKS +005096 SALIX TECHNOLOGIES, INC. +005097 MMC-EMBEDDED COMPUTERTECHNIK GmbH +005098 GLOBALOOP, LTD. +005099 3COM EUROPE LTD +00509a TAG ELECTRONIC SYSTEMS +00509b SWITCHCORE AB +00509c BETA RESEARCH +00509d THE INDUSTREE B.V. +00509e Les Technologies SoftAcoustik Inc. +00509f HORIZON COMPUTER +0050a0 DELTA COMPUTER SYSTEMS, INC. +0050a1 CARLO GAVAZZI, INC. +0050a2 Cisco Systems, Inc +0050a3 TransMedia Communications, Inc. +0050a4 IO TECH, INC. +0050a5 CAPITOL BUSINESS SYSTEMS, LTD. +0050a6 OPTRONICS +0050a7 Cisco Systems, Inc +0050a8 OpenCon Systems, Inc. +0050a9 MOLDAT WIRELESS TECHNOLGIES +0050aa KONICA MINOLTA HOLDINGS, INC. +0050ab NALTEC, Inc. +0050ac MAPLE COMPUTER CORPORATION +0050ad CommUnique Wireless Corp. +0050ae FDK Co., Ltd +0050af INTERGON, INC. +0050b0 TECHNOLOGY ATLANTA CORPORATION +0050b1 GIDDINGS & LEWIS +0050b2 BRODEL GmbH +0050b3 VOICEBOARD CORPORATION +0050b4 SATCHWELL CONTROL SYSTEMS, LTD +0050b5 FICHET SECURITE ELECTRONIQUE +0050b6 GOOD WAY IND. CO., LTD. +0050b7 BOSER TECHNOLOGY CO., LTD. +0050b8 INOVA COMPUTERS GMBH & CO. KG +0050b9 XITRON TECHNOLOGIES, INC. +0050ba D-Link Corporation +0050bb CMS TECHNOLOGIES +0050bc HAMMER STORAGE SOLUTIONS +0050bd Cisco Systems, Inc +0050be FAST MULTIMEDIA AG +0050bf Metalligence Technology Corp. +0050c0 GATAN, INC. +0050c1 GEMFLEX NETWORKS, LTD. +0050c2 IEEE Registration Authority +0050c4 IMD +0050c5 ADS Technologies, Inc +0050c6 LOOP TELECOMMUNICATION INTERNATIONAL, INC. +0050c7 Private +0050c8 Addonics Technologies, Inc. +0050c9 MASPRO DENKOH CORP. +0050ca NET TO NET TECHNOLOGIES +0050cb JETTER +0050cc Seagate Cloud Systems Inc +0050cd DIGIANSWER A/S +0050ce LG INTERNATIONAL CORP. +0050cf VANLINK COMMUNICATION TECHNOLOGY RESEARCH INSTITUTE +0050d0 MINERVA SYSTEMS +0050d1 Cisco Systems, Inc +0050d2 CMC Electronics Inc +0050d3 DIGITAL AUDIO PROCESSING PTY. LTD. +0050d4 JOOHONG INFORMATION & +0050d5 AD SYSTEMS CORP. +0050d6 ATLAS COPCO TOOLS AB +0050d7 TELSTRAT +0050d8 UNICORN COMPUTER CORP. +0050d9 ENGETRON-ENGENHARIA ELETRONICA IND. e COM. LTDA +0050da 3COM +0050db CONTEMPORARY CONTROL +0050dc TAS TELEFONBAU A. SCHWABE GMBH & CO. KG +0050dd SERRA SOLDADURA, S.A. +0050de SIGNUM SYSTEMS CORP. +0050df AirFiber, Inc. +0050e1 NS TECH ELECTRONICS SDN BHD +0050e2 Cisco Systems, Inc +0050e3 ARRIS Group, Inc. +0050e4 Apple, Inc. +0050e6 HAKUSAN CORPORATION +0050e7 PARADISE INNOVATIONS (ASIA) +0050e8 NOMADIX INC. +0050ea XEL COMMUNICATIONS, INC. +0050eb ALPHA-TOP CORPORATION +0050ec OLICOM A/S +0050ed ANDA NETWORKS +0050ee TEK DIGITEL CORPORATION +0050ef SPE Systemhaus GmbH +0050f0 Cisco Systems, Inc +0050f1 Intel Corporation +0050f2 MICROSOFT CORP. +0050f3 GLOBAL NET INFORMATION CO., Ltd. +0050f4 SIGMATEK GMBH & CO. KG +0050f6 PAN-INTERNATIONAL INDUSTRIAL CORP. +0050f7 VENTURE MANUFACTURING (SINGAPORE) LTD. +0050f8 ENTREGA TECHNOLOGIES, INC. +0050f9 Sensormatic Electronics LLC +0050fa OXTEL, LTD. +0050fb VSK ELECTRONICS +0050fc Edimax Technology Co. Ltd. +0050fd VISIONCOMM CO., LTD. +0050fe PCTVnet ASA +0050ff HAKKO ELECTRONICS CO., LTD. +0051ed LG Innotek +005218 Wuxi Keboda Electron Co.Ltd +0052c2 peiker acustic GmbH +00549f Avaya Inc +0054af Continental Automotive Systems Inc. +0054bd Swelaser AB +0055da IEEE Registration Authority +00562b Cisco Systems, Inc +0056cd Apple, Inc. +0057c1 LG Electronics (Mobile Communications) +0057d2 Cisco Systems, Inc +00583f PC Aquarius +005907 LenovoEMC Products USA, LLC +005979 Networked Energy Services +0059ac KPN. B.V. +0059dc Cisco Systems, Inc +005a13 HUAWEI TECHNOLOGIES CO.,LTD +005a39 SHENZHEN FAST TECHNOLOGIES CO.,LTD +005b94 Apple, Inc. +005ba1 shanghai huayuan chuangxin software CO., LTD. +005c86 SHENZHEN FAST TECHNOLOGIES CO.,LTD +005cb1 Gospell DIGITAL TECHNOLOGY CO., LTD +005d03 Xilinx, Inc +005d73 Cisco Systems, Inc +005f86 Cisco Systems, Inc +006000 XYCOM INC. +006001 InnoSys, Inc. +006002 SCREEN SUBTITLING SYSTEMS, LTD +006003 TERAOKA WEIGH SYSTEM PTE, LTD. +006004 COMPUTADORES MODULARES SA +006005 FEEDBACK DATA LTD. +006006 SOTEC CO., LTD +006007 ACRES GAMING, INC. +006008 3COM +006009 Cisco Systems, Inc +00600a SORD COMPUTER CORPORATION +00600b LOGWARE GmbH +00600c Eurotech Inc. +00600d Digital Logic GmbH +00600e WAVENET INTERNATIONAL, INC. +00600f Westell Technologies Inc. +006010 NETWORK MACHINES, INC. +006011 CRYSTAL SEMICONDUCTOR CORP. +006012 POWER COMPUTING CORPORATION +006013 NETSTAL MASCHINEN AG +006014 EDEC CO., LTD. +006015 NET2NET CORPORATION +006016 CLARIION +006017 TOKIMEC INC. +006018 STELLAR ONE CORPORATION +006019 Roche Diagnostics +00601a KEITHLEY INSTRUMENTS +00601b MESA ELECTRONICS +00601c TELXON CORPORATION +00601d LUCENT TECHNOLOGIES +00601e SOFTLAB, INC. +00601f STALLION TECHNOLOGIES +006020 PIVOTAL NETWORKING, INC. +006021 DSC CORPORATION +006022 VICOM SYSTEMS, INC. +006023 PERICOM SEMICONDUCTOR CORP. +006024 GRADIENT TECHNOLOGIES, INC. +006025 ACTIVE IMAGING PLC +006026 VIKING Modular Solutions +006027 Superior Modular Products +006028 MACROVISION CORPORATION +006029 CARY PERIPHERALS INC. +00602a SYMICRON COMPUTER COMMUNICATIONS, LTD. +00602b PEAK AUDIO +00602c LINX Data Terminals, Inc. +00602d ALERTON TECHNOLOGIES, INC. +00602e CYCLADES CORPORATION +00602f Cisco Systems, Inc +006030 VILLAGE TRONIC ENTWICKLUNG +006031 HRK SYSTEMS +006032 I-CUBE, INC. +006033 ACUITY IMAGING, INC. +006034 ROBERT BOSCH GmbH +006035 DALLAS SEMICONDUCTOR, INC. +006036 AIT Austrian Institute of Technology GmbH +006037 NXP Semiconductors +006038 Nortel Networks +006039 SanCom Technology, Inc. +00603a QUICK CONTROLS LTD. +00603b AMTEC spa +00603c HAGIWARA SYS-COM CO., LTD. +00603d 3CX +00603e Cisco Systems, Inc +00603f PATAPSCO DESIGNS +006040 NETRO CORP. +006041 Yokogawa Digital Computer Corporation +006042 TKS (USA), INC. +006043 iDirect, INC. +006044 LITTON/POLY-SCIENTIFIC +006045 PATHLIGHT TECHNOLOGIES +006046 VMETRO, INC. +006047 Cisco Systems, Inc +006048 Dell EMC +006049 VINA TECHNOLOGIES +00604a SAIC IDEAS GROUP +00604b Safe-com GmbH & Co. KG +00604c Sagemcom Broadband SAS +00604d MMC NETWORKS, INC. +00604e CYCLE COMPUTER CORPORATION, INC. +00604f Tattile SRL +006050 INTERNIX INC. +006051 QUALITY SEMICONDUCTOR +006052 PERIPHERALS ENTERPRISE CO., Ltd. +006053 TOYODA MACHINE WORKS, LTD. +006054 CONTROLWARE GMBH +006055 CORNELL UNIVERSITY +006056 NETWORK TOOLS, INC. +006057 Murata Manufacturing Co., Ltd. +006058 COPPER MOUNTAIN COMMUNICATIONS, INC. +006059 TECHNICAL COMMUNICATIONS CORP. +00605a CELCORE, INC. +00605b IntraServer Technology, Inc. +00605c Cisco Systems, Inc +00605d SCANIVALVE CORP. +00605e LIBERTY TECHNOLOGY NETWORKING +00605f NIPPON UNISOFT CORPORATION +006060 Data Innovations North America +006061 WHISTLE COMMUNICATIONS CORP. +006062 TELESYNC, INC. +006063 PSION DACOM PLC. +006064 NETCOMM LIMITED +006065 BERNECKER & RAINER INDUSTRIE-ELEKTRONIC GmbH +006066 LACROIX Trafic +006067 ACER NETXUS INC. +006068 Dialogic Corporation +006069 Brocade Communications Systems, Inc. +00606a MITSUBISHI WIRELESS COMMUNICATIONS. INC. +00606b Synclayer Inc. +00606c ARESCOM +00606d DIGITAL EQUIPMENT CORP. +00606e DAVICOM SEMICONDUCTOR, INC. +00606f CLARION CORPORATION OF AMERICA +006070 Cisco Systems, Inc +006071 MIDAS LAB, INC. +006072 VXL INSTRUMENTS, LIMITED +006073 REDCREEK COMMUNICATIONS, INC. +006074 QSC LLC +006075 PENTEK, INC. +006076 SCHLUMBERGER TECHNOLOGIES RETAIL PETROLEUM SYSTEMS +006077 PRISA NETWORKS +006078 POWER MEASUREMENT LTD. +006079 Mainstream Data, Inc. +00607a DVS GMBH +00607b FORE SYSTEMS, INC. +00607c WaveAccess, Ltd. +00607d SENTIENT NETWORKS INC. +00607e GIGALABS, INC. +00607f AURORA TECHNOLOGIES, INC. +006080 MICROTRONIX DATACOM LTD. +006081 TV/COM INTERNATIONAL +006082 NOVALINK TECHNOLOGIES, INC. +006083 Cisco Systems, Inc +006084 DIGITAL VIDEO +006085 Storage Concepts +006086 LOGIC REPLACEMENT TECH. LTD. +006087 KANSAI ELECTRIC CO., LTD. +006088 Analog Devices, Inc. +006089 XATA +00608a CITADEL COMPUTER +00608b ConferTech International +00608c 3COM +00608d UNIPULSE CORP. +00608e HE ELECTRONICS, TECHNOLOGIE & SYSTEMTECHNIK GmbH +00608f TEKRAM TECHNOLOGY CO., LTD. +006090 Artiza Networks Inc +006091 FIRST PACIFIC NETWORKS, INC. +006092 MICRO/SYS, INC. +006093 VARIAN +006094 IBM Corp +006095 ACCU-TIME SYSTEMS, INC. +006096 T.S. MICROTECH INC. +006097 3COM +006098 HT COMMUNICATIONS +006099 SBE, Inc. +00609a NJK TECHNO CO. +00609b AstroNova, Inc +00609c Perkin-Elmer Incorporated +00609d PMI FOOD EQUIPMENT GROUP +00609e ASC X3 - INFORMATION TECHNOLOGY STANDARDS SECRETARIATS +00609f PHAST CORPORATION +0060a0 SWITCHED NETWORK TECHNOLOGIES, INC. +0060a1 VPNet, Inc. +0060a2 NIHON UNISYS LIMITED CO. +0060a3 CONTINUUM TECHNOLOGY CORP. +0060a4 GEW Technologies (PTY)Ltd +0060a5 PERFORMANCE TELECOM CORP. +0060a6 PARTICLE MEASURING SYSTEMS +0060a7 MICROSENS GmbH & CO. KG +0060a8 TIDOMAT AB +0060a9 GESYTEC MBH +0060aa INTELLIGENT DEVICES INC. (IDI) +0060ab LARSCOM INCORPORATED +0060ac RESILIENCE CORPORATION +0060ad MegaChips Corporation +0060ae TRIO INFORMATION SYSTEMS AB +0060af PACIFIC MICRO DATA, INC. +0060b0 Hewlett Packard +0060b1 Input/Output, Inc. +0060b2 PROCESS CONTROL CORP. +0060b3 Z-COM, INC. +0060b4 GLENAYRE R&D INC. +0060b5 KEBA GmbH +0060b6 LAND COMPUTER CO., LTD. +0060b7 CHANNELMATIC, INC. +0060b8 CORELIS Inc. +0060b9 NEC Platforms, Ltd +0060ba SAHARA NETWORKS, INC. +0060bb Cabletron Systems, Inc. +0060bc KeunYoung Electronics & Communication Co., Ltd. +0060bd Enginuity Communications +0060be WEBTRONICS +0060bf MACRAIGOR SYSTEMS, INC. +0060c0 Nera Networks AS +0060c1 WaveSpan Corporation +0060c2 MPL AG +0060c3 NETVISION CORPORATION +0060c4 SOLITON SYSTEMS K.K. +0060c5 ANCOT CORP. +0060c6 DCS AG +0060c7 AMATI COMMUNICATIONS CORP. +0060c8 KUKA WELDING SYSTEMS & ROBOTS +0060c9 ControlNet, Inc. +0060ca HARMONIC SYSTEMS INCORPORATED +0060cb HITACHI ZOSEN CORPORATION +0060cc EMTRAK, INCORPORATED +0060cd VideoServer, Inc. +0060ce ACCLAIM COMMUNICATIONS +0060cf ALTEON NETWORKS, INC. +0060d0 SNMP RESEARCH INCORPORATED +0060d1 CASCADE COMMUNICATIONS +0060d2 LUCENT TECHNOLOGIES TAIWAN TELECOMMUNICATIONS CO., LTD. +0060d3 AT&T +0060d4 ELDAT COMMUNICATION LTD. +0060d5 AMADA MIYACHI Co., Ltd +0060d6 NovAtel Inc. +0060d7 ECOLE POLYTECHNIQUE FEDERALE DE LAUSANNE (EPFL) +0060d8 ELMIC SYSTEMS, INC. +0060d9 TRANSYS NETWORKS INC. +0060da Red Lion Controls, LP +0060db NTP ELEKTRONIK A/S +0060dc NEC Magnus Communications,Ltd. +0060dd MYRICOM, INC. +0060de Kayser-Threde GmbH +0060df Brocade Communications Systems, Inc. +0060e0 AXIOM TECHNOLOGY CO., LTD. +0060e1 ORCKIT COMMUNICATIONS LTD. +0060e2 QUEST ENGINEERING & DEVELOPMENT +0060e3 ARBIN INSTRUMENTS +0060e4 COMPUSERVE, INC. +0060e5 FUJI AUTOMATION CO., LTD. +0060e6 SHOMITI SYSTEMS INCORPORATED +0060e7 RANDATA +0060e8 HITACHI COMPUTER PRODUCTS (AMERICA), INC. +0060e9 ATOP TECHNOLOGIES, INC. +0060ea StreamLogic +0060eb FOURTHTRACK SYSTEMS +0060ec HERMARY OPTO ELECTRONICS INC. +0060ed RICARDO TEST AUTOMATION LTD. +0060ee APOLLO +0060ef FLYTECH TECHNOLOGY CO., LTD. +0060f0 JOHNSON & JOHNSON MEDICAL, INC +0060f1 EXP COMPUTER, INC. +0060f2 LASERGRAPHICS, INC. +0060f3 Performance Analysis Broadband, Spirent plc +0060f4 ADVANCED COMPUTER SOLUTIONS, Inc. +0060f5 ICON WEST, INC. +0060f6 NEXTEST COMMUNICATIONS PRODUCTS, INC. +0060f7 DATAFUSION SYSTEMS +0060f8 Loran International Technologies Inc. +0060f9 DIAMOND LANE COMMUNICATIONS +0060fa EDUCATIONAL TECHNOLOGY RESOURCES, INC. +0060fb PACKETEER, INC. +0060fc CONSERVATION THROUGH INNOVATION LTD. +0060fd NetICs, Inc. +0060fe LYNX SYSTEM DEVELOPERS, INC. +0060ff QuVis, Inc. +006171 Apple, Inc. +0062ec Cisco Systems, Inc +006440 Cisco Systems, Inc +0064a6 Maquet CardioVascular +00664b HUAWEI TECHNOLOGIES CO.,LTD +006762 Fiberhome Telecommunication Technologies Co.,LTD +006b8e Shanghai Feixun Communication Co.,Ltd. +006b9e Vizio, Inc +006ba0 SHENZHEN UNIVERSAL INTELLISYS PTE LTD +006bf1 Cisco Systems, Inc +006cbc Cisco Systems, Inc +006cfd Sichuan Changhong Electric Ltd. +006d52 Apple, Inc. +006d61 Guangzhou V-SOLUTION Electronic Technology Co., Ltd. +006dfb Vutrix Technologies Ltd +006f64 Samsung Electronics Co.,Ltd +006ff2 MITSUMI ELECTRIC CO.,LTD. +0070b0 M/A-COM INC. COMPANIES +0070b3 DATA RECALL LTD. +007147 Amazon Technologies Inc. +0071c2 PEGATRON CORPORATION +0071cc Hon Hai Precision Ind. Co.,Ltd. +007204 Samsung Electronics Co., Ltd. ARTIK +007263 Netcore Technology Inc. +007278 Cisco Systems, Inc +00738d Shenzhen TINNO Mobile Technology Corp. +0073e0 Samsung Electronics Co.,Ltd +00749c Ruijie Networks Co.,LTD +007532 INID BV +0075e1 Ampt, LLC +007686 Cisco Systems, Inc +0076b1 Somfy-Protect By Myfox SAS +00778d Cisco Systems, Inc +0077e4 Nokia +007888 Cisco Systems, Inc +00789e Sagemcom Broadband SAS +0078cd Ignition Design Labs +007b18 SENTRY Co., LTD. +007c2d Samsung Electronics Co.,Ltd +007dfa Volkswagen Group of America +007e56 China Dragon Technology Limited +007e95 Cisco Systems, Inc +007f28 Actiontec Electronics, Inc +008000 MULTITECH SYSTEMS, INC. +008001 PERIPHONICS CORPORATION +008002 SATELCOM (UK) LTD +008003 HYTEC ELECTRONICS LTD. +008004 ANTLOW COMMUNICATIONS, LTD. +008005 CACTUS COMPUTER INC. +008006 COMPUADD CORPORATION +008007 DLOG NC-SYSTEME +008008 DYNATECH COMPUTER SYSTEMS +008009 JUPITER SYSTEMS, INC. +00800a JAPAN COMPUTER CORP. +00800b CSK CORPORATION +00800c VIDECOM LIMITED +00800d VOSSWINKEL F.U. +00800e ATLANTIX CORPORATION +00800f STANDARD MICROSYSTEMS +008010 COMMODORE INTERNATIONAL +008011 DIGITAL SYSTEMS INT'L. INC. +008012 INTEGRATED MEASUREMENT SYSTEMS +008013 THOMAS-CONRAD CORPORATION +008014 ESPRIT SYSTEMS +008015 SEIKO SYSTEMS, INC. +008016 WANDEL AND GOLTERMANN +008017 PFU LIMITED +008018 KOBE STEEL, LTD. +008019 DAYNA COMMUNICATIONS, INC. +00801a BELL ATLANTIC +00801b KODIAK TECHNOLOGY +00801c NEWPORT SYSTEMS SOLUTIONS +00801d INTEGRATED INFERENCE MACHINES +00801e XINETRON, INC. +00801f KRUPP ATLAS ELECTRONIK GMBH +008020 NETWORK PRODUCTS +008021 Alcatel Canada Inc. +008022 SCAN-OPTICS +008023 INTEGRATED BUSINESS NETWORKS +008024 KALPANA, INC. +008025 Telit Wireless Solutions GmbH +008026 NETWORK PRODUCTS CORPORATION +008027 ADAPTIVE SYSTEMS, INC. +008028 TRADPOST (HK) LTD +008029 EAGLE TECHNOLOGY, INC. +00802a TEST SYSTEMS & SIMULATIONS INC +00802b INTEGRATED MARKETING CO +00802c THE SAGE GROUP PLC +00802d XYLOGICS INC +00802e CASTLE ROCK COMPUTING +00802f NATIONAL INSTRUMENTS CORP. +008030 NEXUS ELECTRONICS +008031 BASYS, CORP. +008032 ACCESS CO., LTD. +008033 EMS Aviation, Inc. +008034 SMT GOUPIL +008035 TECHNOLOGY WORKS, INC. +008036 REFLEX MANUFACTURING SYSTEMS +008037 Ericsson Group +008038 DATA RESEARCH & APPLICATIONS +008039 ALCATEL STC AUSTRALIA +00803a VARITYPER, INC. +00803b APT COMMUNICATIONS, INC. +00803c TVS ELECTRONICS LTD +00803d SURIGIKEN CO., LTD. +00803e SYNERNETICS +00803f TATUNG COMPANY +008040 JOHN FLUKE MANUFACTURING CO. +008041 VEB KOMBINAT ROBOTRON +008042 Artesyn Embedded Technologies +008043 NETWORLD, INC. +008044 SYSTECH COMPUTER CORP. +008045 MATSUSHITA ELECTRIC IND. CO +008046 Tattile SRL +008047 IN-NET CORP. +008048 COMPEX INCORPORATED +008049 NISSIN ELECTRIC CO., LTD. +00804a PRO-LOG +00804b EAGLE TECHNOLOGIES PTY.LTD. +00804c CONTEC CO., LTD. +00804d CYCLONE MICROSYSTEMS, INC. +00804e APEX COMPUTER COMPANY +00804f DAIKIN INDUSTRIES, LTD. +008050 ZIATECH CORPORATION +008051 FIBERMUX +008052 TECHNICALLY ELITE CONCEPTS +008053 INTELLICOM, INC. +008054 FRONTIER TECHNOLOGIES CORP. +008055 FERMILAB +008056 SPHINX Electronics GmbH & Co KG +008057 ADSOFT, LTD. +008058 PRINTER SYSTEMS CORP. +008059 STANLEY ELECTRIC CO., LTD +00805a TULIP COMPUTERS INTERNAT'L B.V +00805b CONDOR SYSTEMS, INC. +00805c AGILIS CORPORATION +00805d CANSTAR +00805e LSI LOGIC CORPORATION +00805f Hewlett Packard +008060 NETWORK INTERFACE CORPORATION +008061 LITTON SYSTEMS, INC. +008062 INTERFACE CO. +008063 Hirschmann Automation and Control GmbH +008064 WYSE TECHNOLOGY LLC +008065 CYBERGRAPHIC SYSTEMS PTY LTD. +008066 ARCOM CONTROL SYSTEMS, LTD. +008067 SQUARE D COMPANY +008068 YAMATECH SCIENTIFIC LTD. +008069 COMPUTONE SYSTEMS +00806a ERI (EMPAC RESEARCH INC.) +00806b SCHMID TELECOMMUNICATION +00806c Secure Systems & Services +00806d CENTURY SYSTEMS CORP. +00806e NIPPON STEEL CORPORATION +00806f ONELAN LTD. +008070 COMPUTADORAS MICRON +008071 SAI TECHNOLOGY +008072 MICROPLEX SYSTEMS LTD. +008073 DWB ASSOCIATES +008074 FISHER CONTROLS +008075 PARSYTEC GMBH +008076 MCNC +008077 Brother industries, LTD. +008078 PRACTICAL PERIPHERALS, INC. +008079 MICROBUS DESIGNS LTD. +00807a AITECH SYSTEMS LTD. +00807b ARTEL COMMUNICATIONS CORP. +00807c FIBERCOM, INC. +00807d EQUINOX SYSTEMS INC. +00807e SOUTHERN PACIFIC LTD. +00807f DY-4 INCORPORATED +008080 DATAMEDIA CORPORATION +008081 KENDALL SQUARE RESEARCH CORP. +008082 PEP MODULAR COMPUTERS GMBH +008083 AMDAHL +008084 THE CLOUD INC. +008085 H-THREE SYSTEMS CORPORATION +008086 COMPUTER GENERATION INC. +008087 OKI ELECTRIC INDUSTRY CO., LTD +008088 VICTOR COMPANY OF JAPAN, LTD. +008089 TECNETICS (PTY) LTD. +00808a SUMMIT MICROSYSTEMS CORP. +00808b DACOLL LIMITED +00808c NetAlly +00808d WESTCOAST TECHNOLOGY B.V. +00808e RADSTONE TECHNOLOGY +00808f C. ITOH ELECTRONICS, INC. +008090 MICROTEK INTERNATIONAL, INC. +008091 TOKYO ELECTRIC CO.,LTD +008092 Silex Technology, Inc. +008093 XYRON CORPORATION +008094 ALFA LAVAL AUTOMATION AB +008095 BASIC MERTON HANDELSGES.M.B.H. +008096 HUMAN DESIGNED SYSTEMS, INC. +008097 CENTRALP AUTOMATISMES +008098 TDK CORPORATION +008099 Eaton Industries GmbH +00809a NOVUS NETWORKS LTD +00809b JUSTSYSTEM CORPORATION +00809c LUXCOM, INC. +00809d Commscraft Ltd. +00809e DATUS GMBH +00809f ALE International +0080a0 Hewlett Packard +0080a1 MICROTEST, INC. +0080a2 CREATIVE ELECTRONIC SYSTEMS +0080a3 Lantronix +0080a4 LIBERTY ELECTRONICS +0080a5 SPEED INTERNATIONAL +0080a6 REPUBLIC TECHNOLOGY, INC. +0080a7 Honeywell International Inc +0080a8 VITACOM CORPORATION +0080a9 CLEARPOINT RESEARCH +0080aa MAXPEED +0080ab DUKANE NETWORK INTEGRATION +0080ac IMLOGIX, DIVISION OF GENESYS +0080ad CNET TECHNOLOGY, INC. +0080ae HUGHES NETWORK SYSTEMS +0080af ALLUMER CO., LTD. +0080b0 ADVANCED INFORMATION +0080b1 SOFTCOM A/S +0080b2 NETWORK EQUIPMENT TECHNOLOGIES +0080b3 AVAL DATA CORPORATION +0080b4 SOPHIA SYSTEMS +0080b5 UNITED NETWORKS INC. +0080b6 Mercury Systems – Trusted Mission Solutions, Inc. +0080b7 STELLAR COMPUTER +0080b8 DMG MORI B.U.G. CO., LTD. +0080b9 ARCHE TECHNOLIGIES INC. +0080ba SPECIALIX (ASIA) PTE, LTD +0080bb HUGHES LAN SYSTEMS +0080bc HITACHI ENGINEERING CO., LTD +0080bd THE FURUKAWA ELECTRIC CO., LTD +0080be ARIES RESEARCH +0080bf TAKAOKA ELECTRIC MFG. CO. LTD. +0080c0 PENRIL DATACOMM +0080c1 LANEX CORPORATION +0080c2 IEEE 802.1 Working Group +0080c3 BICC INFORMATION SYSTEMS & SVC +0080c4 DOCUMENT TECHNOLOGIES, INC. +0080c5 NOVELLCO DE MEXICO +0080c6 NATIONAL DATACOMM CORPORATION +0080c7 XIRCOM +0080c8 D-LINK SYSTEMS, INC. +0080c9 ALBERTA MICROELECTRONIC CENTRE +0080ca NETCOM RESEARCH INCORPORATED +0080cb FALCO DATA PRODUCTS +0080cc MICROWAVE BYPASS SYSTEMS +0080cd MICRONICS COMPUTER, INC. +0080ce BROADCAST TELEVISION SYSTEMS +0080cf EMBEDDED PERFORMANCE INC. +0080d0 COMPUTER PERIPHERALS, INC. +0080d1 KIMTRON CORPORATION +0080d2 SHINNIHONDENKO CO., LTD. +0080d3 SHIVA CORP. +0080d4 CHASE RESEARCH LTD. +0080d5 CADRE TECHNOLOGIES +0080d6 NUVOTECH, INC. +0080d7 Fantum Engineering +0080d8 NETWORK PERIPHERALS INC. +0080d9 EMK Elektronik GmbH & Co. KG +0080da Bruel & Kjaer Sound & Vibration Measurement A/S +0080db GRAPHON CORPORATION +0080dc PICKER INTERNATIONAL +0080dd GMX INC/GIMIX +0080de GIPSI S.A. +0080df ADC CODENOLL TECHNOLOGY CORP. +0080e0 XTP SYSTEMS, INC. +0080e1 STMicroelectronics SRL +0080e2 T.D.I. CO., LTD. +0080e3 CORAL NETWORK CORPORATION +0080e4 NORTHWEST DIGITAL SYSTEMS, INC +0080e5 NetApp +0080e6 PEER NETWORKS, INC. +0080e7 Leonardo Tactical Systems. +0080e8 CUMULUS CORPORATIION +0080e9 Madge Ltd. +0080ea ADVA Optical Networking Ltd. +0080eb COMPCONTROL B.V. +0080ec SUPERCOMPUTING SOLUTIONS, INC. +0080ed IQ TECHNOLOGIES, INC. +0080ee THOMSON CSF +0080ef RATIONAL +0080f0 Panasonic Communications Co., Ltd. +0080f1 OPUS SYSTEMS +0080f2 RAYCOM SYSTEMS INC +0080f3 SUN ELECTRONICS CORP. +0080f4 TELEMECANIQUE ELECTRIQUE +0080f5 Quantel Ltd +0080f6 SYNERGY MICROSYSTEMS +0080f7 Zenith Electronics Corporation +0080f8 MIZAR, INC. +0080f9 HEURIKON CORPORATION +0080fa RWT GMBH +0080fb BVM LIMITED +0080fc AVATAR CORPORATION +0080fd EXSCEED CORPRATION +0080fe AZURE TECHNOLOGIES, INC. +0080ff SOC. DE TELEINFORMATIQUE RTC +0081c4 Cisco Systems, Inc +0081f9 Texas Instruments +0084ed Private +00869c Palo Alto Networks +0086a0 Private +008701 Samsung Electronics Co.,Ltd +008731 Cisco Systems, Inc +008764 Cisco Systems, Inc +008865 Apple, Inc. +008a96 Cisco Systems, Inc +008b43 RFTECH +008bfc mixi,Inc. +008c10 Black Box Corp. +008c54 ADB Broadband Italia +008cfa INVENTEC CORPORATION +008d4e CJSC NII STT +008dda Link One Co., Ltd. +008e73 Cisco Systems, Inc +008ef2 NETGEAR +009000 DIAMOND MULTIMEDIA +009001 NISHIMU ELECTRONICS INDUSTRIES CO., LTD. +009002 ALLGON AB +009003 APLIO +009004 3COM EUROPE LTD +009005 PROTECH SYSTEMS CO., LTD. +009006 Hamamatsu Photonics K.K. +009007 DOMEX TECHNOLOGY CORP. +009008 HanA Systems Inc. +009009 I Controls, Inc. +00900a PROTON ELECTRONIC INDUSTRIAL CO., LTD. +00900b LANNER ELECTRONICS, INC. +00900c Cisco Systems, Inc +00900d Overland Storage Inc. +00900e HANDLINK TECHNOLOGIES, INC. +00900f KAWASAKI HEAVY INDUSTRIES, LTD +009010 SIMULATION LABORATORIES, INC. +009011 WAVTrace, Inc. +009012 GLOBESPAN SEMICONDUCTOR, INC. +009013 SAMSAN CORP. +009014 ROTORK INSTRUMENTS, LTD. +009015 CENTIGRAM COMMUNICATIONS CORP. +009016 ZAC +009017 Zypcom, Inc +009018 ITO ELECTRIC INDUSTRY CO, LTD. +009019 HERMES ELECTRONICS CO., LTD. +00901a UNISPHERE SOLUTIONS +00901b DIGITAL CONTROLS +00901c mps Software Gmbh +00901d PEC (NZ) LTD. +00901e Selesta Ingegneria S.p.A. +00901f ADTEC PRODUCTIONS, INC. +009020 PHILIPS ANALYTICAL X-RAY B.V. +009021 Cisco Systems, Inc +009022 IVEX +009023 ZILOG INC. +009024 PIPELINKS, INC. +009025 BAE Systems Australia (Electronic Systems) Pty Ltd +009026 ADVANCED SWITCHING COMMUNICATIONS, INC. +009027 Intel Corporation +009028 NIPPON SIGNAL CO., LTD. +009029 CRYPTO AG +00902a COMMUNICATION DEVICES, INC. +00902b Cisco Systems, Inc +00902c DATA & CONTROL EQUIPMENT LTD. +00902d DATA ELECTRONICS (AUST.) PTY, LTD. +00902e NAMCO LIMITED +00902f NETCORE SYSTEMS, INC. +009030 HONEYWELL-DATING +009031 MYSTICOM, LTD. +009032 PELCOMBE GROUP LTD. +009033 INNOVAPHONE AG +009034 IMAGIC, INC. +009035 ALPHA TELECOM, INC. +009036 ens, inc. +009037 ACUCOMM, INC. +009038 FOUNTAIN TECHNOLOGIES, INC. +009039 SHASTA NETWORKS +00903a NIHON MEDIA TOOL INC. +00903b TriEMS Research Lab, Inc. +00903c ATLANTIC NETWORK SYSTEMS +00903d BIOPAC SYSTEMS, INC. +00903e N.V. PHILIPS INDUSTRIAL ACTIVITIES +00903f AZTEC RADIOMEDIA +009040 Siemens Network Convergence LLC +009041 APPLIED DIGITAL ACCESS +009042 ECCS, Inc. +009043 Tattile SRL +009044 ASSURED DIGITAL, INC. +009045 Marconi Communications +009046 DEXDYNE, LTD. +009047 GIGA FAST E. LTD. +009048 ZEAL CORPORATION +009049 ENTRIDIA CORPORATION +00904a CONCUR SYSTEM TECHNOLOGIES +00904b Gemtek Technology Co., Ltd. +00904c Epigram, Inc. +00904d SPEC S.A. +00904e DELEM BV +00904f ABB POWER T&D COMPANY, INC. +009050 Teleste Corporation +009051 ULTIMATE TECHNOLOGY CORP. +009052 SELCOM ELETTRONICA S.R.L. +009053 DAEWOO ELECTRONICS CO., LTD. +009054 INNOVATIVE SEMICONDUCTORS, INC +009055 PARKER HANNIFIN CORPORATION COMPUMOTOR DIVISION +009056 TELESTREAM, INC. +009057 AANetcom, Inc. +009058 Ultra Electronics Command & Control Systems +009059 TELECOM DEVICE K.K. +00905a DEARBORN GROUP, INC. +00905b RAYMOND AND LAE ENGINEERING +00905c EDMI +00905d NETCOM SICHERHEITSTECHNIK GMBH +00905e RAULAND-BORG CORPORATION +00905f Cisco Systems, Inc +009060 SYSTEM CREATE CORP. +009061 PACIFIC RESEARCH & ENGINEERING CORPORATION +009062 ICP VORTEX COMPUTERSYSTEME GmbH +009063 COHERENT COMMUNICATIONS SYSTEMS CORPORATION +009064 Thomson Inc. +009065 FINISAR CORPORATION +009066 Troika Networks, Inc. +009067 WalkAbout Computers, Inc. +009068 DVT CORP. +009069 Juniper Networks +00906a TURNSTONE SYSTEMS, INC. +00906b APPLIED RESOURCES, INC. +00906c Sartorius Hamburg GmbH +00906d Cisco Systems, Inc +00906e PRAXON, INC. +00906f Cisco Systems, Inc +009070 NEO NETWORKS, INC. +009071 Applied Innovation Inc. +009072 SIMRAD AS +009073 GAIO TECHNOLOGY +009074 ARGON NETWORKS, INC. +009075 NEC DO BRASIL S.A. +009076 FMT AIRCRAFT GATE SUPPORT SYSTEMS AB +009077 ADVANCED FIBRE COMMUNICATIONS +009078 MER TELEMANAGEMENT SOLUTIONS, LTD. +009079 ClearOne, Inc. +00907a Spectralink, Inc +00907b E-TECH, INC. +00907c DIGITALCAST, INC. +00907d Lake Communications +00907e VETRONIX CORP. +00907f WatchGuard Technologies, Inc. +009080 NOT LIMITED, INC. +009081 ALOHA NETWORKS, INC. +009082 FORCE INSTITUTE +009083 TURBO COMMUNICATION, INC. +009084 ATECH SYSTEM +009085 GOLDEN ENTERPRISES, INC. +009086 Cisco Systems, Inc +009087 ITIS +009088 BAXALL SECURITY LTD. +009089 SOFTCOM MICROSYSTEMS, INC. +00908a BAYLY COMMUNICATIONS, INC. +00908b Tattile SRL +00908c ETREND ELECTRONICS, INC. +00908d VICKERS ELECTRONICS SYSTEMS +00908e Nortel Networks Broadband Access +00908f AUDIO CODES LTD. +009090 I-BUS +009091 DigitalScape, Inc. +009092 Cisco Systems, Inc +009093 EIZO Corporation +009094 OSPREY TECHNOLOGIES, INC. +009095 UNIVERSAL AVIONICS +009096 ASKEY COMPUTER CORP +009097 Sycamore Networks +009098 SBC DESIGNS, INC. +009099 ALLIED TELESIS, K.K. +00909a ONE WORLD SYSTEMS, INC. +00909b MARKEM-IMAJE +00909c ARRIS Group, Inc. +00909d NovaTech Process Solutions, LLC +00909e Critical IO, LLC +00909f DIGI-DATA CORPORATION +0090a0 8X8 INC. +0090a1 Flying Pig Systems/High End Systems Inc. +0090a2 CyberTAN Technology Inc. +0090a3 Corecess Inc. +0090a4 ALTIGA NETWORKS +0090a5 SPECTRA LOGIC +0090a6 Cisco Systems, Inc +0090a7 CLIENTEC CORPORATION +0090a8 NineTiles Networks, Ltd. +0090a9 WESTERN DIGITAL +0090aa INDIGO ACTIVE VISION SYSTEMS LIMITED +0090ab Cisco Systems, Inc +0090ac OPTIVISION, INC. +0090ad ASPECT ELECTRONICS, INC. +0090ae ITALTEL S.p.A/RF-UP-I +0090af J. MORITA MFG. CORP. +0090b0 VADEM +0090b1 Cisco Systems, Inc +0090b2 AVICI SYSTEMS INC. +0090b3 AGRANAT SYSTEMS +0090b4 WILLOWBROOK TECHNOLOGIES +0090b5 NIKON CORPORATION +0090b6 FIBEX SYSTEMS +0090b7 DIGITAL LIGHTWAVE, INC. +0090b8 ROHDE & SCHWARZ GMBH & CO. KG +0090b9 BERAN INSTRUMENTS LTD. +0090ba VALID NETWORKS, INC. +0090bb TAINET COMMUNICATION SYSTEM Corp. +0090bc TELEMANN CO., LTD. +0090bd OMNIA COMMUNICATIONS, INC. +0090be IBC/INTEGRATED BUSINESS COMPUTERS +0090bf Cisco Systems, Inc +0090c0 K.J. LAW ENGINEERS, INC. +0090c1 Peco II, Inc. +0090c2 JK microsystems, Inc. +0090c3 TOPIC SEMICONDUCTOR CORP. +0090c4 JAVELIN SYSTEMS, INC. +0090c5 INTERNET MAGIC, INC. +0090c6 OPTIM SYSTEMS, INC. +0090c7 ICOM INC. +0090c8 WAVERIDER COMMUNICATIONS (CANADA) INC. +0090c9 DPAC Technologies +0090ca ACCORD VIDEO TELECOMMUNICATIONS, LTD. +0090cb Wireless OnLine, Inc. +0090cc PLANEX COMMUNICATIONS INC. +0090cd ENT-EMPRESA NACIONAL DE TELECOMMUNICACOES, S.A. +0090ce avateramedical Mechatronics GmbH +0090cf NORTEL +0090d0 Thomson Telecom Belgium +0090d1 LEICHU ENTERPRISE CO., LTD. +0090d2 ARTEL VIDEO SYSTEMS +0090d3 GIESECKE & DEVRIENT GmbH +0090d4 BindView Development Corp. +0090d5 EUPHONIX, INC. +0090d6 Crystal Group, Inc. +0090d7 NetBoost Corp. +0090d8 WHITECROSS SYSTEMS +0090d9 Cisco Systems, Inc +0090da DYNARC, INC. +0090db NEXT LEVEL COMMUNICATIONS +0090dc TECO INFORMATION SYSTEMS +0090dd MIHARU COMMUNICATIONS Inc +0090de CARDKEY SYSTEMS, INC. +0090df MITSUBISHI CHEMICAL AMERICA, INC. +0090e0 SYSTRAN CORP. +0090e1 TELENA S.P.A. +0090e2 DISTRIBUTED PROCESSING TECHNOLOGY +0090e3 AVEX ELECTRONICS INC. +0090e4 NEC AMERICA, INC. +0090e5 TEKNEMA, INC. +0090e6 ALi Corporation +0090e7 HORSCH ELEKTRONIK AG +0090e8 MOXA TECHNOLOGIES CORP., LTD. +0090e9 JANZ COMPUTER AG +0090ea ALPHA TECHNOLOGIES, INC. +0090eb SENTRY TELECOM SYSTEMS +0090ec PYRESCOM +0090ed CENTRAL SYSTEM RESEARCH CO., LTD. +0090ee PERSONAL COMMUNICATIONS TECHNOLOGIES +0090ef INTEGRIX, INC. +0090f0 Harmonic Video Systems Ltd. +0090f1 Seagate Cloud Systems Inc +0090f2 Cisco Systems, Inc +0090f3 ASPECT COMMUNICATIONS +0090f4 LIGHTNING INSTRUMENTATION +0090f5 CLEVO CO. +0090f6 ESCALATE NETWORKS, INC. +0090f7 NBASE COMMUNICATIONS LTD. +0090f8 MEDIATRIX TELECOM +0090f9 Imagine Communications +0090fa Emulex Corporation +0090fb PORTWELL, INC. +0090fc NETWORK COMPUTING DEVICES +0090fd CopperCom, Inc. +0090fe ELECOM CO., LTD. (LANEED DIV.) +0090ff TELLUS TECHNOLOGY INC. +0091d6 Crystal Group, Inc. +0091fa Synapse Product Development +0092fa SHENZHEN WISKY TECHNOLOGY CO.,LTD +009363 Uni-Link Technology Co., Ltd. +0094a1 F5 Networks, Inc. +009569 LSD Science and Technology Co.,Ltd. +0097ff Heimann Sensor GmbH +009acd HUAWEI TECHNOLOGIES CO.,LTD +009ad2 Cisco Systems, Inc +009c02 Hewlett Packard +009d6b Murata Manufacturing Co., Ltd. +009d8e CARDIAC RECORDERS, INC. +009e1e Cisco Systems, Inc +009ec8 Xiaomi Communications Co Ltd +00a000 CENTILLION NETWORKS, INC. +00a001 DRS Signal Solutions +00a002 LEEDS & NORTHRUP AUSTRALIA PTY LTD +00a003 Siemens Switzerland Ltd., I B T HVP +00a004 NETPOWER, INC. +00a005 DANIEL INSTRUMENTS, LTD. +00a006 IMAGE DATA PROCESSING SYSTEM GROUP +00a007 APEXX TECHNOLOGY, INC. +00a008 NETCORP +00a009 WHITETREE NETWORK +00a00a Airspan +00a00b COMPUTEX CO., LTD. +00a00c KINGMAX TECHNOLOGY, INC. +00a00d THE PANDA PROJECT +00a00e NetAlly +00a00f Broadband Technologies +00a010 SYSLOGIC DATENTECHNIK AG +00a011 MUTOH INDUSTRIES LTD. +00a012 Telco Systems, Inc. +00a013 TELTREND LTD. +00a014 CSIR +00a015 WYLE +00a016 MICROPOLIS CORP. +00a017 J B M CORPORATION +00a018 CREATIVE CONTROLLERS, INC. +00a019 NEBULA CONSULTANTS, INC. +00a01a BINAR ELEKTRONIK AB +00a01b PREMISYS COMMUNICATIONS, INC. +00a01c NASCENT NETWORKS CORPORATION +00a01d Red Lion Controls, LP +00a01e EST CORPORATION +00a01f TRICORD SYSTEMS, INC. +00a020 CITICORP/TTI +00a021 General Dynamics Mission Systems +00a022 CENTRE FOR DEVELOPMENT OF ADVANCED COMPUTING +00a023 APPLIED CREATIVE TECHNOLOGY, INC. +00a024 3COM +00a025 REDCOM LABS INC. +00a026 TELDAT, S.A. +00a027 FIREPOWER SYSTEMS, INC. +00a028 CONNER PERIPHERALS +00a029 COULTER CORPORATION +00a02a TRANCELL SYSTEMS +00a02b TRANSITIONS RESEARCH CORP. +00a02c interWAVE Communications +00a02d 1394 Trade Association +00a02e BRAND COMMUNICATIONS, LTD. +00a02f ADB Broadband Italia +00a030 CAPTOR NV/SA +00a031 HAZELTINE CORPORATION, MS 1-17 +00a032 GES SINGAPORE PTE. LTD. +00a033 imc MeBsysteme GmbH +00a034 AXEL +00a035 CYLINK CORPORATION +00a036 APPLIED NETWORK TECHNOLOGY +00a037 Mindray DS USA, Inc. +00a038 EMAIL ELECTRONICS +00a039 ROSS TECHNOLOGY, INC. +00a03a KUBOTEK CORPORATION +00a03b TOSHIN ELECTRIC CO., LTD. +00a03c EG&G NUCLEAR INSTRUMENTS +00a03d OPTO-22 +00a03e ATM FORUM +00a03f COMPUTER SOCIETY MICROPROCESSOR & MICROPROCESSOR STANDARDS C +00a040 Apple, Inc. +00a041 INFICON +00a042 SPUR PRODUCTS CORP. +00a043 AMERICAN TECHNOLOGY LABS, INC. +00a044 NTT IT CO., LTD. +00a045 PHOENIX CONTACT Electronics GmbH +00a046 SCITEX CORP. LTD. +00a047 INTEGRATED FITNESS CORP. +00a048 QUESTECH, LTD. +00a049 DIGITECH INDUSTRIES, INC. +00a04a NISSHIN ELECTRIC CO., LTD. +00a04b TFL LAN INC. +00a04c INNOVATIVE SYSTEMS & TECHNOLOGIES, INC. +00a04d EDA INSTRUMENTS, INC. +00a04e VOELKER TECHNOLOGIES, INC. +00a04f AMERITEC CORP. +00a050 CYPRESS SEMICONDUCTOR +00a051 ANGIA COMMUNICATIONS. INC. +00a052 STANILITE ELECTRONICS PTY. LTD +00a053 COMPACT DEVICES, INC. +00a054 Private +00a055 Data Device Corporation +00a056 MICROPROSS +00a057 LANCOM Systems GmbH +00a058 GLORY, LTD. +00a059 HAMILTON HALLMARK +00a05a KOFAX IMAGE PRODUCTS +00a05b MARQUIP, INC. +00a05c INVENTORY CONVERSION, INC./ +00a05d CS COMPUTER SYSTEME GmbH +00a05e MYRIAD LOGIC INC. +00a05f BTG Electronics Design BV +00a060 ACER PERIPHERALS, INC. +00a061 PURITAN BENNETT +00a062 AES PRODATA +00a063 JRL SYSTEMS, INC. +00a064 KVB/ANALECT +00a065 Symantec Corporation +00a066 ISA CO., LTD. +00a067 NETWORK SERVICES GROUP +00a068 BHP LIMITED +00a069 Symmetricom, Inc. +00a06a Verilink Corporation +00a06b DMS DORSCH MIKROSYSTEM GMBH +00a06c SHINDENGEN ELECTRIC MFG. CO., LTD. +00a06d MANNESMANN TALLY CORPORATION +00a06e AUSTRON, INC. +00a06f Color Sentinel Systems, LLC +00a070 COASTCOM +00a071 VIDEO LOTTERY TECHNOLOGIES,INC +00a072 OVATION SYSTEMS LTD. +00a073 COM21, INC. +00a074 PERCEPTION TECHNOLOGY +00a075 MICRON TECHNOLOGY, INC. +00a076 CARDWARE LAB, INC. +00a077 FUJITSU NEXION, INC. +00a078 Marconi Communications +00a079 ALPS ELECTRIC (USA), INC. +00a07a ADVANCED PERIPHERALS TECHNOLOGIES, INC. +00a07b DAWN COMPUTER INCORPORATION +00a07c TONYANG NYLON CO., LTD. +00a07d SEEQ TECHNOLOGY, INC. +00a07e AVID TECHNOLOGY, INC. +00a07f GSM-SYNTEL, LTD. +00a080 Tattile SRL +00a081 ALCATEL DATA NETWORKS +00a082 NKT ELEKTRONIK A/S +00a083 ASIMMPHONY TURKEY +00a084 Dataplex Pty Ltd +00a085 Private +00a086 AMBER WAVE SYSTEMS, INC. +00a087 Microsemi Corporation +00a088 ESSENTIAL COMMUNICATIONS +00a089 XPOINT TECHNOLOGIES, INC. +00a08a BROOKTROUT TECHNOLOGY, INC. +00a08b ASTON ELECTRONIC DESIGNS LTD. +00a08c MultiMedia LANs, Inc. +00a08d JACOMO CORPORATION +00a08e Check Point Software Technologies +00a08f DESKNET SYSTEMS, INC. +00a090 TimeStep Corporation +00a091 APPLICOM INTERNATIONAL +00a092 H. BOLLMANN MANUFACTURERS, LTD +00a093 B/E AEROSPACE, Inc. +00a094 COMSAT CORPORATION +00a095 ACACIA NETWORKS, INC. +00a096 MITSUMI ELECTRIC CO.,LTD. +00a097 JC INFORMATION SYSTEMS +00a098 NetApp +00a099 K-NET LTD. +00a09a NIHON KOHDEN AMERICA +00a09b QPSX COMMUNICATIONS, LTD. +00a09c Xyplex, Inc. +00a09d JOHNATHON FREEMAN TECHNOLOGIES +00a09e ICTV +00a09f COMMVISION CORP. +00a0a0 COMPACT DATA, LTD. +00a0a1 EPIC DATA INC. +00a0a2 DIGICOM S.P.A. +00a0a3 RELIABLE POWER METERS +00a0a4 Oracle Corporation +00a0a5 TEKNOR MICROSYSTEME, INC. +00a0a6 M.I. SYSTEMS, K.K. +00a0a7 VORAX CORPORATION +00a0a8 RENEX CORPORATION +00a0a9 NAVTEL COMMUNICATIONS INC. +00a0aa SPACELABS MEDICAL +00a0ab NETCS INFORMATIONSTECHNIK GMBH +00a0ac GILAT SATELLITE NETWORKS, LTD. +00a0ad MARCONI SPA +00a0ae NUCOM SYSTEMS, INC. +00a0af WMS INDUSTRIES +00a0b0 I-O DATA DEVICE,INC. +00a0b1 FIRST VIRTUAL CORPORATION +00a0b2 SHIMA SEIKI +00a0b3 ZYKRONIX +00a0b4 TEXAS MICROSYSTEMS, INC. +00a0b5 3H TECHNOLOGY +00a0b6 SANRITZ AUTOMATION CO., LTD. +00a0b7 CORDANT, INC. +00a0b8 NetApp +00a0b9 EAGLE TECHNOLOGY, INC. +00a0ba PATTON ELECTRONICS CO. +00a0bb HILAN GMBH +00a0bc VIASAT, INCORPORATED +00a0bd I-TECH CORP. +00a0be INTEGRATED CIRCUIT SYSTEMS, INC. COMMUNICATIONS GROUP +00a0bf WIRELESS DATA GROUP MOTOROLA +00a0c0 DIGITAL LINK CORP. +00a0c1 ORTIVUS MEDICAL AB +00a0c2 R.A. SYSTEMS CO., LTD. +00a0c3 UNICOMPUTER GMBH +00a0c4 CRISTIE ELECTRONICS LTD. +00a0c5 Zyxel Communications Corporation +00a0c6 Qualcomm Inc. +00a0c7 TADIRAN TELECOMMUNICATIONS +00a0c8 Adtran Inc +00a0c9 Intel Corporation +00a0ca FUJITSU DENSO LTD. +00a0cb ARK TELECOMMUNICATIONS, INC. +00a0cc LITE-ON COMMUNICATIONS, INC. +00a0cd DR. JOHANNES HEIDENHAIN GmbH +00a0ce Ecessa +00a0cf SOTAS, INC. +00a0d0 TEN X TECHNOLOGY, INC. +00a0d1 INVENTEC CORPORATION +00a0d2 ALLIED TELESIS INTERNATIONAL CORPORATION +00a0d3 INSTEM COMPUTER SYSTEMS, LTD. +00a0d4 RADIOLAN, INC. +00a0d5 Sierra Wireless +00a0d6 SBE, Inc. +00a0d7 KASTEN CHASE APPLIED RESEARCH +00a0d8 SPECTRA - TEK +00a0d9 CONVEX COMPUTER CORPORATION +00a0da INTEGRATED SYSTEMS Technology, Inc. +00a0db FISHER & PAYKEL PRODUCTION +00a0dc O.N. ELECTRONIC CO., LTD. +00a0dd AZONIX CORPORATION +00a0de YAMAHA CORPORATION +00a0df STS TECHNOLOGIES, INC. +00a0e0 TENNYSON TECHNOLOGIES PTY LTD +00a0e1 WESTPORT RESEARCH ASSOCIATES, INC. +00a0e2 Keisokugiken Corporation +00a0e3 XKL SYSTEMS CORP. +00a0e4 OPTIQUEST +00a0e5 NHC COMMUNICATIONS +00a0e6 DIALOGIC CORPORATION +00a0e7 CENTRAL DATA CORPORATION +00a0e8 REUTERS HOLDINGS PLC +00a0e9 ELECTRONIC RETAILING SYSTEMS INTERNATIONAL +00a0ea ETHERCOM CORP. +00a0eb Encore Networks, Inc. +00a0ec TRANSMITTON LTD. +00a0ed Brooks Automation, Inc. +00a0ee NASHOBA NETWORKS +00a0ef LUCIDATA LTD. +00a0f0 TORONTO MICROELECTRONICS INC. +00a0f1 MTI +00a0f2 INFOTEK COMMUNICATIONS, INC. +00a0f3 STAUBLI +00a0f4 GE +00a0f5 RADGUARD LTD. +00a0f6 AutoGas Systems Inc. +00a0f7 V.I COMPUTER CORP. +00a0f8 Zebra Technologies Inc +00a0f9 BINTEC COMMUNICATIONS GMBH +00a0fa Marconi Communication GmbH +00a0fb TORAY ENGINEERING CO., LTD. +00a0fc IMAGE SCIENCES, INC. +00a0fd SCITEX DIGITAL PRINTING, INC. +00a0fe BOSTON TECHNOLOGY, INC. +00a0ff TELLABS OPERATIONS, INC. +00a1de ShenZhen ShiHua Technology CO.,LTD +00a289 Cisco Systems, Inc +00a2da INAT GmbH +00a2ee Cisco Systems, Inc +00a2f5 Guangzhou Yuanyun Network Technology Co.,Ltd +00a2ff abatec group AG +00a38e Cisco Systems, Inc +00a3d1 Cisco Systems, Inc +00a509 WigWag Inc. +00a5bf Cisco Systems, Inc +00a6ca Cisco Systems, Inc +00a742 Cisco Systems, Inc +00a784 ITX security +00aa00 Intel Corporation +00aa01 Intel Corporation +00aa02 Intel Corporation +00aa3c OLIVETTI TELECOM SPA (OLTECO) +00aa6e Cisco Systems, Inc +00aa70 LG Electronics (Mobile Communications) +00ab48 eero inc. +00ace0 ARRIS Group, Inc. +00ad24 D-Link International +00ad63 Dedicated Micros Malta LTD +00aecd Pensando Systems +00aefa Murata Manufacturing Co., Ltd. +00af1f Cisco Systems, Inc +00b009 Grass Valley, A Belden Brand +00b017 InfoGear Technology Corp. +00b019 UTC CCS +00b01c Westport Technologies +00b01e Rantic Labs, Inc. +00b02a ORSYS GmbH +00b02d ViaGate Technologies, Inc. +00b033 OAO Izhevskiy radiozavod +00b03b HiQ Networks +00b048 Marconi Communications Inc. +00b04a Cisco Systems, Inc +00b052 Atheros Communications +00b064 Cisco Systems, Inc +00b069 Honewell Oy +00b06d Jones Futurex Inc. +00b080 Mannesmann Ipulsys B.V. +00b086 LocSoft Limited +00b08e Cisco Systems, Inc +00b091 Transmeta Corp. +00b094 Alaris, Inc. +00b09a Morrow Technologies Corp. +00b09d Point Grey Research Inc. +00b0ac SIAE-Microelettronica S.p.A. +00b0ae Symmetricom +00b0b3 XSTREAMIS PLC +00b0c2 Cisco Systems, Inc +00b0c7 Tellabs Operations, Inc. +00b0ce Viveris Technologies +00b0d0 Dell Inc. +00b0db Nextcell, Inc. +00b0df Starboard Storage Systems +00b0e1 Cisco Systems, Inc +00b0e7 British Federal Ltd. +00b0ec EACEM +00b0ee Ajile Systems, Inc. +00b0f0 CALY NETWORKS +00b0f5 NetWorth Technologies, Inc. +00b1e3 Cisco Systems, Inc +00b338 Kontron Asia Pacific Design Sdn. Bhd +00b342 MacroSAN Technologies Co., Ltd. +00b362 Apple, Inc. +00b4f5 DongGuan Siyoto Electronics Co., Ltd +00b56d David Electronics Co., LTD. +00b5d0 Samsung Electronics Co.,Ltd +00b5d6 Omnibit Inc. +00b600 VOIM Co., Ltd. +00b670 Cisco Systems, Inc +00b69f Latch +00b771 Cisco Systems, Inc +00b78d Nanjing Shining Electric Automation Co., Ltd +00b8b3 Cisco Systems, Inc +00b8c2 Heights Telecom T ltd +00b9f6 Shenzhen Super Rich Electronics Co.,Ltd +00bac0 Biometric Access Company +00bb01 OCTOTHORPE CORP. +00bb3a Amazon Technologies Inc. +00bb60 Intel Corporate +00bb8e HME Co., Ltd. +00bbc1 CANON INC. +00bbf0 UNGERMANN-BASS INC. +00bc60 Cisco Systems, Inc +00bd27 Exar Corp. +00bd3a Nokia Corporation +00bd82 Shenzhen YOUHUA Technology Co., Ltd +00be3b HUAWEI TECHNOLOGIES CO.,LTD +00be75 Cisco Systems, Inc +00be9e Fiberhome Telecommunication Technologies Co.,LTD +00bf15 Genetec Inc. +00bf61 Samsung Electronics Co.,Ltd +00bf77 Cisco Systems, Inc +00c000 LANOPTICS, LTD. +00c001 DIATEK PATIENT MANAGMENT +00c002 Sercomm Corporation. +00c003 GLOBALNET COMMUNICATIONS +00c004 JAPAN BUSINESS COMPUTER CO.LTD +00c005 LIVINGSTON ENTERPRISES, INC. +00c006 NIPPON AVIONICS CO., LTD. +00c007 PINNACLE DATA SYSTEMS, INC. +00c008 SECO SRL +00c009 KT TECHNOLOGY (S) PTE LTD +00c00a MICRO CRAFT +00c00b NORCONTROL A.S. +00c00c RELIA TECHNOLGIES +00c00d ADVANCED LOGIC RESEARCH, INC. +00c00e PSITECH, INC. +00c00f QUANTUM SOFTWARE SYSTEMS LTD. +00c010 HIRAKAWA HEWTECH CORP. +00c011 INTERACTIVE COMPUTING DEVICES +00c012 NETSPAN CORPORATION +00c013 NETRIX +00c014 TELEMATICS CALABASAS INT'L,INC +00c015 NEW MEDIA CORPORATION +00c016 ELECTRONIC THEATRE CONTROLS +00c017 NetAlly +00c018 LANART CORPORATION +00c019 LEAP TECHNOLOGY, INC. +00c01a COROMETRICS MEDICAL SYSTEMS +00c01b SOCKET COMMUNICATIONS, INC. +00c01c INTERLINK COMMUNICATIONS LTD. +00c01d GRAND JUNCTION NETWORKS, INC. +00c01e LA FRANCAISE DES JEUX +00c01f S.E.R.C.E.L. +00c020 ARCO ELECTRONIC, CONTROL LTD. +00c021 NETEXPRESS +00c022 LASERMASTER TECHNOLOGIES, INC. +00c023 TUTANKHAMON ELECTRONICS +00c024 EDEN SISTEMAS DE COMPUTACAO SA +00c025 DATAPRODUCTS CORPORATION +00c026 LANS TECHNOLOGY CO., LTD. +00c027 CIPHER SYSTEMS, INC. +00c028 JASCO CORPORATION +00c029 Nexans Deutschland GmbH - ANS +00c02a OHKURA ELECTRIC CO., LTD. +00c02b GERLOFF GESELLSCHAFT FUR +00c02c CENTRUM COMMUNICATIONS, INC. +00c02d FUJI PHOTO FILM CO., LTD. +00c02e NETWIZ +00c02f OKUMA CORPORATION +00c030 INTEGRATED ENGINEERING B. V. +00c031 DESIGN RESEARCH SYSTEMS, INC. +00c032 I-CUBED LIMITED +00c033 TELEBIT COMMUNICATIONS APS +00c034 TRANSACTION NETWORK +00c035 QUINTAR COMPANY +00c036 RAYTECH ELECTRONIC CORP. +00c037 DYNATEM +00c038 RASTER IMAGE PROCESSING SYSTEM +00c039 Teridian Semiconductor Corporation +00c03a MEN-MIKRO ELEKTRONIK GMBH +00c03b MULTIACCESS COMPUTING CORP. +00c03c TOWER TECH S.R.L. +00c03d WIESEMANN & THEIS GMBH +00c03e FA. GEBR. HELLER GMBH +00c03f STORES AUTOMATED SYSTEMS, INC. +00c040 ECCI +00c041 DIGITAL TRANSMISSION SYSTEMS +00c042 DATALUX CORP. +00c043 STRATACOM +00c044 EMCOM CORPORATION +00c045 ISOLATION SYSTEMS, LTD. +00c046 Blue Chip Technology Ltd +00c047 UNIMICRO SYSTEMS, INC. +00c048 BAY TECHNICAL ASSOCIATES +00c049 U.S. ROBOTICS, INC. +00c04a GROUP 2000 AG +00c04b CREATIVE MICROSYSTEMS +00c04c DEPARTMENT OF FOREIGN AFFAIRS +00c04d MITEC, INC. +00c04e COMTROL CORPORATION +00c04f Dell Inc. +00c050 TOYO DENKI SEIZO K.K. +00c051 ADVANCED INTEGRATION RESEARCH +00c052 BURR-BROWN +00c053 Aspect Software Inc. +00c054 NETWORK PERIPHERALS, LTD. +00c055 MODULAR COMPUTING TECHNOLOGIES +00c056 SOMELEC +00c057 MYCO ELECTRONICS +00c058 DATAEXPERT CORP. +00c059 DENSO CORPORATION +00c05a SEMAPHORE COMMUNICATIONS CORP. +00c05b NETWORKS NORTHWEST, INC. +00c05c ELONEX PLC +00c05d L&N TECHNOLOGIES +00c05e VARI-LITE, INC. +00c05f FINE-PAL COMPANY LIMITED +00c060 ID SCANDINAVIA AS +00c061 SOLECTEK CORPORATION +00c062 IMPULSE TECHNOLOGY +00c063 MORNING STAR TECHNOLOGIES, INC +00c064 General Datacomm LLC +00c065 SCOPE COMMUNICATIONS, INC. +00c066 DOCUPOINT, INC. +00c067 UNITED BARCODE INDUSTRIES +00c068 HME Clear-Com LTD. +00c069 Axxcelera Broadband Wireless +00c06a ZAHNER-ELEKTRIK GMBH & CO. KG +00c06b OSI PLUS CORPORATION +00c06c SVEC COMPUTER CORP. +00c06d BOCA RESEARCH, INC. +00c06e HAFT TECHNOLOGY, INC. +00c06f KOMATSU LTD. +00c070 SECTRA SECURE-TRANSMISSION AB +00c071 AREANEX COMMUNICATIONS, INC. +00c072 KNX LTD. +00c073 XEDIA CORPORATION +00c074 TOYODA AUTOMATIC LOOM +00c075 XANTE CORPORATION +00c076 I-DATA INTERNATIONAL A-S +00c077 DAEWOO TELECOM LTD. +00c078 COMPUTER SYSTEMS ENGINEERING +00c079 FONSYS CO.,LTD. +00c07a PRIVA B.V. +00c07b ASCEND COMMUNICATIONS, INC. +00c07c HIGHTECH INFORMATION +00c07d RISC DEVELOPMENTS LTD. +00c07e KUBOTA CORPORATION ELECTRONIC +00c07f NUPON COMPUTING CORP. +00c080 NETSTAR, INC. +00c081 METRODATA LTD. +00c082 MOORE PRODUCTS CO. +00c083 TRACE MOUNTAIN PRODUCTS, INC. +00c084 DATA LINK CORP. LTD. +00c085 ELECTRONICS FOR IMAGING, INC. +00c086 THE LYNK CORPORATION +00c087 UUNET TECHNOLOGIES, INC. +00c088 EKF ELEKTRONIK GMBH +00c089 TELINDUS DISTRIBUTION +00c08a Lauterbach GmbH +00c08b RISQ MODULAR SYSTEMS, INC. +00c08c PERFORMANCE TECHNOLOGIES, INC. +00c08d TRONIX PRODUCT DEVELOPMENT +00c08e NETWORK INFORMATION TECHNOLOGY +00c08f Panasonic Electric Works Co., Ltd. +00c090 PRAIM S.R.L. +00c091 JABIL CIRCUIT, INC. +00c092 MENNEN MEDICAL INC. +00c093 ALTA RESEARCH CORP. +00c094 VMX INC. +00c095 ZNYX Networks, Inc. +00c096 TAMURA CORPORATION +00c097 ARCHIPEL SA +00c098 CHUNTEX ELECTRONIC CO., LTD. +00c099 YOSHIKI INDUSTRIAL CO.,LTD. +00c09a PHOTONICS CORPORATION +00c09b RELIANCE COMM/TEC, R-TEC +00c09c HIOKI E.E. CORPORATION +00c09d DISTRIBUTED SYSTEMS INT'L, INC +00c09e CACHE COMPUTERS, INC. +00c09f QUANTA COMPUTER INC. +00c0a0 ADVANCE MICRO RESEARCH, INC. +00c0a1 TOKYO DENSHI SEKEI CO. +00c0a2 INTERMEDIUM A/S +00c0a3 DUAL ENTERPRISES CORPORATION +00c0a4 UNIGRAF OY +00c0a5 DICKENS DATA SYSTEMS +00c0a6 EXICOM AUSTRALIA PTY. LTD +00c0a7 SEEL LTD. +00c0a8 GVC CORPORATION +00c0a9 BARRON MCCANN LTD. +00c0aa SILICON VALLEY COMPUTER +00c0ab Telco Systems, Inc. +00c0ac GAMBIT COMPUTER COMMUNICATIONS +00c0ad MARBEN COMMUNICATION SYSTEMS +00c0ae TOWERCOM CO. INC. DBA PC HOUSE +00c0af TEKLOGIX INC. +00c0b0 GCC TECHNOLOGIES,INC. +00c0b1 GENIUS NET CO. +00c0b2 NORAND CORPORATION +00c0b3 COMSTAT DATACOMM CORPORATION +00c0b4 MYSON TECHNOLOGY, INC. +00c0b5 CORPORATE NETWORK SYSTEMS,INC. +00c0b6 HVE, Inc. +00c0b7 AMERICAN POWER CONVERSION CORP +00c0b8 FRASER'S HILL LTD. +00c0b9 FUNK SOFTWARE, INC. +00c0ba NETVANTAGE +00c0bb FORVAL CREATIVE, INC. +00c0bc TELECOM AUSTRALIA/CSSC +00c0bd INEX TECHNOLOGIES, INC. +00c0be ALCATEL - SEL +00c0bf TECHNOLOGY CONCEPTS, LTD. +00c0c0 SHORE MICROSYSTEMS, INC. +00c0c1 QUAD/GRAPHICS, INC. +00c0c2 INFINITE NETWORKS LTD. +00c0c3 ACUSON COMPUTED SONOGRAPHY +00c0c4 COMPUTER OPERATIONAL +00c0c5 SID INFORMATICA +00c0c6 PERSONAL MEDIA CORP. +00c0c7 SPARKTRUM MICROSYSTEMS, INC. +00c0c8 MICRO BYTE PTY. LTD. +00c0c9 ELSAG BAILEY PROCESS +00c0ca ALFA, INC. +00c0cb CONTROL TECHNOLOGY CORPORATION +00c0cc TELESCIENCES CO SYSTEMS, INC. +00c0cd COMELTA, S.A. +00c0ce CEI SYSTEMS & ENGINEERING PTE +00c0cf IMATRAN VOIMA OY +00c0d0 RATOC SYSTEM INC. +00c0d1 COMTREE TECHNOLOGY CORPORATION +00c0d2 SYNTELLECT, INC. +00c0d3 OLYMPUS IMAGE SYSTEMS, INC. +00c0d4 AXON NETWORKS, INC. +00c0d5 Werbeagentur Jürgen Siebert +00c0d6 J1 SYSTEMS, INC. +00c0d7 TAIWAN TRADING CENTER DBA +00c0d8 UNIVERSAL DATA SYSTEMS +00c0d9 QUINTE NETWORK CONFIDENTIALITY +00c0da NICE SYSTEMS LTD. +00c0db IPC CORPORATION (PTE) LTD. +00c0dc EOS TECHNOLOGIES, INC. +00c0dd QLogic Corporation +00c0de ZCOMM, INC. +00c0df KYE Systems Corp. +00c0e0 DSC COMMUNICATION CORP. +00c0e1 SONIC SOLUTIONS +00c0e2 CALCOMP, INC. +00c0e3 OSITECH COMMUNICATIONS, INC. +00c0e4 SIEMENS BUILDING +00c0e5 GESPAC, S.A. +00c0e6 Verilink Corporation +00c0e7 FIBERDATA AB +00c0e8 PLEXCOM, INC. +00c0e9 OAK SOLUTIONS, LTD. +00c0ea ARRAY TECHNOLOGY LTD. +00c0eb SEH COMPUTERTECHNIK GMBH +00c0ec DAUPHIN TECHNOLOGY +00c0ed US ARMY ELECTRONIC +00c0ee KYOCERA Display Corporation +00c0ef ABIT CORPORATION +00c0f0 Kingston Technology Company, Inc. +00c0f1 SHINKO ELECTRIC CO., LTD. +00c0f2 TRANSITION NETWORKS +00c0f3 NETWORK COMMUNICATIONS CORP. +00c0f4 INTERLINK SYSTEM CO., LTD. +00c0f5 METACOMP, INC. +00c0f6 CELAN TECHNOLOGY INC. +00c0f7 ENGAGE COMMUNICATION, INC. +00c0f8 ABOUT COMPUTING INC. +00c0f9 Artesyn Embedded Technologies +00c0fa CANARY COMMUNICATIONS, INC. +00c0fb ADVANCED TECHNOLOGY LABS +00c0fc ELASTIC REALITY, INC. +00c0fd PROSUM +00c0fe APTEC COMPUTER SYSTEMS, INC. +00c0ff Seagate Cloud Systems Inc +00c14f DDL Co,.ltd. +00c164 Cisco Systems, Inc +00c1b1 Cisco Systems, Inc +00c2c6 Intel Corporate +00c3f4 Samsung Electronics Co.,Ltd +00c5db Datatech Sistemas Digitales Avanzados SL +00c610 Apple, Inc. +00c88b Cisco Systems, Inc +00cae5 Cisco Systems, Inc +00cb00 Private +00cb51 Sagemcom Broadband SAS +00cbb4 SHENZHEN ATEKO PHOTOELECTRICITY CO.,LTD +00cbbd Cambridge Broadband Networks Ltd. +00cc3f Universal Electronics, Inc. +00ccfc Cisco Systems, Inc +00cd90 MAS Elektronik AG +00cdfe Apple, Inc. +00cf1c Communication Machinery Corporation +00cfc0 China Mobile Group Device Co.,Ltd. +00d000 FERRAN SCIENTIFIC, INC. +00d001 VST TECHNOLOGIES, INC. +00d002 DITECH CORPORATION +00d003 COMDA ENTERPRISES CORP. +00d004 PENTACOM LTD. +00d005 ZHS ZEITMANAGEMENTSYSTEME +00d006 Cisco Systems, Inc +00d007 MIC ASSOCIATES, INC. +00d008 MACTELL CORPORATION +00d009 HSING TECH. ENTERPRISE CO. LTD +00d00a LANACCESS TELECOM S.A. +00d00b RHK TECHNOLOGY, INC. +00d00c SNIJDER MICRO SYSTEMS +00d00d MICROMERITICS INSTRUMENT +00d00e PLURIS, INC. +00d00f SPEECH DESIGN GMBH +00d010 CONVERGENT NETWORKS, INC. +00d011 PRISM VIDEO, INC. +00d012 GATEWORKS CORP. +00d013 PRIMEX AEROSPACE COMPANY +00d014 ROOT, INC. +00d015 UNIVEX MICROTECHNOLOGY CORP. +00d016 SCM MICROSYSTEMS, INC. +00d017 SYNTECH INFORMATION CO., LTD. +00d018 QWES. COM, INC. +00d019 DAINIPPON SCREEN CORPORATE +00d01a URMET TLC S.P.A. +00d01b MIMAKI ENGINEERING CO., LTD. +00d01c SBS TECHNOLOGIES, +00d01d FURUNO ELECTRIC CO., LTD. +00d01e PINGTEL CORP. +00d01f Senetas Corporation Ltd +00d020 AIM SYSTEM, INC. +00d021 REGENT ELECTRONICS CORP. +00d022 INCREDIBLE TECHNOLOGIES, INC. +00d023 INFORTREND TECHNOLOGY, INC. +00d024 Cognex Corporation +00d025 XROSSTECH, INC. +00d026 HIRSCHMANN AUSTRIA GMBH +00d027 APPLIED AUTOMATION, INC. +00d028 Harmonic, Inc +00d029 WAKEFERN FOOD CORPORATION +00d02a Voxent Systems Ltd. +00d02b JETCELL, INC. +00d02c CAMPBELL SCIENTIFIC, INC. +00d02d Resideo +00d02e COMMUNICATION AUTOMATION CORP. +00d02f VLSI TECHNOLOGY INC. +00d030 Safetran Systems Corp +00d031 INDUSTRIAL LOGIC CORPORATION +00d032 YANO ELECTRIC CO., LTD. +00d033 DALIAN DAXIAN NETWORK +00d034 ORMEC SYSTEMS CORP. +00d035 BEHAVIOR TECH. COMPUTER CORP. +00d036 TECHNOLOGY ATLANTA CORP. +00d037 ARRIS Group, Inc. +00d038 FIVEMERE, LTD. +00d039 UTILICOM, INC. +00d03a ZONEWORX, INC. +00d03b VISION PRODUCTS PTY. LTD. +00d03c Vieo, Inc. +00d03d GALILEO TECHNOLOGY, LTD. +00d03e ROCKETCHIPS, INC. +00d03f AMERICAN COMMUNICATION +00d040 SYSMATE CO., LTD. +00d041 AMIGO TECHNOLOGY CO., LTD. +00d042 MAHLO GMBH & CO. UG +00d043 ZONAL RETAIL DATA SYSTEMS +00d044 ALIDIAN NETWORKS, INC. +00d045 KVASER AB +00d046 DOLBY LABORATORIES, INC. +00d047 XN TECHNOLOGIES +00d048 ECTON, INC. +00d049 IMPRESSTEK CO., LTD. +00d04a PRESENCE TECHNOLOGY GMBH +00d04b LA CIE GROUP S.A. +00d04c EUROTEL TELECOM LTD. +00d04d DIV OF RESEARCH & STATISTICS +00d04e LOGIBAG +00d04f BITRONICS, INC. +00d050 Iskratel d.o.o. +00d051 O2 MICRO, INC. +00d052 ASCEND COMMUNICATIONS, INC. +00d053 CONNECTED SYSTEMS +00d054 SAS INSTITUTE INC. +00d055 KATHREIN-WERKE KG +00d056 SOMAT CORPORATION +00d057 ULTRAK, INC. +00d058 Cisco Systems, Inc +00d059 AMBIT MICROSYSTEMS CORP. +00d05a SYMBIONICS, LTD. +00d05b ACROLOOP MOTION CONTROL +00d05c KATHREIN TechnoTrend GmbH +00d05d INTELLIWORXX, INC. +00d05e STRATABEAM TECHNOLOGY, INC. +00d05f VALCOM, INC. +00d060 Panasonic Europe Ltd. +00d061 TREMON ENTERPRISES CO., LTD. +00d062 DIGIGRAM +00d063 Cisco Systems, Inc +00d064 MULTITEL +00d065 TOKO ELECTRIC +00d066 WINTRISS ENGINEERING CORP. +00d067 CAMPIO COMMUNICATIONS +00d068 IWILL CORPORATION +00d069 TECHNOLOGIC SYSTEMS +00d06a LINKUP SYSTEMS CORPORATION +00d06b SR TELECOM INC. +00d06c SHAREWAVE, INC. +00d06d ACRISON, INC. +00d06e TRENDVIEW RECORDERS LTD. +00d06f KMC CONTROLS +00d070 LONG WELL ELECTRONICS CORP. +00d071 ECHELON CORP. +00d072 BROADLOGIC +00d073 ACN ADVANCED COMMUNICATIONS +00d074 TAQUA SYSTEMS, INC. +00d075 ALARIS MEDICAL SYSTEMS, INC. +00d076 Bank of America +00d077 LUCENT TECHNOLOGIES +00d078 Eltex of Sweden AB +00d079 Cisco Systems, Inc +00d07a AMAQUEST COMPUTER CORP. +00d07b COMCAM INTERNATIONAL INC +00d07c KOYO ELECTRONICS INC. CO.,LTD. +00d07d COSINE COMMUNICATIONS +00d07e KEYCORP LTD. +00d07f STRATEGY & TECHNOLOGY, LIMITED +00d080 EXABYTE CORPORATION +00d081 RTD Embedded Technologies, Inc. +00d082 IOWAVE INC. +00d083 INVERTEX, INC. +00d084 NEXCOMM SYSTEMS, INC. +00d085 OTIS ELEVATOR COMPANY +00d086 FOVEON, INC. +00d087 MICROFIRST INC. +00d088 ARRIS Group, Inc. +00d089 DYNACOLOR, INC. +00d08a PHOTRON USA +00d08b ADVA Optical Networking Ltd. +00d08c GENOA TECHNOLOGY, INC. +00d08d PHOENIX GROUP, INC. +00d08e Grass Valley, A Belden Brand +00d08f ARDENT TECHNOLOGIES, INC. +00d090 Cisco Systems, Inc +00d091 SMARTSAN SYSTEMS, INC. +00d092 GLENAYRE WESTERN MULTIPLEX +00d093 TQ - COMPONENTS GMBH +00d094 Seeion Control LLC +00d095 Alcatel-Lucent Enterprise +00d096 3COM EUROPE LTD +00d097 Cisco Systems, Inc +00d098 Photon Dynamics Canada Inc. +00d099 Elcard Wireless Systems Oy +00d09a FILANET CORPORATION +00d09b SPECTEL LTD. +00d09c KAPADIA COMMUNICATIONS +00d09d VERIS INDUSTRIES +00d09e 2Wire Inc +00d09f NOVTEK TEST SYSTEMS +00d0a0 MIPS DENMARK +00d0a1 OSKAR VIERLING GMBH + CO. KG +00d0a2 INTEGRATED DEVICE +00d0a3 VOCAL DATA, INC. +00d0a4 ALANTRO COMMUNICATIONS +00d0a5 AMERICAN ARIUM +00d0a6 LANBIRD TECHNOLOGY CO., LTD. +00d0a7 TOKYO SOKKI KENKYUJO CO., LTD. +00d0a8 NETWORK ENGINES, INC. +00d0a9 SHINANO KENSHI CO., LTD. +00d0aa CHASE COMMUNICATIONS +00d0ab DELTAKABEL TELECOM CV +00d0ac Commscope, Inc +00d0ad TL INDUSTRIES +00d0ae ORESIS COMMUNICATIONS, INC. +00d0af CUTLER-HAMMER, INC. +00d0b0 BITSWITCH LTD. +00d0b1 OMEGA ELECTRONICS SA +00d0b2 Xiotech Corporation +00d0b3 DRS Technologies Canada Ltd +00d0b4 KATSUJIMA CO., LTD. +00d0b5 IPricot formerly DotCom +00d0b6 CRESCENT NETWORKS, INC. +00d0b7 Intel Corporation +00d0b8 Iomega Corporation +00d0b9 MICROTEK INTERNATIONAL, INC. +00d0ba Cisco Systems, Inc +00d0bb Cisco Systems, Inc +00d0bc Cisco Systems, Inc +00d0bd Lattice Semiconductor Corp. (LPA) +00d0be EMUTEC INC. +00d0bf PIVOTAL TECHNOLOGIES +00d0c0 Cisco Systems, Inc +00d0c1 HARMONIC DATA SYSTEMS, LTD. +00d0c2 BALTHAZAR TECHNOLOGY AB +00d0c3 VIVID TECHNOLOGY PTE, LTD. +00d0c4 TERATECH CORPORATION +00d0c5 COMPUTATIONAL SYSTEMS, INC. +00d0c6 THOMAS & BETTS CORP. +00d0c7 PATHWAY, INC. +00d0c8 Prevas A/S +00d0c9 ADVANTECH CO., LTD. +00d0ca Intrinsyc Software International Inc. +00d0cb DASAN CO., LTD. +00d0cc TECHNOLOGIES LYRE INC. +00d0cd ATAN TECHNOLOGY INC. +00d0ce iSystem Labs +00d0cf MORETON BAY +00d0d0 ZHONGXING TELECOM LTD. +00d0d1 Sycamore Networks +00d0d2 EPILOG CORPORATION +00d0d3 Cisco Systems, Inc +00d0d4 V-BITS, INC. +00d0d5 GRUNDIG AG +00d0d6 AETHRA TELECOMUNICAZIONI +00d0d7 B2C2, INC. +00d0d8 3COM +00d0d9 DEDICATED MICROCOMPUTERS +00d0da TAICOM DATA SYSTEMS CO., LTD. +00d0db MCQUAY INTERNATIONAL +00d0dc MODULAR MINING SYSTEMS, INC. +00d0dd SUNRISE TELECOM, INC. +00d0de PHILIPS MULTIMEDIA NETWORK +00d0df KUZUMI ELECTRONICS, INC. +00d0e0 DOOIN ELECTRONICS CO. +00d0e1 AVIONITEK ISRAEL INC. +00d0e2 MRT MICRO, INC. +00d0e3 ELE-CHEM ENGINEERING CO., LTD. +00d0e4 Cisco Systems, Inc +00d0e5 SOLIDUM SYSTEMS CORP. +00d0e6 IBOND INC. +00d0e7 VCON TELECOMMUNICATION LTD. +00d0e8 MAC SYSTEM CO., LTD. +00d0e9 Advantage Century Telecommunication Corp. +00d0ea NEXTONE COMMUNICATIONS, INC. +00d0eb LIGHTERA NETWORKS, INC. +00d0ec NAKAYO Inc +00d0ed XIOX +00d0ee DICTAPHONE CORPORATION +00d0ef IGT +00d0f0 CONVISION TECHNOLOGY GMBH +00d0f1 SEGA ENTERPRISES, LTD. +00d0f2 MONTEREY NETWORKS +00d0f3 SOLARI DI UDINE SPA +00d0f4 CARINTHIAN TECH INSTITUTE +00d0f5 ORANGE MICRO, INC. +00d0f6 Nokia +00d0f7 NEXT NETS CORPORATION +00d0f8 FUJIAN STAR TERMINAL +00d0f9 ACUTE COMMUNICATIONS CORP. +00d0fa Thales e-Security Ltd. +00d0fb TEK MICROSYSTEMS, INCORPORATED +00d0fc GRANITE MICROSYSTEMS +00d0fd OPTIMA TELE.COM, INC. +00d0fe ASTRAL POINT +00d0ff Cisco Systems, Inc +00d11c ACETEL +00d279 VINGROUP JOINT STOCK COMPANY +00d2b1 TPV Display Technology (Xiamen) Co.,Ltd. +00d318 SPG Controls +00d38d Hotel Technology Next Generation +00d632 GE Energy +00d6fe Cisco Systems, Inc +00d78f Cisco Systems, Inc +00d861 Micro-Star INTL CO., LTD. +00d9d1 Sony Interactive Entertainment Inc. +00da55 Cisco Systems, Inc +00db1e Albedo Telecom SL +00db45 THAMWAY CO.,LTD. +00db70 Apple, Inc. +00dbdf Intel Corporate +00dd00 UNGERMANN-BASS INC. +00dd01 UNGERMANN-BASS INC. +00dd02 UNGERMANN-BASS INC. +00dd03 UNGERMANN-BASS INC. +00dd04 UNGERMANN-BASS INC. +00dd05 UNGERMANN-BASS INC. +00dd06 UNGERMANN-BASS INC. +00dd07 UNGERMANN-BASS INC. +00dd08 UNGERMANN-BASS INC. +00dd09 UNGERMANN-BASS INC. +00dd0a UNGERMANN-BASS INC. +00dd0b UNGERMANN-BASS INC. +00dd0c UNGERMANN-BASS INC. +00dd0d UNGERMANN-BASS INC. +00dd0e UNGERMANN-BASS INC. +00dd0f UNGERMANN-BASS INC. +00defb Cisco Systems, Inc +00e000 FUJITSU LIMITED +00e001 STRAND LIGHTING LIMITED +00e002 CROSSROADS SYSTEMS, INC. +00e003 NOKIA WIRELESS BUSINESS COMMUN +00e004 PMC-SIERRA, INC. +00e005 TECHNICAL CORP. +00e006 SILICON INTEGRATED SYS. CORP. +00e007 Avaya ECS Ltd +00e008 AMAZING CONTROLS! INC. +00e009 Stratus Technologies +00e00a DIBA, INC. +00e00b ROOFTOP COMMUNICATIONS CORP. +00e00c MOTOROLA +00e00d RADIANT SYSTEMS +00e00e AVALON IMAGING SYSTEMS, INC. +00e00f Shanghai Baud Data Communication Co.,Ltd. +00e010 HESS SB-AUTOMATENBAU GmbH +00e011 UNIDEN CORPORATION +00e012 PLUTO TECHNOLOGIES INTERNATIONAL INC. +00e013 EASTERN ELECTRONIC CO., LTD. +00e014 Cisco Systems, Inc +00e015 HEIWA CORPORATION +00e016 RAPID CITY COMMUNICATIONS +00e017 EXXACT GmbH +00e018 ASUSTek COMPUTER INC. +00e019 ING. GIORDANO ELETTRONICA +00e01a COMTEC SYSTEMS. CO., LTD. +00e01b SPHERE COMMUNICATIONS, INC. +00e01c Cradlepoint, Inc +00e01d WebTV NETWORKS, INC. +00e01e Cisco Systems, Inc +00e01f AVIDIA Systems, Inc. +00e020 TECNOMEN OY +00e021 FREEGATE CORP. +00e022 Analog Devices, Inc. +00e023 TELRAD +00e024 GADZOOX NETWORKS +00e025 dit Co., Ltd. +00e026 Redlake MASD LLC +00e027 DUX, INC. +00e028 APTIX CORPORATION +00e029 STANDARD MICROSYSTEMS CORP. +00e02a TANDBERG TELEVISION AS +00e02b Extreme Networks, Inc. +00e02c AST COMPUTER +00e02d InnoMediaLogic, Inc. +00e02e SPC ELECTRONICS CORPORATION +00e02f MCNS HOLDINGS, L.P. +00e030 MELITA INTERNATIONAL CORP. +00e031 HAGIWARA ELECTRIC CO., LTD. +00e032 MISYS FINANCIAL SYSTEMS, LTD. +00e033 E.E.P.D. GmbH +00e034 Cisco Systems, Inc +00e035 Artesyn Embedded Technologies +00e036 PIONEER CORPORATION +00e037 CENTURY CORPORATION +00e038 PROXIMA CORPORATION +00e039 PARADYNE CORP. +00e03a Cabletron Systems, Inc. +00e03b PROMINET CORPORATION +00e03c AdvanSys +00e03d FOCON ELECTRONIC SYSTEMS A/S +00e03e ALFATECH, INC. +00e03f JATON CORPORATION +00e040 DeskStation Technology, Inc. +00e041 CSPI +00e042 Pacom Systems Ltd. +00e043 VitalCom +00e044 LSICS CORPORATION +00e045 TOUCHWAVE, INC. +00e046 BENTLY NEVADA CORP. +00e047 InFocus Corporation +00e048 SDL COMMUNICATIONS, INC. +00e049 MICROWI ELECTRONIC GmbH +00e04a ZX Technologies, Inc +00e04b JUMP INDUSTRIELLE COMPUTERTECHNIK GmbH +00e04c REALTEK SEMICONDUCTOR CORP. +00e04d INTERNET INITIATIVE JAPAN, INC +00e04e SANYO DENKI CO., LTD. +00e04f Cisco Systems, Inc +00e050 EXECUTONE INFORMATION SYSTEMS, INC. +00e051 TALX CORPORATION +00e052 Brocade Communications Systems, Inc. +00e053 CELLPORT LABS, INC. +00e054 KODAI HITEC CO., LTD. +00e055 INGENIERIA ELECTRONICA COMERCIAL INELCOM S.A. +00e056 HOLONTECH CORPORATION +00e057 HAN MICROTELECOM. CO., LTD. +00e058 PHASE ONE DENMARK A/S +00e059 CONTROLLED ENVIRONMENTS, LTD. +00e05a GALEA NETWORK SECURITY +00e05b WEST END SYSTEMS CORP. +00e05c PHC Corporation +00e05d UNITEC CO., LTD. +00e05e JAPAN AVIATION ELECTRONICS INDUSTRY, LTD. +00e05f e-Net, Inc. +00e060 SHERWOOD +00e061 EdgePoint Networks, Inc. +00e062 HOST ENGINEERING +00e063 Cabletron Systems, Inc. +00e064 SAMSUNG ELECTRONICS +00e065 OPTICAL ACCESS INTERNATIONAL +00e066 ProMax Systems, Inc. +00e067 eac AUTOMATION-CONSULTING GmbH +00e068 MERRIMAC SYSTEMS INC. +00e069 JAYCOR +00e06a KAPSCH AG +00e06b W&G SPECIAL PRODUCTS +00e06c Ultra Electronics Command & Control Systems +00e06d COMPUWARE CORPORATION +00e06e FAR SYSTEMS S.p.A. +00e06f ARRIS Group, Inc. +00e070 DH TECHNOLOGY +00e071 EPIS MICROCOMPUTER +00e072 LYNK +00e073 NATIONAL AMUSEMENT NETWORK, INC. +00e074 TIERNAN COMMUNICATIONS, INC. +00e075 Verilink Corporation +00e076 DEVELOPMENT CONCEPTS, INC. +00e077 WEBGEAR, INC. +00e078 BERKELEY NETWORKS +00e079 A.T.N.R. +00e07a MIKRODIDAKT AB +00e07b BAY NETWORKS +00e07c METTLER-TOLEDO, INC. +00e07d NETRONIX, INC. +00e07e WALT DISNEY IMAGINEERING +00e07f LOGISTISTEM s.r.l. +00e080 CONTROL RESOURCES CORPORATION +00e081 TYAN COMPUTER CORP. +00e082 ANERMA +00e083 JATO TECHNOLOGIES, INC. +00e084 COMPULITE R&D +00e085 GLOBAL MAINTECH, INC. +00e086 Emerson Network Power, Avocent Division +00e087 LeCroy - Networking Productions Division +00e088 LTX-Credence CORPORATION +00e089 ION Networks, Inc. +00e08a GEC AVERY, LTD. +00e08b QLogic Corporation +00e08c NEOPARADIGM LABS, INC. +00e08d PRESSURE SYSTEMS, INC. +00e08e UTSTARCOM +00e08f Cisco Systems, Inc +00e090 BECKMAN LAB. AUTOMATION DIV. +00e091 LG Electronics +00e092 ADMTEK INCORPORATED +00e093 ACKFIN NETWORKS +00e094 OSAI SRL +00e095 ADVANCED-VISION TECHNOLGIES CORP. +00e096 SHIMADZU CORPORATION +00e097 CARRIER ACCESS CORPORATION +00e098 AboCom +00e099 SAMSON AG +00e09a Positron Inc. +00e09b ENGAGE NETWORKS, INC. +00e09c MII +00e09d SARNOFF CORPORATION +00e09e Quantum Corporation +00e09f PIXEL VISION +00e0a0 WILTRON CO. +00e0a1 HIMA PAUL HILDEBRANDT GmbH Co. KG +00e0a2 MICROSLATE INC. +00e0a3 Cisco Systems, Inc +00e0a4 ESAOTE S.p.A. +00e0a5 ComCore Semiconductor, Inc. +00e0a6 TELOGY NETWORKS, INC. +00e0a7 IPC INFORMATION SYSTEMS, INC. +00e0a8 SAT GmbH & Co. +00e0a9 FUNAI ELECTRIC CO., LTD. +00e0aa ELECTROSONIC LTD. +00e0ab DIMAT S.A. +00e0ac MIDSCO, INC. +00e0ad EES TECHNOLOGY, LTD. +00e0ae XAQTI CORPORATION +00e0af GENERAL DYNAMICS INFORMATION SYSTEMS +00e0b0 Cisco Systems, Inc +00e0b1 Alcatel-Lucent Enterprise +00e0b2 TELMAX COMMUNICATIONS CORP. +00e0b3 EtherWAN Systems, Inc. +00e0b4 TECHNO SCOPE CO., LTD. +00e0b5 ARDENT COMMUNICATIONS CORP. +00e0b6 Entrada Networks +00e0b7 PI GROUP, LTD. +00e0b8 GATEWAY 2000 +00e0b9 BYAS SYSTEMS +00e0ba BERGHOF AUTOMATIONSTECHNIK GmbH +00e0bb NBX CORPORATION +00e0bc SYMON COMMUNICATIONS, INC. +00e0bd INTERFACE SYSTEMS, INC. +00e0be GENROCO INTERNATIONAL, INC. +00e0bf TORRENT NETWORKING TECHNOLOGIES CORP. +00e0c0 SEIWA ELECTRIC MFG. CO., LTD. +00e0c1 MEMOREX TELEX JAPAN, LTD. +00e0c2 NECSY S.p.A. +00e0c3 SAKAI SYSTEM DEVELOPMENT CORP. +00e0c4 HORNER ELECTRIC, INC. +00e0c5 BCOM ELECTRONICS INC. +00e0c6 LINK2IT, L.L.C. +00e0c7 EUROTECH SRL +00e0c8 VIRTUAL ACCESS, LTD. +00e0c9 AutomatedLogic Corporation +00e0ca BEST DATA PRODUCTS +00e0cb RESON, INC. +00e0cc HERO SYSTEMS, LTD. +00e0cd SAAB SENSIS CORPORATION +00e0ce ARN +00e0cf INTEGRATED DEVICE +00e0d0 NETSPEED, INC. +00e0d1 TELSIS LIMITED +00e0d2 VERSANET COMMUNICATIONS, INC. +00e0d3 DATENTECHNIK GmbH +00e0d4 EXCELLENT COMPUTER +00e0d5 Emulex Corporation +00e0d6 COMPUTER & COMMUNICATION RESEARCH LAB. +00e0d7 SUNSHINE ELECTRONICS, INC. +00e0d8 LANBit Computer, Inc. +00e0d9 TAZMO CO., LTD. +00e0da Alcatel-Lucent Enterprise +00e0db ViaVideo Communications, Inc. +00e0dc NEXWARE CORP. +00e0dd Zenith Electronics Corporation +00e0de DATAX NV +00e0df KEYMILE GmbH +00e0e0 SI ELECTRONICS, LTD. +00e0e1 G2 NETWORKS, INC. +00e0e2 INNOVA CORP. +00e0e3 SK-ELEKTRONIK GMBH +00e0e4 FANUC ROBOTICS NORTH AMERICA, Inc. +00e0e5 CINCO NETWORKS, INC. +00e0e6 INCAA Computers +00e0e7 RAYTHEON E-SYSTEMS, INC. +00e0e8 GRETACODER Data Systems AG +00e0e9 DATA LABS, INC. +00e0ea INNOVAT COMMUNICATIONS, INC. +00e0eb DIGICOM SYSTEMS, INCORPORATED +00e0ec CELESTICA INC. +00e0ed SILICOM, LTD. +00e0ee MAREL HF +00e0ef DIONEX +00e0f0 ABLER TECHNOLOGY, INC. +00e0f1 THAT CORPORATION +00e0f2 ARLOTTO COMNET, INC. +00e0f3 WebSprint Communications, Inc. +00e0f4 INSIDE Technology A/S +00e0f5 TELES AG +00e0f6 DECISION EUROPE +00e0f7 Cisco Systems, Inc +00e0f8 DICNA CONTROL AB +00e0f9 Cisco Systems, Inc +00e0fa TRL TECHNOLOGY, LTD. +00e0fb LEIGHTRONIX, INC. +00e0fc HUAWEI TECHNOLOGIES CO.,LTD +00e0fd A-TREND TECHNOLOGY CO., LTD. +00e0fe Cisco Systems, Inc +00e0ff SECURITY DYNAMICS TECHNOLOGIES, Inc. +00e16d Cisco Systems, Inc +00e175 AK-Systems Ltd +00e18c Intel Corporate +00e3b2 Samsung Electronics Co.,Ltd +00e400 Sichuan Changhong Electric Ltd. +00e666 ARIMA Communications Corp. +00e6d3 NIXDORF COMPUTER CORP. +00e6e8 Netzin Technology Corporation,.Ltd. +00e8ab Meggitt Training Systems, Inc. +00eabd Cisco Systems, Inc +00eb2d Sony Mobile Communications Inc +00ebd5 Cisco Systems, Inc +00ec0a Xiaomi Communications Co Ltd +00edb8 KYOCERA Corporation +00eeab Cisco Systems, Inc +00eebd HTC Corporation +00f051 KWB Gmbh +00f22c Shanghai B-star Technology Co.,Ltd. +00f28b Cisco Systems, Inc +00f3db WOO Sports +00f403 Orbis Systems Oy +00f46f Samsung Electronics Co.,Ltd +00f48d Liteon Technology Corporation +00f4b9 Apple, Inc. +00f620 Google, Inc. +00f663 Cisco Systems, Inc +00f76f Apple, Inc. +00f81c HUAWEI TECHNOLOGIES CO.,LTD +00f82c Cisco Systems, Inc +00f860 PT. Panggung Electric Citrabuana +00f871 DGS Denmark A/S +00fa21 Samsung Electronics Co.,Ltd +00fa3b CLOOS ELECTRONIC GMBH +00fc58 WebSilicon Ltd. +00fc70 Intrepid Control Systems, Inc. +00fc8b Amazon Technologies Inc. +00fc8d Hitron Technologies. Inc +00fcba Cisco Systems, Inc +00fd22 Cisco Systems, Inc +00fd45 Hewlett Packard Enterprise +00fd4c NEVATEC +00fec8 Cisco Systems, Inc +020701 RACAL-DATACOM +021c7c PERQ SYSTEMS CORPORATION +026086 LOGIC REPLACEMENT TECH. LTD. +02608c 3COM +027001 RACAL-DATACOM +0270b0 M/A-COM INC. COMPANIES +0270b3 DATA RECALL LTD. +029d8e CARDIAC RECORDERS, INC. +02aa3c OLIVETTI TELECOMM SPA (OLTECO) +02bb01 OCTOTHORPE CORP. +02c08c 3COM +02cf1c Communication Machinery Corporation +02e6d3 NIXDORF COMPUTER CORP. +04021f HUAWEI TECHNOLOGIES CO.,LTD +0402ca Shenzhen Vtsonic Co.,ltd +0403d6 Nintendo Co.,Ltd +0404ea Valens Semiconductor Ltd. +04072e VTech Electronics Ltd. +040973 Hewlett Packard Enterprise +0409a5 HFR, Inc. +040a83 Alcatel-Lucent +040ae0 XMIT AG COMPUTER NETWORKS +040cce Apple, Inc. +040e3c HP Inc. +040ec2 ViewSonic Mobile China Limited +041552 Apple, Inc. +0415d9 Viwone +04180f Samsung Electronics Co.,Ltd +0418b6 Private +0418d6 Ubiquiti Networks Inc. +04197f Grasphere Japan +041a04 WaveIP +041b6d LG Electronics (Mobile Communications) +041b94 Host Mobility AB +041bba Samsung Electronics Co.,Ltd +041d10 Dream Ware Inc. +041e64 Apple, Inc. +041e7a DSPWorks +041efa BISSELL Homecare, Inc. +04209a Panasonic Corporation AVC Networks Company +04214c Insight Energy Ventures LLC +042234 Wireless Standard Extensions +0425c5 HUAWEI TECHNOLOGIES CO.,LTD +042605 GFR Gesellschaft für Regelungstechnik und Energieeinsparung mbH +042665 Apple, Inc. +042758 HUAWEI TECHNOLOGIES CO.,LTD +042ae2 Cisco Systems, Inc +042bbb PicoCELA, Inc. +042db4 First Property (Beijing) Co., Ltd Modern MOMA Branch +042f56 ATOCS (Shenzhen) LTD +043110 Inspur Group Co., Ltd. +0432f4 Partron +043385 Nanchang BlackShark Co.,Ltd. +043389 HUAWEI TECHNOLOGIES CO.,LTD +043604 Gyeyoung I&T +043a0d SM Optics S.r.l. +043d98 ChongQing QingJia Electronics CO.,LTD +0440a9 New H3C Technologies Co., Ltd +044169 GoPro +0444a1 TELECON GALICIA,S.A. +044665 Murata Manufacturing Co., Ltd. +04489a Apple, Inc. +044a50 Ramaxel Technology (Shenzhen) limited company +044a6c HUAWEI TECHNOLOGIES CO.,LTD +044bed Apple, Inc. +044bff GuangZhou Hedy Digital Technology Co., Ltd +044cef Fujian Sanao Technology Co.,Ltd +044e06 Ericsson AB +044e5a ARRIS Group, Inc. +044eaf LG Innotek +044f17 HUMAX Co., Ltd. +044f4c HUAWEI TECHNOLOGIES CO.,LTD +044f8b Adapteva, Inc. +044faa Ruckus Wireless +0450da Qiku Internet Network Scientific (Shenzhen) Co., Ltd +0452c7 Bose Corporation +0452f3 Apple, Inc. +0453d5 Sysorex Global Holdings +045453 Apple, Inc. +0455ca BriView (Xiamen) Corp. +045604 Gionee Communication Equipment Co.,Ltd. +04572f Sertel Electronics UK Ltd +04586f Sichuan Whayer information industry Co.,LTD +045a95 Nokia Corporation +045c06 Zmodo Technology Corporation +045c6c Juniper Networks +045c8e gosund GROUP CO.,LTD +045d4b Sony Corporation +045d56 camtron industrial inc. +045fa7 Shenzhen Yichen Technology Development Co.,LTD +046169 MEDIA GLOBAL LINKS CO., LTD. +046273 Cisco Systems, Inc +0462d7 ALSTOM HYDRO FRANCE +0463e0 Nome Oy +046565 Testop +046785 scemtec Hard- und Software fuer Mess- und Steuerungstechnik GmbH +0469f8 Apple, Inc. +046b1b SYSDINE Co., Ltd. +046b25 SICHUAN TIANYI COMHEART TELECOM CO.,LTD +046c9d Cisco Systems, Inc +046d42 Bryston Ltd. +046e02 OpenRTLS Group +046e49 TaiYear Electronic Technology (Suzhou) Co., Ltd +0470bc Globalstar Inc. +04714b IEEE Registration Authority +0474a1 Aligera Equipamentos Digitais Ltda +047503 HUAWEI TECHNOLOGIES CO.,LTD +0475f5 CSST +04766e ALPS ELECTRIC CO., LTD. +047863 Shanghai MXCHIP Information Technology Co., Ltd. +047970 HUAWEI TECHNOLOGIES CO.,LTD +0479b7 Texas Instruments +047d50 Shenzhen Kang Ying Technology Co.Ltd. +047d7b QUANTA COMPUTER INC. +047e4a moobox CO., Ltd. +047f0e Barrot Technology Limited +04819b BSkyB Ltd +0481ae Clack Corporation +04848a 7INOVA TECHNOLOGY LIMITED +04885f HUAWEI TECHNOLOGIES CO.,LTD +04888c Eifelwerk Butler Systeme GmbH +0488e2 Beats Electronics LLC +048a15 Avaya Inc +048ae1 FLEXTRONICS MANUFACTURING(ZHUHAI)CO.,LTD. +048b42 Skspruce Technologies +048c03 ThinPAD Technology (Shenzhen)CO.,LTD +048c9a Huawei Device Co., Ltd. +048d38 Netcore Technology Inc. +049162 Microchip Technology Inc. +049226 ASUSTek COMPUTER INC. +0492ee iway AG +04946b TECNO MOBILE LIMITED +0494a1 CATCH THE WIND INC +049573 zte corporation +0495e6 Tenda Technology Co.,Ltd.Dongguan branch +049645 WUXI SKY CHIP INTERCONNECTION TECHNOLOGY CO.,LTD. +049790 Lartech telecom LLC +0498f3 ALPS ELECTRIC CO., LTD. +0499e6 Shenzhen Yoostar Technology Co., Ltd +049b9c Eadingcore Intelligent Technology Co., Ltd. +049c62 BMT Medical Technology s.r.o. +049dfe Hivesystem +049f06 Smobile Co., Ltd. +049f81 NetAlly +049fca HUAWEI TECHNOLOGIES CO.,LTD +04a151 NETGEAR +04a222 Arcadyan Corporation +04a316 Texas Instruments +04a3f3 Emicon +04a82a Nokia Corporation +04ab18 ELECOM CO.,LTD. +04ab6a Chun-il Co.,Ltd. +04ac44 Holtek Semiconductor Inc. +04b0e7 HUAWEI TECHNOLOGIES CO.,LTD +04b167 Xiaomi Communications Co Ltd +04b1a1 Samsung Electronics Co.,Ltd +04b3b6 Seamap (UK) Ltd +04b429 Samsung Electronics Co.,Ltd +04b466 BSP Co., Ltd. +04b648 ZENNER +04ba36 Li Seng Technology Ltd +04ba8d Samsung Electronics Co.,Ltd +04bbf9 Pavilion Data Systems Inc +04bc87 Shenzhen JustLink Technology Co., LTD +04bd70 HUAWEI TECHNOLOGIES CO.,LTD +04bd88 Aruba, a Hewlett Packard Enterprise Company +04bf6d Zyxel Communications Corporation +04bfa8 ISB Corporation +04c05b Tigo Energy +04c06f HUAWEI TECHNOLOGIES CO.,LTD +04c09c Tellabs Inc. +04c103 Clover Network, Inc. +04c1b9 Fiberhome Telecommunication Technologies Co.,LTD +04c23e HTC Corporation +04c241 Nokia +04c3e6 IEEE Registration Authority +04c5a4 Cisco Systems, Inc +04c807 Xiaomi Communications Co Ltd +04c880 Samtec Inc +04c991 Phistek INC. +04c9d9 Dish Technologies Corp +04cb1d Traka plc +04ce14 Wilocity LTD. +04ce7e NXP France Semiconductors France +04cf25 MANYCOLORS, INC. +04cf8c XIAOMI Electronics,CO.,LTD +04d13a Xiaomi Communications Co Ltd +04d16e IEEE Registration Authority +04d3b0 Intel Corporate +04d3cf Apple, Inc. +04d437 ZNV +04d4c4 ASUSTek COMPUTER INC. +04d590 Fortinet, Inc. +04d6aa SAMSUNG ELECTRO-MECHANICS(THAILAND) +04d783 Y&H E&C Co.,LTD. +04d7a5 New H3C Technologies Co., Ltd +04d9f5 ASUSTek COMPUTER INC. +04dad2 Cisco Systems, Inc +04db56 Apple, Inc. +04db8a Suntech International Ltd. +04dd4c Velocytech +04dedb Rockport Networks Inc +04def2 Shenzhen ECOM Technology Co. Ltd +04df69 Car Connectivity Consortium +04e0b0 Shenzhen YOUHUA Technology Co., Ltd +04e0c4 TRIUMPH-ADLER AG +04e1c8 IMS Soluções em Energia Ltda. +04e229 Qingdao Haier Technology Co.,Ltd +04e2f8 AEP Ticketing solutions srl +04e451 Texas Instruments +04e536 Apple, Inc. +04e548 Cohda Wireless Pty Ltd +04e56e THUB Co., ltd. +04e598 Xiaomi Communications Co Ltd +04e662 Acroname Inc. +04e676 AMPAK Technology, Inc. +04e9e5 PJRC.COM, LLC +04ea56 Intel Corporate +04eb40 Cisco Systems, Inc +04ecbb Fiberhome Telecommunication Technologies Co.,LTD +04ed33 Intel Corporate +04ee03 Texas Instruments +04ee91 x-fabric GmbH +04f021 Compex Systems Pte Ltd +04f128 HMD Global Oy +04f13e Apple, Inc. +04f17d Tarana Wireless +04f4bc Xena Networks +04f7e4 Apple, Inc. +04f8c2 Flaircomm Microelectronics, Inc. +04f938 HUAWEI TECHNOLOGIES CO.,LTD +04f9d9 Speaker Electronic(Jiashan) Co.,Ltd +04fa3f Opticore Inc. +04fa83 Qingdao Haier Technology Co.,Ltd +04fe31 Samsung Electronics Co.,Ltd +04fe7f Cisco Systems, Inc +04fe8d HUAWEI TECHNOLOGIES CO.,LTD +04fea1 Fihonest communication co.,Ltd +04ff51 NOVAMEDIA INNOVISION SP. Z O.O. +080001 COMPUTERVISION CORPORATION +080002 BRIDGE COMMUNICATIONS INC. +080003 ADVANCED COMPUTER COMM. +080004 CROMEMCO INCORPORATED +080005 SYMBOLICS INC. +080006 SIEMENS AG +080007 Apple, Inc. +080008 BOLT BERANEK AND NEWMAN INC. +080009 Hewlett Packard +08000a NESTAR SYSTEMS INCORPORATED +08000b UNISYS CORPORATION +08000c MIKLYN DEVELOPMENT CO. +08000d International Computers, Ltd +08000e NCR CORPORATION +08000f MITEL CORPORATION +080011 TEKTRONIX INC. +080012 BELL ATLANTIC INTEGRATED SYST. +080013 Exxon +080014 EXCELAN +080015 STC BUSINESS SYSTEMS +080016 BARRISTER INFO SYS CORP +080017 NATIONAL SEMICONDUCTOR +080018 PIRELLI FOCOM NETWORKS +080019 GENERAL ELECTRIC CORPORATION +08001a TIARA/ 10NET +08001b Dell EMC +08001c KDD-KOKUSAI DEBNSIN DENWA CO. +08001d ABLE COMMUNICATIONS INC. +08001e APOLLO COMPUTER INC. +08001f SHARP CORPORATION +080020 Oracle Corporation +080021 3M COMPANY +080022 NBI INC. +080023 Panasonic Communications Co., Ltd. +080024 10NET COMMUNICATIONS/DCA +080025 CONTROL DATA +080026 NORSK DATA A.S. +080027 PCS Systemtechnik GmbH +080028 Texas Instruments +080029 Megatek Corporation +08002a MOSAIC TECHNOLOGIES INC. +08002b DIGITAL EQUIPMENT CORPORATION +08002c BRITTON LEE INC. +08002d LAN-TEC INC. +08002e METAPHOR COMPUTER SYSTEMS +08002f PRIME COMPUTER INC. +080030 CERN +080030 NETWORK RESEARCH CORPORATION +080030 ROYAL MELBOURNE INST OF TECH +080031 LITTLE MACHINES INC. +080032 TIGAN INCORPORATED +080033 BAUSCH & LOMB +080034 FILENET CORPORATION +080035 MICROFIVE CORPORATION +080036 INTERGRAPH CORPORATION +080037 FUJI-XEROX CO. LTD. +080038 BULL S.A.S. +080039 SPIDER SYSTEMS LIMITED +08003a ORCATECH INC. +08003b TORUS SYSTEMS LIMITED +08003c SCHLUMBERGER WELL SERVICES +08003d CADNETIX CORPORATIONS +08003e CODEX CORPORATION +08003f FRED KOSCHARA ENTERPRISES +080040 FERRANTI COMPUTER SYS. LIMITED +080041 RACAL-MILGO INFORMATION SYS.. +080042 JAPAN MACNICS CORP. +080043 PIXEL COMPUTER INC. +080044 DAVID SYSTEMS INC. +080045 CONCURRENT COMPUTER CORP. +080046 Sony Corporation +080047 SEQUENT COMPUTER SYSTEMS INC. +080048 EUROTHERM GAUGING SYSTEMS +080049 UNIVATION +08004a BANYAN SYSTEMS INC. +08004b Planning Research Corp. +08004c HYDRA COMPUTER SYSTEMS INC. +08004d CORVUS SYSTEMS INC. +08004e 3COM EUROPE LTD +08004f CYGNET SYSTEMS +080050 DAISY SYSTEMS CORP. +080051 ExperData +080052 INSYSTEC +080053 MIDDLE EAST TECH. UNIVERSITY +080055 STANFORD TELECOMM. INC. +080056 STANFORD LINEAR ACCEL. CENTER +080057 Evans & Sutherland +080058 SYSTEMS CONCEPTS +080059 A/S MYCRON +08005a IBM Corp +08005b VTA TECHNOLOGIES INC. +08005c FOUR PHASE SYSTEMS +08005d GOULD INC. +08005e COUNTERPOINT COMPUTER INC. +08005f SABER TECHNOLOGY CORP. +080060 INDUSTRIAL NETWORKING INC. +080061 JAROGATE LTD. +080062 General Dynamics +080063 PLESSEY +080064 Sitasys AG +080065 GENRAD INC. +080066 AGFA CORPORATION +080067 ComDesign +080068 RIDGE COMPUTERS +080069 Silicon Graphics +08006a AT&T +08006b ACCEL TECHNOLOGIES INC. +08006c SUNTEK TECHNOLOGY INT'L +08006d WHITECHAPEL COMPUTER WORKS +08006e MASSCOMP +08006f PHILIPS APELDOORN B.V. +080070 Mitsubishi Precision Co.,LTd. +080071 MATRA (DSIE) +080072 XEROX CORP UNIV GRANT PROGRAM +080073 TECMAR INC. +080074 CASIO COMPUTER CO. LTD. +080075 DANSK DATA ELECTRONIK +080076 PC LAN TECHNOLOGIES +080077 TSL COMMUNICATIONS LTD. +080078 ACCELL CORPORATION +080079 THE DROID WORKS +08007a INDATA +08007b SANYO ELECTRIC CO. LTD. +08007c VITALINK COMMUNICATIONS CORP. +08007e AMALGAMATED WIRELESS(AUS) LTD +08007f CARNEGIE-MELLON UNIVERSITY +080080 AES DATA INC. +080081 ASTECH INC. +080082 VERITAS SOFTWARE +080083 Seiko Instruments Inc. +080084 TOMEN ELECTRONICS CORP. +080085 ELXSI +080086 KONICA MINOLTA HOLDINGS, INC. +080087 Xyplex, Inc. +080088 Brocade Communications Systems, Inc. +080089 Kinetics +08008a PerfTech, Inc. +08008b PYRAMID TECHNOLOGY CORP. +08008c NETWORK RESEARCH CORPORATION +08008d XYVISION INC. +08008e Tandem Computers +08008f CHIPCOM CORPORATION +080090 SONOMA SYSTEMS +08010f SICHUAN TIANYI COMHEART TELECOMCO.,LTD +08028e NETGEAR +080371 KRG CORPORATE +080581 Roku, Inc. +0805cd DongGuang EnMai Electronic Product Co.Ltd. +0808c2 Samsung Electronics Co.,Ltd +0808ea AMSC +0809b6 Masimo Corp +080a4e Planet Bingo® — 3rd Rock Gaming® +080c0b SysMik GmbH Dresden +080cc9 Mission Technology Group, dba Magma +080d84 GECO, Inc. +080ea8 Velex s.r.l. +080ffa KSP INC. +08115e Bitel Co., Ltd. +081196 Intel Corporate +0812a5 Amazon Technologies Inc. +081443 UNIBRAIN S.A. +08152f Samsung Electronics Co., Ltd. ARTIK +081651 SHENZHEN SEA STAR TECHNOLOGY CO.,LTD +081735 Cisco Systems, Inc +0817f4 IBM Corp +08181a zte corporation +08184c A. S. Thomas, Inc. +0819a6 HUAWEI TECHNOLOGIES CO.,LTD +081dc4 Thermo Fisher Scientific Messtechnik GmbH +081dfb Shanghai Mexon Communication Technology Co.,Ltd +081f3f WondaLink Inc. +081f71 TP-LINK TECHNOLOGIES CO.,LTD. +081feb BinCube +081ff3 Cisco Systems, Inc +0821ef Samsung Electronics Co.,Ltd +0823b2 vivo Mobile Communication Co., Ltd. +082522 ADVANSEE +082525 Xiaomi Communications Co Ltd +082697 Zyxel Communications Corporation +082719 APS systems/electronic AG +0827ce NAGANO KEIKI CO., LTD. +082ad0 SRD Innovations Inc. +082cb0 Network Instruments +082e5f Hewlett Packard +08306b Palo Alto Networks +08318b HUAWEI TECHNOLOGIES CO.,LTD +08351b Shenzhen Jialihua Electronic Technology Co., Ltd +083571 CASwell INC. +0835b2 CoreEdge Networks Co., Ltd +0836c9 NETGEAR +08373d Samsung Electronics Co.,Ltd +08379c Topaz Co. LTD. +0838a5 Funkwerk plettac electronic GmbH +083a2f Guangzhou Juan Intelligent Tech Joint Stock Co.,Ltd +083a5c Junilab, Inc. +083a88 Universal Global Scientific Industrial Co., Ltd. +083ab8 Shinoda Plasma Co., Ltd. +083d88 Samsung Electronics Co.,Ltd +083e0c ARRIS Group, Inc. +083e5d Sagemcom Broadband SAS +083e8e Hon Hai Precision Ind. Co.,Ltd. +083f3e WSH GmbH +083f76 Intellian Technologies, Inc. +083fbc zte corporation +084027 Gridstore Inc. +0840f3 Tenda Technology Co.,Ltd.Dongguan branch +084656 VEO-LABS +0847d0 Nokia Shanghai Bell Co., Ltd. +08482c Raycore Taiwan Co., LTD. +084acf GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD +084e1c H2A Systems, LLC +084ebf Broad Net Mux Corporation +084f0a HUAWEI TECHNOLOGIES CO.,LTD +084fa9 Cisco Systems, Inc +084ff9 Cisco Systems, Inc +085114 QINGDAO TOPSCOMM COMMUNICATION CO., LTD +08512e Orion Diagnostica Oy +085240 EbV Elektronikbau- und Vertriebs GmbH +085700 TP-LINK TECHNOLOGIES CO.,LTD. +085ae0 Recovision Technology Co., Ltd. +085b0e Fortinet, Inc. +085bda CliniCare LTD +085ddd MERCURY CORPORATION +08606e ASUSTek COMPUTER INC. +086083 zte corporation +086195 Rockwell Automation +086266 ASUSTek COMPUTER INC. +086361 HUAWEI TECHNOLOGIES CO.,LTD +08661f Palo Alto Networks +086698 Apple, Inc. +08674e Hisense broadband multimedia technology Co.,Ltd +08688d New H3C Technologies Co., Ltd +0868d0 Japan System Design +0868ea EITO ELECTRONICS CO., LTD. +086a0a ASKEY COMPUTER CORP +086bd7 Silicon Laboratories +086d41 Apple, Inc. +086df2 Shenzhen MIMOWAVE Technology Co.,Ltd +087045 Apple, Inc. +087190 Intel Corporate +087402 Apple, Inc. +0874f6 Winterhalter Gastronom GmbH +087572 Obelux Oy +087618 ViE Technologies Sdn. Bhd. +087695 Auto Industrial Co., Ltd. +0876ff Thomson Telecom Belgium +087808 Samsung Electronics Co.,Ltd +087999 AIM GmbH +087a4c HUAWEI TECHNOLOGIES CO.,LTD +087baa SVYAZKOMPLEKTSERVICE, LLC +087cbe Quintic Corp. +087d21 Altasec technology corporation +087e64 Technicolor CH USA Inc. +087f98 vivo Mobile Communication Co., Ltd. +088039 Cisco SPVTG +0881bc HongKong Ipro Technology Co., Limited +0881f4 Juniper Networks +088466 Novartis Pharma AG +08849d Amazon Technologies Inc. +088620 TECNO MOBILE LIMITED +08863b Belkin International Inc. +088c2c Samsung Electronics Co.,Ltd +088dc8 Ryowa Electronics Co.,Ltd +088e4f SF Software Solutions +088f2c Hills Sound Vision & Lighting +0890ba Danlaw Inc +0894ef Wistron Infocomm (Zhongshan) Corporation +08952a Technicolor CH USA Inc. +0896ad Cisco Systems, Inc +0896d7 AVM GmbH +089734 Hewlett Packard Enterprise +089758 Shenzhen Strong Rising Electronics Co.,Ltd DongGuan Subsidiary +089798 COMPAL INFORMATION (KUNSHAN) CO., LTD. +089b4b iKuai Networks +089c86 Nokia Shanghai Bell Co., Ltd. +089e01 QUANTA COMPUTER INC. +089e08 Google, Inc. +089f97 LEROY AUTOMATION +08a12b ShenZhen EZL Technology Co., Ltd +08a5c8 Sunnovo International Limited +08a6bc Amazon Technologies Inc. +08a8a1 Cyclotronics Power Concepts, Inc +08a95a AzureWave Technology Inc. +08aca5 Benu Video, Inc. +08aed6 Samsung Electronics Co.,Ltd +08af78 Totus Solutions, Inc. +08b258 Juniper Networks +08b2a3 Cynny Italia S.r.L. +08b3af vivo Mobile Communication Co., Ltd. +08b4cf Abicom International +08b738 Lite-On Technogy Corp. +08b7ec Wireless Seismic +08ba22 Swaive Corporation +08ba5f Qingdao Hisense Electronics Co.,Ltd. +08bbcc AK-NORD EDV VERTRIEBSGES. mbH +08bc20 Hangzhou Royal Cloud Technology Co., Ltd +08bd43 NETGEAR +08be09 Astrol Electronic AG +08be77 Green Electronics +08beac Edimax Technology Co. Ltd. +08c021 HUAWEI TECHNOLOGIES CO.,LTD +08c5e1 SAMSUNG ELECTRO-MECHANICS(THAILAND) +08c6b3 QTECH LLC +08ca45 Toyou Feiji Electronics Co., Ltd. +08cc68 Cisco Systems, Inc +08cca7 Cisco Systems, Inc +08cd9b samtec automotive electronics & software GmbH +08d09f Cisco Systems, Inc +08d0b7 Qingdao Hisense Communications Co.,Ltd. +08d29a Proformatique +08d34b Techman Electronics (Changshu) Co., Ltd. +08d40c Intel Corporate +08d42b Samsung Electronics Co.,Ltd +08d46a LG Electronics (Mobile Communications) +08d59d Sagemcom Broadband SAS +08d5c0 Seers Technology Co., Ltd +08d833 Shenzhen RF Technology Co., Ltd +08df1f Bose Corporation +08dfcb Systrome Networks +08e5da NANJING FUJITSU COMPUTER PRODUCTS CO.,LTD. +08e672 JEBSEE ELECTRONICS CO.,LTD. +08e689 Apple, Inc. +08e84f HUAWEI TECHNOLOGIES CO.,LTD +08ea40 SHENZHEN BILIAN ELECTRONIC CO.,LTD +08ea44 Aerohive Networks Inc. +08eb29 Jiangsu Huitong Group Co.,Ltd. +08eb74 HUMAX Co., Ltd. +08ebed World Elite Technology Co.,LTD +08eca9 Samsung Electronics Co.,Ltd +08ecf5 Cisco Systems, Inc +08ed02 IEEE Registration Authority +08edb9 Hon Hai Precision Ind. Co.,Ltd. +08eded Zhejiang Dahua Technology Co., Ltd. +08ee8b Samsung Electronics Co.,Ltd +08ef3b MCS Logic Inc. +08efab SAYME WIRELESS SENSOR NETWORK +08f1b7 Towerstream Corpration +08f1ea Hewlett Packard Enterprise +08f2f4 Net One Partners Co.,Ltd. +08f4ab Apple, Inc. +08f69c Apple, Inc. +08f6f8 GET Engineering +08f728 GLOBO Multimedia Sp. z o.o. Sp.k. +08fae0 Fohhn Audio AG +08fc52 OpenXS BV +08fc88 Samsung Electronics Co.,Ltd +08fd0e Samsung Electronics Co.,Ltd +0c01db Infinix mobility limited +0c0227 Technicolor CH USA Inc. +0c0400 Jantar d.o.o. +0c0535 Juniper Systems +0c08b4 HUMAX Co., Ltd. +0c1105 AKUVOX (XIAMEN) NETWORKS CO., LTD +0c1167 Cisco Systems, Inc +0c1262 zte corporation +0c130b Uniqoteq Ltd. +0c1420 Samsung Electronics Co.,Ltd +0c1539 Apple, Inc. +0c15c5 SDTEC Co., Ltd. +0c17f1 TELECSYS +0c191f Inform Electronik +0c1a10 Acoustic Stream +0c1c19 LONGCONN ELECTRONICS(SHENZHEN) CO.,LTD +0c1c20 Kakao Corp +0c1c57 Texas Instruments +0c1daf Xiaomi Communications Co Ltd +0c1dc2 SeAH Networks +0c2026 noax Technologies AG +0c20d3 vivo Mobile Communication Co., Ltd. +0c2138 Hengstler GmbH +0c2369 Honeywell SPS +0c2576 LONGCHEER TELECOMMUNICATION LIMITED +0c2724 Cisco Systems, Inc +0c2755 Valuable Techologies Limited +0c2a69 electric imp, incorporated +0c2a86 Fiberhome Telecommunication Technologies Co.,LTD +0c2ae7 Beijing General Research Institute of Mining and Metallurgy +0c2c54 HUAWEI TECHNOLOGIES CO.,LTD +0c2d89 QiiQ Communications Inc. +0c2fb0 Samsung Electronics Co.,Ltd +0c3021 Apple, Inc. +0c3747 zte corporation +0c37dc HUAWEI TECHNOLOGIES CO.,LTD +0c383e Fanvil Technology Co., Ltd. +0c3956 Observator instruments +0c3c65 Dome Imaging Inc +0c3ccd Universal Global Scientific Industrial Co., Ltd. +0c3e9f Apple, Inc. +0c4101 Ruichi Auto Technology (Guangzhou) Co., Ltd. +0c413e Microsoft Corporation +0c41e9 HUAWEI TECHNOLOGIES CO.,LTD +0c45ba HUAWEI TECHNOLOGIES CO.,LTD +0c469d MS Sedco +0c473d Hitron Technologies. Inc +0c47c9 Amazon Technologies Inc. +0c4885 LG Electronics (Mobile Communications) +0c4933 Sichuan Jiuzhou Electronic Technology Co., Ltd. +0c4b54 TP-LINK TECHNOLOGIES CO.,LTD. +0c4c39 MitraStar Technology Corp. +0c4de9 Apple, Inc. +0c4f5a ASA-RT s.r.l. +0c5101 Apple, Inc. +0c51f7 CHAUVIN ARNOUX +0c5203 AGM GROUP LIMITED +0c5331 ETH Zurich +0c5415 Intel Corporate +0c54a5 PEGATRON CORPORATION +0c54b9 Nokia +0c5521 Axiros GmbH +0c565c HyBroad Vision (Hong Kong) Technology Co Ltd +0c57eb Mueller Systems +0c5842 DME Micro +0c5a19 Axtion Sdn Bhd +0c5a9e Wi-SUN Alliance +0c5cd8 DOLI Elektronik GmbH +0c5f35 Niagara Video Corporation +0c6076 Hon Hai Precision Ind. Co.,Ltd. +0c6111 Anda Technologies SAC +0c6127 Actiontec Electronics, Inc +0c61cf Texas Instruments +0c62a6 Hui Zhou Gaoshengda Technology Co.,LTD +0c63fc Nanjing Signway Technology Co., Ltd +0c6803 Cisco Systems, Inc +0c6abc Fiberhome Telecommunication Technologies Co.,LTD +0c6ae6 Stanley Security Solutions +0c6e4f PrimeVOLT Co., Ltd. +0c6f9c Shaw Communications Inc. +0c704a HUAWEI TECHNOLOGIES CO.,LTD +0c715d Samsung Electronics Co.,Ltd +0c722c TP-LINK TECHNOLOGIES CO.,LTD. +0c72d9 zte corporation +0c73be Dongguan Haimai Electronie Technology Co.,Ltd +0c73eb IEEE Registration Authority +0c74c2 Apple, Inc. +0c7512 Shenzhen Kunlun TongTai Technology Co.,Ltd. +0c7523 BEIJING GEHUA CATV NETWORK CO.,LTD +0c756c Anaren Microwave, Inc. +0c75bd Cisco Systems, Inc +0c771a Apple, Inc. +0c7c28 Nokia +0c7d7c Kexiang Information Technology Co, Ltd. +0c8063 TP-LINK TECHNOLOGIES CO.,LTD. +0c8112 Private +0c8126 Juniper Networks +0c8230 SHENZHEN MAGNUS TECHNOLOGIES CO.,LTD +0c8268 TP-LINK TECHNOLOGIES CO.,LTD. +0c826a Wuhan Huagong Genuine Optics Technology Co., Ltd +0c8411 A.O. Smith Water Products +0c8484 Zenovia Electronics Inc. +0c84dc Hon Hai Precision Ind. Co.,Ltd. +0c8525 Cisco Systems, Inc +0c8610 Juniper Networks +0c8910 Samsung Electronics Co.,Ltd +0c8a87 AgLogica Holdings, Inc +0c8bd3 ITEL MOBILE LIMITED +0c8bfd Intel Corporate +0c8c24 SHENZHEN BILIAN ELECTRONIC CO.,LTD +0c8c8f Kamo Technology Limited +0c8cdc Suunto Oy +0c8d98 TOP EIGHT IND CORP +0c8ddb Cisco Meraki +0c8fff HUAWEI TECHNOLOGIES CO.,LTD +0c9160 Hui Zhou Gaoshengda Technology Co.,LTD +0c924e Rice Lake Weighing Systems +0c9301 PT. Prasimax Inovasi Teknologi +0c93fb BNS Solutions +0c9541 CHIPSEA TECHNOLOGIES (SHENZHEN) CORP. +0c96bf HUAWEI TECHNOLOGIES CO.,LTD +0c96e6 Cloud Network Technology (Samoa) Limited +0c9838 Xiaomi Communications Co Ltd +0c9a42 FN-LINK TECHNOLOGY LIMITED +0c9b13 Shanghai Magic Mobile Telecommunication Co.Ltd. +0c9d56 Consort Controls Ltd +0c9d92 ASUSTek COMPUTER INC. +0c9e91 Sankosha Corporation +0ca06c Industrial Cyber Sensing Inc. +0ca138 Blinq Wireless Inc. +0ca2f4 Chameleon Technology (UK) Limited +0ca402 Alcatel-Lucent IPD +0ca42a OB Telecom Electronic Technology Co., Ltd +0ca694 Sunitec Enterprise Co.,Ltd +0ca8a7 Samsung Electronics Co.,Ltd +0cac05 Unitend Technologies Inc. +0cae7d Texas Instruments +0caf5a GENUS POWER INFRASTRUCTURES LIMITED +0cb2b7 Texas Instruments +0cb319 Samsung Electronics Co.,Ltd +0cb34f Shenzhen Xiaoqi Intelligent Technology Co., Ltd. +0cb459 Marketech International Corp. +0cb4a4 Xintai Automobile Intelligent Network Technology +0cb4ef Digience Co.,Ltd. +0cb527 HUAWEI TECHNOLOGIES CO.,LTD +0cb5de Alcatel Lucent +0cb6d2 D-Link International +0cb771 ARRIS Group, Inc. +0cb912 JM-DATA GmbH +0cb937 Ubee Interactive Co., Limited +0cbc9f Apple, Inc. +0cbd51 TCT mobile ltd +0cbf15 Genetec Inc. +0cbf3f Shenzhen Lencotion Technology Co.,Ltd +0cbf74 Morse Micro +0cc0c0 MAGNETI MARELLI SISTEMAS ELECTRONICOS MEXICO +0cc3a7 Meritec +0cc47a Super Micro Computer, Inc. +0cc47e EUCAST Co., Ltd. +0cc655 Wuxi YSTen Technology Co.,Ltd. +0cc66a Nokia Corporation +0cc6ac DAGS +0cc6cc HUAWEI TECHNOLOGIES CO.,LTD +0cc731 Currant, Inc. +0cc81f Summer Infant, Inc. +0cc9c6 Samwin Hong Kong Limited +0ccb85 Motorola Mobility LLC, a Lenovo Company +0ccb8d ASCO Numatics GmbH +0ccc26 Airenetworks +0ccdd3 EASTRIVER TECHNOLOGY CO., LTD. +0ccdfb EDIC Systems Inc. +0ccef6 Guizhou Fortuneship Technology Co., Ltd +0ccfd1 SPRINGWAVE Co., Ltd +0cd0f8 Cisco Systems, Inc +0cd292 Intel Corporate +0cd2b5 Binatone Telecommunication Pvt. Ltd +0cd502 Westell Technologies Inc. +0cd696 Amimon Ltd +0cd6bd HUAWEI TECHNOLOGIES CO.,LTD +0cd746 Apple, Inc. +0cd7c2 Axium Technologies, Inc. +0cd86c SHENZHEN FAST TECHNOLOGIES CO.,LTD +0cd996 Cisco Systems, Inc +0cd9c1 Visteon Corporation +0cda41 Hangzhou H3C Technologies Co., Limited +0cdccc Inala Technologies +0cdd24 Intel Corporate +0cddef Nokia Corporation +0cdfa4 Samsung Electronics Co.,Ltd +0ce041 iDruide +0ce0dc Samsung Electronics Co.,Ltd +0ce0e4 PLANTRONICS, INC. +0ce5d3 DH electronics GmbH +0ce709 Fox Crypto B.V. +0ce725 Microsoft Corporation +0ce82f Bonfiglioli Vectron GmbH +0ce936 ELIMOS srl +0ce99a ATLS ALTEC +0ceac9 ARRIS Group, Inc. +0cec84 Shenzhen TINNO Mobile Technology Corp. +0ceee6 Hon Hai Precision Ind. Co.,Ltd. +0cef7c AnaCom Inc +0cefaf IEEE Registration Authority +0cf019 Malgn Technology Co., Ltd. +0cf0b4 Globalsat International Technology Ltd +0cf346 Xiaomi Communications Co Ltd +0cf361 Java Information +0cf3ee EM Microelectronic +0cf405 Beijing Signalway Technologies Co.,Ltd +0cf475 Zliide Technologies ApS +0cf4d5 Ruckus Wireless +0cf5a4 Cisco Systems, Inc +0cf893 ARRIS Group, Inc. +0cf9c0 BSkyB Ltd +0cfc83 Airoha Technology Corp., +0cfd37 SUSE Linux GmbH +0cfe45 Sony Interactive Entertainment Inc. +0cfe5d IEEE Registration Authority +100000 Private +10005a IBM Corp +1000e8 NATIONAL SEMICONDUCTOR +1000fd LaonPeople +100177 HUAWEI TECHNOLOGIES CO.,LTD +1001ca Ashley Butterworth +1002b5 Intel Corporate +100501 PEGATRON CORPORATION +1005b1 ARRIS Group, Inc. +1005ca Cisco Systems, Inc +100723 IEEE Registration Authority +1007b6 Samsung Electronics Co.,Ltd +1008b1 Hon Hai Precision Ind. Co.,Ltd. +10090c Janome Sewing Machine Co., Ltd. +100ba9 Intel Corporate +100c24 pomdevices, LLC +100c6b NETGEAR +100d2f Online Security Pty. Ltd. +100d32 Embedian, Inc. +100d7f NETGEAR +100e2b NEC CASIO Mobile Communications +100e7e Juniper Networks +100f18 Fu Gang Electronic(KunShan)CO.,LTD +1010b6 McCain Inc +101212 Vivo International Corporation Pty Ltd +101218 Korins Inc. +101248 ITG, Inc. +101250 Integrated Device Technology (Malaysia) Sdn. Bhd. +1012b4 SICHUAN TIANYI COMHEART TELECOM CO.,LTD +101331 Technicolor +1013ee Justec International Technology INC. +10189e Elmo Motion Control +101b54 HUAWEI TECHNOLOGIES CO.,LTD +101c0c Apple, Inc. +101d51 8Mesh Networks Limited +101dc0 Samsung Electronics Co.,Ltd +101f74 Hewlett Packard +102279 ZeroDesktop, Inc. +1027be TVIP +102831 Morion Inc. +102ab3 Xiaomi Communications Co Ltd +102c6b AMPAK Technology, Inc. +102c83 XIMEA +102d96 Looxcie Inc. +102eaf Texas Instruments +102f6b Microsoft Corporation +102fa3 Shenzhen Uvision-tech Technology Co.Ltd +103025 Apple, Inc. +103034 Cara Systems +103047 Samsung Electronics Co.,Ltd +10327e Huawei Device Co., Ltd. +103378 FLECTRON Co., LTD +1033bf Technicolor CH USA Inc. +103711 Simlink AS +103b59 Samsung Electronics Co.,Ltd +103d0a Hui Zhou Gaoshengda Technology Co.,LTD +103d3e China Mobile Group Device Co.,Ltd. +103dea HFC Technology (Beijing) Ltd. Co. +1040f3 Apple, Inc. +10417f Apple, Inc. +104369 Soundmax Electronic Limited +104400 HUAWEI TECHNOLOGIES CO.,LTD +10445a Shaanxi Hitech Electronic Co., LTD +1045be Norphonic AS +1045f8 LNT-Automation GmbH +1046b4 FormericaOE +104780 HUAWEI TECHNOLOGIES CO.,LTD +1048b1 Beijing Duokan Technology Limited +104963 HARTING K.K. +104a7d Intel Corporate +104b46 Mitsubishi Electric Corporation +104d77 Innovative Computer Engineering +104e07 Shanghai Genvision Industries Co.,Ltd +104e89 Garmin International +104fa8 Sony Corporation +105172 HUAWEI TECHNOLOGIES CO.,LTD +105611 ARRIS Group, Inc. +1056ca Peplink International Ltd. +105887 Fiberhome Telecommunication Technologies Co.,LTD +105917 Tonal +105af7 ADB Italia +105bad Mega Well Limited +105c3b Perma-Pipe, Inc. +105cbf DuroByte Inc +105f06 Actiontec Electronics, Inc +105f49 Cisco SPVTG +10604b Hewlett Packard +1062c9 Adatis GmbH & Co. KG +1062d0 Technicolor CH USA Inc. +1062e5 Hewlett Packard +1062eb D-Link International +1063c8 Liteon Technology Corporation +1064e2 ADFweb.com s.r.l. +106530 Dell Inc. +1065a3 Core Brands LLC +1065cf IQSIM +106682 NEC Platforms, Ltd. +10683f LG Electronics (Mobile Communications) +106f3f BUFFALO.INC +106fef Ad-Sol Nissin Corp +1071f9 Cloud Telecomputers, LLC +107223 TELLESCOM INDUSTRIA E COMERCIO EM TELECOMUNICACAO +10768a EoCell +107717 SHENZHEN CHUANGWEI-RGB ELECTRONICS CO.,LTD +1077b0 Fiberhome Telecommunication Technologies Co.,LTD +1077b1 Samsung Electronics Co.,Ltd +10785b Actiontec Electronics, Inc +107873 Shenzhen Jinkeyi Communication Co., Ltd. +1078ce Hanvit SI, Inc. +1078d2 Elitegroup Computer Systems Co.,Ltd. +107a86 U&U ENGINEERING INC. +107b44 ASUSTek COMPUTER INC. +107ba4 Olive & Dove Co.,Ltd. +107bef Zyxel Communications Corporation +107d1a Dell Inc. +1081b4 Hunan Greatwall Galaxy Science and Technology Co.,Ltd. +108286 Luxshare Precision Industry Co.,Ltd +1083d2 Microseven Systems, LLC +10868c ARRIS Group, Inc. +10880f Daruma Telecomunicações e Informática S.A. +1088ce Fiberhome Telecommunication Technologies Co.,LTD +108a1b RAONIX Inc. +108ccf Cisco Systems, Inc +108eba Molekule +108ee0 Samsung Electronics Co.,Ltd +109266 Samsung Electronics Co.,Ltd +109397 ARRIS Group, Inc. +1093e9 Apple, Inc. +1094bb Apple, Inc. +10954b Megabyte Ltd. +109836 Dell Inc. +1098c3 Murata Manufacturing Co., Ltd. +109ab9 Tosibox Oy +109add Apple, Inc. +109c70 Prusa Research s.r.o. +109e3a Zhejiang Tmall Technology Co., Ltd. +109fa9 Actiontec Electronics, Inc +10a13b FUJIKURA RUBBER LTD. +10a24e GOLD3LINK ELECTRONICS CO., LTD +10a3b8 Iskratel d.o.o. +10a4b9 Baidu Online Network Technology (Beijing) Co., Ltd +10a4be SHENZHEN BILIAN ELECTRONIC CO.,LTD +10a5d0 Murata Manufacturing Co., Ltd. +10a659 Mobile Create Co.,Ltd. +10a743 SK Mtek Limited +10a932 Beijing Cyber Cloud Technology Co. ,Ltd. +10ae60 Private +10af78 Shenzhen ATUE Technology Co., Ltd +10b1f8 HUAWEI TECHNOLOGIES CO.,LTD +10b26b base Co.,Ltd. +10b36f Bowei Technology Company Limited +10b3c6 Cisco Systems, Inc +10b3d5 Cisco Systems, Inc +10b3d6 Cisco Systems, Inc +10b713 Private +10b7f6 Plastoform Industries Ltd. +10b9f7 Niko-Servodan +10b9fe Lika srl +10baa5 GANA I&C CO., LTD +10bd18 Cisco Systems, Inc +10bd55 Q-Lab Corporation +10bef5 D-Link International +10bf48 ASUSTek COMPUTER INC. +10c07c Blu-ray Disc Association +10c172 HUAWEI TECHNOLOGIES CO.,LTD +10c22f China Entropy Co., Ltd. +10c25a Technicolor CH USA Inc. +10c2ba UTT Co., Ltd. +10c37b ASUSTek COMPUTER INC. +10c586 BIO SOUND LAB CO., LTD. +10c595 Lenovo +10c60c Domino UK Ltd +10c61f HUAWEI TECHNOLOGIES CO.,LTD +10c67e SHENZHEN JUCHIN TECHNOLOGY CO., LTD +10c6fc Garmin International +10c73f Midas Klark Teknik Ltd +10c753 Qingdao Intelligent&Precise Electronics Co.,Ltd. +10ca81 PRECIA +10cc1b Liverock technologies,INC +10ccdb AXIMUM PRODUITS ELECTRONIQUES +10cd6e FISYS +10cdae Avaya Inc +10cdb6 Essential Products, Inc. +10cea9 Texas Instruments +10d07a AMPAK Technology, Inc. +10d0ab zte corporation +10d1dc INSTAR Deutschland GmbH +10d38a Samsung Electronics Co.,Ltd +10d542 Samsung Electronics Co.,Ltd +10da43 NETGEAR +10dc4a Fiberhome Telecommunication Technologies Co.,LTD +10dcb6 IEEE Registration Authority +10ddb1 Apple, Inc. +10ddf4 Maxway Electronics CO.,LTD +10dee4 automationNEXT GmbH +10df8b Shenzhen CareDear Communication Technology Co.,Ltd +10dffc Siemens AG +10e2d5 Qi Hardware Inc. +10e3c7 Seohwa Telecom +10e4af APR, LLC +10e68f KWANGSUNG ELECTRONICS KOREA CO.,LTD. +10e6ae Source Technologies, LLC +10e7c6 Hewlett Packard +10e878 Nokia +10e8ee PhaseSpace +10e953 Huawei Device Co., Ltd. +10ea59 Cisco SPVTG +10eed9 Canoga Perkins Corporation +10f005 Intel Corporate +10f163 TNK CO.,LTD +10f1f2 LG Electronics (Mobile Communications) +10f311 Cisco Systems, Inc +10f3db Gridco Systems, Inc. +10f49a T3 Innovation +10f681 vivo Mobile Communication Co., Ltd. +10f96f LG Electronics (Mobile Communications) +10f9eb Industria Fueguina de Relojería Electrónica s.a. +10f9ee Nokia Corporation +10face Reacheng Communication Technology Co.,Ltd +10fbf0 KangSheng LTD. +10fc54 Shany Electronic Co., Ltd. +10fcb6 mirusystems CO.,LTD +10feed TP-LINK TECHNOLOGIES CO.,LTD. +1100aa Private +111111 Private +1402ec Hewlett Packard Enterprise +140467 SNK Technologies Co.,Ltd. +140708 Private +1407e0 Abrantix AG +1409dc HUAWEI TECHNOLOGIES CO.,LTD +140c5b PLNetworks +140c76 FREEBOX SAS +140d4f Flextronics International +140f42 Nokia +14109f Apple, Inc. +141114 TECNO MOBILE LIMITED +141330 Anakreon UK LLP +141346 Skyworth Digital Technology(Shenzhen) Co.,Ltd +141357 ATP Electronics, Inc. +14144b Ruijie Networks Co.,LTD +1414e6 Ningbo Sanhe Digital Co.,Ltd +14157c TOKYO COSMOS ELECTRIC CO.,LTD. +14169e Wingtech Group (HongKong)Limited +141877 Dell Inc. +141a51 Treetech Sistemas Digitais +141aa3 Motorola Mobility LLC, a Lenovo Company +141bbd Volex Inc. +141bf0 Intellimedia Systems Ltd +141f78 Samsung Electronics Co.,Ltd +141fba IEEE Registration Authority +14205e Apple, Inc. +142233 Fiberhome Telecommunication Technologies Co.,LTD +1422db eero inc. +1423d7 EUTRONIX CO., LTD. +142475 4DReplay, Inc +142882 MIDICOM ELECTRONICS CO.LTD +142971 NEMOA ELECTRONICS (HK) CO. LTD +142bd2 Armtel Ltd. +142bd6 Guangdong Appscomm Co.,Ltd +142d27 Hon Hai Precision Ind. Co.,Ltd. +142d8b Incipio Technologies, Inc +142df5 Amphitech +142e5e Sercomm Corporation. +142ffd LT SECURITY INC +143004 HUAWEI TECHNOLOGIES CO.,LTD +14307a Avermetrics +1430c6 Motorola Mobility LLC, a Lenovo Company +1432d1 Samsung Electronics Co.,Ltd +143365 TEM Mobile Limited +14358b Mediabridge Products, LLC. +1435b3 Future Designs, Inc. +143605 Nokia Corporation +1436c6 Lenovo Mobile Communication Technology Ltd. +143719 PT Prakarsa Visi Valutama +14373b PROCOM Systems +143aea Dynapower Company LLC +143cc3 HUAWEI TECHNOLOGIES CO.,LTD +143df2 Beijing Shidai Hongyuan Network Communication Co.,Ltd +143e60 Nokia +143ebf zte corporation +143f27 Noccela Oy +144146 Honeywell (China) Co., LTD +1441e2 Monaco Enterprises, Inc. +1442fc Texas Instruments +144319 Creative&Link Technology Limited +14444a Apollo Seiko Ltd. +1446e4 AVISTEL +144802 THE YEOLRIM Co.,Ltd. +14488b Shenzhen Doov Technology Co.,Ltd +144978 Digital Control Incorporated +1449bc DrayTek Corp. +1449e0 SAMSUNG ELECTRO-MECHANICS(THAILAND) +144c1a Max Communication GmbH +144d67 Zioncom Electronics (Shenzhen) Ltd. +144e2a Ciena Corporation +144e34 Remote Solution +144f8a Intel Corporate +144fd7 IEEE Registration Authority +145290 KNS Group LLC (YADRO Company) +145412 Entis Co., Ltd. +145645 Savitech Corp. +14568e Samsung Electronics Co.,Ltd +14579f HUAWEI TECHNOLOGIES CO.,LTD +1458d0 Hewlett Packard +1459c0 NETGEAR +1459c3 Creative Chips GmbH +145a05 Apple, Inc. +145a83 Logi-D inc +145bd1 ARRIS Group, Inc. +145be1 nyantec GmbH +145e45 Kaleao Limited +145f94 HUAWEI TECHNOLOGIES CO.,LTD +146080 zte corporation +1460cb Apple, Inc. +146102 Alpine Electronics, Inc. +14612f Avaya Inc +146308 JABIL CIRCUIT (SHANGHAI) LTD. +1469a2 SICHUAN TIANYI COMHEART TELECOM CO.,LTD +146a0b Cypress Electronics Limited +146b72 Shenzhen Fortune Ship Technology Co., Ltd. +146b9c SHENZHEN BILIAN ELECTRONIC CO.,LTD +146e0a Private +147373 TUBITAK UEKAE +147411 RIM +147590 TP-LINK TECHNOLOGIES CO.,LTD. +14780b Varex Imaging Deutschland AG +1479f3 China Mobile Group Device Co.,Ltd. +147bac Nokia +147db3 JOA TELECOM.CO.,LTD +147dc5 Murata Manufacturing Co., Ltd. +14825b Hefei Radio Communication Technology Co., Ltd +148430 MITAC COMPUTING TECHNOLOGY CORPORATION +148692 TP-LINK TECHNOLOGIES CO.,LTD. +14893e VIXTEL TECHNOLOGIES LIMTED +1489fd Samsung Electronics Co.,Ltd +148a70 ADS GmbH +148f21 Garmin International +148fc6 Apple, Inc. +149090 KongTop industrial(shen zhen)CO.,LTD +149182 Belkin International Inc. +149346 PNI sensor corporation +14942f USYS CO.,LTD. +149448 BLU CASTLE S.A. +1495ce Apple, Inc. +1496e5 Samsung Electronics Co.,Ltd +14987d Technicolor CH USA Inc. +1499e2 Apple, Inc. +149a10 Microsoft Corporation +149b2f JiangSu ZhongXie Intelligent Technology co., LTD +149d09 HUAWEI TECHNOLOGIES CO.,LTD +149d99 Apple, Inc. +149ecf Dell Inc. +149f3c Samsung Electronics Co.,Ltd +149fb6 GUANGDONG GENIUS TECHNOLOGY CO., LTD. +149fe8 Lenovo Mobile Communication Technology Ltd. +14a0f8 HUAWEI TECHNOLOGIES CO.,LTD +14a1bf ASSA ABLOY Korea Co., Ltd Unilock +14a2a0 Cisco Systems, Inc +14a364 Samsung Electronics Co.,Ltd +14a51a HUAWEI TECHNOLOGIES CO.,LTD +14a62c S.M. Dezac S.A. +14a72b currentoptronics Pvt.Ltd +14a78b Zhejiang Dahua Technology Co., Ltd. +14a86b ShenZhen Telacom Science&Technology Co., Ltd +14a9e3 MST CORPORATION +14abc5 Intel Corporate +14abf0 ARRIS Group, Inc. +14adca China Mobile Iot Limited company +14aedb VTech Telecommunications Ltd. +14b126 Industrial Software Co +14b1c8 InfiniWing, Inc. +14b31f Dell Inc. +14b370 Gigaset Digital Technology (Shenzhen) Co., Ltd. +14b457 Silicon Laboratories +14b484 Samsung Electronics Co.,Ltd +14b73d ARCHEAN Technologies +14b7f8 Technicolor CH USA Inc. +14b837 Shenzhen YOUHUA Technology Co., Ltd +14b968 HUAWEI TECHNOLOGIES CO.,LTD +14bb6e Samsung Electronics Co.,Ltd +14bd61 Apple, Inc. +14c03e ARRIS Group, Inc. +14c089 DUNE HD LTD +14c126 Nokia Corporation +14c1ff ShenZhen QianHai Comlan communication Co.,LTD +14c213 Apple, Inc. +14c21d Sabtech Industries +14c3c2 K.A. Schmersal GmbH & Co. KG +14c697 GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD +14c913 LG Electronics +14caa0 Hu&Co +14cc20 TP-LINK TECHNOLOGIES CO.,LTD. +14cf8d OHSUNG +14cf92 TP-LINK TECHNOLOGIES CO.,LTD. +14cfe2 ARRIS Group, Inc. +14d00d Apple, Inc. +14d11f HUAWEI TECHNOLOGIES CO.,LTD +14d169 HUAWEI TECHNOLOGIES CO.,LTD +14d4fe ARRIS Group, Inc. +14d64d D-Link International +14d76e CONCH ELECTRONIC Co.,Ltd +14dae9 ASUSTek COMPUTER INC. +14db85 S NET MEDIA +14dda9 ASUSTek COMPUTER INC. +14dde5 MPMKVVCL +14e4ec mLogic LLC +14e6e4 TP-LINK TECHNOLOGIES CO.,LTD. +14e7c8 Integrated Device Technology (Malaysia) Sdn. Bhd. +14e9b2 Fiberhome Telecommunication Technologies Co.,LTD +14eb33 BSMediasoft Co., Ltd. +14eda5 Wächter GmbH Sicherheitssysteme +14edbb 2Wire Inc +14ede4 Kaiam Corporation +14ee9d AirNav Systems LLC +14efcf SCHREDER +14f0c5 Xtremio Ltd. +14f28e ShenYang ZhongKe-Allwin Technology Co.LTD +14f42a Samsung Electronics Co.,Ltd +14f65a Xiaomi Communications Co Ltd +14f893 Wuhan FiberHome Digital Technology Co.,Ltd. +14feaf SAGITTAR LIMITED +14feb5 Dell Inc. +18002d Sony Mobile Communications Inc +1800db Fitbit Inc. +18017d Harbin Arteor technology co., LTD +1801e3 Bittium Wireless Ltd +1801f1 Xiaomi Communications Co Ltd +18022d HUAWEI TECHNOLOGIES CO.,LTD +1802ae vivo Mobile Communication Co., Ltd. +180373 Dell Inc. +1803fa IBT Interfaces +1804ed Texas Instruments +180675 Dilax Intelcom GmbH +1806f5 RAD Data Communications, Ltd. +1806ff Acer Computer(Shanghai) Limited. +180b52 Nanotron Technologies GmbH +180c14 iSonea Limited +180c77 Westinghouse Electric Company, LLC +180cac CANON INC. +180d2c Intelbras +180f76 D-Link International +18104e CEDINT-UPM +181212 Cepton Technologies +18132d zte corporation +181420 TEB SAS +181456 Nokia Corporation +1816c9 Samsung Electronics Co.,Ltd +181714 DAEWOOIS +181725 Cameo Communications, Inc. +18193f Tamtron Oy +1819d6 Samsung Electronics Co.,Ltd +181beb Actiontec Electronics, Inc +181dea Intel Corporate +181e78 Sagemcom Broadband SAS +181e95 AuVerte +181eb0 Samsung Electronics Co.,Ltd +182012 Aztech Associates Inc. +182032 Apple, Inc. +18204c Kummler+Matter AG +1820a6 Sage Co., Ltd. +1820d5 ARRIS Group, Inc. +182195 Samsung Electronics Co.,Ltd +18227e Samsung Electronics Co.,Ltd +182666 Samsung Electronics Co.,Ltd +182861 AirTies Wireless Networks +182a44 HIROSE ELECTRONIC SYSTEM +182a7b Nintendo Co., Ltd. +182ad3 Juniper Networks +182b05 8D Technologies +182c91 Concept Development, Inc. +182cb4 Nectarsoft Co., Ltd. +182d98 Jinwoo Industrial system +183009 Woojin Industrial Systems Co., Ltd. +1831bf ASUSTek COMPUTER INC. +1832a2 LAON TECHNOLOGY CO., LTD. +18339d Cisco Systems, Inc +183451 Apple, Inc. +1835d1 ARRIS Group, Inc. +1836fc Elecsys International Corporation +183825 Wuhan Lingjiu High-tech Co.,Ltd. +183864 CAP-TECH INTERNATIONAL CO., LTD. +1838ae CONSPIN SOLUTION +183919 Unicoi Systems +18396e SUNSEA TELECOMMUNICATIONS CO.,LTD. +18399c Skorpios Technologies +183a2d Samsung Electronics Co.,Ltd +183a48 VostroNet +183bd2 BYD Precision Manufacture Company Ltd. +183d5e HUAWEI TECHNOLOGIES CO.,LTD +183da2 Intel Corporate +183f47 Samsung Electronics Co.,Ltd +1840a4 Shenzhen Trylong Smart Science and Technology Co., Ltd. +18421d Private +18422f Alcatel Lucent +184462 Riava Networks, Inc. +1844e6 zte corporation +184617 Samsung Electronics Co.,Ltd +184644 Home Control Singapore Pte Ltd +1848d8 Fastback Networks +184a6f Alcatel-Lucent Shanghai Bell Co., Ltd +184b0d Ruckus Wireless +184bdf Caavo Inc +184c08 Rockwell Automation +184e94 MESSOA TECHNOLOGIES INC. +184f32 Hon Hai Precision Ind. Co.,Ltd. +18502a SOARNEX +185207 SICHUAN TIANYI COMHEART TELECOMCO., LTD +185253 Pixord Corporation +185282 Fiberhome Telecommunication Technologies Co.,LTD +1853e0 Hanyang Digitech Co.Ltd +18550f Cisco SPVTG +1855e3 Apple, Inc. +185644 HUAWEI TECHNOLOGIES CO.,LTD +185680 Intel Corporate +185933 Cisco SPVTG +185936 Xiaomi Communications Co Ltd +185a58 Dell Inc. +185ae8 Zenotech.Co.,Ltd +185d9a BobjGear LLC +185e0f Intel Corporate +186024 Hewlett Packard +1861c7 lemonbeat GmbH +18622c Sagemcom Broadband SAS +1862e4 Texas Instruments +186472 Aruba, a Hewlett Packard Enterprise Company +186571 Top Victory Electronics (Taiwan) Co., Ltd. +186590 Apple, Inc. +1866c7 Shenzhen Libre Technology Co., Ltd +1866da Dell Inc. +1866e3 Veros Systems, Inc. +18673f Hanover Displays Limited +186751 KOMEG Industrielle Messtechnik GmbH +1867b0 Samsung Electronics Co.,Ltd +18686a zte corporation +186882 Beward R&D Co., Ltd. +1868cb Hangzhou Hikvision Digital Technology Co.,Ltd. +1869da China Mobile Group Device Co.,Ltd. +186d99 Adanis Inc. +18703b Huawei Device Co., Ltd. +187117 eta plus electronic gmbh +1871d5 Hazens Automotive Electronics(SZ)Co.,Ltd. +18742e Amazon Technologies Inc. +187532 SICHUAN TIANYI COMHEART TELECOMCO., LTD +1878d4 Verizon +1879a2 GMJ ELECTRIC LIMITED +187a93 AMICCOM Electronics Corporation +187c0b Ruckus Wireless +187c81 Valeo Vision Systems +187ed5 shenzhen kaism technology Co. Ltd +188090 Cisco Systems, Inc +1880ce Barberry Solutions Ltd +1880f5 Alcatel-Lucent Shanghai Bell Co., Ltd +18810e Apple, Inc. +188219 Alibaba Cloud Computing Ltd. +188331 Samsung Electronics Co.,Ltd +1883bf Arcadyan Technology Corporation +188410 CoreTrust Inc. +18863a DIGITAL ART SYSTEM +1886ac Nokia Danmark A/S +188796 HTC Corporation +188857 Beijing Jinhong Xi-Dian Information Technology Corp. +18895b Samsung Electronics Co.,Ltd +1889a0 Wuhan Funshion Online Technologies Co.,Ltd +1889df CerebrEX Inc. +188b15 ShenZhen ZhongRuiJing Technology co.,LTD +188b45 Cisco Systems, Inc +188b9d Cisco Systems, Inc +188ed5 TP Vision Belgium N.V. - innovation site Brugge +188ef9 G2C Co. Ltd. +189088 eero inc. +1890d8 Sagemcom Broadband SAS +18922c Virtual Instruments +18937f AMPAK Technology, Inc. +1893d7 Texas Instruments +1894c6 ShenZhen Chenyee Technology Co., Ltd. +1897ff TechFaith Wireless Technology Limited +1899f5 Sichuan Changhong Electric Ltd. +189a67 CSE-Servelec Limited +189ba5 IEEE Registration Authority +189c27 ARRIS Group, Inc. +189c5d Cisco Systems, Inc +189efc Apple, Inc. +18a28a Essel-T Co., Ltd +18a3e8 Fiberhome Telecommunication Technologies Co.,LTD +18a4a9 Vanu Inc. +18a6f7 TP-LINK TECHNOLOGIES CO.,LTD. +18a7f1 Qingdao Haier Technology Co.,Ltd +18a905 Hewlett Packard +18a958 PROVISION THAI CO., LTD. +18a99b Dell Inc. +18aa45 Fon Technology +18aaca Sichuan tianyi kanghe communications co., LTD +18abf5 Ultra Electronics Electrics +18ac9e ITEL MOBILE LIMITED +18ad4d Polostar Technology Corporation +18aebb Siemens Convergence Creators GmbH&Co.KG +18af61 Apple, Inc. +18af8f Apple, Inc. +18af9f DIGITRONIC Automationsanlagen GmbH +18b169 Sonicwall +18b209 Torrey Pines Logic, Inc +18b3ba Netlogic AB +18b430 Nest Labs Inc. +18b591 I-Storm +18b6f7 NEW POS TECHNOLOGY LIMITED +18b79e Invoxia +18b81f ARRIS Group, Inc. +18b905 Hong Kong Bouffalo Lab Limited +18bb26 FN-LINK TECHNOLOGY LIMITED +18bc5a Zhejiang Tmall Technology Co., Ltd. +18bdad L-TECH CORPORATION +18be92 Delta Networks, Inc. +18bf1c Jiangsu Huitong Group Co.,Ltd. +18c086 Broadcom +18c19d Integrated Device Technology (Malaysia) Sdn. Bhd. +18c2bf BUFFALO.INC +18c451 Tucson Embedded Systems +18c501 SHENZHEN GONGJIN ELECTRONICS CO.,LT +18c58a HUAWEI TECHNOLOGIES CO.,LTD +18c8e7 Shenzhen Hualistone Technology Co.,Ltd +18cc23 Philio Technology Corporation +18cc88 Hitachi Johnson Controls Air +18cf24 HUAWEI TECHNOLOGIES CO.,LTD +18cf5e Liteon Technology Corporation +18d071 DASAN CO., LTD. +18d0c5 GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD +18d225 Fiberhome Telecommunication Technologies Co.,LTD +18d276 HUAWEI TECHNOLOGIES CO.,LTD +18d5b6 SMG Holdings LLC +18d66a Inmarsat +18d6c7 TP-LINK TECHNOLOGIES CO.,LTD. +18d6cf Kurth Electronic GmbH +18d717 GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD +18d949 Qvis Labs, LLC +18d9ef Shuttle Inc. +18dbf2 Dell Inc. +18dc56 Yulong Computer Telecommunication Scientific (Shenzhen) Co.,Ltd +18ded7 HUAWEI TECHNOLOGIES CO.,LTD +18dfb4 BOSUNG POWERTEC CO.,LTD. +18e1ca wanze +18e288 STT Condigi +18e29f vivo Mobile Communication Co., Ltd. +18e2c2 Samsung Electronics Co.,Ltd +18e3bc TCT mobile ltd +18e728 Cisco Systems, Inc +18e7f4 Apple, Inc. +18e80f Viking Electronics Inc. +18e829 Ubiquiti Networks Inc. +18e8dd MODULETEK +18ee69 Apple, Inc. +18ef63 Cisco Systems, Inc +18f0e4 Xiaomi Communications Co Ltd +18f145 NetComm Wireless Limited +18f18e ChipER Technology co. ltd +18f1d8 Apple, Inc. +18f292 Shannon Systems +18f46a Hon Hai Precision Ind. Co.,Ltd. +18f643 Apple, Inc. +18f650 Multimedia Pacific Limited +18f76b Zhejiang Winsight Technology CO.,LTD +18f87a i3 International Inc. +18f9c4 BAE Systems +18fa6f ISC applied systems corp +18fb7b Dell Inc. +18fc9f Changhe Electronics Co., Ltd. +18fe34 Espressif Inc. +18ff0f Intel Corporate +18ff2e Shenzhen Rui Ying Da Technology Co., Ltd +1c0042 NARI Technology Co., Ltd. +1c0656 IDY Corporation +1c08c1 Lg Innotek +1c0b52 EPICOM S.A +1c0faf Lucid Vision Labs +1c0fcf Sypro Optics GmbH +1c1161 Ciena Corporation +1c11e1 Wartsila Finland Oy +1c129d IEEE PES PSRC/SUB +1c12b0 Amazon Technologies Inc. +1c1386 Huawei Device Co., Ltd. +1c1448 ARRIS Group, Inc. +1c14b3 Airwire Technologies +1c151f HUAWEI TECHNOLOGIES CO.,LTD +1c17d3 Cisco Systems, Inc +1c184a ShenZhen RicherLink Technologies Co.,LTD +1c19de eyevis GmbH +1c1ac0 Apple, Inc. +1c1adf Microsoft Corporation +1c1b0d GIGA-BYTE TECHNOLOGY CO.,LTD. +1c1b68 ARRIS Group, Inc. +1c1bb5 Intel Corporate +1c1cfd Dalian Hi-Think Computer Technology, Corp +1c1d67 HUAWEI TECHNOLOGIES CO.,LTD +1c1d86 Cisco Systems, Inc +1c1ee3 Hui Zhou Gaoshengda Technology Co.,LTD +1c1fd4 LifeBEAM Technologies LTD +1c20db HUAWEI TECHNOLOGIES CO.,LTD +1c21d1 IEEE Registration Authority +1c232c Samsung Electronics Co.,Ltd +1c234f EDMI Europe Ltd +1c24cd Askey Computer Corp. +1c24eb Burlywood +1c25e1 China Mobile IOT Company Limited +1c2704 zte corporation +1c27dd Datang Gohighsec(zhejiang)Information Technology Co.,Ltd. +1c2aa3 Shenzhen HongRui Optical Technology Co., Ltd. +1c2e1b Suzhou Tremenet Communication Technology Co., Ltd. +1c330e PernixData +1c334d ITS Telecom +1c3477 Innovation Wireless +1c34da Mellanox Technologies, Inc. +1c35f1 NEW Lift Neue Elektronische Wege Steuerungsbau GmbH +1c36bb Apple, Inc. +1c37bf Cloudium Systems Ltd. +1c3947 COMPAL INFORMATION (KUNSHAN) CO., LTD. +1c398a Fiberhome Telecommunication Technologies Co.,LTD +1c3a4f AccuSpec Electronics, LLC +1c3a60 Ruckus Wireless +1c3ade Samsung Electronics Co.,Ltd +1c3b8f Selve GmbH & Co. KG +1c3bf3 TP-LINK TECHNOLOGIES CO.,LTD. +1c3de7 Sigma Koki Co.,Ltd. +1c3e84 Hon Hai Precision Ind. Co.,Ltd. +1c4024 Dell Inc. +1c40e8 SHENZHEN PROGRESS&WIN TECHNOLOGY CO.,LTD +1c4158 Gemalto M2M GmbH +1c4176 China Mobile Group Device Co.,Ltd. +1c427d GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD +1c43ec JAPAN CIRCUIT CO.,LTD +1c4419 TP-LINK TECHNOLOGIES CO.,LTD. +1c4455 Sieb & Meyer AG +1c4593 Texas Instruments +1c4840 IMS Messsysteme GmbH +1c48ce GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD +1c48f9 GN Netcom A/S +1c497b Gemtek Technology Co., Ltd. +1c4af7 AMON INC +1c4bb9 SMG ENTERPRISE, LLC +1c4bd6 AzureWave Technology Inc. +1c4d70 Intel Corporate +1c51b5 Techaya LTD +1c5216 DONGGUAN HELE ELECTRONICS CO., LTD +1c52d6 FLAT DISPLAY TECHNOLOGY CORPORATION +1c549e Universal Electronics, Inc. +1c553a QianGua Corp. +1c56fe Motorola Mobility LLC, a Lenovo Company +1c57d8 Kraftway Corporation PLC +1c599b HUAWEI TECHNOLOGIES CO.,LTD +1c5a0b Tegile Systems +1c5a3e Samsung Electronics Co.,Ltd +1c5a6b Philips Electronics Nederland BV +1c5c55 PRIMA Cinema, Inc +1c5c60 Shenzhen Belzon Technology Co.,LTD. +1c5cf2 Apple, Inc. +1c5f2b D-Link International +1c5fff Beijing Ereneben Information Technology Co.,Ltd Shenzhen Branch +1c60d2 Fiberhome Telecommunication Technologies Co.,LTD +1c60de MERCURY COMMUNICATION TECHNOLOGIES CO.,LTD. +1c62b8 Samsung Electronics Co.,Ltd +1c63b7 OpenProducts 237 AB +1c6499 Comtrend Corporation +1c659d Liteon Technology Corporation +1c666d Hon Hai Precision Ind. Co.,Ltd. +1c66aa Samsung Electronics Co.,Ltd +1c6758 HUAWEI TECHNOLOGIES CO.,LTD +1c687e Shenzhen Qihu Intelligent Technology Company Limited +1c697a EliteGroup Computer Systems Co., LTD +1c69a5 BlackBerry RTS +1c6a7a Cisco Systems, Inc +1c6bca Mitsunami Co., Ltd. +1c6e4c Logistic Service & Engineering Co.,Ltd +1c6e76 Quarion Technology Inc +1c6f65 GIGA-BYTE TECHNOLOGY CO.,LTD. +1c7022 Murata Manufacturing Co., Ltd. +1c7328 Connected Home +1c7370 Neotech +1c740d Zyxel Communications Corporation +1c7508 COMPAL INFORMATION (KUNSHAN) CO., LTD. +1c76ca Terasic Technologies Inc. +1c77f6 GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD +1c7839 Shenzhen Tencent Computer System Co., Ltd. +1c7b21 Sony Mobile Communications Inc +1c7b23 Qingdao Hisense Communications Co.,Ltd. +1c7c11 EID +1c7c45 Vitek Industrial Video Products, Inc. +1c7cc7 Coriant GmbH +1c7d22 Fuji Xerox Co., Ltd. +1c7e51 3bumen.com +1c7ee5 D-Link International +1c7f2c HUAWEI TECHNOLOGIES CO.,LTD +1c8259 IEEE Registration Authority +1c8341 Hefei Bitland Information Technology Co.Ltd +1c83b0 Linked IP GmbH +1c8464 FORMOSA WIRELESS COMMUNICATION CORP. +1c86ad MCT CO., LTD. +1c872c ASUSTek COMPUTER INC. +1c8e5c HUAWEI TECHNOLOGIES CO.,LTD +1c8e8e DB Communication & Systems Co., ltd. +1c8f8a Phase Motion Control SpA +1c9148 Apple, Inc. +1c9179 Integrated System Technologies Ltd +1c9492 RUAG Schweiz AG +1c955d I-LAX ELECTRONICS INC. +1c959f Veethree Electronics And Marine LLC +1c965a WEIFANG GOERTEK ELECTRONICS CO.,LTD +1c973d PRICOM Design +1c98ec Hewlett Packard Enterprise +1c994c Murata Manufacturing Co., Ltd. +1c9c26 Zoovel Technologies +1c9c8c Juniper Networks +1c9d3e Integrated Device Technology (Malaysia) Sdn. Bhd. +1c9e46 Apple, Inc. +1c9ecb Beijing Nari Smartchip Microelectronics Company Limited +1ca0b8 Hon Hai Precision Ind. Co., Ltd. +1ca0d3 IEEE Registration Authority +1ca2b1 ruwido austria gmbh +1ca532 SHENZHEN GONGJIN ELECTRONICS CO.,LT +1ca770 SHENZHEN CHUANGWEI-RGB ELECTRONICS CO.,LTD +1caa07 Cisco Systems, Inc +1cab01 Innovolt +1cab34 New H3C Technologies Co., Ltd +1caba7 Apple, Inc. +1cabc0 Hitron Technologies. Inc +1cadd1 Bosung Electronics Co., Ltd. +1caecb HUAWEI TECHNOLOGIES CO.,LTD +1caf05 Samsung Electronics Co.,Ltd +1caff7 D-Link International +1cb044 ASKEY COMPUTER CORP +1cb094 HTC Corporation +1cb17f NEC Platforms, Ltd. +1cb243 TDC A/S +1cb3e9 Shenzhen Zhongke United Communication Technology +1cb72c ASUSTek COMPUTER INC. +1cb796 HUAWEI TECHNOLOGIES CO.,LTD +1cb857 Becon Technologies Co,.Ltd. +1cb9c4 Ruckus Wireless +1cba8c Texas Instruments +1cbba8 OJSC Ufimskiy Zavod Promsvyaz +1cbd0e Amplified Engineering Pty Ltd +1cbdb9 D-Link International +1cbfce Shenzhen Century Xinyang Technology Co., Ltd +1cc035 PLANEX COMMUNICATIONS INC. +1cc0e1 IEEE Registration Authority +1cc11a Wavetronix +1cc1bc Yichip Microelectronics (Hangzhou) Co.,Ltd +1cc1de Hewlett Packard +1cc316 MileSight Technology Co., Ltd. +1cc3eb GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD +1cc586 Absolute Acoustics +1cc63c Arcadyan Technology Corporation +1cc72d Shenzhen Huapu Digital CO.,Ltd +1ccae3 IEEE Registration Authority +1ccb99 TCT mobile ltd +1cccd6 Xiaomi Communications Co Ltd +1ccde5 Shanghai Wind Technologies Co.,Ltd +1cd40c Kriwan Industrie-Elektronik GmbH +1cd5e2 Shenzhen YOUHUA Technology Co., Ltd +1cd6bd LEEDARSON LIGHTING CO., LTD. +1cda27 vivo Mobile Communication Co., Ltd. +1cddea GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD +1cde57 Fiberhome Telecommunication Technologies Co.,LTD +1cdea7 Cisco Systems, Inc +1cdf0f Cisco Systems, Inc +1cdf52 Texas Instruments +1ce165 Marshal Corporation +1ce192 Qisda Corporation +1ce2cc Texas Instruments +1ce62b Apple, Inc. +1ce6c7 Cisco Systems, Inc +1ce85d Cisco Systems, Inc +1cea0b Edgecore Networks Corporation +1cea1b Nokia +1ceec9 Elo touch solutions +1ceee8 Ilshin Elecom +1cefce bebro electronic GmbH +1cf03e Wearhaus Inc. +1cf061 SCAPS GmbH +1cf29a Google, Inc. +1cf4ca Private +1cf5e7 Turtle Industry Co., Ltd. +1cfa68 TP-LINK TECHNOLOGIES CO.,LTD. +1cfcbb Realfiction ApS +1cfd08 IEEE Registration Authority +1cfea7 IDentytech Solutins Ltd. +20014f Linea Research Ltd +2002af Murata Manufacturing Co., Ltd. +20040f Dell Inc. +200505 RADMAX COMMUNICATION PRIVATE LIMITED +2005e8 OOO InProMedia +2008ed HUAWEI TECHNOLOGIES CO.,LTD +200a5e Xiangshan Giant Eagle Technology Developing Co., Ltd. +200bc7 HUAWEI TECHNOLOGIES CO.,LTD +200cc8 NETGEAR +200db0 Shenzhen Four Seas Global Link Network Technology Co., Ltd. +200e95 IEC – TC9 WG43 +200f70 FOXTECH +20107a Gemtek Technology Co., Ltd. +201257 Most Lucky Trading Ltd +2012d5 Scientech Materials Corporation +2013e0 Samsung Electronics Co.,Ltd +20163d Integrated Device Technology (Malaysia) Sdn. Bhd. +2016b9 Intel Corporate +2016d8 Liteon Technology Corporation +201742 LG Electronics +20180e Shenzhen Sunchip Technology Co., Ltd +201a06 COMPAL INFORMATION (KUNSHAN) CO., LTD. +201bc9 Juniper Networks +201d03 Elatec GmbH +201f31 Inteno Broadband Technology AB +2021a5 LG Electronics (Mobile Communications) +202564 PEGATRON CORPORATION +202598 Teleview +202681 TECNO MOBILE LIMITED +20283e HUAWEI TECHNOLOGIES CO.,LTD +2028bc Visionscape Co,. Ltd. +202ac5 Petite-En +202bc1 HUAWEI TECHNOLOGIES CO.,LTD +202cb7 Kong Yue Electronics & Information Industry (Xinhui) Ltd. +202d07 Samsung Electronics Co.,Ltd +202d23 Collinear Networks Inc. +202df8 Digital Media Cartridge Ltd. +20311c vivo Mobile Communication Co., Ltd. +2031eb HDSN +203233 SHENZHEN BILIAN ELECTRONIC CO.,LTD +20326c Samsung Electronics Co.,Ltd +2034fb Xiaomi Communications Co Ltd +20365b Megafone Limited +2036d7 Shanghai Reacheng Communication Technology Co.,Ltd +203706 Cisco Systems, Inc +2037bc Kuipers Electronic Engineering BV +203956 HMD Global Oy +203a07 Cisco Systems, Inc +203aef Sivantos GmbH +203cae Apple, Inc. +203d66 ARRIS Group, Inc. +203db2 HUAWEI TECHNOLOGIES CO.,LTD +203dbd LG Innotek +204005 feno GmbH +20415a Smarteh d.o.o. +20443a Schneider Electric Asia Pacific Ltd +2046a1 VECOW Co., Ltd +2046f9 Advanced Network Devices (dba:AND) +204747 Dell Inc. +2047da Xiaomi Communications Co Ltd +2047ed BSkyB Ltd +204aaa Hanscan Spain S.A. +204c03 Aruba, a Hewlett Packard Enterprise Company +204c6d Hugo Brennenstuhl Gmbh & Co. KG. +204c9e Cisco Systems, Inc +204e6b Axxana(israel) ltd +204e71 Juniper Networks +204e7f NETGEAR +2053ca Risk Technology Ltd +205476 Sony Mobile Communications Inc +2054fa HUAWEI TECHNOLOGIES CO.,LTD +205531 Samsung Electronics Co.,Ltd +205532 Gotech International Technology Limited +205721 Salix Technology CO., Ltd. +2057af Shenzhen FH-NET OPTOELECTRONICS CO.,LTD +205869 Ruckus Wireless +2059a0 Paragon Technologies Inc. +205a00 Coval +205b2a Private +205b5e Shenzhen Wonhe Technology Co., Ltd +205cfa Yangzhou ChangLian Network Technology Co,ltd. +205d47 vivo Mobile Communication Co., Ltd. +205ef7 Samsung Electronics Co.,Ltd +205f3d Cambridge Communication Systems Ltd +206274 Microsoft Corporation +20635f Abeeway +206432 SAMSUNG ELECTRO MECHANICS CO., LTD. +20658e HUAWEI TECHNOLOGIES CO.,LTD +20677c Hewlett Packard Enterprise +2067b1 Pluto inc. +20689d Liteon Technology Corporation +206a8a Wistron Infocomm (Zhongshan) Corporation +206aff Atlas Elektronik UK Limited +206be7 TP-LINK TECHNOLOGIES CO.,LTD. +206c8a Aerohive Networks Inc. +206e9c Samsung Electronics Co.,Ltd +206fec Braemac CA LLC +20719e SF Technology Co.,Ltd +207355 ARRIS Group, Inc. +2074cf Shenzhen Voxtech Co.,Ltd +207600 Actiontec Electronics, Inc +20768f Apple, Inc. +207693 Lenovo (Beijing) Limited. +207759 OPTICAL NETWORK VIDEO TECHNOLOGIES (SHENZHEN) CO., LTD. +20780b Delta Faucet Company +207852 Nokia +2078f0 Apple, Inc. +207918 Intel Corporate +207c8f Quanta Microsystems,Inc. +207d74 Apple, Inc. +208058 Ciena Corporation +2082c0 Xiaomi Communications Co Ltd +20858c Assa +208593 IEEE Registration Authority +208756 SIEMENS AG +2087ac AES motomation +20896f Fiberhome Telecommunication Technologies Co.,LTD +208984 COMPAL INFORMATION (KUNSHAN) CO., LTD. +208986 zte corporation +208b37 Skyworth Digital Technology(Shenzhen) Co.,Ltd +20906f Shenzhen Tencent Computer System Co., Ltd. +209148 Texas Instruments +20918a PROFALUX +2091d9 I'M SPA +20934d FUJIAN STAR-NET COMMUNICATION CO.,LTD +20968a China Mobile (Hangzhou) Information Technology Co., Ltd. +209ae9 Volacomm Co., Ltd +209ba5 JIAXING GLEAD Electronics Co.,Ltd +209bcd Apple, Inc. +20a2e4 Apple, Inc. +20a2e7 Lee-Dickens Ltd +20a60c Xiaomi Communications Co Ltd +20a680 HUAWEI TECHNOLOGIES CO.,LTD +20a6cd Hewlett Packard Enterprise +20a783 miControl GmbH +20a787 Bointec Taiwan Corporation Limited +20a8b9 SIEMENS AG +20a90e TCT mobile ltd +20a99b Microsoft Corporation +20aa25 IP-NET LLC +20aa4b Cisco-Linksys, LLC +20ab37 Apple, Inc. +20ad56 Continental Automotive Systems Inc. +20b001 Technicolor +20b0f7 Enclustra GmbH +20b399 Enterasys +20b5c6 Mimosa Networks +20b780 Toshiba Visual Solutions Corporation Co.,Ltd +20b7c0 OMICRON electronics GmbH +20bb76 COL GIOVANNI PAOLO SpA +20bbc0 Cisco Systems, Inc +20bbc6 Jabil Circuit Hungary Ltd. +20bfdb DVL +20c047 Verizon +20c06d SHENZHEN SPACETEK TECHNOLOGY CO.,LTD +20c1af i Wit Digital Co., Limited +20c38f Texas Instruments +20c3a4 RetailNext +20c60d Shanghai annijie Information technology Co.,LTD +20c6eb Panasonic Corporation AVC Networks Company +20c8b3 SHENZHEN BUL-TECH CO.,LTD. +20c9d0 Apple, Inc. +20cd39 Texas Instruments +20cec4 Peraso Technologies +20cf30 ASUSTek COMPUTER INC. +20d160 Private +20d21f Wincal Technology Corp. +20d25f SmartCap Technologies +20d390 Samsung Electronics Co.,Ltd +20d5ab Korea Infocom Co.,Ltd. +20d5bf Samsung Electronics Co.,Ltd +20d607 Nokia Corporation +20d75a Posh Mobile Limited +20d80b Juniper Networks +20d906 Iota, Inc. +20da22 HUAWEI TECHNOLOGIES CO.,LTD +20dbab Samsung Electronics Co., Ltd. +20dc93 Cheetah Hi-Tech, Inc. +20dce6 TP-LINK TECHNOLOGIES CO.,LTD. +20de88 IC Realtime LLC +20df3f Nanjing SAC Power Grid Automation Co., Ltd. +20dfb9 Google, Inc. +20e09c Nokia +20e407 Spark srl +20e52a NETGEAR +20e564 ARRIS Group, Inc. +20e791 Siemens Healthcare Diagnostics, Inc +20e882 zte corporation +20eac7 SHENZHEN RIOPINE ELECTRONICS CO., LTD +20ed74 Ability enterprise co.,Ltd. +20ee28 Apple, Inc. +20eec6 Elefirst Science & Tech Co ., ltd +20f002 MTData Developments Pty. Ltd. +20f17c HUAWEI TECHNOLOGIES CO.,LTD +20f19e ARRIS Group, Inc. +20f3a3 HUAWEI TECHNOLOGIES CO.,LTD +20f41b Shenzhen Bilian electronic CO.,LTD +20f452 Shanghai IUV Software Development Co. Ltd +20f478 Xiaomi Communications Co Ltd +20f510 Codex Digital Limited +20f543 Hui Zhou Gaoshengda Technology Co.,LTD +20f77c vivo Mobile Communication Co., Ltd. +20f85e Delta Electronics +20fabb Cambridge Executive Limited +20fdf1 3COM EUROPE LTD +20fecd System In Frontier Inc. +20fedb M2M Solution S.A.S. +2400ba HUAWEI TECHNOLOGIES CO.,LTD +2401c7 Cisco Systems, Inc +24050f MTN Electronic Co. Ltd +240588 Google, Inc. +2405f5 Integrated Device Technology (Malaysia) Sdn. Bhd. +240917 Devlin Electronics Limited +240995 HUAWEI TECHNOLOGIES CO.,LTD +240a11 TCT mobile ltd +240a63 ARRIS Group, Inc. +240a64 AzureWave Technology Inc. +240ac4 Espressif Inc. +240b0a Palo Alto Networks +240b2a Viettel Group +240bb1 KOSTAL Industrie Elektrik GmbH +240d65 Shenzhen Vsun Communication Technology Co., Ltd. +240d6c SMND +240dc2 TCT mobile ltd +241064 Shenzhen Ecsino Tecnical Co. Ltd +241125 Hutek Co., Ltd. +241148 Entropix, LLC +2411d0 Chongqing Ehs Science and Technology Development Co.,Ltd. +241510 IEEE Registration Authority +24166d HUAWEI TECHNOLOGIES CO.,LTD +24181d SAMSUNG ELECTRO-MECHANICS(THAILAND) +241a8c Squarehead Technology AS +241b13 Shanghai Nutshell Electronic Co., Ltd. +241b44 Hangzhou Tuners Electronics Co., Ltd +241b7a Apple, Inc. +241c04 SHENZHEN JEHE TECHNOLOGY DEVELOPMENT CO., LTD. +241eeb Apple, Inc. +241f2c Calsys, Inc. +241fa0 HUAWEI TECHNOLOGIES CO.,LTD +2420c7 Sagemcom Broadband SAS +242124 Nokia +2421ab Sony Mobile Communications Inc +24240e Apple, Inc. +242642 SHARP Corporation. +2429fe KYOCERA Corporation +242e02 HUAWEI TECHNOLOGIES CO.,LTD +242e90 PALIT MICROSYSTEMS, LTD +242ffa Toshiba Global Commerce Solutions +243154 HUAWEI TECHNOLOGIES CO.,LTD +243184 SHARP Corporation +24336c Private +2435cc Zhongshan Scinan Internet of Things Co.,Ltd. +24374c Cisco SPVTG +2437ef EMC Electronic Media Communication SA +243a82 IRTS +243c20 Dynamode Group +243f30 Oxygen Broadband s.a. +2440ae NIIC Technology Co., Ltd. +24418c Intel Corporate +2442bc Alinco,incorporated +244427 HUAWEI TECHNOLOGIES CO.,LTD +244597 GEMUE Gebr. Mueller Apparatebau +2446c8 Motorola Mobility LLC, a Lenovo Company +24470e PentronicAB +24497b Innovative Converged Devices Inc +244b03 Samsung Electronics Co.,Ltd +244b81 Samsung Electronics Co.,Ltd +244c07 HUAWEI TECHNOLOGIES CO.,LTD +244ce3 Amazon Technologies Inc. +244e7b IEEE Registration Authority +244f1d iRule LLC +24526a Zhejiang Dahua Technology Co., Ltd. +2453bf Enernet +24586e zte corporation +245880 VIZEO +24590b White Sky Inc. Limited +245ba7 Apple, Inc. +245bf0 Liteon, Inc. +245cbf NCSE +245ccb AXIe Consortium, Inc. +245ebe QNAP Systems, Inc. +245fdf KYOCERA CORPORATION +246081 razberi technologies +24615a China Mobile Group Device Co.,Ltd. +246278 sysmocom - systems for mobile communications GmbH +2462ab Espressif Inc. +2464ef CYG SUNRI CO.,LTD. +246511 AVM GmbH +246880 Braveridge.co.,ltd. +24693e innodisk Corporation +24694a Jasmine Systems Inc. +246968 TP-LINK TECHNOLOGIES CO.,LTD. +2469a5 HUAWEI TECHNOLOGIES CO.,LTD +246aab IT-IS International +246c8a YUKAI Engineering +246e96 Dell Inc. +246f28 Espressif Inc. +246f8c Huawei Device Co., Ltd. +247189 Texas Instruments +247260 IOTTECH Corp +2474f7 GoPro +247656 Shanghai Net Miles Fiber Optics Technology Co., LTD. +24767d Cisco SPVTG +247703 Intel Corporate +24792a Ruckus Wireless +2479f3 GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD +2479f8 KUPSON spol. s r.o. +247c4c Herman Miller +247d4d Texas Instruments +247e12 Cisco Systems, Inc +247e51 zte corporation +247f20 Sagemcom Broadband SAS +247f3c HUAWEI TECHNOLOGIES CO.,LTD +248000 Westcontrol AS +2481aa KSH International Co., Ltd. +24828a Prowave Technologies Ltd. +248498 Beijing Jiaoda Microunion Tech.Co.,Ltd. +2486f4 Ctek, Inc. +248707 SEnergy Corporation +248894 shenzhen lensun Communication Technology LTD +248a07 Mellanox Technologies, Inc. +248be0 SICHUAN TIANYI COMHEART TELECOMCO., LTD +24920e Samsung Electronics Co.,Ltd +2493ca Voxtronic Austria +249442 OPEN ROAD SOLUTIONS , INC. +249504 SFR +2497ed Techvision Intelligent Technology Limited +249eab HUAWEI TECHNOLOGIES CO.,LTD +24a074 Apple, Inc. +24a2e1 Apple, Inc. +24a42c KOUKAAM a.s. +24a43c Ubiquiti Networks Inc. +24a495 Thales Canada Inc. +24a52c HUAWEI TECHNOLOGIES CO.,LTD +24a534 SynTrust Tech International Ltd. +24a7dc BSkyB Ltd +24a87d Panasonic Automotive Systems Asia Pacific(Thailand)Co.,Ltd. +24a937 PURE Storage +24ab81 Apple, Inc. +24af4a Alcatel-Lucent IPD +24af54 NEXGEN Mediatech Inc. +24b0a9 Shanghai Mobiletek Communication Ltd. +24b209 Avaya Inc +24b2de Espressif Inc. +24b657 Cisco Systems, Inc +24b6b8 FRIEM SPA +24b6fd Dell Inc. +24b88c Crenus Co.,Ltd. +24b8d2 Opzoon Technology Co.,Ltd. +24ba13 RISO KAGAKU CORPORATION +24ba30 Technical Consumer Products, Inc. +24bbc1 Absolute Analysis +24bc82 Dali Wireless, Inc. +24bcf8 HUAWEI TECHNOLOGIES CO.,LTD +24be05 Hewlett Packard +24be18 DADOUTEK COMPANY LIMITED +24bf74 Private +24c0b3 RSF +24c17a BEIJING IACTIVE NETWORK CO.,LTD +24c1bd CRRC DALIAN R&D CO.,LTD. +24c3f9 Securitas Direct AB +24c42f Philips Lifeline +24c44a zte corporation +24c696 Samsung Electronics Co.,Ltd +24c848 mywerk Portal GmbH +24c86e Chaney Instrument Co. +24c9a1 Ruckus Wireless +24c9de Genoray +24cacb Fiberhome Telecommunication Technologies Co.,LTD +24cbe7 MYK, Inc. +24cf21 Shenzhen State Micro Technology Co., Ltd +24d13f MEXUS CO.,LTD +24d2cc SmartDrive Systems Inc. +24d3f2 zte corporation +24d51c Zhongtian broadband technology co., LTD +24d76b Syntronic AB +24d921 Avaya Inc +24da11 NO NDA Inc +24da33 HUAWEI TECHNOLOGIES CO.,LTD +24da9b Motorola Mobility LLC, a Lenovo Company +24dab6 Sistemas de Gestión Energética S.A. de C.V +24dbac HUAWEI TECHNOLOGIES CO.,LTD +24dbad ShopperTrak RCT Corporation +24dbed Samsung Electronics Co.,Ltd +24dec6 Aruba, a Hewlett Packard Enterprise Company +24df6a HUAWEI TECHNOLOGIES CO.,LTD +24dfa7 Hangzhou BroadLink Technology Co.,Ltd +24e124 Xiamen Ursaconn Technology Co. , Ltd. +24e271 Qingdao Hisense Communications Co.,Ltd. +24e314 Apple, Inc. +24e43f Wenzhou Kunmei Communication Technology Co.,Ltd. +24e5aa Philips Oral Healthcare, Inc. +24e6ba JSC Zavod im. Kozitsky +24e9b3 Cisco Systems, Inc +24ea40 Helmholz GmbH & Co. KG +24eb65 SAET I.S. S.r.l. +24ec51 ADF Technologies Sdn Bhd +24ec99 ASKEY COMPUTER CORP +24ecd6 CSG Science & Technology Co.,Ltd.Hefei +24ee3a Chengdu Yingji Electronic Hi-tech Co Ltd +24ee9a Intel Corporate +24f094 Apple, Inc. +24f0ff GHT Co., Ltd. +24f128 Telstra +24f27f Hewlett Packard Enterprise +24f2dd Radiant Zemax LLC +24f57e HWH CO., LTD. +24f5a2 Belkin International Inc. +24f5aa Samsung Electronics Co.,Ltd +24f677 Apple, Inc. +24faf3 Shanghai Flexem Technology Co.,Ltd. +24fb65 HUAWEI TECHNOLOGIES CO.,LTD +24fce5 Samsung Electronics Co.,Ltd +24fd0d INDÚSTRIA DE TELECOMUNICAÇÃO ELETRÔNICA +24fd52 Liteon Technology Corporation +24fd5b SmartThings, Inc. +280245 Konze System Technology Co.,Ltd. +2802d8 Samsung Electronics Co.,Ltd +2804e0 FERMAX ELECTRONICA S.A.U. +28061e NINGBO GLOBAL USEFUL ELECTRIC CO.,LTD +28068d ITL, LLC +28070d GUANGZHOU WINSOUND INFORMATION TECHNOLOGY CO.,LTD. +280b5c Apple, Inc. +280c28 Unigen DataStorage Corporation +280cb8 Mikrosay Yazilim ve Elektronik A.S. +280dfc Sony Interactive Entertainment Inc. +280e8b Beijing Spirit Technology Development Co., Ltd. +28101b MagnaCom +28107b D-Link International +2811a5 Bose Corporation +281471 Lantis co., LTD. +28162e 2Wire Inc +28167f Xiaomi Communications Co Ltd +2816a8 Microsoft Corporation +2816ad Intel Corporate +2817ce Omnisense Ltd +281878 Microsoft Corporation +2818fd Aditya Infotech Ltd. +282246 Beijing Sinoix Communication Co., LTD +282373 Digita +2823f5 China Mobile (Hangzhou) Information Technology Co., Ltd. +2824ff Wistron Neweb Corporation +282536 SHENZHEN HOLATEK CO.,LTD +2826a6 PBR electronics GmbH +2827bf Samsung Electronics Co.,Ltd +28285d Zyxel Communications Corporation +282986 APC by Schneider Electric +2829cc Corsa Technology Incorporated +2829d9 GlobalBeiMing technology (Beijing)Co. Ltd +282c02 IEEE Registration Authority +282cb2 TP-LINK TECHNOLOGIES CO.,LTD. +282fc2 Automotive Data Solutions +2830ac Frontiir Co. Ltd. +283152 HUAWEI TECHNOLOGIES CO.,LTD +283166 vivo Mobile Communication Co., Ltd. +2832c5 HUMAX Co., Ltd. +283334 Huawei Device Co., Ltd. +283410 Enigma Diagnostics Limited +2834a2 Cisco Systems, Inc +283545 SHENZHEN CHUANGWEI-RGB ELECTRONICS CO.,LTD +283638 IEEE Registration Authority +283713 Shenzhen 3Nod Digital Technology Co., Ltd. +283737 Apple, Inc. +28385c FLEXTRONICS +2838cf Gen2wave +283926 CyberTAN Technology Inc. +28395e Samsung Electronics Co.,Ltd +2839e7 Preceno Technology Pte.Ltd. +283a4d Cloud Network Technology (Samoa) Limited +283b82 D-Link International +283b96 Cool Control LTD +283ce4 HUAWEI TECHNOLOGIES CO.,LTD +283e76 Common Networks +283f69 Sony Mobile Communications Inc +28401a C8 MediSensors, Inc. +284121 OptiSense Network, LLC +2841c6 HUAWEI TECHNOLOGIES CO.,LTD +284430 GenesisTechnical Systems (UK) Ltd +2847aa Nokia Corporation +284846 GridCentric Inc. +284c53 Intune Networks +284d92 Luminator +284ed7 OutSmart Power Systems, Inc. +284fce Liaoning Wontel Science and Technology Development Co.,Ltd. +285132 Shenzhen Prayfly Technology Co.,Ltd +285261 Cisco Systems, Inc +2852e0 Layon international Electronic & Telecom Co.,Ltd +2852f9 Zhongxin Intelligent Times (Shenzhen) Co., Ltd. +28565a Hon Hai Precision Ind. Co.,Ltd. +2856c1 Harman International +285767 Dish Technologies Corp +2857be Hangzhou Hikvision Digital Technology Co.,Ltd. +285aeb Apple, Inc. +285f2f RNware Co.,Ltd. +285fdb HUAWEI TECHNOLOGIES CO.,LTD +286046 Lantech Communications Global, Inc. +286094 CAPELEC +286336 Siemens AG +28656b Keystone Microtech Corporation +2866e3 AzureWave Technology Inc. +286ab8 Apple, Inc. +286aba Apple, Inc. +286c07 XIAOMI Electronics,CO.,LTD +286d97 SAMJIN Co., Ltd. +286dcd Beijing Winner Microelectronics Co.,Ltd. +286ed4 HUAWEI TECHNOLOGIES CO.,LTD +286f7f Cisco Systems, Inc +287184 Spire Payments +2872c5 Smartmatic Corp +2872f0 ATHENA +2875d8 FUJIAN STAR-NET COMMUNICATION CO.,LTD +287610 IgniteNet +2876cd Funshion Online Technologies Co.,Ltd +287994 Realplay Digital Technology(Shenzhen) Co.,Ltd +287aee ARRIS Group, Inc. +287b09 zte corporation +287cdb Hefei Toycloud Technology Co.,ltd +287fcf Intel Corporate +288023 Hewlett Packard +288088 NETGEAR +2880a2 Novatel Wireless Solutions, Inc. +288335 Samsung Electronics Co.,Ltd +28840e silicon valley immigration service +2884fa SHARP Corporation +28852d Touch Networks +288915 CashGuard Sverige AB +288a1c Juniper Networks +288cb8 zte corporation +2891d0 Stage Tec Entwicklungsgesellschaft für professionelle Audiotechnik mbH +28924a Hewlett Packard +2893fe Cisco Systems, Inc +28940f Cisco Systems, Inc +2894af Samhwa Telecom +28987b Samsung Electronics Co.,Ltd +28993a Arista Networks +2899c7 LINDSAY BROADBAND INC +289a4b SteelSeries ApS +289afa TCT mobile ltd +289e97 HUAWEI TECHNOLOGIES CO.,LTD +289edf Danfoss Turbocor Compressors, Inc +289efc Sagemcom Broadband SAS +28a02b Apple, Inc. +28a183 ALPS ELECTRIC CO., LTD. +28a186 enblink +28a192 GERP Solution +28a1eb ETEK TECHNOLOGY (SHENZHEN) CO.,LTD +28a241 exlar corp +28a24b Juniper Networks +28a574 Miller Electric Mfg. Co. +28a5ee Shenzhen SDGI CATV Co., Ltd +28a6ac seca gmbh & co. kg +28a6db HUAWEI TECHNOLOGIES CO.,LTD +28ac67 Mach Power, Rappresentanze Internazionali s.r.l. +28ac9e Cisco Systems, Inc +28ad3e Shenzhen TONG BO WEI Technology CO.,LTD +28af0a Sirius XM Radio Inc +28b0cc Xenya d.o.o. +28b2bd Intel Corporate +28b3ab Genmark Automation +28b448 HUAWEI TECHNOLOGIES CO.,LTD +28b4fb Sprocomm Technologies CO.,LTD. +28b9d9 Radisys Corporation +28ba18 NextNav, LLC +28bab5 Samsung Electronics Co.,Ltd +28bb59 RNET Technologies, Inc. +28bc18 SourcingOverseas Co. Ltd +28bc56 EMAC, Inc. +28bd89 Google, Inc. +28be03 TCT mobile ltd +28be9b Technicolor CH USA Inc. +28bf89 Fiberhome Telecommunication Technologies Co.,LTD +28c0da Juniper Networks +28c13c Hon Hai Precision Ind. Co., Ltd. +28c2dd AzureWave Technology Inc. +28c63f Intel Corporate +28c671 Yota Devices OY +28c68e NETGEAR +28c718 Altierre +28c7ce Cisco Systems, Inc +28c825 DellKing Industrial Co., Ltd +28c87a ARRIS Group, Inc. +28c914 Taimag Corporation +28ca09 ThyssenKrupp Elevators (Shanghai) Co.,Ltd +28cbeb One +28cc01 Samsung Electronics Co.,Ltd +28ccff Corporacion Empresarial Altra SL +28cd1c Espotel Oy +28cd4c Individual Computers GmbH +28cd9c Shenzhen Dynamax Software Development Co.,Ltd. +28cf08 ESSYS +28cfda Apple, Inc. +28cfe9 Apple, Inc. +28d0cb Cambridge Communication Systems Ltd +28d1af Nokia Corporation +28d1b7 Shenzhen YOUHUA Technology Co., Ltd +28d244 LCFC(HeFei) Electronics Technology Co., Ltd. +28d436 Jiangsu dewosi electric co., LTD +28d576 Premier Wireless, Inc. +28d93e Telecor Inc. +28d98a Hangzhou Konke Technology Co.,Ltd. +28d997 Yuduan Mobile Co., Ltd. +28db81 Shanghai Guao Electronic Technology Co., Ltd +28def6 bioMerieux Inc. +28e02c Apple, Inc. +28e14c Apple, Inc. +28e297 Shanghai InfoTM Microelectronics Co.,Ltd. +28e31f Xiaomi Communications Co Ltd +28e347 Liteon Technology Corporation +28e476 Pi-Coral +28e608 Tokheim +28e6e9 SIS Sat Internet Services GmbH +28e794 Microtime Computer Inc. +28e7cf Apple, Inc. +28e98e Mitsubishi Electric Corporation +28ec9a Texas Instruments +28ed58 JAG Jakob AG +28ed6a Apple, Inc. +28ede0 AMPAK Technology, Inc. +28ee2c Frontline Test Equipment +28ee52 TP-LINK TECHNOLOGIES CO.,LTD. +28eed3 Shenzhen Super D Technology Co., Ltd +28ef01 Private +28f076 Apple, Inc. +28f10e Dell Inc. +28f358 2C - Trifonov & Co +28f366 Shenzhen Bilian electronic CO.,LTD +28f532 ADD-Engineering BV +28f537 IEEE Registration Authority +28f606 Syes srl +28faa0 vivo Mobile Communication Co., Ltd. +28fbd3 Ragentek Technology Group +28fc51 The Electric Controller and Manufacturing Co., LLC +28fcf6 Shenzhen Xin KingBrand enterprises Co.,Ltd +28fd80 IEEE Registration Authority +28fe65 DongGuan Siyoto Electronics Co., Ltd +28fecd Lemobile Information Technology (Beijing) Co., Ltd. +28fede COMESTA, Inc. +28ff3c Apple, Inc. +28ff3e zte corporation +28ffb2 Toshiba Corp. +2c002c UNOWHY +2c0033 EControls, LLC +2c00f7 XOS +2c010b NASCENT Technology, LLC - RemKon +2c01b5 Cisco Systems, Inc +2c029f 3ALogics +2c0623 Win Leader Inc. +2c073c DEVLINE LIMITED +2c081c OVH +2c088c HUMAX Co., Ltd. +2c094d Raptor Engineering, LLC +2c09cb COBS AB +2c0be9 Cisco Systems, Inc +2c0e3d SAMSUNG ELECTRO-MECHANICS(THAILAND) +2c10c1 Nintendo Co., Ltd. +2c15e1 Phicomm (Shanghai) Co., Ltd. +2c16bd IEEE Registration Authority +2c1875 Skyworth Digital Technology(Shenzhen) Co.,Ltd +2c18ae Trend Electronics Co., Ltd. +2c1984 IDN Telecom, Inc. +2c1a31 Electronics Company Limited +2c1bc8 Hunan Topview Network System CO.,LTD +2c1cf6 Alien Green LLC +2c1db8 ARRIS Group, Inc. +2c1e4f Chengdu Qianli Network Technology Co., Ltd. +2c1eea AERODEV +2c1f23 Apple, Inc. +2c200b Apple, Inc. +2c2131 Juniper Networks +2c2172 Juniper Networks +2c21d7 IMAX Corporation +2c228b CTR SRL +2c233a Hewlett Packard +2c245f Babolat VS +2c2617 Oculus VR, LLC +2c265f IEEE Registration Authority +2c26c5 zte corporation +2c279e IEEE Registration Authority +2c27d7 Hewlett Packard +2c282d BBK EDUCATIONAL ELECTRONICS CORP.,LTD. +2c28b7 Hangzhou Ruiying technology co., LTD +2c2997 Microsoft Corporation +2c2bf9 LG Innotek +2c2d48 bct electronic GesmbH +2c3033 NETGEAR +2c3068 Pantech Co.,Ltd +2c3124 Cisco Systems, Inc +2c3311 Cisco Systems, Inc +2c3361 Apple, Inc. +2c337a Hon Hai Precision Ind. Co.,Ltd. +2c3427 ERCO & GENER +2c3557 ELLIY Power CO..Ltd +2c36a0 Capisco Limited +2c36f8 Cisco Systems, Inc +2c3731 SHENZHEN YIFANG DIGITAL TECHNOLOGY CO.,LTD. +2c3796 CYBO CO.,LTD. +2c37c5 Qingdao Haier Intelligent Home Appliance Technology Co.,Ltd +2c3996 Sagemcom Broadband SAS +2c39c1 Ciena Corporation +2c3a28 Fagor Electrónica +2c3ae8 Espressif Inc. +2c3bfd Netstor Technology Co., Ltd. +2c3ecf Cisco Systems, Inc +2c3f0b Cisco Meraki +2c3f38 Cisco Systems, Inc +2c3f3e Alge-Timing GmbH +2c402b Smart iBlue Technology Limited +2c4053 Samsung Electronics Co.,Ltd +2c4138 Hewlett Packard +2c41a1 Bose Corporation +2c4205 Lytx +2c431a Shenzhen YOUHUA Technology Co., Ltd +2c4401 Samsung Electronics Co.,Ltd +2c441b Spectrum Medical Limited +2c44fd Hewlett Packard +2c4759 Beijing MEGA preponderance Science & Technology Co. Ltd +2c4835 IEEE Registration Authority +2c4cc6 Murata Manufacturing Co., Ltd. +2c4d54 ASUSTek COMPUTER INC. +2c4d79 WEIFANG GOERTEK ELECTRONICS CO.,LTD +2c4e7d Chunghua Intelligent Network Equipment Inc. +2c4f52 Cisco Systems, Inc +2c5089 Shenzhen Kaixuan Visual Technology Co.,Limited +2c534a Shenzhen Winyao Electronic Limited +2c542d Cisco Systems, Inc +2c5491 Microsoft Corporation +2c54cf LG Electronics (Mobile Communications) +2c553c Gainspeed, Inc. +2c557c Shenzhen YOUHUA Technology Co., Ltd +2c55d3 HUAWEI TECHNOLOGIES CO.,LTD +2c56dc ASUSTek COMPUTER INC. +2c5731 Wingtech Group (HongKong)Limited +2c584f ARRIS Group, Inc. +2c58e8 HUAWEI TECHNOLOGIES CO.,LTD +2c598a LG Electronics (Mobile Communications) +2c59e5 Hewlett Packard +2c5a05 Nokia Corporation +2c5a0f Cisco Systems, Inc +2c5a8d SYSTRONIK Elektronik u. Systemtechnik GmbH +2c5aa3 PROMATE ELECTRONIC CO.LTD +2c5bb8 GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD +2c5be1 Centripetal Networks, Inc +2c5d34 GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD +2c5d93 Ruckus Wireless +2c5ff3 Pertronic Industries +2c600c QUANTA COMPUTER INC. +2c6104 SHENZHEN FENGLIAN TECHNOLOGY CO., LTD. +2c61f6 Apple, Inc. +2c625a Finest Security Systems Co., Ltd +2c6289 Regenersis (Glenrothes) Ltd +2c6373 SICHUAN TIANYI COMHEART TELECOMCO., LTD +2c641f Vizio, Inc +2c6798 InTalTech Ltd. +2c67fb ShenZhen Zhengjili Electronics Co., LTD +2c69ba RF Controls, LLC +2c6a6f IEEE Registration Authority +2c6b7d Texas Instruments +2c6bf5 Juniper Networks +2c6e85 Intel Corporate +2c6fc9 Hon Hai Precision Ind. Co.,Ltd. +2c7155 HiveMotion +2c72c3 Soundmatters +2c7360 Earda Technologies co Ltd +2c73a0 Cisco Systems, Inc +2c750f Shanghai Dongzhou-Lawton Communication Technology Co. Ltd. +2c768a Hewlett Packard +2c780e Huawei Device Co., Ltd. +2c79d7 Sagemcom Broadband SAS +2c7b5a Milper Ltd +2c7b84 OOO Petr Telegin +2c7ce4 Wuhan Tianyu Information Industry Co., Ltd. +2c7e81 ARRIS Group, Inc. +2c7ecf Onzo Ltd +2c8065 HARTING Inc. of North America +2c8158 Hon Hai Precision Ind. Co.,Ltd. +2c86d2 Cisco Systems, Inc +2c8a72 HTC Corporation +2c8bf2 Hitachi Metals America Ltd +2c9127 Eintechno Corporation +2c922c Kishu Giken Kogyou Company Ltd,. +2c9464 Cincoze Co., Ltd. +2c9569 ARRIS Group, Inc. +2c957f zte corporation +2c9662 Invenit BV +2c9717 I.C.Y. B.V. +2c97b1 HUAWEI TECHNOLOGIES CO.,LTD +2c9924 ARRIS Group, Inc. +2c9aa4 Eolo SpA +2c9d1e HUAWEI TECHNOLOGIES CO.,LTD +2c9e5f ARRIS Group, Inc. +2c9eec Jabil Circuit Penang +2c9efc CANON INC. +2ca02f Veroguard Systems Pty Ltd +2ca157 acromate, Inc. +2ca17d ARRIS Group, Inc. +2ca2b4 Fortify Technologies, LLC +2ca30e POWER DRAGON DEVELOPMENT LIMITED +2ca539 Parallel Wireless, Inc +2ca780 True Technologies Inc. +2ca835 RIM +2ca89c Creatz inc. +2ca9f0 GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD +2caa8e Wyze Labs Inc +2cab00 HUAWEI TECHNOLOGIES CO.,LTD +2cab25 SHENZHEN GONGJIN ELECTRONICS CO.,LT +2cab33 Texas Instruments +2caba4 Cisco SPVTG +2cabeb Cisco Systems, Inc +2cac44 CONEXTOP +2cad13 SHENZHEN ZHILU TECHNOLOGY CO.,LTD +2cae2b Samsung Electronics Co.,Ltd +2cb05d NETGEAR +2cb0df Soliton Technologies Pvt Ltd +2cb115 Integrated Device Technology (Malaysia) Sdn. Bhd. +2cb21a Phicomm (Shanghai) Co., Ltd. +2cb43a Apple, Inc. +2cb693 Radware +2cb69d RED Digital Cinema +2cb8ed SonicWall +2cbaba Samsung Electronics Co.,Ltd +2cbe08 Apple, Inc. +2cbe97 Ingenieurbuero Bickele und Buehler GmbH +2cc260 Oracle Corporation +2cc407 machineQ +2cc548 IAdea Corporation +2cc5d3 Ruckus Wireless +2cca0c WITHUS PLANET +2ccc15 Nokia Corporation +2ccc44 Sony Interactive Entertainment Inc. +2ccce6 Skyworth Digital Technology(Shenzhen) Co.,Ltd +2ccd27 Precor Inc +2ccd43 Summit Technology Group +2ccd69 Aqavi.com +2ccf58 HUAWEI TECHNOLOGIES CO.,LTD +2cd02d Cisco Systems, Inc +2cd05a Liteon Technology Corporation +2cd141 IEEE Registration Authority +2cd1da Sanjole, Inc. +2cd2e3 Guangzhou Aoshi Electronic Co.,Ltd +2cd2e7 Nokia Corporation +2cd444 FUJITSU LIMITED +2cd974 Hui Zhou Gaoshengda Technology Co.,LTD +2cdcad Wistron Neweb Corporation +2cdd0c Discovergy GmbH +2cdd95 Taicang T&W Electronics +2cdda3 Point Grey Research Inc. +2ce2a8 DeviceDesign +2ce412 Sagemcom Broadband SAS +2ce6cc Ruckus Wireless +2ce871 Alert Metalguard ApS +2cedeb Alpheus Digital Company Limited +2cee26 Petroleum Geo-Services +2cf0a2 Apple, Inc. +2cf0ee Apple, Inc. +2cf203 EMKO ELEKTRONIK SAN VE TIC AS +2cf432 Espressif Inc. +2cf4c5 Avaya Inc +2cf7f1 Seeed Technology Inc. +2cf89b Cisco Systems, Inc +2cfaa2 Alcatel-Lucent Enterprise +2cfce4 CTEK Sweden AB +2cfd37 Blue Calypso, Inc. +2cfda1 ASUSTek COMPUTER INC. +2cfdab Motorola (Wuhan) Mobility Technologies Communication Co., Ltd. +2cff65 Oki Electric Industry Co., Ltd. +2cffee vivo Mobile Communication Co., Ltd. +30053f JTI Co.,Ltd. +30055c Brother industries, LTD. +30074d SAMSUNG ELECTRO-MECHANICS(THAILAND) +3009f9 IEEE Registration Authority +300a60 IEEE Registration Authority +300ac5 Ruio telecommunication technologies Co., Limited +300b9c Delta Mobile Systems, Inc. +300c23 zte corporation +300d2a Zhejiang Wellcom Technology Co.,Ltd. +300d43 Microsoft Mobile Oy +300d9e Ruijie Networks Co.,LTD +300ed5 Hon Hai Precision Ind. Co.,Ltd. +300ee3 Aquantia Corporation +3010b3 Liteon Technology Corporation +3010e4 Apple, Inc. +301389 Siemens AG, Automations & Drives, +30142d Piciorgros GmbH +30144a Wistron Neweb Corporation +301518 Ubiquitous Communication Co. ltd. +30168d ProLon +3017c8 Sony Mobile Communications Inc +3018cf DEOS control systems GmbH +301966 Samsung Electronics Co.,Ltd +301a28 Mako Networks Ltd +301b97 Lierda Science & Technology Group Co.,Ltd +301f9a IEEE Registration Authority +30215b Shenzhen Ostar Display Electronic Co.,Ltd +302303 Belkin International Inc. +302432 Intel Corporate +302478 Sagemcom Broadband SAS +302952 Hillstone Networks Inc +3029be Shanghai MRDcom Co.,Ltd +302de8 JDA, LLC (JDA Systems) +30317d Hosiden Corporation +303294 W-IE-NE-R Plein & Baus GmbH +3032d4 Hanilstm Co., Ltd. +303335 Boosty +3034d2 Availink, Inc. +3035ad Apple, Inc. +3037a6 Cisco Systems, Inc +303855 Nokia Corporation +303926 Sony Mobile Communications Inc +303955 Shenzhen Jinhengjia Electronic Co., Ltd. +3039f2 ADB Broadband Italia +303a64 Intel Corporate +303aba Guangzhou BaoLun Electronics Co., Ltd +303d08 GLINTT TES S.A. +303ead Sonavox Canada Inc +304174 ALTEC LANSING LLC +304225 BURG-WÄCHTER KG +3042a1 ilumisys Inc. DBA Toggled +304449 PLATH GmbH +304487 Hefei Radio Communication Technology Co., Ltd +3044a1 Shanghai Nanchao Information Technology +304511 Texas Instruments +304596 HUAWEI TECHNOLOGIES CO.,LTD +30469a NETGEAR +30493b Nanjing Z-Com Wireless Co.,Ltd +304a26 Shenzhen Trolink Technology CO, LTD +304b07 Motorola Mobility LLC, a Lenovo Company +304c7e Panasonic Electric Works Automation Controls Techno Co.,Ltd. +304ec3 Tianjin Techua Technology Co., Ltd. +304f75 DASAN Network Solutions +3050fd Skyworth Digital Technology(Shenzhen) Co.,Ltd +3051f8 BYK-Gardner GmbH +30525a NST Co., LTD +3052cb Liteon Technology Corporation +3055ed Trex Network LLC +305714 Apple, Inc. +3057ac IRLAB LTD. +305890 Frontier Silicon Ltd +30595b streamnow AG +3059b7 Microsoft +305a3a ASUSTek COMPUTER INC. +305d38 Beissbarth +305da6 ADVALY SYSTEM Inc. +306023 ARRIS Group, Inc. +306112 PAV GmbH +306118 Paradom Inc. +30636b Apple, Inc. +3065ec Wistron (ChongQing) +30688c Reach Technology Inc. +30694b RIM +306a85 Samsung Electronics Co.,Ltd +306cbe Skymotion Technology (HK) Limited +306e5c Validus Technologies +306f07 Nations Technologies Inc. +3071b2 Hangzhou Prevail Optoelectronic Equipment Co.,LTD. +307350 Inpeco SA +307496 HUAWEI TECHNOLOGIES CO.,LTD +307512 Sony Mobile Communications Inc +30766f LG Electronics (Mobile Communications) +3077cb Maike Industry(Shenzhen)CO.,LTD +30785c Partow Tamas Novin (Parman) +30786b TIANJIN Golden Pentagon Electronics Co., Ltd. +3078c2 Innowireless / QUCELL Networks +307bac New H3C Technologies Co., Ltd +307c30 RIM +307c5e Juniper Networks +307cb2 ANOV FRANCE +307ecb SFR +308454 GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD +3085a9 ASUSTek COMPUTER INC. +30862d Arista Network, Inc. +308730 HUAWEI TECHNOLOGIES CO.,LTD +3087d9 Ruckus Wireless +308841 Sichuan AI-Link Technology Co., Ltd. +308944 DEVA Broadcast Ltd. +308976 DALIAN LAMBA TECHNOLOGY CO.,LTD +308999 Guangdong East Power Co., +3089d3 HONGKONG UCLOUDLINK NETWORK TECHNOLOGY LIMITED +308bb2 Cisco Systems, Inc +308cfb Dropcam +308d99 Hewlett Packard +3090ab Apple, Inc. +309176 Skyworth Digital Technology(Shenzhen) Co.,Ltd +30918f Technicolor +3092f6 SHANGHAI SUNMON COMMUNICATION TECHNOGY CO.,LTD +309435 vivo Mobile Communication Co., Ltd. +3095e3 SHANGHAI SIMCOM LIMITED +3096fb Samsung Electronics Co.,Ltd +309935 zte corporation +309bad BBK EDUCATIONAL ELECTRONICS CORP.,LTD. +309c23 Micro-Star INTL CO., LTD. +309ffb Ardomus Networks Corporation +30a1fa HUAWEI TECHNOLOGIES CO.,LTD +30a220 ARG Telecom +30a243 Shenzhen Prifox Innovation Technology Co., Ltd. +30a2c2 Huawei Device Co., Ltd. +30a889 DECIMATOR DESIGN +30a8db Sony Mobile Communications Inc +30a9de LG Innotek +30aabd Shanghai Reallytek Information Technology Co.,Ltd +30ae7b Deqing Dusun Electron CO., LTD +30aea4 Espressif Inc. +30aef6 Radio Mobile Access +30b164 Power Electronics International Inc. +30b216 ABB AG - Power Grids - Grid Automation +30b3a2 Shenzhen Heguang Measurement & Control Technology Co.,Ltd +30b49e TP-LINK TECHNOLOGIES CO.,LTD. +30b4b8 LG Electronics +30b5c2 TP-LINK TECHNOLOGIES CO.,LTD. +30b5f1 Aitexin Technology Co., Ltd +30b62d Mojo Networks, Inc. +30b64f Juniper Networks +30b7d4 Hitron Technologies. Inc +30c01b Shenzhen Jingxun Software Telecommunication Technology Co.,Ltd +30c3d9 ALPS ELECTRIC CO., LTD. +30c507 ECI Telecom Ltd. +30c750 MIC Technology Group +30c7ae Samsung Electronics Co.,Ltd +30c82a WI-BIZ srl +30cbf8 Samsung Electronics Co.,Ltd +30cda7 Samsung Electronics Co.,Ltd +30d16b Liteon Technology Corporation +30d17e HUAWEI TECHNOLOGIES CO.,LTD +30d32d devolo AG +30d357 Logosol, Inc. +30d386 zte corporation +30d46a Autosales Incorporated +30d587 Samsung Electronics Co.,Ltd +30d659 Merging Technologies SA +30d6c9 Samsung Electronics Co.,Ltd +30d9d9 Apple, Inc. +30de86 Cedac Software S.r.l. +30df8d SHENZHEN GONGJIN ELECTRONICS CO.,LT +30e090 Linctronix Ltd, +30e171 Hewlett Packard +30e37a Intel Corporate +30e3d6 Spotify USA Inc. +30e48e Vodafone UK +30e4db Cisco Systems, Inc +30e98e HUAWEI TECHNOLOGIES CO.,LTD +30ea26 Sycada BV +30eb1f Skylab M&C Technology Co.,Ltd +30eb25 INTEK DIGITAL +30eb5a LANDIS + GYR +30efd1 Alstom Strongwish (Shenzhen) Co., Ltd. +30f31d zte corporation +30f335 HUAWEI TECHNOLOGIES CO.,LTD +30f33a +plugg srl +30f42f ESP +30f6b9 Ecocentric Energy +30f70d Cisco Systems, Inc +30f772 Hon Hai Precision Ind. Co.,Ltd. +30f77f S Mobile Devices Limited +30f7c5 Apple, Inc. +30f7d7 Thread Technology Co., Ltd +30f9ed Sony Corporation +30fab7 Tunai Creative +30fb94 Shanghai Fangzhiwei Information Technology CO.,Ltd. +30fbb8 HUAWEI TECHNOLOGIES CO.,LTD +30fc68 TP-LINK TECHNOLOGIES CO.,LTD. +30fd11 MACROTECH (USA) INC. +30fd38 Google, Inc. +30fe31 Nokia +30fff6 HangZhou KuoHeng Technology Co.,ltd +34008a IEEE Registration Authority +3400a3 HUAWEI TECHNOLOGIES CO.,LTD +340286 Intel Corporate +34029b Plexonics Technologies LImited +3403de Texas Instruments +34049e IEEE Registration Authority +34074f AccelStor, Inc. +3407fb Ericsson AB +340804 D-Link Corporation +3408bc Apple, Inc. +340a22 TOP-ACCESS ELECTRONICS CO LTD +340a98 HUAWEI TECHNOLOGIES CO.,LTD +340aff Qingdao Hisense Communications Co.,Ltd. +340b40 MIOS ELETTRONICA SRL +340ced Moduel AB +340f66 MicroArx Corporation +341290 Treeview Co.,Ltd. +341298 Apple, Inc. +3412f9 HUAWEI TECHNOLOGIES CO.,LTD +3413a8 Mediplan Limited +3413e8 Intel Corporate +34145f Samsung Electronics Co.,Ltd +341513 Texas Instruments +34159e Apple, Inc. +3417eb Dell Inc. +341a35 Fiberhome Telecommunication Technologies Co.,LTD +341a4c SHENZHEN WEIBU ELECTRONICS CO.,LTD. +341b22 Grandbeing Technology Co., Ltd +341e6b HUAWEI TECHNOLOGIES CO.,LTD +341fe4 ARRIS Group, Inc. +342003 Shenzhen Feitengyun Technology Co.,LTD +342109 Jensen Scandinavia AS +342387 Hon Hai Precision Ind. Co.,Ltd. +3423ba SAMSUNG ELECTRO-MECHANICS(THAILAND) +34255d Shenzhen Loadcom Technology Co.,Ltd +342606 CarePredict, Inc. +342792 FREEBOX SAS +3428f0 ATN International Limited +342912 HUAWEI TECHNOLOGIES CO.,LTD +34298f IEEE Registration Authority +3429ea MCD ELECTRONICS SP. Z O.O. +342af1 Texas Instruments +342cc4 Compal Broadband Networks, Inc. +342d0d Samsung Electronics Co.,Ltd +342eb6 HUAWEI TECHNOLOGIES CO.,LTD +342f6e Anywire corporation +343111 Samsung Electronics Co.,Ltd +3431c4 AVM GmbH +3432e6 Panasonic Industrial Devices Europe GmbH +34363b Apple, Inc. +343759 zte corporation +3438af Inlab Software GmbH +3438b7 HUMAX Co., Ltd. +343d98 JinQianMao Technology Co.,Ltd. +343dc4 BUFFALO.INC +3440b5 IBM +34415d Intel Corporate +3441a8 ER-Telecom +344262 Apple, Inc. +34466f HiTEM Engineering +344b3d Fiberhome Telecommunication Technologies Co.,LTD +344b50 zte corporation +344ca4 amazipoint technology Ltd. +344cc8 Echodyne Corp +344dea zte corporation +344df7 LG Electronics (Mobile Communications) +344f3f IO-Power Technology Co., Ltd. +344f5c R&M AG +344f69 EKINOPS SAS +3451aa JID GLOBAL +3451c9 Apple, Inc. +34543c TAKAOKA TOKO CO.,LTD. +3456fe Cisco Meraki +345760 MitraStar Technology Corp. +345a06 SHARP Corporation +345aba tcloud intelligence +345b11 EVI HEAT AB +345bbb GD Midea Air-Conditioning Equipment Co.,Ltd. +345c40 Cargt Holdings LLC +345d10 Wytek +346178 The Boeing Company +346288 Cisco Systems, Inc +3464a9 Hewlett Packard +3466ea VERTU INTERNATIONAL CORPORATION LIMITED +34684a Teraworks Co., Ltd. +346895 Hon Hai Precision Ind. Co.,Ltd. +346987 zte corporation +346ac2 HUAWEI TECHNOLOGIES CO.,LTD +346b46 Sagemcom Broadband SAS +346b5b New H3C Technologies Co., Ltd +346bd3 HUAWEI TECHNOLOGIES CO.,LTD +346c0f Pramod Telecom Pvt. Ltd +346e8a Ecosense +346e9d Ericsson AB +346f90 Cisco Systems, Inc +346f92 White Rodgers Division +346fed Enovation Controls +347563 SHENZHEN RF-LINK TECHNOLOGY CO.,LTD. +3475c7 Avaya Inc +3476c5 I-O DATA DEVICE,INC. +347877 O-Net Communications (Shenzhen) Limited +3478d7 Gionee Communication Equipment Co.,Ltd. +347916 HUAWEI TECHNOLOGIES CO.,LTD +347a60 ARRIS Group, Inc. +347c25 Apple, Inc. +347e00 Huawei Device Co., Ltd. +347e39 Nokia Danmark A/S +347e5c Sonos, Inc. +347eca NEXTWILL +34800d Cavium Inc +3480b3 Xiaomi Communications Co Ltd +348137 UNICARD SA +3481c4 AVM GmbH +3481f4 SST Taiwan Ltd. +3482de Kiio Inc +348302 iFORCOM Co., Ltd +348446 Ericsson AB +348584 Aerohive Networks Inc. +34862a Heinz Lackmann GmbH & Co KG +34873d Quectel Wireless Solution Co.,Ltd. +34885d Logitech Far East +348a7b Samsung Electronics Co.,Ltd +348aae Sagemcom Broadband SAS +348b75 LAVA INTERNATIONAL(H.K) LIMITED +348f27 Ruckus Wireless +349342 TTE Corporation +3495db Logitec Corporation +349672 TP-LINK TECHNOLOGIES CO.,LTD. +3497f6 ASUSTek COMPUTER INC. +3497fb ADVANCED RF TECHNOLOGIES INC +34996f VPI Engineering +349971 Quanta Storage Inc. +3499d7 Universal Flow Monitors, Inc. +349a0d ZBD Displays Ltd +349b5b Maquet GmbH +349d90 Heinzmann GmbH & CO. KG +349e34 Evervictory Electronic Co.Ltd +34a183 AWare, Inc +34a2a2 HUAWEI TECHNOLOGIES CO.,LTD +34a395 Apple, Inc. +34a3bf Terewave. Inc. +34a55d TECHNOSOFT INTERNATIONAL SRL +34a5e1 Sensorist ApS +34a68c Shine Profit Development Limited +34a709 Trevil srl +34a7ba Fischer International Systems Corporation +34a843 KYOCERA Display Corporation +34a84e Cisco Systems, Inc +34a8eb Apple, Inc. +34aa8b Samsung Electronics Co.,Ltd +34aa99 Nokia +34aaee Mikrovisatos Servisas UAB +34ab37 Apple, Inc. +34ade4 Shanghai Chint Power Systems Co., Ltd. +34af2c Nintendo Co., Ltd. +34b1f7 Texas Instruments +34b20a Huawei Device Co., Ltd. +34b354 HUAWEI TECHNOLOGIES CO.,LTD +34b571 PLDS +34b5a3 CIG SHANGHAI CO LTD +34b7fd Guangzhou Younghead Electronic Technology Co.,Ltd +34ba38 PAL MOHAN ELECTRONICS PVT LTD +34ba51 Se-Kure Controls, Inc. +34ba75 Everest Networks, Inc +34ba9a Asiatelco Technologies Co. +34bb1f BlackBerry RTS +34bb26 Motorola Mobility LLC, a Lenovo Company +34bca6 Beijing Ding Qing Technology, Ltd. +34bdc8 Cisco Systems, Inc +34bdf9 Shanghai WDK Industrial Co.,Ltd. +34bdfa Cisco SPVTG +34be00 Samsung Electronics Co.,Ltd +34bf90 Fiberhome Telecommunication Technologies Co.,LTD +34c059 Apple, Inc. +34c0f9 Rockwell Automation +34c3ac Samsung Electronics Co.,Ltd +34c3d2 FN-LINK TECHNOLOGY LIMITED +34c5d0 Hagleitner Hygiene International GmbH +34c69a Enecsys Ltd +34c731 ALPS ELECTRIC CO., LTD. +34c803 Nokia Corporation +34c99d EIDOLON COMMUNICATIONS TECHNOLOGY CO. LTD. +34c9f0 LM Technologies Ltd +34cb1a Procter & Gamble Company +34cc28 Nexpring Co. LTD., +34cd6d CommSky Technologies +34cdbe HUAWEI TECHNOLOGIES CO.,LTD +34ce00 XIAOMI Electronics,CO.,LTD +34ce94 Parsec (Pty) Ltd +34d09b MobilMAX Technology Inc. +34d0b8 IEEE Registration Authority +34d262 SZ DJI TECHNOLOGY CO.,LTD +34d270 Amazon Technologies Inc. +34d2c4 RENA GmbH Print Systeme +34d712 Smartisan Digital Co., Ltd +34d772 Xiamen Yudian Automation Technology Co., Ltd +34d7b4 Tributary Systems, Inc. +34d954 WiBotic Inc. +34dab7 zte corporation +34dac1 SAE Technologies Development(Dongguan) Co., Ltd. +34db9c Sagemcom Broadband SAS +34dbfd Cisco Systems, Inc +34dd7e Umeox Innovations Co.,Ltd +34de1a Intel Corporate +34de34 zte corporation +34df2a Fujikon Industrial Co.,Limited +34e0cf zte corporation +34e0d7 DONGGUAN QISHENG ELECTRONICS INDUSTRIAL CO., LTD +34e12d Intel Corporate +34e1d1 IEEE Registration Authority +34e2fd Apple, Inc. +34e380 Genexis B.V. +34e42a Automatic Bar Controls Inc. +34e5ec Palo Alto Networks +34e6ad Intel Corporate +34e6d7 Dell Inc. +34e70b HAN Networks Co., Ltd +34e71c Shenzhen YOUHUA Technology Co., Ltd +34e894 TP-LINK TECHNOLOGIES CO.,LTD. +34e911 vivo Mobile Communication Co., Ltd. +34ea34 HangZhou Gubei Electronics Technology Co.,Ltd +34ed0b Shanghai XZ-COM.CO.,Ltd. +34ed1b Cisco Systems, Inc +34ef44 2Wire Inc +34ef8b NTT Communications Corporation +34f0ca Shenzhen Linghangyuan Digital Technology Co.,Ltd. +34f39a Intel Corporate +34f39b WizLAN Ltd. +34f62d SHARP Corporation +34f64b Intel Corporate +34f6d2 Panasonic Taiwan Co.,Ltd. +34f8e7 Cisco Systems, Inc +34f968 ATEK Products, LLC +34fa40 Guangzhou Robustel Technologies Co., Limited +34fa9f Ruckus Wireless +34fc6f ALCEA +34fcb9 Hewlett Packard Enterprise +34fcef LG Electronics (Mobile Communications) +380025 Intel Corporate +380118 ULVAC,Inc. +380195 Samsung Electronics Co.,Ltd +380197 TSST Global,Inc +38019f SHENZHEN FAST TECHNOLOGIES CO.,LTD +380546 Foctek Photonics, Inc. +3805ac Piller Group GmbH +3806b4 A.D.C. GmbH +3807d4 Zeppelin Systems GmbH +3808fd Silca Spa +3809a4 Firefly Integrations +380a0a Sky-City Communication and Electronics Limited Company +380a94 Samsung Electronics Co.,Ltd +380aab Formlabs +380b3c Texas Instruments +380b40 Samsung Electronics Co.,Ltd +380dd4 Primax Electronics Ltd. +380e4d Cisco Systems, Inc +380e7b V.P.S. Thai Co., Ltd +380f4a Apple, Inc. +380fe4 Dedicated Network Partners Oy +3810d5 AVM Audiovisuelles Marketing und Computersysteme GmbH +3816d1 Samsung Electronics Co.,Ltd +381766 PROMZAKAZ LTD. +3817c3 Hewlett Packard Enterprise +3817e1 Technicolor CH USA Inc. +38184c Sony Home Entertainment&Sound Products Inc +38192f Nokia Corporation +381a52 Seiko Epson Corporation +381c1a Cisco Systems, Inc +381c23 Hilan Technology CO.,LTD +381c4a SIMCom Wireless Solutions Co.,Ltd. +381d14 Skydio Inc. +381dd9 FN-LINK TECHNOLOGY LIMITED +382056 Cisco Systems, Inc +3820a8 ColorTokens, Inc. +382187 Midea Group Co., Ltd. +3821c7 Aruba, a Hewlett Packard Enterprise Company +38229d ADB Broadband Italia +3822d6 Hangzhou H3C Technologies Co., Limited +38256b Microsoft Mobile Oy +38262b UTran Technology +3826cd ANDTEK +3828ea Fujian Netcom Technology Co., LTD +38295a GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD +3829dd ONvocal Inc +382b78 ECO PLUGS ENTERPRISE CO., LTD +382c4a ASUSTek COMPUTER INC. +382dd1 Samsung Electronics Co.,Ltd +382de8 Samsung Electronics Co.,Ltd +3830f9 LG Electronics (Mobile Communications) +3831ac WEG +3835fb Sagemcom Broadband SAS +38378b HUAWEI TECHNOLOGIES CO.,LTD +383a21 IEEE Registration Authority +383b26 Jiangsu Qinheng Co., Ltd. +383bc8 2Wire Inc +383c9c Fujian Newland Payment Technology Co.,Ltd. +383f10 DBL Technology Ltd. +384233 Wildeboer Bauteile GmbH +3842a6 Ingenieurbuero Stahlkopf +384369 Patrol Products Consortium LLC +38437d Compal Broadband Networks, Inc. +38454c Light Labs, Inc. +38458c MyCloud Technology corporation +384608 zte corporation +3847bc HUAWEI TECHNOLOGIES CO.,LTD +38484c Apple, Inc. +384b76 AIRTAME ApS +384c4f HUAWEI TECHNOLOGIES CO.,LTD +384c90 ARRIS Group, Inc. +384f49 Juniper Networks +384ff0 AzureWave Technology Inc. +38521a Nokia +38539c Apple, Inc. +385610 CANDY HOUSE, Inc. +3856b5 Peerbridge Health Inc +38580c Panaccess Systems GmbH +3859f8 MindMade Sp. z o.o. +3859f9 Hon Hai Precision Ind. Co.,Ltd. +385aa8 Beijing Zhongdun Security Technology Development Co. +385f66 Cisco SPVTG +385fc3 Yu Jeong System, Co.Ltd +386077 PEGATRON CORPORATION +3863bb Hewlett Packard +3863f6 3NOD MULTIMEDIA(SHENZHEN)CO.,LTD +386645 OOSIC Technology CO.,Ltd +3866f0 Apple, Inc. +386793 Asia Optical Co., Inc. +3868dd INVENTEC CORPORATION +386b1c SHENZHEN MERCURY COMMUNICATION TECHNOLOGIES CO.,LTD. +386bbb ARRIS Group, Inc. +386c9b Ivy Biomedical +386e21 Wasion Group Ltd. +386e88 zte corporation +386ea2 vivo Mobile Communication Co., Ltd. +38700c ARRIS Group, Inc. +3871de Apple, Inc. +3872c0 Comtrend Corporation +3873ea IEEE Registration Authority +3876ca Shenzhen Smart Intelligent Technology Co.Ltd +3876d1 Euronda SpA +387862 Sony Mobile Communications Inc +387b47 AKELA, Inc. +3880df Motorola Mobility LLC, a Lenovo Company +3881d7 Texas Instruments +388345 TP-LINK TECHNOLOGIES CO.,LTD. +38839a SHENZHEN RF-LINK TECHNOLOGY CO.,LTD. +388602 Flexoptix GmbH +38892c Apple, Inc. +3889dc Opticon Sensors Europe B.V. +388ab7 ITC Networks +388b59 Google, Inc. +388c50 LG Electronics +388e7a AUTOIT +388ee7 Fanhattan LLC +3890a5 Cisco Systems, Inc +3891d5 Hangzhou H3C Technologies Co., Limited +3891fb Xenox Holding BV +389496 Samsung Electronics Co.,Ltd +3894e0 Syrotech Networks. Ltd. +3894ed NETGEAR +389592 Beijing Tendyron Corporation +3897d6 Hangzhou H3C Technologies Co., Limited +3898d8 MERITECH CO.,LTD +389af6 Samsung Electronics Co.,Ltd +389d92 Seiko Epson Corporation +389f5a C-Kur TV Inc. +389f83 OTN Systems N.V. +38a28c SHENZHEN RF-LINK TECHNOLOGY CO.,LTD. +38a4ed Xiaomi Communications Co Ltd +38a53c COMECER Netherlands +38a5b6 SHENZHEN MEGMEET ELECTRICAL CO.,LTD +38a6ce BSkyB Ltd +38a851 Moog, Ing +38a86b Orga BV +38a95f Actifio Inc +38aa3c SAMSUNG ELECTRO MECHANICS CO., LTD. +38ac3d Nephos Inc +38ad8e New H3C Technologies Co., Ltd +38adbe New H3C Technologies Co., Ltd +38af29 Zhejiang Dahua Technology Co., Ltd. +38afd0 Private +38afd7 FUJITSU LIMITED +38b12d Sonotronic Nagel GmbH +38b19e IEEE Registration Authority +38b1db Hon Hai Precision Ind. Co.,Ltd. +38b4d3 BSH Hausgeraete GmbH +38b54d Apple, Inc. +38b5bd E.G.O. Elektro-Ger +38b725 Wistron Infocomm (Zhongshan) Corporation +38b74d Fijowave Limited +38b8eb IEEE Registration Authority +38bab0 Broadcom +38baf8 Intel Corporate +38bb23 OzVision America LLC +38bb3c Avaya Inc +38bc01 HUAWEI TECHNOLOGIES CO.,LTD +38bc1a MEIZU Technology Co., Ltd. +38bf2f Espec Corp. +38bf33 NEC CASIO Mobile Communications +38c096 ALPS ELECTRIC CO., LTD. +38c2ba CCTV NEOTECH +38c4e8 NSS Sp. z o.o. +38c70a WiFiSong +38c7ba CS Services Co.,Ltd. +38c85c Cisco SPVTG +38c986 Apple, Inc. +38c9a9 SMART High Reliability Solutions, Inc. +38ca97 Contour Design LLC +38cada Apple, Inc. +38cd07 Beijing FaceCam Technology Co., Ltd. +38d135 EasyIO Corporation Sdn. Bhd. +38d269 Texas Instruments +38d2ca Zhejiang Tmall Technology Co., Ltd. +38d40b Samsung Electronics Co.,Ltd +38d547 ASUSTek COMPUTER INC. +38d620 Limidea Concept Pte. Ltd. +38d7ca 7HUGS LABS +38d82f zte corporation +38d9a5 Mikotek Information Inc. +38dbbb Sunbow Telecom Co., Ltd. +38de60 Mohlenhoff GmbH +38dead Intel Corporate +38e08e Mitsubishi Electric Corporation +38e1aa zte corporation +38e26e ShenZhen Sweet Rain Electronics Co.,Ltd. +38e2dd zte corporation +38e3c5 Taicang T&W Electronics +38e595 SHENZHEN GONGJIN ELECTRONICS CO.,LT +38e60a Xiaomi Communications Co Ltd +38e7d8 HTC Corporation +38e8df b gmbh medien + datenbanken +38e98c Reco S.p.A. +38eaa7 Hewlett Packard +38ec11 Novatek Microelectronics Corp. +38ece4 Samsung Electronics Co.,Ltd +38ed18 Cisco Systems, Inc +38ee9d Anedo Ltd. +38efe3 INGENICO TERMINALS SAS +38f098 Vapor Stone Rail Systems +38f0c8 Livestream +38f135 SensorTec-Canada +38f23e Microsoft Mobile Oy +38f32e Skullcandy +38f33f TATSUNO CORPORATION +38f554 HISENSE ELECTRIC CO.,LTD +38f557 JOLATA, INC. +38f597 home2net GmbH +38f708 National Resource Management, Inc. +38f73d Amazon Technologies Inc. +38f7b2 SEOJUN ELECTRIC +38f85e HUMAX Co., Ltd. +38f889 HUAWEI TECHNOLOGIES CO.,LTD +38f8b7 V2COM PARTICIPACOES S.A. +38f8ca OWIN Inc. +38f9d3 Apple, Inc. +38faca Skyworth Digital Technology(Shenzhen) Co.,Ltd +38fb14 HUAWEI TECHNOLOGIES CO.,LTD +38fdfe IEEE Registration Authority +38fec5 Ellips B.V. +38ff36 Ruckus Wireless +3c01ef Sony Mobile Communications Inc +3c02b1 Creation Technologies LP +3c0461 ARRIS Group, Inc. +3c04bf PRAVIS SYSTEMS Co.Ltd., +3c0518 Samsung Electronics Co.,Ltd +3c05ab Product Creation Studio +3c0754 Apple, Inc. +3c0771 Sony Corporation +3c081e Beijing Yupont Electric Power Technology Co.,Ltd +3c08f6 Cisco Systems, Inc +3c096d Powerhouse Dynamics +3c0c48 Servergy, Inc. +3c0c7d Tiny Mesh AS +3c0cdb UNIONMAN TECHNOLOGY CO.,LTD +3c0e23 Cisco Systems, Inc +3c0fc1 KBC Networks +3c1040 daesung network +3c106f ALBAHITH TECHNOLOGIES +3c10e6 PHAZR Inc. +3c11b2 Fraunhofer FIT +3c15c2 Apple, Inc. +3c15ea TESCOM CO., LTD. +3c15fb HUAWEI TECHNOLOGIES CO.,LTD +3c1710 Sagemcom Broadband SAS +3c189f Nokia Corporation +3c18a0 Luxshare Precision Industry Company Limited +3c1915 GFI Chrono Time +3c197d Ericsson AB +3c1a0f ClearSky Data +3c1a57 Cardiopulmonary Corp +3c1a79 Huayuan Technology CO.,LTD +3c1cbe JADAK LLC +3c1e04 D-Link International +3c1e13 HANGZHOU SUNRISE TECHNOLOGY CO., LTD +3c20f6 Samsung Electronics Co.,Ltd +3c24f0 IEEE Registration Authority +3c25d7 Nokia Corporation +3c26d5 Sotera Wireless +3c2763 SLE quality engineering GmbH & Co. KG +3c286d Google, Inc. +3c2af4 Brother Industries, LTD. +3c2c30 Dell Inc. +3c2c94 杭州德澜科技有限公司(HangZhou Delan Technology Co.,Ltd) +3c2c99 Edgecore Networks Corporation +3c2db7 Texas Instruments +3c2ef9 Apple, Inc. +3c2eff Apple, Inc. +3c2f3a SFORZATO Corp. +3c300c Dewar Electronics Pty Ltd +3c3178 Qolsys Inc. +3c3300 Shenzhen Bilian electronic CO.,LTD +3c3556 Cognitec Systems GmbH +3c363d Nokia Corporation +3c36e4 ARRIS Group, Inc. +3c3786 NETGEAR +3c3888 ConnectQuest, llc +3c39c3 JW Electronics Co., Ltd. +3c39e7 IEEE Registration Authority +3c3a73 Avaya Inc +3c3f51 2CRSI +3c404f GUANGDONG PISEN ELECTRONICS CO.,LTD +3c427e IEEE Registration Authority +3c438e ARRIS Group, Inc. +3c46d8 TP-LINK TECHNOLOGIES CO.,LTD. +3c4711 HUAWEI TECHNOLOGIES CO.,LTD +3c479b Theissen Training Systems, Inc. +3c4937 ASSMANN Electronic GmbH +3c4a92 Hewlett Packard +3c4c69 Infinity System S.L. +3c4cd0 CERAGON NETWORKS +3c4e47 Etronic A/S +3c5282 Hewlett Packard +3c574f China Mobile Group Device Co.,Ltd. +3c576c Samsung Electronics Co.,Ltd +3c57bd Kessler Crane Inc. +3c57d5 FiveCo +3c591e TCL King Electrical Appliances (Huizhou) Co., Ltd +3c5a37 Samsung Electronics Co.,Ltd +3c5ab4 Google, Inc. +3c5cc3 Shenzhen First Blue Chip Technology Ltd +3c5cc4 Amazon Technologies Inc. +3c5ec3 Cisco Systems, Inc +3c5f01 Synerchip Co., Ltd. +3c6104 Juniper Networks +3c6200 Samsung Electronics Co.,Ltd +3c6278 SHENZHEN JETNET TECHNOLOGY CO.,LTD. +3c6716 Lily Robotics +3c672c Sciovid Inc. +3c678c HUAWEI TECHNOLOGIES CO.,LTD +3c6816 VXi Corporation +3c6a2c IEEE Registration Authority +3c6a7d Niigata Power Systems Co., Ltd. +3c6a9d Dexatek Technology LTD. +3c6aa7 Intel Corporate +3c6e63 Mitron OY +3c6f45 Fiberpro Inc. +3c6fea Panasonic India Pvt. Ltd. +3c6ff7 EnTek Systems, Inc. +3c7059 MakerBot Industries +3c71bf Espressif Inc. +3c7437 RIM +3c754a ARRIS Group, Inc. +3c77e6 Hon Hai Precision Ind. Co.,Ltd. +3c7843 HUAWEI TECHNOLOGIES CO.,LTD +3c7873 Airsonics +3c7a8a ARRIS Group, Inc. +3c7db1 Texas Instruments +3c7f6f Telechips, Inc. +3c80aa Ransnet Singapore Pte Ltd +3c81d8 Sagemcom Broadband SAS +3c831e CKD Corporation +3c8375 Microsoft Corporation +3c83b5 Advance Vision Electronics Co. Ltd. +3c86a8 Sangshin elecom .co,, LTD +3c86d1 vivo Mobile Communication Co., Ltd. +3c894d Dr. Ing. h.c. F. Porsche AG +3c8970 Neosfar +3c8994 BSkyB Ltd +3c89a6 KAPELSE +3c8ab0 Juniper Networks +3c8ae5 Tensun Information Technology(Hangzhou) Co.,LTD +3c8bcd Alcatel-Lucent Shanghai Bell Co., Ltd +3c8bfe Samsung Electronics Co.,Ltd +3c8c40 Hangzhou H3C Technologies Co., Limited +3c8c93 Juniper Networks +3c8cf8 TRENDnet, Inc. +3c8d20 Google, Inc. +3c8f06 Shenzhen Libtor Technology Co.,Ltd +3c9066 SmartRG, Inc. +3c912b Vexata Inc +3c9157 Yulong Computer Telecommunication Scientific (Shenzhen) Co.,Ltd +3c9174 ALONG COMMUNICATION TECHNOLOGY +3c9180 Liteon Technology Corporation +3c92dc Octopod Technology Co. Ltd. +3c94d5 Juniper Networks +3c9509 Liteon Technology Corporation +3c970e Wistron InfoComm(Kunshan)Co.,Ltd. +3c977e IPS Technology Limited +3c9872 Sercomm Corporation. +3c98bf Quest Controls, Inc. +3c99f7 Lansentechnology AB +3c9a77 Technicolor CH USA Inc. +3c9bd6 Vizio, Inc +3c9d56 HUAWEI TECHNOLOGIES CO.,LTD +3c9f81 Shenzhen CATIC Bit Communications Technology Co.,Ltd +3ca067 Liteon Technology Corporation +3ca10d Samsung Electronics Co.,Ltd +3ca308 Texas Instruments +3ca315 Bless Information & Communications Co., Ltd +3ca31a Oilfind International LLC +3ca348 vivo Mobile Communication Co., Ltd. +3ca581 vivo Mobile Communication Co., Ltd. +3ca616 vivo Mobile Communication Co., Ltd. +3ca72b MRV Communications (Networks) LTD +3ca82a Hewlett Packard +3ca9f4 Intel Corporate +3caa3f iKey, Ltd. +3cab8e Apple, Inc. +3cae69 ESA Elektroschaltanlagen Grimma GmbH +3cb15b Avaya Inc +3cb17f Wattwatchers Pty Ld +3cb6b7 vivo Mobile Communication Co., Ltd. +3cb72b PLUMgrid Inc +3cb74b Technicolor CH USA Inc. +3cb792 Hitachi Maxell, Ltd., Optronics Division +3cb87a Private +3cb9a6 Belden Deutschland GmbH +3cbb73 Shenzhen Xinguodu Technology Co., Ltd. +3cbbfd Samsung Electronics Co.,Ltd +3cbd3e Beijing Xiaomi Electronics Co., Ltd. +3cbdd8 LG ELECTRONICS INC +3cbee1 NIKON CORPORATION +3cc079 Shenzhen One-Nine Intelligent Electronic Science and Technology Co., Ltd +3cc0c6 d&b audiotechnik GmbH +3cc12c AES Corporation +3cc1f6 Melange Systems Pvt. Ltd. +3cc243 Nokia Corporation +3cc2e1 XINHUA CONTROL ENGINEERING CO.,LTD +3cc99e Huiyang Technology Co., Ltd +3cca87 Iders Incorporated +3ccb7c TCT mobile ltd +3ccd5a Technische Alternative GmbH +3ccd5d HUAWEI TECHNOLOGIES CO.,LTD +3ccd93 LG ELECTRONICS INC +3cce15 Mercedes-Benz USA, LLC +3cce73 Cisco Systems, Inc +3ccf5b ICOMM HK LIMITED +3cd0f8 Apple, Inc. +3cd16e Telepower Communication Co., Ltd +3cd4d6 WirelessWERX, Inc +3cd7da SK Mtek microelectronics(shenzhen)limited +3cd92b Hewlett Packard +3cd9ce Eclipse WiFi +3cda2a zte corporation +3cdcbc Samsung Electronics Co.,Ltd +3cdd89 SOMO HOLDINGS & TECH. CO.,LTD. +3cdf1e Cisco Systems, Inc +3cdfa9 ARRIS Group, Inc. +3cdfbd HUAWEI TECHNOLOGIES CO.,LTD +3ce072 Apple, Inc. +3ce1a1 Universal Global Scientific Industrial Co., Ltd. +3ce5a6 Hangzhou H3C Technologies Co., Limited +3ce5b4 KIDASEN INDUSTRIA E COMERCIO DE ANTENAS LTDA +3ce624 LG Display +3ce824 HUAWEI TECHNOLOGIES CO.,LTD +3cea4f 2Wire Inc +3ceaf9 JUBIXCOLTD +3ceafb NSE AG +3cecef Super Micro Computer, Inc. +3cef8c Zhejiang Dahua Technology Co., Ltd. +3cf011 Intel Corporate +3cf392 Virtualtek. Co. Ltd +3cf4f9 Moda-InnoChips +3cf52c DSPECIALISTS GmbH +3cf591 GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD +3cf5cc New H3C Technologies Co., Ltd +3cf72a Nokia Corporation +3cf748 Shenzhen Linsn Technology Development Co.,Ltd +3cf7a4 Samsung Electronics Co.,Ltd +3cf808 HUAWEI TECHNOLOGIES CO.,LTD +3cf862 Intel Corporate +3cfa43 HUAWEI TECHNOLOGIES CO.,LTD +3cfb5c Fiberhome Telecommunication Technologies Co.,LTD +3cfb96 Emcraft Systems LLC +3cfdfe Intel Corporate +4000e0 Derek(Shaoguan)Limited +400107 Arista Corp +40017a Cisco Systems, Inc +4001c6 3COM EUROPE LTD +40040c A&T +4006a0 Texas Instruments +4007c0 Railtec Systems GmbH +400d10 ARRIS Group, Inc. +400e67 Tremol Ltd. +400e85 SAMSUNG ELECTRO-MECHANICS(THAILAND) +401175 IEEE Registration Authority +4011dc Sonance +4012e4 Compass-EOS +4013d9 Global ES +401597 Protect America, Inc. +40163b Samsung Electronics Co.,Ltd +40167e ASUSTek COMPUTER INC. +40169f TP-LINK TECHNOLOGIES CO.,LTD. +4016fa EKM Metering +4017e2 INTAI TECHNOLOGY CORP. +4018b1 Aerohive Networks Inc. +4018d7 Smartronix, Inc. +401920 Movon Corporation +401b5f WEIFANG GOERTEK ELECTRONICS CO.,LTD +401d59 Biometric Associates, LP +4022ed Digital Projection Ltd +402343 CHONGQING FUGUI ELECTRONICS CO.,LTD. +4025c2 Intel Corporate +402619 Apple, Inc. +40270b Mobileeco Co., Ltd +402814 RFI Engineering +402b50 ARRIS Group, Inc. +402ba1 Sony Mobile Communications Inc +402cf4 Universal Global Scientific Industrial Co., Ltd. +402e28 MiXTelematics +403004 Apple, Inc. +403067 Conlog (Pty) Ltd +40313c XIAOMI Electronics,CO.,LTD +40331a Apple, Inc. +40336c Godrej & Boyce Mfg. co. ltd +4037ad Macro Image Technology, Inc. +403cfc Apple, Inc. +403dec HUMAX Co., Ltd. +403f8c TP-LINK TECHNOLOGIES CO.,LTD. +404022 ZIV +40406b Icomera +4040a7 Sony Mobile Communications Inc +404229 Layer3TV, Inc +4045da Spreadtrum Communications (Shanghai) Co., Ltd. +40476a AG Acquisition Corp. d.b.a. ASTRO Gaming +4048fd IEEE Registration Authority +40490f Hon Hai Precision Ind. Co.,Ltd. +40498a Synapticon GmbH +404a03 Zyxel Communications Corporation +404a18 Addrek Smart Solutions +404ad4 Widex A/S +404d7f Apple, Inc. +404d8e HUAWEI TECHNOLOGIES CO.,LTD +404e36 HTC Corporation +404eeb Higher Way Electronic Co., Ltd. +4050b5 Shenzhen New Species Technology Co., Ltd. +4050e0 Milton Security Group LLC +40516c Grandex International Corporation +40520d Pico Technology +4054e4 Wearsafe Labs Inc +405539 Cisco Systems, Inc +405582 Nokia +40560c In Home Displays Ltd +40562d Smartron India Pvt ltd +405662 GuoTengShengHua Electronics LTD. +405a9b ANOVO +405bd8 CHONGQING FUGUI ELECTRONICS CO.,LTD. +405cfd Dell Inc. +405d82 NETGEAR +405ee1 Shenzhen H&T Intelligent Control Co.,Ltd. +405fbe RIM +405fc2 Texas Instruments +40605a Hawkeye Tech Co. Ltd +406186 MICRO-STAR INT'L CO.,LTD +40618e Stella-Green Co +406231 GIFA +4062b6 Tele system communication +4062ea China Mobile Group Device Co.,Ltd. +4064a4 THE FURUKAWA ELECTRIC CO., LTD +4065a3 Sagemcom Broadband SAS +40667a mediola - connected living AG +406826 Thales UK Limited +406a8e Hangzhou Puwell OE Tech Ltd. +406aab RIM +406c8f Apple, Inc. +406f2a BlackBerry RTS +407009 ARRIS Group, Inc. +40704a Power Idea Technology Limited +407074 Life Technology (China) Co., Ltd +407183 Juniper Networks +407496 aFUN TECHNOLOGY INC. +4074e0 Intel Corporate +40786a Motorola Mobility LLC, a Lenovo Company +407875 IMBEL - Industria de Material Belico do Brasil +407a80 Nokia Corporation +407b1b Mettle Networks Inc. +407c7d Nokia +407d0f HUAWEI TECHNOLOGIES CO.,LTD +407fe0 Glory Star Technics (ShenZhen) Limited +408256 Continental Automotive GmbH +40831d Apple, Inc. +4083de Zebra Technologies Inc +408493 Clavister AB +40862e JDM MOBILE INTERNET SOLUTION CO., LTD. +408805 Motorola Mobility LLC, a Lenovo Company +4088e0 Beijing Ereneben Information Technology Limited Shenzhen Branch +408a9a TITENG CO., Ltd. +408b07 Actiontec Electronics, Inc +408bf6 Shenzhen TCL New Technology Co., Ltd +408d5c GIGA-BYTE TECHNOLOGY CO.,LTD. +409558 Aisino Corporation +4095bd NTmore.Co.,Ltd +4097d1 BK Electronics cc +40984c Casacom Solutions AG +40984e Texas Instruments +40987b Aisino Corporation +4098ad Apple, Inc. +409922 AzureWave Technology Inc. +409b0d Shenzhen Yourf Kwan Industrial Co., Ltd +409bcd D-Link International +409c28 Apple, Inc. +409f38 AzureWave Technology Inc. +409f87 Jide Technology (Hong Kong) Limited +409fc7 BAEKCHUN I&C Co., Ltd. +40a108 Motorola (Wuhan) Mobility Technologies Communication Co., Ltd. +40a3cc Intel Corporate +40a5ef Shenzhen Four Seas Global Link Network Technology Co., Ltd. +40a677 Juniper Networks +40a6a4 PassivSystems Ltd +40a6d9 Apple, Inc. +40a6e8 Cisco Systems, Inc +40a8f0 Hewlett Packard +40a93f Pivotal Commware, Inc. +40ac8d Data Management, Inc. +40b034 Hewlett Packard +40b076 ASUSTek COMPUTER INC. +40b0fa LG Electronics (Mobile Communications) +40b2c8 Nortel Networks +40b30e Integrated Device Technology (Malaysia) Sdn. Bhd. +40b395 Apple, Inc. +40b3cd Chiyoda Electronics Co.,Ltd. +40b3fc Logital Co. Limited +40b4cd Amazon Technologies Inc. +40b4f0 Juniper Networks +40b688 LEGIC Identsystems AG +40b6b1 SUNGSAM CO,.Ltd +40b7f3 ARRIS Group, Inc. +40b837 Sony Mobile Communications Inc +40b89a Hon Hai Precision Ind. Co.,Ltd. +40b93c Hewlett Packard Enterprise +40ba61 ARIMA Communications Corp. +40bc60 Apple, Inc. +40bc73 Cronoplast S.L. +40bc8b itelio GmbH +40bd32 Texas Instruments +40bd9e Physio-Control, Inc +40bf17 Digistar Telecom. SA +40c245 Shenzhen Hexicom Technology Co., Ltd. +40c3c6 SnapRoute +40c4d6 ChongQing Camyu Technology Development Co.,Ltd. +40c62a Shanghai Jing Ren Electronic Technology Co., Ltd. +40c729 Sagemcom Broadband SAS +40c7c9 Naviit Inc. +40c81f Shenzhen Xinguodu Technology Co., Ltd. +40c8cb AM Telecom co., Ltd. +40cba8 HUAWEI TECHNOLOGIES CO.,LTD +40cbc0 Apple, Inc. +40cd3a Z3 Technology +40cd7a Qingdao Hisense Communications Co.,Ltd. +40ce24 Cisco Systems, Inc +40d28a Nintendo Co., Ltd. +40d32d Apple, Inc. +40d357 Ison Technology Co., Ltd. +40d3ae Samsung Electronics Co.,Ltd +40d40e Biodata Ltd +40d559 MICRO S.E.R.I. +40d63c Equitech Industrial(DongGuan)Co.,Ltd +40d855 IEEE Registration Authority +40dc9d HAJEN +40df02 LINE BIZ Plus +40e230 AzureWave Technology Inc. +40e3d6 Aruba, a Hewlett Packard Enterprise Company +40e730 DEY Storage Systems, Inc. +40e793 Shenzhen Siviton Technology Co.,Ltd +40eace FOUNDER BROADBAND NETWORK SERVICE CO.,LTD +40ecf8 Siemens AG +40ed98 IEEE Registration Authority +40eedd HUAWEI TECHNOLOGIES CO.,LTD +40ef4c Fihonest communication co.,Ltd +40f02f Liteon Technology Corporation +40f04e Integrated Device Technology (Malaysia) Sdn. Bhd. +40f14c ISE Europe SPRL +40f201 Sagemcom Broadband SAS +40f21c DASAN Zhone Solutions +40f2e9 IBM +40f308 Murata Manufacturing Co., Ltd. +40f385 IEEE Registration Authority +40f407 Nintendo Co., Ltd. +40f413 Rubezh +40f420 SICHUAN TIANYI COMHEART TELECOMCO.,LTD +40f4ec Cisco Systems, Inc +40f52e Leica Microsystems (Schweiz) AG +40f9d5 Tecore Networks +40fa7f Preh Car Connect GmbH +40fc89 ARRIS Group, Inc. +40fe0d MAXIO +440010 Apple, Inc. +440049 Amazon Technologies Inc. +44004d HUAWEI TECHNOLOGIES CO.,LTD +44032c Intel Corporate +440377 IEEE Registration Authority +4403a7 Cisco Systems, Inc +440444 GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD +44070b Google, Inc. +4409b8 Salcomp (Shenzhen) CO., LTD. +440cfd NetMan Co., Ltd. +441102 EDMI Europe Ltd +4411c2 Telegartner Karl Gartner GmbH +441319 WKK TECHNOLOGY LTD. +4413d0 zte corporation +441441 AudioControl Inc. +441847 HUNAN SCROWN ELECTRONIC INFORMATION TECH.CO.,LTD +44184f Fitview +4418fd Apple, Inc. +4419b6 Hangzhou Hikvision Digital Technology Co.,Ltd. +441afa New H3C Technologies Co., Ltd +441c12 Technicolor CH USA Inc. +441ca8 Hon Hai Precision Ind. Co.,Ltd. +441e91 ARVIDA Intelligent Electronics Technology Co.,Ltd. +441e98 Ruckus Wireless +441ea1 Hewlett Packard +442295 China Mobile Iot Limited company +4422f1 S.FAC, INC +44237c Beijing Xiaomi Mobile Software Co., Ltd +4423aa Farmage Co., Ltd. +4425bb Bamboo Entertainment Corporation +4428a3 Jiangsu fulian Communication Technology Co., Ltd. +442938 NietZsche enterprise Co.Ltd. +442a60 Apple, Inc. +442aff E3 Technology, Inc. +442b03 Cisco Systems, Inc +442c05 AMPAK Technology, Inc. +443192 Hewlett Packard +44322a Avaya Inc +4432c8 Technicolor CH USA Inc. +44334c Shenzhen Bilian electronic CO.,LTD +44348f MXT INDUSTRIAL LTDA +4434a7 ARRIS Group, Inc. +44356f Neterix +443708 MRV Comunications +443719 2 Save Energy Ltd +44376f Young Electric Sign Co +4437e6 Hon Hai Precision Ind. Co.,Ltd. +443839 Cumulus Networks, inc +4439c4 Universal Global Scientific Industrial Co., Ltd. +443c88 FICOSA MAROC INTERNATIONAL +443c9c Pintsch Tiefenbach GmbH +443d21 Nuvolt +443e07 Electrolux +443eb2 DEOTRON Co., LTD. +44422f TESTOP CO.,LTD. +444450 OttoQ +4447cc Hangzhou Hikvision Digital Technology Co.,Ltd. +444891 HDMI Licensing, LLC +4448c1 Hewlett Packard Enterprise +444a65 Silverflare Ltd. +444ab0 Zhejiang Moorgen Intelligence Technology Co., Ltd +444b5d GE Healthcare +444b7e Fiberhome Telecommunication Technologies Co.,LTD +444c0c Apple, Inc. +444ca8 Arista Networks +444e1a Samsung Electronics Co.,Ltd +444e6d AVM Audiovisuelles Marketing und Computersysteme GmbH +444f5e Pan Studios Co.,Ltd. +4451db Raytheon BBN Technologies +4454c0 Thompson Aerospace +4455b1 HUAWEI TECHNOLOGIES CO.,LTD +4455c4 Huawei Device Co., Ltd. +44568d PNC Technologies Co., Ltd. +4456b7 Spawn Labs, Inc +445829 Cisco SPVTG +44599f Criticare Systems, Inc +4459e3 HUAWEI TECHNOLOGIES CO.,LTD +445d5e SHENZHEN Coolkit Technology CO.,LTD +445ecd Razer Inc +445ef3 Tonalite Holding B.V. +445f7a Shihlin Electric & Engineering Corp. +445f8c Intercel Group Limited +446132 ecobee inc +44619c FONsystem co. ltd. +446246 Comat AG +44650d Amazon Technologies Inc. +44656a Mega Video Electronic(HK) Industry Co., Ltd +44657f Calix Inc. +44666e IP-LINE +4466fc GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD +446747 HUAWEI TECHNOLOGIES CO.,LTD +446755 Orbit Irrigation +4468ab JUIN COMPANY, LIMITED +446a2e HUAWEI TECHNOLOGIES CO.,LTD +446ab7 ARRIS Group, Inc. +446c24 Reallin Electronic Co.,Ltd +446d57 Liteon Technology Corporation +446d6c Samsung Electronics Co.,Ltd +446ee5 HUAWEI TECHNOLOGIES CO.,LTD +44700b IFFU +447098 MING HONG TECHNOLOGY (SHEN ZHEN) LIMITED +4473d6 Logitech +44746c Sony Mobile Communications Inc +44783e Samsung Electronics Co.,Ltd +447bbb Shenzhen YOUHUA Technology Co., Ltd +447bc4 DualShine Technology(SZ)Co.,Ltd +447c7f Innolight Technology Corporation +447da5 VTION INFORMATION TECHNOLOGY (FUJIAN) CO.,LTD +447e76 Trek Technology (S) Pte Ltd +447e95 Alpha and Omega, Inc +447f77 Connected Home +4480eb Motorola Mobility LLC, a Lenovo Company +4482e5 HUAWEI TECHNOLOGIES CO.,LTD +448312 Star-Net +448500 Intel Corporate +4486c1 Siemens Low Voltage & Products +448723 HOYA SERVICE CORPORATION +4487fc Elitegroup Computer Systems Co.,Ltd. +4488cb Camco Technologies NV +448a5b Micro-Star INT'L CO., LTD. +448c52 KTIS CO., Ltd +448e12 DT Research, Inc. +448e81 VIG +448f17 Samsung Electronics Co., Ltd. ARTIK +449160 Murata Manufacturing Co., Ltd. +4491db Shanghai Huaqin Telecom Technology Co.,Ltd +4494fc NETGEAR +4495fa Qingdao Santong Digital Technology Co.Ltd +44962b Aidon Oy +44975a SHENZHEN FAST TECHNOLOGIES CO.,LTD +449b78 The Now Factory +449cb5 Alcomp, Inc +449ef9 vivo Mobile Communication Co., Ltd. +449f7f DataCore Software Corporation +44a191 HUAWEI TECHNOLOGIES CO.,LTD +44a42d TCT mobile ltd +44a466 GROUPE LDLC +44a61e INGRAM MICRO SERVICES +44a689 PROMAX ELECTRONICA SA +44a6e5 THINKING TECHNOLOGY CO.,LTD +44a7cf Murata Manufacturing Co., Ltd. +44a842 Dell Inc. +44a8c2 SEWOO TECH CO., LTD +44aa27 udworks Co., Ltd. +44aa50 Juniper Networks +44aae8 Nanotec Electronic GmbH & Co. KG +44aaf5 ARRIS Group, Inc. +44ad19 XINGFEI (H.K)LIMITED +44add9 Cisco Systems, Inc +44aeab GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD +44b295 Sichuan AI-Link Technology Co., Ltd. +44b32d TP-LINK TECHNOLOGIES CO.,LTD. +44b382 Kuang-chi Institute of Advanced Technology +44b412 SIUS AG +44b433 tide.co.,ltd +44b462 Flextronics Tech.(Ind) Pvt Ltd +44b994 Douglas Lighting Controls +44ba46 SICHUAN TIANYI COMHEART TELECOMCO.,LTD +44bfe3 Shenzhen Longtech Electronics Co.,Ltd +44c15c Texas Instruments +44c233 Guangzhou Comet Technology Development Co.Ltd +44c306 SIFROM Inc. +44c346 HUAWEI TECHNOLOGIES CO.,LTD +44c39b OOO RUBEZH NPO +44c4a9 Opticom Communication, LLC +44c56f NGN Easy Satfinder (Tianjin) Electronic Co., Ltd +44c69b Wuhan Feng Tian Information Network CO.,LTD +44c874 China Mobile Group Device Co.,Ltd. +44c9a2 Greenwald Industries +44cb8b LG Innotek +44cd0e FLEXTRONICS MANUFACTURING(ZHUHAI)CO.,LTD. +44ce7d SFR +44d15e Shanghai Kingto Information Technology Ltd +44d1fa Shenzhen Yunlink Technology Co., Ltd +44d244 Seiko Epson Corporation +44d2ca Anvia TV Oy +44d3ad Shenzhen TINNO Mobile Technology Corp. +44d3ca Cisco Systems, Inc +44d437 Inteno Broadband Technology AB +44d4e0 Sony Mobile Communications Inc +44d5a5 AddOn Computer +44d5f2 IEEE Registration Authority +44d63d Talari Networks +44d6e1 Snuza International Pty. Ltd. +44d791 HUAWEI TECHNOLOGIES CO.,LTD +44d832 AzureWave Technology Inc. +44d878 Hui Zhou Gaoshengda Technology Co.,LTD +44d884 Apple, Inc. +44d9e7 Ubiquiti Networks Inc. +44dc91 PLANEX COMMUNICATIONS INC. +44dccb SEMINDIA SYSTEMS PVT LTD +44e08e Cisco SPVTG +44e137 ARRIS Group, Inc. +44e49a OMNITRONICS PTY LTD +44e4d9 Cisco Systems, Inc +44e4ee Wistron Neweb Corporation +44e66e Apple, Inc. +44e8a5 Myreka Technologies Sdn. Bhd. +44e9dd Sagemcom Broadband SAS +44ea4b Actlas Inc. +44ead8 Texas Instruments +44ecce Juniper Networks +44ed57 Longicorn, inc. +44ee02 MTI Ltd. +44ee30 Budelmann Elektronik GmbH +44efbf China Dragon Technology Limited +44efcf UGENE SOLUTION inc. +44f034 Kaonmedia CO., LTD. +44f436 zte corporation +44f459 Samsung Electronics Co.,Ltd +44f477 Juniper Networks +44f849 Union Pacific Railroad +44f971 SHENZHEN MERCURY COMMUNICATION TECHNOLOGIES CO.,LTD. +44fb42 Apple, Inc. +44fb5a zte corporation +44fda3 Everysight LTD. +44fe3b Arcadyan Corporation +44ffba zte corporation +480031 HUAWEI TECHNOLOGIES CO.,LTD +480033 Technicolor CH USA Inc. +4801c5 OnePlus Technology (Shenzhen) Co., Ltd +48022a B-Link Electronic Limited +480362 DESAY ELECTRONICS(HUIZHOU)CO.,LTD +48049f ELECOM CO., LTD +48066a Tempered Networks, Inc. +480bb2 IEEE Registration Authority +480c49 NAKAYO Inc +480eec TP-LINK TECHNOLOGIES CO.,LTD. +480fcf Hewlett Packard +481063 NTT Innovation Institute, Inc. +481249 Luxcom Technologies Inc. +48137e Samsung Electronics Co.,Ltd +4813f3 BBK EDUCATIONAL ELECTRONICS CORP.,LTD. +48174c MicroPower technologies +481842 Shanghai Winaas Co. Equipment Co. Ltd. +4818fa Nocsys +481a84 Pointer Telocation Ltd +481bd2 Intron Scientific co., ltd. +481d70 Cisco SPVTG +48216c China Mobile IOT Company Limited +4826e8 Tek-Air Systems, Inc. +482759 Levven Electronics Ltd. +4827ea Samsung Electronics Co.,Ltd +48282f zte corporation +482ae3 Wistron InfoComm(Kunshan)Co.,Ltd. +482ca0 Xiaomi Communications Co Ltd +482cea Motorola Inc Business Light Radios +4833dd ZENNIO AVANCE Y TECNOLOGIA, S.L. +48343d IEP GmbH +48352e Shenzhen Wolck Network Product Co.,LTD +48365f Wintecronics Ltd. +483974 Proware Technologies Co., Ltd. +483b38 Apple, Inc. +483c0c HUAWEI TECHNOLOGIES CO.,LTD +483d32 Syscor Controls & Automation +483fe9 HUAWEI TECHNOLOGIES CO.,LTD +48435a HUAWEI TECHNOLOGIES CO.,LTD +48437c Apple, Inc. +484487 Cisco SPVTG +4844f7 Samsung Electronics Co.,Ltd +484520 Intel Corporate +4846c1 FN-LINK TECHNOLOGY LIMITED +4846f1 Uros Oy +4846fb HUAWEI TECHNOLOGIES CO.,LTD +4849c7 Samsung Electronics Co.,Ltd +484a30 George Robotics Limited +484ae9 Hewlett Packard Enterprise +484baa Apple, Inc. +484d7e Dell Inc. +485073 Microsoft Corporation +485169 Samsung Electronics Co.,Ltd +4851b7 Intel Corporate +485261 SOREEL +485415 NET RULES TECNOLOGIA EIRELI +48555c Wu Qi Technologies,Inc. +48555f Fiberhome Telecommunication Technologies Co.,LTD +485702 HUAWEI TECHNOLOGIES CO.,LTD +4857dd Facebook Inc +485929 LG Electronics (Mobile Communications) +4859a4 zte corporation +485a3f WISOL +485ab6 Hon Hai Precision Ind. Co.,Ltd. +485b39 ASUSTek COMPUTER INC. +485d36 Verizon +485d60 AzureWave Technology Inc. +485deb Just Add Power +485f99 Cloud Network Technology (Samoa) Limited +48605f LG Electronics (Mobile Communications) +4860bc Apple, Inc. +4861a3 Concern Axion JSC +486276 HUAWEI TECHNOLOGIES CO.,LTD +4865ee IEEE Registration Authority +486834 Silicon Motion, Inc. +486b2c BBK EDUCATIONAL ELECTRONICS CORP.,LTD. +486b91 Fleetwood Group Inc. +486dbb Vestel Elektronik San ve Tic. A.Ş. +486e73 Pica8, Inc. +486efb Davit System Technology Co., Ltd. +486fd2 StorSimple Inc +487119 SGB GROUP LTD. +48746e Apple, Inc. +487583 Intellion AG +487604 Private +487746 Calix Inc. +48794d Samsung Electronics Co.,Ltd +487a55 ALE International +487ada Hangzhou H3C Technologies Co., Limited +487b6b HUAWEI TECHNOLOGIES CO.,LTD +487d2e TP-LINK TECHNOLOGIES CO.,LTD. +488244 Life Fitness / Div. of Brunswick +4882f2 Appel Elektronik GmbH +4883b4 GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD +4883c7 Sagemcom Broadband SAS +4886e8 Microsoft Corporation +48872d SHEN ZHEN DA XIA LONG QUE TECHNOLOGY CO.,LTD +488764 vivo Mobile Communication Co., Ltd. +488803 ManTechnology Inc. +48881e EthoSwitch LLC +4888ca Motorola (Wuhan) Mobility Technologies Communication Co., Ltd. +4889e7 Intel Corporate +488ad2 MERCURY COMMUNICATION TECHNOLOGIES CO.,LTD. +488d36 Arcadyan Corporation +488e42 DIGALOG GmbH +488eef HUAWEI TECHNOLOGIES CO.,LTD +489153 Weinmann Geräte für Medizin GmbH + Co. KG +4891f6 Shenzhen Reach software technology CO.,LTD +489507 GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD +4898ca Sichuan AI-Link Technology Co., Ltd. +489a42 Technomate Ltd +489bd5 Extreme Networks, Inc. +489be2 SCI Innovations Ltd +489d18 Flashbay Limited +489d24 BlackBerry RTS +489dd1 Samsung Electronics Co.,Ltd +48a0f8 Fiberhome Telecommunication Technologies Co.,LTD +48a195 Apple, Inc. +48a22d Shenzhen Huaxuchang Telecom Technology Co.,Ltd +48a2b7 Kodofon JSC +48a380 Gionee Communication Equipment Co.,Ltd. +48a472 Intel Corporate +48a493 TAIYO YUDEN CO.,LTD +48a6b8 Sonos, Inc. +48a6d2 GJsun Optical Science and Tech Co.,Ltd. +48a73c Sichuan tianyi kanghe communications co., LTD +48a74e zte corporation +48a91c Apple, Inc. +48a9d2 Wistron Neweb Corporation +48aa5d Store Electronic Systems +48ad08 HUAWEI TECHNOLOGIES CO.,LTD +48b253 Marketaxess Corporation +48b5a7 Glory Horse Industries Ltd. +48b620 ROLI Ltd. +48b8de HOMEWINS TECHNOLOGY CO.,LTD. +48b977 PulseOn Oy +48b9c2 Teletics Inc. +48ba4e Hewlett Packard +48bca6 ​ASUNG TECHNO CO.,Ltd +48bd0e Quanta Storage Inc. +48bd3d New H3C Technologies Co., Ltd +48be2d Symanitron +48bf6b Apple, Inc. +48bf74 Baicells Technologies Co.,LTD +48c049 Broad Telecom SA +48c093 Xirrus, Inc. +48c1ac PLANTRONICS, INC. +48c3b0 Pharos Co.Ltd +48c58d Lear Corporation GmbH +48c663 GTO Access Systems LLC +48c796 Samsung Electronics Co.,Ltd +48c862 Simo Wireless,Inc. +48c8b6 SysTec GmbH +48cb6e Cello Electronics (UK) Ltd +48d0cf Universal Electronics, Inc. +48d18e Metis Communication Co.,Ltd +48d224 Liteon Technology Corporation +48d343 ARRIS Group, Inc. +48d35d Private +48d539 HUAWEI TECHNOLOGIES CO.,LTD +48d54c Jeda Networks +48d6d5 Google, Inc. +48d705 Apple, Inc. +48d7ff BLANKOM Antennentechnik GmbH +48d845 Shenzhen Mainuoke Electronics Co., Ltd +48d855 Telvent +48d875 China TransInfo Technology Co., Ltd +48d8fe ClarIDy Solutions, Inc. +48da96 Eddy Smart Home Solutions Inc. +48db50 HUAWEI TECHNOLOGIES CO.,LTD +48dcfb Nokia Corporation +48dd9d ITEL MOBILE LIMITED +48df1c Wuhan NEC Fibre Optic Communications industry Co. Ltd +48df37 Hewlett Packard Enterprise +48e1af Vity +48e1e9 Chengdu Meross Technology Co., Ltd. +48e244 Hon Hai Precision Ind. Co.,Ltd. +48e3c3 JENOPTIK Advanced Systems GmbH +48e695 Insigma Inc +48e6c0 SIMCom Wireless Solutions Co.,Ltd. +48e9f1 Apple, Inc. +48ea63 Zhejiang Uniview Technologies Co., Ltd. +48eb30 ETERNA TECHNOLOGY, INC. +48ec5b Nokia +48ed80 daesung eltec +48ee07 Silver Palm Technologies LLC +48ee0c D-Link International +48ee86 UTStarcom (China) Co.,Ltd +48f027 Chengdu newifi Co.,Ltd +48f07b ALPS ELECTRIC CO., LTD. +48f17f Intel Corporate +48f230 Ubizcore Co.,LTD +48f317 Private +48f47d TechVision Holding Internation Limited +48f7c0 Technicolor CH USA Inc. +48f7f1 Nokia +48f8b3 Cisco-Linksys, LLC +48f8db HUAWEI TECHNOLOGIES CO.,LTD +48f8e1 Nokia +48f925 Maestronic +48f97c Fiberhome Telecommunication Technologies Co.,LTD +48fcb6 LAVA INTERNATIONAL(H.K) LIMITED +48fcb8 Woodstream Corporation +48fd8e HUAWEI TECHNOLOGIES CO.,LTD +48fda3 Xiaomi Communications Co Ltd +48feea HOMA B.V. +4c0082 Cisco Systems, Inc +4c0143 eero inc. +4c022e CMR KOREA CO., LTD +4c0289 LEX COMPUTECH CO., LTD +4c068a Basler Electric Company +4c07c9 COMPUTER OFFICE Co.,Ltd. +4c09b4 zte corporation +4c09d4 Arcadyan Technology Corporation +4c0b3a TCT mobile ltd +4c0bbe Microsoft +4c0dee JABIL CIRCUIT (SHANGHAI) LTD. +4c0f6e Hon Hai Precision Ind. Co.,Ltd. +4c0fc7 Earda Technologies co Ltd +4c1159 Vision Information & Communications +4c11ae Espressif Inc. +4c11bf Zhejiang Dahua Technology Co., Ltd. +4c1265 ARRIS Group, Inc. +4c1365 Emplus Technologies +4c1480 NOREGON SYSTEMS, INC +4c14a3 TCL Technoly Electronics (Huizhou) Co., Ltd. +4c1694 shenzhen sibituo Technology Co., Ltd +4c16f1 zte corporation +4c16fc Juniper Networks +4c1744 Amazon Technologies Inc. +4c17eb Sagemcom Broadband SAS +4c189a GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD +4c1a3a PRIMA Research And Production Enterprise Ltd. +4c1a3d GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD +4c1a95 Novakon Co., Ltd. +4c1b86 Arcadyan Corporation +4c1d96 Intel Corporate +4c1fcc HUAWEI TECHNOLOGIES CO.,LTD +4c218c Panasonic India Private limited +4c21d0 Sony Mobile Communications Inc +4c2258 cozybit, Inc. +4c2498 Texas Instruments +4c2578 Nokia Corporation +4c26e7 Welgate Co., Ltd. +4c2c80 Beijing Skyway Technologies Co.,Ltd +4c2c83 Zhejiang KaNong Network Technology Co.,Ltd. +4c2f9d ICM Controls +4c3089 Thales Transportation Systems GmbH +4c322d TELEDATA NETWORKS +4c3275 Apple, Inc. +4c32d9 M Rutty Holdings Pty. Ltd. +4c334e HIGHTECH +4c3488 Intel Corporate +4c364e Panasonic Corporation Connected Solutions Company +4c38d5 MITAC COMPUTING TECHNOLOGY CORPORATION +4c38d8 ARRIS Group, Inc. +4c3909 HPL Electric & Power Private Limited +4c3910 Newtek Electronics co., Ltd. +4c3b74 VOGTEC(H.K.) Co., Ltd +4c3c16 Samsung Electronics Co.,Ltd +4c3fd3 Texas Instruments +4c48da Beijing Autelan Technology Co.,Ltd +4c49e3 Xiaomi Communications Co Ltd +4c4b68 Mobile Device, Inc. +4c4bf9 IEEE Registration Authority +4c4d66 Nanjing Jiahao Technology Co., Ltd. +4c4e03 TCT mobile ltd +4c4e35 Cisco Systems, Inc +4c5262 Fujitsu Technology Solutions GmbH +4c5427 Linepro Sp. z o.o. +4c5499 HUAWEI TECHNOLOGIES CO.,LTD +4c5585 Hamilton Systems +4c55b8 Turkcell Teknoloji +4c55cc Zentri Pty Ltd +4c569d Apple, Inc. +4c56df Targus US LLC +4c57ca Apple, Inc. +4c5dcd Oy Finnish Electric Vehicle Technologies Ltd +4c5e0c Routerboard.com +4c5fd2 Alcatel-Lucent +4c60d5 airPointe of New Hampshire +4c60de NETGEAR +4c6255 SANMINA-SCI SYSTEM DE MEXICO S.A. DE C.V. +4c63eb Application Solutions (Electronics and Vision) Ltd +4c64d9 Guangdong Leawin Group Co., Ltd +4c65a8 IEEE Registration Authority +4c6641 SAMSUNG ELECTRO-MECHANICS(THAILAND) +4c6af6 HMD Global Oy +4c6be8 Apple, Inc. +4c6e6e Comnect Technology CO.,LTD +4c6f9c GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD +4c710c Cisco Systems, Inc +4c710d Cisco Systems, Inc +4c72b9 PEGATRON CORPORATION +4c7367 Genius Bytes Software Solutions GmbH +4c73a5 KOVE +4c7403 BQ +4c7487 Leader Phone Communication Technology Co., Ltd. +4c74bf Apple, Inc. +4c7625 Dell Inc. +4c774f Embedded Wireless Labs +4c776d Cisco Systems, Inc +4c7872 Cav. Uff. Giacomo Cimberio S.p.A. +4c7897 Arrowhead Alarm Products Ltd +4c79ba Intel Corporate +4c7a48 Nippon Seiki (Europe) B.V. +4c7c5f Apple, Inc. +4c7f62 Nokia Corporation +4c804f Armstrong Monitoring Corp +4c8093 Intel Corporate +4c80ba Wuhan Tianyu Information Industry Co., Ltd. +4c8120 Taicang T&W Electronics +4c82cf Dish Technologies Corp +4c83de Cisco SPVTG +4c875d Bose Corporation +4c8b30 Actiontec Electronics, Inc +4c8b55 Grupo Digicon +4c8bef HUAWEI TECHNOLOGIES CO.,LTD +4c8d79 Apple, Inc. +4c8ecc SILKAN SA +4c8fa5 Jastec +4c90db JL Audio +4c910c Lanix Internacional, S.A. de C.V. +4c9157 Fujian LANDI Commercial Equipment Co.,Ltd +4c917a IEEE Registration Authority +4c9614 Juniper Networks +4c962d Fresh AB +4c98ef Zeo +4c9e80 KYOKKO ELECTRIC Co., Ltd. +4c9ee4 Hanyang Navicom Co.,Ltd. +4c9eff Zyxel Communications Corporation +4ca003 T-21 Technologies LLC +4ca161 Rain Bird Corporation +4ca515 Baikal Electronics JSC +4ca56d Samsung Electronics Co.,Ltd +4ca74b Alcatel Lucent +4ca928 Insensi +4caa16 AzureWave Technologies (Shanghai) Inc. +4cab33 KST technology +4cabfc zte corporation +4cac0a zte corporation +4cada8 PANOPTICS CORP. +4cae1c SaiNXT Technologies LLP +4cae31 ShengHai Electronics (Shenzhen) Ltd +4caea3 Hewlett Packard Enterprise +4cb008 Shenzhen Gwelltimes Technology Co.,Ltd +4cb0e8 Beijing RongZhi xinghua technology co., LTD +4cb16c HUAWEI TECHNOLOGIES CO.,LTD +4cb199 Apple, Inc. +4cb1cd Ruckus Wireless +4cb21c Maxphotonics Co.,Ltd +4cb44a NANOWAVE Technologies Inc. +4cb4ea HRD (S) PTE., LTD. +4cb76d Novi Security +4cb81c SAM Electronics GmbH +4cb82c Cambridge Mobile Telematics, Inc. +4cb8b5 Shenzhen YOUHUA Technology Co., Ltd +4cb9c8 CONET CO., LTD. +4cbaa3 Bison Electronics Inc. +4cbb58 Chicony Electronics Co., Ltd. +4cbc42 Shenzhen Hangsheng Electronics Co.,Ltd. +4cbc48 Cisco Systems, Inc +4cbc98 IEEE Registration Authority +4cbca5 Samsung Electronics Co.,Ltd +4cbcb4 ABB SpA - DIN Rail +4cbd8f Hangzhou Hikvision Digital Technology Co.,Ltd. +4cc00a vivo Mobile Communication Co., Ltd. +4cc206 Somfy +4cc452 Shang Hai Tyd. Electon Technology Ltd. +4cc602 Radios, Inc. +4cc681 Shenzhen Aisat Electronic Co., Ltd. +4cc7d6 FLEXTRONICS MANUFACTURING(ZHUHAI)CO.,LTD. +4cc8a1 Cisco Meraki +4cc94f Nokia +4cca53 Skyera, Inc. +4ccbf5 zte corporation +4ccc34 Motorola Solutions Inc. +4ccc6a Micro-Star INTL CO., LTD. +4cd08a HUMAX Co., Ltd. +4cd0cb HUAWEI TECHNOLOGIES CO.,LTD +4cd1a1 HUAWEI TECHNOLOGIES CO.,LTD +4cd637 Qsono Electronics Co., Ltd +4cd7b6 Helmer Scientific +4cd98f Dell Inc. +4cd9c4 Magneti Marelli Automotive Electronics (Guangzhou) Co. Ltd +4cdc0d Coral Telecom Limited +4cdd31 Samsung Electronics Co.,Ltd +4cdd7d LHP Telematics LLC +4cdf3d TEAM ENGINEERS ADVANCE TECHNOLOGIES INDIA PVT LTD +4ce173 IEEE Registration Authority +4ce19e TECNO MOBILE LIMITED +4ce1bb Zhuhai HiFocus Technology Co., Ltd. +4ce2f1 sclak srl +4ce5ae Tianjin Beebox Intelligent Technology Co.,Ltd. +4ce676 BUFFALO.INC +4ce933 RailComm, LLC +4ce9e4 New H3C Technologies Co., Ltd +4ceb42 Intel Corporate +4cebbd CHONGQING FUGUI ELECTRONICS CO.,LTD. +4cecef Soraa, Inc. +4cedde ASKEY COMPUTER CORP +4cedfb ASUSTek COMPUTER INC. +4ceeb0 SHC Netzwerktechnik GmbH +4cefc0 Amazon Technologies Inc. +4cf02e Vifa Denmark A/S +4cf19e Groupe Atlantic +4cf2bf Cambridge Industries(Group) Co.,Ltd. +4cf45b Blue Clover Devices +4cf5a0 Scalable Network Technologies Inc +4cf737 SamJi Electronics Co., Ltd +4cf95d HUAWEI TECHNOLOGIES CO.,LTD +4cfaca Cambridge Industries(Group) Co.,Ltd. +4cfb45 HUAWEI TECHNOLOGIES CO.,LTD +4cfbfe Sercomm Japan Corporation +4cff12 Fuze Entertainment Co., ltd +500084 Siemens Canada +50008c Hong Kong Telecommunications (HKT) Limited +50016b HUAWEI TECHNOLOGIES CO.,LTD +5001bb Samsung Electronics Co.,Ltd +5001d9 HUAWEI TECHNOLOGIES CO.,LTD +500291 Espressif Inc. +5004b8 HUAWEI TECHNOLOGIES CO.,LTD +50053d CyWee Group Ltd +500604 Cisco Systems, Inc +5006ab Cisco Systems, Inc +500959 Technicolor CH USA Inc. +500b32 Foxda Technology Industrial(ShenZhen)Co.,LTD +500b91 IEEE Registration Authority +500e6d TrafficCast International +500f80 Cisco Systems, Inc +500ff5 Tenda Technology Co.,Ltd.Dongguan branch +5011eb SilverNet Ltd +501395 Sichuan AI-Link Technology Co., Ltd. +501479 iRobot Corporation +5014b5 Richfit Information Technology Co., Ltd +5017ff Cisco Systems, Inc +50184c Platina Systems Inc. +501aa5 GN Netcom A/S +501ac5 Microsoft +501b32 Taicang T&W Electronics +501cb0 Cisco Systems, Inc +501cbf Cisco Systems, Inc +501d93 HUAWEI TECHNOLOGIES CO.,LTD +501e2d StreamUnlimited Engineering GmbH +50206b Emerson Climate Technologies Transportation Solutions +502267 PixeLINK +50252b Nethra Imaging Incorporated +502690 FUJITSU LIMITED +5027c7 TECHNART Co.,Ltd +50294d NANJING IOT SENSOR TECHNOLOGY CO,LTD +5029f5 GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD +502a7e Smart electronic GmbH +502a8b Telekom Research and Development Sdn Bhd +502b73 Tenda Technology Co.,Ltd.Dongguan branch +502b98 Es-tech International +502d1d Nokia Corporation +502da2 Intel Corporate +502df4 Phytec Messtechnik GmbH +502e5c HTC Corporation +502ece Asahi Electronics Co.,Ltd +502fa8 Cisco Systems, Inc +5031ad ABB Global Industries and Services Private Limited +503237 Apple, Inc. +503275 Samsung Electronics Co.,Ltd +50338b Texas Instruments +5033f0 YICHEN (SHENZHEN) TECHNOLOGY CO.LTD +503955 Cisco SPVTG +503a7d AlphaTech PLC Int’l Co., Ltd. +503aa0 SHENZHEN MERCURY COMMUNICATION TECHNOLOGIES CO.,LTD. +503cc4 Lenovo Mobile Communication Technology Ltd. +503cea GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD +503da1 Samsung Electronics Co.,Ltd +503de5 Cisco Systems, Inc +503e7c LeiShen Intelligent System Co.Ltd +503eaa TP-LINK TECHNOLOGIES CO.,LTD. +503f56 Syncmold Enterprise Corp +503f98 CMITECH +504061 Nokia +5041b9 I-O DATA DEVICE,INC. +5045f7 Liuhe Intelligence Technology Ltd. +50465d ASUSTek COMPUTER INC. +5048eb BEIJING HAIHEJINSHENG NETWORK TECHNOLOGY CO. LTD. +504a5e Masimo Corporation +504a6e NETGEAR +504b5b CONTROLtronic GmbH +504c7e THE 41ST INSTITUTE OF CETC +504edc Ping Communication +504f94 Loxone Electronics GmbH +50502a Egardia +505065 TAKT Corporation +5050ce Hangzhou Dianyixia Communication Technology Co. Ltd. +5051a9 Texas Instruments +5052d2 Hangzhou Telin Technologies Co., Limited +505527 LG Electronics (Mobile Communications) +505663 Texas Instruments +5056a8 Jolla Ltd +5056bf Samsung Electronics Co.,Ltd +50579c Seiko Epson Corporation +5057a8 Cisco Systems, Inc +505800 WyTec International, Inc. +50584f waytotec,Inc. +505967 Intent Solutions Inc +505ac6 GUANGDONG SUPER TELECOM CO.,LTD. +505bc2 Liteon Technology Corporation +505dac HUAWEI TECHNOLOGIES CO.,LTD +505fb5 Askey Computer Corp. +506028 Xirrus Inc. +506184 Avaya Inc +5061bf Cisco Systems, Inc +5061d6 Indu-Sol GmbH +506313 Hon Hai Precision Ind. Co.,Ltd. +50642b XIAOMI Electronics,CO.,LTD +506441 Greenlee +506583 Texas Instruments +5065f3 Hewlett Packard +506787 Planet Networks +5067ae Cisco Systems, Inc +5067f0 Zyxel Communications Corporation +50680a HUAWEI TECHNOLOGIES CO.,LTD +506a03 NETGEAR +506b4b Mellanox Technologies, Inc. +506b8d Nutanix +506cbe InnosiliconTechnology Ltd +506e92 Innocent Technology Co., Ltd. +506f77 HUAWEI TECHNOLOGIES CO.,LTD +506f98 Sehaj Synergy Technologies Private Limited +506f9a Wi-Fi Alliance +5070e5 He Shan World Fair Electronics Technology Limited +507224 Texas Instruments +50724d BEG Brueck Electronic GmbH +5075f1 ARRIS Group, Inc. +507691 Tekpea, Inc. +5076a6 Ecil Informatica Ind. Com. Ltda +5076af Intel Corporate +507705 Samsung Electronics Co.,Ltd +5078b3 zte corporation +50795b Interexport Telecomunicaciones S.A. +507a55 Apple, Inc. +507ac5 Apple, Inc. +507b9d LCFC(HeFei) Electronics Technology co., ltd +507d02 BIODIT +507e5d Arcadyan Technology Corporation +50804a Quectel Wireless Solutions Co., Ltd. +5082d5 Apple, Inc. +508569 Samsung Electronics Co.,Ltd +508789 Cisco Systems, Inc +5087b8 Nuvyyo Inc +508965 SHENZHEN MERCURY COMMUNICATION TECHNOLOGIES CO.,LTD. +508a0f SHENZHEN FISE TECHNOLOGY HOLDING CO.,LTD. +508a42 Uptmate Technology Co., LTD +508acb SHENZHEN MAXMADE TECHNOLOGY CO., LTD. +508c77 DIRMEIER Schanktechnik GmbH &Co KG +508cb1 Texas Instruments +508cf5 China Mobile Group Device Co.,Ltd. +508d6f CHAHOO Limited +508f4c Xiaomi Communications Co Ltd +5092b9 Samsung Electronics Co.,Ltd +50934f Gradual Tecnologia Ltda. +509551 ARRIS Group, Inc. +509744 Integrated Device Technology (Malaysia) Sdn. Bhd. +509772 Westinghouse Digital +509871 Inventum Technologies Private Limited +5098b8 New H3C Technologies Co., Ltd +5098f3 Rheem Australia Pty Ltd +509a4c Dell Inc. +509ea7 Samsung Electronics Co.,Ltd +509f27 HUAWEI TECHNOLOGIES CO.,LTD +509f3b OI ELECTRIC CO.,LTD +50a009 Xiaomi Communications Co Ltd +50a054 Actineon +50a0a4 Nokia +50a0bf Alba Fiber Systems Inc. +50a132 Shenzhen MiaoMing Intelligent Technology Co.,Ltd +50a4c8 Samsung Electronics Co.,Ltd +50a4d0 IEEE Registration Authority +50a67f Apple, Inc. +50a6e3 David Clark Company +50a715 Aboundi, Inc. +50a72b HUAWEI TECHNOLOGIES CO.,LTD +50a733 Ruckus Wireless +50a83a S Mobile Devices Limited +50a9de Smartcom - Bulgaria AD +50ab3e Qibixx AG +50abbf Hoseo Telecom +50ad71 Tessolve Semiconductor Private Limited +50ad92 NX Technologies +50add5 Dynalec Corporation +50af4d zte corporation +50af73 Shenzhen Bitland Information Technology Co., Ltd. +50b363 Digitron da Amazonia S/A +50b695 Micropoint Biotechnologies,Inc. +50b7c3 Samsung Electronics Co.,Ltd +50b888 wi2be Tecnologia S/A +50b8a2 ImTech Technologies LLC, +50bc96 Apple, Inc. +50bd5f TP-LINK TECHNOLOGIES CO.,LTD. +50c006 Carmanah Signs +50c271 SECURETECH INC +50c4dd BUFFALO.INC +50c58d Juniper Networks +50c7bf TP-LINK TECHNOLOGIES CO.,LTD. +50c8e5 Samsung Electronics Co.,Ltd +50c971 GN Netcom A/S +50c9a0 SKIPPER AS +50ccf8 SAMSUNG ELECTRO MECHANICS CO., LTD. +50cd22 Avaya Inc +50cd32 NanJing Chaoran Science & Technology Co.,Ltd. +50ce75 Measy Electronics Co., Ltd. +50cee3 Gigafirm.co.LTD +50d213 CviLux Corporation +50d274 Steffes Corporation +50d2f5 Beijing Xiaomi Mobile Software Co., Ltd +50d37f Yu Fly Mikly Way Science and Technology Co., Ltd. +50d4f7 TP-LINK TECHNOLOGIES CO.,LTD. +50d59c Thai Habel Industrial Co., Ltd. +50d6d7 Takahata Precision +50d753 CONELCOM GmbH +50da00 Hangzhou H3C Technologies Co., Limited +50db3f SHENZHEN GONGJIN ELECTRONICS CO.,LT +50dce7 Amazon Technologies Inc. +50dcfc ECOCOM +50dd4f Automation Components, Inc +50de06 Apple, Inc. +50df95 Lytx +50e085 Intel Corporate +50e0c7 TurControlSystme AG +50e0ef Nokia +50e14a Private +50e549 GIGA-BYTE TECHNOLOGY CO.,LTD. +50e666 Shenzhen Techtion Electronics Co., Ltd. +50e971 Jibo, Inc. +50ead6 Apple, Inc. +50eb1a Brocade Communications Systems, Inc. +50eb71 Intel Corporate +50ec50 Beijing Xiaomi Mobile Software Co., Ltd +50ed78 Changzhou Yongse Infotech Co.,Ltd +50ed94 EGATEL SL +50f003 Open Stack, Inc. +50f0d3 Samsung Electronics Co.,Ltd +50f14a Texas Instruments +50f43c Leeo Inc +50f520 Samsung Electronics Co.,Ltd +50f5da Amazon Technologies Inc. +50f61a Kunshan JADE Technologies co., Ltd. +50f722 Cisco Systems, Inc +50f8a5 eWBM Co., Ltd. +50fa84 TP-LINK TECHNOLOGIES CO.,LTD. +50faab L-tek d.o.o. +50fc30 Treehouse Labs +50fc9f Samsung Electronics Co.,Ltd +50fef2 Sify Technologies Ltd +50ff20 Keenetic Limited +50ff99 IEEE Registration Authority +540237 Teltronic AG +540384 Hangkong Nano IC Technologies Co., Ltd +5403f5 EBN Technology Corp. +540496 Gigawave LTD +5404a6 ASUSTek COMPUTER INC. +540536 Vivago Oy +54055f Alcatel Lucent +540593 WOORI ELEC Co.,Ltd +54068b Ningbo Deli Kebei Technology Co.LTD +540955 zte corporation +54098d deister electronic GmbH +541031 SMARTO +5410ec Microchip Technology Inc. +54112f Sulzer Pump Solutions Finland Oy +54115f Atamo Pty Ltd +541310 HUAWEI TECHNOLOGIES CO.,LTD +541379 Hon Hai Precision Ind. Co.,Ltd. +541473 Wingtech Group (HongKong)Limited +5414fd Orbbec 3D Technology International +541589 MCS Logic Inc. +5419c8 vivo Mobile Communication Co., Ltd. +541b5d Techno-Innov +541dfb Freestyle Energy Ltd +541e56 Juniper Networks +541fd5 Advantage Electronics +542018 Tely Labs +542160 Alula +5422f8 zte corporation +5425ea HUAWEI TECHNOLOGIES CO.,LTD +542696 Apple, Inc. +54271e AzureWave Technology Inc. +542758 Motorola (Wuhan) Mobility Technologies Communication Co., Ltd. +54276c Jiangsu Houge Technology Corp. +54278d NXP (China) Management Ltd. +542a1b Sonos, Inc. +542a9c LSY Defense, LLC. +542aa2 Alpha Networks Inc. +542b57 Night Owl SP +542b8d Apple, Inc. +542bde New H3C Technologies Co., Ltd +542cea PROTECTRON +542f89 Euclid Laboratories, Inc. +542f8a TELLESCOM INDUSTRIA E COMERCIO EM TELECOMUNICACAO +543131 Raster Vision Ltd +5433cb Apple, Inc. +5434ef HUAWEI TECHNOLOGIES CO.,LTD +543530 Hon Hai Precision Ind. Co.,Ltd. +5435df Symeo GmbH +54369b 1Verge Internet Technology (Beijing) Co., Ltd. +543968 Edgewater Networks Inc +5439df HUAWEI TECHNOLOGIES CO.,LTD +543b30 duagon AG +543d37 Ruckus Wireless +543e64 Fiberhome Telecommunication Technologies Co.,LTD +5440ad Samsung Electronics Co.,Ltd +544249 Sony Corporation +544408 Nokia Corporation +54466b Shenzhen CZTIC Electronic Technology Co., Ltd +544741 XCHENG HOLDING +5447d3 TSAT AS +544810 Dell Inc. +54489c CDOUBLES ELECTRONICS CO. LTD. +544a00 Cisco Systems, Inc +544a05 wenglor sensoric gmbh +544a16 Texas Instruments +544b8c Juniper Networks +544e45 Private +544e90 Apple, Inc. +54511b HUAWEI TECHNOLOGIES CO.,LTD +545146 AMG Systems Ltd. +5453ed Sony Corporation +545414 Digital RF Corea, Inc +5454cf PROBEDIGITAL CO.,LTD +545aa6 Espressif Inc. +545ebd NL Technologies +545fa9 Teracom Limited +546009 Google, Inc. +546172 ZODIAC AEROSPACE SAS +5461ea Zaplox AB +5462e2 Apple, Inc. +5464d9 Sagemcom Broadband SAS +5465de ARRIS Group, Inc. +54666c Shenzhen YOUHUA Technology Co., Ltd +546751 Compal Broadband Networks, Inc. +546ad8 Elster Water Metering +546c0e Texas Instruments +546d52 TOPVIEW OPTRONICS CORP. +54724f Apple, Inc. +547398 Toyo Electronics Corporation +5474e6 Webtech Wireless +547595 TP-LINK TECHNOLOGIES CO.,LTD. +5475d0 Cisco Systems, Inc +54781a Cisco Systems, Inc +547975 Nokia Corporation +547a52 CTE International srl +547c69 Cisco Systems, Inc +547dcd Texas Instruments +547f54 INGENICO +547fa8 TELCO systems, s.r.o. +547fee Cisco Systems, Inc +548028 Hewlett Packard Enterprise +54812d PAX Computer Technology(Shenzhen) Ltd. +5481ad Eagle Research Corporation +54833a Zyxel Communications Corporation +54847b Digital Devices GmbH +5486bc Cisco Systems, Inc +54880e SAMSUNG ELECTRO-MECHANICS(THAILAND) +548922 Zelfy Inc +548998 HUAWEI TECHNOLOGIES CO.,LTD +548ca0 Liteon Technology Corporation +549209 HUAWEI TECHNOLOGIES CO.,LTD +5492be Samsung Electronics Co.,Ltd +549359 SHENZHEN TWOWING TECHNOLOGIES CO.,LTD. +549478 Silvershore Technology Partners +549963 Apple, Inc. +549a11 IEEE Registration Authority +549a16 Uzushio Electric Co.,Ltd. +549a4c GUANGDONG HOMECARE TECHNOLOGY CO.,LTD. +549b12 Samsung Electronics Co.,Ltd +549b72 Ericsson AB +549c27 Plasma Cloud Limited +549d85 EnerAccess inc +549f13 Apple, Inc. +549f35 Dell Inc. +549fae iBASE Gaming Inc +54a04f t-mac Technologies Ltd +54a050 ASUSTek COMPUTER INC. +54a274 Cisco Systems, Inc +54a31b Shenzhen Linkworld Technology Co,.LTD +54a3fa BQT Solutions (Australia)Pty Ltd +54a493 IEEE Registration Authority +54a51b HUAWEI TECHNOLOGIES CO.,LTD +54a54b NSC Communications Siberia Ltd +54a619 Alcatel-Lucent Shanghai Bell Co., Ltd +54a65c Technicolor CH USA Inc. +54a703 TP-LINK TECHNOLOGIES CO.,LTD. +54a9d4 Minibar Systems +54ab3a QUANTA COMPUTER INC. +54ae27 Apple, Inc. +54b121 HUAWEI TECHNOLOGIES CO.,LTD +54b203 PEGATRON CORPORATION +54b56c Xi'an NovaStar Tech Co., Ltd +54b620 SUHDOL E&C Co.Ltd. +54b753 Hunan Fenghui Yinjia Science And Technology Co.,Ltd +54b7e5 Rayson Technology Co., Ltd. +54b802 Samsung Electronics Co.,Ltd +54b80a D-Link International +54bad6 HUAWEI TECHNOLOGIES CO.,LTD +54bd79 Samsung Electronics Co.,Ltd +54be53 zte corporation +54bef7 PEGATRON CORPORATION +54bf64 Dell Inc. +54c33e Ciena Corporation +54c415 Hangzhou Hikvision Digital Technology Co.,Ltd. +54c57a Sunnovo International Limited +54c80f TP-LINK TECHNOLOGIES CO.,LTD. +54c9df FN-LINK TECHNOLOGY LIMITED +54cd10 Panasonic Mobile Communications Co.,Ltd. +54cda7 Fujian Shenzhou Electronic Co.,Ltd +54cdee ShenZhen Apexis Electronic Co.,Ltd +54d0b4 Xiamen Four-Faith Communication Technology Co.,Ltd +54d0ed AXIM Communications +54d163 MAX-TECH,INC +54d1b0 Universal Laser Systems, Inc +54d272 Nuki Home Solutions GmbH +54d46f Cisco SPVTG +54d751 Proximus +54d9e4 BRILLIANTTS CO., LTD +54dc1d Yulong Computer Telecommunication Scientific (Shenzhen) Co.,Ltd +54ded0 Sevio Srl +54df00 Ulterius Technologies, LLC +54df24 Fiberhome Telecommunication Technologies Co.,LTD +54df63 Intrakey technologies GmbH +54e019 Ring LLC +54e032 Juniper Networks +54e061 SICHUAN TIANYI COMHEART TELECOMCO., LTD +54e140 INGENICO +54e1ad LCFC(HeFei) Electronics Technology co., ltd +54e2c8 Dongguan Aoyuan Electronics Technology Co., Ltd +54e2e0 ARRIS Group, Inc. +54e3b0 JVL Industri Elektronik +54e3f6 Alcatel-Lucent +54e43a Apple, Inc. +54e4a9 BHR Tech GmbH +54e4bd FN-LINK TECHNOLOGY LIMITED +54e63f ShenZhen LingKeWeiEr Technology Co., Ltd. +54e6fc TP-LINK TECHNOLOGIES CO.,LTD. +54e7d5 Sun Cupid Technology (HK) LTD +54eaa8 Apple, Inc. +54ec2f Ruckus Wireless +54eda3 Navdy, Inc. +54ee75 Wistron InfoComm(Kunshan)Co.,Ltd. +54ef44 Lumi United Technology Co., Ltd +54ef92 Shenzhen Elink Technology Co., LTD +54effe Fullpower Technologies, Inc. +54f201 Samsung Electronics Co.,Ltd +54f5b6 ORIENTAL PACIFIC INTERNATIONAL LIMITED +54f666 Berthold Technologies GmbH and Co.KG +54f6c5 FUJIAN STAR-NET COMMUNICATION CO.,LTD +54f876 ABB AG +54fa3e Samsung Electronics Co.,Ltd +54fa96 Nokia +54fb58 WISEWARE, Lda +54fcf0 Samsung Electronics Co.,Ltd +54fdbf Scheidt & Bachmann GmbH +54ff82 Davit Solution co. +54ffcf Mopria Alliance +5800bb Juniper Networks +5800e3 Liteon Technology Corporation +5803fb Hangzhou Hikvision Digital Technology Co.,Ltd. +580454 ICOMM HK LIMITED +5804cb Tianjin Huisun Technology Co.,Ltd. +580528 LABRIS NETWORKS +580556 Elettronica GF S.r.L. +5808fa Fiber Optic & telecommunication INC. +580943 Private +5809e5 Kivic Inc. +580a20 Cisco Systems, Inc +58108c Intelbras +581243 AcSiP Technology Corp. +581626 Avaya Inc +5816d7 ALPS ELECTRIC CO., LTD. +58170c Sony Mobile Communications Inc +5819f8 ARRIS Group, Inc. +581cbd Affinegy +581d91 Advanced Mobile Telecom co.,ltd. +581f28 HUAWEI TECHNOLOGIES CO.,LTD +581f67 Open-m technology limited +581faa Apple, Inc. +581fef Tuttnaer LTD +582059 Xiaomi Communications Co Ltd +5820b1 Hewlett Packard +582136 KMB systems, s.r.o. +5821e9 TWPI +58238c Technicolor CH USA Inc. +582af7 HUAWEI TECHNOLOGIES CO.,LTD +582bdb Pax AB +582d34 Qingping Electronics (Suzhou) Co., Ltd +582efe Lighting Science Group +582f40 Nintendo Co.,Ltd +582f42 Universal Electric Corporation +583112 DRUST +583277 Reliance Communications LLC +58343b Glovast Technology Ltd. +583526 DEEPLET TECHNOLOGY CORP +5835d9 Cisco Systems, Inc +583879 RICOH COMPANY, LTD. +583bd9 Fiberhome Telecommunication Technologies Co.,LTD +583cc6 Omneality Ltd. +583f54 LG Electronics (Mobile Communications) +58404e Apple, Inc. +5842e4 Baxter International Inc +584498 Xiaomi Communications Co Ltd +58468f Koncar Electronics and Informatics +5846e1 Baxter International Inc +584704 Shenzhen Webridge Technology Co.,Ltd +584822 Sony Mobile Communications Inc +5848c0 COFLEC +584925 E3 Enterprise +58493b Palo Alto Networks +5849ba Chitai Electronic Corp. +584c19 Chongqing Guohong Technology Development Company Limited +584cee Digital One Technologies, Limited +585076 Linear Equipamentos Eletronicos SA +5850ab TLS Corporation +5850e6 Best Buy Corporation +58528a Mitsubishi Electric Corporation +5853c0 Beijing Guang Runtong Technology Development Company co.,Ltd +5855ca Apple, Inc. +5856e8 ARRIS Group, Inc. +58570d Danfoss Solar Inverters +5859c2 Aerohive Networks Inc. +585ff6 zte corporation +58605f HUAWEI TECHNOLOGIES CO.,LTD +586163 Quantum Networks (SG) Pte. Ltd. +586356 FN-LINK TECHNOLOGY LIMITED +58639a TPL SYSTEMES +5865e6 INFOMARK CO., LTD. +5866ba Hangzhou H3C Technologies Co., Limited +58671a Barnes&Noble +58677f Clare Controls Inc. +58685d Tempo Australia Pty Ltd +58696c Ruijie Networks Co.,LTD +5869f9 Fusion Transactive Ltd. +586ab1 Hangzhou H3C Technologies Co., Limited +586b14 Apple, Inc. +586d8f Cisco-Linksys, LLC +586ed6 Private +5870c6 Shanghai Xiaoyi Technology Co., Ltd. +587521 CJSC RTSoft +587675 Beijing ECHO Technologies Co.,Ltd +5876c5 DIGI I'S LTD +587a4d Stonesoft Corporation +587a62 Texas Instruments +587a6a GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD +587be9 AirPro Technology India Pvt. Ltd +587e61 Qingdao Hisense Communications Co.,Ltd. +587f57 Apple, Inc. +587f66 HUAWEI TECHNOLOGIES CO.,LTD +587fb7 SONAR INDUSTRIAL CO., LTD. +587fc8 S2M +58821d H. Schomäcker GmbH +5882a8 Microsoft +5884e4 IP500 Alliance e.V. +58856e QSC AG +5885a2 Realme Chongqing MobileTelecommunications Corp Ltd +5885e9 Realme Chongqing MobileTelecommunications Corp Ltd +58874c LITE-ON CLEAN ENERGY TECHNOLOGY CORP. +5887e2 Shenzhen Coship Electronics Co., Ltd. +588a5a Dell Inc. +588bf3 Zyxel Communications Corporation +588d09 Cisco Systems, Inc +588d64 Xi'an Clevbee Technology Co.,Ltd +589043 Sagemcom Broadband SAS +5891cf Intel Corporate +58920d Kinetic Avionics Limited +589396 Ruckus Wireless +5893d8 Texas Instruments +58946b Intel Corporate +5894cf Vertex Standard LMR, Inc. +589630 Technicolor CH USA Inc. +58971e Cisco Systems, Inc +5897bd Cisco Systems, Inc +589835 Technicolor +58986f Revolution Display +589b0b Shineway Technologies, Inc. +589cfc FreeBSD Foundation +589ec6 Gigaset Communications GmbH +58a023 Intel Corporate +58a0cb TrackNet, Inc +58a2b5 LG Electronics (Mobile Communications) +58a48e PixArt Imaging Inc. +58a76f iD corporation +58a839 Intel Corporate +58ac78 Cisco Systems, Inc +58b035 Apple, Inc. +58b0d4 ZuniData Systems Inc. +58b10f Samsung Electronics Co.,Ltd +58b3fc SHENZHEN RF-LINK TECHNOLOGY CO.,LTD. +58b42d YSTen Technology Co.,Ltd +58b568 SECURITAS DIRECT ESPAÑA, SAU +58b633 Ruckus Wireless +58b961 SOLEM Electronique +58b9e1 Crystalfontz America, Inc. +58bad4 HUAWEI TECHNOLOGIES CO.,LTD +58bc27 Cisco Systems, Inc +58bc8f Cognitive Systems Corp. +58bda3 Nintendo Co., Ltd. +58bdf9 Sigrand +58bfea Cisco Systems, Inc +58c17a Cambium Networks Limited +58c232 NEC Corporation +58c38b Samsung Electronics Co.,Ltd +58c583 ITEL MOBILE LIMITED +58c5cb Samsung Electronics Co.,Ltd +58c6f0 GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD +58c876 China Mobile (Hangzhou) Information Technology Co., Ltd. +58c935 Chiun Mai Communication Systems, Inc +58cb52 Google, Inc. +58cf4b Lufkin Industries +58d071 BW Broadcast +58d08f IEEE 1904.1 Working Group +58d56e D-Link International +58d67a TCPlink +58d6d3 Dairy Cheq Inc +58d759 HUAWEI TECHNOLOGIES CO.,LTD +58d9c3 Motorola Mobility LLC, a Lenovo Company +58d9d5 Tenda Technology Co.,Ltd.Dongguan branch +58db15 TECNO MOBILE LIMITED +58db8d Fast Co., Ltd. +58dc6d Exceptional Innovation, Inc. +58e02c Micro Technic A/S +58e16c Ying Hua Information Technology (Shanghai)Co., LTD +58e28f Apple, Inc. +58e326 Compass Technologies Inc. +58e476 CENTRON COMMUNICATIONS TECHNOLOGIES FUJIAN CO.,LTD +58e636 EVRsafe Technologies +58e6ba Apple, Inc. +58e747 Deltanet AG +58e808 AUTONICS CORPORATION +58e876 IEEE Registration Authority +58eb14 Proteus Digital Health +58ece1 Newport Corporation +58eced Integrated Device Technology (Malaysia) Sdn. Bhd. +58eece Icon Time Systems +58ef68 Belkin International Inc. +58f102 BLU Products Inc. +58f387 HCCP +58f39c Cisco Systems, Inc +58f496 Source Chain +58f67b Xia Men UnionCore Technology LTD. +58f6bf Kyoto University +58f987 HUAWEI TECHNOLOGIES CO.,LTD +58f98e SECUDOS GmbH +58fb84 Intel Corporate +58fc73 Arria Live Media, Inc. +58fcdb IEEE Registration Authority +58fd20 Bravida Sakerhet AB +58fdbe Shenzhen Taikaida Technology Co., Ltd +5c0038 Viasat Group S.p.A. +5c026a Applied Vision Corporation +5c0339 HUAWEI TECHNOLOGIES CO.,LTD +5c076f Thought Creator +5c0947 Apple, Inc. +5c0979 HUAWEI TECHNOLOGIES CO.,LTD +5c0a5b SAMSUNG ELECTRO MECHANICS CO., LTD. +5c0bca Tunstall Nordic AB +5c0c0e Guizhou Huaxintong Semiconductor Technology Co Ltd +5c0cbb CELIZION Inc. +5c0e8b Extreme Networks, Inc. +5c1193 Seal One AG +5c1437 Thyssenkrupp Aufzugswerke GmbH +5c1515 ADVAN +5c15e1 AIDC TECHNOLOGY (S) PTE LTD +5c16c7 Big Switch Networks +5c1737 I-View Now, LLC. +5c17d3 LGE +5c18b5 Talon Communications +5c1a6f Cambridge Industries(Group) Co.,Ltd. +5c1cb9 vivo Mobile Communication Co., Ltd. +5c1dd9 Apple, Inc. +5c20d0 Asoni Communication Co., Ltd. +5c22c4 DAE EUN ELETRONICS CO., LTD +5c2443 O-Sung Telecom Co., Ltd. +5c2479 Baltech AG +5c254c Avire Global Pte Ltd +5c260a Dell Inc. +5c2623 WaveLynx Technologies Corporation +5c2aef Open Access Pty Ltd +5c2bf5 Vivint Wireless Inc. +5c2e59 Samsung Electronics Co.,Ltd +5c2ed2 ABC(XiSheng) Electronics Co.,Ltd +5c313e Texas Instruments +5c32c5 Teracom Ltd. +5c3327 Spazio Italia srl +5c335c Swissphone Telecom AG +5c338e Alpha Networks Inc. +5c353b Compal Broadband Networks, Inc. +5c35da There Corporation Oy +5c36b8 TCL King Electrical Appliances (Huizhou) Co., Ltd +5c38e0 Shanghai Super Electronics Technology Co.,LTD +5c3b35 Gehirn Inc. +5c3c27 Samsung Electronics Co.,Ltd +5c4058 Jefferson Audio Video Systems, Inc. +5c415a Amazon.com, LLC +5c41e7 Wiatec International Ltd. +5c43d2 HAZEMEYER +5c4527 Juniper Networks +5c4979 AVM Audiovisuelles Marketing und Computersysteme GmbH +5c497d Samsung Electronics Co.,Ltd +5c4a1f SICHUAN TIANYI COMHEART TELECOMCO., LTD +5c4a26 Enguity Technology Corp +5c4ca9 HUAWEI TECHNOLOGIES CO.,LTD +5c5015 Cisco Systems, Inc +5c514f Intel Corporate +5c5181 Samsung Electronics Co.,Ltd +5c5188 Motorola Mobility LLC, a Lenovo Company +5c521e Nintendo Co.,Ltd +5c546d HUAWEI TECHNOLOGIES CO.,LTD +5c56ed 3pleplay Electronics Private Limited +5c571a ARRIS Group, Inc. +5c57c8 Nokia Corporation +5c5819 Jingsheng Technology Co., Ltd. +5c5948 Apple, Inc. +5c5ac7 Cisco Systems, Inc +5c5aea FORD +5c5b35 Mist Systems, Inc. +5c5bc2 YIK Corporation +5c5eab Juniper Networks +5c5f67 Intel Corporate +5c63bf TP-LINK TECHNOLOGIES CO.,LTD. +5c63c9 Intellithings Ltd. +5c666c GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD +5c6776 IDS Imaging Development Systems GmbH +5c6984 NUVICO +5c6a7d KENTKART EGE ELEKTRONIK SAN. VE TIC. LTD. STI. +5c6a80 Zyxel Communications Corporation +5c6b32 Texas Instruments +5c6b4f Hello Inc. +5c6d20 Hon Hai Precision Ind. Co.,Ltd. +5c6f4f S.A. SISTEL +5c70a3 LG Electronics (Mobile Communications) +5c710d Cisco Systems, Inc +5c75af Fitbit, Inc. +5c7695 Technicolor CH USA Inc. +5c7757 Haivision Network Video +5c7776 TCT mobile ltd +5c7d5e HUAWEI TECHNOLOGIES CO.,LTD +5c81a7 Network Devices Pty Ltd +5c838f Cisco Systems, Inc +5c8486 Brightsource Industries Israel LTD +5c8613 Beijing Zhoenet Technology Co., Ltd +5c864a Secret Labs LLC +5c865c Samsung Electronics Co.,Ltd +5c86c1 DONGGUAN SOLUM ELECTRONICS CO.,LTD +5c8778 Cybertelbridge co.,ltd +5c879c Intel Corporate +5c8816 Rockwell Automation +5c899a TP-LINK TECHNOLOGIES CO.,LTD. +5c89d4 Beijing Banner Electric Co.,Ltd +5c8a38 Hewlett Packard +5c8d2d Shanghai Wellpay Information Technology Co., Ltd +5c8d4e Apple, Inc. +5c8fe0 ARRIS Group, Inc. +5c925e Zioncom Electronics (Shenzhen) Ltd. +5c93a2 Liteon Technology Corporation +5c95ae Apple, Inc. +5c9656 AzureWave Technology Inc. +5c966a RTNET +5c969d Apple, Inc. +5c97f3 Apple, Inc. +5c9960 Samsung Electronics Co.,Ltd +5c9ad8 FUJITSU LIMITED +5ca176 SICHUAN TIANYI COMHEART TELECOMCO., LTD +5ca178 TableTop Media (dba Ziosk) +5ca1e0 EmbedWay Technologies +5ca39d SAMSUNG ELECTRO MECHANICS CO., LTD. +5ca3eb Lokel s.r.o. +5ca48a Cisco Systems, Inc +5ca86a HUAWEI TECHNOLOGIES CO.,LTD +5ca933 Luma Home +5caafd Sonos, Inc. +5cac4c Hon Hai Precision Ind. Co.,Ltd. +5cad76 Shenzhen TCL New Technology Co., Ltd +5cadcf Apple, Inc. +5caf06 LG Electronics (Mobile Communications) +5cb066 ARRIS Group, Inc. +5cb13e Sagemcom Broadband SAS +5cb15f Oceanblue Cloud Technology Limited +5cb395 HUAWEI TECHNOLOGIES CO.,LTD +5cb3f6 Human, Incorporated +5cb43e HUAWEI TECHNOLOGIES CO.,LTD +5cb524 Sony Mobile Communications Inc +5cb559 CNEX Labs +5cb6cc NovaComm Technologies Inc. +5cb8cb Allis Communications +5cb901 Hewlett Packard +5cba37 Microsoft Corporation +5cbd9e HONGKONG MIRACLE EAGLE TECHNOLOGY(GROUP) LIMITED +5cc213 Fr. Sauter AG +5cc307 HUAWEI TECHNOLOGIES CO.,LTD +5cc5d4 Intel Corporate +5cc6d0 Skyworth Digital Technology(Shenzhen) Co.,Ltd +5cc6e9 Edifier International +5cc7d7 AZROAD TECHNOLOGY COMPANY LIMITED +5cc999 New H3C Technologies Co., Ltd +5cc9d3 PALLADIUM ENERGY ELETRONICA DA AMAZONIA LTDA +5cca1a Microsoft Mobile Oy +5cca32 Theben AG +5ccad3 CHIPSEA TECHNOLOGIES (SHENZHEN) CORP. +5ccbca FUJIAN STAR-NET COMMUNICATION CO.,LTD +5ccca0 Gridwiz Inc. +5cccff Techroutes Network Pvt Ltd +5ccd5b Intel Corporate +5ccd7c MEIZU Technology Co.,Ltd. +5ccead CDYNE Corporation +5ccf7f Espressif Inc. +5cd135 Xtreme Power Systems +5cd20b Yytek Co., Ltd. +5cd2e4 Intel Corporate +5cd41b UCZOON Technology Co., LTD +5cd4ab Zektor +5cd61f Qardio, Inc +5cd998 D-Link Corporation +5cdad4 Murata Manufacturing Co., Ltd. +5cdc96 Arcadyan Technology Corporation +5cdd70 Hangzhou H3C Technologies Co., Limited +5ce0c5 Intel Corporate +5ce0ca FeiTian United (Beijing) System Technology Co., Ltd. +5ce0f6 NIC.br- Nucleo de Informacao e Coordenacao do Ponto BR +5ce223 Delphin Technology AG +5ce286 Nortel Networks +5ce28c Zyxel Communications Corporation +5ce2f4 AcSiP Technology Corp. +5ce30e ARRIS Group, Inc. +5ce3b6 Fiberhome Telecommunication Technologies Co.,LTD +5ce50c Beijing Xiaomi Mobile Software Co., Ltd +5ce7a0 Nokia +5ce7bf New Singularity International Technical Development Co.,Ltd +5ce883 HUAWEI TECHNOLOGIES CO.,LTD +5ce8b7 Oraimo Technology Limited +5ce8eb Samsung Electronics Co.,Ltd +5cea1d Hon Hai Precision Ind. Co.,Ltd. +5ceb4e R. STAHL HMI Systems GmbH +5ceb68 Cheerstar Technology Co., Ltd +5cee79 Global Digitech Co LTD +5cf207 Speco Technologies +5cf286 IEEE Registration Authority +5cf370 CC&C Technologies, Inc +5cf3fc IBM Corp +5cf4ab Zyxel Communications Corporation +5cf50d Institute of microelectronic applications +5cf5da Apple, Inc. +5cf6dc Samsung Electronics Co.,Ltd +5cf7c3 SYNTECH (HK) TECHNOLOGY LIMITED +5cf7e6 Apple, Inc. +5cf821 Texas Instruments +5cf8a1 Murata Manufacturing Co., Ltd. +5cf938 Apple, Inc. +5cf96a HUAWEI TECHNOLOGIES CO.,LTD +5cf9dd Dell Inc. +5cf9f0 Atomos Engineering P/L +5cfafb Acubit +5cfb7c Shenzhen Jingxun Software Telecommunication Technology Co.,Ltd +5cfc66 Cisco Systems, Inc +5cff35 Wistron Corporation +5cffff Shenzhen Kezhonglong Optoelectronic Technology Co., Ltd +600194 Espressif Inc. +600292 PEGATRON CORPORATION +6002b4 Wistron Neweb Corporation +600308 Apple, Inc. +600347 Billion Electric Co. Ltd. +6003a6 Inteno Broadband Technology AB +600417 POSBANK CO.,LTD +60058a Hitachi Metals, Ltd. +600810 HUAWEI TECHNOLOGIES CO.,LTD +600837 ivvi Scientific(Nanchang)Co.Ltd +6009c3 u-blox AG +600b03 Hangzhou H3C Technologies Co., Limited +600f77 SilverPlus, Inc +601199 Siama Systems Inc +601283 TSB REAL TIME LOCATION SYSTEMS S.L. +60128b CANON INC. +601466 zte corporation +6014b3 CyberTAN Technology Inc. +6015c7 IdaTech +601803 Daikin Air-conditioning (Shanghai) Co., Ltd. +60182e ShenZhen Protruly Electronic Ltd co. +601888 zte corporation +60190c RRAMAC +601929 VOLTRONIC POWER TECHNOLOGY(SHENZHEN) CORP. +601970 HUIZHOU QIAOXING ELECTRONICS TECHNOLOGY CO., LTD. +601971 ARRIS Group, Inc. +601d0f Midnite Solar +601d91 Motorola Mobility LLC, a Lenovo Company +601e02 EltexAlatau +602101 GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD +602103 I4VINE, INC +6021c0 Murata Manufacturing Co., Ltd. +6023a4 Sichuan AI-Link Technology Co., Ltd. +6024c1 Jiangsu Zhongxun Electronic Technology Co., Ltd +60271c VIDEOR E. Hartig GmbH +6029d5 DAVOLINK Inc. +602a54 CardioTek B.V. +602ad0 Cisco SPVTG +602e20 HUAWEI TECHNOLOGIES CO.,LTD +6030d4 Apple, Inc. +60313b Sunnovo International Limited +603197 Zyxel Communications Corporation +6032f0 Mplus technology +60334b Apple, Inc. +603553 Buwon Technology +6035c0 SFR +603696 The Sapling Company +6036dd Intel Corporate +60380e ALPS ELECTRIC CO., LTD. +6038e0 Belkin International Inc. +60391f ABB Ltd +603a7c TP-LINK TECHNOLOGIES CO.,LTD. +603d26 Technicolor CH USA Inc. +603e7b Gafachi, Inc. +603eca Cambridge Medical Robotics Ltd +603fc5 COX CO., LTD +60427f SHENZHEN CHUANGWEI-RGB ELECTRONICS CO.,LTD +60447a Water-i.d. GmbH +6044f5 Easy Digital Ltd. +60455e Liptel s.r.o. +6045bd Microsoft +6045cb ASUSTek COMPUTER INC. +604616 XIAMEN VANN INTELLIGENT CO., LTD +604762 Beijing Sensoro Technology Co.,Ltd. +6047d4 FORICS Electronic Technology Co., Ltd. +604826 Newbridge Technologies Int. Ltd. +6049c1 Avaya Inc +604a1c SUYIN Corporation +604baa Magic Leap, Inc. +6050c1 Kinetek Sports +60512c TCT mobile ltd +6052d0 FACTS Engineering +605317 Sandstone Technologies +605464 Eyedro Green Solutions Inc. +605718 Intel Corporate +605bb4 AzureWave Technology Inc. +605f8d eero inc. +60601f SZ DJI TECHNOLOGY CO.,LTD +6061df Z-meta Research LLC +60634c D-Link International +6063f9 Ciholas, Inc. +6063fd Transcend Communication Beijing Co.,Ltd. +606405 Texas Instruments +606453 AOD Co.,Ltd. +6064a1 RADiflow Ltd. +606720 Intel Corporate +606944 Apple, Inc. +60699b isepos GmbH +606bbd Samsung Electronics Co.,Ltd +606bff Nintendo Co.,Ltd +606c66 Intel Corporate +606d3c Luxshare Precision Industry Company Limited +606dc7 Hon Hai Precision Ind. Co.,Ltd. +606ed0 SEAL AG +6070c0 Apple, Inc. +60720b BLU Products Inc +60735c Cisco Systems, Inc +6073bc zte corporation +60748d Atmaca Elektronik +607688 Velodyne +607771 Texas Instruments +6077e2 Samsung Electronics Co.,Ltd +607edd Microsoft Mobile Oy +60812b Custom Control Concepts +6081f9 Helium Systems, Inc +608334 HUAWEI TECHNOLOGIES CO.,LTD +6083b2 GkWare e.K. +60843b Soladigm, Inc. +6084bd BUFFALO.INC +608645 Avery Weigh-Tronix, LLC +60893c Thermo Fisher Scientific P.O.A. +6089b1 Key Digital Systems +6089b7 KAEL MÜHENDİSLİK ELEKTRONİK TİCARET SANAYİ LİMİTED ŞİRKETİ +608b0e Apple, Inc. +608c2b Hanson Technology +608c4a Apple, Inc. +608cdf Private +608ce6 ARRIS Group, Inc. +608d17 Sentrus Government Systems Division, Inc +608e08 Samsung Electronics Co.,Ltd +608f5c Samsung Electronics Co.,Ltd +609084 DSSD Inc +6091f3 vivo Mobile Communication Co., Ltd. +609217 Apple, Inc. +6092f5 ARRIS Group, Inc. +6095ce IEEE Registration Authority +609620 Private +6097dd MicroSys Electronics GmbH +609813 Shanghai Visking Digital Technology Co. LTD +6099d1 Vuzix / Lenovo +609aa4 GVI SECURITY INC. +609ac1 Apple, Inc. +609bc8 Hipad Intelligent Technology Co., Ltd. +609c9f Brocade Communications Systems, Inc. +609e64 Vivonic GmbH +609f9d CloudSwitch +60a10a Samsung Electronics Co.,Ltd +60a11e Wuhan Maxsine Electric Co.,Ltd. +60a37d Apple, Inc. +60a44c ASUSTek COMPUTER INC. +60a4d0 Samsung Electronics Co.,Ltd +60a730 Shenzhen Yipinfang Internet Technology Co.,Ltd +60a8fe Nokia +60a9b0 Merchandising Technologies, Inc +60ab14 LG Innotek +60ab67 Xiaomi Communications Co Ltd +60abd2 Bose Corporation +60acc8 KunTeng Inc. +60af6d Samsung Electronics Co.,Ltd +60b185 ATH system +60b387 Synergics Technologies GmbH +60b3c4 Elber Srl +60b4f7 Plume Design Inc +60b606 Phorus +60b617 Fiberhome Telecommunication Technologies Co.,LTD +60b933 Deutron Electronics Corp. +60b982 RO.VE.R. Laboratories S.p.A. +60ba18 nextLAP GmbH +60bb0c Beijing HuaqinWorld Technology Co,Ltd +60bc4c EWM Hightec Welding GmbH +60bd91 Move Innovation +60beb5 Motorola Mobility LLC, a Lenovo Company +60c0bf ON Semiconductor +60c1cb Fujian Great Power PLC Equipment Co.,Ltd +60c397 2Wire Inc +60c547 Apple, Inc. +60c5a8 Beijing LT Honway Technology Co.,Ltd +60c5ad Samsung Electronics Co.,Ltd +60c658 PHYTRONIX Co.,Ltd. +60c798 Verifone +60c980 Trymus +60cbfb AirScape Inc. +60cda9 Abloomy +60cdc5 Taiwan Carol Electronics., Ltd +60ce92 The Refined Industry Company Limited +60d02c Ruckus Wireless +60d0a9 Samsung Electronics Co.,Ltd +60d1aa Vishal Telecommunications Pvt Ltd +60d21c Sunnovo International Limited +60d248 ARRIS Group, Inc. +60d262 Tzukuri Pty Ltd +60d2b9 REALAND BIO CO., LTD. +60d2dd Shenzhen Baitong Putian Technology Co.,Ltd. +60d30a Quatius Limited +60d755 HUAWEI TECHNOLOGIES CO.,LTD +60d7e3 IEEE Registration Authority +60d819 Hon Hai Precision Ind. Co.,Ltd. +60d9a0 Lenovo Mobile Communication Technology Ltd. +60d9c7 Apple, Inc. +60da23 Estech Co.,Ltd +60da83 Hangzhou H3C Technologies Co., Limited +60db2a HNS +60de44 HUAWEI TECHNOLOGIES CO.,LTD +60def3 HUAWEI TECHNOLOGIES CO.,LTD +60e00e SHINSEI ELECTRONICS CO LTD +60e327 TP-LINK TECHNOLOGIES CO.,LTD. +60e3ac LG Electronics (Mobile Communications) +60e6bc Sino-Telecom Technology Co.,Ltd. +60e701 HUAWEI TECHNOLOGIES CO.,LTD +60e78a UNISEM +60e956 Ayla Networks, Inc +60eb69 QUANTA COMPUTER INC. +60ee5c SHENZHEN FAST TECHNOLOGIES CO.,LTD +60efc6 Shenzhen Chima Technologies Co Limited +60f13d JABLOCOM s.r.o. +60f189 Murata Manufacturing Co., Ltd. +60f18a HUAWEI TECHNOLOGIES CO.,LTD +60f262 Intel Corporate +60f281 TRANWO TECHNOLOGY CO., LTD. +60f2ef VisionVera International Co., Ltd. +60f3da Logic Way GmbH +60f445 Apple, Inc. +60f494 Hon Hai Precision Ind. Co.,Ltd. +60f59c CRU-Dataport +60f673 TERUMO CORPORATION +60f677 Intel Corporate +60f81d Apple, Inc. +60fa9d HUAWEI TECHNOLOGIES CO.,LTD +60facd Apple, Inc. +60fb42 Apple, Inc. +60fd56 WOORISYSTEMS CO., Ltd +60fe1e China Palms Telecom.Ltd +60fe20 2Wire Inc +60fec5 Apple, Inc. +60fef9 Thomas & Betts +60ffdd C.E. ELECTRONICS, INC +64002d Powerlinq Co., LTD +64006a Dell Inc. +6400f1 Cisco Systems, Inc +6402cb ARRIS Group, Inc. +6405be NEW LIGHT LED +6405e9 Shenzhen WayOS Technology Crop., Ltd. +64094c Beijing Superbee Wireless Technology Co.,Ltd +640980 Xiaomi Communications Co Ltd +640b4a Digital Telecom Technology Limited +640dce SHENZHEN MERCURY COMMUNICATION TECHNOLOGIES CO.,LTD. +640de6 Petra Systems +640e36 TAZTAG +640e94 Pluribus Networks, Inc. +640f28 2Wire Inc +641084 HEXIUM Technical Development Co., Ltd. +641225 Cisco Systems, Inc +641269 ARRIS Group, Inc. +641331 Bosch Car Multimedia (Wuhu) Co. Ltd. +64136c zte corporation +641666 Nest Labs Inc. +64167f Polycom +64168d Cisco Systems, Inc +6416f0 HUAWEI TECHNOLOGIES CO.,LTD +641a22 Heliospectra AB +641c67 DIGIBRAS INDUSTRIA DO BRASILS/A +641cae Samsung Electronics Co.,Ltd +641cb0 Samsung Electronics Co.,Ltd +641e81 Dowslake Microsystems +64200c Apple, Inc. +64209f Tilgin AB +642184 Nippon Denki Kagaku Co.,LTD +642216 Shandong Taixin Electronic co.,Ltd +642400 Xorcom Ltd. +64255e Observint Technologies, Inc. +642737 Hon Hai Precision Ind. Co.,Ltd. +6429ed AO PKK Milandr +642b8a ALL BEST Industrial Co., Ltd. +642db7 SEUNGIL ELECTRONICS +643150 Hewlett Packard +64317e Dexin Corporation +6432a8 Intel Corporate +643409 BITwave Pte Ltd +64351c e-CON SYSTEMS INDIA PVT LTD +643ab1 SICHUAN TIANYI COMHEART TELECOMCO.,LTD +643e8c HUAWEI TECHNOLOGIES CO.,LTD +643f5f Exablaze +644214 Swisscom Energy Solutions AG +644346 GuangDong Quick Network Computer CO.,LTD +6447e0 Feitian Technologies Co., Ltd +644bc3 Shanghai WOASiS Telecommunications Ltd., Co. +644bf0 CalDigit, Inc +644c36 Intel Corporate +644d70 dSPACE GmbH +644f42 JETTER CO., Ltd. +644f74 LENUS Co., Ltd. +644fb0 Hyunjin.com +645106 Hewlett Packard +64517e LONG BEN (DONGGUAN) ELECTRONIC TECHNOLOGY CO.,LTD. +645299 The Chamberlain Group, Inc +64535d Frauscher Sensortechnik +645422 Equinox Payments +645563 Intelight Inc. +64557f NSFOCUS Information Technology Co., Ltd. +6455b1 ARRIS Group, Inc. +645601 TP-LINK TECHNOLOGIES CO.,LTD. +6458ad China Mobile IOT Company Limited +6459f8 Vodafone Omnitel B.V. +645a04 Chicony Electronics Co., Ltd. +645aed Apple, Inc. +645d86 Intel Corporate +645d92 SICHUAN TIANYI COMHEART TELECOMCO.,LTD +645dd7 Shenzhen Lifesense Medical Electronics Co., Ltd. +645ebe Yahoo! JAPAN +645fff Nicolet Neuro +646038 Hirschmann Automation and Control GmbH +646184 VELUX +646223 Cellient Co., Ltd. +64628a evon GmbH +64649b Juniper Networks +6465c0 Nuvon, Inc +6466b3 TP-LINK TECHNOLOGIES CO.,LTD. +646707 Beijing Omnific Technology, Ltd. +64680c Comtrend Corporation +6469bc Hytera Communications Co .,ltd +646a52 Avaya Inc +646a74 AUTH-SERVERS, LLC +646cb2 Samsung Electronics Co.,Ltd +646d6c HUAWEI TECHNOLOGIES CO.,LTD +646e69 Liteon Technology Corporation +646e6c Radio Datacom LLC +646eea Iskratel d.o.o. +647002 TP-LINK TECHNOLOGIES CO.,LTD. +647033 Apple, Inc. +6472d8 GooWi Technology Co.,Limited +647366 Shenzhen Siera Technology Ltd +6473e2 Arbiter Systems, Inc. +6474f6 Shooter Detection Systems +647657 Innovative Security Designs +6476ba Apple, Inc. +64777d Hitron Technologies. Inc +647791 Samsung Electronics Co.,Ltd +6479a7 Phison Electronics Corp. +647bce Samsung Electronics Co.,Ltd +647bd4 Texas Instruments +647c34 Ubee Interactive Co., Limited +647d81 YOKOTA INDUSTRIAL CO,.LTD +647fda TEKTELIC Communications Inc. +64808b VG Controls, Inc. +648099 Intel Corporate +648125 Alphatron Marine BV +648788 Juniper Networks +6487d7 ADB Broadband Italia +6488ff Sichuan Changhong Electric Ltd. +64899a LG Electronics (Mobile Communications) +6489f1 Samsung Electronics Co.,Ltd +648d9e IVT Electronic Co.,Ltd +649829 Integrated Device Technology (Malaysia) Sdn. Bhd. +64995d LGE +649968 Elentec +6499a0 AG Elektronik AB +649a08 Shenzhen SuperElectron Technology Co.,LTD +649a12 P2 Mobile Technologies Limited +649abe Apple, Inc. +649b24 V Technology Co., Ltd. +649c81 Qualcomm Inc. +649c8e Texas Instruments +649d99 FS COM INC +649ef3 Cisco Systems, Inc +649ff7 Kone OYj +64a0e7 Cisco Systems, Inc +64a232 OOO Samlight +64a2f9 OnePlus Technology (Shenzhen) Co., Ltd +64a341 Wonderlan (Beijing) Technology Co., Ltd. +64a3cb Apple, Inc. +64a5c3 Apple, Inc. +64a651 HUAWEI TECHNOLOGIES CO.,LTD +64a68f Zhongshan Readboy Electronics Co.,Ltd +64a769 HTC Corporation +64a7dd Avaya Inc +64a837 Juni Korea Co., Ltd +64ae0c Cisco Systems, Inc +64ae88 Polytec GmbH +64aef1 Qingdao Hisense Electronics Co.,Ltd. +64b0a6 Apple, Inc. +64b21d Chengdu Phycom Tech Co., Ltd. +64b310 Samsung Electronics Co.,Ltd +64b370 PowerComm Solutions LLC +64b473 Xiaomi Communications Co Ltd +64b5c6 Nintendo Co.,Ltd +64b64a ViVOtech, Inc. +64b853 Samsung Electronics Co.,Ltd +64b9e8 Apple, Inc. +64babd SDJ Technologies, Inc. +64bc0c LG Electronics (Mobile Communications) +64bc11 CombiQ AB +64c2de LG Electronics (Mobile Communications) +64c354 Avaya Inc +64c3d6 Juniper Networks +64c5aa South African Broadcasting Corporation +64c667 Barnes&Noble +64c6af AXERRA Networks Ltd +64c753 Apple, Inc. +64c901 INVENTEC Corporation +64c944 LARK Technologies, Inc +64cb5d SIA TeleSet +64cb9f TECNO MOBILE LIMITED +64cba3 Pointmobile +64cc22 Arcadyan Corporation +64cc2e Xiaomi Communications Co Ltd +64ce6e Sierra Wireless +64cfd9 Texas Instruments +64d02d Next Generation Integration (NGI) +64d154 Routerboard.com +64d1a3 Sitecom Europe BV +64d241 Keith & Koep GmbH +64d4bd ALPS ELECTRIC CO., LTD. +64d4da Intel Corporate +64d814 Cisco Systems, Inc +64d912 Solidica, Inc. +64d954 Taicang T&W Electronics +64d989 Cisco Systems, Inc +64daa0 Robert Bosch Smart Home GmbH +64db18 OpenPattern +64db43 Motorola (Wuhan) Mobility Technologies Communication Co., Ltd. +64db81 Syszone Co., Ltd. +64db8b Hangzhou Hikvision Digital Technology Co.,Ltd. +64dba0 Select Comfort +64dc01 Static Systems Group PLC +64de1c Kingnetic Pte Ltd +64df10 JingLue Semiconductor(SH) Ltd. +64dfe9 ATEME +64e161 DEP Corp. +64e599 EFM Networks +64e625 Woxu Wireless Co., Ltd +64e682 Apple, Inc. +64e84f Serialway Communication Technology Co. Ltd +64e892 Morio Denki Co., Ltd. +64e8e6 global moisture management system +64e950 Cisco Systems, Inc +64eac5 SiboTech Automation Co., Ltd. +64eb8c Seiko Epson Corporation +64ed57 ARRIS Group, Inc. +64ed62 WOORI SYSTEMS Co., Ltd +64eeb7 Netcore Technology Inc +64f242 Gerdes Aktiengesellschaft +64f50e Kinion Technology Company Limited +64f69d Cisco Systems, Inc +64f81c Huawei Technologies Co., Ltd. +64f88a China Mobile IOT Company Limited +64f970 Kenade Electronics Technology Co.,LTD. +64f987 Avvasi Inc. +64f9c0 ANALOG DEVICES +64fb50 RoomReady/Zdi, Inc. +64fb81 IEEE Registration Authority +64fb92 PPC Broadband Inc. +64fc8c Zonar Systems +64ff0a Wistron Neweb Corporation +680235 Konten Networks Inc. +680571 Samsung Electronics Co.,Ltd +6805ca Intel Corporate +68070a TPVision Europe B.V +680715 Intel Corporate +680927 Apple, Inc. +680ad7 Yancheng Kecheng Optoelectronic Technology Co., Ltd +68122d Special Instrument Development Co., Ltd. +681295 Lupine Lighting Systems GmbH +681401 Hon Hai Precision Ind. Co.,Ltd. +681590 Sagemcom Broadband SAS +6815d3 Zaklady Elektroniki i Mechaniki Precyzyjnej R&G S.A. +681605 Systems And Electronic Development FZCO +681729 Intel Corporate +68193f Digital Airways +681ab2 zte corporation +681ca2 Rosewill Inc. +681d64 Sunwave Communications Co., Ltd +681def Shenzhen CYX Technology Co., Ltd. +681e8b InfoSight Corporation +681f40 Blu Wireless Technology Ltd +681fd8 Siemens Industry, Inc. +68234b Nihon Dengyo Kousaku +68262a SICHUAN TIANYI COMHEART TELECOMCO., LTD +682719 Microchip Technology Inc. +682737 Samsung Electronics Co.,Ltd +6828ba Dejai +6828f6 Vubiq Networks, Inc. +6829dc Ficosa Electronics S.L.U. +682c7b Cisco Systems, Inc +682ddc Wuhan Changjiang Electro-Communication Equipment CO.,LTD +6831fe Teladin Co.,Ltd. +683489 LEA Professional +683563 SHENZHEN LIOWN ELECTRONICS CO.,LTD. +6836b5 DriveScale, Inc. +6837e9 Amazon Technologies Inc. +683943 ittim +683a1e Cisco Meraki +683b1e Countwise LTD +683b78 Cisco Systems, Inc +683c7d Magic Intelligence Technology Limited +683e02 SIEMENS AG, Digital Factory, Motion Control System +683e34 MEIZU Technology Co., Ltd. +683eec ERECA +683f1e EFFECT Photonics B.V. +684352 Bhuu Limited +6843d7 Agilecom Photonics Solutions Guangdong Limited +6845f1 TOSHIBA CLIENT SOLUTIONS CO., LTD. +684749 Texas Instruments +684898 Samsung Electronics Co.,Ltd +684aae HUAWEI TECHNOLOGIES CO.,LTD +684b88 Galtronics Telemetry Inc. +684ca8 Shenzhen Herotel Tech. Co., Ltd. +684f64 Dell Inc. +6851b7 PowerCloud Systems, Inc. +68536c SPnS Co.,Ltd +685388 P&S Technology +6854c1 ColorTokens, Inc. +6854ed Alcatel-Lucent +6854f5 enLighted Inc +6854fd Amazon Technologies Inc. +68572d HANGZHOU AIXIANGJI TECHNOLOGY CO., LTD +6858c5 ZF TRW Automotive +68597f Alcatel Lucent +685acf Samsung Electronics Co.,Ltd +685b35 Apple, Inc. +685b36 POWERTECH INDUSTRIAL CO., LTD. +685d43 Intel Corporate +685e6b PowerRay Co., Ltd. +686350 Hella India Automotive Pvt Ltd +686359 Advanced Digital Broadcast SA +68644b Apple, Inc. +68692e Zycoo Co.,Ltd +686975 Angler Labs Inc +6869f2 ComAp s.r.o. +686dbc Hangzhou Hikvision Digital Technology Co.,Ltd. +686e23 Wi3 Inc. +686e48 Prophet Electronic Technology Corp.,Ltd +687251 Ubiquiti Networks Inc. +6872dc CETORY.TV Company Limited +68764f Sony Mobile Communications Inc +687848 Westunitis Co., Ltd. +68784c Nortel Networks +687924 ELS-GmbH & Co. KG +6879ed SHARP Corporation +687cc8 Measurement Systems S. de R.L. +687cd5 Y Soft Corporation, a.s. +687d6b Samsung Electronics Co.,Ltd +687f74 Cisco-Linksys, LLC +6882f2 grandcentrix GmbH +68831a Pandora Mobility Corporation +688470 eSSys Co.,Ltd +68847e FUJITSU LIMITED +688540 IGI Mobile, Inc. +68856a OuterLink Corporation +6886a7 Cisco Systems, Inc +6886e7 Orbotix, Inc. +68876b INQ Mobile Limited +688975 nuoxc +6889c1 HUAWEI TECHNOLOGIES CO.,LTD +688ab5 EDP Servicos +688af0 zte corporation +688b0f China Mobile IOT Company Limited +688db6 AETEK INC. +688f2e Hitron Technologies. Inc +688f84 HUAWEI TECHNOLOGIES CO.,LTD +6891d0 IEEE Registration Authority +689234 Ruckus Wireless +689361 Integrated Device Technology (Malaysia) Sdn. Bhd. +689423 Hon Hai Precision Ind. Co.,Ltd. +68967b Apple, Inc. +68974b Shenzhen Costar Electronics Co. Ltd. +6897e8 Society of Motion Picture & Television Engineers +689861 Beacon Inc +6899cd Cisco Systems, Inc +689a87 Amazon Technologies Inc. +689ab7 Atelier Vision Corporation +689c5e AcSiP Technology Corp. +689c70 Apple, Inc. +689ce2 Cisco Systems, Inc +689e19 Texas Instruments +689ff0 zte corporation +68a03e HUAWEI TECHNOLOGIES CO.,LTD +68a0f6 HUAWEI TECHNOLOGIES CO.,LTD +68a1b7 Honghao Mingchuan Technology (Beijing) CO.,Ltd. +68a378 FREEBOX SAS +68a3c4 Liteon Technology Corporation +68a40e BSH Hausgeräte GmbH +68a47d Sun Cupid Technology (HK) LTD +68a682 Shenzhen YOUHUA Technology Co., Ltd +68a828 HUAWEI TECHNOLOGIES CO.,LTD +68a86d Apple, Inc. +68a8e1 Wacom Co.,Ltd. +68aad2 DATECS LTD., +68ab09 Nokia +68ab1e Apple, Inc. +68ab8a RF IDeas +68ae20 Apple, Inc. +68af13 Futura Mobility +68b094 INESA ELECTRON CO.,LTD +68b35e Shenzhen Neostra Technology Co.Ltd +68b43a WaterFurnace International, Inc. +68b599 Hewlett Packard +68b6fc Hitron Technologies. Inc +68b8d9 Act KDE, Inc. +68b983 b-plus GmbH +68bc0c Cisco Systems, Inc +68bdab Cisco Systems, Inc +68bfc4 Samsung Electronics Co.,Ltd +68c44d Motorola Mobility LLC, a Lenovo Company +68c63a Espressif Inc. +68c90b Texas Instruments +68ca00 Octopus Systems Limited +68cae4 Cisco Systems, Inc +68cc6e HUAWEI TECHNOLOGIES CO.,LTD +68cc9c Mine Site Technologies +68cd0f U Tek Company Limited +68ce4e L-3 Communications Infrared Products +68d1ba Shenzhen YOUHUA Technology Co., Ltd +68d1fd Shenzhen Trimax Technology Co.,Ltd +68d247 Portalis LC +68d482 SHENZHEN GONGJIN ELECTRONICS CO.,LT +68d925 ProSys Development Services +68d93c Apple, Inc. +68db54 Phicomm (Shanghai) Co., Ltd. +68db67 Nantong Coship Electronics Co., Ltd. +68db96 OPWILL Technologies CO .,LTD +68dbca Apple, Inc. +68dbf5 Amazon Technologies Inc. +68dce8 PacketStorm Communications +68dd26 Shanghai Focus Vision Security Technology Co.,Ltd +68dfdd Xiaomi Communications Co Ltd +68e166 Private +68e41f Unglaube Identech GmbH +68e7c2 Samsung Electronics Co.,Ltd +68e8eb Linktel Technologies Co.,Ltd +68ebae Samsung Electronics Co.,Ltd +68ebc5 Angstrem Telecom +68ec62 YODO Technology Corp. Ltd. +68ecc5 Intel Corporate +68ed43 BlackBerry RTS +68eda4 Shenzhen Seavo Technology Co.,Ltd +68ee96 Cisco SPVTG +68ef43 Apple, Inc. +68efbd Cisco Systems, Inc +68f06d ALONG INDUSTRIAL CO., LIMITED +68f0bc Shenzhen LiWiFi Technology Co., Ltd +68f125 Data Controls Inc. +68f728 LCFC(HeFei) Electronics Technology co., ltd +68f895 Redflow Limited +68f956 Objetivos y Servicio de Valor Añadido +68fb7e Apple, Inc. +68fb95 Generalplus Technology Inc. +68fcb3 Next Level Security Systems, Inc. +68feda Fiberhome Telecommunication Technologies Co.,LTD +68fef7 Apple, Inc. +68ff7b TP-LINK TECHNOLOGIES CO.,LTD. +6c006b Samsung Electronics Co.,Ltd +6c0273 Shenzhen Jin Yun Video Equipment Co., Ltd. +6c0460 RBH Access Technologies Inc. +6c05d5 Ethertronics Inc +6c090a GEMATICA SRL +6c09d6 Digiquest Electronics LTD +6c0b84 Universal Global Scientific Industrial Co., Ltd. +6c0e0d Sony Mobile Communications Inc +6c0ee6 Chengdu Xiyida Electronic Technology Co,.Ltd +6c0f6a JDC Tech Co., Ltd. +6c14f7 Erhardt+Leimer GmbH +6c15f9 Nautronix Limited +6c160e ShotTracker +6c1811 Decatur Electronics +6c198f D-Link International +6c19c0 Apple, Inc. +6c1c71 Zhejiang Dahua Technology Co., Ltd. +6c1deb u-blox AG +6c1e70 Guangzhou YBDS IT Co.,Ltd +6c1e90 Hansol Technics Co., Ltd. +6c2056 Cisco Systems, Inc +6c21a2 AMPAK Technology, Inc. +6c22ab Ainsworth Game Technology +6c23b9 Sony Mobile Communications Inc +6c23cb Wattty Corporation +6c2483 Microsoft Mobile Oy +6c24a6 vivo Mobile Communication Co., Ltd. +6c25b9 BBK EDUCATIONAL ELECTRONICS CORP.,LTD. +6c2779 Microsoft Mobile Oy +6c2990 WiZ Connected Lighting Company Limited +6c2995 Intel Corporate +6c2acb Paxton Access Ltd +6c2b59 Dell Inc. +6c2c06 OOO NPP Systemotechnika-NN +6c2cdc Skyworth Digital Technology(Shenzhen) Co.,Ltd +6c2e33 Accelink Technologies Co.,Ltd. +6c2e72 B&B EXPORTING LIMITED +6c2e85 Sagemcom Broadband SAS +6c2f2c Samsung Electronics Co.,Ltd +6c32de Indieon Technologies Pvt. Ltd. +6c33a9 Magicjack LP +6c3838 Marking System Technology Co., Ltd. +6c3845 Fiberhome Telecommunication Technologies Co.,LTD +6c38a1 Ubee Interactive Co., Limited +6c391d Beijing ZhongHuaHun Network Information center +6c3a84 Shenzhen Aero-Startech. Co.Ltd +6c3b6b Routerboard.com +6c3be5 Hewlett Packard +6c3c53 SoundHawk Corp +6c3e6d Apple, Inc. +6c3e9c KE Knestel Elektronik GmbH +6c4008 Apple, Inc. +6c40c6 Nimbus Data, Inc. +6c416a Cisco Systems, Inc +6c4418 Zappware +6c4598 Antex Electronic Corp. +6c49c1 o2ones Co., Ltd. +6c4a39 BITA +6c4b7f Vossloh-Schwabe Deutschland GmbH +6c4b90 LiteON +6c4d51 Shenzhen Ceres Technology Co., Ltd. +6c4d73 Apple, Inc. +6c4e86 Third Millennium Systems Ltd. +6c504d Cisco Systems, Inc +6c54cd LAMPEX ELECTRONICS LIMITED +6c5697 Amazon Technologies Inc. +6c5779 Aclima, Inc. +6c5940 MERCURY COMMUNICATION TECHNOLOGIES CO.,LTD. +6c5976 Shanghai Tricheer Technology Co.,Ltd. +6c5a34 Shenzhen Haitianxiong Electronic Co., Ltd. +6c5ab5 TCL Technoly Electronics (Huizhou) Co., Ltd. +6c5c14 GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD +6c5c3d IEEE Registration Authority +6c5cde SunReports, Inc. +6c5d63 ShenZhen Rapoo Technology Co., Ltd. +6c5e3b Cisco Systems, Inc +6c5e7a Ubiquitous Internet Telecom Co., Ltd +6c5f1c Lenovo Mobile Communication Technology Ltd. +6c60eb ZHI YUAN ELECTRONICS CO., LIMITED +6c6126 Rinicom Holdings +6c626d Micro-Star INT'L CO., LTD +6c641a Penguin Computing +6c6cd3 Cisco Systems, Inc +6c6efe Core Logic Inc. +6c6f18 Stereotaxis, Inc. +6c7039 Novar GmbH +6c709f Apple, Inc. +6c710d Cisco Systems, Inc +6c71bd EZELINK TELECOM +6c71d9 AzureWave Technology Inc. +6c7220 D-Link International +6c72e7 Apple, Inc. +6c750d WiFiSONG +6c7660 KYOCERA CORPORATION +6c81fe Mitsuba Corporation +6c8336 Samsung Electronics Co.,Ltd +6c8366 Nanjing SAC Power Grid Automation Co., Ltd. +6c8686 Technonia +6c8814 Intel Corporate +6c8aec Nantong Coship Electronics Co., Ltd. +6c8b2f zte corporation +6c8bd3 Cisco Systems, Inc +6c8cdb Otus Technologies Ltd +6c8d65 Wireless Glue Networks, Inc. +6c8dc1 Apple, Inc. +6c8fb5 Microsoft Mobile Oy +6c90b1 SanLogic Inc +6c92bf Inspur Electronic Information Industry Co.,Ltd. +6c9354 Yaojin Technology (Shenzhen) Co., LTD. +6c94f8 Apple, Inc. +6c9522 Scalys +6c96cf Apple, Inc. +6c98eb Riverbed Technology, Inc. +6c9989 Cisco Systems, Inc +6c9ac9 Valentine Research, Inc. +6c9b02 Nokia Corporation +6c9bc0 Chemoptics Inc. +6c9ce9 Nimble Storage +6c9ced Cisco Systems, Inc +6c9e7c Fiberhome Telecommunication Technologies Co.,LTD +6ca100 Intel Corporate +6ca604 ARRIS Group, Inc. +6ca682 EDAM information & communications +6ca75f zte corporation +6ca780 Nokia Corporation +6ca7fa YOUNGBO ENGINEERING INC. +6ca849 Avaya Inc +6ca858 Fiberhome Telecommunication Technologies Co.,LTD +6ca906 Telefield Ltd +6ca928 HMD Global Oy +6ca936 DisplayLink (UK) Ltd +6ca96f TransPacket AS +6caab3 Ruckus Wireless +6cab05 Cisco Systems, Inc +6cab31 Apple, Inc. +6cab4d Digital Payment Technologies +6cac60 Venetex Corp +6cad3f Hubbell Building Automation, Inc. +6cadef KZ Broadband Technologies, Ltd. +6cadf8 AzureWave Technology Inc. +6cae8b IBM Corporation +6caf15 Webasto SE +6cb0ce NETGEAR +6cb227 Sony Video & Sound Products Inc. +6cb2ae Cisco Systems, Inc +6cb311 Shenzhen Lianrui Electronics Co.,Ltd +6cb350 Anhui comhigher tech co.,ltd +6cb4a7 Landauer, Inc. +6cb56b HUMAX Co., Ltd. +6cb6ca DIVUS GmbH +6cb749 HUAWEI TECHNOLOGIES CO.,LTD +6cb7f4 Samsung Electronics Co.,Ltd +6cb9c5 Delta Networks, Inc. +6cbee9 Alcatel-Lucent IPD +6cbfb5 Noon Technology Co., Ltd +6cc147 Xiamen Hanin Electronic Technology Co., Ltd +6cc1d2 ARRIS Group, Inc. +6cc217 Hewlett Packard +6cc26b Apple, Inc. +6cc374 Texas Instruments +6cc4d5 HMD Global Oy +6cc7ec SAMSUNG ELECTRO-MECHANICS(THAILAND) +6cca08 ARRIS Group, Inc. +6cd032 LG Electronics +6cd146 FRAMOS GmbH +6cd1b0 WING SING ELECTRONICS HONG KONG LIMITED +6cd2ba zte corporation +6cd68a LG Electronics (Mobile Communications) +6cd71f GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD +6cdc6a Promethean Limited +6cdd30 Cisco Systems, Inc +6cdffb IEEE Registration Authority +6ce01e Modcam AB +6ce0b0 SOUND4 +6ce3b6 Nera Telecommunications Ltd. +6ce4ce Villiger Security Solutions AG +6ce4da NEC Platforms, Ltd. +6ce85c Apple, Inc. +6ce873 TP-LINK TECHNOLOGIES CO.,LTD. +6ce8c6 Earda Technologies co Ltd +6ce907 Nokia Corporation +6ce983 Gastron Co., LTD. +6cebb2 Dongguan Sen DongLv Electronics Co.,Ltd +6cec5a Hon Hai Precision Ind. CO.,Ltd. +6ceca1 SHENZHEN CLOU ELECTRONICS CO. LTD. +6ceceb Texas Instruments +6ced51 NEXCONTROL Co.,Ltd +6cefc6 SHENZHEN TWOWING TECHNOLOGIES CO.,LTD. +6cf049 GIGA-BYTE TECHNOLOGY CO.,LTD. +6cf17e Zhejiang Uniview Technologies Co.,Ltd. +6cf373 Samsung Electronics Co.,Ltd +6cf37f Aruba, a Hewlett Packard Enterprise Company +6cf5e8 Mooredoll Inc. +6cf97c Nanoptix Inc. +6cf9d2 CHENGDU POVODO ELECTRONIC TECHNOLOGY CO., LTD +6cfa58 Avaya Inc +6cfa89 Cisco Systems, Inc +6cfaa7 AMPAK Technology, Inc. +6cfdb9 Proware Technologies Co Ltd. +6cffbe MPB Communications Inc. +700136 FATEK Automation Corporation +7001b5 Cisco Systems, Inc +700258 01DB-METRAVIB +70037e Technicolor CH USA Inc. +700433 California Things Inc. +700514 LG Electronics (Mobile Communications) +7006ac Eastcompeace Technology Co., Ltd +700b01 Sagemcom Broadband SAS +700b4f Cisco Systems, Inc +700bc0 Dewav Technology Company +700f6a Cisco Systems, Inc +700fc7 SHENZHEN IKINLOOP TECHNOLOGY CO.,LTD. +700fec Poindus Systems Corp. +70105c Cisco Systems, Inc +70106f Hewlett Packard Enterprise +701124 Apple, Inc. +7011ae Music Life LTD +701404 Limited Liability Company +7014a6 Apple, Inc. +70169f EtherCAT Technology Group +70188b Hon Hai Precision Ind. Co.,Ltd. +7018a7 Cisco Systems, Inc +70192f HUAWEI TECHNOLOGIES CO.,LTD +701a04 Liteon Technology Corporation +701aed ADVAS CO., LTD. +701bfb Integrated Device Technology (Malaysia) Sdn. Bhd. +701ce7 Intel Corporate +701d08 99IOT Shenzhen co.,ltd +701d7f Comtech Technology Co., Ltd. +701dc4 NorthStar Battery Company, LLC +701e68 Hanna Instruments, Inc. +701f53 Cisco Systems, Inc +702084 Hon Hai Precision Ind. Co., Ltd. +702393 fos4X GmbH +702526 Nokia +702559 CyberTAN Technology Inc. +702605 SONY Visual Products Inc. +70288b Samsung Electronics Co.,Ltd +702900 Shenzhen ChipTrip Technology Co,Ltd +702a7d EpSpot AB +702ad5 Samsung Electronics Co.,Ltd +702b1d E-Domus International Limited +702c1f Wisol +702d84 i4C Innovations +702dd1 Newings Communication CO., LTD. +702e22 zte corporation +702e80 DIEHL Connectivity Solutions +702ed9 Guangzhou Shiyuan Electronics Co., Ltd. +702f4b PolyVision Inc. +702f97 Aava Mobile Oy +703018 Avaya Inc +70305d Ubiquoss Inc +70305e Nanjing Zhongke Menglian Information Technology Co.,LTD +703187 ACX GmbH +7032d5 Athena Wireless Communications Inc +703509 Cisco Systems, Inc +703811 Invensys Rail +7038b4 Low Tech Solutions +7038ee Avaya Inc +703a0e Aruba, a Hewlett Packard Enterprise Company +703a51 Xiaomi Communications Co Ltd +703a73 Shenzhen Sundray Technologies Company Limited +703acb Google, Inc. +703ad8 Shenzhen Afoundry Electronic Co., Ltd +703c03 RadiAnt Co.,Ltd +703c39 SEAWING Kft +703c69 Apple, Inc. +703d15 Hangzhou H3C Technologies Co., Limited +703eac Apple, Inc. +7041b7 Edwards Lifesciences LLC +70441c SHENZHEN KAIFA TECHNOLOGY CO.,LTD. +704642 CHYNG HONG ELECTRONIC CO., LTD. +7047e9 vivo Mobile Communication Co., Ltd. +70480f Apple, Inc. +7048f7 Nintendo Co.,Ltd +704aae Xstream Flow (Pty) Ltd +704ae4 Rinstrum Pty Ltd +704ca5 Fortinet, Inc. +704ced TMRG, Inc. +704d7b ASUSTek COMPUTER INC. +704e01 KWANGWON TECH CO., LTD. +704e66 SHENZHEN FAST TECHNOLOGIES CO.,LTD +704f08 Shenzhen Huisheng Information Technology Co., Ltd. +704f57 TP-LINK TECHNOLOGIES CO.,LTD. +704fb8 ARRIS Group, Inc. +7050af BSkyB Ltd +7052c5 Avaya Inc +70533f Alfa Instrumentos Eletronicos Ltda. +705425 ARRIS Group, Inc. +7054b4 Vestel Elektronik San ve Tic. A.Ş. +7054d2 PEGATRON CORPORATION +7054f5 HUAWEI TECHNOLOGIES CO.,LTD +7055f8 Cerebras Systems Inc +705681 Apple, Inc. +7057bf New H3C Technologies Co., Ltd +705812 Panasonic Corporation AVC Networks Company +705896 InShow Technology +705957 Medallion Instrumentation Systems +705986 OOO TTV +705a0f Hewlett Packard +705a9e Technicolor CH USA Inc. +705aac Samsung Electronics Co.,Ltd +705ab6 COMPAL INFORMATION (KUNSHAN) CO., LTD. +705b2e M2Communication Inc. +705cad Konami Gaming Inc +705dcc EFM Networks +705e55 Realme Chongqing MobileTelecommunications Corp Ltd +705eaa Action Target, Inc. +7060de LaVision GmbH +706173 Calantec GmbH +7062b8 D-Link International +706417 ORBIS TECNOLOGIA ELECTRICA S.A. +706582 Suzhou Hanming Technologies Co., Ltd. +7065a3 Kandao lightforge Co., Ltd. +70661b Sonova AG +706879 Saijo Denki International Co., Ltd. +70695a Cisco Systems, Inc +706bb9 Cisco Systems, Inc +706d15 Cisco Systems, Inc +706dec Wifi-soft LLC +706e6d Cisco Systems, Inc +706f81 Private +70700d Apple, Inc. +70704c Purple Communications, Inc +70708b Cisco Systems, Inc +7071b3 Brain Corporation +7071bc PEGATRON CORPORATION +70720d Lenovo Mobile Communication Technology Ltd. +70723c HUAWEI TECHNOLOGIES CO.,LTD +7072cf EdgeCore Networks +7073cb Apple, Inc. +707630 ARRIS Group, Inc. +7076dd Oxyguard International A/S +7076f0 LevelOne Communications (India) Private Limited +7076ff KERLINK +707781 Hon Hai Precision Ind. Co.,Ltd. +70788b vivo Mobile Communication Co., Ltd. +707938 Wuxi Zhanrui Electronic Technology Co.,LTD +707990 HUAWEI TECHNOLOGIES CO.,LTD +7079b3 Cisco Systems, Inc +707be8 HUAWEI TECHNOLOGIES CO.,LTD +707c18 ADATA Technology Co., Ltd +707c69 Avaya Inc +707d95 Shenzhen City LinwlanTechnology Co. Ltd. +707db9 Cisco Systems, Inc +707e43 ARRIS Group, Inc. +707ede NASTEC LTD. +708105 Cisco Systems, Inc +7081eb Apple, Inc. +70820e as electronics GmbH +70828e OleumTech Corporation +708540 Skyworth Digital Technology(Shenzhen) Co.,Ltd +7085c2 ASRock Incorporation +7085c6 ARRIS Group, Inc. +7086c1 Texas Instruments +70879e Beken Corporation +70884d JAPAN RADIO CO., LTD. +7089cc China Mobile Group Device Co.,Ltd. +708a09 HUAWEI TECHNOLOGIES CO.,LTD +708b78 citygrow technology co., ltd +708bcd ASUSTek COMPUTER INC. +708d09 Nokia Corporation +70918f Weber-Stephen Products LLC +7091f3 Universal Electronics, Inc. +709383 Intelligent Optical Network High Tech CO.,LTD. +7093f8 Space Monkey, Inc. +709756 Happyelectronics Co.,Ltd +70991c Shenzhen Honesty Electronics Co.,Ltd +709a0b Italian Institute of Technology +709ba5 Shenzhen Y&D Electronics Co.,LTD. +709bfc Bryton Inc. +709c8f Nero AG +709e29 Sony Interactive Entertainment Inc. +709e86 X6D Limited +709f2d zte corporation +709fa9 TECNO MOBILE LIMITED +70a191 Trendsetter Medical, LLC +70a2b3 Apple, Inc. +70a41c Advanced Wireless Dynamics S.L. +70a66a Prox Dynamics AS +70a84c MONAD., Inc. +70a8e3 HUAWEI TECHNOLOGIES CO.,LTD +70aab2 BlackBerry RTS +70acd7 Shenzhen YOUHUA Technology Co., Ltd +70ad54 Malvern Instruments Ltd +70af24 TP Vision Belgium NV +70af25 Nishiyama Industry Co.,LTD. +70af6a SHENZHEN FENGLIAN TECHNOLOGY CO., LTD. +70b035 Shenzhen Zowee Technology Co., Ltd +70b08c Shenou Communication Equipment Co.,Ltd +70b14e ARRIS Group, Inc. +70b265 Hiltron s.r.l. +70b317 Cisco Systems, Inc +70b3d5 IEEE Registration Authority +70b599 Embedded Technologies s.r.o. +70b7aa vivo Mobile Communication Co., Ltd. +70b7e2 Jiangsu Miter Technology Co.,Ltd. +70b921 Fiberhome Telecommunication Technologies Co.,LTD +70baef Hangzhou H3C Technologies Co., Limited +70bbe9 Xiaomi Communications Co Ltd +70bc10 Microsoft Corporation +70bf3e Charles River Laboratories +70bf92 GN Audio A/S +70c6ac Bosch Automotive Aftermarket +70c76f INNO S +70c7f2 HUAWEI TECHNOLOGIES CO.,LTD +70c833 Wirepas Oy +70c94e Liteon Technology Corporation +70c9c6 Cisco Systems, Inc +70ca4d Shenzhen lnovance Technology Co.,Ltd. +70ca9b Cisco Systems, Inc +70cd60 Apple, Inc. +70cd91 TERACOM TELEMATICA S.A +70d081 Beijing Netpower Technologies Inc. +70d313 HUAWEI TECHNOLOGIES CO.,LTD +70d379 Cisco Systems, Inc +70d4f2 RIM +70d57e Scalar Corporation +70d5e7 Wellcore Corporation +70d6b6 Metrum Technologies +70d880 Upos System sp. z o.o. +70d923 vivo Mobile Communication Co., Ltd. +70d931 Cambridge Industries(Group) Co.,Ltd. +70da9c TECSEN +70db98 Cisco Systems, Inc +70dda1 Tellabs +70dda8 GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD +70dee2 Apple, Inc. +70def9 FAI WAH INTERNATIONAL (HONG KONG) LIMITED +70df2f Cisco Systems, Inc +70e027 HONGYU COMMUNICATION TECHNOLOGY LIMITED +70e139 3view Ltd +70e1fd FLEXTRONICS +70e24c SAE IT-systems GmbH & Co. KG +70e284 Wistron Infocomm (Zhongshan) Corporation +70e422 Cisco Systems, Inc +70e56e Texas Instruments +70e72c Apple, Inc. +70e843 Beijing C&W Optical Communication Technology Co.,Ltd. +70ea1a Cisco Systems, Inc +70ece4 Apple, Inc. +70ee50 Netatmo +70eea3 Eoptolink Technology Inc. Ltd, +70ef00 Apple, Inc. +70f087 Apple, Inc. +70f11c Shenzhen Ogemray Technology Co.,Ltd +70f176 Data Modul AG +70f196 Actiontec Electronics, Inc +70f1a1 Liteon Technology Corporation +70f1e5 Xetawave LLC +70f220 Actiontec Electronics, Inc +70f35a Cisco Systems, Inc +70f395 Universal Global Scientific Industrial Co., Ltd. +70f754 AMPAK Technology,Inc. +70f82b DWnet Technologies(Suzhou) Corporation +70f8e7 IEEE Registration Authority +70f927 Samsung Electronics Co.,Ltd +70f96d Hangzhou H3C Technologies Co., Limited +70fc8c OneAccess SA +70fc8f FREEBOX SAS +70fd45 HUAWEI TECHNOLOGIES CO.,LTD +70fd46 Samsung Electronics Co.,Ltd +70ff5c Cheerzing Communication(Xiamen)Technology Co.,Ltd +70ff76 Texas Instruments +7403bd BUFFALO.INC +74042b Lenovo Mobile Communication (Wuhan) Company Limited +7405a5 TP-LINK TECHNOLOGIES CO.,LTD. +740abc LightwaveRF Technology Ltd +740edb Optowiz Co., Ltd +7412bb Fiberhome Telecommunication Technologies Co.,LTD +741489 SRT Wireless +7415e2 Tri-Sen Systems Corporation +741865 Shanghai DareGlobal Technologies Co.,Ltd +7419f8 IEEE Registration Authority +741ae0 IEEE Registration Authority +741bb2 Apple, Inc. +741c27 ITEL MOBILE LIMITED +741e93 Fiberhome Telecommunication Technologies Co.,LTD +741f4a Hangzhou H3C Technologies Co., Limited +741f79 YOUNGKOOK ELECTRONICS CO.,LTD +742344 Xiaomi Communications Co Ltd +74258a Hangzhou H3C Technologies Co., Limited +7426ac Cisco Systems, Inc +74273c ChangYang Technology (Nanjing) Co., LTD +7427ea Elitegroup Computer Systems Co.,Ltd. +742857 Mayfield Robotics +7429af Hon Hai Precision Ind. Co.,Ltd. +742b0f Infinidat Ltd. +742b62 FUJITSU LIMITED +742d0a Norfolk Elektronik AG +742edb Perinet GmbH +742efc DirectPacket Research, Inc, +742f68 AzureWave Technology Inc. +743170 Arcadyan Technology Corporation +743256 NT-ware Systemprg GmbH +743400 MTG Co., Ltd. +7434ae this is engineering Inc. +74366d Vodafone Italia S.p.A. +74372f Tongfang Shenzhen Cloudcomputing Technology Co.,Ltd +74373b UNINET Co.,Ltd. +743889 ANNAX Anzeigesysteme GmbH +7438b7 CANON INC. +743a65 NEC Corporation +743c18 Taicang T&W Electronics +743e2b Ruckus Wireless +743ecb Gentrice tech +7440bb Hon Hai Precision Ind. Co.,Ltd. +7440be LG Innotek +744401 NETGEAR +74458a Samsung Electronics Co.,Ltd +7445ce CRESYN +7446a0 Hewlett Packard +744aa4 zte corporation +744be9 EXPLORER HYPERTECH CO.,LTD +744d28 Routerboard.com +744d79 Arrive Systems Inc. +7451ba Xiaomi Communications Co Ltd +745327 COMMSEN CO., LIMITED +745427 SHENZHEN FAST TECHNOLOGIES CO.,LTD +74547d Cisco SPVTG +745612 ARRIS Group, Inc. +745798 TRUMPF Laser GmbH + Co. KG +745909 HUAWEI TECHNOLOGIES CO.,LTD +745933 Danal Entertainment +745aaa HUAWEI TECHNOLOGIES CO.,LTD +745bc5 IEEE Registration Authority +745c4b GN Audio A/S +745c9f TCT mobile ltd +745e1c PIONEER CORPORATION +745f00 Samsung Semiconductor Inc. +745f90 LAM Technologies +745fae TSL PPL +7460fa HUAWEI TECHNOLOGIES CO.,LTD +74614b Chongqing Huijiatong Information Technology Co., Ltd. +7463df VTS GmbH +7465d1 Atlinks +746630 T:mi Ytti +7467f7 Extreme Networks, Inc. +746a3a Aperi Corporation +746a89 Rezolt Corporation +746a8f VS Vision Systems GmbH +746b82 MOVEK +746bab GUANGDONG ENOK COMMUNICATION CO., LTD +746ee4 Asia Vital Components Co.,Ltd. +746f19 ICARVISIONS (SHENZHEN) TECHNOLOGY CO., LTD. +746f3d Contec GmbH +746ff7 Wistron Neweb Corporation +7470fd Intel Corporate +74721e Edison Labs Inc. +7472b0 Guangzhou Shiyuan Electronics Co., Ltd. +7472f2 Chipsip Technology Co., Ltd. +747336 MICRODIGTAL Inc +747548 Amazon Technologies Inc. +747818 Jurumani Solutions +747b7a ETH Inc. +747d24 Phicomm (Shanghai) Co., Ltd. +747db6 Aliwei Communications, Inc +747e1a Red Embedded Design Limited +747e2d Beijing Thomson CITIC Digital Technology Co. LTD. +748114 Apple, Inc. +74819a PT. Hartono Istana Teknologi +7483c2 Ubiquiti Networks Inc. +7483ef Arista Networks +7484e1 Dongguan Haoyuan Electronics Co.,Ltd +74852a PEGATRON CORPORATION +7485c4 New H3C Technologies Co., Ltd +74860b Cisco Systems, Inc +74867a Dell Inc. +7487a9 OCT Technology Co., Ltd. +7487bb Ciena Corporation +74882a HUAWEI TECHNOLOGIES CO.,LTD +74888b ADB Broadband Italia +7488bb Cisco Systems, Inc +748a0d ARRIS Group, Inc. +748a69 Korea Image Technology Co., Ltd +748b34 Shanghai Smart System Technology Co., Ltd +748d08 Apple, Inc. +748e08 Bestek Corp. +748ef8 Brocade Communications Systems, Inc. +748f1b MasterImage 3D +748f4d MEN Mikro Elektronik GmbH +749050 Renesas Electronics Corporation +74911a Ruckus Wireless +7491bd Four systems Co.,Ltd. +7493a4 Zebra Technologies Corp. +74943d AgJunction +7495ec ALPS ELECTRIC CO., LTD. +749637 Todaair Electronic Co., Ltd +749781 zte corporation +749975 IBM Corporation +749c52 Huizhou Desay SV Automotive Co., Ltd. +749ce3 KodaCloud Canada, Inc +749d79 Sercomm Corporation. +749d8f HUAWEI TECHNOLOGIES CO.,LTD +749ddc 2Wire Inc +749ea5 OHSUNG +749eaf Apple, Inc. +749ef5 Samsung Electronics Co.,Ltd +74a02f Cisco Systems, Inc +74a063 HUAWEI TECHNOLOGIES CO.,LTD +74a2e6 Cisco Systems, Inc +74a34a ZIMI CORPORATION +74a4a7 QRS Music Technologies, Inc. +74a4b5 Powerleader Science and Technology Co. Ltd. +74a528 HUAWEI TECHNOLOGIES CO.,LTD +74a722 LG Electronics (Mobile Communications) +74a78e zte corporation +74ac5f Qiku Internet Network Scientific (Shenzhen) Co., Ltd. +74adb7 China Mobile Group Device Co.,Ltd. +74ae76 iNovo Broadband, Inc. +74b00c Network Video Technologies, Inc +74b472 CIESSE +74b57e zte corporation +74b587 Apple, Inc. +74b91e Nanjing Bestway Automation System Co., Ltd +74b9eb JinQianMao Technology Co.,Ltd. +74badb Longconn Electornics(shenzhen)Co.,Ltd +74bbd3 Shenzhen xeme Communication Co., Ltd. +74be08 ATEK Products, LLC +74bfa1 HYUNTECK +74bfb7 Nusoft Corporation +74bfc0 CANON INC. +74c14f HUAWEI TECHNOLOGIES CO.,LTD +74c17d Infinix mobility limited +74c246 Amazon Technologies Inc. +74c330 SHENZHEN FAST TECHNOLOGIES CO.,LTD +74c621 Zhejiang Hite Renewable Energy Co.,LTD +74c63b AzureWave Technology Inc. +74c99a Ericsson AB +74c9a3 Fiberhome Telecommunication Technologies Co.,LTD +74ca25 Calxeda, Inc. +74cc39 Fiberhome Telecommunication Technologies Co.,LTD +74cd0c Smith Myers Communications Ltd. +74ce56 Packet Force Technology Limited Company +74d02b ASUSTek COMPUTER INC. +74d0dc Ericsson AB +74d21d HUAWEI TECHNOLOGIES CO.,LTD +74d435 GIGA-BYTE TECHNOLOGY CO.,LTD. +74d637 Amazon Technologies Inc. +74d675 WYMA Tecnologia +74d6ea Texas Instruments +74d7ca Panasonic Corporation Automotive +74d850 Evrisko Systems +74da38 Edimax Technology Co. Ltd. +74da88 TP-LINK TECHNOLOGIES CO.,LTD. +74dada D-Link International +74daea Texas Instruments +74dbd1 Ebay Inc +74de2b Liteon Technology Corporation +74dfbf Liteon Technology Corporation +74e06e Ergophone GmbH +74e14a IEEE Registration Authority +74e182 Texas Instruments +74e19a Fiberhome Telecommunication Technologies Co.,LTD +74e1b6 Apple, Inc. +74e277 Vizmonet Pte Ltd +74e28c Microsoft Corporation +74e2f5 Apple, Inc. +74e424 APISTE CORPORATION +74e50b Intel Corporate +74e537 RADSPIN +74e543 Liteon Technology Corporation +74e5f9 Intel Corporate +74e60f TECNO MOBILE LIMITED +74e6e2 Dell Inc. +74e7c6 ARRIS Group, Inc. +74ea3a TP-LINK TECHNOLOGIES CO.,LTD. +74eac8 New H3C Technologies Co., Ltd +74eacb New H3C Technologies Co., Ltd +74eae8 ARRIS Group, Inc. +74eb80 Samsung Electronics Co.,Ltd +74ec42 Fiberhome Telecommunication Technologies Co.,LTD +74ecf1 Acumen +74ee2a SHENZHEN BILIAN ELECTRONIC CO.,LTD +74f06d AzureWave Technology Inc. +74f07d BnCOM Co.,Ltd +74f102 Beijing HCHCOM Technology Co., Ltd +74f413 Maxwell Forest +74f612 ARRIS Group, Inc. +74f61c HTC Corporation +74f661 Schneider Electric Fire & Security Oy +74f726 Neuron Robotics +74f737 KCE +74f85d Berkeley Nucleonics Corp +74f8db IEEE Registration Authority +74f91a Onface +74fda0 Compupal (Group) Corporation +74fe48 ADVANTECH CO., LTD. +74ff4c Skyworth Digital Technology(Shenzhen) Co.,Ltd +74ff7d Wren Sound Systems, LLC +78009e Samsung Electronics Co.,Ltd +78028f Adaptive Spectrum and Signal Alignment (ASSIA), Inc. +7802b1 Cisco Systems, Inc +7802b7 ShenZhen Ultra Easy Technology CO.,LTD +7802f8 Xiaomi Communications Co Ltd +780473 Texas Instruments +780541 Queclink Wireless Solutions Co., Ltd +78055f Shenzhen WYC Technology Co., Ltd. +780738 Z.U.K. Elzab S.A. +780ac7 Baofeng TV Co., Ltd. +780cb8 Intel Corporate +780cf0 Cisco Systems, Inc +780ed1 TRUMPF Werkzeugmaschinen GmbH+Co.KG +780f77 HangZhou Gubei Electronics Technology Co.,Ltd +781185 NBS Payment Solutions Inc. +7811dc XIAOMI Electronics,CO.,LTD +7812b8 ORANTEK LIMITED +781735 Nokia Shanghai Bell Co., Ltd. +781881 AzureWave Technology Inc. +78192e NASCENT Technology +7819f7 Juniper Networks +781c5a SHARP Corporation +781d4a zte corporation +781dba HUAWEI TECHNOLOGIES CO.,LTD +781dfd Jabil Inc +781fdb Samsung Electronics Co.,Ltd +782079 ID Tech +78223d Affirmed Networks +782327 Samsung Electronics Co.,Ltd +7823ae ARRIS Group, Inc. +7824af ASUSTek COMPUTER INC. +782544 Omnima Limited +78257a LEO Innovation Lab +7825ad Samsung Electronics Co.,Ltd +7828ca Sonos, Inc. +7829ed ASKEY COMPUTER CORP +782a79 Integrated Device Technology (Malaysia) Sdn. Bhd. +782bcb Dell Inc. +782c29 New H3C Technologies Co., Ltd +782d7e TRENDnet, Inc. +782eef Nokia Corporation +782f17 Xlab Co.,Ltd +78303b Stephen Technologies Co.,Limited +7830e1 UltraClenz, LLC +78312b zte corporation +7831c1 Apple, Inc. +78321b D-Link International +78324f Millennium Group, Inc. +7835a0 Zurn Industries LLC +783607 Cermate Technologies Inc. +783690 Yulong Computer Telecommunication Scientific (Shenzhen) Co.,Ltd +7836cc GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD +783a84 Apple, Inc. +783ce3 Kai-EE +783d5b TELNET Redes Inteligentes S.A. +783e53 BSkyB Ltd +783f15 EasySYNC Ltd. +7840e4 Samsung Electronics Co.,Ltd +784405 FUJITU(HONG KONG) ELECTRONIC Co.,LTD. +784476 Zioncom Electronics (Shenzhen) Ltd. +7844fd TP-LINK TECHNOLOGIES CO.,LTD. +784501 Biamp Systems +784561 CyberTAN Technology Inc. +7845c4 Dell Inc. +7846c4 DAEHAP HYPER-TECH +78471d Samsung Electronics Co.,Ltd +7847e3 SICHUAN TIANYI COMHEART TELECOM CO.,LTD +784859 Hewlett Packard +78491d The Will-Burt Company +784b08 f.robotics acquisitions ltd +784b87 Murata Manufacturing Co., Ltd. +784f43 Apple, Inc. +78510c LiveU Ltd. +78521a Samsung Electronics Co.,Ltd +78524a Ensenso GmbH +785262 Shenzhen Hojy Software Co., Ltd. +785364 SHIFT GmbH +7853f2 ROXTON Ltd. +78542e D-Link International +785517 SankyuElectronics +785712 Mobile Integration Workgroup +785860 HUAWEI TECHNOLOGIES CO.,LTD +7858f3 Vachen Co.,Ltd +78593e RAFI GmbH & Co.KG +78595e Samsung Electronics Co.,Ltd +785968 Hon Hai Precision Ind. Co.,Ltd. +785c28 Prime Motion Inc. +785c72 Hioso Technology Co., Ltd. +785dc8 LG Electronics +785f4c Argox Information Co., Ltd. +78617c MITSUMI ELECTRIC CO.,LTD. +786256 HUAWEI TECHNOLOGIES CO.,LTD +7864e6 Green Motive Technology Limited +786559 Sagemcom Broadband SAS +7866ae ZTEC Instruments, Inc. +7867d7 Apple, Inc. +7868f7 YSTen Technology Co.,Ltd +7869d4 Shenyang Vibrotech Instruments Inc. +786a89 HUAWEI TECHNOLOGIES CO.,LTD +786c1c Apple, Inc. +786d94 Palo Alto Networks +787052 Welotec GmbH +78719c ARRIS Group, Inc. +78725d Cisco Systems, Inc +787b8a Apple, Inc. +787d48 ITEL MOBILE LIMITED +787d53 Aerohive Networks Inc. +787e61 Apple, Inc. +787f62 GiK mbH +788038 FUNAI ELECTRIC CO., LTD. +788102 Sercomm Corporation. +78818f Server Racks Australia Pty Ltd +78843c Sony Corporation +7884ee INDRA ESPACIO S.A. +78870d Unifiedgateways India Private Limited +78886d Apple, Inc. +78888a CDR Sp. z o.o. Sp. k. +788973 CMC +788a20 Ubiquiti Networks Inc. +788b77 Standar Telecom +788c4d Indyme Solutions, LLC +788c54 Ping Communication +788c77 LEXMARK INTERNATIONAL, INC. +788df7 Hitron Technologies. Inc +788e33 Jiangsu SEUIC Technology Co.,Ltd +78923e Nokia Corporation +78929c Intel Corporate +7894b4 Sercomm Corporation. +789682 zte corporation +789684 ARRIS Group, Inc. +7897c3 DINGXIN INFORMATION TECHNOLOGY CO.,LTD +7898fd Q9 Networks Inc. +78995c Nationz Technologies Inc +789966 Musilab Electronics (DongGuan)Co.,Ltd. +78998f MEDILINE ITALIA SRL +789c85 August Home, Inc. +789ce7 Shenzhen Aikede Technology Co., Ltd +789ed0 Samsung Electronics Co.,Ltd +789f4c HOERBIGER Elektronik GmbH +789f70 Apple, Inc. +789f87 Siemens AG I IA PP PRM +78a051 iiNet Labs Pty Ltd +78a106 TP-LINK TECHNOLOGIES CO.,LTD. +78a183 Advidia +78a2a0 Nintendo Co., Ltd. +78a351 SHENZHEN ZHIBOTONG ELECTRONICS CO.,LTD +78a3e4 Apple, Inc. +78a504 Texas Instruments +78a5dd Shenzhen Smarteye Digital Electronics Co., Ltd +78a683 Precidata +78a6bd DAEYEON Control&Instrument Co,.Ltd +78a6e1 Brocade Communications Systems, Inc. +78a714 Amphenol +78a7eb 1MORE +78a873 Samsung Electronics Co.,Ltd +78ab60 ABB Australia +78abbb Samsung Electronics Co.,Ltd +78acbf Igneous Systems +78acc0 Hewlett Packard +78ae0c Far South Networks +78af58 GIMASI SA +78afe4 Comau S.p.A +78b213 DWnet Technologies(Suzhou) Corporation +78b28d Beijing Tengling Technology CO.Ltd +78b3b9 ShangHai sunup lighting CO.,LTD +78b3ce Elo touch solutions +78b5d2 Ever Treasure Industrial Limited +78b6c1 AOBO Telecom Co.,Ltd +78b6ec Scuf Gaming International LLC +78b81a INTER SALES A/S +78b84b SICHUAN TIANYI COMHEART TELECOMCO.,LTD +78bad0 Shinybow Technology Co. Ltd. +78baf9 Cisco Systems, Inc +78bc1a Cisco Systems, Inc +78bdbc Samsung Electronics Co.,Ltd +78beb6 Enhanced Vision +78bebd STULZ GmbH +78c1a7 zte corporation +78c2c0 IEEE Registration Authority +78c313 China Mobile Group Device Co.,Ltd. +78c3e9 Samsung Electronics Co.,Ltd +78c40e H&D Wireless +78c4ab Shenzhen Runsil Technology Co.,Ltd +78c5e5 Texas Instruments +78c6bb Innovasic, Inc. +78c881 Sony Interactive Entertainment Inc. +78ca04 Nokia Corporation +78ca39 Apple, Inc. +78ca5e ELNO +78ca83 IEEE Registration Authority +78cb33 DHC Software Co.,Ltd +78cb68 DAEHAP HYPER-TECH +78cc2b SINEWY TECHNOLOGY CO., LTD +78cd8e SMC Networks Inc +78d004 Neousys Technology Inc. +78d129 Vicos +78d294 NETGEAR +78d347 Ericsson AB +78d34f Pace-O-Matic, Inc. +78d38d HONGKONG YUNLINK TECHNOLOGY LIMITED +78d5b5 NAVIELEKTRO KY +78d66f Aristocrat Technologies Australia Pty. Ltd. +78d6b2 Toshiba +78d6f0 SAMSUNG ELECTRO MECHANICS CO., LTD. +78d752 HUAWEI TECHNOLOGIES CO.,LTD +78d75f Apple, Inc. +78d800 IEEE Registration Authority +78d99f NuCom HK Ltd. +78da07 Zhejiang Tmall Technology Co., Ltd. +78da6e Cisco Systems, Inc +78daa2 Cynosure Technologies Co.,Ltd +78dab3 GBO Technology +78db2f Texas Instruments +78dd08 Hon Hai Precision Ind. Co.,Ltd. +78dd12 Arcadyan Corporation +78ddd6 c-scape +78ddd9 Guangzhou Shiyuan Electronics Co., Ltd. +78dee4 Texas Instruments +78e103 Amazon Technologies Inc. +78e2bd Vodafone Automotive S.p.A. +78e3b5 Hewlett Packard +78e400 Hon Hai Precision Ind. Co.,Ltd. +78e7d1 Hewlett Packard +78e8b6 zte corporation +78e980 RainUs Co.,Ltd +78eb14 SHENZHEN FAST TECHNOLOGIES CO.,LTD +78eb39 Instituto Nacional de Tecnología Industrial +78ec22 Shanghai Qihui Telecom Technology Co., LTD +78ec74 Kyland-USA +78ef4c Unetconvergence Co., Ltd. +78f29e PEGATRON CORPORATION +78f557 HUAWEI TECHNOLOGIES CO.,LTD +78f5e5 BEGA Gantenbrink-Leuchten KG +78f5fd HUAWEI TECHNOLOGIES CO.,LTD +78f7be Samsung Electronics Co.,Ltd +78f7d0 Silverbrook Research +78f882 LG Electronics (Mobile Communications) +78f944 Private +78f9b4 Nokia +78fc14 Family Zone Cyber Safety Ltd +78fd94 Apple, Inc. +78fe3d Juniper Networks +78fe41 Socus networks +78fee2 Shanghai Diveo Technology Co., Ltd +78ff57 Intel Corporate +78ffca TECNO MOBILE LIMITED +7c010a Texas Instruments +7c0187 Curtis Instruments, Inc. +7c0191 Apple, Inc. +7c02bc Hansung Electronics Co. LTD +7c034c Sagemcom Broadband SAS +7c035e Xiaomi Communications Co Ltd +7c03ab Xiaomi Communications Co Ltd +7c03c9 Shenzhen YOUHUA Technology Co., Ltd +7c03d8 Sagemcom Broadband SAS +7c04d0 Apple, Inc. +7c0507 PEGATRON CORPORATION +7c051e RAFAEL LTD. +7c0623 Ultra Electronics Sonar System Division +7c08d9 Shanghai B-Star Technology Co +7c092b Bekey A/S +7c0a50 J-MEX Inc. +7c0bc6 Samsung Electronics Co.,Ltd +7c0cf6 Guangdong Huiwei High-tech Co., Ltd. +7c0ece Cisco Systems, Inc +7c1015 Brilliant Home Technology, Inc. +7c11be Apple, Inc. +7c11cb HUAWEI TECHNOLOGIES CO.,LTD +7c11cd QianTang Technology +7c1476 Damall Technologies SAS +7c160d Saia-Burgess Controls AG +7c18cd E-TRON Co.,Ltd. +7c1a03 8Locations Co., Ltd. +7c1afc Dalian Co-Edifice Video Technology Co., Ltd +7c1c4e LG Innotek +7c1c68 Samsung Electronics Co.,Ltd +7c1cf1 HUAWEI TECHNOLOGIES CO.,LTD +7c1dd9 Xiaomi Communications Co Ltd +7c1e06 New H3C Technologies Co., Ltd +7c1e52 Microsoft +7c1eb3 2N TELEKOMUNIKACE a.s. +7c2048 KoamTac +7c2064 Alcatel-Lucent IPD +7c21d8 Shenzhen Think Will Communication Technology co., LTD. +7c2302 Samsung Electronics Co.,Ltd +7c240c Telechips, Inc. +7c2586 Juniper Networks +7c2587 chaowifi.com +7c2634 ARRIS Group, Inc. +7c2664 Sagemcom Broadband SAS +7c2a31 Intel Corporate +7c2be1 Shenzhen Ferex Electrical Co.,Ltd +7c2cf3 Secure Electrans Ltd +7c2e0d Blackmagic Design +7c2ebd Google, Inc. +7c2edd Samsung Electronics Co.,Ltd +7c2f80 Gigaset Communications GmbH +7c336e MEG Electronics Inc. +7c3548 Transcend Information +7c3866 Texas Instruments +7c386c Real Time Logic +7c38ad Samsung Electronics Co.,Ltd +7c3920 SSOMA SECURITY +7c3953 zte corporation +7c3bd5 Imago Group +7c3cb6 Shenzhen Homecare Technology Co.,Ltd. +7c3e9d PATECH +7c41a2 Nokia +7c438f E-Band Communications Corp. +7c444c Entertainment Solutions, S.L. +7c4685 Motorola (Wuhan) Mobility Technologies Communication Co., Ltd. +7c477c IEEE Registration Authority +7c48b2 Vida Resources Lte Ltd +7c49b9 Plexus Manufacturing Sdn Bhd +7c49eb XIAOMI Electronics,CO.,LTD +7c4a82 Portsmith LLC +7c4aa8 MindTree Wireless PVT Ltd +7c4b78 Red Sun Synthesis Pte Ltd +7c4c58 Scale Computing, Inc. +7c4ca5 BSkyB Ltd +7c4f7d Sawwave +7c4fb5 Arcadyan Technology Corporation +7c5049 Apple, Inc. +7c50da Private +7c5189 SG Wireless Limited +7c5259 Sichuan Jiuzhou Electronic Technology Co., Ltd. +7c534a Metamako +7c55e7 YSI, Inc. +7c573c Aruba, a Hewlett Packard Enterprise Company +7c574e COBI GmbH +7c5a1c Sophos Ltd +7c5a67 JNC Systems, Inc. +7c5cf8 Intel Corporate +7c604a Avelon +7c6097 HUAWEI TECHNOLOGIES CO.,LTD +7c6166 Amazon Technologies Inc. +7c6193 HTC Corporation +7c6456 Samsung Electronics Co.,Ltd +7c669d Texas Instruments +7c67a2 Intel Corporate +7c696b Atmosic Technologies +7c69f6 Cisco Systems, Inc +7c6ab3 IBC TECHNOLOGIES INC. +7c6ac3 GatesAir, Inc +7c6adb SafeTone Technology Co.,Ltd +7c6af3 Integrated Device Technology (Malaysia) Sdn. Bhd. +7c6b33 Tenyu Tech Co. Ltd. +7c6b52 Tigaro Wireless +7c6b9c GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD +7c6bf7 NTI co., ltd. +7c6c39 PIXSYS SRL +7c6c8f AMS NEVE LTD +7c6d62 Apple, Inc. +7c6da6 Superwave Group LLC +7c6df8 Apple, Inc. +7c6f06 Caterpillar Trimble Control Technologies +7c6ff8 ShenZhen ACTO Digital Video Technology Co.,Ltd. +7c70bc IEEE Registration Authority +7c7176 Wuxi iData Technology Company Ltd. +7c72e4 Unikey Technologies +7c738b Cocoon Alarm Ltd +7c7630 Shenzhen YOUHUA Technology Co., Ltd +7c7635 Intel Corporate +7c7668 HUAWEI TECHNOLOGIES CO.,LTD +7c7673 ENMAS GmbH +7c787e Samsung Electronics Co.,Ltd +7c79e8 PayRange Inc. +7c7a53 Phytrex Technology Corp. +7c7a91 Intel Corporate +7c7b8b Control Concepts, Inc. +7c7be4 Z'SEDAI KENKYUSHO CORPORATION +7c7d3d HUAWEI TECHNOLOGIES CO.,LTD +7c7d41 Jinmuyu Electronics Co., Ltd. +7c822d Nortec +7c8274 Shenzhen Hikeen Technology CO.,LTD +7c8306 Glen Dimplex Nordic as +7c8956 Samsung Electronics Co.,Ltd +7c89c1 Palo Alto Networks +7c8ae1 COMPAL INFORMATION (KUNSHAN) CO., LTD. +7c8bb5 Samsung Electronics Co.,Ltd +7c8bca TP-LINK TECHNOLOGIES CO.,LTD. +7c8d91 Shanghai Hongzhuo Information Technology co.,LTD +7c8ee4 Texas Instruments +7c9122 Samsung Electronics Co.,Ltd +7c942a HUAWEI TECHNOLOGIES CO.,LTD +7c94b2 Philips Healthcare PCCI +7c95b1 Aerohive Networks Inc. +7c95f3 Cisco Systems, Inc +7c96d2 Fihonest communication co.,Ltd +7c9763 Openmatics s.r.o. +7c9a1d Apple, Inc. +7c9a54 Technicolor CH USA Inc. +7c9a9b VSE valencia smart energy +7ca15d GN ReSound A/S +7ca177 HUAWEI TECHNOLOGIES CO.,LTD +7ca237 King Slide Technology CO., LTD. +7ca23e HUAWEI TECHNOLOGIES CO.,LTD +7ca29b D.SignT GmbH & Co. KG +7ca61d MHL, LLC +7ca7b0 SHENZHEN BILIAN ELECTRONIC CO.,LTD +7ca97d Objenious +7cab25 MESMO TECHNOLOGY INC. +7cacb2 Bosch Software Innovations GmbH +7cad74 Cisco Systems, Inc +7cb03e OSRAM GmbH +7cb0c2 Intel Corporate +7cb15d HUAWEI TECHNOLOGIES CO.,LTD +7cb177 Satelco AG +7cb21b Cisco SPVTG +7cb232 Hui Zhou Gaoshengda Technology Co.,LTD +7cb25c Acacia Communications +7cb27d Intel Corporate +7cb542 ACES Technology +7cb59b TP-LINK TECHNOLOGIES CO.,LTD. +7cb733 ASKEY COMPUTER CORP +7cb77b Paradigm Electronics Inc +7cb960 Shanghai X-Cheng telecom LTD +7cbacc IEEE Registration Authority +7cbb6f Cosco Electronics Co., Ltd. +7cbb8a Nintendo Co., Ltd. +7cbc84 IEEE Registration Authority +7cbd06 AE REFUsol +7cbf88 Mobilicom LTD +7cbfb1 ARRIS Group, Inc. +7cc385 HUAWEI TECHNOLOGIES CO.,LTD +7cc3a1 Apple, Inc. +7cc4ef Devialet +7cc537 Apple, Inc. +7cc6c4 Kolff Computer Supplies b.v. +7cc709 SHENZHEN RF-LINK TECHNOLOGY CO.,LTD. +7cc8ab Acro Associates, Inc. +7cc8d0 TIANJIN YAAN TECHNOLOGY CO., LTD. +7cc8d7 Damalisk +7cc926 Wuhan GreeNet Information Service Co.,Ltd. +7cc95a Dell EMC +7ccb0d Antaira Technologies, LLC +7ccbe2 IEEE Registration Authority +7ccc1f SICHUAN TIANYI COMHEART TELECOMCO.,LTD +7cccb8 Intel Corporate +7ccd11 MS-Magnet +7ccd3c Guangzhou Juzing Technology Co., Ltd +7ccfcf Shanghai SEARI Intelligent System Co., Ltd +7cd1c3 Apple, Inc. +7cd30a INVENTEC CORPORATION +7cd566 Amazon Technologies Inc. +7cd661 Xiaomi Communications Co Ltd +7cd762 Freestyle Technology Pty Ltd +7cd844 Enmotus Inc +7cd95c Google, Inc. +7cd9fe New Cosmos Electric Co., Ltd. +7cda84 Dongnian Networks Inc. +7cdb98 ASKEY COMPUTER CORP +7cdd11 Chongqing MAS SCI&TECH.Co.,Ltd +7cdd20 IOXOS Technologies S.A. +7cdd76 Suzhou Hanming Technologies Co., Ltd. +7cdd90 Shenzhen Ogemray Technology Co., Ltd. +7ce044 NEON Inc +7ce1ff Computer Performance, Inc. DBA Digital Loggers, Inc. +7ce2ca Juniper Networks +7ce4aa Private +7ce524 Quirky, Inc. +7ce56b ESEN Optoelectronics Technology Co.,Ltd. +7ce97c ITEL MOBILE LIMITED +7ce9d3 Hon Hai Precision Ind. Co.,Ltd. +7ceb7f Dmet Products Corp. +7cebae Ridgeline Instruments +7cebea ASCT +7cec79 Texas Instruments +7cec9b Fuzhou Teraway Information Technology Co.,Ltd +7ced8d Microsoft +7cef18 Creative Product Design Pty. Ltd. +7cef8a Inhon International Ltd. +7cf05f Apple, Inc. +7cf098 Bee Beans Technologies, Inc. +7cf0ba Linkwell Telesystems Pvt Ltd +7cf31b LG Electronics (Mobile Communications) +7cf429 NUUO Inc. +7cf854 Samsung Electronics Co.,Ltd +7cf90e Samsung Electronics Co.,Ltd +7cf95c U.I. Lapp GmbH +7cfadf Apple, Inc. +7cfc3c Visteon Corporation +7cfd82 GUANGDONG GENIUS TECHNOLOGY CO., LTD. +7cfe28 Salutron Inc. +7cfe4e Shenzhen Safe vision Technology Co.,LTD +7cfe90 Mellanox Technologies, Inc. +7cff4d AVM Audiovisuelles Marketing und Computersysteme GmbH +7cff62 Huizhou Super Electron Technology Co.,Ltd. +80000b Intel Corporate +800010 AT&T +80006e Apple, Inc. +800184 HTC Corporation +80029c Gemtek Technology Co., Ltd. +8002df ORA Inc. +800588 Ruijie Networks Co.,LTD +8005df Montage Technology Group Limited +8007a2 Esson Technology Inc. +800902 Keysight Technologies, Inc. +800a06 COMTEC co.,ltd +800a80 IEEE Registration Authority +800b51 Chengdu XGimi Technology Co.,Ltd +800dd7 Latticework, Inc +800e24 ForgetBox +801382 HUAWEI TECHNOLOGIES CO.,LTD +801440 Sunlit System Technology Corp +8014a8 Guangzhou V-SOLUTION Electronic Technology Co., Ltd. +8016b7 Brunel University +80177d Nortel Networks +801844 Dell Inc. +8018a7 Samsung Electronics Co.,Ltd +801934 Intel Corporate +801967 Shanghai Reallytek Information Technology Co.,Ltd +8019fe JianLing Technology CO., LTD +801daa Avaya Inc +801f02 Edimax Technology Co. Ltd. +801f12 Microchip Technology Inc. +8020af Trade FIDES, a.s. +8020da Sagemcom Broadband SAS +802275 Beijing Beny Wave Technology Co Ltd +802689 D-Link International +802994 Technicolor CH USA Inc. +802aa8 Ubiquiti Networks Inc. +802afa Germaneers GmbH +802bf9 Hon Hai Precision Ind. Co.,Ltd. +802de1 Solarbridge Technologies +802e14 azeti Networks AG +802fde Zurich Instruments AG +8030dc Texas Instruments +8030e0 Hewlett Packard Enterprise +8031f0 Samsung Electronics Co.,Ltd +803253 Intel Corporate +803457 OT Systems Limited +8035c1 Xiaomi Communications Co Ltd +803773 NETGEAR +803896 SHARP Corporation +8038bc HUAWEI TECHNOLOGIES CO.,LTD +8038fd LeapFrog Enterprises, Inc. +8039e5 PATLITE CORPORATION +803a0a Integrated Device Technology (Malaysia) Sdn. Bhd. +803a59 AT&T +803af4 Fiberhome Telecommunication Technologies Co.,LTD +803b2a ABB Xiamen Low Voltage Equipment Co.,Ltd. +803b9a ghe-ces electronic ag +803bf6 LOOK EASY INTERNATIONAL LIMITED +803e48 SHENZHEN GONGJIN ELECTRONICS CO.,LT +803f5d Winstars Technology Ltd +803fd6 bytes at work AG +804126 HUAWEI TECHNOLOGIES CO.,LTD +80414e BBK EDUCATIONAL ELECTRONICS CORP.,LTD. +80427c Adolf Tedsen GmbH & Co. KG +804731 Packet Design, Inc. +8048a5 SICHUAN TIANYI COMHEART TELECOMCO.,LTD +804971 Apple, Inc. +804a14 Apple, Inc. +804b20 Ventilation Control +804e70 Samsung Electronics Co.,Ltd +804e81 Samsung Electronics Co.,Ltd +804f58 ThinkEco, Inc. +80501b Nokia Corporation +805067 W & D TECHNOLOGY CORPORATION +8050f6 ITEL MOBILE LIMITED +80546a SHENZHEN GONGJIN ELECTRONICS CO.,LT +8056f2 Hon Hai Precision Ind. Co.,Ltd. +805719 Samsung Electronics Co.,Ltd +8058c5 NovaTec Kommunikationstechnik GmbH +8058f8 Motorola Mobility LLC, a Lenovo Company +8059fd Noviga +805a04 LG Electronics (Mobile Communications) +805e0c YEALINK(XIAMEN) NETWORK TECHNOLOGY CO.,LTD. +805e4f FN-LINK TECHNOLOGY LIMITED +805ec0 YEALINK(XIAMEN) NETWORK TECHNOLOGY CO.,LTD. +806007 RIM +80615f Beijing Sinead Technology Co., Ltd. +80618f Shenzhen sangfei consumer communications co.,ltd +806459 Nimbus Inc. +80647a Ola Sense Inc +80656d Samsung Electronics Co.,Ltd +8065e9 BenQ Corporation +806629 Prescope Technologies CO.,LTD. +806933 HUAWEI TECHNOLOGIES CO.,LTD +806940 LEXAR CO.,LIMITED +806ab0 Shenzhen TINNO Mobile Technology Corp. +806c1b Motorola Mobility LLC, a Lenovo Company +806c8b KAESER KOMPRESSOREN AG +806cbc NET New Electronic Technology GmbH +806fb0 Texas Instruments +80711f Juniper Networks +80717a HUAWEI TECHNOLOGIES CO.,LTD +807215 BSkyB Ltd +80739f KYOCERA CORPORATION +807459 K's Co.,Ltd. +80751f BSkyB Ltd +807693 Newag SA +807871 ASKEY COMPUTER CORP +8079ae ShanDong Tecsunrise Co.,Ltd +807a7f ABB Genway Xiamen Electrical Equipment CO., LTD +807abf HTC Corporation +807b1e Corsair Memory, Inc. +807b85 IEEE Registration Authority +807d14 HUAWEI TECHNOLOGIES CO.,LTD +807d1b Neosystem Co. Ltd. +807d3a Espressif Inc. +807de3 Chongqing Sichuan Instrument Microcircuit Co.LTD. +807ff8 Juniper Networks +8081a5 TONGQING COMMUNICATION EQUIPMENT (SHENZHEN) Co.,Ltd +808223 Apple, Inc. +808287 ATCOM Technology Co.Ltd. +8084a9 oshkosh Corporation +808698 Netronics Technologies Inc. +8086f2 Intel Corporate +808917 TP-LINK TECHNOLOGIES CO.,LTD. +808a8b vivo Mobile Communication Co., Ltd. +808b5c Shenzhen Runhuicheng Technology Co., Ltd +808c97 Kaonmedia CO., LTD. +808db7 Hewlett Packard Enterprise +808f1d TP-LINK TECHNOLOGIES CO.,LTD. +80912a Lih Rong electronic Enterprise Co., Ltd. +809133 AzureWave Technology Inc. +8091c0 AgileMesh, Inc. +80929f Apple, Inc. +809393 Xapt GmbH +80946c TOKYO RADAR CORPORATION +809621 Lenovo +8096b1 ARRIS Group, Inc. +8096ca Hon Hai Precision Ind. Co.,Ltd. +80971b Altenergy Power System,Inc. +809b20 Intel Corporate +809fab Fiberhome Telecommunication Technologies Co.,LTD +80a036 Shanghai MXCHIP Information Technology Co., Ltd. +80a1ab Intellisis +80a1d7 Shanghai DareGlobal Technologies Co.,Ltd +80a235 Edgecore Networks Corporation +80a589 AzureWave Technology Inc. +80a796 Neurotek LLC +80a85d Osterhout Design Group +80aaa4 USAG +80acac Juniper Networks +80ad16 Xiaomi Communications Co Ltd +80ad67 Kasda Networks Inc +80b03d Apple, Inc. +80b07b zte corporation +80b219 ELEKTRON TECHNOLOGY UK LIMITED +80b234 Technicolor CH USA Inc. +80b289 Forworld Electronics Ltd. +80b32a UK Grid Solutions Ltd +80b575 HUAWEI TECHNOLOGIES CO.,LTD +80b624 IVS +80b686 HUAWEI TECHNOLOGIES CO.,LTD +80b708 Blue Danube Systems, Inc +80b709 Viptela, Inc +80b95c ELFTECH Co., Ltd. +80baac TeleAdapt Ltd +80bae6 Neets +80bbeb Satmap Systems Ltd +80be05 Apple, Inc. +80c16e Hewlett Packard +80c548 Shenzhen Zowee Technology Co.,Ltd +80c5e6 Microsoft Corporation +80c5f2 AzureWave Technology Inc. +80c63f Remec Broadband Wireless , LLC +80c6ab Technicolor CH USA Inc. +80c6ca Endian s.r.l. +80c755 Panasonic Appliances Company +80c7c5 Fiberhome Telecommunication Technologies Co.,LTD +80c862 Openpeak, Inc +80ce62 Hewlett Packard +80ceb1 Theissen Training Systems GmbH +80ceb9 Samsung Electronics Co.,Ltd +80cf41 Lenovo Mobile Communication Technology Ltd. +80d019 Embed, Inc +80d04a Technicolor CH USA Inc. +80d065 CKS Corporation +80d09b HUAWEI TECHNOLOGIES CO.,LTD +80d160 Integrated Device Technology (Malaysia) Sdn. Bhd. +80d18b Hangzhou I'converge Technology Co.,Ltd +80d21d AzureWave Technology Inc. +80d336 CERN +80d433 LzLabs GmbH +80d4a5 HUAWEI TECHNOLOGIES CO.,LTD +80d605 Apple, Inc. +80d733 QSR Automations, Inc. +80da13 eero inc. +80dabc Megafone Limited +80db31 Power Quotient International Co., Ltd. +80e01d Cisco Systems, Inc +80e455 New H3C Technologies Co., Ltd +80e4da IEEE Registration Authority +80e650 Apple, Inc. +80e82c Hewlett Packard +80e86f Cisco Systems, Inc +80ea23 Wistron Neweb Corporation +80ea96 Apple, Inc. +80eaca Dialog Semiconductor Hellas SA +80eb77 Wistron Corporation +80ed2c Apple, Inc. +80ee73 Shuttle Inc. +80f25e Kyynel +80f503 ARRIS Group, Inc. +80f593 IRCO Sistemas de Telecomunicación S.A. +80f62e Hangzhou H3C Technologies Co., Limited +80f8eb RayTight +80fa5b CLEVO CO. +80fb06 HUAWEI TECHNOLOGIES CO.,LTD +80fbf0 Quectel Wireless Solutions Co., Ltd. +80fd7a BLU Products Inc +80ffa8 UNIDIS +84002d PEGATRON CORPORATION +8400d2 Sony Mobile Communications Inc +8401a7 Greyware Automation Products, Inc +8404d2 Kirale Technologies SL +840b2d SAMSUNG ELECTRO MECHANICS CO., LTD. +840b7c Hitron Technologies. Inc +840d8e Espressif Inc. +840f45 Shanghai GMT Digital Technologies Co., Ltd +84100d Motorola Mobility LLC, a Lenovo Company +84119e Samsung Electronics Co.,Ltd +84139f zte corporation +8416f9 TP-LINK TECHNOLOGIES CO.,LTD. +841715 GP Electronics (HK) Ltd. +841766 WEIFANG GOERTEK ELECTRONICS CO.,LTD +8417ef Technicolor CH USA Inc. +841826 Osram GmbH +84183a Ruckus Wireless +841888 Juniper Networks +841b38 Shenzhen Excelsecu Data Technology Co.,Ltd +841b5e NETGEAR +841c70 zte corporation +841e26 KERNEL-I Co.,LTD +842096 SHENZHEN RF-LINK TECHNOLOGY CO.,LTD. +842141 Shenzhen Ginwave Technologies Ltd. +8421f1 HUAWEI TECHNOLOGIES CO.,LTD +84248d Zebra Technologies Inc +842519 Samsung Electronics +84253f silex technology, Inc. +8425a4 Tariox Limited +8425db Samsung Electronics Co.,Ltd +842615 ADB Broadband Italia +84262b Nokia +842690 BEIJING THOUGHT SCIENCE CO.,LTD. +8427ce Corporation of the Presiding Bishop of The Church of Jesus Christ of Latter-day Saints +84285a Saffron Solutions Inc +842914 EMPORIA TELECOM Produktions- und VertriebsgesmbH & Co KG +842999 Apple, Inc. +842b2b Dell Inc. +842b50 Huria Co.,Ltd. +842bbc Modelleisenbahn GmbH +842c80 Sichuan Changhong Electric Ltd. +842e27 Samsung Electronics Co.,Ltd +842f75 Innokas Group +8430e5 SkyHawke Technologies, LLC +84326f GUANGZHOU AVA ELECTRONICS TECHNOLOGY CO.,LTD +8432ea ANHUI WANZTEN P&T CO., LTD +843497 Hewlett Packard +843611 hyungseul publishing networks +843835 Apple, Inc. +843838 SAMSUNG ELECTRO-MECHANICS(THAILAND) +843a4b Intel Corporate +843dc6 Cisco Systems, Inc +843f4e Tri-Tech Manufacturing, Inc. +844076 Drivenets +844167 Apple, Inc. +844464 ServerU Inc +8446fe HUAWEI TECHNOLOGIES CO.,LTD +844765 HUAWEI TECHNOLOGIES CO.,LTD +844823 WOXTER TECHNOLOGY Co. Ltd +844915 vArmour Networks, Inc. +844bb7 Beijing Sankuai Online Technology Co.,Ltd +844bf5 Hon Hai Precision Ind. Co.,Ltd. +844f03 Ablelink Electronics Ltd +84509a Easy Soft TV Co., Ltd +845181 Samsung Electronics Co.,Ltd +8455a5 Samsung Electronics Co.,Ltd +84569c Coho Data, Inc., +845733 Microsoft Corporation +845787 DVR C&C Co., Ltd. +845a81 ffly4u +845b12 HUAWEI TECHNOLOGIES CO.,LTD +845c93 Chabrier Services +845dd7 Shenzhen Netcom Electronics Co.,Ltd +8461a0 ARRIS Group, Inc. +846223 Shenzhen Coship Electronics Co., Ltd. +8462a6 EuroCB (Phils), Inc. +8463d6 Microsoft Corporation +84683e Intel Corporate +846878 Apple, Inc. +846991 Nokia +846a66 Sumitomo Kizai Co.,Ltd. +846aed Wireless Tsukamoto.,co.LTD +846eb1 Park Assist LLC +846fce GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD +847207 I&C Technology +847303 Letv Mobile and Intelligent Information Technology (Beijing) Corporation Ltd. +84742a zte corporation +847460 zte corporation +847616 Addat s.r.o. +847637 HUAWEI TECHNOLOGIES CO.,LTD +847778 Cochlear Limited +84788b Apple, Inc. +8478ac Cisco Systems, Inc +847933 profichip GmbH +847973 Shanghai Baud Data Communication Co.,Ltd. +847a88 HTC Corporation +847beb Dell Inc. +847c9b GD Midea Air-Conditioning Equipment Co.,Ltd. +847d50 Holley Metering Limited +847e40 Texas Instruments +847f3d Integrated Device Technology (Malaysia) Sdn. Bhd. +84802d Cisco Systems, Inc +848094 Meter, Inc. +8482f4 Beijing Huasun Unicreate Technology Co., Ltd +848319 Hangzhou Zero Zero Technology Co., Ltd. +848336 Newrun +848371 Avaya Inc +848433 Paradox Engineering SA +848506 Apple, Inc. +84850a Hella Sonnen- und Wetterschutztechnik GmbH +8485e6 Guangdong Asano Technology CO.,Ltd. +8486f3 Greenvity Communications +8489ad Apple, Inc. +8489ec IEEE Registration Authority +848a8d Cisco Systems, Inc +848bcd IEEE Registration Authority +848d84 Rajant Corporation +848dc7 Cisco SPVTG +848e0c Apple, Inc. +848e96 Embertec Pty Ltd +848edf Sony Mobile Communications Inc +848f69 Dell Inc. +849000 Arnold & Richter Cine Technik +84930c InCoax Networks Europe AB +84948c Hitron Technologies. Inc +849681 Cathay Communication Co.,Ltd +8496d8 ARRIS Group, Inc. +8497b8 Memjet Inc. +849866 Samsung Electronics Co.,Ltd +849a40 Hangzhou Hikvision Digital Technology Co.,Ltd. +849ca6 Arcadyan Technology Corporation +849d64 SMC Corporation +849dc5 Centera Photonics Inc. +849fb5 HUAWEI TECHNOLOGIES CO.,LTD +84a06e Sagemcom Broadband SAS +84a134 Apple, Inc. +84a1d1 Sagemcom Broadband SAS +84a24d Birds Eye Systems Private Limited +84a423 Sagemcom Broadband SAS +84a466 Samsung Electronics Co.,Ltd +84a6c8 Intel Corporate +84a783 Alcatel Lucent +84a788 Perples +84a8e4 HUAWEI TECHNOLOGIES CO.,LTD +84a93e Hewlett Packard +84a991 Cyber Trans Japan Co.,Ltd. +84a9c4 HUAWEI TECHNOLOGIES CO.,LTD +84a9ea Career Technologies USA +84aa9c MitraStar Technology Corp. +84aca4 Beijing Novel Super Digital TV Technology Co., Ltd +84acfb Crouzet Automatismes +84ad58 HUAWEI TECHNOLOGIES CO.,LTD +84af1f Beat System Service Co,. Ltd. +84afec BUFFALO.INC +84b153 Apple, Inc. +84b261 Cisco Systems, Inc +84b31b Kinexon GmbH +84b517 Cisco Systems, Inc +84b541 Samsung Electronics Co.,Ltd +84b59c Juniper Networks +84b802 Cisco Systems, Inc +84b866 Beijing XiaoLu technology co. LTD +84b8b8 Motorola (Wuhan) Mobility Technologies Communication Co., Ltd. +84ba3b CANON INC. +84be52 HUAWEI TECHNOLOGIES CO.,LTD +84c0ef Samsung Electronics Co.,Ltd +84c1c1 Juniper Networks +84c2e4 Jiangsu Qinheng Co., Ltd. +84c3e8 Vaillant GmbH +84c727 Gnodal Ltd +84c78f STORDIS GmbH +84c7a9 C3PO S.A. +84c7ea Sony Mobile Communications Inc +84c807 ADVA Optical Networking Ltd. +84c8b1 Incognito Software Systems Inc. +84c9b2 D-Link International +84c9c6 SHENZHEN GONGJIN ELECTRONICS CO.,LT +84cd62 ShenZhen IDWELL Technology CO.,Ltd +84cfbf Fairphone +84d15a TCT mobile ltd +84d32a IEEE 1905.1 +84d412 Palo Alto Networks +84d47e Aruba, a Hewlett Packard Enterprise Company +84d4c8 Widex A/S +84d6d0 Amazon Technologies Inc. +84d931 Hangzhou H3C Technologies Co., Limited +84d9c8 Unipattern Co., +84db2f Sierra Wireless +84db9e Aifloo AB +84dbac HUAWEI TECHNOLOGIES CO.,LTD +84dbfc Nokia +84dd20 Texas Instruments +84ddb7 Cilag GmbH International +84de3d Crystal Vision Ltd +84df0c NET2GRID BV +84df19 Chuango Security Technology Corporation +84e058 ARRIS Group, Inc. +84e0f4 IEEE Registration Authority +84e323 Green Wave Telecommunication SDN BHD +84e327 TAILYN TECHNOLOGIES INC +84e4d9 Shenzhen NEED technology Ltd. +84e5d8 Guangdong UNIPOE IoT Technology Co.,Ltd. +84e629 Bluwan SA +84e714 Liang Herng Enterprise,Co.Ltd. +84e892 Actiontec Electronics, Inc +84ea99 Vieworks +84eb18 Texas Instruments +84eb3e Vivint Smart Home +84ed33 BBMC Co.,Ltd +84ef18 Intel Corporate +84f129 Metrascale Inc. +84f3eb Espressif Inc. +84f493 OMS spol. s.r.o. +84f64c Cross Point BV +84f6fa Miovision Technologies Incorporated +84fcac Apple, Inc. +84fcfe Apple, Inc. +84fdd1 Intel Corporate +84fe9e RTC Industries, Inc. +84fedc Borqs Beijing Ltd. +880118 BLT Co +8801f2 Vitec System Engineering Inc. +880355 Arcadyan Technology Corporation +88074b LG Electronics (Mobile Communications) +880905 MTMCommunications +880907 MKT Systemtechnik GmbH & Co. KG +8809af Masimo Corporation +880f10 Huami Information Technology Co.,Ltd. +880fb6 Jabil Circuits India Pvt Ltd,-EHTP unit +881036 Panodic(ShenZhen) Electronics Limted +88108f HUAWEI TECHNOLOGIES CO.,LTD +881196 HUAWEI TECHNOLOGIES CO.,LTD +88124e Qualcomm Inc. +88142b Protonic Holland +881544 Cisco Meraki +8817a3 Integrated Device Technology (Malaysia) Sdn. Bhd. +8818ae Tamron Co., Ltd +881908 Apple, Inc. +881b99 SHENZHEN XIN FEI JIA ELECTRONIC CO. LTD. +881dfc Cisco Systems, Inc +881fa1 Apple, Inc. +882012 LMI Technologies +8821e3 Nebusens, S.L. +882364 Watchnet DVR Inc +8823fe TTTech Computertechnik AG +88252c Arcadyan Technology Corporation +882593 TP-LINK TECHNOLOGIES CO.,LTD. +8828b3 HUAWEI TECHNOLOGIES CO.,LTD +882950 Netmoon Technology Co., Ltd +88299c Samsung Electronics Co.,Ltd +882bd7 ADDÉNERGIE TECHNOLOGIES +882d53 Baidu Online Network Technology (Beijing) Co., Ltd. +882e5a storONE +88308a Murata Manufacturing Co., Ltd. +88329b SAMSUNG ELECTRO-MECHANICS(THAILAND) +883314 Texas Instruments +8833be Ivenix, Inc. +8834fe Bosch Automotive Products (Suzhou) Co. Ltd +88354c Transics +8835c1 OI ELECTRIC CO.,LTD +883612 SRC Computers, LLC +88365f LG Electronics (Mobile Communications) +88366c EFM Networks +883a30 Aruba, a Hewlett Packard Enterprise Company +883b8b Cheering Connection Co. Ltd. +883c1c MERCURY CORPORATION +883d24 Google, Inc. +883f4a Texas Instruments +883f99 Siemens AG +883fd3 HUAWEI TECHNOLOGIES CO.,LTD +88403b HUAWEI TECHNOLOGIES CO.,LTD +884157 Shenzhen Atsmart Technology Co.,Ltd. +8841c1 ORBISAT DA AMAZONIA IND E AEROL SA +8841fc AirTies Wireless Networks +8843e1 Cisco Systems, Inc +884477 HUAWEI TECHNOLOGIES CO.,LTD +8844f6 Nokia Corporation +88462a Telechips Inc. +884a18 Opulinks +884a70 Wacom Co.,Ltd. +884aea Texas Instruments +884b39 Siemens AG, Healthcare Sector +884ccf Pulzze Systems, Inc +8850dd Infiniband Trade Association +8850f6 Shenzhen Jingxun Software Telecommunication Technology Co.,Ltd +88517a HMD Global Oy +8851fb Hewlett Packard +88532e Intel Corporate +885395 Apple, Inc. +8853d4 HUAWEI TECHNOLOGIES CO.,LTD +88571d Seongji Industry Company +88576d XTA Electronics Ltd +8857ee BUFFALO.INC +885a06 GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD +885a92 Cisco Systems, Inc +885bdd Aerohive Networks Inc. +885c47 Alcatel Lucent +885d90 IEEE Registration Authority +885dfb zte corporation +885fe8 IEEE Registration Authority +88615a Siano Mobile Silicon Ltd. +8863df Apple, Inc. +886440 Apple, Inc. +886639 HUAWEI TECHNOLOGIES CO.,LTD +8866a5 Apple, Inc. +88685c Shenzhen ChuangDao & Perpetual Eternal Technology Co.,Ltd +886ab1 vivo Mobile Communication Co., Ltd. +886ae3 Alpha Networks Inc. +886b0f Bluegiga Technologies OY +886b44 Sunnovo International Limited +886b6e Apple, Inc. +886b76 CHINA HOPEFUL GROUP HOPEFUL ELECTRIC CO.,LTD +886fd4 Dell Inc. +887033 Hangzhou Silan Microelectronic Inc +88708c Lenovo Mobile Communication Technology Ltd. +8870ef SC Professional Trading Co., Ltd. +8871b1 ARRIS Group, Inc. +8871e5 Amazon Technologies Inc. +887384 Toshiba +887398 K2E Tekpoint +887556 Cisco Systems, Inc +887598 Samsung Electronics Co.,Ltd +887873 Intel Corporate +88789c Game Technologies SA +88795b Konka Group Co., Ltd. +88797e Motorola Mobility LLC, a Lenovo Company +887a31 Velankani Electronics Pvt. Ltd. +887e25 Extreme Networks, Inc. +887f03 Comper Technology Investment Limited +888279 Shenzhen RB-LINK Intelligent Technology Co.Ltd +888322 Samsung Electronics Co.,Ltd +88835d FN-LINK TECHNOLOGY LIMITED +888603 HUAWEI TECHNOLOGIES CO.,LTD +8886a0 Simton Technologies, Ltd. +8886c2 STABILO International GmbH +888717 CANON INC. +8887dd DarbeeVision Inc. +888914 All Components Incorporated +888964 GSI Electronics Inc. +888b5d Storage Appliance Corporation +888c19 Brady Corp Asia Pacific Ltd +88908d Cisco Systems, Inc +889166 Viewcooper Corp. +8891dd Racktivity +889471 Brocade Communications Systems, Inc. +88947e Fiberhome Telecommunication Technologies Co.,LTD +8894f9 Gemicom Technology, Inc. +8895b9 Unified Packet Systems Crop +88964e ARRIS Group, Inc. +889676 TTC MARCONI s.r.o. +8896b6 Global Fire Equipment S.A. +8896f2 Valeo Schalter und Sensoren GmbH +889746 Sichuan AI-Link Technology Co., Ltd. +889765 exands +8897df Entrypass Corporation Sdn. Bhd. +889821 TERAON +889b39 Samsung Electronics Co.,Ltd +889ca6 BTB Korea INC +889d98 Allied-telesisK.K. +889e33 TCT mobile ltd +889f6f Samsung Electronics Co.,Ltd +889faa Hella Gutmann Solutions GmbH +889ffa Hon Hai Precision Ind. Co.,Ltd. +88a084 Formation Data Systems +88a25e Juniper Networks +88a2d7 HUAWEI TECHNOLOGIES CO.,LTD +88a3cc Amatis Controls +88a5bd QPCOM INC. +88a6c6 Sagemcom Broadband SAS +88a73c Ragentek Technology Group +88a9a7 IEEE Registration Authority +88acc1 Generiton Co., Ltd. +88ad43 PEGATRON CORPORATION +88add2 Samsung Electronics Co.,Ltd +88ae07 Apple, Inc. +88ae1d COMPAL INFORMATION (KUNSHAN) CO., LTD. +88b111 Intel Corporate +88b168 Delta Control GmbH +88b1e1 Mojo Networks, Inc. +88b291 Apple, Inc. +88b362 Nokia Shanghai Bell Co., Ltd. +88b436 Private +88b4a6 Motorola Mobility LLC, a Lenovo Company +88b627 Gembird Europe BV +88b66b easynetworks +88b6ee Dish Technologies Corp +88b8d0 Dongguan Koppo Electronic Co.,Ltd +88ba7f Qfiednet Co., Ltd. +88bcc1 HUAWEI TECHNOLOGIES CO.,LTD +88bd45 Samsung Electronics Co.,Ltd +88bd78 Flaircomm Microelectronics,Inc. +88bfd5 Simple Audio Ltd +88bfe4 HUAWEI TECHNOLOGIES CO.,LTD +88c242 Poynt Co. +88c255 Texas Instruments +88c36e Beijing Ereneben lnformation Technology Limited +88c3b3 SOVICO +88c626 Logitech, Inc +88c663 Apple, Inc. +88c9d0 LG Electronics (Mobile Communications) +88cb87 Apple, Inc. +88cba5 Suzhou Torchstar Intelligent Technology Co.,Ltd +88cc45 Skyworth Digital Technology(Shenzhen) Co.,Ltd +88cefa HUAWEI TECHNOLOGIES CO.,LTD +88cf98 HUAWEI TECHNOLOGIES CO.,LTD +88d039 TCL Technoly Electronics(Huizhou).,Ltd +88d171 BEGHELLI S.P.A +88d211 Eko Devices, Inc. +88d274 zte corporation +88d2bf German Autolabs +88d37b FirmTek, LLC +88d50c GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD +88d5a8 ITEL MOBILE LIMITED +88d652 AMERGINT Technologies +88d7bc DEP Company +88d7f6 ASUSTek COMPUTER INC. +88d962 Canopus Systems US LLC +88da1a Redpine Signals, Inc. +88da33 Beijing Xiaoyuer Network Technology Co., Ltd +88dc96 SENAO Networks, Inc. +88dd79 Voltaire +88de7c Askey Computer Corp. +88dea9 Roku, Inc. +88df9e New H3C Technologies Co., Ltd +88e034 Shinwa industries(China) ltd. +88e0a0 Shenzhen VisionSTOR Technologies Co., Ltd +88e0f3 Juniper Networks +88e161 Art Beijing Science and Technology Development Co., Ltd. +88e3ab HUAWEI TECHNOLOGIES CO.,LTD +88e603 Avotek corporation +88e628 Shenzhen Kezhonglong Optoelectronic Technology Co.,Ltd +88e64b Juniper Networks +88e712 Whirlpool Corporation +88e7a6 iKnowledge Integration Corp. +88e87f Apple, Inc. +88e8f8 YONG TAI ELECTRONIC (DONGGUAN) LTD. +88e90f innomdlelab +88e917 Tamaggo +88e9fe Apple, Inc. +88ed1c Cudo Communication Co., Ltd. +88ef16 ARRIS Group, Inc. +88f031 Cisco Systems, Inc +88f077 Cisco Systems, Inc +88f488 cellon communications technology(shenzhen)Co.,Ltd. +88f490 Jetmobile Pte Ltd +88f56e HUAWEI TECHNOLOGIES CO.,LTD +88f7bf vivo Mobile Communication Co., Ltd. +88f7c7 Technicolor CH USA Inc. +88f872 HUAWEI TECHNOLOGIES CO.,LTD +88fd15 LINEEYE CO., LTD +88fed6 ShangHai WangYong Software Co., Ltd. +8c006d Apple, Inc. +8c02fa COMMANDO Networks Limited +8c04ba Dell Inc. +8c04ff Technicolor CH USA Inc. +8c0551 Koubachi AG +8c078c FLOW DATA INC +8c088b Remote Solution +8c09f4 ARRIS Group, Inc. +8c0c90 Ruckus Wireless +8c0ca3 Amper +8c0d76 HUAWEI TECHNOLOGIES CO.,LTD +8c0ee3 GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD +8c0f6f PEGATRON CORPORATION +8c0f83 Angie Hospitality LLC +8c0fa0 di-soric GmbH & Co. KG +8c0ffa Hutec co.,ltd +8c10d4 Sagemcom Broadband SAS +8c11cb ABUS Security-Center GmbH & Co. KG +8c147d IEEE Registration Authority +8c14b4 zte corporation +8c15c7 HUAWEI TECHNOLOGIES CO.,LTD +8c1645 LCFC(HeFei) Electronics Technology co., ltd +8c1850 China Mobile (Hangzhou) Information Technology Co., Ltd. +8c18d9 Shenzhen RF Technology Co., Ltd +8c192d IEEE Registration Authority +8c1abf Samsung Electronics Co.,Ltd +8c1cda IEEE Registration Authority +8c1f94 RF Surgical System Inc. +8c210a TP-LINK TECHNOLOGIES CO.,LTD. +8c2505 HUAWEI TECHNOLOGIES CO.,LTD +8c271d QuantHouse +8c278a Vocollect Inc +8c2937 Apple, Inc. +8c2daa Apple, Inc. +8c2f39 IBA Dosimetry GmbH +8c2fa6 Solid Optics B.V. +8c3330 EmFirst Co., Ltd. +8c3357 HiteVision Digital Media Technology Co.,Ltd. +8c34fd HUAWEI TECHNOLOGIES CO.,LTD +8c3579 QDIQO Sp. z o.o. +8c395c Bit4id Srl +8c3a7e Universal Electronics, Inc. +8c3ae3 LG Electronics (Mobile Communications) +8c3bad NETGEAR +8c3c07 Skiva Technologies, Inc. +8c3c4a NAKAYO Inc +8c41f2 RDA Technologies Ltd. +8c41f4 IPmotion GmbH +8c426d HUAWEI TECHNOLOGIES CO.,LTD +8c4435 Shanghai BroadMobi Communication Technology Co., Ltd. +8c444f HUMAX Co., Ltd. +8c4500 Murata Manufacturing Co., Ltd. +8c4962 Roku, Inc +8c4aee GIGA TMS INC +8c4b59 3D Imaging & Simulations Corp +8c4cad Evoluzn Inc. +8c4cdc PLANEX COMMUNICATIONS INC. +8c4db9 Unmonday Ltd +8c4dea Cerio Corporation +8c5105 Shenzhen ireadygo Information Technology CO.,LTD. +8c53d2 China Mobile Group Device Co.,Ltd. +8c53f7 A&D ENGINEERING CO., LTD. +8c541d LGE +8c569d Imaging Solutions Group +8c56c5 Nintendo Co., Ltd. +8c579b Wistron Neweb Corporation +8c57fd LVX Western +8c5877 Apple, Inc. +8c593c IEEE Registration Authority +8c5973 Zyxel Communications Corporation +8c598b C Technologies AB +8c59c3 ADB Italia +8c5af0 Exeltech Solar Products +8c5af8 Beijing Xiaomi Electronics Co., Ltd. +8c5bf0 ARRIS Group, Inc. +8c5ca1 d-broad,INC +8c5d60 UCI Corporation Co.,Ltd. +8c5f48 Continental Intelligent Transportation Systems LLC +8c5fdf Beijing Railway Signal Factory +8c604f Cisco Systems, Inc +8c60e7 MPGIO CO.,LTD +8c6102 Beijing Baofengmojing Technologies Co., Ltd +8c61a3 ARRIS Group, Inc. +8c640b Beyond Devices d.o.o. +8c6422 Sony Mobile Communications Inc +8c6878 Nortek-AS +8c68c8 zte corporation +8c6ae4 Viogem Limited +8c6d50 SHENZHEN MTC CO LTD +8c6d77 HUAWEI TECHNOLOGIES CO.,LTD +8c6dc4 Megapixel VR +8c705a Intel Corporate +8c71f8 Samsung Electronics Co.,Ltd +8c736e FUJITSU LIMITED +8c76c1 Goden Tech Limited +8c7712 Samsung Electronics Co.,Ltd +8c7716 LONGCHEER TELECOMMUNICATION LIMITED +8c78d7 SHENZHEN FAST TECHNOLOGIES CO.,LTD +8c7967 zte corporation +8c79f5 Samsung Electronics Co.,Ltd +8c7b9d Apple, Inc. +8c7bf0 Xufeng Development Limited +8c7c92 Apple, Inc. +8c7cb5 Hon Hai Precision Ind. Co.,Ltd. +8c7cff Brocade Communications Systems, Inc. +8c7eb3 Lytro, Inc. +8c7f3b ARRIS Group, Inc. +8c8126 ARCOM +8c82a8 Insigma Technology Co.,Ltd +8c839d SHENZHEN XINYUPENG ELECTRONIC TECHNOLOGY CO., LTD +8c83e1 Samsung Electronics Co.,Ltd +8c8401 Private +8c8580 Smart Innovation LLC +8c8590 Apple, Inc. +8c85e6 Cleondris GmbH +8c861e Apple, Inc. +8c873b Leica Camera AG +8c897a AUGTEK +8c89a5 Micro-Star INT'L CO., LTD +8c89fa Zhejiang Hechuan Technology Co., Ltd. +8c8a6e ESTUN AUTOMATION TECHNOLOY CO., LTD +8c8abb Beijing Orient View Technology Co., Ltd. +8c8b83 Texas Instruments +8c8e76 taskit GmbH +8c8ef2 Apple, Inc. +8c8f8b China Mobile Chongqing branch +8c8fe9 Apple, Inc. +8c90d3 Nokia +8c9109 Toyoshima Electric Technoeogy(Suzhou) Co.,Ltd. +8c9236 Aus.Linx Technology Co., Ltd. +8c9246 Oerlikon Textile Gmbh&Co.KG +8c9351 Jigowatts Inc. +8c94cf Encell Technology, Inc. +8c965f Shandong Zhongan Technology Co., Ltd. +8c99e6 TCT mobile ltd +8c9f3b Qingdao Hisense Communications Co.,Ltd. +8ca048 Beijing NeTopChip Technology Co.,LTD +8ca2fd Starry, Inc. +8ca5a1 Oregano Systems - Design & Consulting GmbH +8ca6df TP-LINK TECHNOLOGIES CO.,LTD. +8ca96f D&M Holdings Inc. +8ca982 Intel Corporate +8cab8e Shanghai Feixun Communication Co.,Ltd. +8cae4c Plugable Technologies +8cae89 Y-cam Solutions Ltd +8caedb NAG LLC +8cb094 Airtech I&C Co., Ltd +8cb0e9 Samsung Electronics.,LTD +8cb64f Cisco Systems, Inc +8cb7f7 Shenzhen UniStrong Science & Technology Co., Ltd +8cb82c IPitomy Communications +8cb84a SAMSUNG ELECTRO-MECHANICS(THAILAND) +8cb864 AcSiP Technology Corp. +8cbe24 Tashang Semiconductor(Shanghai) Co., Ltd. +8cbebe Xiaomi Communications Co Ltd +8cbf9d Shanghai Xinyou Information Technology Ltd. Co. +8cbfa6 Samsung Electronics Co.,Ltd +8cc121 Panasonic Corporation AVC Networks Company +8cc5e1 ShenZhen Konka Telecommunication Technology Co.,Ltd +8cc661 Current, powered by GE +8cc7aa Radinet Communications Inc. +8cc7d0 zhejiang ebang communication co.,ltd +8cc84b CHONGQING FUGUI ELECTRONICS CO.,LTD. +8cc8cd Samsung Electronics Co.,Ltd +8cc8f4 IEEE Registration Authority +8ccda2 ACTP, Inc. +8ccde8 Nintendo Co., Ltd. +8ccf09 Dell EMC +8ccf5c BEFEGA GmbH +8ccf8f ITC Systems +8cd17b CG Mobile +8cd2e9 YOKOTE SEIKO CO., LTD. +8cd3a2 VisSim AS +8cd48e ITEL MOBILE LIMITED +8cd628 Ikor Metering +8cdb25 ESG Solutions +8cdc02 zte corporation +8cdcd4 Hewlett Packard +8cdd8d Wifly-City System Inc. +8cde52 ISSC Technologies Corp. +8cde99 Comlab Inc. +8cdf9d NEC Corporation +8ce081 zte corporation +8ce117 zte corporation +8ce2da Circle Media Inc +8ce38e Toshiba Memory Corporation +8ce5c0 Samsung Electronics Co.,Ltd +8ce5ef HUAWEI TECHNOLOGIES CO.,LTD +8ce748 Private +8ce78c DK Networks +8ce7b3 Sonardyne International Ltd +8cea1b Edgecore Networks Corporation +8cebc6 HUAWEI TECHNOLOGIES CO.,LTD +8cec4b Dell Inc. +8ceec6 Precepscion Pty. Ltd. +8cf112 Motorola Mobility LLC, a Lenovo Company +8cf228 MERCURY COMMUNICATION TECHNOLOGIES CO.,LTD. +8cf5a3 SAMSUNG ELECTRO-MECHANICS(THAILAND) +8cf710 AMPAK Technology, Inc. +8cf773 Nokia +8cf813 ORANGE POLSKA +8cf945 Power Automation pte Ltd +8cf957 RuiXingHengFang Network (Shenzhen) Co.,Ltd +8cf9c9 MESADA Technology Co.,Ltd. +8cfaba Apple, Inc. +8cfca0 Shenzhen Smart Device Technology Co., LTD. +8cfd18 HUAWEI TECHNOLOGIES CO.,LTD +8cfdf0 Qualcomm Inc. +8cfe57 Apple, Inc. +8cfe74 Ruckus Wireless +8cfeb4 VSOONTECH ELECTRONICS CO., LIMITED +90004e Hon Hai Precision Ind. Co.,Ltd. +9000db Samsung Electronics Co.,Ltd +90013b Sagemcom Broadband SAS +900218 BSkyB Ltd +90028a Shenzhen Shidean Legrand Electronic Products Co.,Ltd +9002a9 Zhejiang Dahua Technology Co., Ltd. +900325 HUAWEI TECHNOLOGIES CO.,LTD +900372 Longnan Junya Digital Technology Co. Ltd. +9003b7 PARROT SA +900628 Samsung Electronics Co.,Ltd +900917 Far-sighted mobile +900a1a Taicang T&W Electronics +900a39 Wiio, Inc. +900a3a PSG Plastic Service GmbH +900bc1 Sprocomm Technologies CO.,Ltd +900cb4 Alinket Electronic Technology Co., Ltd +900d66 Digimore Electronics Co., Ltd +900dcb ARRIS Group, Inc. +900e83 Monico Monitoring, Inc. +900eb3 Shenzhen Amediatech Technology Co., Ltd. +901234 Shenzhen YOUHUA Technology Co., Ltd +901711 Hagenuk Marinekommunikation GmbH +90179b Nanomegas +9017ac HUAWEI TECHNOLOGIES CO.,LTD +9017c8 HUAWEI TECHNOLOGIES CO.,LTD +90185e Apex Tool Group GmbH & Co OHG +90187c SAMSUNG ELECTRO MECHANICS CO., LTD. +9018ae Shanghai Meridian Technologies, Co. Ltd. +901900 SCS SA +901a4f EM Microelectronic +901aca ARRIS Group, Inc. +901b0e Fujitsu Technology Solutions GmbH +901d27 zte corporation +901edd GREAT COMPUTER CORPORATION +90203a BYD Precision Manufacture Co.,Ltd +902083 General Engine Management Systems Ltd. +9020c2 Aruba, a Hewlett Packard Enterprise Company +902106 BSkyB Ltd +902155 HTC Corporation +902181 Shanghai Huaqin Telecom Technology Co.,Ltd +9023ec Availink, Inc. +90272b Algorab S.r.l. +9027e4 Apple, Inc. +902b34 GIGA-BYTE TECHNOLOGY CO.,LTD. +902bd2 HUAWEI TECHNOLOGIES CO.,LTD +902cc7 C-MAX Asia Limited +902e1c Intel Corporate +902e87 LabJack +9031cd Onyx Healthcare Inc. +90324b Hon Hai Precision Ind. Co.,Ltd. +90342b Gatekeeper Systems, Inc. +9034fc Hon Hai Precision Ind. Co.,Ltd. +90356e Vodafone Omnitel N.V. +903809 Ericsson AB +9038df Changzhou Tiannengbo System Co. Ltd. +903a72 Ruckus Wireless +903aa0 Nokia +903ae6 PARROT SA +903c92 Apple, Inc. +903cae Yunnan KSEC Digital Technology Co.,Ltd. +903d5a Shenzhen Wision Technology Holding Limited +903d68 G-Printec, Inc. +903d6b Zicon Technology Corp. +903dbd SECURE METERS LIMITED +903eab ARRIS Group, Inc. +904506 Tokyo Boeki Medisys Inc. +9046a2 Tedipay UK Ltd +9046b7 Vadaro Pte Ltd +904716 RORZE CORPORATION +90473c China Mobile Group Device Co.,Ltd. +90489a Hon Hai Precision Ind. Co.,Ltd. +9049fa Intel Corporate +904c81 Hewlett Packard Enterprise +904ce5 Hon Hai Precision Ind. Co.,Ltd. +904d4a Sagemcom Broadband SAS +904dc3 Flonidan A/S +904e2b HUAWEI TECHNOLOGIES CO.,LTD +904e91 IEEE Registration Authority +90505a unGlue, Inc +90507b Advanced PANMOBIL Systems GmbH & Co. KG +9050ca Hitron Technologies. Inc +90513f Elettronica Santerno SpA +905446 TES ELECTRONIC SOLUTIONS +9055ae Ericsson, EAB/RWI/K +905682 Lenbrook Industries Limited +905692 Autotalks Ltd. +905851 Technicolor CH USA Inc. +9059af Texas Instruments +905c34 Sirius Electronic Systems Srl +905c44 Compal Broadband Networks, Inc. +905f2e TCT mobile ltd +905f8d modas GmbH +9060f1 Apple, Inc. +90610c Fida International (S) Pte Ltd +9061ae Intel Corporate +90633b Samsung Electronics Co.,Ltd +906717 Alphion India Private Limited +90671c HUAWEI TECHNOLOGIES CO.,LTD +9067b5 Alcatel-Lucent +9067f3 Alcatel Lucent +9068c3 Motorola Mobility LLC, a Lenovo Company +906cac Fortinet, Inc. +906d05 BXB ELECTRONICS CO., LTD +906dc8 DLG Automação Industrial Ltda +906ebb Hon Hai Precision Ind. Co.,Ltd. +906f18 Private +906fa9 NANJING PUTIAN TELECOMMUNICATIONS TECHNOLOGY CO.,LTD. +907025 Garea Microsys Co.,Ltd. +907065 Texas Instruments +907240 Apple, Inc. +907282 Sagemcom Broadband SAS +90735a Motorola Mobility LLC, a Lenovo Company +907841 Intel Corporate +9078b2 Xiaomi Communications Co Ltd +907910 Integrated Device Technology (Malaysia) Sdn. Bhd. +907990 Benchmark Electronics Romania SRL +907a0a Gebr. Bode GmbH & Co KG +907a28 Beijing Morncloud Information And Technology Co. Ltd. +907a58 Zegna-Daidong Limited +907af1 Wally +907e30 LARS +907eba UTEK TECHNOLOGY (SHENZHEN) CO.,LTD +907f61 Chicony Electronics Co., Ltd. +908260 IEEE 1904.1 Working Group +90834b BEIJING YUNYI TIMES TECHNOLOGY CO,.LTD +90837a General Electric Water & Process Technologies +90840d Apple, Inc. +90842b LEGO System A/S +90848b HDR10+ Technologies, LLC +908674 SICHUAN TIANYI COMHEART TELECOMCO., LTD +90869b zte corporation +9088a2 IONICS TECHNOLOGY ME LTDA +90895f WEIFANG GOERTEK ELECTRONICS CO.,LTD +908c09 Total Phase +908c44 H.K ZONGMU TECHNOLOGY CO., LTD. +908c63 GZ Weedong Networks Technology Co. , Ltd +908d1d GH Technologies +908d6c Apple, Inc. +908d78 D-Link International +908fcf UNO System Co., Ltd +90903c TRISON TECHNOLOGY CORPORATION +909060 RSI VIDEO TECHNOLOGIES +9092b4 Diehl BGT Defence GmbH & Co. KG +90940a Analog Devices, Inc +909497 HUAWEI TECHNOLOGIES CO.,LTD +9094e4 D-Link International +9097d5 Espressif Inc. +9097f3 Samsung Electronics Co.,Ltd +909864 Impex-Sat GmbH&Co KG +909916 ELVEES NeoTek OJSC +909a77 Texas Instruments +909d7d ARRIS Group, Inc. +909de0 Newland Design + Assoc. Inc. +909f33 EFM Networks +909f43 Accutron Instruments Inc. +90a137 Beijing Splendidtel Communication Technology Co,. Ltd +90a210 United Telecoms Ltd +90a2da GHEO SA +90a365 HMD Global Oy +90a46a SISNET CO., LTD +90a4de Wistron Neweb Corporation +90a62f NAVER +90a783 JSW PACIFIC CORPORATION +90a7c1 Pakedge Device and Software Inc. +90ac3f BrightSign LLC +90adf7 vivo Mobile Communication Co., Ltd. +90ae1b TP-LINK TECHNOLOGIES CO.,LTD. +90b0ed Apple, Inc. +90b11c Dell Inc. +90b134 ARRIS Group, Inc. +90b1e0 Beijing Nebula Link Technology Co., Ltd +90b21f Apple, Inc. +90b686 Murata Manufacturing Co., Ltd. +90b832 Aerohive Networks Inc. +90b8d0 Joyent, Inc. +90b8e0 SHENZHEN YANRAY TECHNOLOGY CO.,LTD +90b931 Apple, Inc. +90b97d Johnson Outdoors Marine Electronics d/b/a Minnkota +90bde6 Quectel Wireless Solutions Co., Ltd. +90c115 Sony Mobile Communications Inc +90c1c6 Apple, Inc. +90c35f Nanjing Jiahao Technology Co., Ltd. +90c54a vivo Mobile Communication Co., Ltd. +90c682 IEEE Registration Authority +90c792 ARRIS Group, Inc. +90c7d8 zte corporation +90c99b Tesorion Nederland B.V. +90cc24 Synaptics, Inc +90cdb6 Hon Hai Precision Ind. Co.,Ltd. +90cf15 Nokia Corporation +90cf6f Dlogixs Co Ltd +90cf7d Qingdao Hisense Communications Co.,Ltd. +90d11b Palomar Medical Technologies +90d74f Bookeen +90d7be Wavelab Global Inc. +90d7eb Texas Instruments +90d852 Comtec Co., Ltd. +90d8f3 zte corporation +90d92c HUG-WITSCHI AG +90da4e AVANU +90da6a FOCUS H&S Co., Ltd. +90db46 E-LEAD ELECTRONIC CO., LTD +90dd5d Apple, Inc. +90dfb7 s.m.s smart microwave sensors GmbH +90dffb HOMERIDER SYSTEMS +90e0f0 IEEE 1722a Working Group +90e17b Apple, Inc. +90e202 Texas Instruments +90e2ba Intel Corporate +90e6ba ASUSTek COMPUTER INC. +90e710 New H3C Technologies Co., Ltd +90e7c4 HTC Corporation +90ea60 SPI Lasers Ltd +90ec50 C.O.B.O. SPA +90eed9 UNIVERSAL DE DESARROLLOS ELECTRÓNICOS, SA +90ef68 Zyxel Communications Corporation +90f052 MEIZU Technology Co., Ltd. +90f1aa Samsung Electronics Co.,Ltd +90f1b0 Hangzhou Anheng Info&Tech CO.,LTD +90f278 Radius Gateway +90f305 HUMAX Co., Ltd. +90f3b7 Kirisun Communications Co., Ltd. +90f4c1 Rand McNally +90f652 TP-LINK TECHNOLOGIES CO.,LTD. +90f72f Phillips Machine & Welding Co., Inc. +90f891 Kaonmedia CO., LTD. +90fb5b Avaya Inc +90fba6 Hon Hai Precision Ind. Co.,Ltd. +90fd61 Apple, Inc. +90fd9f Silicon Laboratories +90ff79 Metro Ethernet Forum +940006 jinyoung +940070 Nokia Corporation +940149 AutoHotBox +9401c2 Samsung Electronics Co.,Ltd +94049c HUAWEI TECHNOLOGIES CO.,LTD +9405b6 Liling FullRiver Electronics & Technology Ltd +940937 HUMAX Co., Ltd. +940b19 HUAWEI TECHNOLOGIES CO.,LTD +940b2d NetView Technologies(Shenzhen) Co., Ltd +940bd5 Himax Technologies, Inc +940c6d TP-LINK TECHNOLOGIES CO.,LTD. +940e6b HUAWEI TECHNOLOGIES CO.,LTD +94103e Belkin International Inc. +9411da ITF Fröschl GmbH +94147a vivo Mobile Communication Co., Ltd. +941625 Apple, Inc. +941673 Point Core SARL +941882 Hewlett Packard Enterprise +94193a Elvaco AB +941d1c TLab West Systems AB +942053 Nokia Corporation +942197 Stalmart Technology Limited +94236e Shenzhen Junlan Electronic Ltd +9424e1 Alcatel-Lucent Enterprise +942790 TCT mobile ltd +94282e New H3C Technologies Co., Ltd +94290c Shenyang wisdom Foundation Technology Development Co., Ltd. +94298d Shanghai AdaptComm Technology Co., Ltd. +942a3f Diversey Inc +942cb3 HUMAX Co., Ltd. +942e17 Schneider Electric Canada Inc +942e63 Finsécur +94319b Alphatronics BV +9433dd Taco Inc +94350a Samsung Electronics Co.,Ltd +9436e0 Sichuan Bihong Broadcast & Television New Technologies Co.,Ltd +9439e5 Hon Hai Precision Ind. Co.,Ltd. +943af0 Nokia Corporation +943bb1 Kaonmedia CO., LTD. +943dc9 Asahi Net, Inc. +943fc2 Hewlett Packard Enterprise +9440a2 Anywave Communication Technologies, Inc. +9440c9 Hewlett Packard Enterprise +9441c1 Mini-Cam Limited +944444 LG Innotek +944452 Belkin International Inc. +944696 BaudTec Corporation +944996 WiSilica Inc +944a09 BitWise Controls +944a0c Sercomm Corporation. +944f4c Sound United LLC +945047 Rechnerbetriebsgruppe +945089 SimonsVoss Technologies GmbH +945103 Samsung Electronics Co.,Ltd +94513d iSmart Alarm, Inc. +9451bf Hyundai ESG +945330 Hon Hai Precision Ind. Co.,Ltd. +945493 Rigado, LLC +9454df YST CORP. +9457a5 Hewlett Packard +9458cb Nintendo Co.,Ltd +945907 Shanghai HITE-BELDEN Network Technology Co., Ltd. +94592d EKE Building Technology Systems Ltd +945b7e TRILOBIT LTDA. +94611e Wata Electronics Co.,Ltd. +946124 Pason Systems +946269 ARRIS Group, Inc. +946372 vivo Mobile Communication Co., Ltd. +9463d1 Samsung Electronics Co.,Ltd +94652d OnePlus Technology (Shenzhen) Co., Ltd +94659c Intel Corporate +9466e7 WOM Engineering +94677e Belden India Private Limited +946a77 Technicolor CH USA Inc. +946ab0 Arcadyan Corporation +9470d2 WINFIRM TECHNOLOGY +9471ac TCT mobile ltd +94756e QinetiQ North America +9476b7 Samsung Electronics Co.,Ltd +94772b HUAWEI TECHNOLOGIES CO.,LTD +947bbe Ubicquia +947be7 Samsung Electronics Co.,Ltd +947c3e Polewall Norge AS +947eb9 National Narrowband Network Communications Pty Ltd +9481a4 Azuray Technologies +9483c4 GL Technologies (Hong Kong) Limited +94857a Evantage Industries Corp +9486cd SEOUL ELECTRONICS&TELECOM +9486d4 Surveillance Pro Corporation +94877c ARRIS Group, Inc. +9487e0 Xiaomi Communications Co Ltd +948815 Infinique Worldwide Inc +948854 Texas Instruments +94885e Surfilter Network Technology Co., Ltd. +948b03 EAGET Innovation and Technology Co., Ltd. +948bc1 Samsung Electronics Co.,Ltd +948d50 Beamex Oy Ab +948def Oetiker Schweiz AG +948e89 INDUSTRIAS UNIDAS SA DE CV +948fcf ARRIS Group, Inc. +948fee Verizon Telematics +949034 SHENZHEN CHUANGWEI-RGB ELECTRONICS CO.,LTD +94917f ASKEY COMPUTER CORP +9492bc SYNTECH(HK) TECHNOLOGY LIMITED +949426 Apple, Inc. +9495a0 Google, Inc. +9498a2 Shanghai LISTEN TECH.LTD +949901 Shenzhen YITOA Digital Appliance CO.,LTD +949990 VTC Telecommunications +949aa9 Microsoft Corporation +949b2c Extreme Networks, Inc. +949bfd Trans New Technology, Inc. +949c55 Alta Data Technologies +949d57 Panasonic do Brasil Limitada +949f3e Sonos, Inc. +949f3f Optek Digital Technology company limited +949fb4 ChengDu JiaFaAnTai Technology Co.,Ltd +94a04e Bostex Technology Co., LTD +94a1a2 AMPAK Technology, Inc. +94a3ca KonnectONE, LLC +94a40c Diehl Metering GmbH +94a7b7 zte corporation +94a7bc BodyMedia, Inc. +94aab8 Joview(Beijing) Technology Co. Ltd. +94abde OMX Technology - FZE +94acca trivum technologies GmbH +94ae61 Alcatel Lucent +94aee3 Belden Hirschmann Industries (Suzhou) Ltd. +94b01f Apple, Inc. +94b10a Samsung Electronics Co.,Ltd +94b2cc PIONEER CORPORATION +94b40f Aruba, a Hewlett Packard Enterprise Company +94b819 Nokia +94b86d Intel Corporate +94b8c5 RuggedCom Inc. +94b9b4 Aptos Technology +94ba31 Visiontec da Amazônia Ltda. +94ba56 Shenzhen Coship Electronics Co., Ltd. +94bbae Husqvarna AB +94bf1e eflow Inc. / Smart Device Planning and Development Division +94bf2d Apple, Inc. +94bf80 zte corporation +94bf95 Shenzhen Coship Electronics Co., Ltd +94bfc4 Ruckus Wireless +94c014 Sorter Sp. j. Konrad Grzeszczyk MichaA, Ziomek +94c038 Tallac Networks +94c150 2Wire Inc +94c2bd TECNOBIT +94c3e4 Atlas Copco IAS GmbH +94c4e9 PowerLayer Microsystems HongKong Limited +94c691 EliteGroup Computer Systems Co., LTD +94c6eb NOVA electronics, Inc. +94c7af Raylios Technology +94c960 Zhongshan B&T technology.co.,ltd +94c962 Teseq AG +94ca0f Honeywell Analytics +94ccb9 ARRIS Group, Inc. +94cdac Creowave Oy +94ce2c Sony Mobile Communications Inc +94ce31 CTS Limited +94d00d HUAWEI TECHNOLOGIES CO.,LTD +94d019 Cydle Corp. +94d029 GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD +94d075 CIS Crypto +94d299 Techmation Co.,Ltd. +94d417 GPI KOREA INC. +94d469 Cisco Systems, Inc +94d505 Fiberhome Telecommunication Technologies Co.,LTD +94d60e shenzhen yunmao information technologies co., ltd +94d723 Shanghai DareGlobal Technologies Co.,Ltd +94d771 Samsung Electronics Co.,Ltd +94d859 TCT mobile ltd +94d93c ENELPS +94d9b3 TP-LINK TECHNOLOGIES CO.,LTD. +94db49 SITCORP +94dbc9 AzureWave Technology Inc. +94dbda HUAWEI TECHNOLOGIES CO.,LTD +94dc4e AEV, spol. s r. o. +94dd3f A+V Link Technologies, Corp. +94de0e SmartOptics AS +94de80 GIGA-BYTE TECHNOLOGY CO.,LTD. +94df4e Wistron InfoComm(Kunshan)Co.,Ltd. +94df58 IJ Electron CO.,Ltd. +94e0d0 HealthStream Taiwan Inc. +94e0d6 China Dragon Technology Limited +94e1ac Hangzhou Hikvision Digital Technology Co.,Ltd. +94e226 D. ORtiz Consulting, LLC +94e2fd Boge Kompressoren OTTO Boge GmbH & Co. KG +94e36d Texas Instruments +94e6f7 Intel Corporate +94e711 Xirka Dama Persada PT +94e848 FYLDE MICRO LTD +94e8c5 ARRIS Group, Inc. +94e96a Apple, Inc. +94e979 Liteon Technology Corporation +94e98c Nokia +94eaea TELLESCOM INDUSTRIA E COMERCIO EM TELECOMUNICACAO +94eb2c Google, Inc. +94ebcd BlackBerry RTS +94ee9f HMD Global Oy +94f128 Hewlett Packard Enterprise +94f19e HUIZHOU MAORONG INTELLIGENT TECHNOLOGY CO.,LTD +94f278 Elma Electronic +94f551 Cadi Scientific Pte Ltd +94f665 Ruckus Wireless +94f692 Geminico co.,Ltd. +94f6a3 Apple, Inc. +94f6d6 Apple, Inc. +94f720 Tianjin Deviser Electronics Instrument Co., Ltd +94f7ad Juniper Networks +94fae8 Shenzhen Eycom Technology Co., Ltd +94fb29 Zebra Technologies Inc. +94fbb2 SHENZHEN GONGJIN ELECTRONICS CO.,LT +94fd1d WhereWhen Corp +94fd2e Shanghai Uniscope Technologies Co.,Ltd +94fe22 HUAWEI TECHNOLOGIES CO.,LTD +94fe9d SHENZHEN GONGJIN ELECTRONICS CO.,LT +94fef4 Sagemcom Broadband SAS +980074 Raisecom Technology CO., LTD +9800c1 GuangZhou CREATOR Technology Co.,Ltd.(CHINA) +9800c6 Apple, Inc. +9801a7 Apple, Inc. +980284 Theobroma Systems GmbH +9802d8 IEEE Registration Authority +98039b Mellanox Technologies, Inc. +9803a0 ABB n.v. Power Quality Products +9803d8 Apple, Inc. +980637 IEEE Registration Authority +98072d Texas Instruments +9809cf OnePlus Technology (Shenzhen) Co., Ltd +980c82 SAMSUNG ELECTRO MECHANICS CO., LTD. +980ca5 Motorola (Wuhan) Mobility Technologies Communication Co., Ltd. +980d2e HTC Corporation +980d67 Zyxel Communications Corporation +980ee4 Private +981094 Shenzhen Vsun communication technology Co.,ltd +9810e8 Apple, Inc. +981333 zte corporation +9814d2 Avonic +9816ec IC Intracom +981888 Cisco Meraki +981dfa Samsung Electronics Co.,Ltd +981e0f Jeelan (Shanghai Jeelan Technology Information Inc +981e19 Sagemcom Broadband SAS +981fb1 Shenzhen Lemon Network Technology Co.,Ltd +98208e Definium Technologies +9822ef Liteon Technology Corporation +98234e Micromedia AG +98262a Applied Research Associates, Inc +9828a6 COMPAL INFORMATION (KUNSHAN) CO., LTD. +98291d Jaguar de Mexico, SA de CV +98293f Fujian Start Computer Equipment Co.,Ltd +9829a6 COMPAL INFORMATION (KUNSHAN) CO., LTD. +982cbc Intel Corporate +982cbe 2Wire Inc +982d56 Resolution Audio +982d68 Samsung Electronics Co., Ltd +982dba Fibergate Inc. +982f3c Sichuan Changhong Electric Ltd. +983000 Beijing KEMACOM Technologies Co., Ltd. +983071 DAIKYUNG VASCOM +98349d Krauss Maffei Technologies GmbH +983571 Sub10 Systems Ltd +9835b8 Assembled Products Corporation +9835ed HUAWEI TECHNOLOGIES CO.,LTD +983713 PT.Navicom Indonesia +98398e Samsung Electronics Co.,Ltd +983b16 AMPAK Technology, Inc. +983b8f Intel Corporate +983f9f China SSJ (Suzhou) Network Technology Inc. +9840bb Dell Inc. +98415c Nintendo Co.,Ltd +984246 SOL INDUSTRY PTE., LTD +9843da INTERTECH +9844b6 INFRANOR SAS +984562 Shanghai Baud Data Communication Co.,Ltd. +98460a Apple, Inc. +98473c SHANGHAI SUNMON COMMUNICATION TECHNOGY CO.,LTD +984827 TP-LINK TECHNOLOGIES CO.,LTD. +9849e1 Boeing Defence Australia +984a47 CHG Hospital Beds +984b4a ARRIS Group, Inc. +984be1 Hewlett Packard +984c04 Zhangzhou Keneng Electrical Equipment Co Ltd +984cd3 Mantis Deposition +984e97 Starlight Marketing (H. K.) Ltd. +984fee Intel Corporate +98523d Sunitec Enterprise Co.,Ltd +9852b1 Samsung Electronics Co.,Ltd +98541b Intel Corporate +9857d3 HON HAI-CCPBG PRECISION IND.CO.,LTD. +98588a SYSGRATION Ltd. +985945 Texas Instruments +985aeb Apple, Inc. +985bb0 KMDATA INC. +985c93 SBG Systems SAS +985d46 PeopleNet Communication +985d82 Arista Networks +985dad Texas Instruments +985e1b ConversDigital Co., Ltd. +985fd3 Microsoft Corporation +986022 EMW Co., Ltd. +9866ea Industrial Control Communications, Inc. +986b3d ARRIS Group, Inc. +986c5c Jiangxi Gosun Guard Security Co.,Ltd +986cf5 zte corporation +986d35 IEEE Registration Authority +986dc8 TOSHIBA MITSUBISHI-ELECTRIC INDUSTRIAL SYSTEMS CORPORATION +986f60 GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD +9870e8 INNATECH SDN BHD +9873c4 Sage Electronic Engineering LLC +98743d Shenzhen Jun Kai Hengye Technology Co. Ltd +9874da Infinix mobility limited +9876b6 Adafruit +987770 Pep Digital Technology (Guangzhou) Co., Ltd +987a10 Ericsson AB +987a14 Microsoft Corporation +987bf3 Texas Instruments +987e46 Emizon Networks Limited +988217 Disruptive Ltd +988389 Samsung Electronics Co.,Ltd +9884e3 Texas Instruments +98865d Nokia Shanghai Bell Co., Ltd. +9886b1 Flyaudio corporation (China) +988744 Wuxi Hongda Science and Technology Co.,LTD +9889ed Anadem Information Inc. +988b0a Hangzhou Hikvision Digital Technology Co.,Ltd. +988b5d Sagemcom Broadband SAS +988bad Corintech Ltd. +988e34 ZHEJIANG BOXSAM ELECTRONIC CO.,LTD +988e4a NOXUS(BEIJING) TECHNOLOGY CO.,LTD +988ed4 ITEL MOBILE LIMITED +988edd TE Connectivity Limerick +989080 Linkpower Network System Inc Ltd. +989096 Dell Inc. +9893cc LG ELECTRONICS INC +989449 Skyworth Wireless Technology Ltd. +9897d1 MitraStar Technology Corp. +989bcb AVM Audiovisuelles Marketing und Computersysteme GmbH +989c57 HUAWEI TECHNOLOGIES CO.,LTD +989e63 Apple, Inc. +98a404 Ericsson AB +98a40e Snap, Inc. +98a7b0 AO MCST +98aa3c Will i-tech Co., Ltd. +98aad7 BLUE WAVE NETWORKING CO LTD +98aafc IEEE Registration Authority +98ae71 VVDN Technologies Pvt Ltd +98af65 Intel Corporate +98b039 Nokia +98b6e9 Nintendo Co.,Ltd +98b8ba LG Electronics (Mobile Communications) +98b8e3 Apple, Inc. +98ba39 Doro AB +98bb1e BYD Precision Manufacture Company Ltd. +98bb99 Phicomm (Sichuan) Co.,Ltd. +98bc57 SVA TECHNOLOGIES CO.LTD +98bc99 Edeltech Co.,Ltd. +98be94 IBM +98c0eb Global Regency Ltd +98c5db Ericsson AB +98c845 PacketAccess +98ca33 Apple, Inc. +98cb27 Galore Networks Pvt. Ltd. +98cc4d Shenzhen mantunsci co., LTD +98cdb4 Virident Systems, Inc. +98cf53 BBK EDUCATIONAL ELECTRONICS CORP.,LTD. +98d293 Google, Inc. +98d331 Shenzhen Bolutek Technology Co.,Ltd. +98d3d2 MEKRA Lang GmbH & Co. KG +98d3e7 Netafim L +98d686 Chyi Lee industry Co., ltd. +98d6bb Apple, Inc. +98d6f7 LG Electronics (Mobile Communications) +98d863 Shanghai High-Flying Electronics Technology Co., Ltd +98d88c Nortel Networks +98da92 Vuzix Corporation +98dac4 TP-LINK TECHNOLOGIES CO.,LTD. +98dcd9 UNITEC Co., Ltd. +98ddea Infinix mobility limited +98ded0 TP-LINK TECHNOLOGIES CO.,LTD. +98e0d9 Apple, Inc. +98e165 Accutome +98e476 Zentan +98e743 Dell Inc. +98e79a Foxconn(NanJing) Communication Co.,Ltd. +98e7f4 Hewlett Packard +98e7f5 HUAWEI TECHNOLOGIES CO.,LTD +98e848 Axiim +98e8fa Nintendo Co.,Ltd +98ec65 Cosesy ApS +98ed5c Tesla Motors, Inc +98eecb Wistron Infocomm (Zhongshan) Corporation +98ef9b OHSUNG +98f058 Lynxspring, Incl. +98f0ab Apple, Inc. +98f170 Murata Manufacturing Co., Ltd. +98f199 NEC Platforms, Ltd. +98f2b3 Hewlett Packard Enterprise +98f428 zte corporation +98f4ab Espressif Inc. +98f537 zte corporation +98f5a9 OHSUNG +98f781 ARRIS Group, Inc. +98f7d7 ARRIS Group, Inc. +98f8c1 IDT Technology Limited +98f8db Marini Impianti Industriali s.r.l. +98f9c7 IEEE Registration Authority +98fa9b LCFC(HeFei) Electronics Technology co., ltd +98fae3 Xiaomi Communications Co Ltd +98fb12 Grand Electronics (HK) Ltd +98fc11 Cisco-Linksys, LLC +98fd74 ACT.CO.LTD +98fdb4 Primax Electronics Ltd. +98fe03 Ericsson - North America +98fe94 Apple, Inc. +98ff6a OTEC(Shanghai)Technology Co.,Ltd. +98ffd0 Lenovo Mobile Communication Technology Ltd. +9c0111 Shenzhen Newabel Electronic Co., Ltd. +9c0298 Samsung Electronics Co.,Ltd +9c039e Beijing Winchannel Software Technology Co., Ltd +9c0473 Tecmobile (International) Ltd. +9c04eb Apple, Inc. +9c061b Hangzhou H3C Technologies Co., Limited +9c066e Hytera Communications Corporation Limited +9c0cdf GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD +9c0dac Tymphany HK Limited +9c0e4a Shenzhen Vastking Electronic Co.,Ltd. +9c13ab Chanson Water Co., Ltd. +9c1463 Zhejiang Dahua Technology Co., Ltd. +9c1465 Edata Elektronik San. ve Tic. A.Ş. +9c1874 Nokia Danmark A/S +9c1c12 Aruba, a Hewlett Packard Enterprise Company +9c1d36 HUAWEI TECHNOLOGIES CO.,LTD +9c1d58 Texas Instruments +9c1e95 Actiontec Electronics, Inc +9c1fdd Accupix Inc. +9c207b Apple, Inc. +9c216a TP-LINK TECHNOLOGIES CO.,LTD. +9c220e TASCAN Systems GmbH +9c25be Wildlife Acoustics, Inc. +9c2840 Discovery Technology,LTD.. +9c28bf Continental Automotive Czech Republic s.r.o. +9c28ef HUAWEI TECHNOLOGIES CO.,LTD +9c293f Apple, Inc. +9c2a70 Hon Hai Precision Ind. Co.,Ltd. +9c2a83 Samsung Electronics Co.,Ltd +9c2ea1 Xiaomi Communications Co Ltd +9c2f73 Universal Tiancheng Technology (Beijing) Co., Ltd. +9c305b Hon Hai Precision Ind. Co.,Ltd. +9c3066 RWE Effizienz GmbH +9c3178 Foshan Huadian Intelligent Communications Teachnologies Co.,Ltd +9c31b6 Kulite Semiconductor Products Inc +9c31c3 BSkyB Ltd +9c32a9 SICHUAN TIANYI COMHEART TELECOMCO., LTD +9c32ce CANON INC. +9c3426 ARRIS Group, Inc. +9c3583 Nipro Diagnostics, Inc +9c35eb Apple, Inc. +9c37f4 HUAWEI TECHNOLOGIES CO.,LTD +9c3a9a Shenzhen Sundray Technologies Company Limited +9c3aaf Samsung Electronics Co.,Ltd +9c3dcf NETGEAR +9c3eaa EnvyLogic Co.,Ltd. +9c417c Hame Technology Co., Limited +9c431e IEEE Registration Authority +9c443d CHENGDU XUGUANG TECHNOLOGY CO, LTD +9c44a6 SwiftTest, Inc. +9c4563 DIMEP Sistemas +9c497f Integrated Device Technology (Malaysia) Sdn. Bhd. +9c4a7b Nokia Corporation +9c4cae Mesa Labs +9c4e20 Cisco Systems, Inc +9c4e36 Intel Corporate +9c4e8e ALT Systems Ltd +9c4ebf BoxCast +9c4fcf TCT mobile ltd +9c4fda Apple, Inc. +9c50ee Cambridge Industries(Group) Co.,Ltd. +9c52f8 HUAWEI TECHNOLOGIES CO.,LTD +9c53cd ENGICAM s.r.l. +9c541c Shenzhen My-power Technology Co.,Ltd +9c54ca Zhengzhou VCOM Science and Technology Co.,Ltd +9c55b4 I.S.E. S.r.l. +9c5711 Feitian Xunda(Beijing) Aeronautical Information Technology Co., Ltd. +9c57ad Cisco Systems, Inc +9c5a44 COMPAL INFORMATION (KUNSHAN) CO., LTD. +9c5b96 NMR Corporation +9c5c8d FIREMAX INDÚSTRIA E COMÉRCIO DE PRODUTOS ELETRÔNICOS LTDA +9c5c8e ASUSTek COMPUTER INC. +9c5cf9 Sony Mobile Communications Inc +9c5d12 Aerohive Networks Inc. +9c5d95 VTC Electronics Corp. +9c5e73 Calibre UK LTD +9c5f5a GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD +9c611d Omni-ID USA, Inc. +9c6121 SICHUAN TIANYI COMHEART TELECOMCO.,LTD +9c62ab Sumavision Technologies Co.,Ltd +9c63ed zte corporation +9c645e Harman Consumer Group +9c648b Apple, Inc. +9c65b0 Samsung Electronics Co.,Ltd +9c65ee DASAN Network Solutions +9c65f9 AcSiP Technology Corp. +9c6650 Glodio Technolies Co.,Ltd Tianjin Branch +9c685b Octonion SA +9c6937 Qorvo Utrecht B.V. +9c69b4 IEEE Registration Authority +9c69d1 HUAWEI TECHNOLOGIES CO.,LTD +9c6abe QEES ApS. +9c6c15 Microsoft Corporation +9c6f52 zte corporation +9c713a HUAWEI TECHNOLOGIES CO.,LTD +9c741a HUAWEI TECHNOLOGIES CO.,LTD +9c7514 Wildix srl +9c77aa NADASNV +9c79ac Suntec Software(Shanghai) Co., Ltd. +9c7a03 Ciena Corporation +9c7bd2 NEOLAB Convergence +9c7bef Hewlett Packard +9c7da3 HUAWEI TECHNOLOGIES CO.,LTD +9c7f57 UNIC Memory Technology Co Ltd +9c807d SYSCABLE Korea Inc. +9c80df Arcadyan Technology Corporation +9c8275 Yichip Microelectronics (Hangzhou) Co.,Ltd +9c83bf PRO-VISION, Inc. +9c84bf Apple, Inc. +9c86da Phoenix Geophysics Ltd. +9c8888 Simac Techniek NV +9c88ad Fiberhome Telecommunication Technologies Co.,LTD +9c8ba0 Apple, Inc. +9c8bf1 The Warehouse Limited +9c8c6e Samsung Electronics Co.,Ltd +9c8cd8 Hewlett Packard Enterprise +9c8d1a INTEG process group inc +9c8d7c ALPS ELECTRIC CO., LTD. +9c8dd3 Leonton Technologies +9c8e99 Hewlett Packard +9c8ecd Amcrest Technologies +9c8edc Teracom Limited +9c934e Xerox Corporation +9c93b0 Megatronix (Beijing) Technology Co., Ltd. +9c93e4 Private +9c95f8 SmartDoor Systems, LLC +9c9726 Technicolor +9c9811 Guangzhou Sunrise Electronics Development Co., Ltd +9c99a0 Xiaomi Communications Co Ltd +9c99cd Voippartners +9c9c1d Starkey Labs Inc. +9c9c40 SICHUAN TIANYI COMHEART TELECOMCO., LTD +9c9d5d Raden Inc +9ca10a SCLE SFE +9ca134 Nike, Inc. +9ca3a9 Guangzhou Juan Optical and Electronical Tech Joint Stock Co., Ltd +9ca3ba SAKURA Internet Inc. +9ca525 Shandong USR IOT Technology Limited +9ca577 Osorno Enterprises Inc. +9ca5c0 vivo Mobile Communication Co., Ltd. +9ca615 TP-LINK TECHNOLOGIES CO.,LTD. +9ca69d Whaley Technology Co.Ltd +9ca9e4 zte corporation +9caa1b Microsoft Corporation +9cac6d Universal Electronics, Inc. +9cad97 Hon Hai Precision Ind. Co.,Ltd. +9cadef Obihai Technology, Inc. +9caed3 Seiko Epson Corporation +9caf6f ITEL MOBILE LIMITED +9cafca Cisco Systems, Inc +9cb008 Ubiquitous Computing Technology Corporation +9cb206 PROCENTEC +9cb2b2 HUAWEI TECHNOLOGIES CO.,LTD +9cb654 Hewlett Packard +9cb6d0 Rivet Networks +9cb70d Liteon Technology Corporation +9cb793 Creatcomm Technology Inc. +9cbb98 Shen Zhen RND Electronic Co.,LTD +9cbd9d SkyDisk, Inc. +9cbee0 Biosoundlab Co., Ltd. +9cc077 PrintCounts, LLC +9cc0d2 Conductix-Wampfler GmbH +9cc172 HUAWEI TECHNOLOGIES CO.,LTD +9cc7a6 AVM GmbH +9cc7d1 SHARP Corporation +9cc8ae Becton, Dickinson and Company +9cc8fc ARRIS Group, Inc. +9cc950 Baumer Holding +9ccad9 Nokia Corporation +9ccc83 Juniper Networks +9ccd82 CHENG UEI PRECISION INDUSTRY CO.,LTD +9cd21e Hon Hai Precision Ind. Co.,Ltd. +9cd24b zte corporation +9cd332 PLC Technology Ltd +9cd35b Samsung Electronics Co.,Ltd +9cd36d NETGEAR +9cd48b Innolux Technology Europe BV +9cd643 D-Link International +9cd917 Motorola Mobility LLC, a Lenovo Company +9cd9cb Lesira Manufacturing Pty Ltd +9cda3e Intel Corporate +9cdb07 Thum+Mahr GmbH +9cdc71 Hewlett Packard Enterprise +9cdd1f Intelligent Steward Co.,Ltd +9cdf03 Harman/Becker Automotive Systems GmbH +9cdfb1 Shenzhen Crave Communication Co., LTD +9ce063 Samsung Electronics Co.,Ltd +9ce10e NCTech Ltd +9ce1d6 Junger Audio-Studiotechnik GmbH +9ce230 JULONG CO,.LTD. +9ce33f Apple, Inc. +9ce374 HUAWEI TECHNOLOGIES CO.,LTD +9ce635 Nintendo Co., Ltd. +9ce65e Apple, Inc. +9ce6e7 Samsung Electronics Co.,Ltd +9ce7bd Winduskorea co., Ltd +9ce82b vivo Mobile Communication Co., Ltd. +9ce895 New H3C Technologies Co., Ltd +9ce951 Shenzhen Sang Fei Consumer Communications Ltd., Co. +9cebe8 BizLink (Kunshan) Co.,Ltd +9cefd5 Panda Wireless, Inc. +9cf387 Apple, Inc. +9cf48e Apple, Inc. +9cf531 GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD +9cf61a UTC Fire and Security +9cf67d Ricardo Prague, s.r.o. +9cf6dd IEEE Registration Authority +9cf8db shenzhen eyunmei technology co,.ltd +9cf938 AREVA NP GmbH +9cfbd5 vivo Mobile Communication Co., Ltd. +9cfbf1 MESOMATIC GmbH & Co.KG +9cfc01 Apple, Inc. +9cfcd1 Aetheris Technology (Shanghai) Co., Ltd. +9cfea1 Fiberhome Telecommunication Technologies Co.,LTD +9cffbe OTSL Inc. +9cffc2 AVI Systems GmbH +a002dc Amazon Technologies Inc. +a00363 Robert Bosch Healthcare GmbH +a0043e Parker Hannifin Manufacturing Germany GmbH & Co. KG +a00460 NETGEAR +a00627 NEXPA System +a00798 Samsung Electronics Co.,Ltd +a007b6 Advanced Technical Support, Inc. +a0086f HUAWEI TECHNOLOGIES CO.,LTD +a0094c CenturyLink +a009ed Avaya Inc +a00abf Wieson Technologies Co., Ltd. +a00bba SAMSUNG ELECTRO MECHANICS CO., LTD. +a00ca1 SKTB SKiT +a01081 Samsung Electronics Co.,Ltd +a01290 Avaya Inc +a012db TABUCHI ELECTRIC CO.,LTD +a0133b HiTi Digital, Inc. +a013cb Fiberhome Telecommunication Technologies Co.,LTD +a0143d PARROT SA +a0165c Triteka LTD +a01828 Apple, Inc. +a01859 Shenzhen Yidashi Electronics Co Ltd +a01917 Bertel S.p.a. +a019b2 IEEE Registration Authority +a01b29 Sagemcom Broadband SAS +a01c05 NIMAX TELECOM CO.,LTD. +a01d48 Hewlett Packard +a01e0b MINIX Technology Limited +a020a6 Espressif Inc. +a02195 Samsung Electronics Co.,Ltd +a021b7 NETGEAR +a0231b TeleComp R&D Corp. +a0239f Cisco Systems, Inc +a02833 IEEE Registration Authority +a028ed HMD Global Oy +a02bb8 Hewlett Packard +a02c36 FN-LINK TECHNOLOGY LIMITED +a02ef3 United Integrated Services Co., Led. +a03299 Lenovo (Beijing) Co., Ltd. +a0341b Adero Inc +a0369f Intel Corporate +a036f0 Comprehensive Power +a036fa Ettus Research LLC +a038f8 OURA Health Oy +a039ee Sagemcom Broadband SAS +a039f7 LG Electronics (Mobile Communications) +a03a75 PSS Belgium N.V. +a03b1b Inspire Tech +a03be3 Apple, Inc. +a03d6f Cisco Systems, Inc +a03e6b IEEE Registration Authority +a04025 Actioncable, Inc. +a04041 SAMWONFA Co.,Ltd. +a040a0 NETGEAR +a04147 Huawei Device Co., Ltd. +a0415e Opsens Solution Inc. +a041a7 NL Ministry of Defense +a0423f Tyan Computer Corp +a04246 IT Telecom Co., Ltd. +a043db Sitael S.p.A. +a047d7 Best IT World (India) Pvt Ltd +a0481c Hewlett Packard +a04c5b Shenzhen TINNO Mobile Technology Corp. +a04cc1 Helixtech Corp. +a04e01 CENTRAL ENGINEERING co.,ltd. +a04e04 Nokia Corporation +a04ea7 Apple, Inc. +a04fd4 ADB Broadband Italia +a0510b Intel Corporate +a051c6 Avaya Inc +a0554f Cisco Systems, Inc +a055de ARRIS Group, Inc. +a056b2 Harman/Becker Automotive Systems GmbH +a056f3 Apple, Inc. +a057e3 HUAWEI TECHNOLOGIES CO.,LTD +a0593a V.D.S. Video Display Systems srl +a05aa4 Grand Products Nevada, Inc. +a05b21 ENVINET GmbH +a05dc1 TMCT Co., LTD. +a05de7 DIRECTV, Inc. +a05e6b MELPER Co., Ltd. +a06090 Samsung Electronics Co.,Ltd +a06391 NETGEAR +a0648f ASKEY COMPUTER CORP +a06518 VNPT TECHNOLOGY +a06610 FUJITSU LIMITED +a067be Sicon srl +a06986 Wellav Technologies Ltd +a06a00 Verilink Corporation +a06a44 Vizio, Inc +a06cec RIM +a06d09 Intelcan Technosystems Inc. +a06e50 Nanotek Elektronik Sistemler Ltd. Sti. +a06faa LG Innotek +a07099 Beijing Huacan Electronics Co., Ltd +a071a9 Nokia Corporation +a0722c HUMAX Co., Ltd. +a072e4 NJ SYSTEM CO.,LTD +a07332 Cashmaster International Limited +a073fc Rancore Technologies Private Limited +a07591 Samsung Electronics Co.,Ltd +a075ea BoxLock, Inc. +a07771 Vialis BV +a078ba Pantech Co., Ltd. +a0821f Samsung Electronics Co.,Ltd +a082ac Linear DMS Solutions Sdn. Bhd. +a082c7 P.T.I Co.,LTD +a084cb SonicSensory,Inc. +a0861d Chengdu Fuhuaxin Technology co.,Ltd +a086c6 Xiaomi Communications Co Ltd +a086ec SAEHAN HITEC Co., Ltd +a08869 Intel Corporate +a088b4 Intel Corporate +a089e4 Skyworth Digital Technology(Shenzhen) Co.,Ltd +a08a87 HuiZhou KaiYue Electronic Co.,Ltd +a08c15 Gerhard D. Wempe KG +a08c9b Xtreme Technologies Corp +a08cf8 HUAWEI TECHNOLOGIES CO.,LTD +a08cfd Hewlett Packard +a08d16 HUAWEI TECHNOLOGIES CO.,LTD +a08e78 Sagemcom Broadband SAS +a090de VEEDIMS,LLC +a09169 LG Electronics (Mobile Communications) +a091a2 OnePlus Electronics (Shenzhen) Co., Ltd. +a091c8 zte corporation +a09347 GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD +a09351 Cisco Systems, Inc +a0946a Shenzhen XGTEC Technology Co,.Ltd. +a0950c China Mobile IOT Company Limited +a09805 OpenVox Communication Co Ltd +a098ed Shandong Intelligent Optical Communication Development Co., Ltd. +a0999b Apple, Inc. +a09a5a Time Domain +a09bbd Total Aviation Solutions Pty Ltd +a09d86 Alcatel-Lucent Shanghai Bell Co., Ltd +a09d91 SoundBridge +a09dc1 China Dragon Technology Limited +a09e1a Polar Electro Oy +a0a130 DLI Taiwan Branch office +a0a23c GPMS +a0a33b HUAWEI TECHNOLOGIES CO.,LTD +a0a3b8 WISCLOUD +a0a3e2 Actiontec Electronics, Inc +a0a4c5 Intel Corporate +a0a65c Supercomputing Systems AG +a0a763 Polytron Vertrieb GmbH +a0a8cd Intel Corporate +a0aafd EraThink Technologies Corp. +a0ab1b D-Link International +a0ab51 WEIFANG GOERTEK ELECTRONICS CO.,LTD +a0ada1 JMR Electronics, Inc +a0afbd Intel Corporate +a0b045 Halong Mining +a0b100 ShenZhen Cando Electronics Co.,Ltd +a0b3cc Hewlett Packard +a0b437 GD Mission Systems +a0b4a5 Samsung Electronics Co.,Ltd +a0b549 Arcadyan Corporation +a0b5da HongKong THTF Co., Ltd +a0b662 Acutvista Innovation Co., Ltd. +a0b8f8 Amgen U.S.A. Inc. +a0b9ed Skytap +a0bab8 Pixon Imaging +a0bb3e IEEE Registration Authority +a0bd1d Zhejiang Dahua Technology Co., Ltd. +a0bdcd BSkyB Ltd +a0bf50 S.C. ADD-PRODUCTION S.R.L. +a0bfa5 CORESYS +a0c2de Costar Video Systems +a0c3de Triton Electronic Systems Ltd. +a0c4a5 SYGN HOUSE CO.,LTD +a0c562 ARRIS Group, Inc. +a0c589 Intel Corporate +a0c5f2 IEEE Registration Authority +a0c6ec ShenZhen ANYK Technology Co.,LTD +a0c9a0 Murata Manufacturing Co., Ltd. +a0cbfd Samsung Electronics Co.,Ltd +a0cc2b Murata Manufacturing Co., Ltd. +a0cec8 CE LINK LIMITED +a0cf5b Cisco Systems, Inc +a0d12a AXPRO Technology Inc. +a0d37a Intel Corporate +a0d385 AUMA Riester GmbH & Co. KG +a0d3c1 Hewlett Packard +a0d635 WBS Technology +a0d795 Apple, Inc. +a0d807 Huawei Device Co., Ltd. +a0d86f ARGO AI, LLC +a0da92 Nanjing Glarun Atten Technology Co. Ltd. +a0dc04 Becker-Antriebe GmbH +a0dd97 PolarLink Technologies, Ltd +a0dde5 SHARP Corporation +a0de05 JSC Irbis-T +a0df15 HUAWEI TECHNOLOGIES CO.,LTD +a0e0af Cisco Systems, Inc +a0e201 AVTrace Ltd.(China) +a0e25a Amicus SK, s.r.o. +a0e295 DAT System Co.,Ltd +a0e453 Sony Mobile Communications Inc +a0e4cb Zyxel Communications Corporation +a0e534 Stratec Biomedical AG +a0e5e9 enimai Inc +a0e617 MATIS +a0e6f8 Texas Instruments +a0e9db Ningbo FreeWings Technologies Co.,Ltd +a0eb76 AirCUVE Inc. +a0ec80 zte corporation +a0ecf9 Cisco Systems, Inc +a0edcd Apple, Inc. +a0ef84 Seine Image Int'l Co., Ltd +a0f217 GE Medical System(China) Co., Ltd. +a0f3c1 TP-LINK TECHNOLOGIES CO.,LTD. +a0f3e4 Alcatel-Lucent IPD +a0f419 Nokia Corporation +a0f450 HTC Corporation +a0f459 FN-LINK TECHNOLOGY LIMITED +a0f479 HUAWEI TECHNOLOGIES CO.,LTD +a0f6fd Texas Instruments +a0f849 Cisco Systems, Inc +a0f895 Shenzhen TINNO Mobile Technology Corp. +a0f9b7 Ademco Smart Homes Technology(Tianjin)Co.,Ltd. +a0f9e0 VIVATEL COMPANY LIMITED +a0fc6e Telegrafia a.s. +a0fe61 Vivint Wireless Inc. +a0fe91 AVAT Automation GmbH +a400e2 HUAWEI TECHNOLOGIES CO.,LTD +a40130 ABIsystems Co., LTD +a402b9 Intel Corporate +a40450 nFore Technology Inc. +a4059e STA Infinity LLP +a407b6 Samsung Electronics Co.,Ltd +a408ea Murata Manufacturing Co., Ltd. +a408f5 Sagemcom Broadband SAS +a409cb Alfred Kaercher GmbH & Co KG +a40bed Carry Technology Co.,Ltd +a40c66 Shenzhen Colorful Yugong Technology and Development Co., Ltd. +a40cc3 Cisco Systems, Inc +a40dbc Xiamen Intretech Inc. +a40e2b Facebook Inc +a41115 Robert Bosch Engineering and Business Solutions pvt. Ltd. +a41162 Arlo Technology +a41163 IEEE Registration Authority +a41194 Lenovo +a41232 GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD +a41242 NEC Platforms, Ltd. +a4134e Luxul +a41437 Hangzhou Hikvision Digital Technology Co.,Ltd. +a41566 WEIFANG GOERTEK ELECTRONICS CO.,LTD +a41588 ARRIS Group, Inc. +a41731 Hon Hai Precision Ind. Co.,Ltd. +a41791 Shenzhen Decnta Technology Co.,LTD. +a41875 Cisco Systems, Inc +a41908 Fiberhome Telecommunication Technologies Co.,LTD +a41bc0 Fastec Imaging Corporation +a41f72 Dell Inc. +a4218a Nortel Networks +a42305 Open Networking Laboratory +a424b3 FlatFrog Laboratories AB +a424dd Cambrionix Ltd +a4251b Avaya Inc +a42618 Integrated Device Technology (Malaysia) Sdn. Bhd. +a42655 LTI Motion (Shanghai) Co., Ltd. +a42940 Shenzhen YOUHUA Technology Co., Ltd +a42983 Boeing Defence Australia +a429b7 bluesky +a42b8c NETGEAR +a42bb0 TP-LINK TECHNOLOGIES CO.,LTD. +a42c08 Masterwork Automodules +a43111 ZIV +a43135 Apple, Inc. +a433d1 Fibrlink Communications Co.,Ltd. +a433d7 MitraStar Technology Corp. +a43412 Thales Alenia Space +a434d9 Intel Corporate +a434f1 Texas Instruments +a43523 Guangdong Donyan Network Technologies Co.,Ltd. +a43831 RF elements s.r.o. +a438cc Nintendo Co.,Ltd +a438fc Plastic Logic +a43a69 Vers Inc +a43bfa IEEE Registration Authority +a43d78 GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD +a43e51 ANOV FRANCE +a43ea0 iComm HK LIMITED +a44027 zte corporation +a444d1 Wingtech Group (HongKong)Limited +a44519 Xiaomi Communications Co Ltd +a445cd IoT Diagnostics +a4466b EOC Technology +a446fa AmTRAN Video Corporation +a44ad3 ST Electronics(Shanghai) Co.,Ltd +a44b15 Sun Cupid Technology (HK) LTD +a44c11 Cisco Systems, Inc +a44cc8 Dell Inc. +a44e2d Adaptive Wireless Solutions, LLC +a44e31 Intel Corporate +a44f29 IEEE Registration Authority +a45046 Xiaomi Communications Co Ltd +a45055 BUSWARE.DE +a4516f Microsoft Mobile Oy +a4526f ADB Broadband Italia +a4530e Cisco Systems, Inc +a45385 WEIFANG GOERTEK ELECTRONICS CO.,LTD +a45602 fenglian Technology Co.,Ltd. +a4561b MCOT Corporation +a45630 Cisco Systems, Inc +a456cc Technicolor CH USA Inc. +a4580f IEEE Registration Authority +a45a1c smart-electronic GmbH +a45c27 Nintendo Co., Ltd. +a45d36 Hewlett Packard +a45da1 ADB Broadband Italia +a45e60 Apple, Inc. +a45f9b Nexell +a46011 Verifone +a46032 MRV Communications (Networks) LTD +a46191 NamJunSa +a462df DS Global. Co., LTD +a463a1 Inventus Power Eletronica do Brasil LTDA +a46706 Apple, Inc. +a468bc Private +a46c2a Cisco Systems, Inc +a46cc1 LTi REEnergy GmbH +a46cf1 Samsung Electronics Co.,Ltd +a46e79 DFT System Co.Ltd +a470d6 Motorola Mobility LLC, a Lenovo Company +a47174 HUAWEI TECHNOLOGIES CO.,LTD +a47733 Google, Inc. +a47758 Ningbo Freewings Technologies Co.,Ltd +a47760 Nokia Corporation +a47886 Avaya Inc +a479e4 KLINFO Corp +a47aa4 ARRIS Group, Inc. +a47acf VIBICOM COMMUNICATIONS INC. +a47b2c Nokia +a47b85 ULTIMEDIA Co Ltd, +a47b9d Espressif Inc. +a47c14 ChargeStorm AB +a47c1f Cobham plc +a47e39 zte corporation +a4817a CIG SHANGHAI CO LTD +a481ee Nokia Corporation +a48269 Datrium, Inc. +a483e7 Apple, Inc. +a48431 Samsung Electronics Co.,Ltd +a4856b Q Electronics Ltd +a486ae Quectel Wireless Solutions +a4895b ARK INFOSOLUTIONS PVT LTD +a48cc0 JLG Industries, Inc. +a48cdb Lenovo +a48d3b Vizio, Inc +a48e0a DeLaval International AB +a49005 CHINA GREATWALL COMPUTER SHENZHEN CO.,LTD +a491b1 Technicolor +a492cb Nokia +a4933f HUAWEI TECHNOLOGIES CO.,LTD +a4934c Cisco Systems, Inc +a49426 Elgama-Elektronika Ltd. +a4975c VTech Telecommunications Ltd. +a497bb Hitachi Industrial Equipment Systems Co.,Ltd +a49813 ARRIS Group, Inc. +a49947 HUAWEI TECHNOLOGIES CO.,LTD +a49981 FuJian Elite Power Tech CO.,LTD. +a49a58 Samsung Electronics Co.,Ltd +a49b13 Digital Check +a49b4f HUAWEI TECHNOLOGIES CO.,LTD +a49bf5 Hybridserver Tec GmbH +a49d49 Ketra, Inc. +a49edb AutoCrib, Inc. +a49f85 Lyve Minds, Inc +a49f89 Shanghai Rui Rui Communication Technology Co.Ltd. +a4a179 Nanjing dianyan electric power automation co. LTD +a4a1c2 Ericsson AB +a4a1e4 Innotube, Inc. +a4a24a Cisco SPVTG +a4a4d3 Bluebank Communication Technology Co.Ltd +a4a6a9 Private +a4a80f Shenzhen Coship Electronics Co., Ltd. +a4ad00 Ragsdale Technology +a4adb8 Vitec Group, Camera Dynamics Ltd +a4ae11 Hon Hai Precision Ind. Co., Ltd. +a4ae9a Maestro Wireless Solutions ltd. +a4b121 Arantia 2010 S.L. +a4b197 Apple, Inc. +a4b1e9 Technicolor +a4b1ee H. ZANDER GmbH & Co. KG +a4b2a7 Adaxys Solutions AG +a4b36a JSC SDO Chromatec +a4b52e Integrated Device Technology (Malaysia) Sdn. Bhd. +a4b805 Apple, Inc. +a4b818 PENTA Gesellschaft für elektronische Industriedatenverarbeitung mbH +a4b980 Parking BOXX Inc. +a4ba76 HUAWEI TECHNOLOGIES CO.,LTD +a4badb Dell Inc. +a4bbaf Lime Instruments +a4be2b HUAWEI TECHNOLOGIES CO.,LTD +a4be61 EutroVision System, Inc. +a4bf01 Intel Corporate +a4c0c7 ShenZhen Hitom Communication Technology Co..LTD +a4c0e1 Nintendo Co., Ltd. +a4c138 Telink Semiconductor (Taipei) Co. Ltd. +a4c2ab Hangzhou LEAD-IT Information & Technology Co.,Ltd +a4c361 Apple, Inc. +a4c3f0 Intel Corporate +a4c494 Intel Corporate +a4c64f HUAWEI TECHNOLOGIES CO.,LTD +a4c7de Cambridge Industries(Group) Co.,Ltd. +a4c939 GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD +a4caa0 HUAWEI TECHNOLOGIES CO.,LTD +a4cc32 Inficomm Co., Ltd +a4cd23 Shenzhenshi Xinzhongxin Co., Ltd +a4cf12 Espressif Inc. +a4d094 Erwin Peters Systemtechnik GmbH +a4d18c Apple, Inc. +a4d18f Shenzhen Skyee Optical Fiber Communication Technology Ltd. +a4d1d1 ECOtality North America +a4d1d2 Apple, Inc. +a4d3b5 GLITEL Stropkov, s.r.o. +a4d4b2 Shenzhen MeiG Smart Technology Co.,Ltd +a4d578 Texas Instruments +a4d856 Gimbal, Inc +a4d8ca HONG KONG WATER WORLD TECHNOLOGY CO. LIMITED +a4d931 Apple, Inc. +a4d990 Samsung Electronics Co.,Ltd +a4d9a4 neXus ID Solutions AB +a4da22 IEEE Registration Authority +a4da32 Texas Instruments +a4da3f Bionics Corp. +a4db2e Kingspan Environmental Ltd +a4db30 Liteon Technology Corporation +a4dcbe HUAWEI TECHNOLOGIES CO.,LTD +a4de50 Total Walther GmbH +a4dec9 QLove Mobile Intelligence Information Technology (W.H.) Co. Ltd. +a4e0e6 FILIZOLA S.A. PESAGEM E AUTOMACAO +a4e31b Nokia +a4e32e Silicon & Software Systems Ltd. +a4e391 DENY FONTAINE +a4e4b8 BlackBerry RTS +a4e597 Gessler GmbH +a4e615 SHENZHEN CHUANGWEI-RGB ELECTRONICS CO.,LTD +a4e6b1 Shanghai Joindata Technology Co.,Ltd. +a4e731 Nokia Corporation +a4e7e4 Connex GmbH +a4e975 Apple, Inc. +a4e991 SISTEMAS AUDIOVISUALES ITELSIS S.L. +a4e9a3 Honest Technology Co., Ltd +a4ea8e Extreme Networks, Inc. +a4ebd3 Samsung Electronics Co.,Ltd +a4ed43 IEEE Registration Authority +a4ed4e ARRIS Group, Inc. +a4ee57 Seiko Epson Corporation +a4ef52 Telewave Co., Ltd. +a4f05e GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD +a4f1e8 Apple, Inc. +a4f3c1 Open Source Robotics Foundation, Inc. +a4f3e7 Integrated Device Technology (Malaysia) Sdn. Bhd. +a4f465 ITEL MOBILE LIMITED +a4f4c2 VNPT TECHNOLOGY +a4f522 CHOFU SEISAKUSHO CO.,LTD +a4f7d0 LAN Accessories Co., Ltd. +a4fb8d Hangzhou Dunchong Technology Co.Ltd +a4fc77 Mega Well Limited +a4fcce Security Expert Ltd. +a8016d Aiwa Corporation +a80180 IMAGO Technologies GmbH +a80600 Samsung Electronics Co.,Ltd +a80c0d Cisco Systems, Inc +a80c63 HUAWEI TECHNOLOGIES CO.,LTD +a80cca Shenzhen Sundray Technologies Company Limited +a81087 Texas Instruments +a811fc ARRIS Group, Inc. +a81374 Panasonic Corporation AVC Networks Company +a8154d TP-LINK TECHNOLOGIES CO.,LTD. +a81559 Breathometer, Inc. +a815d6 Shenzhen Meione Technology CO., LTD +a816b2 LG Electronics (Mobile Communications) +a816d0 Samsung Electronics Co.,Ltd +a81758 Elektronik System i Umeå AB +a81b18 XTS CORP +a81b5a GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD +a81b5d Foxtel Management Pty Ltd +a81b6a Texas Instruments +a81d16 AzureWave Technology Inc. +a81e84 QUANTA COMPUTER INC. +a81faf KRYPTON POLSKA +a82066 Apple, Inc. +a823fe LG Electronics +a824eb ZAO NPO Introtest +a825eb Cambridge Industries(Group) Co.,Ltd. +a826d9 HTC Corporation +a8294c Precision Optical Transceivers, Inc. +a82bb5 Edgecore Networks Corporation +a82bb9 Samsung Electronics Co.,Ltd +a82bd6 Shina System Co., Ltd +a830ad WEIFANG GOERTEK ELECTRONICS CO.,LTD +a8329a Digicom Futuristic Technologies Ltd. +a8346a Samsung Electronics Co.,Ltd +a8367a frogblue TECHNOLOGY GmbH +a83944 Actiontec Electronics, Inc +a83ccb ROSSMA +a83e0e HMD Global Oy +a83fa1 IEEE Registration Authority +a84041 Dragino Technology Co., Limited +a84481 Nokia Corporation +a845cd Siselectron Technology LTD. +a845e9 Firich Enterprises CO., LTD. +a8474a Hon Hai Precision Ind. Co.,Ltd. +a8494d HUAWEI TECHNOLOGIES CO.,LTD +a849a5 Lisantech Co., Ltd. +a84e3f Hitron Technologies. Inc +a8515b Samsung Electronics Co.,Ltd +a854b2 Wistron Neweb Corporation +a8556a Pocketnet Technology Inc. +a8574e TP-LINK TECHNOLOGIES CO.,LTD. +a85840 Cambridge Industries(Group) Co.,Ltd. +a85af3 Shanghai Siflower Communication Technology Co., Ltd +a85b6c Robert Bosch Gmbh, CM-CI2 +a85b78 Apple, Inc. +a85bb0 Shenzhen Dehoo Technology Co.,Ltd +a85bf3 Audivo GmbH +a85c2c Apple, Inc. +a85e45 ASUSTek COMPUTER INC. +a85ee4 12Sided Technology, LLC +a860b6 Apple, Inc. +a8610a ARDUINO AG +a861aa Cloudview Limited +a862a2 JIWUMEDIA CO., LTD. +a863df DISPLAIRE CORPORATION +a863f2 Texas Instruments +a86405 nimbus 9, Inc +a865b2 DONGGUAN YISHANG ELECTRONIC TECHNOLOGY CO., LIMITED +a8667f Apple, Inc. +a86a6f RIM +a86ac1 HanbitEDS Co., Ltd. +a86b7c SHENZHEN FENGLIAN TECHNOLOGY CO., LTD. +a86bad Hon Hai Precision Ind. Co.,Ltd. +a86d5f Raisecom Technology CO., LTD +a86daa Intel Corporate +a870a5 UniComm Inc. +a87285 IDT, INC. +a8741d PHOENIX CONTACT Electronics GmbH +a875d6 FreeTek International Co., Ltd. +a875e2 Aventura Technologies, Inc. +a8776f Zonoff +a87b39 Nokia Corporation +a87c01 Samsung Electronics Co.,Ltd +a87d12 HUAWEI TECHNOLOGIES CO.,LTD +a87e33 Nokia Danmark A/S +a88038 ShenZhen MovingComm Technology Co., Limited +a88195 Samsung Electronics Co.,Ltd +a881f1 BMEYE B.V. +a88200 Hisense Electric Co.,Ltd +a8827f CIBN Oriental Network(Beijing) CO.,Ltd +a886dd Apple, Inc. +a88792 Broadband Antenna Tracking Systems +a887b3 Samsung Electronics Co.,Ltd +a887ed ARC Wireless LLC +a88808 Apple, Inc. +a88cee MicroMade Galka i Drozdz sp.j. +a88d7b SunDroid Global limited. +a88e24 Apple, Inc. +a89008 Beijing Yuecheng Technology Co. Ltd. +a89042 Beijing Wanwei Intelligent Technology Co., Ltd. +a8922c LG Electronics (Mobile Communications) +a89352 SHANGHAI ZHONGMI COMMUNICATION TECHNOLOGY CO.,LTD +a893e6 JIANGXI JINGGANGSHAN CKING COMMUNICATION TECHNOLOGY CO.,LTD +a895b0 Aker Subsea Ltd +a89675 Motorola Mobility LLC, a Lenovo Company +a8968a Apple, Inc. +a897dc IBM +a898c6 Shinbo Co., Ltd. +a8995c aizo ag +a89969 Dell Inc. +a89a93 Sagemcom Broadband SAS +a89b10 inMotion Ltd. +a89ca4 Furrion Limited +a89ced Xiaomi Communications Co Ltd +a89d21 Cisco Systems, Inc +a89dd2 Shanghai DareGlobal Technologies Co.,Ltd +a89fba Samsung Electronics Co.,Ltd +a89fec ARRIS Group, Inc. +a8a089 Tactical Communications +a8a159 ASRock Incorporation +a8a198 TCT mobile ltd +a8a5e2 MSF-Vathauer Antriebstechnik GmbH & Co KG +a8a648 Qingdao Hisense Communications Co.,Ltd. +a8a668 zte corporation +a8a795 Hon Hai Precision Ind. Co.,Ltd. +a8ad3d Alcatel-Lucent Shanghai Bell Co., Ltd +a8b0ae LEONI +a8b1d4 Cisco Systems, Inc +a8b2da FUJITSU LIMITED +a8b456 Cisco Systems, Inc +a8b86e LG Electronics (Mobile Communications) +a8b9b3 ESSYS +a8bb50 WiZ IoT Company Limited +a8bbcf Apple, Inc. +a8bc9c Cloud Light Technology Limited +a8bd1a Honey Bee (Hong Kong) Limited +a8bd27 Hewlett Packard Enterprise +a8bd3a UNIONMAN TECHNOLOGY CO.,LTD +a8be27 Apple, Inc. +a8bf3c HDV Phoelectron Technology Limited +a8c0ea Pepwave Limited +a8c222 TM-Research Inc. +a8c252 Huawei Device Co., Ltd. +a8c83a HUAWEI TECHNOLOGIES CO.,LTD +a8c87f Roqos, Inc. +a8ca7b HUAWEI TECHNOLOGIES CO.,LTD +a8cab9 SAMSUNG ELECTRO MECHANICS CO., LTD. +a8cb95 EAST BEST CO., LTD. +a8ccc5 Saab AB (publ) +a8ce90 CVC +a8d0e3 Systech Electronics Ltd +a8d0e5 Juniper Networks +a8d236 Lightware Visual Engineering +a8d3c8 Topcon Electronics GmbH & Co. KG +a8d3f7 Arcadyan Technology Corporation +a8d409 USA 111 Inc +a8d498 Avira Operations GmbH & Co. KG +a8d579 Beijing Chushang Science and Technology Co.,Ltd +a8d828 Ascensia Diabetes Care +a8d88a Wyconn +a8da01 Shenzhen NUOLIJIA Digital Technology Co.,Ltd +a8db03 SAMSUNG ELECTRO-MECHANICS(THAILAND) +a8e018 Nokia Corporation +a8e2c1 Texas Instruments +a8e2c3 Shenzhen YOUHUA Technology Co., Ltd +a8e3ee Sony Interactive Entertainment Inc. +a8e539 Moimstone Co.,Ltd +a8e544 HUAWEI TECHNOLOGIES CO.,LTD +a8e552 JUWEL Aquarium AG & Co. KG +a8e705 Fiberhome Telecommunication Technologies Co.,LTD +a8e824 INIM ELECTRONICS S.R.L. +a8eec6 Muuselabs NV/SA +a8ef26 Tritonwave +a8f038 SHEN ZHEN SHI JIN HUA TAI ELECTRONICS CO.,LTD +a8f274 Samsung Electronics Co.,Ltd +a8f470 Fujian Newland Communication Science Technologies Co.,Ltd. +a8f5ac HUAWEI TECHNOLOGIES CO.,LTD +a8f5dd ARRIS Group, Inc. +a8f7e0 PLANET Technology Corporation +a8f94b Eltex Enterprise Ltd. +a8fad8 Apple, Inc. +a8fb70 WiseSec L.t.d +a8fcb7 Consolidated Resource Imaging +aa0000 DIGITAL EQUIPMENT CORPORATION +aa0001 DIGITAL EQUIPMENT CORPORATION +aa0002 DIGITAL EQUIPMENT CORPORATION +aa0003 DIGITAL EQUIPMENT CORPORATION +aa0004 DIGITAL EQUIPMENT CORPORATION +ac00d0 zte corporation +ac0142 Uriel Technologies SIA +ac02ca HI Solutions, Inc. +ac02cf RW Tecnologia Industria e Comercio Ltda +ac02ef Comsis +ac040b Peloton Interactive, Inc +ac0481 Jiangsu Huaxing Electronics Co., Ltd. +ac0613 Senselogix Ltd +ac06c7 ServerNet S.r.l. +ac075f HUAWEI TECHNOLOGIES CO.,LTD +ac0a61 Labor S.r.L. +ac0d1b LG Electronics (Mobile Communications) +ac0dfe Ekon GmbH - myGEKKO +ac11d3 Suzhou HOTEK Video Technology Co. Ltd +ac1461 ATAW Co., Ltd. +ac14d2 wi-daq, inc. +ac1585 silergy corp +ac162d Hewlett Packard +ac1702 Fibar Group sp. z o.o. +ac17c8 Cisco Meraki +ac1826 Seiko Epson Corporation +ac199f SUNGROW POWER SUPPLY CO.,LTD. +ac1ddf IEEE Registration Authority +ac1f6b Super Micro Computer, Inc. +ac1f74 Apple, Inc. +ac1fd7 Real Vision Technology Co.,Ltd. +ac202e Hitron Technologies. Inc +ac203e Wuhan Tianyu Information Industry Co., Ltd. +ac20aa DMATEK Co., Ltd. +ac2205 Compal Broadband Networks, Inc. +ac220b ASUSTek COMPUTER INC. +ac233f Shenzhen Minew Technologies Co., Ltd. +ac293a Apple, Inc. +ac2a0c CSR ZHUZHOU INSTITUTE CO.,LTD. +ac2b6e Intel Corporate +ac2da3 TXTR GmbH +ac2da9 TECNO MOBILE LIMITED +ac2fa8 Humannix Co.,Ltd. +ac319d Shenzhen TG-NET Botone Technology Co.,Ltd. +ac34cb Shanhai GBCOM Communication Technology Co. Ltd +ac35ee FN-LINK TECHNOLOGY LIMITED +ac3613 Samsung Electronics Co.,Ltd +ac3743 HTC Corporation +ac37c9 RAID Incorporated +ac3870 Lenovo Mobile Communication Technology Ltd. +ac3a7a Roku, Inc. +ac3b77 Sagemcom Broadband SAS +ac3c0b Apple, Inc. +ac3cb4 Nilan A/S +ac3d05 Instorescreen Aisa +ac3d75 HANGZHOU ZHIWAY TECHNOLOGIES CO.,LTD. +ac3fa4 TAIYO YUDEN CO.,LTD +ac40ea C&T Solution Inc. +ac4122 Eclipse Electronic Systems Inc. +ac4228 Parta Networks +ac4330 Versa Networks +ac44f2 YAMAHA CORPORATION +ac4723 Genelec +ac482d Ralinwi Nanjing Electronic Technology Co., Ltd. +ac4afe Hisense Broadband Multimedia Technology Co.,Ltd. +ac4bc8 Juniper Networks +ac4e2e Shenzhen JingHanDa Electronics Co.Ltd +ac4e91 HUAWEI TECHNOLOGIES CO.,LTD +ac4ffc SVS-VISTEK GmbH +ac5036 Pi-Coral Inc +ac5093 Magna Electronics Europe GmbH & Co. OHG +ac512c Infinix mobility limited +ac5135 MPI TECH +ac51ee Cambridge Communication Systems Ltd +ac5474 China Mobile IOT Company Limited +ac54ec IEEE P1823 Standards Working Group +ac562c LAVA INTERNATIONAL(H.K) LIMITED +ac5775 HMD Global Oy +ac583b Human Assembler, Inc. +ac587b JCT Healthcare +ac5a14 Samsung Electronics Co.,Ltd +ac5aee China Mobile Group Device Co.,Ltd. +ac5d10 Pace Americas +ac5d5c FN-LINK TECHNOLOGY LIMITED +ac5e8c Utillink +ac5f3e SAMSUNG ELECTRO-MECHANICS(THAILAND) +ac60b6 Ericsson AB +ac6123 Drivven, Inc. +ac6175 HUAWEI TECHNOLOGIES CO.,LTD +ac61ea Apple, Inc. +ac620d Jabil Circuit(Wuxi) Co.,Ltd +ac63be Amazon Technologies Inc. +ac6417 Siemens AG +ac6462 zte corporation +ac64dd IEEE Registration Authority +ac6706 Ruckus Wireless +ac676f Electrocompaniet A.S. +ac6b0f CADENCE DESIGN SYSTEMS INC +ac6bac Jenny Science AG +ac6e1a SHENZHEN GONGJIN ELECTRONICS CO.,LT +ac6f4f Enspert Inc +ac6fbb TATUNG Technology Inc. +ac6fd9 Valueplus Inc. +ac710c China Mobile Group Device Co.,Ltd. +ac7236 Lexking Technology Co., Ltd. +ac7289 Intel Corporate +ac7409 Hangzhou H3C Technologies Co., Limited +ac751d HUAWEI TECHNOLOGIES CO.,LTD +ac7713 Honeywell Safety Products (Shanghai) Co.,Ltd +ac7a42 iConnectivity +ac7a4d ALPS ELECTRIC CO., LTD. +ac7ba1 Intel Corporate +ac7e8a Cisco Systems, Inc +ac7f3e Apple, Inc. +ac80d6 Hexatronic AB +ac8112 Gemtek Technology Co., Ltd. +ac81f3 Nokia Corporation +ac8317 Shenzhen Furtunetel Communication Co., Ltd +ac83e9 Beijing Zile Technology Co., Ltd +ac83f0 ImmediaTV Corporation +ac83f3 AMPAK Technology, Inc. +ac84c6 TP-LINK TECHNOLOGIES CO.,LTD. +ac84c9 Sagemcom Broadband SAS +ac853d HUAWEI TECHNOLOGIES CO.,LTD +ac8674 Open Mesh, Inc. +ac867e Create New Technology (HK) Limited Company +ac87a3 Apple, Inc. +ac88fd Apple, Inc. +ac8995 AzureWave Technology Inc. +ac8acd ROGER D.Wensker, G.Wensker sp.j. +ac8d14 Smartrove Inc +ac8d34 HUAWEI TECHNOLOGIES CO.,LTD +ac8ff8 Nokia +ac9232 HUAWEI TECHNOLOGIES CO.,LTD +ac932f Nokia Corporation +ac9403 Envision Peripherals Inc +ac9a22 NXP Semiconductors +ac9a96 Lantiq Deutschland GmbH +ac9b0a Sony Corporation +ac9b84 Smak Tecnologia e Automacao +ac9ce4 Alcatel-Lucent Shanghai Bell Co., Ltd +ac9e17 ASUSTek COMPUTER INC. +aca016 Cisco Systems, Inc +aca213 Shenzhen Bilian electronic CO.,LTD +aca22c Baycity Technologies Ltd +aca31e Aruba, a Hewlett Packard Enterprise Company +aca430 Peerless AV +aca46e SHENZHEN GONGJIN ELECTRONICS CO.,LT +aca667 Electronic Systems Protection, Inc. +aca88e SHARP Corporation +aca919 TrekStor GmbH +aca9a0 Audioengine, Ltd. +acab2e Beijing LasNubes Technology Co., Ltd. +acab8d Lyngso Marine A/S +acabbf AthenTek Inc. +acae19 Roku, Inc +acafb9 Samsung Electronics Co.,Ltd +acb1ee SHENZHEN FENDA TECHNOLOGY CO., LTD +acb313 ARRIS Group, Inc. +acb3b5 HUAWEI TECHNOLOGIES CO.,LTD +acb57d Liteon Technology Corporation +acb74f METEL s.r.o. +acb859 Uniband Electronic Corp, +acbb61 YSTen Technology Co.,Ltd +acbc32 Apple, Inc. +acbd0b IMAC CO.,LTD +acbd70 Huawei Device Co., Ltd. +acbe75 Ufine Technologies Co.,Ltd. +acbeb6 Visualedge Technology Co., Ltd. +acc1ee Xiaomi Communications Co Ltd +acc2ec CLT INT'L IND. CORP. +acc33a Samsung Electronics Co.,Ltd +acc358 Continental Automotive Czech Republic s.r.o. +acc51b Zhuhai Pantum Electronics Co., Ltd. +acc595 Graphite Systems +acc662 MitraStar Technology Corp. +acc698 Kohzu Precision Co., Ltd. +acc73f VITSMO CO., LTD. +acc935 Ness Corporation +acca54 Telldus Technologies AB +acca8e ODA Technologies +accaab Virtual Electric Inc +accaba Midokura Co., Ltd. +accb09 Hefcom Metering (Pty) Ltd +accc8e Axis Communications AB +acce8f HWA YAO TECHNOLOGIES CO., LTD +accf23 Hi-flying electronics technology Co.,Ltd +accf5c Apple, Inc. +accf85 HUAWEI TECHNOLOGIES CO.,LTD +acd074 Espressif Inc. +acd180 Crexendo Business Solutions, Inc. +acd1b8 Hon Hai Precision Ind. Co.,Ltd. +acd364 ABB SPA, ABB SACE DIV. +acd564 CHONGQING FUGUI ELECTRONICS CO.,LTD. +acd657 Shaanxi GuoLian Digital TV Technology Co.,Ltd. +acd9d6 tci GmbH +acdb48 ARRIS Group, Inc. +acdbda Shenzhen Geniatech Inc, Ltd +acdce5 Procter & Gamble Company +acde48 Private +ace010 Liteon Technology Corporation +ace069 ISAAC Instruments +ace215 HUAWEI TECHNOLOGIES CO.,LTD +ace2d3 Hewlett Packard +ace342 HUAWEI TECHNOLOGIES CO.,LTD +ace348 MadgeTech, Inc +ace42e SK hynix +ace4b5 Apple, Inc. +ace5f0 Doppler Labs +ace64b Shenzhen Baojia Battery Technology Co., Ltd. +ace77b SICHUAN TIANYI COMHEART TELECOMCO.,LTD +ace87b HUAWEI TECHNOLOGIES CO.,LTD +ace87e Bytemark Computer Consulting Ltd +ace97f IoT Tech Limited +ace9aa Hay Systems Ltd +acea6a GENIX INFOCOMM CO., LTD. +acec80 ARRIS Group, Inc. +aced5c Intel Corporate +acee3b 6harmonics Inc +acee70 Fontem Ventures BV +acee9e Samsung Electronics Co.,Ltd +acf0b2 Becker Electronics Taiwan Ltd. +acf1df D-Link International +acf2c5 Cisco Systems, Inc +acf5e6 Cisco Systems, Inc +acf6f7 LG Electronics (Mobile Communications) +acf7f3 Xiaomi Communications Co Ltd +acf85c Private +acf970 HUAWEI TECHNOLOGIES CO.,LTD +acf97e ELESYS INC. +acfd93 WEIFANG GOERTEK ELECTRONICS CO.,LTD +acfdce Intel Corporate +acfdec Apple, Inc. +acfe05 ITEL MOBILE LIMITED +b00073 Wistron Neweb Corporation +b000b4 Cisco Systems, Inc +b00247 AMPAK Technology, Inc. +b0027e MULLER SERVICES +b00594 Liteon Technology Corporation +b00875 HUAWEI TECHNOLOGIES CO.,LTD +b008bf Vital Connect, Inc. +b009d3 Avizia +b009da Ring Solutions +b00cd1 Hewlett Packard +b01041 Hon Hai Precision Ind. Co.,Ltd. +b01203 Dynamics Hong Kong Limited +b01266 Futaba-Kikaku +b01408 LIGHTSPEED INTERNATIONAL CO. +b01743 EDISON GLOBAL CIRCUITS LLC +b01886 SmarDTV +b019c6 Apple, Inc. +b01b7c Ontrol A.S. +b01bd2 Le Shi Zhi Xin Electronic Technology (Tianjin) Limited +b01c91 Elim Co +b01f29 Helvetia INC. +b01f81 IEEE Registration Authority +b024f3 Progeny Systems +b025aa Private +b02628 Broadcom Limited +b02680 Cisco Systems, Inc +b02a1f Wingtech Group (HongKong)Limited +b02a43 Google, Inc. +b03055 China Mobile IOT Company Limited +b033a6 Juniper Networks +b03495 Apple, Inc. +b0350b MOBIWIRE MOBILES (NINGBO) CO.,LTD +b0358d Nokia Corporation +b0359f Intel Corporate +b03829 Siliconware Precision Industries Co., Ltd. +b03850 Nanjing CAS-ZDC IOT SYSTEM CO.,LTD +b03956 NETGEAR +b03d96 Vision Valley FZ LLC +b03e51 BSkyB Ltd +b03eb0 MICRODIA Ltd. +b04089 Senient Systems LTD +b0411d ITTIM Technologies +b0416f Shenzhen Maxtang Computer Co.,Ltd +b0435d NuLEDs, Inc. +b04515 mira fitness,LLC. +b04519 TCT mobile ltd +b04545 YACOUB Automation GmbH +b046fc MitraStar Technology Corp. +b047bf Samsung Electronics Co.,Ltd +b0481a Apple, Inc. +b0487a TP-LINK TECHNOLOGIES CO.,LTD. +b0495f OMRON HEALTHCARE Co., Ltd. +b04bbf PT HAN SUNG ELECTORONICS INDONESIA +b04c05 Fresenius Medical Care Deutschland GmbH +b04e26 TP-LINK TECHNOLOGIES CO.,LTD. +b04fc3 Shenzhen NVC Cloud Technology Co., Ltd. +b050bc SHENZHEN BASICOM ELECTRONIC CO.,LTD. +b0518e Holl technology CO.Ltd. +b05216 Hon Hai Precision Ind. Co.,Ltd. +b05365 China Mobile IOT Company Limited +b05508 HUAWEI TECHNOLOGIES CO.,LTD +b05706 Vallox Oy +b058c4 Broadcast Microwave Services, Inc +b05947 Shenzhen Qihu Intelligent Technology Company Limited +b05ada Hewlett Packard +b05b1f THERMO FISHER SCIENTIFIC S.P.A. +b05b67 HUAWEI TECHNOLOGIES CO.,LTD +b05ce5 Nokia Corporation +b061c7 Ericsson-LG Enterprise +b06563 Shanghai Railway Communication Factory +b065bd Apple, Inc. +b065f1 WIO Manufacturing HK Limited +b0672f Bowers & Wilkins +b068b6 Hangzhou OYE Technology Co. Ltd +b068e6 CHONGQING FUGUI ELECTRONICS CO.,LTD. +b06971 DEI Sales, Inc. +b06cbf 3ality Digital Systems GmbH +b06ebf ASUSTek COMPUTER INC. +b06fe0 Samsung Electronics Co.,Ltd +b0700d Nokia +b0702d Apple, Inc. +b072bf Murata Manufacturing Co., Ltd. +b0750c QA Cafe +b0754d Nokia +b075d5 zte corporation +b077ac ARRIS Group, Inc. +b07870 Wi-NEXT, Inc. +b078f0 Beijing HuaqinWorld Technology Co.,Ltd. +b07908 Cummings Engineering +b0793c Revolv Inc +b07994 Motorola Mobility LLC, a Lenovo Company +b07d47 Cisco Systems, Inc +b07d62 Dipl.-Ing. H. Horstmann GmbH +b07e11 Texas Instruments +b07e70 Zadara Storage Ltd. +b07fb9 NETGEAR +b0808c Laser Light Engines +b081d8 I-sys Corp +b083d6 ARRIS Group, Inc. +b083fe Dell Inc. +b0869e Chloride S.r.L +b08807 Strata Worldwide +b08900 HUAWEI TECHNOLOGIES CO.,LTD +b08991 LGE +b089c2 Zyptonite +b08bcf Cisco Systems, Inc +b08e1a URadio Systems Co., Ltd +b09074 Fulan Electronics Limited +b0907e Cisco Systems, Inc +b090d4 Shenzhen Hoin Internet Technology Co., Ltd +b09122 Texas Instruments +b09134 Taleo +b09137 ISis ImageStream Internet Solutions, Inc +b0935b ARRIS Group, Inc. +b0958e TP-LINK TECHNOLOGIES CO.,LTD. +b0966c Lanbowan Technology Ltd. +b0973a E-Fuel Corporation +b0982b Sagemcom Broadband SAS +b0989f LG CNS +b09928 FUJITSU LIMITED +b09ae2 STEMMER IMAGING GmbH +b09bd4 GNH Software India Private Limited +b09fba Apple, Inc. +b0a10a Pivotal Systems Corporation +b0a2e7 Shenzhen TINNO Mobile Technology Corp. +b0a37e QING DAO HAIER TELECOM CO.,LTD. +b0a6f5 Xaptum, Inc. +b0a72a Ensemble Designs, Inc. +b0a737 Roku, Inc. +b0a86e Juniper Networks +b0aa36 GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD +b0aa77 Cisco Systems, Inc +b0aad2 Sichuan tianyi kanghe communications co., LTD +b0acd2 zte corporation +b0acfa FUJITSU LIMITED +b0adaa Avaya Inc +b0ae25 Varikorea +b0b28f Sagemcom Broadband SAS +b0b2dc Zyxel Communications Corporation +b0b32b Slican Sp. z o.o. +b0b3ad HUMAX Co., Ltd. +b0b448 Texas Instruments +b0b5e8 Ruroc LTD +b0b867 Hewlett Packard Enterprise +b0b8d5 Nanjing Nengrui Auto Equipment CO.,Ltd +b0b98a NETGEAR +b0bb8b WAVETEL TECHNOLOGY LIMITED +b0bd6d Echostreams Innovative Solutions +b0bda1 ZAKLAD ELEKTRONICZNY SIMS +b0be76 TP-LINK TECHNOLOGIES CO.,LTD. +b0bf99 WIZITDONGDO +b0c090 Chicony Electronics Co., Ltd. +b0c128 Adler ELREHA GmbH +b0c19e zte corporation +b0c205 BIONIME +b0c287 Technicolor CH USA Inc. +b0c387 GOEFER, Inc. +b0c46c Senseit +b0c4e7 Samsung Electronics Co.,Ltd +b0c554 D-Link International +b0c559 Samsung Electronics Co.,Ltd +b0c5ca IEEE Registration Authority +b0c69a Juniper Networks +b0c745 BUFFALO.INC +b0c83f Jiangsu Cynray IOT Co., Ltd. +b0c8ad People Power Company +b0c95b Beijing Symtech CO.,LTD +b0ca68 Apple, Inc. +b0ce18 Zhejiang shenghui lighting co.,Ltd +b0cf4d MI-Zone Technology Ireland +b0d09c Samsung Electronics Co.,Ltd +b0d2f5 Vello Systems, Inc. +b0d568 Shenzhen Cultraview Digital Technology Co., Ltd +b0d59d Shenzhen Zowee Technology Co., Ltd +b0d5cc Texas Instruments +b0d7c5 Logipix Ltd +b0d7cc Tridonic GmbH & Co KG +b0da00 CERA ELECTRONIQUE +b0daf9 ARRIS Group, Inc. +b0df3a Samsung Electronics Co.,Ltd +b0dfc1 Tenda Technology Co.,Ltd.Dongguan branch +b0e03c TCT mobile ltd +b0e17e HUAWEI TECHNOLOGIES CO.,LTD +b0e235 Xiaomi Communications Co Ltd +b0e2e5 Fiberhome Telecommunication Technologies Co.,LTD +b0e39d CAT SYSTEM CO.,LTD. +b0e50e NRG SYSTEMS INC +b0e5ed HUAWEI TECHNOLOGIES CO.,LTD +b0e71d Shanghai Maigantech Co.,Ltd +b0e754 2Wire Inc +b0e7de Homa Technologies JSC +b0e892 Seiko Epson Corporation +b0e97e Advanced Micro Peripherals +b0eabc ASKEY COMPUTER CORP +b0eb57 HUAWEI TECHNOLOGIES CO.,LTD +b0ec71 Samsung Electronics Co.,Ltd +b0ec8f GMX SAS +b0ece1 Private +b0ee45 AzureWave Technology Inc. +b0ee7b Roku, Inc +b0f1a3 Fengfan (BeiJing) Technology Co., Ltd. +b0f1bc Dhemax Ingenieros Ltda +b0f1ec AMPAK Technology, Inc. +b0f893 Shanghai MXCHIP Information Technology Co., Ltd. +b0f963 Hangzhou H3C Technologies Co., Limited +b0faeb Cisco Systems, Inc +b0fc0d Amazon Technologies Inc. +b0fc36 CyberTAN Technology Inc. +b0fd0b IEEE Registration Authority +b0febd Private +b40016 INGENICO TERMINALS SAS +b4009c CableWorld Ltd. +b40142 GCI Science & Technology Co.,LTD +b40216 Cisco Systems, Inc +b40418 Smartchip Integrated Inc. +b4055d Inspur Electronic Information Industry Co.,Ltd. +b40566 SP Best Corporation Co., LTD. +b407f9 SAMSUNG ELECTRO MECHANICS CO., LTD. +b40832 TC Communications +b40ac6 DEXON Systems Ltd. +b40b44 Smartisan Technology Co., Ltd. +b40b78 Brusa Elektronik AG +b40b7a Brusa Elektronik AG +b40c25 Palo Alto Networks +b40e96 HERAN +b40edc LG-Ericsson Co.,Ltd. +b40f3b Tenda Technology Co.,Ltd.Dongguan branch +b40fb3 vivo Mobile Communication Co., Ltd. +b41489 Cisco Systems, Inc +b41513 HUAWEI TECHNOLOGIES CO.,LTD +b41780 DTI Group Ltd +b418d1 Apple, Inc. +b41c30 zte corporation +b41d2b Shenzhen YOUHUA Technology Co., Ltd +b41def Internet Laboratories, Inc. +b4211d Beijing GuangXin Technology Co., Ltd +b4218a Dog Hunter LLC +b424e7 Codetek Technology Co.,Ltd +b428f1 E-Prime Co., Ltd. +b4293d Shenzhen Urovo Technology Co.,Ltd. +b42a0e Technicolor CH USA Inc. +b42a39 ORBIT MERRET, spol. s r. o. +b42c92 Zhejiang Weirong Electronic Co., Ltd +b42cbe Direct Payment Solutions Limited +b42d56 Extreme Networks, Inc. +b42e99 GIGA-BYTE TECHNOLOGY CO.,LTD. +b42ef8 Eline Technology co.Ltd +b43052 HUAWEI TECHNOLOGIES CO.,LTD +b430c0 York Instruments Ltd +b431b8 Aviwest +b4346c MATSUNICHI DIGITAL TECHNOLOGY (HONG KONG) LIMITED +b43564 Fujian Tian Cheng Electron Science & Technical Development Co.,Ltd. +b435f7 Zhejiang Pearmain Electronics Co.ltd. +b436a9 Fibocom Wireless Inc. +b436e3 KBVISION GROUP +b43741 Consert, Inc. +b437d1 IEEE Registration Authority +b43934 Pen Generations, Inc. +b43939 Shenzhen TINNO Mobile Technology Corp. +b439d6 ProCurve Networking by HP +b43a28 Samsung Electronics Co.,Ltd +b43db2 Degreane Horizon +b43e3b Viableware, Inc +b4417a SHENZHEN GONGJIN ELECTRONICS CO.,LT +b4430d Broadlink Pty Ltd +b44326 HUAWEI TECHNOLOGIES CO.,LTD +b4475e Avaya Inc +b447f5 Earda Technologies co Ltd +b44bd2 Apple, Inc. +b44bd6 IEEE Registration Authority +b44cc2 NR ELECTRIC CO., LTD +b44f96 Zhejiang Xinzailing Technology co., ltd +b45062 EmBestor Technology Inc. +b451f9 NB Software +b45253 Seagate Technology +b4527d Sony Mobile Communications Inc +b4527e Sony Mobile Communications Inc +b452a9 Texas Instruments +b45459 China Mobile (Hangzhou) Information Technology Co., Ltd. +b45570 Borea +b456b9 Teraspek Technologies Co.,Ltd +b45861 CRemote, LLC +b45ca4 Thing-talk Wireless Communication Technologies Corporation Limited +b45d50 Aruba, a Hewlett Packard Enterprise Company +b46077 Sichuan Changhong Electric Ltd. +b461ff Lumigon A/S +b46238 Exablox +b46293 Samsung Electronics Co.,Ltd +b462ad Elysia Germany GmbH +b46698 Zealabs srl +b467e9 Qingdao GoerTek Technology Co., Ltd. +b46921 Intel Corporate +b46bfc Intel Corporate +b46c47 Panasonic Appliances Company +b46d35 Dalian Seasky Automation Co;Ltd +b46d83 Intel Corporate +b47356 Hangzhou Treebear Networking Co., Ltd. +b47443 Samsung Electronics Co.,Ltd +b47447 CoreOS +b4749f ASKEY COMPUTER CORP +b4750e Belkin International Inc. +b47748 Shenzhen Neoway Technology Co.,Ltd. +b479a7 SAMSUNG ELECTRO-MECHANICS(THAILAND) +b479c8 Ruckus Wireless +b47c29 Shenzhen Guzidi Technology Co.,Ltd +b47c59 Jiangsu Hengxin Technology Co.,Ltd. +b47c9c Amazon Technologies Inc. +b47f5e Foresight Manufacture (S) Pte Ltd +b481bf Meta-Networks, LLC +b48255 Research Products Corporation +b4827b AKG Acoustics GmbH +b482c5 Relay2, Inc. +b482fe ASKEY COMPUTER CORP +b48547 Amptown System Company GmbH +b48655 HUAWEI TECHNOLOGIES CO.,LTD +b48910 Coster T.E. S.P.A. +b48b19 Apple, Inc. +b4944e WeTelecom Co., Ltd. +b49691 Intel Corporate +b49842 zte corporation +b4994c Texas Instruments +b499ba Hewlett Packard +b49a95 Shenzhen Boomtech Industrial Corporation +b49cdf Apple, Inc. +b49d0b BQ +b49db4 Axion Technologies Inc. +b49eac Imagik Int'l Corp +b49ee6 SHENZHEN TECHNOLOGY CO LTD +b4a2eb IEEE Registration Authority +b4a305 XIAMEN YAXON NETWORK CO., LTD. +b4a382 Hangzhou Hikvision Digital Technology Co.,Ltd. +b4a4b5 Zen Eye Co.,Ltd +b4a4e3 Cisco Systems, Inc +b4a5a9 MODI GmbH +b4a5ef Sercomm Corporation. +b4a828 Shenzhen Concox Information Technology Co., Ltd +b4a82b Histar Digital Electronics Co., Ltd. +b4a8b9 Cisco Systems, Inc +b4a94f MERCURY CORPORATION +b4a95a Avaya Inc +b4a984 Symantec Corporation +b4a9fc Quanta Computer Inc. +b4a9fe GHIA Technology (Shenzhen) LTD +b4aa4d Ensequence, Inc. +b4ab2c MtM Technology Corporation +b4ae2b Microsoft +b4ae6f Circle Reliance, Inc DBA Cranberry Networks +b4b017 Avaya Inc +b4b15a Siemens AG Energy Management Division +b4b265 DAEHO I&T +b4b362 zte corporation +b4b384 ShenZhen Figigantic Electronic Co.,Ltd +b4b52f Hewlett Packard +b4b542 Hubbell Power Systems, Inc. +b4b5af Minsung Electronics +b4b676 Intel Corporate +b4b686 Hewlett Packard +b4b859 Texa Spa +b4b88d Thuh Company +b4bc7c Texas Instruments +b4bff6 Samsung Electronics Co.,Ltd +b4c0f5 Shenzhen TINNO Mobile Technology Corp. +b4c170 Yi chip Microelectronics (Hangzhou) Co., Ltd +b4c44e VXL eTech Pvt Ltd +b4c476 Wuhan Maritime Communication Research Institute +b4c4fc Xiaomi Communications Co Ltd +b4c62e Molex CMS +b4c6f8 Axilspot Communication +b4c799 Extreme Networks, Inc. +b4c810 UMPI Elettronica +b4cb57 GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD +b4cc04 Piranti +b4cce9 PROSYST +b4cd27 HUAWEI TECHNOLOGIES CO.,LTD +b4cef6 HTC Corporation +b4cefe James Czekaj +b4cfdb Shenzhen Jiuzhou Electric Co.,LTD +b4cfe0 Sichuan tianyi kanghe communications co., LTD +b4d0a9 China Mobile Group Device Co.,Ltd. +b4d135 Cloudistics +b4d5bd Intel Corporate +b4d64e Caldero Limited +b4d8a9 BetterBots +b4d8de iota Computing, Inc. +b4dc09 Guangzhou Dawei Communication Co.,Ltd +b4dd15 ControlThings Oy Ab +b4ddd0 Continental Automotive Hungary Kft +b4de31 Cisco Systems, Inc +b4dedf zte corporation +b4df3b Chromlech +b4dffa Litemax Electronics Inc. +b4e01d CONCEPTION ELECTRONIQUE +b4e0cd Fusion-io, Inc +b4e10f Dell Inc. +b4e1c4 Microsoft Mobile Oy +b4e1eb Private +b4e62a LG Innotek +b4e62d Espressif Inc. +b4e782 Vivalnk +b4e842 Hong Kong Bouffalo Lab Limited +b4e9a3 port GmbH +b4e9b0 Cisco Systems, Inc +b4ec02 ALPS ELECTRIC CO., LTD. +b4ed19 Pie Digital, Inc. +b4ed54 Wohler Technologies +b4ee25 Shenzhen Belon Technology CO.,LTD +b4eeb4 ASKEY COMPUTER CORP +b4eed4 Texas Instruments +b4ef04 DAIHAN Scientific Co., Ltd. +b4ef39 Samsung Electronics Co.,Ltd +b4effa Lemobile Information Technology (Beijing) Co., Ltd. +b4f0ab Apple, Inc. +b4f1da LG Electronics (Mobile Communications) +b4f2e8 ARRIS Group, Inc. +b4f323 PETATEL INC. +b4f58e HUAWEI TECHNOLOGIES CO.,LTD +b4f61c Apple, Inc. +b4f7a1 LG Electronics (Mobile Communications) +b4f81e Kinova +b4f949 optilink networks pvt ltd +b4fbe4 Ubiquiti Networks Inc. +b4fbf9 HUAWEI TECHNOLOGIES CO.,LTD +b4fc75 SEMA Electronics(HK) CO.,LTD +b4fe8c Centro Sicurezza Italia SpA +b80018 Htel +b80305 Intel Corporate +b80415 Bayan Audio +b805ab zte corporation +b80716 vivo Mobile Communication Co., Ltd. +b80756 Cisco Meraki +b808cf Intel Corporate +b808d7 HUAWEI TECHNOLOGIES CO.,LTD +b8098a Apple, Inc. +b80b9d ROPEX Industrie-Elektronik GmbH +b810d4 Masimo Corporation +b813e9 Trace Live Network +b81413 Keen High Holding(HK) Ltd. +b81619 ARRIS Group, Inc. +b816db CHANT SINCERE CO.,LTD +b817c2 Apple, Inc. +b8186f ORIENTAL MOTOR CO., LTD. +b81999 Nesys +b81daa LG Electronics (Mobile Communications) +b81f5e Apption Labs Limited +b820e7 Guangzhou Horizontal Information & Network Integration Co. Ltd +b8224f SICHUAN TIANYI COMHEART TELECOMCO., LTD +b82410 Magneti Marelli Slovakia s.r.o. +b8241a SWEDA INFORMATICA LTDA +b824f0 SOYO Technology Development Co., Ltd. +b8259a Thalmic Labs +b8266c ANOV France +b826d4 Furukawa Industrial S.A. Produtos Elétricos +b827eb Raspberry Pi Foundation +b8288b Parker Hannifin Manufacturing (UK) Ltd +b829f7 Blaster Tech +b82a72 Dell Inc. +b82adc EFR Europäische Funk-Rundsteuerung GmbH +b82ca0 Resideo +b830a8 Road-Track Telematics Development +b831b5 Microsoft Corporation +b83241 Wuhan Tianyu Information Industry Co., Ltd. +b836d8 Videoswitch +b83765 GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD +b83861 Cisco Systems, Inc +b838ca Kyokko Tsushin System CO.,LTD +b83a08 Tenda Technology Co.,Ltd.Dongguan branch +b83a5a Aruba, a Hewlett Packard Enterprise Company +b83a7b Worldplay (Canada) Inc. +b83a9d Alarm.com +b83d4e Shenzhen Cultraview Digital Technology Co.,Ltd Shanghai Branch +b83e59 Roku, Inc. +b8415f ASP AG +b841a4 Apple, Inc. +b843e4 Vlatacom +b844d9 Apple, Inc. +b847c6 SanJet Technology Corp. +b84dee Hisense broadband multimedia technology Co.,Ltd +b84fd5 Microsoft Corporation +b85001 Extreme Networks, Inc. +b853ac Apple, Inc. +b85510 Zioncom Electronics (Shenzhen) Ltd. +b856bd ITT LLC +b857d8 Samsung Electronics Co.,Ltd +b85810 NUMERA, INC. +b8599f Mellanox Technologies, Inc. +b85a73 Samsung Electronics Co.,Ltd +b85af7 Ouya, Inc +b85afe Handaer Communication Technology (Beijing) Co., Ltd +b85d0a Apple, Inc. +b85e7b Samsung Electronics Co.,Ltd +b86091 Onnet Technologies and Innovations LLC +b8616f Accton Technology Corp +b8621f Cisco Systems, Inc +b8634d Apple, Inc. +b863bc ROBOTIS, Co, Ltd +b86491 CK Telecom Ltd +b8653b Bolymin, Inc. +b86685 Sagemcom Broadband SAS +b869c2 Sunitec Enterprise Co., Ltd. +b869f4 Routerboard.com +b86a97 Edgecore Networks Corporation +b86b23 Toshiba +b86ce8 Samsung Electronics Co.,Ltd +b870f4 COMPAL INFORMATION (KUNSHAN) CO., LTD. +b87424 Viessmann Elektronik GmbH +b87447 Convergence Technologies +b875c0 PayPal, Inc. +b8763f Hon Hai Precision Ind. Co.,Ltd. +b877c3 METER Group +b87826 Nintendo Co.,Ltd +b8782e Apple, Inc. +b87879 Roche Diagnostics GmbH +b8797e Secure Meters (UK) Limited +b87ac9 Siemens Ltd. +b87c6f NXP (China) Management Ltd. +b87cf2 Aerohive Networks Inc. +b88198 Intel Corporate +b88303 Hewlett Packard Enterprise +b88584 Dell Inc. +b88687 Liteon Technology Corporation +b8871e Good Mind Industries Co., Ltd. +b887a8 Step Ahead Innovations Inc. +b887c6 Prudential Technology co.,LTD +b888e3 COMPAL INFORMATION (KUNSHAN) CO., LTD. +b88981 Chengdu InnoThings Technology Co., Ltd. +b889ca ILJIN ELECTRIC Co., Ltd. +b88a60 Intel Corporate +b88aec Nintendo Co.,Ltd +b88d12 Apple, Inc. +b88e3a Infinite Technologies JLT +b88ec6 Stateless Networks +b88edf Zencheer Communication Technology Co., Ltd. +b88f14 Analytica GmbH +b88fb4 JABIL CIRCUIT ITALIA S.R.L +b891c9 Handreamnet +b8921d BG T&A +b89436 HUAWEI TECHNOLOGIES CO.,LTD +b894d2 Retail Innovation HTT AB +b89674 AllDSP GmbH & Co. KG +b8975a BIOSTAR Microtech Int'l Corp. +b898b0 Atlona Inc. +b898f7 Gionee Communication Equipment Co,Ltd.ShenZhen +b89919 7signal Solutions, Inc +b899ae Shenzhen MiaoMing Intelligent Technology Co.,Ltd +b899b0 Cohere Technologies +b89a9a Xin Shi Jia Technology (Beijing) Co.,Ltd +b89acd ELITE OPTOELECTRONIC(ASIA)CO.,LTD +b89aed OceanServer Technology, Inc +b89bc9 SMC Networks Inc +b89be4 ABB Power Systems Power Generation +b89f09 Wistron Neweb Corporation +b8a175 Roku, Inc. +b8a386 D-Link International +b8a3e0 BenRui Technology Co.,Ltd +b8a44f Axis Communications AB +b8a58d Axe Group Holdings Limited +b8a8af Logic S.p.A. +b8ac6f Dell Inc. +b8ad3e BLUECOM +b8ae6e Nintendo Co., Ltd. +b8aeed Elitegroup Computer Systems Co.,Ltd. +b8af67 Hewlett Packard +b8b1c7 BT&COM CO.,LTD +b8b2eb Googol Technology (HK) Limited +b8b2f8 Apple, Inc. +b8b3dc DEREK (SHAOGUAN) LIMITED +b8b42e Gionee Communication Equipment Co,Ltd.ShenZhen +b8b7d7 2GIG Technologies +b8b7f1 Wistron Neweb Corporation +b8b81e Intel Corporate +b8b94e Shenzhen iBaby Labs, Inc. +b8ba68 Xi'an Jizhong Digital Communication Co.,Ltd +b8ba72 Cynove +b8bb23 Guangdong Nufront CSC Co., Ltd +b8bb6d ENERES Co.,Ltd. +b8bbaf Samsung Electronics Co.,Ltd +b8bc1b HUAWEI TECHNOLOGIES CO.,LTD +b8bc5b Samsung Electronics Co.,Ltd +b8bd79 TrendPoint Systems +b8bebf Cisco Systems, Inc +b8bef4 devolo AG +b8bf83 Intel Corporate +b8c111 Apple, Inc. +b8c1a2 Dragon Path Technologies Co., Limited +b8c227 PSTec +b8c253 Juniper Networks +b8c385 HUAWEI TECHNOLOGIES CO.,LTD +b8c3bf Henan Chengshi NetWork Technology Co.,Ltd +b8c46f PRIMMCON INDUSTRIES INC +b8c68e Samsung Electronics Co.,Ltd +b8c716 Fiberhome Telecommunication Technologies Co.,LTD +b8c74a GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD +b8c75d Apple, Inc. +b8c855 Shanghai GBCOM Communication Technology Co.,Ltd. +b8c8eb ITEL MOBILE LIMITED +b8ca04 Holtek Semiconductor Inc. +b8ca3a Dell Inc. +b8cd93 Penetek, Inc +b8cda7 Maxeler Technologies Ltd. +b8d06f GUANGZHOU HKUST FOK YING TUNG RESEARCH INSTITUTE +b8d49d M Seven System Ltd. +b8d50b Sunitec Enterprise Co.,Ltd +b8d526 Zyxel Communications Corporation +b8d7af Murata Manufacturing Co., Ltd. +b8d812 IEEE Registration Authority +b8d94d Sagemcom Broadband SAS +b8d9ce Samsung Electronics Co.,Ltd +b8daf1 Strahlenschutz- Entwicklungs- und Ausruestungsgesellschaft mbH +b8daf7 Advanced Photonics, Inc. +b8db1c Integrated Device Technology (Malaysia) Sdn. Bhd. +b8dc87 IAI Corporation +b8de5e LONGCHEER TELECOMMUNICATION LIMITED +b8df6b SpotCam Co., Ltd. +b8e589 Payter BV +b8e625 2Wire Inc +b8e779 9Solutions Oy +b8e856 Apple, Inc. +b8e937 Sonos, Inc. +b8eaaa ICG NETWORKS CO.,ltd +b8eca3 Zyxel Communications Corporation +b8ee0e Sagemcom Broadband SAS +b8ee65 Liteon Technology Corporation +b8ee79 YWire Technologies, Inc. +b8ef8b SHENZHEN CANNICE TECHNOLOGY CO.,LTD +b8f080 SPS, INC. +b8f12a Apple, Inc. +b8f317 iSun Smasher Communications Private Limited +b8f4d0 Herrmann Ultraschalltechnik GmbH & Co. Kg +b8f5e7 WayTools, LLC +b8f653 Shenzhen Jingxun Software Telecommunication Technology Co.,Ltd +b8f6b1 Apple, Inc. +b8f732 Aryaka Networks Inc +b8f74a RCNTEC +b8f828 Changshu Gaoshida Optoelectronic Technology Co. Ltd. +b8f853 Arcadyan Corporation +b8f883 TP-LINK TECHNOLOGIES CO.,LTD. +b8f8be BLUECOM +b8f934 Sony Mobile Communications Inc +b8fc9a Le Shi Zhi Xin Electronic Technology (Tianjin) Limited +b8fd32 Zhejiang ROICX Microelectronics +b8ff61 Apple, Inc. +b8ff6f Shanghai Typrotech Technology Co.Ltd +b8ffb3 MitraStar Technology Corp. +b8fffe Texas Instruments +bc0200 Stewart Audio +bc024a HMD Global Oy +bc0543 AVM GmbH +bc0da5 Texas Instruments +bc0f2b FORTUNE TECHGROUP CO.,LTD +bc0f64 Intel Corporate +bc0fa7 Ouster +bc125e Beijing WisVideo INC. +bc1401 Hitron Technologies. Inc +bc1485 Samsung Electronics Co.,Ltd +bc14ef ITON Technology Limited +bc15a6 Taiwan Jantek Electronics,Ltd. +bc15ac Vodafone Italia S.p.A. +bc1665 Cisco Systems, Inc +bc16f5 Cisco Systems, Inc +bc1a67 YF Technology Co., Ltd +bc1c81 Sichuan iLink Technology Co., Ltd. +bc20a4 Samsung Electronics Co.,Ltd +bc20ba Inspur (Shandong) Electronic Information Co., Ltd +bc22fb RF Industries +bc2392 BYD Precision Manufacture Company Ltd. +bc25e0 HUAWEI TECHNOLOGIES CO.,LTD +bc25f0 3D Display Technologies Co., Ltd. +bc261d HONG KONG TECON TECHNOLOGY +bc2643 Elprotronic Inc. +bc26c7 Cisco Systems, Inc +bc282c e-Smart Systems Pvt. Ltd +bc2846 NextBIT Computing Pvt. Ltd. +bc28d6 Rowley Associates Limited +bc2b6b Beijing Haier IC Design Co.,Ltd +bc2bd7 Revogi Innovation Co., Ltd. +bc2c55 Bear Flag Design, Inc. +bc2d98 ThinGlobal LLC +bc2e48 ARRIS Group, Inc. +bc2ef6 Huawei Device Co., Ltd. +bc2f3d vivo Mobile Communication Co., Ltd. +bc305b Dell Inc. +bc307d Wistron Neweb Corporation +bc307e Wistron Neweb Corporation +bc30d9 Arcadyan Corporation +bc325f Zhejiang Dahua Technology Co., Ltd. +bc3400 IEEE Registration Authority +bc35e5 Hydro Systems Company +bc3865 JWCNETWORKS +bc38d2 Pandachip Limited +bc39a6 CSUN System Technology Co.,LTD +bc39d9 Z-TEC +bc3aea GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD +bc3baf Apple, Inc. +bc3d85 HUAWEI TECHNOLOGIES CO.,LTD +bc3e07 Hitron Technologies. Inc +bc3e13 Accordance Systems Inc. +bc3f4e Teleepoch Ltd +bc3f8f HUAWEI TECHNOLOGIES CO.,LTD +bc4100 CODACO ELECTRONIC s.r.o. +bc4101 Shenzhen TINNO Mobile Technology Corp. +bc4377 Hang Zhou Huite Technology Co.,ltd. +bc4434 Shenzhen TINNO Mobile Technology Corp. +bc4486 Samsung Electronics Co.,Ltd +bc44b0 Elastifile +bc452e Knowledge Development for POF S.L. +bc4699 TP-LINK TECHNOLOGIES CO.,LTD. +bc4760 Samsung Electronics Co.,Ltd +bc4b79 SensingTek +bc4cc4 Apple, Inc. +bc4dfb Hitron Technologies. Inc +bc4e3c CORE STAFF CO., LTD. +bc4e5d ZhongMiao Technology Co., Ltd. +bc51fe Swann communications Pty Ltd +bc52b4 Nokia +bc52b7 Apple, Inc. +bc5436 Apple, Inc. +bc5451 Samsung Electronics Co.,Ltd +bc54f9 Drogoo Technology Co., Ltd. +bc54fc SHENZHEN MERCURY COMMUNICATION TECHNOLOGIES CO.,LTD. +bc5c4c ELECOM CO.,LTD. +bc5ea1 PsiKick, Inc. +bc5ff4 ASRock Incorporation +bc5ff6 MERCURY COMMUNICATION TECHNOLOGIES CO.,LTD. +bc6010 Qingdao Hisense Communications Co.,Ltd. +bc60a7 Sony Interactive Entertainment Inc. +bc620e HUAWEI TECHNOLOGIES CO.,LTD +bc629f Telenet Systems P. Ltd. +bc62d2 Genexis International B.V. +bc644b ARRIS Group, Inc. +bc6641 IEEE Registration Authority +bc66de Shadow Creator Information Technology Co.,Ltd. +bc671c Cisco Systems, Inc +bc6778 Apple, Inc. +bc6784 Environics Oy +bc6a16 tdvine +bc6a29 Texas Instruments +bc6a2f Henge Docks LLC +bc6a44 Commend International GmbH +bc6b4d Nokia +bc6c21 Apple, Inc. +bc6e64 Sony Mobile Communications Inc +bc6e76 Green Energy Options Ltd +bc71c1 XTrillion, Inc. +bc72b1 Samsung Electronics Co.,Ltd +bc74d7 HangZhou JuRu Technology CO.,LTD +bc7536 ALPS ELECTRIC CO., LTD. +bc7574 HUAWEI TECHNOLOGIES CO.,LTD +bc7596 Beijing Broadwit Technology Co., Ltd. +bc764e Rackspace US, Inc. +bc765e Samsung Electronics Co.,Ltd +bc7670 HUAWEI TECHNOLOGIES CO.,LTD +bc7737 Intel Corporate +bc779f SBM Co., Ltd. +bc79ad Samsung Electronics Co.,Ltd +bc7dd1 Radio Data Comms +bc7fa4 Xiaomi Communications Co Ltd +bc811f Ingate Systems +bc8199 BASIC Co.,Ltd. +bc825d MITSUMI ELECTRIC CO.,LTD. +bc8385 Microsoft Corporation +bc83a7 SHENZHEN CHUANGWEI-RGB ELECTRONICS CO.,LTD +bc851f Samsung Electronics Co.,Ltd +bc8556 Hon Hai Precision Ind. Co.,Ltd. +bc8893 VILLBAU Ltd. +bc88c3 Ningbo Dooya Mechanic & Electronic Technology Co., Ltd +bc8aa3 NHN Entertainment +bc8ae8 QING DAO HAIER TELECOM CO.,LTD. +bc8b55 NPP ELIKS America Inc. DBA T&M Atlantic +bc8ccd SAMSUNG ELECTRO-MECHANICS(THAILAND) +bc8d0e Nokia +bc903a Robert Bosch GmbH +bc91b5 Infinix mobility limited +bc926b Apple, Inc. +bc9325 Ningbo Joyson Preh Car Connect Co.,Ltd. +bc9680 SHENZHEN GONGJIN ELECTRONICS CO.,LT +bc9740 IEEE Registration Authority +bc97e1 Broadcom Limited +bc9889 Fiberhome Telecommunication Technologies Co.,LTD +bc98df Motorola Mobility LLC, a Lenovo Company +bc9911 Zyxel Communications Corporation +bc99bc FonSee Technology Inc. +bc9b68 Technicolor CH USA Inc. +bc9c31 HUAWEI TECHNOLOGIES CO.,LTD +bc9cc5 Beijing Huafei Technology Co., Ltd. +bc9da5 DASCOM Europe GmbH +bc9fe4 Aruba, a Hewlett Packard Enterprise Company +bc9fef Apple, Inc. +bca042 SHANGHAI FLYCO ELECTRICAL APPLIANCE CO.,LTD +bca13a SES-imagotag +bca4e1 Nabto +bca511 NETGEAR +bca58b Samsung Electronics Co.,Ltd +bca8a6 Intel Corporate +bca920 Apple, Inc. +bca9d6 Cyber-Rain, Inc. +bcab7c TRnP KOREA Co Ltd +bcad28 Hangzhou Hikvision Digital Technology Co.,Ltd. +bcadab Avaya Inc +bcaec5 ASUSTek COMPUTER INC. +bcaf91 TE Connectivity Sensor Solutions +bcb0e7 HUAWEI TECHNOLOGIES CO.,LTD +bcb181 SHARP CORPORATION +bcb1f3 Samsung Electronics Co.,Ltd +bcb22b EM-Tech +bcb308 HONGKONG RAGENTEK COMMUNICATION TECHNOLOGY CO.,LIMITED +bcb852 Cybera, Inc. +bcb863 Apple, Inc. +bcbac2 Hangzhou Hikvision Digital Technology Co.,Ltd. +bcbae1 AREC Inc. +bcbbc9 Kellendonk Elektronik GmbH +bcbc46 SKS Welding Systems GmbH +bcc00f Fiberhome Telecommunication Technologies Co.,LTD +bcc168 DinBox Sverige AB +bcc23a Thomson Video Networks +bcc31b Kygo Life A +bcc342 Panasonic Communications Co., Ltd. +bcc493 Cisco Systems, Inc +bcc61a SPECTRA EMBEDDED SYSTEMS +bcc6db Nokia Corporation +bcc810 Cisco SPVTG +bccab5 ARRIS Group, Inc. +bccd45 VOISMART +bccf4f Zyxel Communications Corporation +bccfcc HTC Corporation +bcd11f Samsung Electronics Co.,Ltd +bcd165 Cisco SPVTG +bcd177 TP-LINK TECHNOLOGIES CO.,LTD. +bcd1d3 Shenzhen TINNO Mobile Technology Corp. +bcd5b6 d2d technologies +bcd713 Owl Labs +bcd940 ASR Co,.Ltd. +bcddc2 Espressif Inc. +bce09d Eoslink +bce143 Apple, Inc. +bce265 HUAWEI TECHNOLOGIES CO.,LTD +bce59f WATERWORLD Technology Co.,LTD +bce63f Samsung Electronics Co.,Ltd +bce67c Cambium Networks Limited +bce767 Quanzhou TDX Electronics Co., Ltd +bce796 Wireless CCTV Ltd +bcea2b CityCom GmbH +bceafa Hewlett Packard +bceb5f Fujian Beifeng Telecom Technology Co., Ltd. +bcec23 SHENZHEN CHUANGWEI-RGB ELECTRONICS CO.,LTD +bcec5d Apple, Inc. +bcee7b ASUSTek COMPUTER INC. +bcf1f2 Cisco Systems, Inc +bcf292 PLANTRONICS, INC. +bcf2af devolo AG +bcf310 Aerohive Networks Inc. +bcf5ac LG Electronics (Mobile Communications) +bcf61c Geomodeling Wuxi Technology Co. Ltd. +bcf685 D-Link International +bcf811 Xiamen DNAKE Technology Co.,Ltd +bcfe8c Altronic, LLC +bcfed9 Apple, Inc. +bcffac TOPCON CORPORATION +bcffeb Motorola Mobility LLC, a Lenovo Company +c0028d WINSTAR Display CO.,Ltd +c00380 Juniper Networks +c005c2 ARRIS Group, Inc. +c0074a Brita GmbH +c00d7e Additech, Inc. +c010b1 HMD Global Oy +c01173 Samsung Electronics Co.,Ltd +c011a6 Fort-Telecom ltd. +c01242 Alpha Security Products +c0132b Sichuan Changhong Electric Ltd. +c0143d Hon Hai Precision Ind. Co.,Ltd. +c0174d Samsung Electronics Co.,Ltd +c01885 Hon Hai Precision Ind. Co.,Ltd. +c01ada Apple, Inc. +c01b23 SICHUAN TIANYI COMHEART TELECOM CO.,LTD +c01e9b Pixavi AS +c0210d SHENZHEN RF-LINK TECHNOLOGY CO.,LTD. +c02250 Koss Corporation +c02506 AVM GmbH +c0255c Cisco Systems, Inc +c02567 Nexxt Solutions +c025a2 NEC Platforms, Ltd. +c025e9 TP-LINK TECHNOLOGIES CO.,LTD. +c027b9 Beijing National Railway Research & Design Institute of Signal & Communication Co., Ltd. +c0288d Logitech, Inc +c02973 Audyssey Laboratories Inc. +c029f3 XySystem +c02bfc iNES. applied informatics GmbH +c02c7a Shenzhen Horn Audio Co.,Ltd. +c02dee Cuff +c02e25 GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD +c02e26 Private +c02ff1 Volta Networks +c0335e Microsoft +c034b4 Gigastone Corporation +c03580 A&R TECH +c035bd Velocytech Aps +c035c5 Prosoft Systems LTD +c03656 Fiberhome Telecommunication Technologies Co.,LTD +c03896 Hon Hai Precision Ind. Co.,Ltd. +c038f9 Nokia Danmark A/S +c03b8f Minicom Digital Signage +c03d46 Shanghai Sango Network Technology Co.,Ltd +c03dd9 MitraStar Technology Corp. +c03e0f BSkyB Ltd +c03f0e NETGEAR +c03f2a Biscotti, Inc. +c03fd5 Elitegroup Computer Systems Co.,Ltd. +c04004 Medicaroid Corporation +c04121 Nokia +c041f6 LG ELECTRONICS INC +c042d0 Juniper Networks +c04301 Epec Oy +c044e3 Shenzhen Sinkna Electronics Co., LTD +c048e6 Samsung Electronics Co.,Ltd +c048fb Shenzhen JingHanDa Electronics Co.Ltd +c0493d MAITRISE TECHNOLOGIQUE +c04a00 TP-LINK TECHNOLOGIES CO.,LTD. +c04a09 Zhejiang Everbright Communication Equip. Co,. Ltd +c04df7 SERELEC +c05336 Beijing National Railway Research & Design Institute of Signal & Communication Group Co..Ltd. +c05627 Belkin International Inc. +c056e3 Hangzhou Hikvision Digital Technology Co.,Ltd. +c057bc Avaya Inc +c058a7 Pico Systems Co., Ltd. +c05e6f V. Stonkaus firma Kodinis Raktas +c05e79 SHENZHEN HUAXUN ARK TECHNOLOGIES CO.,LTD +c06118 TP-LINK TECHNOLOGIES CO.,LTD. +c0626b Cisco Systems, Inc +c06394 Apple, Inc. +c064c6 Nokia Corporation +c064e4 Cisco Systems, Inc +c06599 Samsung Electronics Co.,Ltd +c067af Cisco Systems, Inc +c06c0f Dobbs Stanford +c06c6d MagneMotion, Inc. +c06d1a Tianjin Henxinhuifeng Technology Co.,Ltd. +c07009 HUAWEI TECHNOLOGIES CO.,LTD +c0742b SHENZHEN XUNLONG SOFTWARE CO.,LIMITED +c074ad Grandstream Networks, Inc. +c07878 FLEXTRONICS MANUFACTURING(ZHUHAI)CO.,LTD. +c07bbc Cisco Systems, Inc +c07cd1 PEGATRON CORPORATION +c07e40 SHENZHEN XDK COMMUNICATION EQUIPMENT CO.,LTD +c08135 Ningbo Forfan technology Co., LTD +c08170 Effigis GeoSolutions +c0830a 2Wire Inc +c08359 IEEE Registration Authority +c0847a Apple, Inc. +c0847d AMPAK Technology, Inc. +c08488 Finis Inc +c0854c Ragentek Technology Group +c087eb Samsung Electronics Co.,Ltd +c0885b SnD Tech Co., Ltd. +c08997 Samsung Electronics Co.,Ltd +c089ab ARRIS Group, Inc. +c08acd Guangzhou Shiyuan Electronic Technology Company Limited +c08ade Ruckus Wireless +c08b6f S I Sistemas Inteligentes Eletrônicos Ltda +c08c60 Cisco Systems, Inc +c08c71 Motorola Mobility LLC, a Lenovo Company +c09132 Patriot Memory +c09134 ProCurve Networking by HP +c09727 SAMSUNG ELECTRO-MECHANICS(THAILAND) +c09879 Acer Inc. +c098da China Mobile IOT Company Limited +c098e5 University of Michigan +c09a71 XIAMEN MEITU MOBILE TECHNOLOGY CO.LTD +c09ad0 Apple, Inc. +c09c04 Shaanxi GuoLian Digital TV Technology Co.,Ltd. +c09c92 COBY +c09d26 Topicon HK Lmd. +c09f05 GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD +c09f42 Apple, Inc. +c09fe1 zte corporation +c0a00d ARRIS Group, Inc. +c0a0bb D-Link International +c0a0c7 FAIRFIELD INDUSTRIES +c0a0de Multi Touch Oy +c0a0e2 Eden Innovations +c0a1a2 MarqMetrix +c0a26d Abbott Point of Care +c0a364 3D Systems Massachusetts +c0a39e EarthCam, Inc. +c0a53e Apple, Inc. +c0a5dd SHENZHEN MERCURY COMMUNICATION TECHNOLOGIES CO.,LTD. +c0a600 Apple, Inc. +c0a8f0 Adamson Systems Engineering +c0aa68 OSASI Technos Inc. +c0ac54 Sagemcom Broadband SAS +c0b339 Comigo Ltd. +c0b357 Yoshiki Electronics Industry Ltd. +c0b5d7 CHONGQING FUGUI ELECTRONICS CO.,LTD. +c0b658 Apple, Inc. +c0b6f9 Intel Corporate +c0b713 Beijing Xiaoyuer Technology Co. Ltd. +c0b883 Intel Corporate +c0b8b1 BitBox Ltd +c0bae6 Application Solutions (Electronics and Vision) Ltd +c0bd42 ZPA Smart Energy a.s. +c0bdc8 Samsung Electronics Co.,Ltd +c0bdd1 SAMSUNG ELECTRO-MECHANICS(THAILAND) +c0bfa7 Juniper Networks +c0bfc0 HUAWEI TECHNOLOGIES CO.,LTD +c0c1c0 Cisco-Linksys, LLC +c0c3b6 Automatic Systems +c0c520 Ruckus Wireless +c0c522 ARRIS Group, Inc. +c0c569 SHANGHAI LYNUC CNC TECHNOLOGY CO.,LTD +c0c687 Cisco SPVTG +c0c946 MITSUYA LABORATORIES INC. +c0c976 Shenzhen TINNO Mobile Technology Corp. +c0cb38 Hon Hai Precision Ind. Co.,Ltd. +c0cbf1 Mobiwire Mobiles (NingBo) Co., LTD +c0ccf8 Apple, Inc. +c0cecd Apple, Inc. +c0cfa3 Creative Electronics & Software, Inc. +c0d012 Apple, Inc. +c0d044 Sagemcom Broadband SAS +c0d0ff China Mobile IOT Company Limited +c0d2f3 Hui Zhou Gaoshengda Technology Co.,LTD +c0d391 IEEE Registration Authority +c0d3c0 Samsung Electronics Co.,Ltd +c0d834 xvtec ltd +c0d962 ASKEY COMPUTER CORP +c0d9f7 ShanDong Domor Intelligent S&T CO.,Ltd +c0da74 Hangzhou Sunyard Technology Co., Ltd. +c0dc6a Qingdao Eastsoft Communication Technology Co.,LTD +c0dcda Samsung Electronics Co.,Ltd +c0df77 Conrad Electronic SE +c0e422 Texas Instruments +c0e42d TP-LINK TECHNOLOGIES CO.,LTD. +c0e434 AzureWave Technology Inc. +c0e54e ARIES Embedded GmbH +c0e862 Apple, Inc. +c0eae4 Sonicwall +c0ee40 Laird Technologies +c0eeb5 Enice Network. +c0eefb OnePlus Tech (Shenzhen) Ltd +c0f1c4 Pacidal Corporation Ltd. +c0f2fb Apple, Inc. +c0f4e6 HUAWEI TECHNOLOGIES CO.,LTD +c0f636 Hangzhou Kuaiyue Technologies, Ltd. +c0f79d Powercode +c0f8da Hon Hai Precision Ind. Co.,Ltd. +c0f945 Toshiba Toko Meter Systems Co., LTD. +c0f991 GME Standard Communications P/L +c0fd84 zte corporation +c0ffd4 NETGEAR +c40006 Lipi Data Systems Ltd. +c40049 Kamama +c400ad Advantech Technology (CHINA) Co., Ltd. +c40142 MaxMedia Technology Limited +c4017c Ruckus Wireless +c401b1 SeekTech INC +c401ce PRESITION (2000) CO., LTD. +c40415 NETGEAR +c4047b Shenzhen YOUHUA Technology Co., Ltd +c40528 HUAWEI TECHNOLOGIES CO.,LTD +c40683 HUAWEI TECHNOLOGIES CO.,LTD +c4072f HUAWEI TECHNOLOGIES CO.,LTD +c4084a Nokia +c40880 Shenzhen UTEPO Tech Co., Ltd. +c40938 FUJIAN STAR-NET COMMUNICATION CO.,LTD +c40acb Cisco Systems, Inc +c40bcb Xiaomi Communications Co Ltd +c40e45 ACK Networks,Inc. +c40f09 Hermes electronic GmbH +c4108a Ruckus Wireless +c411e0 Bull Group Co., Ltd +c412f5 D-Link International +c413e2 Aerohive Networks Inc. +c4143c Cisco Systems, Inc +c416fa Prysm Inc +c417fe Hon Hai Precision Ind. Co.,Ltd. +c4198b Dominion Voting Systems Corporation +c419d1 Telink Semiconductor (Shanghai) Co., Ltd. +c419ec Qualisys AB +c41cff Vizio, Inc +c41ece HMI Sources Ltd. +c421c8 KYOCERA CORPORATION +c4237a WhizNets Inc. +c423a2 PT. Emsonic Indonesia +c4242e Galvanic Applied Sciences Inc +c42456 Palo Alto Networks +c42628 Airo Wireless +c42795 Technicolor CH USA Inc. +c4282d Embedded Intellect Pty Ltd +c4291d KLEMSAN ELEKTRIK ELEKTRONIK SAN.VE TIC.AS. +c42996 Signify B.V. +c42ad0 Apple, Inc. +c42c03 Apple, Inc. +c42c4f Qingdao Hisense Mobile Communication Technology Co,Ltd +c42f90 Hangzhou Hikvision Digital Technology Co.,Ltd. +c43018 MCS Logic Inc. +c43306 China Mobile Group Device Co.,Ltd. +c4346b Hewlett Packard +c43655 Shenzhen Fenglian Technology Co., Ltd. +c4366c LG Innotek +c436da Rusteletech Ltd. +c438d3 TAGATEC CO.,LTD +c4393a SMC Networks Inc +c43a35 FN-LINK TECHNOLOGY LIMITED +c43a9f Siconix Inc. +c43abe Sony Mobile Communications Inc +c43c3c CYBELEC SA +c43dc7 NETGEAR +c44044 RackTop Systems Inc. +c4411e Belkin International Inc. +c44202 Samsung Electronics Co.,Ltd +c4438f LG Electronics (Mobile Communications) +c4447d HUAWEI TECHNOLOGIES CO.,LTD +c444a0 Cisco Systems, Inc +c44567 SAMBON PRECISON and ELECTRONICS +c445ec Shanghai Yali Electron Co.,LTD +c44619 Hon Hai Precision Ind. Co.,Ltd. +c4473f HUAWEI TECHNOLOGIES CO.,LTD +c44838 Satcom Direct, Inc. +c449bb MITSUMI ELECTRIC CO.,LTD. +c44ad0 FIREFLIES SYSTEMS +c44b44 Omniprint Inc. +c44bd1 Wallys Communications Teachnologies Co.,Ltd. +c44e1f BlueN +c44eac Shenzhen Shiningworth Technology Co., Ltd. +c44f33 Espressif Inc. +c45006 Samsung Electronics Co.,Ltd +c4518d Shenzhen YOUHUA Technology Co., Ltd +c45444 QUANTA COMPUTER INC. +c455a6 Cadac Holdings Ltd +c455c2 Bach-Simpson +c45600 Galleon Embedded Computing +c456fe Lava International Ltd. +c4571f June Life Inc +c4576e Samsung Electronics Co.,Ltd +c458c2 Shenzhen TATFOOK Technology Co., Ltd. +c45976 Fugoo Coorporation +c45bf7 ants +c45dd8 HDMI Forum +c46044 Everex Electronics Limited +c4618b Apple, Inc. +c4626b ZPT Vigantice +c462ea Samsung Electronics Co.,Ltd +c46354 U-Raku, Inc. +c463fb Neatframe AS +c46413 Cisco Systems, Inc +c464b7 Fiberhome Telecommunication Technologies Co.,LTD +c464e3 Texas Instruments +c46516 Hewlett Packard +c46699 vivo Mobile Communication Co., Ltd. +c467b5 Libratone A/S +c468d0 VTech Telecommunications Ltd. +c4693e Turbulence Design Inc. +c46ab7 Xiaomi Communications Co Ltd +c46bb4 myIDkey +c46df1 DataGravity +c46e1f TP-LINK TECHNOLOGIES CO.,LTD. +c46e7b SHENZHEN RF-LINK TECHNOLOGY CO.,LTD. +c4700b GUANGZHOU CHIP TECHNOLOGIES CO.,LTD +c47130 Fon Technology S.L. +c47154 TP-LINK TECHNOLOGIES CO.,LTD. +c471fe Cisco Systems, Inc +c47295 Cisco Systems, Inc +c4731e Samsung Electronics Co.,Ltd +c474f8 Hot Pepper, Inc. +c477ab Beijing ASU Tech Co.,Ltd +c477af Advanced Digital Broadcast SA +c47b2f Beijing JoinHope Image Technology Ltd. +c47ba3 NAVIS Inc. +c47c8d IEEE Registration Authority +c47d46 FUJITSU LIMITED +c47d4f Cisco Systems, Inc +c47dcc Zebra Technologies Inc +c47dfe A.N. Solutions GmbH +c47f51 Inventek Systems +c4823f Fujian Newland Auto-ID Tech. Co,.Ltd. +c4824e Changzhou Uchip Electronics Co., LTD. +c4836f Ciena Corporation +c48466 Apple, Inc. +c48508 Intel Corporate +c486e9 HUAWEI TECHNOLOGIES CO.,LTD +c488e5 Samsung Electronics Co.,Ltd +c48a5a JFCONTROL +c48e8f Hon Hai Precision Ind. Co.,Ltd. +c48f07 Shenzhen Yihao Hulian Science and Technology Co., Ltd. +c48fc1 DEEPTRACK S.L.U. +c4913a Shenzhen Sanland Electronic Co., ltd. +c4924c KEISOKUKI CENTER CO.,LTD. +c49300 8Devices +c49313 100fio networks technology llc +c49380 Speedytel technology +c493d9 Samsung Electronics Co.,Ltd +c49500 Amazon Technologies Inc. +c495a2 SHENZHEN WEIJIU INDUSTRY AND TRADE DEVELOPMENT CO., LTD +c49805 Minieum Networks, Inc +c4985c Hui Zhou Gaoshengda Technology Co.,LTD +c49880 Apple, Inc. +c49a02 LG Electronics (Mobile Communications) +c49ded Microsoft Corporation +c49e41 G24 Power Limited +c49f4c HUAWEI TECHNOLOGIES CO.,LTD +c49ff3 Mciao Technologies, Inc. +c4a366 zte corporation +c4a81d D-Link International +c4aaa1 SUMMIT DEVELOPMENT, spol.s r.o. +c4abb2 vivo Mobile Communication Co., Ltd. +c4ac59 Murata Manufacturing Co., Ltd. +c4ad21 MEDIAEDGE Corporation +c4ad34 Routerboard.com +c4adf1 GOPEACE Inc. +c4ae12 Samsung Electronics Co.,Ltd +c4b301 Apple, Inc. +c4b36a Cisco Systems, Inc +c4b512 General Electric Digital Energy +c4b8b4 HUAWEI TECHNOLOGIES CO.,LTD +c4b9cd Cisco Systems, Inc +c4ba99 I+ME Actia Informatik und Mikro-Elektronik GmbH +c4baa3 Beijing Winicssec Technologies Co., Ltd. +c4bb4c Zebra Information Tech Co. Ltd +c4bbea Pakedge Device and Software Inc +c4bd6a SKF GmbH +c4be84 Texas Instruments +c4bed4 Avaya Inc +c4c0ae MIDORI ELECTRONIC CO., LTD. +c4c138 OWLink Technology Inc +c4c19f National Oilwell Varco Instrumentation, Monitoring, and Optimization (NOV IMO) +c4c563 TECNO MOBILE LIMITED +c4c603 Cisco Systems, Inc +c4c755 Beijing HuaqinWorld Technology Co.,Ltd +c4c919 Energy Imports Ltd +c4c9ec Gugaoo HK Limited +c4cad9 Hangzhou H3C Technologies Co., Limited +c4cb6b Airista Flow, Inc. +c4cd45 Beijing Boomsense Technology CO.,LTD. +c4cd82 Hangzhou Lowan Information Technology Co., Ltd. +c4d197 Ventia Utility Services +c4d489 JiangSu Joyque Information Industry Co.,Ltd +c4d655 Tercel technology co.,ltd +c4d8f3 iZotope +c4d987 Intel Corporate +c4da26 NOBLEX SA +c4da7d Ivium Technologies B.V. +c4e032 IEEE 1904.1 Working Group +c4e0de Zhengzhou XindaJiean Information Technology Co.,Ltd. +c4e17c U2S co. +c4e1a1 GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD +c4e39f GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD +c4e506 Piper Networks, Inc. +c4e510 Mechatro, Inc. +c4e7be SCSpro Co.,Ltd +c4e90a D-Link International +c4e92f AB Sciex +c4e984 TP-LINK TECHNOLOGIES CO.,LTD. +c4ea1d Technicolor +c4ebe3 RRCN SAS +c4edba Texas Instruments +c4eeae VSS Monitoring +c4eef5 II-VI Incorporated +c4ef70 Home Skinovations +c4f081 HUAWEI TECHNOLOGIES CO.,LTD +c4f0ec Fiberhome Telecommunication Technologies Co.,LTD +c4f1d1 BEIJING SOGOU TECHNOLOGY DEVELOPMENT CO., LTD. +c4f312 Texas Instruments +c4f464 Spica international +c4f57c Brocade Communications Systems, Inc. +c4f5a5 Kumalift Co., Ltd. +c4f7d5 Cisco Systems, Inc +c4f839 Actia Automotive +c4fce4 DishTV NZ Ltd +c4fde6 DRTECH +c4fee2 AMICCOM Electronics Corporation +c4ff1f HUAWEI TECHNOLOGIES CO.,LTD +c4ffbc IEEE Registration Authority +c80084 Cisco Systems, Inc +c80210 LG Innotek +c80258 ITW GSE ApS +c8028f Nova Electronics (Shanghai) Co., Ltd. +c802a6 Beijing Newmine Technology +c80718 TDSi +c80873 Ruckus Wireless +c808e9 LG Electronics +c809a8 Intel Corporate +c80aa9 QUANTA COMPUTER INC. +c80cc8 HUAWEI TECHNOLOGIES CO.,LTD +c80d32 Holoplot GmbH +c80e14 AVM Audiovisuelles Marketing und Computersysteme GmbH +c80e77 Le Shi Zhi Xin Electronic Technology (Tianjin) Limited +c80e95 OmniLync Inc. +c81073 CENTURY OPTICOMM CO.,LTD +c81451 HUAWEI TECHNOLOGIES CO.,LTD +c81479 Samsung Electronics Co.,Ltd +c816a5 Masimo Corporation +c816bd Qingdao Hisense Communications Co.,Ltd. +c819f7 Samsung Electronics Co.,Ltd +c81afe DLOGIC GmbH +c81b5c BCTech +c81b6b Innova Security +c81e8e ADV Security (S) Pte Ltd +c81ee7 Apple, Inc. +c81f66 Dell Inc. +c81fbe HUAWEI TECHNOLOGIES CO.,LTD +c81fea Avaya Inc +c8208e Storagedata +c82158 Intel Corporate +c821da Shenzhen YOUHUA Technology Co., Ltd +c825e1 Lemobile Information Technology (Beijing) Co., Ltd +c82832 Beijing Xiaomi Electronics Co., Ltd. +c8292a Barun Electronics +c82a14 Apple, Inc. +c82b96 Espressif Inc. +c82c2b IEEE Registration Authority +c82e47 Suzhou SmartChip Semiconductor Co., LTD +c82e94 Halfa Enterprise Co., Ltd. +c83168 eZEX corporation +c83232 Hunting Innova +c8334b Apple, Inc. +c8348e Intel Corporate +c835b8 Ericsson, EAB/RWI/K +c83870 Samsung Electronics Co.,Ltd +c83a35 Tenda Technology Co., Ltd. +c83a6b Roku, Inc +c83b45 JRI +c83c85 Apple, Inc. +c83d97 Nokia Corporation +c83dd4 CyberTAN Technology Inc. +c83ddc Xiaomi Communications Co Ltd +c83dfc Pioneer DJ Corporation +c83e99 Texas Instruments +c83ea7 KUNBUS GmbH +c83f26 Microsoft Corporation +c83fb4 ARRIS Group, Inc. +c84029 Fiberhome Telecommunication Technologies Co.,LTD +c84529 IMK Networks Co.,Ltd +c84544 Asia Pacific CIS (Wuxi) Co, Ltd +c8458f Wyler AG +c84782 Areson Technology Corp. +c8478c Beken Corporation +c848f5 MEDISON Xray Co., Ltd +c84c75 Cisco Systems, Inc +c84f0e Integrated Device Technology (Malaysia) Sdn. Bhd. +c84f86 Sophos Ltd +c850ce HUAWEI TECHNOLOGIES CO.,LTD +c850e9 Raisecom Technology CO., LTD +c85195 HUAWEI TECHNOLOGIES CO.,LTD +c85261 ARRIS Group, Inc. +c8544b Zyxel Communications Corporation +c85645 Intermas France +c85663 Sunflex Europe GmbH +c85a9f zte corporation +c85b76 LCFC(HeFei) Electronics Technology co., ltd +c85d38 HUMAX Co., Ltd. +c86000 ASUSTek COMPUTER INC. +c86314 IEEE Registration Authority +c863f1 Sony Interactive Entertainment Inc. +c863fc ARRIS Group, Inc. +c864c7 zte corporation +c8662c Beijing Haitai Fangyuan High Technology Co,.Ltd. +c8665d Aerohive Networks Inc. +c8675e Aerohive Networks Inc. +c869cd Apple, Inc. +c86c1e Display Systems Ltd +c86c87 Zyxel Communications Corporation +c86cb6 Optcom Co., Ltd. +c86f1d Apple, Inc. +c87248 Aplicom Oy +c87324 Sow Cheng Technology Co. Ltd. +c8755b Quantify Technology Pty. Ltd. +c87765 Tiesse SpA +c8778b Mercury Systems – Trusted Mission Solutions, Inc. +c87b5b zte corporation +c87cbc Valink Co., Ltd. +c87d77 Shenzhen Kingtech Communication Equipment Co.,Ltd +c87e75 Samsung Electronics Co.,Ltd +c88439 Sunrise Technologies +c88447 Beautiful Enterprise Co., Ltd +c88550 Apple, Inc. +c88629 Shenzhen Duubee Intelligent Technologies Co.,LTD. +c88722 Lumenpulse +c8873b Net Optics +c88a83 Dongguan HuaHong Electronics Co.,Ltd +c88b47 Nolangroup S.P.A con Socio Unico +c88d83 HUAWEI TECHNOLOGIES CO.,LTD +c88ed1 IEEE Registration Authority +c88f26 Skyworth Digital Technology(Shenzhen) Co.,Ltd +c8903e Pakton Technologies +c891f9 Sagemcom Broadband SAS +c89346 MXCHIP Company Limited +c89383 Embedded Automation, Inc. +c894bb HUAWEI TECHNOLOGIES CO.,LTD +c894d2 Jiangsu Datang Electronic Products Co., Ltd +c8979f Nokia Corporation +c89c13 Inspiremobile +c89c1d Cisco Systems, Inc +c89cdc Elitegroup Computer Systems Co.,Ltd. +c89f1d SHENZHEN COMMUNICATION TECHNOLOGIES CO.,LTD +c89f42 VDII Innovation AB +c8a030 Texas Instruments +c8a1b6 Shenzhen Longway Technologies Co., Ltd +c8a1ba Neul Ltd +c8a2ce Oasis Media Systems LLC +c8a620 Nebula, Inc +c8a70a Verizon Business +c8a729 SYStronics Co., Ltd. +c8a776 HUAWEI TECHNOLOGIES CO.,LTD +c8a823 Samsung Electronics Co.,Ltd +c8a9fc Goyoo Networks Inc. +c8aa21 ARRIS Group, Inc. +c8aa55 Hunan Comtom Electronic Incorporated Co.,Ltd +c8aacc Private +c8ae9c Shanghai TYD Elecronic Technology Co. Ltd +c8af40 marco Systemanalyse und Entwicklung GmbH +c8afe3 Hefei Radio Communication Technology Co., Ltd +c8b1cd Apple, Inc. +c8b1ee Qorvo +c8b21e CHIPSEA TECHNOLOGIES (SHENZHEN) CORP. +c8b373 Cisco-Linksys, LLC +c8b422 ASKEY COMPUTER CORP +c8b5ad Hewlett Packard Enterprise +c8b5b7 Apple, Inc. +c8ba94 SAMSUNG ELECTRO-MECHANICS(THAILAND) +c8bae9 QDIS +c8bbd3 Embrane +c8bcc8 Apple, Inc. +c8be19 D-Link International +c8c126 ZPM Industria e Comercio Ltda +c8c13c RuggedTek Hangzhou Co., Ltd +c8c2c6 Shanghai Airm2m Communication Technology Co., Ltd +c8c2f5 FLEXTRONICS MANUFACTURING(ZHUHAI)CO.,LTD. +c8c2fa HUAWEI TECHNOLOGIES CO.,LTD +c8c50e Shenzhen Primestone Network Technologies.Co., Ltd. +c8c64a Flextronics Tech.(Ind) Pvt Ltd +c8c791 Zero1.tv GmbH +c8cbb8 Hewlett Packard +c8cd72 Sagemcom Broadband SAS +c8d019 Shanghai Tigercel Communication Technology Co.,Ltd +c8d083 Apple, Inc. +c8d10b Nokia Corporation +c8d12a Comtrend Corporation +c8d15e HUAWEI TECHNOLOGIES CO.,LTD +c8d1d1 AGAiT Technology Corporation +c8d2c1 Jetlun (Shenzhen) Corporation +c8d3a3 D-Link International +c8d3ff Hewlett Packard +c8d429 Muehlbauer AG +c8d590 FLIGHT DATA SYSTEMS +c8d5fe Shenzhen Zowee Technology Co., Ltd +c8d69d Arab International Optronics +c8d719 Cisco-Linksys, LLC +c8d779 QING DAO HAIER TELECOM CO.,LTD. +c8d7b0 Samsung Electronics Co.,Ltd +c8d9d2 Hewlett Packard +c8db26 Logitech +c8ddc9 Lenovo Mobile Communication Technology Ltd. +c8de51 IntegraOptics +c8dec9 Coriant +c8df7c Nokia Corporation +c8df84 Texas Instruments +c8e0eb Apple, Inc. +c8e130 Milkyway Group Ltd +c8e1a7 Vertu Corporation Limited +c8e42f Technical Research Design and Development +c8e776 PTCOM Technology +c8e7d8 MERCURY COMMUNICATION TECHNOLOGIES CO.,LTD. +c8e7f0 Juniper Networks +c8eaf8 zte corporation +c8ee08 TANGTOP TECHNOLOGY CO.,LTD +c8ee75 Pishion International Co. Ltd +c8eea6 Shenzhen SHX Technology Co., Ltd +c8ef2e Beijing Gefei Tech. Co., Ltd +c8f230 GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD +c8f36b Yamato Scale Co.,Ltd. +c8f386 Shenzhen Xiaoniao Technology Co.,Ltd +c8f406 Avaya Inc +c8f650 Apple, Inc. +c8f68d S.E.TECHNOLOGIES LIMITED +c8f6c8 Fiberhome Telecommunication Technologies Co.,LTD +c8f704 Building Block Video +c8f733 Intel Corporate +c8f742 HangZhou Gubei Electronics Technology Co.,Ltd +c8f750 Dell Inc. +c8f86d Alcatel-Lucent Shanghai Bell Co., Ltd +c8f946 LOCOSYS Technology Inc. +c8f981 Seneca s.r.l. +c8f9c8 NewSharp Technology(SuZhou)Co,Ltd +c8f9f9 Cisco Systems, Inc +c8fae1 ARQ Digital LLC +c8fb26 Cisco SPVTG +c8fd19 Texas Instruments +c8fe30 Bejing DAYO Mobile Communication Technology Ltd. +c8ff28 Liteon Technology Corporation +c8ff77 Dyson Limited +cc0080 BETTINI SRL +cc03d9 Cisco Meraki +cc03fa Technicolor CH USA Inc. +cc047c G-WAY Microwave +cc04b4 Select Comfort +cc051b Samsung Electronics Co.,Ltd +cc0577 HUAWEI TECHNOLOGIES CO.,LTD +cc0677 Fiberhome Telecommunication Technologies Co.,LTD +cc07ab Samsung Electronics Co.,Ltd +cc07e4 Lenovo Mobile Communication Technology Ltd. +cc088d Apple, Inc. +cc08e0 Apple, Inc. +cc08fb TP-LINK TECHNOLOGIES CO.,LTD. +cc09c8 IMAQLIQ LTD +cc0cda Miljovakt AS +cc0dec Cisco SPVTG +cc10a3 Beijing Nan Bao Technology Co., Ltd. +cc14a6 Yichun MyEnergy Domain, Inc +cc167e Cisco Systems, Inc +cc187b Manzanita Systems, Inc. +cc19a8 PT Inovação e Sistemas SA +cc1afa zte corporation +cc1be0 IEEE Registration Authority +cc1eff Metrological Group BV +cc1fc4 InVue +cc20e8 Apple, Inc. +cc2119 Samsung Electronics Co.,Ltd +cc2218 InnoDigital Co., Ltd. +cc2237 IEEE Registration Authority +cc25ef Apple, Inc. +cc262d Verifi, LLC +cc29f5 Apple, Inc. +cc2a80 Micro-Biz intelligence solutions Co.,Ltd +cc2c83 DarkMatter L.L.C +cc2d21 Tenda Technology Co.,Ltd.Dongguan branch +cc2d83 GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD +cc2d8c LG ELECTRONICS INC +cc2db7 Apple, Inc. +cc2de0 Routerboard.com +cc2f71 Intel Corporate +cc3080 VAIO Corporation +cc32e5 TP-LINK TECHNOLOGIES CO.,LTD. +cc33bb Sagemcom Broadband SAS +cc3429 TP-LINK TECHNOLOGIES CO.,LTD. +cc34d7 GEWISS S.P.A. +cc3540 Technicolor CH USA Inc. +cc355a SecuGen Corporation +cc37ab Edgecore Networks Corporation +cc398c Shiningtek +cc3a61 SAMSUNG ELECTRO MECHANICS CO., LTD. +cc3adf Private +cc3b3e Lester Electrical +cc3b58 Curiouser Products Inc +cc3c3f SA.S.S. Datentechnik AG +cc3d82 Intel Corporate +cc3e5f Hewlett Packard +cc3f1d Intesis Software SL +cc3fea BAE Systems, Inc +cc40d0 NETGEAR +cc43e3 Trump s.a. +cc4463 Apple, Inc. +cc4639 WAAV, Inc. +cc464e Samsung Electronics Co.,Ltd +cc46d6 Cisco Systems, Inc +cc4703 Intercon Systems Co., Ltd. +cc4ae1 fourtec -Fourier Technologies +cc4b73 AMPAK Technology, Inc. +cc4bfb Hellberg Safety AB +cc4d38 Carnegie Technologies +cc4e24 Brocade Communications Systems, Inc. +cc4eec HUMAX Co., Ltd. +cc500a Fiberhome Telecommunication Technologies Co.,LTD +cc501c KVH Industries, Inc. +cc5076 Ocom Communications, Inc. +cc50e3 Espressif Inc. +cc51b4 Integrated Device Technology (Malaysia) Sdn. Bhd. +cc52af Universal Global Scientific Industrial Co., Ltd. +cc53b5 HUAWEI TECHNOLOGIES CO.,LTD +cc5459 OnTime Networks AS +cc55ad RIM +cc593e TOUMAZ LTD +cc5a53 Cisco Systems, Inc +cc5c75 Weightech Com. Imp. Exp. Equip. Pesagem Ltda +cc5d4e Zyxel Communications Corporation +cc5d57 Information System Research Institute,Inc. +cc5fbf Topwise 3G Communication Co., Ltd. +cc60bb Empower RF Systems +cc61e5 Motorola Mobility LLC, a Lenovo Company +cc64a6 HUAWEI TECHNOLOGIES CO.,LTD +cc65ad ARRIS Group, Inc. +cc660a Apple, Inc. +cc66b2 Nokia +cc69b0 Global Traffic Technologies, LLC +cc6a10 The Chamberlain Group, Inc +cc6b98 Minetec Wireless Technologies +cc6bf1 Sound Masking Inc. +cc6da0 Roku, Inc. +cc6def TJK Tietolaite Oy +cc6ea4 Samsung Electronics Co.,Ltd +cc70ed Cisco Systems, Inc +cc720f Viscount Systems Inc. +cc7286 Xi'an Fengyu Information Technology Co., Ltd. +cc7314 HONG KONG WHEATEK TECHNOLOGY LIMITED +cc7498 Filmetrics Inc. +cc75e2 ARRIS Group, Inc. +cc7669 SEETECH +cc785f Apple, Inc. +cc78ab Texas Instruments +cc794a BLU Products Inc. +cc79cf SHENZHEN RF-LINK TECHNOLOGY CO.,LTD. +cc7a30 CMAX Wireless Co., Ltd. +cc7b35 zte corporation +cc7b61 NIKKISO CO., LTD. +cc7d37 ARRIS Group, Inc. +cc7ee7 Panasonic Corporation AVC Networks Company +cc81da Phicomm (Shanghai) Co., Ltd. +cc82eb KYOCERA CORPORATION +cc856c SHENZHEN MDK DIGITAL TECHNOLOGY CO.,LTD +cc8826 LG Innotek +cc89fd Nokia Corporation +cc8cda Shenzhen Wei Da Intelligent Technology Go.,Ltd +cc8ce3 Texas Instruments +cc8e71 Cisco Systems, Inc +cc9070 Cisco Systems, Inc +cc9093 Hansong Tehnologies +cc90e8 Shenzhen YOUHUA Technology Co., Ltd +cc912b TE Connectivity Touch Solutions +cc934a Sierra Wireless +cc944a Pfeiffer Vacuum GmbH +cc9470 Kinestral Technologies, Inc. +cc95d7 Vizio, Inc +cc9635 LVS Co.,Ltd. +cc96a0 HUAWEI TECHNOLOGIES CO.,LTD +cc988b SONY Visual Products Inc. +cc9891 Cisco Systems, Inc +cc9916 Integrated Device Technology (Malaysia) Sdn. Bhd. +cc9e00 Nintendo Co., Ltd. +cc9ea2 Amazon Technologies Inc. +cc9f35 Transbit Sp. z o.o. +cc9f7a Chiun Mai Communication Systems, Inc +cca0e5 DZG Metering GmbH +cca12b TCL King Electrical Appliances (Huizhou) Co., Ltd +cca219 SHENZHEN ALONG INVESTMENT CO.,LTD +cca223 HUAWEI TECHNOLOGIES CO.,LTD +cca260 SICHUAN TIANYI COMHEART TELECOMCO.,LTD +cca374 Guangdong Guanglian Electronic Technology Co.Ltd +cca462 ARRIS Group, Inc. +cca4af Shenzhen Sowell Technology Co., LTD +cca614 AIFA TECHNOLOGY CORP. +ccaf78 Hon Hai Precision Ind. Co.,Ltd. +ccb0da Liteon Technology Corporation +ccb11a Samsung Electronics Co.,Ltd +ccb255 D-Link International +ccb3ab shenzhen Biocare Bio-Medical Equipment Co.,Ltd. +ccb3f8 FUJITSU ISOTEC LIMITED +ccb55a Fraunhofer ITWM +ccb691 NECMagnusCommunications +ccb888 AnB Securite s.a. +ccb8a8 AMPAK Technology, Inc. +ccb8f1 EAGLE KINGDOM TECHNOLOGIES LIMITED +ccbbfe HUAWEI TECHNOLOGIES CO.,LTD +ccbd35 Steinel GmbH +ccbdd3 Ultimaker B.V. +ccbe59 Calix Inc. +ccbe71 OptiLogix BV +ccc079 Murata Manufacturing Co., Ltd. +ccc104 Applied Technical Systems +ccc2e0 Raisecom Technology CO., LTD +ccc3ea Motorola Mobility LLC, a Lenovo Company +ccc50a SHENZHEN DAJIAHAO TECHNOLOGY CO.,LTD +ccc5e5 Dell Inc. +ccc5ef Co-Comm Servicios Telecomunicaciones S.L. +ccc62b Tri-Systems Corporation +ccc760 Apple, Inc. +ccc8d7 CIAS Elettronica srl +ccc92c Schindler - PORT Technology +cccc4e Sun Fountainhead USA. Corp +cccc81 HUAWEI TECHNOLOGIES CO.,LTD +cccccc Silicon Laboratories +cccd64 SM-Electronic GmbH +ccce1e AVM Audiovisuelles Marketing und Computersysteme GmbH +ccce40 Janteq Corp +ccd281 Apple, Inc. +ccd29b Shenzhen Bopengfa Elec&Technology CO.,Ltd +ccd31e IEEE Registration Authority +ccd39d IEEE Registration Authority +ccd3c1 Vestel Elektronik San ve Tic. A.Ş. +ccd3e2 Jiangsu Yinhe Electronics Co.,Ltd. +ccd4a1 MitraStar Technology Corp. +ccd539 Cisco Systems, Inc +ccd811 Aiconn Technology Corporation +ccd81f Maipu Communication Technology Co.,Ltd. +ccd8c1 Cisco Systems, Inc +ccd9e9 SCR Engineers Ltd. +ccdc55 Dragonchip Limited +cce0c3 EXTEN Technologies, Inc. +cce17f Juniper Networks +cce194 Juniper Networks +cce1d5 BUFFALO.INC +cce798 My Social Stuff +cce7df American Magnetics, Inc. +cce8ac SOYEA Technology Co.,Ltd. +ccea1c DCONWORKS Co., Ltd +cceddc MitraStar Technology Corp. +cceed9 VAHLE Automation GmbH +ccef03 Hunan Keyshare Communication Technology Co., Ltd. +ccef48 Cisco Systems, Inc +ccf0fd China Mobile (Hangzhou) Information Technology Co., Ltd. +ccf3a5 Chi Mei Communication Systems, Inc +ccf407 EUKREA ELECTROMATIQUE SARL +ccf538 3isysnetworks +ccf67a Ayecka Communication Systems LTD +ccf735 Amazon Technologies Inc. +ccf841 Lumewave +ccf8f0 Xi'an HISU Multimedia Technology Co.,Ltd. +ccf954 Avaya Inc +ccf957 u-blox AG +ccf9e8 Samsung Electronics Co.,Ltd +ccfa00 LG Electronics (Mobile Communications) +ccfb65 Nintendo Co., Ltd. +ccfc6d RIZ TRANSMITTERS +ccfcb1 Wireless Technology, Inc. +ccfd17 TCT mobile ltd +ccfe3c Samsung Electronics Co.,Ltd +d0034b Apple, Inc. +d003df Samsung Electronics Co.,Ltd +d00401 Motorola Mobility LLC, a Lenovo Company +d00492 Fiberhome Telecommunication Technologies Co.,LTD +d0052a Arcadyan Corporation +d00790 Texas Instruments +d007ca Juniper Networks +d00aab Yokogawa Digital Computer Corporation +d00ea4 Porsche Cars North America +d00ed9 Taicang T&W Electronics +d00f6d T&W Electronics Company +d01242 BIOS Corporation +d0131e Sunrex Technology Corp +d013fd LG Electronics (Mobile Communications) +d0154a zte corporation +d015a6 Aruba, a Hewlett Packard Enterprise Company +d016b4 HUAWEI TECHNOLOGIES CO.,LTD +d0176a Samsung Electronics Co.,Ltd +d017c2 ASUSTek COMPUTER INC. +d0196a Ciena Corporation +d01aa7 UniPrint +d01cbb Beijing Ctimes Digital Technology Co., Ltd. +d02212 IEEE Registration Authority +d022be SAMSUNG ELECTRO-MECHANICS(THAILAND) +d023db Apple, Inc. +d02516 MERCURY COMMUNICATION TECHNOLOGIES CO.,LTD. +d02544 SAMSUNG ELECTRO-MECHANICS(THAILAND) +d02598 Apple, Inc. +d02788 Hon Hai Precision Ind. Co.,Ltd. +d02b20 Apple, Inc. +d02c45 littleBits Electronics, Inc. +d02db3 HUAWEI TECHNOLOGIES CO.,LTD +d03110 Ingenic Semiconductor Co.,Ltd +d03169 Samsung Electronics Co.,Ltd +d03311 Apple, Inc. +d03742 Yulong Computer Telecommunication Scientific (Shenzhen) Co.,Ltd +d03745 TP-LINK TECHNOLOGIES CO.,LTD. +d03761 Texas Instruments +d03972 Texas Instruments +d039b3 ARRIS Group, Inc. +d039ea NetApp +d03d52 Vaion Limited +d03dc3 AQ Corporation +d03e5c HUAWEI TECHNOLOGIES CO.,LTD +d041c9 Fiberhome Telecommunication Technologies Co.,LTD +d0431e Dell Inc. +d046dc Southwest Research Institute +d048f3 DATTUS Inc +d0498b ZOOM SERVER +d04cc1 SINTRONES Technology Corp. +d04d2c Roku, Inc. +d04e50 Mobiwire Mobiles (NingBo) Co., LTD +d04f7e Apple, Inc. +d05099 ASRock Incorporation +d05157 LEAX Arkivator Telecom +d05162 Sony Mobile Communications Inc +d052a8 Physical Graph Corporation +d05349 Liteon Technology Corporation +d0542d Cambridge Industries(Group) Co.,Ltd. +d055b2 Integrated Device Technology (Malaysia) Sdn. Bhd. +d0574c Cisco Systems, Inc +d0577b Intel Corporate +d05785 Pantech Co., Ltd. +d05794 Sagemcom Broadband SAS +d057a1 Werma Signaltechnik GmbH & Co. KG +d05875 Active Control Technology Inc. +d058a8 zte corporation +d058c0 Qingdao Haier Multimedia Limited. +d058fc BSkyB Ltd +d05995 Fiberhome Telecommunication Technologies Co.,LTD +d059c3 CeraMicro Technology Corporation +d059e4 Samsung Electronics Co.,Ltd +d05a00 Technicolor CH USA Inc. +d05a0f I-BT DIGITAL CO.,LTD +d05af1 Shenzhen Pulier Tech CO.,Ltd +d05ba8 zte corporation +d05c7a Sartura d.o.o. +d05f64 IEEE Registration Authority +d05fb8 Texas Instruments +d05fce Hitachi Data Systems +d0608c zte corporation +d062a0 China Essence Technology (Zhumadian) Co., Ltd. +d0634d Meiko Maschinenbau GmbH & Co. KG +d063b4 SolidRun Ltd. +d065ca HUAWEI TECHNOLOGIES CO.,LTD +d0666d Shenzhen Bus-Lan Technology Co., Ltd. +d0667b Samsung Electronics Co.,Ltd +d06726 Hewlett Packard Enterprise +d067e5 Dell Inc. +d0699e LUMINEX Lighting Control Equipment +d069d0 Verto Medical Solutions, LLC +d06a1f BSE CO.,LTD. +d06ede Sagemcom Broadband SAS +d06f4a TOPWELL INTERNATIONAL HOLDINGS LIMITED +d06f82 HUAWEI TECHNOLOGIES CO.,LTD +d071c4 zte corporation +d072dc Cisco Systems, Inc +d0737f Mini-Circuits +d0738e DONG OH PRECISION CO., LTD. +d073d5 LIFI LABS MANAGEMENT PTY LTD +d075be Reno A&E +d07650 IEEE Registration Authority +d076e7 TP-LINK TECHNOLOGIES CO.,LTD. +d07714 Motorola Mobility LLC, a Lenovo Company +d07ab5 HUAWEI TECHNOLOGIES CO.,LTD +d07c2d Leie IOT technology Co., Ltd +d07de5 Forward Pay Systems, Inc. +d07e28 Hewlett Packard +d07e35 Intel Corporate +d07fa0 Samsung Electronics Co.,Ltd +d07fc4 Ou Wei Technology Co.,Ltd. of Shenzhen City +d0817a Apple, Inc. +d083d4 Xtel Wireless ApS +d084b0 Sagemcom Broadband SAS +d087e2 Samsung Electronics Co.,Ltd +d08999 APCON, Inc. +d08a55 Skullcandy +d08a91 Technicolor CH USA Inc. +d08b7e Passif Semiconductor +d08cb5 Texas Instruments +d08cff UPWIS AB +d0929e Microsoft Corporation +d092fa Fiberhome Telecommunication Technologies Co.,LTD +d09380 Ducere Technologies Pvt. Ltd. +d093f8 Stonestreet One LLC +d09466 Dell Inc. +d095c7 Pantech Co., Ltd. +d096fb DASAN Network Solutions +d099d5 Alcatel-Lucent +d09b05 Emtronix +d09c30 Foster Electric Company, Limited +d09c7a Xiaomi Communications Co Ltd +d09d0a LINKCOM +d09dab TCT mobile ltd +d0a0d6 Chengdu TD Tech Ltd. +d0a311 Neuberger Gebäudeautomation GmbH +d0a4b1 Sonifex Ltd. +d0a5a6 Cisco Systems, Inc +d0a637 Apple, Inc. +d0abd5 Intel Corporate +d0aeec Alpha Networks Inc. +d0afb6 Linktop Technology Co., LTD +d0b0cd Moen +d0b128 Samsung Electronics Co.,Ltd +d0b214 PoeWit Inc +d0b2c4 Technicolor CH USA Inc. +d0b33f Shenzhen TINNO Mobile Technology Corp. +d0b498 Robert Bosch LLC Automotive Electronics +d0b523 Bestcare Cloucal Corp. +d0b53d SEPRO ROBOTIQUE +d0b5c2 Texas Instruments +d0b60a Xingluo Technology Company Limited +d0bae4 Shanghai MXCHIP Information Technology Co., Ltd. +d0bb80 SHL Telemedicine International Ltd. +d0bd01 DS International +d0be2c CNSLink Co., Ltd. +d0bf9c Hewlett Packard +d0c0bf Actions Microelectronics Co., Ltd +d0c193 SKYBELL, INC +d0c1b1 Samsung Electronics Co.,Ltd +d0c282 Cisco Systems, Inc +d0c42f Tamagawa Seiki Co.,Ltd. +d0c5d3 AzureWave Technology Inc. +d0c5d8 LATECOERE +d0c5f3 Apple, Inc. +d0c637 Intel Corporate +d0c65b HUAWEI TECHNOLOGIES CO.,LTD +d0c789 Cisco Systems, Inc +d0c7c0 TP-LINK TECHNOLOGIES CO.,LTD. +d0c857 IEEE Registration Authority +d0cde1 Scientech Electronics +d0cf5e Energy Micro AS +d0d003 Samsung Electronics Co.,LTD +d0d04b HUAWEI TECHNOLOGIES CO.,LTD +d0d0fd Cisco Systems, Inc +d0d212 K2NET Co.,Ltd. +d0d286 Beckman Coulter K.K. +d0d2b0 Apple, Inc. +d0d3fc Mios, Ltd. +d0d412 ADB Broadband Italia +d0d471 MVTECH co., Ltd +d0d6cc Wintop +d0d783 HUAWEI TECHNOLOGIES CO.,LTD +d0d94f IEEE Registration Authority +d0db32 Nokia Corporation +d0dd49 Juniper Networks +d0df9a Liteon Technology Corporation +d0dfb2 Genie Networks Limited +d0dfc7 Samsung Electronics Co.,Ltd +d0e140 Apple, Inc. +d0e347 Yoga +d0e40b Wearable Inc. +d0e44a Murata Manufacturing Co., Ltd. +d0e54d ARRIS Group, Inc. +d0e782 AzureWave Technology Inc. +d0eb03 Zhehua technology limited +d0eb9e Seowoo Inc. +d0ec35 Cisco Systems, Inc +d0efc1 HUAWEI TECHNOLOGIES CO.,LTD +d0f0db Ericsson +d0f27f SteadyServ Technoligies, LLC +d0f73b Helmut Mauell GmbH Werk Weida +d0f88c Motorola (Wuhan) Mobility Technologies Communication Co., Ltd. +d0fa1d Qihoo 360 Technology Co.,Ltd +d0fccc Samsung Electronics Co.,Ltd +d0ff50 Texas Instruments +d0ff98 HUAWEI TECHNOLOGIES CO.,LTD +d4000d Phoenix Broadband Technologies, LLC. +d40057 MC Technologies GmbH +d40129 Broadcom +d4016d TP-LINK TECHNOLOGIES CO.,LTD. +d4024a Delphian Systems LLC +d404cd ARRIS Group, Inc. +d404ff Juniper Networks +d40598 ARRIS Group, Inc. +d40aa9 ARRIS Group, Inc. +d40b1a HTC Corporation +d40bb9 Solid Semecs bv. +d40fb2 Applied Micro Electronics AME bv +d41090 iNFORM Systems AG +d410cf Huanshun Network Science and Technology Co., Ltd. +d411a3 Samsung Electronics Co.,Ltd +d411d6 ShotSpotter, Inc. +d41243 AMPAK Technology, Inc. +d41296 Anobit Technologies Ltd. +d412bb Quadrant Components Inc. Ltd +d4136f Asia Pacific Brands +d41a3f GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD +d41c1c RCF S.P.A. +d41d71 Palo Alto Networks +d41e35 TOHO Electronics INC. +d41f0c JAI Oy +d4206d HTC Corporation +d420b0 Mist Systems, Inc. +d42122 Sercomm Corporation. +d4223f Lenovo Mobile Communication Technology Ltd. +d4224e Alcatel Lucent +d4258b Intel Corporate +d425cc IEEE Registration Authority +d42751 Infopia Co., Ltd +d428b2 ioBridge, Inc. +d428d5 TCT mobile ltd +d429ea Zimory GmbH +d42c0f ARRIS Group, Inc. +d42c3d Sky Light Digital Limited +d42c44 Cisco Systems, Inc +d42f23 Akenori PTE Ltd +d4319d Sinwatec +d43260 GoPro +d43266 Fike Corporation +d4351d Technicolor +d43639 Texas Instruments +d436db Jiangsu Toppower Automotive Electronics Co., Ltd +d437d7 zte corporation +d4389c Sony Mobile Communications Inc +d43a2e SHENZHEN MTC CO LTD +d43a65 IGRS Engineering Lab Ltd. +d43ae9 DONGGUAN ipt INDUSTRIAL CO., LTD +d43b04 Intel Corporate +d43d39 Dialog Semiconductor +d43d67 Carma Industries Inc. +d43d7e Micro-Star Int'l Co, Ltd +d43fcb ARRIS Group, Inc. +d440f0 HUAWEI TECHNOLOGIES CO.,LTD +d44165 SICHUAN TIANYI COMHEART TELECOMCO.,LTD +d443a8 Changzhou Haojie Electric Co., Ltd. +d445e8 Jiangxi Hongpai Technology Co., Ltd. +d44b5e TAIYO YUDEN CO., LTD. +d44bb6 Zhejiang Tmall Technology Co., Ltd. +d44c24 Vuppalamritha Magnetic Components LTD +d44c9c Shenzhen YOOBAO Technology Co.Ltd +d44ca7 Informtekhnika & Communication, LLC +d44da4 Murata Manufacturing Co., Ltd. +d44f68 Eidetic Communications Inc +d44f80 Kemper Digital GmbH +d4503f GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD +d4507a CEIVA Logic, Inc +d4522a TangoWiFi.com +d45251 IBT Ingenieurbureau Broennimann Thun +d45297 nSTREAMS Technologies, Inc. +d45383 Murata Manufacturing Co., Ltd. +d453af VIGO System S.A. +d45556 Fiber Mountain Inc. +d455be SHENZHEN FAST TECHNOLOGIES CO.,LTD +d45800 Fiberhome Telecommunication Technologies Co.,LTD +d45ab2 Galleon Systems +d45c70 Wi-Fi Alliance +d45d42 Nokia Corporation +d45ddf PEGATRON CORPORATION +d45f25 Shenzhen YOUHUA Technology Co., Ltd +d460e3 Sercomm Corporation. +d4612e HUAWEI TECHNOLOGIES CO.,LTD +d46132 Pro Concept Manufacturer Co.,Ltd. +d4619d Apple, Inc. +d461da Apple, Inc. +d461fe Hangzhou H3C Technologies Co., Limited +d462ea HUAWEI TECHNOLOGIES CO.,LTD +d463c6 Motorola Mobility LLC, a Lenovo Company +d463fe Arcadyan Corporation +d464f7 CHENGDU USEE DIGITAL TECHNOLOGY CO., LTD +d466a8 Riedo Networks Ltd +d46761 United Gulf Gate Co. +d467d3 GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD +d467e7 Fiberhome Telecommunication Technologies Co.,LTD +d4684d Ruckus Wireless +d46867 Neoventus Design Group +d468ba Shenzhen Sundray Technologies Company Limited +d469a5 Miura Systems Ltd. +d46a35 Cisco Systems, Inc +d46a6a Hon Hai Precision Ind. Co.,Ltd. +d46a91 Snap AV +d46aa8 HUAWEI TECHNOLOGIES CO.,LTD +d46ba6 HUAWEI TECHNOLOGIES CO.,LTD +d46cbf Goodrich ISR +d46cda CSM GmbH +d46d50 Cisco Systems, Inc +d46d6d Intel Corporate +d46e0e TP-LINK TECHNOLOGIES CO.,LTD. +d46e5c HUAWEI TECHNOLOGIES CO.,LTD +d46f42 WAXESS USA Inc +d47208 Bragi GmbH +d47226 zte corporation +d4741b Beijing HuaDa ZhiBao Electronic System Co.,Ltd. +d476ea zte corporation +d4772b Nanjing Ztlink Network Technology Co.,Ltd +d47856 Avaya Inc +d4789b Cisco Systems, Inc +d479c3 Cameronet GmbH & Co. KG +d47ae2 Samsung Electronics Co.,Ltd +d47b35 NEO Monitors AS +d47b75 HARTING Electronics GmbH +d47bb0 ASKEY COMPUTER CORP +d47c44 IEEE Registration Authority +d47dfc TECNO MOBILE LIMITED +d481ca iDevices, LLC +d481d7 Dell Inc. +d4823e Argosy Technologies, Ltd. +d48304 SHENZHEN FAST TECHNOLOGIES CO.,LTD +d48564 Hewlett Packard +d487d8 Samsung Electronics Co.,Ltd +d4883f HDPRO CO., LTD. +d48890 Samsung Electronics Co.,Ltd +d48cb5 Cisco Systems, Inc +d48dd9 Meld Technology, Inc +d48f33 Microsoft Corporation +d48faa Sogecam Industrial, S.A. +d4909c Apple, Inc. +d490e0 Topcon Electronics GmbH & Co. KG +d491af Electroacustica General Iberica, S.A. +d49234 NEC Corporation +d49398 Nokia Corporation +d493a0 Fidelix Oy +d4945a COSMO CO., LTD +d494a1 Texas Instruments +d494e8 HUAWEI TECHNOLOGIES CO.,LTD +d49524 Clover Network, Inc. +d496df SUNGJIN C&T CO.,LTD +d4970b Xiaomi Communications Co Ltd +d49a20 Apple, Inc. +d49b5c Chongqing Miedu Technology Co., Ltd. +d49c28 JayBird LLC +d49c8e University of FUKUI +d49cdd AMPAK Technology,Inc. +d49cf4 Palo Alto Networks +d49dc0 Samsung Electronics Co.,Ltd +d49e05 zte corporation +d49e6d Wuhan Zhongyuan Huadian Science & Technology Co., +d4a02a Cisco Systems, Inc +d4a148 HUAWEI TECHNOLOGIES CO.,LTD +d4a33d Apple, Inc. +d4a425 SMAX Technology Co., Ltd. +d4a499 InView Technology Corporation +d4a928 GreenWave Reality Inc +d4aaff MICRO WORLD +d4ab82 ARRIS Group, Inc. +d4ac4e BODi rS, LLC +d4ad2d Fiberhome Telecommunication Technologies Co.,LTD +d4ad71 Cisco Systems, Inc +d4adbd Cisco Systems, Inc +d4ae05 Samsung Electronics Co.,Ltd +d4ae52 Dell Inc. +d4b110 HUAWEI TECHNOLOGIES CO.,LTD +d4b169 Le Shi Zhi Xin Electronic Technology (Tianjin) Limited +d4b27a ARRIS Group, Inc. +d4b43e Messcomp Datentechnik GmbH +d4b761 Sichuan AI-Link Technology Co., Ltd. +d4b8ff Home Control Singapore Pte Ltd +d4b92f Technicolor CH USA Inc. +d4bbc8 vivo Mobile Communication Co., Ltd. +d4bd1e 5VT Technologies,Taiwan LTd. +d4bed9 Dell Inc. +d4bf2d SE Controls Asia Pacific Ltd +d4bf7f UPVEL +d4c19e Ruckus Wireless +d4c1c8 zte corporation +d4c1fc Nokia Corporation +d4c766 Acentic GmbH +d4c8b0 Prime Electronics & Satellitics Inc. +d4c93c Cisco Systems, Inc +d4c94b Motorola Mobility LLC, a Lenovo Company +d4c9b2 Quanergy Systems Inc +d4c9ef Hewlett Packard +d4ca6d Routerboard.com +d4ca6e u-blox AG +d4cbaf Nokia Corporation +d4ceb8 Enatel LTD +d4cf37 Symbolic IO +d4cff9 Shenzhen Sen5 Technology Co., Ltd. +d4d184 ADB Broadband Italia +d4d249 Power Ethernet +d4d252 Intel Corporate +d4d2e5 BKAV Corporation +d4d50d Southwest Microwave, Inc +d4d748 Cisco Systems, Inc +d4d7a9 Shanghai Kaixiang Info Tech LTD +d4d898 Korea CNO Tech Co., Ltd +d4d919 GoPro +d4dccd Apple, Inc. +d4df57 Alpinion Medical Systems +d4e08e ValueHD Corporation +d4e32c S. Siedle & Sohne +d4e33f Nokia +d4e6b7 Samsung Electronics Co.,Ltd +d4e880 Cisco Systems, Inc +d4e8b2 Samsung Electronics Co.,Ltd +d4e90b CVT CO.,LTD +d4ea0e Avaya Inc +d4ec0c Harley-Davidson Motor Company +d4ec86 LinkedHope Intelligent Technologies Co., Ltd +d4ee07 HIWIFI Co., Ltd. +d4f027 Trust Power Ltd. +d4f057 Nintendo Co.,Ltd +d4f0b4 Napco Security Technologies +d4f143 IPROAD.,Inc +d4f207 DIAODIAO(Beijing)Technology CO.,Ltd +d4f46f Apple, Inc. +d4f4be Palo Alto Networks +d4f513 Texas Instruments +d4f527 SIEMENS AG +d4f547 Google, Inc. +d4f5ef Hewlett Packard Enterprise +d4f63f IEA S.R.L. +d4f786 Fiberhome Telecommunication Technologies Co.,LTD +d4f9a1 HUAWEI TECHNOLOGIES CO.,LTD +d4fc13 Fiberhome Telecommunication Technologies Co.,LTD +d8004d Apple, Inc. +d8052e Skyviia Corporation +d806d1 Honeywell Fire System (Shanghai) Co,. Ltd. +d80831 Samsung Electronics Co.,Ltd +d808f5 Arcadia Networks Co. Ltd. +d809c3 Cercacor Labs +d80b9a Samsung Electronics Co.,Ltd +d80ccf C.G.V. S.A.S. +d80d17 TP-LINK TECHNOLOGIES CO.,LTD. +d80de3 FXI TECHNOLOGIES AS +d80f99 Hon Hai Precision Ind. Co.,Ltd. +d81265 CHONGQING FUGUI ELECTRONICS CO.,LTD. +d81399 Hui Zhou Gaoshengda Technology Co.,LTD +d814d6 SURE SYSTEM Co Ltd +d8150d TP-LINK TECHNOLOGIES CO.,LTD. +d8160a Nippon Electro-Sensory Devices +d816c1 DEWAV (HK) ELECTRONICS LIMITED +d8182b Conti Temic Microelectronic GmbH +d818d3 Juniper Networks +d8197a Nuheara Ltd +d819ce Telesquare +d81bfe TWINLINX CORPORATION +d81c14 Compacta International, Ltd. +d81c79 Apple, Inc. +d81d72 Apple, Inc. +d81edd GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD +d81ede B&W Group Ltd +d81fcc Brocade Communications Systems, Inc. +d8209f Cubro Acronet GesmbH +d822f4 Avnet Silica +d82477 Universal Electric Corporation +d824bd Cisco Systems, Inc +d82522 ARRIS Group, Inc. +d825b0 Rockeetech Systems Co.,Ltd. +d826b9 Guangdong Coagent Electronics S&T Co.,Ltd. +d8270c MaxTronic International Co., Ltd. +d828c9 General Electric Consumer and Industrial +d82916 Ascent Communication Technology +d82918 HUAWEI TECHNOLOGIES CO.,LTD +d82986 Best Wish Technology LTD +d82a15 Leitner SpA +d82a7e Nokia Corporation +d82d9b Shenzhen G.Credit Communication Technology Co., Ltd +d82de1 Tricascade Inc. +d82fe6 Zhejiang Tmall Technology Co., Ltd. +d83062 Apple, Inc. +d83134 Roku, Inc +d831cf Samsung Electronics Co.,Ltd +d83214 Tenda Technology Co.,Ltd.Dongguan branch +d8325a Shenzhen YOUHUA Technology Co., Ltd +d832e3 Xiaomi Communications Co Ltd +d8337f Office FA.com Co.,Ltd. +d837be SHENZHEN GONGJIN ELECTRONICS CO.,LT +d8380d SHENZHEN IP-COM Network Co.,Ltd +d838fc Ruckus Wireless +d83af5 Wideband Labs LLC +d83c69 Shenzhen TINNO Mobile Technology Corp. +d842ac Shanghai Feixun Communication Co.,Ltd. +d842e2 Canary Connect, Inc. +d843ed Suzuken +d8445c DEV Tecnologia Ind Com Man Eq LTDA +d8452b Integrated Device Technology (Malaysia) Sdn. Bhd. +d84606 Silicon Valley Global Marketing +d84710 Sichuan Changhong Electric Ltd. +d848ee Hangzhou Xueji Technology Co., Ltd. +d8490b HUAWEI TECHNOLOGIES CO.,LTD +d8492f CANON INC. +d84a87 OI ELECTRIC CO.,LTD +d84b2a Cognitas Technologies, Inc. +d84fb8 LG ELECTRONICS +d850e6 ASUSTek COMPUTER INC. +d8543a Texas Instruments +d854a2 Aerohive Networks Inc. +d85575 Samsung Electronics Co.,Ltd +d855a3 zte corporation +d857ef Samsung Electronics Co.,Ltd +d858d7 CZ.NIC, z.s.p.o. +d85b2a Samsung Electronics Co.,Ltd +d85d4c TP-LINK TECHNOLOGIES CO.,LTD. +d85d84 CAx soft GmbH +d85de2 Hon Hai Precision Ind. Co.,Ltd. +d85def Busch-Jaeger Elektro GmbH +d85dfb Private +d860b0 bioMérieux Italia S.p.A. +d860b3 Guangdong Global Electronic Technology CO.,LTD +d86162 Wistron Neweb Corporation +d86194 Objetivos y Sevicios de Valor Añadido +d862db Eno Inc. +d86375 Xiaomi Communications Co Ltd +d86595 Toy's Myth Inc. +d866c6 Shenzhen Daystar Technology Co.,ltd +d866ee BOXIN COMMUNICATION CO.,LTD. +d867d9 Cisco Systems, Inc +d868c3 Samsung Electronics Co.,Ltd +d86960 Steinsvik +d86bf7 Nintendo Co., Ltd. +d86c02 Huaqin Telecom Technology Co.,Ltd +d86c63 Google, Inc. +d86ce9 Sagemcom Broadband SAS +d87157 Lenovo Mobile Communication Technology Ltd. +d87495 zte corporation +d87533 Nokia Corporation +d8760a Escort, Inc. +d878e5 KUHN SA +d87988 Hon Hai Precision Ind. Co.,Ltd. +d87cdd SANIX INCORPORATED +d87d7f Sagemcom Broadband SAS +d87eb1 x.o.ware, inc. +d88039 Microchip Technology Inc. +d8803c Anhui Huami Information Technology Company Limited +d881ce AHN INC. +d88466 Extreme Networks, Inc. +d8860b IEEE Registration Authority +d887d5 Leadcore Technology CO.,LTD +d888ce RF Technology Pty Ltd +d88a3b UNIT-EM +d88adc Huawei Device Co., Ltd. +d88b4c KingTing Tech. +d88d5c Elentec +d88dc8 Atil Technology Co., LTD +d88f76 Apple, Inc. +d890e8 Samsung Electronics Co.,Ltd +d8912a Zyxel Communications Corporation +d89341 General Electric Global Research +d89403 Hewlett Packard Enterprise +d8952f Texas Instruments +d89685 GoPro +d89695 Apple, Inc. +d896e0 Alibaba Cloud Computing Ltd. +d8973b Artesyn Embedded Technologies +d89760 C2 Development, Inc. +d8977c Grey Innovation +d89790 Commonwealth Scientific and Industrial Research Organisation +d897ba PEGATRON CORPORATION +d89a34 Beijing SHENQI Technology Co., Ltd. +d89b3b HUAWEI TECHNOLOGIES CO.,LTD +d89c67 Hon Hai Precision Ind. Co.,Ltd. +d89d67 Hewlett Packard +d89db9 eMegatech International Corp. +d89e3f Apple, Inc. +d89e61 Huawei Device Co., Ltd. +d89ef3 Dell Inc. +d8a01d Espressif Inc. +d8a105 Syslane, Co., Ltd. +d8a25e Apple, Inc. +d8a315 vivo Mobile Communication Co., Ltd. +d8a534 Spectronix Corporation +d8a6fd Ghost Locomotion +d8a756 Sagemcom Broadband SAS +d8a98b Texas Instruments +d8addd Sonavation, Inc. +d8ae90 Itibia Technologies +d8af3b Hangzhou Bigbright Integrated communications system Co.,Ltd +d8af81 ZAO NPK Rotek +d8aff1 Panasonic Appliances Company +d8b02e Guangzhou Zonerich Business Machine Co., LTD. +d8b04c Jinan USR IOT Technology Co., Ltd. +d8b122 Juniper Networks +d8b12a Panasonic Mobile Communications Co.,Ltd. +d8b190 Cisco Systems, Inc +d8b377 HTC Corporation +d8b6b7 Comtrend Corporation +d8b6c1 NetworkAccountant, Inc. +d8b6d6 Blu Tether Limited +d8b8f6 Nantworks +d8b90e Triple Domain Vision Co.,Ltd. +d8bb2c Apple, Inc. +d8bc59 Shenzhen DAPU Microelectronics Co., Ltd +d8bf4c Victory Concept Electronics Limited +d8bfc0 Espressif Inc. +d8c068 Netgenetech.co.,ltd. +d8c06a Hunantv.com Interactive Entertainment Media Co.,Ltd. +d8c3fb DETRACOM +d8c46a Murata Manufacturing Co., Ltd. +d8c497 Quanta Computer Inc. +d8c4e9 Samsung Electronics Co.,Ltd +d8c691 Hichan Technology Corp. +d8c771 HUAWEI TECHNOLOGIES CO.,LTD +d8c7c8 Aruba, a Hewlett Packard Enterprise Company +d8c8e9 Phicomm (Shanghai) Co., Ltd. +d8c99d EA DISPLAY LIMITED +d8ca06 Titan DataCenters France +d8cb8a Micro-Star INTL CO., LTD. +d8ce3a Xiaomi Communications Co Ltd +d8cf9c Apple, Inc. +d8d090 Dell Inc. +d8d1cb Apple, Inc. +d8d27c JEMA ENERGY, SA +d8d385 Hewlett Packard +d8d43c Sony Corporation +d8d4e6 Hytec Inter Co., Ltd. +d8d5b9 Rainforest Automation, Inc. +d8d67e GSK CNC EQUIPMENT CO.,LTD +d8d6f3 Integrated Device Technology (Malaysia) Sdn. Bhd. +d8d723 IDS, Inc +d8d775 Sagemcom Broadband SAS +d8d866 SHENZHEN TOZED TECHNOLOGIES CO.,LTD. +d8da52 APATOR S.A. +d8dce9 Kunshan Erlab ductless filtration system Co.,Ltd +d8dd5f BALMUDA Inc. +d8ddfd Texas Instruments +d8dece ISUNG CO.,LTD +d8df0d beroNet GmbH +d8df7a Quest Software, Inc. +d8e004 Vodia Networks Inc +d8e0b8 BULAT LLC +d8e0e1 Samsung Electronics Co.,Ltd +d8e3ae CIRTEC MEDICAL SYSTEMS +d8e56d TCT mobile ltd +d8e72b NetAlly +d8e743 Wush, Inc +d8e952 KEOPSYS +d8eb97 TRENDnet, Inc. +d8ed1c Magna Technology SL +d8ee78 Moog Protokraft +d8efcd Nokia +d8f0f2 Zeebo Inc +d8f15b Espressif Inc. +d8f1f0 Pepxim International Limited +d8f2ca Intel Corporate +d8f3db Post CH AG +d8f710 Libre Wireless Technologies Inc. +d8fb11 AXACORE +d8fb5e ASKEY COMPUTER CORP +d8fb68 Cloud Corner Ltd. +d8fc38 Giantec Semiconductor Inc +d8fc93 Intel Corporate +d8fe8f IDFone Co., Ltd. +d8fee3 D-Link International +dc0077 TP-LINK TECHNOLOGIES CO.,LTD. +dc0265 Meditech Kft +dc028e zte corporation +dc052f National Products Inc. +dc0575 SIEMENS ENERGY AUTOMATION +dc05ed Nabtesco Corporation +dc07c1 HangZhou QiYang Technology Co.,Ltd. +dc080f Apple, Inc. +dc0856 Alcatel-Lucent Enterprise +dc0914 Talk-A-Phone Co. +dc094c HUAWEI TECHNOLOGIES CO.,LTD +dc0b1a ADB Broadband Italia +dc0b34 LG Electronics (Mobile Communications) +dc0c2d WEIFANG GOERTEK ELECTRONICS CO.,LTD +dc0c5c Apple, Inc. +dc0d30 Shenzhen Feasycom Technology Co., Ltd. +dc0ea1 COMPAL INFORMATION (KUNSHAN) CO., LTD. +dc15db Ge Ruili Intelligent Technology ( Beijing ) Co., Ltd. +dc16a2 Medtronic Diabetes +dc16b2 HUAWEI TECHNOLOGIES CO.,LTD +dc175a Hitachi High-Technologies Corporation +dc1792 Captivate Network +dc1a01 Ecoliv Technology ( Shenzhen ) Ltd. +dc1ac5 vivo Mobile Communication Co., Ltd. +dc1d9f U & B tech +dc1dd4 Microstep-MIS spol. s r.o. +dc1ea3 Accensus LLC +dc2008 ASD Electronics Ltd +dc21b9 Sentec Co.Ltd +dc2834 HAKKO Corporation +dc2919 AltoBeam (Xiamen) Technology Ltd, Co. +dc293a Shenzhen Nuoshi Technology Co., LTD. +dc2a14 Shanghai Longjing Technology Co. +dc2aa1 MedHab LLC +dc2b2a Apple, Inc. +dc2b61 Apple, Inc. +dc2b66 InfoBLOCK S.A. de C.V. +dc2bca Zera GmbH +dc2c26 Iton Technology Limited +dc2dcb Beijing Unis HengYue Technology Co., Ltd. +dc2e6a HCT. Co., Ltd. +dc2f03 Step forward Group Co., Ltd. +dc309c Heyrex Limited +dc31d1 vivo Mobile Communication Co., Ltd. +dc330d QING DAO HAIER TELECOM CO.,LTD. +dc3350 TechSAT GmbH +dc35f1 Positivo Informática SA. +dc3714 Apple, Inc. +dc3752 GE +dc3757 Integrated Device Technology (Malaysia) Sdn. Bhd. +dc37d2 Hunan HKT Electronic Technology Co., Ltd +dc38e1 Juniper Networks +dc396f AVM Audiovisuelles Marketing und Computersysteme GmbH +dc3979 Cisco Systems, Inc +dc3a5e Roku, Inc. +dc3c2e Manufacturing System Insights, Inc. +dc3c84 Ticom Geomatics, Inc. +dc3cf6 Atomic Rules LLC +dc3e51 Solberg & Andersen AS +dc3ef8 Nokia Corporation +dc415f Apple, Inc. +dc41e5 Shenzhen Zhixin Data Service Co., Ltd. +dc4427 IEEE Registration Authority +dc446d Allwinner Technology Co., Ltd +dc44b6 Samsung Electronics Co.,Ltd +dc4517 ARRIS Group, Inc. +dc48b2 Baraja Pty. Ltd. +dc49c9 CASCO SIGNAL LTD +dc4a3e Hewlett Packard +dc4d23 MRV Comunications +dc4ede SHINYEI TECHNOLOGY CO., LTD. +dc4ef4 Shenzhen MTN Electronics CO., Ltd +dc4f22 Espressif Inc. +dc5360 Intel Corporate +dc537c Compal Broadband Networks, Inc. +dc54d7 Amazon Technologies Inc. +dc5583 GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD +dc56e6 Shenzhen Bococom Technology Co.,LTD +dc56e7 Apple, Inc. +dc5726 Power-One +dc58bc Thomas-Krenn.AG +dc5e36 Paterson Technology +dc60a1 Teledyne DALSA Professional Imaging +dc647c C.R.S. iiMotion GmbH +dc64b8 Shenzhen JingHanDa Electronics Co.Ltd +dc663a Apacer Technology Inc. +dc6672 Samsung Electronics Co.,Ltd +dc6723 barox Kommunikation GmbH +dc680c Hewlett Packard Enterprise +dc68eb Nintendo Co.,Ltd +dc6aea Infinix mobility limited +dc6dcd GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD +dc6f00 Livescribe, Inc. +dc6f08 Bay Storage Technology +dc7014 Private +dc7137 zte corporation +dc7144 SAMSUNG ELECTRO MECHANICS CO., LTD. +dc7196 Intel Corporate +dc729b HUAWEI TECHNOLOGIES CO.,LTD +dc74a8 Samsung Electronics Co.,Ltd +dc7834 LOGICOM SA +dc7b94 Cisco Systems, Inc +dc7fa4 2Wire Inc +dc825b JANUS, spol. s r.o. +dc82f6 iPort +dc85de AzureWave Technology Inc. +dc86d8 Apple, Inc. +dc8b28 Intel Corporate +dc8c37 Cisco Systems, Inc +dc9088 HUAWEI TECHNOLOGIES CO.,LTD +dc962c NST Audio Ltd +dc9914 HUAWEI TECHNOLOGIES CO.,LTD +dc9a8e Nanjing Cocomm electronics co., LTD +dc9b1e Intercom, Inc. +dc9b9c Apple, Inc. +dc9c52 Sapphire Technology Limited. +dc9c9f Shenzhen YOUHUA Technology Co., Ltd +dc9fa4 Nokia Corporation +dc9fdb Ubiquiti Networks Inc. +dca266 Hon Hai Precision Ind. Co.,Ltd. +dca333 Shenzhen YOUHUA Technology Co., Ltd +dca3ac RBcloudtech +dca4ca Apple, Inc. +dca5f4 Cisco Systems, Inc +dca632 Raspberry Pi Trading Ltd +dca6bd Beijing Lanbo Technology Co., Ltd. +dca7d9 Compressor Controls Corp +dca8cf New Spin Golf, LLC. +dca904 Apple, Inc. +dca971 Intel Corporate +dca989 MACANDC +dcad9e GreenPriz +dcae04 CELOXICA Ltd +dcaf68 WEIFANG GOERTEK ELECTRONICS CO.,LTD +dcb058 Bürkert Werke GmbH +dcb082 Nokia +dcb3b4 Honeywell Environmental & Combustion Controls (Tianjin) Co., Ltd. +dcb4ac FLEXTRONICS MANUFACTURING(ZHUHAI)CO.,LTD. +dcb4c4 Microsoft XCG +dcb808 Extreme Networks, Inc. +dcbe7a Zhejiang Nurotron Biotechnology Co. +dcbf90 HUIZHOU QIAOXING TELECOMMUNICATION INDUSTRY CO.,LTD. +dcbfe9 Motorola Mobility LLC, a Lenovo Company +dcc0db Shenzhen Kaiboer Technology Co., Ltd. +dcc0eb ASSA ABLOY CÔTE PICARDE +dcc101 SOLiD Technologies, Inc. +dcc422 Systembase Limited +dcc622 BUHEUNG SYSTEM +dcc64b HUAWEI TECHNOLOGIES CO.,LTD +dcc793 Nokia Corporation +dcc8f5 Shanghai UMEinfo CO.,LTD. +dccba8 Explora Technologies Inc +dccc8d Integrated Device Technology (Malaysia) Sdn. Bhd. +dcce41 FE GLOBAL HONG KONG LIMITED +dccebc Shenzhen JSR Technology Co.,Ltd. +dccec1 Cisco Systems, Inc +dccf94 Beijing Rongcheng Hutong Technology Co., Ltd. +dccf96 Samsung Electronics Co.,Ltd +dcd0f7 Bentek Systems Ltd. +dcd255 Kinpo Electronics, Inc. +dcd2fc HUAWEI TECHNOLOGIES CO.,LTD +dcd321 HUMAX Co., Ltd. +dcd3a2 Apple, Inc. +dcd52a Sunny Heart Limited +dcd87c Beijing Jingdong Century Trading Co., LTD. +dcd87f Shenzhen JoinCyber Telecom Equipment Ltd +dcd916 HUAWEI TECHNOLOGIES CO.,LTD +dcda4f GETCK TECHNOLOGY, INC +dcda80 New H3C Technologies Co., Ltd +dcdb70 Tonfunk Systementwicklung und Service GmbH +dcdc07 TRP Systems BV +dcdd24 Energica Motor Company SpA +dcde4f Gionee Communication Equipment Co Ltd +dcdeca Akyllor +dcdfd6 zte corporation +dce026 Patrol Tag, Inc +dce0eb Nanjing Aozheng Information Technology Co.Ltd +dce1ad Shenzhen Wintop Photoelectric Technology Co., Ltd +dce2ac Lumens Digital Optics Inc. +dce305 ZAO NPK Rotek +dce533 IEEE Registration Authority +dce578 Experimental Factory of Scientific Engineering and Special Design Department +dce71c AUG Elektronik GmbH +dce838 CK Telecom (Shenzhen) Limited +dceb53 Wuhan QianXiao Elecronic Technology CO.,LTD +dceb69 Technicolor CH USA Inc. +dceb94 Cisco Systems, Inc +dcec06 Heimi Network Technology Co., Ltd. +dced84 Haverford Systems Inc +dcee06 HUAWEI TECHNOLOGIES CO.,LTD +dcef09 NETGEAR +dcefca Murata Manufacturing Co., Ltd. +dcf05d Letta Teknoloji +dcf090 Nubia Technology Co.,Ltd. +dcf110 Nokia Corporation +dcf401 Dell Inc. +dcf505 AzureWave Technology Inc. +dcf719 Cisco Systems, Inc +dcf755 SITRONIK +dcf756 Samsung Electronics Co.,Ltd +dcf858 Lorent Networks, Inc. +dcf8b9 zte corporation +dcfad5 STRONG Ges.m.b.H. +dcfb02 BUFFALO.INC +dcfb48 Intel Corporate +dcfe07 PEGATRON CORPORATION +dcfe18 TP-LINK TECHNOLOGIES CO.,LTD. +e00084 HUAWEI TECHNOLOGIES CO.,LTD +e002a5 ABB Robotics +e00370 ShenZhen Continental Wireless Technology Co., Ltd. +e005c5 TP-LINK TECHNOLOGIES CO.,LTD. +e006e6 Hon Hai Precision Ind. Co.,Ltd. +e0071b Hewlett Packard Enterprise +e009bf SHENZHEN TONG BO WEI TECHNOLOGY Co.,LTD +e00b28 Inovonics +e00c7f Nintendo Co., Ltd. +e00db9 Cree, Inc. +e00eda Cisco Systems, Inc +e00ee1 We Corporation Inc. +e0107f Ruckus Wireless +e01283 Shenzhen Fanzhuo Communication Technology Co., Lt +e013b5 vivo Mobile Communication Co., Ltd. +e0143e Modoosis Inc. +e01877 FUJITSU LIMITED +e0189f EM Microelectronic +e0191d HUAWEI TECHNOLOGIES CO.,LTD +e01954 zte corporation +e019d8 BH TECHNOLOGIES +e01aea Allied Telesis, Inc. +e01c41 Aerohive Networks Inc. +e01cee Bravo Tech, Inc. +e01d38 Beijing HuaqinWorld Technology Co.,Ltd +e01d3b Cambridge Industries(Group) Co.,Ltd. +e01e07 Anite Telecoms US. Inc +e01f0a Xslent Energy Technologies. LLC +e01f88 Xiaomi Communications Co Ltd +e02202 ARRIS Group, Inc. +e0247f HUAWEI TECHNOLOGIES CO.,LTD +e02481 HUAWEI TECHNOLOGIES CO.,LTD +e02538 Titan Pet Products +e02630 Intrigue Technologies, Inc. +e02636 Nortel Networks +e0271a TTC Next-generation Home Network System WG +e02861 HUAWEI TECHNOLOGIES CO.,LTD +e0286d AVM Audiovisuelles Marketing und Computersysteme GmbH +e02a82 Universal Global Scientific Industrial Co., Ltd. +e02cb2 Lenovo Mobile Communication (Wuhan) Company Limited +e02cf3 MRS Electronic GmbH +e02f6d Cisco Systems, Inc +e03005 Alcatel-Lucent Shanghai Bell Co., Ltd +e0319e Valve Corporation +e031d0 SZ Telstar CO., LTD +e0338e Apple, Inc. +e034e4 Feit Electric Company, Inc. +e03560 Challenger Supply Holdings, LLC +e03676 HUAWEI TECHNOLOGIES CO.,LTD +e036e3 Stage One International Co., Ltd. +e03717 Technicolor CH USA Inc. +e037bf Wistron Neweb Corporation +e0383f zte corporation +e039d7 Plexxi, Inc. +e03c5b SHENZHEN JIAXINJIE ELECTRON CO.,LTD +e03e44 Broadcom +e03e4a Cavanagh Group International +e03e7d data-complex GmbH +e03f49 ASUSTek COMPUTER INC. +e04136 MitraStar Technology Corp. +e043db Shenzhen ViewAt Technology Co.,Ltd. +e0456d China Mobile Group Device Co.,Ltd. +e0469a NETGEAR +e046e5 Gosuncn Technology Group Co., Ltd. +e048af Premietech Limited +e048d3 MOBIWIRE MOBILES (NINGBO) CO.,LTD +e049ed Audeze LLC +e04b45 Hi-P Electronics Pte Ltd +e04f43 Universal Global Scientific Industrial Co., Ltd. +e04fbd SICHUAN TIANYI COMHEART TELECOMCO.,LTD +e0508b Zhejiang Dahua Technology Co., Ltd. +e05124 NXP Semiconductors +e05163 Arcadyan Corporation +e0553d Cisco Meraki +e05597 Emergent Vision Technologies Inc. +e056f4 AxesNetwork Solutions inc. +e0589e Laerdal Medical +e05a9f IEEE Registration Authority +e05b70 Innovid, Co., Ltd. +e05d5c Oy Everon Ab +e05da6 Detlef Fink Elektronik & Softwareentwicklung +e05f45 Apple, Inc. +e05fb9 Cisco Systems, Inc +e06066 Sercomm Corporation. +e06089 Cloudleaf, Inc. +e061b2 HANGZHOU ZENOINTEL TECHNOLOGY CO., LTD +e06267 Xiaomi Communications Co Ltd +e06290 Jinan Jovision Science & Technology Co., Ltd. +e063da Ubiquiti Networks Inc. +e063e5 Sony Mobile Communications Inc +e064bb DigiView S.r.l. +e06678 Apple, Inc. +e067b3 Shenzhen C-Data Technology Co., Ltd +e0686d Raybased AB +e06995 PEGATRON CORPORATION +e0735f NUCOM +e0750a ALPS ELECTRIC CO., LTD. +e0757d Motorola Mobility LLC, a Lenovo Company +e076d0 AMPAK Technology, Inc. +e078a3 Shanghai Winner Information Technology Co.,Inc +e0795e Wuxi Xiaohu Technology Co.,Ltd. +e07c13 zte corporation +e07c62 Whistle Labs, Inc. +e07dea Texas Instruments +e07f53 TECHBOARD SRL +e07f88 EVIDENCE Network SIA +e08177 GreenBytes, Inc. +e084f3 High Grade Controls Corporation +e087b1 Nata-Info Ltd. +e0885d Technicolor CH USA Inc. +e0897e Apple, Inc. +e0899d Cisco Systems, Inc +e08a7e Exponent +e08e3c Aztech Electronics Pte Ltd +e08fec REPOTEC CO., LTD. +e09153 XAVi Technologies Corp. +e091f5 NETGEAR +e09467 Intel Corporate +e09579 ORTHOsoft inc, d/b/a Zimmer CAS +e09796 HUAWEI TECHNOLOGIES CO.,LTD +e097f2 Atomax Inc. +e09861 Motorola Mobility LLC, a Lenovo Company +e09971 Samsung Electronics Co.,Ltd +e09d31 Intel Corporate +e09db8 PLANEX COMMUNICATIONS INC. +e09dfa Wanan Hongsheng Electronic Co.Ltd +e09f2a Iton Technology Corp. +e0a198 NOJA Power Switchgear Pty Ltd +e0a1d7 SFR +e0a30f Pevco +e0a3ac HUAWEI TECHNOLOGIES CO.,LTD +e0a509 Bitmain Technologies Inc +e0a670 Nokia Corporation +e0a700 Verkada Inc +e0a8b8 Le Shi Zhi Xin Electronic Technology (Tianjin) Limited +e0aa96 Samsung Electronics Co.,Ltd +e0aab0 SUNTAILI ENTERPRISE CO. LTD, +e0aadb Nanjing PANENG Technology Development Co.,Ltd +e0abfe Orb Networks, Inc. +e0accb Apple, Inc. +e0acf1 Cisco Systems, Inc +e0ae5e ALPS ELECTRIC CO., LTD. +e0aeb2 Bender GmbH & Co.KG +e0aeed LOENK +e0af4b Pluribus Networks, Inc. +e0af4f Deutsche Telekom AG +e0b2f1 FN-LINK TECHNOLOGY LIMITED +e0b52d Apple, Inc. +e0b655 Beijing Xiaomi Electronics Co., Ltd. +e0b6f5 IEEE Registration Authority +e0b70a ARRIS Group, Inc. +e0b7b1 ARRIS Group, Inc. +e0b94d SHENZHEN BILIAN ELECTRONIC CO.,LTD +e0b9a5 AzureWave Technology Inc. +e0b9ba Apple, Inc. +e0b9e5 Technicolor +e0bab4 Arrcus, Inc +e0bc43 C2 Microsystems, Inc. +e0c0d1 CK Telecom (Shenzhen) Limited +e0c286 Aisai Communication Technology Co., Ltd. +e0c2b7 Masimo Corporation +e0c3f3 zte corporation +e0c63c SICHUAN TIANYI COMHEART TELECOMCO., LTD +e0c6b3 MilDef AB +e0c767 Apple, Inc. +e0c79d Texas Instruments +e0c86a SHENZHEN TW-SCIE Co., Ltd +e0c922 Jireh Energy Tech., Ltd. +e0c97a Apple, Inc. +e0ca4d Shenzhen Unistar Communication Co.,LTD +e0ca94 ASKEY COMPUTER CORP +e0cb1d Private +e0cb4e ASUSTek COMPUTER INC. +e0cbbc Cisco Meraki +e0cbee Samsung Electronics Co.,Ltd +e0cc7a HUAWEI TECHNOLOGIES CO.,LTD +e0cdfd Beijing E3Control Technology Co, LTD +e0cec3 ASKEY COMPUTER CORP +e0cf2d Gemintek Corporation +e0d083 Samsung Electronics Co.,Ltd +e0d10a Katoudenkikougyousyo co ltd +e0d173 Cisco Systems, Inc +e0d1e6 Aliph dba Jawbone +e0d31a EQUES Technology Co., Limited +e0d55e GIGA-BYTE TECHNOLOGY CO.,LTD. +e0d7ba Texas Instruments +e0d848 Dell Inc. +e0d9a2 Hippih aps +e0d9e3 Eltex Enterprise Ltd. +e0dadc JVC KENWOOD Corporation +e0db10 Samsung Electronics Co.,Ltd +e0db55 Dell Inc. +e0db88 Open Standard Digital-IF Interface for SATCOM Systems +e0dca0 Siemens Industrial Automation Products Ltd Chengdu +e0dcff Xiaomi Communications Co Ltd +e0ddc0 vivo Mobile Communication Co., Ltd. +e0e5cf Texas Instruments +e0e62e TCT mobile ltd +e0e631 SNB TECHNOLOGIES LIMITED +e0e751 Nintendo Co., Ltd. +e0e7bb Nureva, Inc. +e0e8e6 Shenzhen C-Data Technology Co., Ltd. +e0e8e8 Olive Telecommunication Pvt. Ltd +e0eb62 Shanghai Hulu Devices Co., Ltd +e0ed1a vastriver Technology Co., Ltd +e0edc7 Shenzhen Friendcom Technology Development Co., Ltd +e0ee1b Panasonic Automotive Systems Company of America +e0ef25 Lintes Technology Co., Ltd. +e0f211 Digitalwatt +e0f379 Vaddio +e0f5c6 Apple, Inc. +e0f5ca CHENG UEI PRECISION INDUSTRY CO.,LTD. +e0f847 Apple, Inc. +e0f9be Cloudena Corp. +e0faec Platan sp. z o.o. sp. k. +e0fff7 Softiron Inc. +e4029b Intel Corporate +e40439 TomTom Software Ltd +e405f8 Delta Innovation Technology Co., Ltd. +e40eee HUAWEI TECHNOLOGIES CO.,LTD +e4115b Hewlett Packard +e41218 ShenZhen Rapoo Technology Co., Ltd. +e4121d Samsung Electronics Co.,Ltd +e41289 topsystem Systemhaus GmbH +e415f6 Texas Instruments +e417d8 8BITDO TECHNOLOGY HK LIMITED +e4186b Zyxel Communications Corporation +e419c1 HUAWEI TECHNOLOGIES CO.,LTD +e41a2c ZPE Systems, Inc. +e41c4b V2 TECHNOLOGY, INC. +e41d2d Mellanox Technologies, Inc. +e41e0a IEEE Registration Authority +e41f13 IBM Corp +e41fe9 Dunkermotoren GmbH +e422a5 PLANTRONICS, INC. +e42354 SHENZHEN FUZHI SOFTWARE TECHNOLOGY CO.,LTD +e425e7 Apple, Inc. +e425e9 Color-Chip +e42771 Smartlabs +e42ad3 Magneti Marelli S.p.A. Powertrain +e42b34 Apple, Inc. +e42c56 Lilee Systems, Ltd. +e42d02 TCT mobile ltd +e42d7b China Mobile IOT Company Limited +e42f26 Fiberhome Telecommunication Technologies Co.,LTD +e42f56 OptoMET GmbH +e42ff6 Unicore communication Inc. +e43022 Hanwha Techwin Security Vietnam +e432cb Samsung Electronics Co.,Ltd +e43493 HUAWEI TECHNOLOGIES CO.,LTD +e43593 Hangzhou GoTo technology Co.Ltd +e435c8 HUAWEI TECHNOLOGIES CO.,LTD +e435fb Sabre Technology (Hull) Ltd +e437d7 HENRI DEPAEPE S.A.S. +e4388c Digital Products Limited +e438f2 Advantage Controls +e43a6e Shenzhen Zeroone Technology CO.,LTD +e43c80 University of Oklahoma +e43ed7 Arcadyan Corporation +e43fa2 Wuxi DSP Technologies Inc. +e440e2 Samsung Electronics Co.,Ltd +e441e6 Ottec Technology GmbH +e442a6 Intel Corporate +e4434b Dell Inc. +e446bd C&C TECHNIC TAIWAN CO., LTD. +e446da Xiaomi Communications Co Ltd +e44790 GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD +e447b3 zte corporation +e448c7 Cisco SPVTG +e44c6c Shenzhen Guo Wei Electronic Co,. Ltd. +e44cc7 IEEE Registration Authority +e44e18 Gardasoft VisionLimited +e44e76 CHAMPIONTECH ENTERPRISE (SHENZHEN) INC +e44f29 MA Lighting Technology GmbH +e44f5f EDS Elektronik Destek San.Tic.Ltd.Sti +e4509a HW Communications Ltd +e450eb Apple, Inc. +e454e8 Dell Inc. +e455ea Dedicated Computing +e45614 Suttle Apparatus +e45740 ARRIS Group, Inc. +e457a8 Stuart Manufacturing, Inc. +e458b8 Samsung Electronics Co.,Ltd +e458e7 Samsung Electronics Co.,Ltd +e45aa2 vivo Mobile Communication Co., Ltd. +e45d37 Juniper Networks +e45d51 SFR +e45d52 Avaya Inc +e45d75 Samsung Electronics Co.,Ltd +e46059 Pingtek Co., Ltd. +e46251 HAO CHENG GROUP LIMITED +e46449 ARRIS Group, Inc. +e4671e SHEN ZHEN NUO XIN CHENG TECHNOLOGY co., Ltd. +e467ba Danish Interpretation Systems A/S +e468a3 HUAWEI TECHNOLOGIES CO.,LTD +e4695a Dictum Health, Inc. +e46c21 messMa GmbH +e46f13 D-Link International +e470b8 Intel Corporate +e47185 Securifi Ltd +e472e2 HUAWEI TECHNOLOGIES CO.,LTD +e4751e Getinge Sterilization AB +e47723 zte corporation +e4776b AARTESYS AG +e477d4 Minrray Industry Co.,Ltd +e47b3f BEIJING CO-CLOUD TECHNOLOGY LTD. +e47cf9 Samsung Electronics Co.,Ltd +e47d5a Beijing Hanbang Technology Corp. +e47dbd Samsung Electronics Co.,Ltd +e47deb Shanghai Notion Information Technology CO.,LTD. +e47e66 HUAWEI TECHNOLOGIES CO.,LTD +e47e9a zte corporation +e47fb2 FUJITSU LIMITED +e48184 Nokia +e481b3 Shenzhen ACT Industrial Co.,Ltd. +e482cc Jumptronic GmbH +e48399 ARRIS Group, Inc. +e48501 Geberit International AG +e48ad5 RF WINDOW CO., LTD. +e48b7f Apple, Inc. +e48c0f Discovery Insure +e48d8c Routerboard.com +e48f34 Vodafone Italia S.p.A. +e48f65 Yelatma Instrument Making Enterprise, JSC +e49069 Rockwell Automation +e4907e Motorola Mobility LLC, a Lenovo Company +e4922a DBG HOLDINGS LIMITED +e492e7 Gridlink Tech. Co.,Ltd. +e492fb Samsung Electronics Co.,Ltd +e4956e IEEE Registration Authority +e496ae ALTOGRAPHICS Inc. +e497f0 Shanghai VLC Technologies Ltd. Co. +e498bb Phyplus Microelectronics Limited +e498d1 Microsoft Mobile Oy +e498d6 Apple, Inc. +e49a79 Apple, Inc. +e49adc Apple, Inc. +e49e12 FREEBOX SAS +e49f1e ARRIS Group, Inc. +e4a1e6 Alcatel-Lucent Shanghai Bell Co., Ltd +e4a32f Shanghai Artimen Technology Co., Ltd. +e4a387 Control Solutions LLC +e4a471 Intel Corporate +e4a5ef TRON LINK ELECTRONICS CO., LTD. +e4a749 Palo Alto Networks +e4a7a0 Intel Corporate +e4a7c5 HUAWEI TECHNOLOGIES CO.,LTD +e4a7fd Cellco Partnership +e4a8b6 HUAWEI TECHNOLOGIES CO.,LTD +e4aa5d Cisco Systems, Inc +e4aaea Liteon Technology Corporation +e4ab46 UAB Selteka +e4ab89 MitraStar Technology Corp. +e4ad7d SCL Elements +e4afa1 HES-SO +e4b005 Beijing IQIYI Science & Technology Co., Ltd. +e4b021 Samsung Electronics Co.,Ltd +e4b2fb Apple, Inc. +e4b318 Intel Corporate +e4b97a Dell Inc. +e4bad9 360 Fly Inc. +e4bd4b zte corporation +e4beed Netcore Technology Inc. +e4c0cc China Mobile Group Device Co.,Ltd. +e4c146 Objetivos y Servicios de Valor A +e4c1f1 SHENZHEN SPOTMAU INFORMATION TECHNOLIGY CO., Ltd +e4c2d1 HUAWEI TECHNOLOGIES CO.,LTD +e4c483 GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD +e4c62b Airware +e4c63d Apple, Inc. +e4c6e6 Mophie, LLC +e4c722 Cisco Systems, Inc +e4c801 BLU Products Inc +e4c806 Ceiec Electric Technology Inc. +e4ca12 zte corporation +e4cb59 Beijing Loveair Science and Technology Co. Ltd. +e4cc9d Integrated Device Technology (Malaysia) Sdn. Bhd. +e4ce02 WyreStorm Technologies Ltd +e4ce70 Health & Life co., Ltd. +e4ce8f Apple, Inc. +e4d124 Mojo Networks, Inc. +e4d332 TP-LINK TECHNOLOGIES CO.,LTD. +e4d3aa FUJITSU CONNECTED TECHNOLOGIES LIMITED +e4d3f1 Cisco Systems, Inc +e4d53d Hon Hai Precision Ind. Co.,Ltd. +e4d71d Oraya Therapeutics +e4db6d Beijing Xiaomi Electronics Co., Ltd. +e4dd79 En-Vision America, Inc. +e4e0a6 Apple, Inc. +e4e0c5 Samsung Electronics Co.,Ltd +e4e130 TCT mobile ltd +e4e409 LEIFHEIT AG +e4e4ab Apple, Inc. +e4e749 Hewlett Packard +e4ea83 SHENZHEN GONGJIN ELECTRONICS CO.,LT +e4ec10 Nokia Corporation +e4eefd MR&D Manufacturing +e4f004 Dell Inc. +e4f042 Google, Inc. +e4f14c Private +e4f365 Time-O-Matic, Inc. +e4f3e3 Shanghai iComhome Co.,Ltd. +e4f3e8 Shenzhen SuperElectron Technology Co.,Ltd. +e4f3f5 SHENZHEN MERCURY COMMUNICATION TECHNOLOGIES CO.,LTD. +e4f4c6 NETGEAR +e4f7a1 Datafox GmbH +e4f89c Intel Corporate +e4f8ef Samsung Electronics Co.,Ltd +e4f939 Minxon Hotel Technology INC. +e4fa1d PAD Peripheral Advanced Design Inc. +e4faed Samsung Electronics Co.,Ltd +e4fafd Intel Corporate +e4fb5d HUAWEI TECHNOLOGIES CO.,LTD +e4fb8f MOBIWIRE MOBILES (NINGBO) CO.,LTD +e4fc82 Juniper Networks +e4fda1 HUAWEI TECHNOLOGIES CO.,LTD +e4fed9 EDMI Europe Ltd +e4ffdd ELECTRON INDIA +e80036 Befs co,. ltd +e8018d Fiberhome Telecommunication Technologies Co.,LTD +e8039a Samsung Electronics Co.,Ltd +e8040b Apple, Inc. +e80410 Private +e80462 Cisco Systems, Inc +e804f3 Throughtek Co., Ltd. +e8056d Nortel Networks +e80688 Apple, Inc. +e80734 Champion Optical Network Engineering, LLC +e807bf SHENZHEN BOOMTECH INDUSTRY CO.,LTD +e8088b HUAWEI TECHNOLOGIES CO.,LTD +e80945 Integrated Device Technology (Malaysia) Sdn. Bhd. +e80959 Guoguang Electric Co.,Ltd +e80b13 Akib Systems Taiwan, INC +e80c38 DAEYOUNG INFORMATION SYSTEM CO., LTD +e80c75 Syncbak, Inc. +e80fc8 Universal Electronics, Inc. +e8102e Really Simple Software, Inc +e81132 Samsung Electronics Co.,Ltd +e811ca SHANDONG KAER ELECTRIC.CO.,LTD +e81324 GuangZhou Bonsoninfo System CO.,LTD +e81363 Comstock RD, Inc. +e81367 AIRSOUND Inc. +e8150e Nokia Corporation +e8162b IDEO Security Co., Ltd. +e817fc Fujitsu Cloud Technologies Limited +e81863 IEEE Registration Authority +e81a58 TECHNOLOGIC SYSTEMS +e81aac ORFEO SOUNDWORKS Inc. +e81cba Fortinet, Inc. +e81da8 Ruckus Wireless +e820e2 HUMAX Co., Ltd. +e82877 TMY Co., Ltd. +e828c1 Eltex Enterprise Ltd. +e828d5 Cots Technology +e82a44 Liteon Technology Corporation +e82aea Intel Corporate +e82c6d SmartRG, Inc. +e82e24 Out of the Fog Research LLC +e8330d Xaptec GmbH +e83381 ARRIS Group, Inc. +e8343e Beijing Infosec Technologies Co., LTD. +e83617 Apple, Inc. +e8361d Sense Labs, Inc. +e8377a Zyxel Communications Corporation +e83935 Hewlett Packard +e839df ASKEY COMPUTER CORP +e83a12 Samsung Electronics Co.,Ltd +e83a97 Toshiba Corporation +e83eb6 RIM +e83efb GEODESIC LTD. +e83efc ARRIS Group, Inc. +e84040 Cisco Systems, Inc +e840f2 PEGATRON CORPORATION +e843b6 QNAP Systems, Inc. +e8447e Bitdefender SRL +e8481f Advanced Automotive Antennas +e84c56 INTERCEPT SERVICES LIMITED +e84dd0 HUAWEI TECHNOLOGIES CO.,LTD +e84e06 EDUP INTERNATIONAL (HK) CO., LTD +e84e84 Samsung Electronics Co.,Ltd +e84ece Nintendo Co., Ltd. +e8508b SAMSUNG ELECTRO-MECHANICS(THAILAND) +e8516e TSMART Inc. +e8519d Yeonhab Precision Co.,LTD +e85484 NEO Information Systems Co., Ltd. +e855b4 SAI Technology Inc. +e85659 Advanced-Connectek Inc. +e856d6 NCTech Ltd +e85a8b Xiaomi Communications Co Ltd +e85aa7 LLC Emzior +e85ad1 Fiberhome Telecommunication Technologies Co.,LTD +e85b5b LG ELECTRONICS INC +e85bb7 Ample Systems Inc. +e85bf0 Imaging Diagnostics +e85d6b Luminate Wireless +e85d86 CHANG YOW TECHNOLOGIES INTERNATIONAL CO.,LTD. +e85e53 Infratec Datentechnik GmbH +e8611f Dawning Information Industry Co.,Ltd +e8617e Liteon Technology Corporation +e86183 Black Diamond Advanced Technology, LLC +e861be Melec Inc. +e86549 Cisco Systems, Inc +e865d4 Tenda Technology Co.,Ltd.Dongguan branch +e866c4 Diamanti +e86819 HUAWEI TECHNOLOGIES CO.,LTD +e86a64 LCFC(HeFei) Electronics Technology co., ltd +e86cda Supercomputers and Neurocomputers Research Center +e86d52 ARRIS Group, Inc. +e86d54 Digit Mobile Inc +e86d65 AUDIO MOBIL Elektronik GmbH +e86d6e voestalpine SIGNALING Fareham Ltd. +e86f38 CHONGQING FUGUI ELECTRONICS CO.,LTD. +e86ff2 Actiontec Electronics, Inc +e8718d Elsys Equipamentos Eletronicos Ltda +e874e6 ADB Broadband Italia +e8757f FIRS Technologies(Shenzhen) Co., Ltd +e878a1 BEOVIEW INTERCOM DOO +e87af3 S5 Tech S.r.l. +e8802e Apple, Inc. +e880d8 GNTEK Electronics Co.,Ltd. +e8825b ARRIS Group, Inc. +e887a3 Loxley Public Company Limited +e8886c Shenzhen SC Technologies Co.,LTD +e8892c ARRIS Group, Inc. +e88d28 Apple, Inc. +e88df5 ZNYX Networks, Inc. +e88e60 NSD Corporation +e89120 Motorola Mobility LLC, a Lenovo Company +e89218 Arcontia International AB +e892a4 LG Electronics (Mobile Communications) +e89309 Samsung Electronics Co.,Ltd +e89363 Nokia +e8944c Cogent Healthcare Systems Ltd +e894f6 TP-LINK TECHNOLOGIES CO.,LTD. +e89606 testo Instruments (Shenzhen) Co., Ltd. +e8986d Palo Alto Networks +e8995a PiiGAB, Processinformation i Goteborg AB +e899c4 HTC Corporation +e89a8f QUANTA COMPUTER INC. +e89aff Fujian LANDI Commercial Equipment Co.,Ltd +e89d87 Toshiba +e89e0c Private +e89eb4 Hon Hai Precision Ind. Co.,Ltd. +e89fec CHENGDU KT ELECTRONIC HI-TECH CO.,LTD +e8a364 Signal Path International / Peachtree Audio +e8a4c1 Deep Sea Electronics Ltd +e8a788 XIAMEN LEELEN TECHNOLOGY CO., LTD +e8a7f2 sTraffic +e8abf3 HUAWEI TECHNOLOGIES CO.,LTD +e8abfa Shenzhen Reecam Tech.Ltd. +e8acad zte corporation +e8ada6 Sagemcom Broadband SAS +e8b1fc Intel Corporate +e8b2ac Apple, Inc. +e8b2fe HUMAX Co., Ltd. +e8b4ae Shenzhen C&D Electronics Co.,Ltd +e8b4c8 Samsung Electronics Co.,Ltd +e8b541 zte corporation +e8b6c2 Juniper Networks +e8b748 Cisco Systems, Inc +e8ba70 Cisco Systems, Inc +e8bb3d Sino Prime-Tech Limited +e8bba8 GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD +e8bdd1 HUAWEI TECHNOLOGIES CO.,LTD +e8be81 Sagemcom Broadband SAS +e8c1b8 Nanjing Bangzhong Electronic Commerce Limited +e8c1d7 Philips +e8c229 H-Displays (MSC) Bhd +e8c320 Austco Communication Systems Pty Ltd +e8c417 Fiberhome Telecommunication Technologies Co.,LTD +e8c57a Ufispace Co., LTD. +e8c74f Liteon Technology Corporation +e8cba1 Nokia Corporation +e8cc18 D-Link International +e8cc32 Micronet LTD +e8cd2d HUAWEI TECHNOLOGIES CO.,LTD +e8ce06 SkyHawke Technologies, LLC. +e8d099 Fiberhome Telecommunication Technologies Co.,LTD +e8d0b9 Taicang T&W Electronics +e8d0fa MKS Instruments Deutschland GmbH +e8d0fc Liteon Technology Corporation +e8d11b ASKEY COMPUTER CORP +e8d483 ULTIMATE Europe Transportation Equipment GmbH +e8d4e0 Beijing BenyWave Technology Co., Ltd. +e8d819 AzureWave Technology Inc. +e8da96 Zhuhai Tianrui Electrical Power Tech. Co., Ltd. +e8daaa VideoHome Technology Corp. +e8de00 ChongQing GuanFang Technology Co.,LTD +e8de27 TP-LINK TECHNOLOGIES CO.,LTD. +e8de8e Integrated Device Technology (Malaysia) Sdn. Bhd. +e8ded6 Intrising Networks, Inc. +e8defb MESOTIC SAS +e8df70 AVM Audiovisuelles Marketing und Computersysteme GmbH +e8dff2 PRF Co., Ltd. +e8e08f GRAVOTECH MARKING SAS +e8e0b7 Toshiba +e8e1e1 Gemtek Technology Co., Ltd. +e8e1e2 Energotest +e8e5d6 Samsung Electronics Co.,Ltd +e8e732 Alcatel-Lucent Enterprise +e8e770 Warp9 Tech Design, Inc. +e8e776 Shenzhen Kootion Technology Co., Ltd +e8e875 iS5 Communications Inc. +e8e8b7 Murata Manufacturing Co., Ltd. +e8ea6a StarTech.com +e8eada Denkovi Assembly Electronics LTD +e8eb11 Texas Instruments +e8eca3 Dongguan Liesheng Electronic Co.Ltd +e8ed05 ARRIS Group, Inc. +e8edf3 Cisco Systems, Inc +e8ef89 OPMEX Tech. +e8f1b0 Sagemcom Broadband SAS +e8f226 MILLSON CUSTOM SOLUTIONS INC. +e8f2e2 LG Innotek +e8f2e3 Starcor Beijing Co.,Limited +e8f724 Hewlett Packard Enterprise +e8f928 RFTECH SRL +e8faf7 Guangdong Uniteddata Holding Group Co., Ltd. +e8fc60 ELCOM Innovations Private Limited +e8fcaf NETGEAR +e8fd72 SHANGHAI LINGUO TECHNOLOGY CO., LTD. +e8fd90 Turbostor +e8fde8 CeLa Link Corporation +ec0133 TRINUS SYSTEMS INC. +ec01e2 FOXCONN INTERCONNECT TECHNOLOGY +ec01ee GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD +ec0441 ShenZhen TIGO Semiconductor Co., Ltd. +ec086b TP-LINK TECHNOLOGIES CO.,LTD. +ec0d9a Mellanox Technologies, Inc. +ec0ec4 Hon Hai Precision Ind. Co.,Ltd. +ec0ed6 ITECH INSTRUMENTS SAS +ec107b Samsung Electronics Co.,Ltd +ec1120 FloDesign Wind Turbine Corporation +ec1127 Texas Instruments +ec13b2 Netonix +ec13db Juniper Networks +ec14f6 BioControl AS +ec172f TP-LINK TECHNOLOGIES CO.,LTD. +ec1766 Research Centre Module +ec1a59 Belkin International Inc. +ec1bbd Silicon Laboratories +ec1d7f zte corporation +ec1d8b Cisco Systems, Inc +ec1f72 SAMSUNG ELECTRO-MECHANICS(THAILAND) +ec219f VidaBox LLC +ec21e5 Toshiba +ec2257 JiangSu NanJing University Electronic Information Technology Co.,Ltd +ec2280 D-Link International +ec233d HUAWEI TECHNOLOGIES CO.,LTD +ec2368 IntelliVoice Co.,Ltd. +ec237b zte corporation +ec24b8 Texas Instruments +ec26ca TP-LINK TECHNOLOGIES CO.,LTD. +ec26fb TECC CO.,LTD. +ec2af0 Ypsomed AG +ec2c49 University of Tokyo +ec2ce2 Apple, Inc. +ec2e4e HITACHI-LG DATA STORAGE INC +ec3091 Cisco Systems, Inc +ec3586 Apple, Inc. +ec363f Markov Corporation +ec3873 Juniper Networks +ec388f HUAWEI TECHNOLOGIES CO.,LTD +ec3bf0 NovelSat +ec3c5a SHEN ZHEN HENG SHENG HUI DIGITAL TECHNOLOGY CO.,LTD +ec3c88 MCNEX Co.,Ltd. +ec3cbb Huawei Device Co., Ltd. +ec3dfd SHENZHEN BILIAN ELECTRONIC CO.,LTD +ec3e09 PERFORMANCE DESIGNED PRODUCTS, LLC +ec3ef7 Juniper Networks +ec3f05 Institute 706, The Second Academy China Aerospace Science & Industry Corp +ec4118 XIAOMI Electronics,CO.,LTD +ec42b4 ADC Corporation +ec42f0 ADL Embedded Solutions, Inc. +ec438b YAPTV +ec43e6 AWCER Ltd. +ec43f6 Zyxel Communications Corporation +ec4476 Cisco Systems, Inc +ec4644 TTK SAS +ec4670 Meinberg Funkuhren GmbH & Co. KG +ec473c Redwire, LLC +ec4993 Qihan Technology Co., Ltd +ec4c4d ZAO NPK RoTeK +ec4d47 HUAWEI TECHNOLOGIES CO.,LTD +ec4f82 Calix Inc. +ec51bc GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD +ec52dc WORLD MEDIA AND TECHNOLOGY Corp. +ec542e Shanghai XiMei Electronic Technology Co. Ltd +ec55f9 Hon Hai Precision Ind. Co.,Ltd. +ec5623 HUAWEI TECHNOLOGIES CO.,LTD +ec58ea Ruckus Wireless +ec59e7 Microsoft Corporation +ec5a86 Yulong Computer Telecommunication Scientific (Shenzhen) Co.,Ltd +ec5b73 Advanced & Wise Technology Corp. +ec5c68 CHONGQING FUGUI ELECTRONICS CO.,LTD. +ec5c69 MITSUBISHI HEAVY INDUSTRIES MECHATRONICS SYSTEMS,LTD. +ec5f23 Qinghai Kimascend Electronics Technology Co. Ltd. +ec60e0 AVI-ON LABS +ec6264 Global411 Internet Services, LLC +ec63e5 ePBoard Design LLC +ec64e7 MOCACARE Corporation +ec65cc Panasonic Automotive Systems Company of America +ec66d1 B&W Group LTD +ec6881 Palo Alto Networks +ec6c9f Chengdu Volans Technology CO.,LTD +ec6f0b FADU, Inc. +ec7097 ARRIS Group, Inc. +ec71db Shenzhen Baichuan Digital Technology Co., Ltd. +ec74ba Hirschmann Automation and Control GmbH +ec79f2 Startel +ec7c74 Justone Technologies Co., Ltd. +ec7d11 vivo Mobile Communication Co., Ltd. +ec7d9d CPI +ec7fc6 ECCEL CORPORATION SAS +ec8009 NovaSparks +ec8193 Logitech, Inc +ec8263 zte corporation +ec8350 Microsoft Corporation +ec836c RM Tech Co., Ltd. +ec83d5 GIRD Systems Inc +ec84b4 CIG SHANGHAI CO LTD +ec852f Apple, Inc. +ec888f TP-LINK TECHNOLOGIES CO.,LTD. +ec8892 Motorola Mobility LLC, a Lenovo Company +ec8914 HUAWEI TECHNOLOGIES CO.,LTD +ec89f5 Lenovo Mobile Communication Technology Ltd. +ec8a4c zte corporation +ec8ac7 Fiberhome Telecommunication Technologies Co.,LTD +ec8c9a HUAWEI TECHNOLOGIES CO.,LTD +ec8ca2 Ruckus Wireless +ec8ead DLX +ec8eae Nagravision SA +ec8eb5 Hewlett Packard +ec9233 Eddyfi NDT Inc +ec9327 MEMMERT GmbH + Co. KG +ec9365 Mapper.ai, Inc. +ec93ed DDoS-Guard LTD +ec9681 2276427 Ontario Inc +ec986c Lufft Mess- und Regeltechnik GmbH +ec98c1 Beijing Risbo Network Technology Co.,Ltd +ec9a74 Hewlett Packard +ec9b5b Nokia Corporation +ec9b8b Hewlett Packard Enterprise +ec9bf3 SAMSUNG ELECTRO-MECHANICS(THAILAND) +ec9c32 Sichuan AI-Link Technology Co., Ltd. +ec9ecd Artesyn Embedded Technologies +ec9f0d IEEE Registration Authority +eca29b Kemppi Oy +eca5de ONYX WIFI Inc +eca86b Elitegroup Computer Systems Co.,Ltd. +eca9fa GUANGDONG GENIUS TECHNOLOGY CO., LTD. +ecaa25 Samsung Electronics Co.,Ltd +ecaaa0 PEGATRON CORPORATION +ecadb8 Apple, Inc. +ecade0 D-Link International +ecaf97 GIT +ecb0e1 Ciena Corporation +ecb106 Acuro Networks, Inc +ecb1d7 Hewlett Packard +ecb313 SHENZHEN GONGJIN ELECTRONICS CO.,LT +ecb541 SHINANO E and E Co.Ltd. +ecb5fa Philips Lighting BV +ecb870 Beijing Heweinet Technology Co.,Ltd. +ecb907 CloudGenix Inc +ecbafe GIROPTIC +ecbbae Digivoice Tecnologia em Eletronica Ltda +ecbd09 FUSION Electronics Ltd +ecbd1d Cisco Systems, Inc +ecbedd Sagemcom Broadband SAS +ecc06a PowerChord Group Limited +ecc38a Accuenergy (CANADA) Inc +ecc40d Nintendo Co.,Ltd +ecc57f Suzhou Pairlink Network Technology +ecc882 Cisco Systems, Inc +eccb30 HUAWEI TECHNOLOGIES CO.,LTD +eccd6d Allied Telesis, Inc. +ecd00e MiraeRecognition Co., Ltd. +ecd040 GEA Farm Technologies GmbH +ecd09f Xiaomi Communications Co Ltd +ecd19a Zhuhai Liming Industries Co., Ltd +ecd68a Shenzhen JMicron Intelligent Technology Developmen +ecd925 RAMI +ecd950 IRT SA +ecd9d1 Shenzhen TG-NET Botone Technology Co.,Ltd. +ecde3d Lamprey Networks, Inc. +ecdf3a vivo Mobile Communication Co., Ltd. +ece09b Samsung Electronics Co.,Ltd +ece154 Beijing Unisound Information Technology Co.,Ltd. +ece1a9 Cisco Systems, Inc +ece2fd SKG Electric Group(Thailand) Co., Ltd. +ece512 tado GmbH +ece555 Hirschmann Automation +ece744 Omntec mfg. inc +ece90b SISTEMA SOLUCOES ELETRONICAS LTDA - EASYTECH +ece915 STI Ltd +ece9f8 Guang Zhou TRI-SUN Electronics Technology Co., Ltd +ecea03 DARFON LIGHTING CORP +ecebb8 Hewlett Packard Enterprise +eceed8 ZTLX Network Technology Co.,Ltd +ecf00e AboCom +ecf0fe zte corporation +ecf236 NEOMONTANA ELECTRONICS +ecf342 GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD +ecf35b Nokia Corporation +ecf451 Arcadyan Corporation +ecf4bb Dell Inc. +ecf6bd SNCF MOBILITÉS +ecf72b HD DIGITAL TECH CO., LTD. +ecf8eb SICHUAN TIANYI COMHEART TELECOMCO., LTD +ecfa03 FCA +ecfa5c Beijing Xiaomi Electronics Co., Ltd. +ecfaaa The IMS Company +ecfabc Espressif Inc. +ecfaf4 SenRa Tech Pvt. Ltd +ecfc55 A. Eberle GmbH & Co. KG +ecfe7e BlueRadios, Inc. +f0007f Janz - Contadores de Energia, SA +f0022b Chrontel +f00248 SmarteBuilding +f0038c AzureWave Technology Inc. +f00786 Shandong Bittel Electronics Co., Ltd +f008f1 Samsung Electronics Co.,Ltd +f00d5c JinQianMao Technology Co.,Ltd. +f00df5 ACOMA Medical Industry Co,. Ltd. +f00e1d Megafone Limited +f00ebf ZettaHash Inc. +f00fec HUAWEI TECHNOLOGIES CO.,LTD +f010ab China Mobile (Hangzhou) Information Technology Co., Ltd. +f013c3 SHENZHEN FENDA TECHNOLOGY CO., LTD +f015a0 KyungDong One Co., Ltd. +f015b9 PlayFusion Limited +f0182b LG Chem +f01898 Apple, Inc. +f01b6c vivo Mobile Communication Co., Ltd. +f01c13 LG Electronics (Mobile Communications) +f01c2d Juniper Networks +f01dbc Microsoft Corporation +f01e34 ORICO Technologies Co., Ltd +f01faf Dell Inc. +f0219d Cal-Comp Electronics & Communications Company Ltd. +f0224e Esan electronic co. +f02329 SHOWA DENKI CO.,LTD. +f023b9 IEEE Registration Authority +f02405 OPUS High Technology Corporation +f02408 Talaris (Sweden) AB +f02475 Apple, Inc. +f02572 Cisco Systems, Inc +f025b7 SAMSUNG ELECTRO-MECHANICS(THAILAND) +f02624 WAFA TECHNOLOGIES CO., LTD. +f0264c Sigrist-Photometer AG +f0272d Amazon Technologies Inc. +f02745 F-Secure Corporation +f02765 Murata Manufacturing Co., Ltd. +f02929 Cisco Systems, Inc +f02a23 Creative Next Design +f02a61 Waldo Networks, Inc. +f02fa7 HUAWEI TECHNOLOGIES CO.,LTD +f02fd8 Bi2-Vision +f0321a Mita-Teknik A/S +f03404 TCT mobile ltd +f037a1 Huike Electronics (SHENZHEN) CO., LTD. +f03a4b Bloombase, Inc. +f03a55 Omega Elektronik AS +f03d03 TECNO MOBILE LIMITED +f03d29 Actility +f03e90 Ruckus Wireless +f03ebf GOGORO TAIWAN LIMITED +f03f95 HUAWEI TECHNOLOGIES CO.,LTD +f03ff8 R L Drake +f0407b Fiberhome Telecommunication Technologies Co.,LTD +f041c8 IEEE Registration Authority +f0421c Intel Corporate +f04335 DVN(Shanghai)Ltd. +f04347 HUAWEI TECHNOLOGIES CO.,LTD +f045da Texas Instruments +f04a2b PYRAMID Computer GmbH +f04b3a Juniper Networks +f04b6a Scientific Production Association Siberian Arsenal, Ltd. +f04bf2 JTECH Communications, Inc. +f04cd5 Maxlinear, Inc +f04da2 Dell Inc. +f04f7c Private +f051ea Fitbit, Inc. +f05494 Honeywell Connected Building +f05849 CareView Communications +f05a09 Samsung Electronics Co.,Ltd +f05b7b Samsung Electronics Co.,Ltd +f05c19 Aruba, a Hewlett Packard Enterprise Company +f05c77 Google, Inc. +f05d89 Dycon Limited +f05dc8 Duracell Powermat +f05f5a Getriebebau NORD GmbH and Co. KG +f06130 Advantage Pharmacy Services, LLC +f0620d Shenzhen Egreat Tech Corp.,Ltd +f06281 ProCurve Networking by HP +f063f9 HUAWEI TECHNOLOGIES CO.,LTD +f065c2 Yanfeng Visteon Electronics Technology (Shanghai) Co.,Ltd. +f065dd Primax Electronics Ltd. +f06853 Integrated Corporation +f06865 Taicang T&W Electronics +f06bca Samsung Electronics Co.,Ltd +f06d78 GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD +f06e0b Microsoft Corporation +f06e32 MICROTEL INNOVATION S.R.L. +f0728c Samsung Electronics Co.,Ltd +f073ae PEAK-System Technik +f07485 NGD Systems, Inc. +f074e4 Thundercomm Technology Co., Ltd +f0761c COMPAL INFORMATION (KUNSHAN) CO., LTD. +f0766f Apple, Inc. +f07765 Sourcefire, Inc +f077d0 Xcellen +f07816 Cisco Systems, Inc +f07959 ASUSTek COMPUTER INC. +f07960 Apple, Inc. +f079e8 GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD +f07bcb Hon Hai Precision Ind. Co.,Ltd. +f07d68 D-Link Corporation +f07f06 Cisco Systems, Inc +f07f0c Leopold Kostal GmbH &Co. KG +f08173 Amazon Technologies Inc. +f081af IRZ AUTOMATION TECHNOLOGIES LTD +f08261 Sagemcom Broadband SAS +f0842f ADB Broadband Italia +f084c9 zte corporation +f085c1 SHENZHEN RF-LINK TECHNOLOGY CO.,LTD. +f08620 Arcadyan Corporation +f08a28 JIANGSU HENGSION ELECTRONIC S and T CO.,LTD +f08a76 Samsung Electronics Co.,Ltd +f08bfe COSTEL.,CO.LTD +f08cfb Fiberhome Telecommunication Technologies Co.,LTD +f08edb VeloCloud Networks +f0921c Hewlett Packard +f092b4 SICHUAN TIANYI COMHEART TELECOMCO., LTD +f0933a NxtConect +f093c5 Garland Technology +f095f1 Carl Zeiss AG +f097e5 TAMIO, INC +f09838 HUAWEI TECHNOLOGIES CO.,LTD +f0989d Apple, Inc. +f09919 Garmin International +f099b6 Apple, Inc. +f099bf Apple, Inc. +f09a51 Shanghai Viroyal Electronic Technology Company Limited +f09cbb RaonThink Inc. +f09cd7 Guangzhou Blue Cheetah Intelligent Technology Co., Ltd. +f09ce9 Aerohive Networks Inc. +f09e63 Cisco Systems, Inc +f09fc2 Ubiquiti Networks Inc. +f09ffc SHARP Corporation +f0a225 Private +f0a764 GST Co., Ltd. +f0a968 Antailiye Technology Co.,Ltd +f0ab54 MITSUMI ELECTRIC CO.,LTD. +f0aca4 HBC-radiomatic +f0acd7 IEEE Registration Authority +f0ad4e Globalscale Technologies, Inc. +f0ae51 Xi3 Corp +f0af50 Phantom Intelligence +f0af85 ARRIS Group, Inc. +f0b014 AVM Audiovisuelles Marketing und Computersysteme GmbH +f0b052 Ruckus Wireless +f0b0e7 Apple, Inc. +f0b2e5 Cisco Systems, Inc +f0b31e Universal Electronics, Inc. +f0b429 Xiaomi Communications Co Ltd +f0b479 Apple, Inc. +f0b5b7 Disruptive Technologies Research AS +f0b5d1 Texas Instruments +f0b6eb Poslab Technology Co., Ltd. +f0b968 ITEL MOBILE LIMITED +f0bcc8 MaxID (Pty) Ltd +f0bcc9 PFU LIMITED +f0bd2e H+S Polatis Ltd +f0bdf1 Sipod Inc. +f0bf97 Sony Corporation +f0c1f1 Apple, Inc. +f0c24c Zhejiang FeiYue Digital Technology Co., Ltd +f0c27c Mianyang Netop Telecom Equipment Co.,Ltd. +f0c371 Apple, Inc. +f0c77f Texas Instruments +f0c850 HUAWEI TECHNOLOGIES CO.,LTD +f0c88c LeddarTech Inc. +f0c9d1 GD Midea Air-Conditioning Equipment Co.,Ltd. +f0cba1 Apple, Inc. +f0d14f LINEAR LLC +f0d1a9 Apple, Inc. +f0d1b8 LEDVANCE +f0d2f1 Amazon Technologies Inc. +f0d3a7 CobaltRay Co., Ltd +f0d3e7 Sensometrix SA +f0d4e2 Dell Inc. +f0d4f6 Lars Thrane A/S +f0d4f7 varram system +f0d5bf Intel Corporate +f0d657 ECHOSENS +f0d767 Axema Passagekontroll AB +f0d7aa Motorola Mobility LLC, a Lenovo Company +f0d7dc Wesine (Wuhan) Technology Co., Ltd. +f0d9b2 EXO S.A. +f0da7c RLH INDUSTRIES,INC. +f0db30 Yottabyte +f0dbe2 Apple, Inc. +f0dbf8 Apple, Inc. +f0dce2 Apple, Inc. +f0de71 Shanghai EDO Technologies Co.,Ltd. +f0deb9 ShangHai Y&Y Electronics Co., Ltd +f0def1 Wistron Infocomm (Zhongshan) Corporation +f0e3dc Tecon MT, LLC +f0e4a2 HUAWEI TECHNOLOGIES CO.,LTD +f0e5c3 Drägerwerk AG & Co. KG aA +f0e77e Samsung Electronics Co.,Ltd +f0ebd0 Shanghai Feixun Communication Co.,Ltd. +f0ec39 Essec +f0ed1e Bilkon Bilgisayar Kontrollu Cih. Im.Ltd. +f0ee10 Samsung Electronics Co.,Ltd +f0ee58 PACE Telematics GmbH +f0eebb VIPAR GmbH +f0ef86 Google, Inc. +f0efd2 TF PAYMENT SERVICE CO., LTD +f0f002 Hon Hai Precision Ind. Co.,Ltd. +f0f08f Nextek Solutions Pte Ltd +f0f249 Hitron Technologies. Inc +f0f260 Mobitec AB +f0f336 TP-LINK TECHNOLOGIES CO.,LTD. +f0f5ae Adaptrum Inc. +f0f61c Apple, Inc. +f0f644 Whitesky Science & Technology Co.,Ltd. +f0f669 Motion Analysis Corporation +f0f755 Cisco Systems, Inc +f0f7b3 Phorm +f0f842 KEEBOX, Inc. +f0f8f2 Texas Instruments +f0f9f7 IES GmbH & Co. KG +f0fcc8 ARRIS Group, Inc. +f0fda0 Acurix Networks Pty Ltd +f0fe6b Shanghai High-Flying Electronics Technology Co., Ltd +f40270 Dell Inc. +f40304 Google, Inc. +f40321 BeNeXt B.V. +f4032f Reduxio Systems +f40343 Hewlett Packard Enterprise +f4044c ValenceTech Limited +f40616 Apple, Inc. +f40669 Intel Corporate +f4068d devolo AG +f406a5 Hangzhou Bianfeng Networking Technology Co., Ltd. +f409d8 SAMSUNG ELECTRO-MECHANICS(THAILAND) +f40a4a INDUSNET Communication Technology Co.,LTD +f40b93 BlackBerry RTS +f40e01 Apple, Inc. +f40e11 IEEE Registration Authority +f40e22 Samsung Electronics Co.,Ltd +f40e83 ARRIS Group, Inc. +f40f1b Cisco Systems, Inc +f40f24 Apple, Inc. +f40f9b WAVELINK +f41535 SPON Communication Technology Co.,Ltd +f41563 F5 Networks, Inc. +f415fd Shanghai Pateo Electronic Equipment Manufacturing Co., Ltd. +f417b8 AirTies Wireless Networks +f41ba1 Apple, Inc. +f41d6b HUAWEI TECHNOLOGIES CO.,LTD +f41e26 Simon-Kaloi Engineering +f41e5e RtBrick Inc. +f41f0b YAMABISHI Corporation +f41f88 zte corporation +f41fc2 Cisco Systems, Inc +f42012 Cuciniale GmbH +f42833 MMPC Inc. +f42853 Zioncom Electronics (Shenzhen) Ltd. +f42896 SPECTO PAINEIS ELETRONICOS LTDA +f42981 vivo Mobile Communication Co., Ltd. +f42b48 Ubiqam +f42c56 SENOR TECH CO LTD +f42e7f Aruba, a Hewlett Packard Enterprise Company +f430b9 Hewlett Packard +f431c3 Apple, Inc. +f4323d Sichuan tianyi kanghe communications co., LTD +f43328 CIMCON Lighting Inc. +f436e1 Abilis Systems SARL +f437b7 Apple, Inc. +f43814 Shanghai Howell Electronic Co.,Ltd +f43909 Hewlett Packard +f43d80 FAG Industrial Services GmbH +f43e61 SHENZHEN GONGJIN ELECTRONICS CO.,LT +f43e66 Bee Computing (HK) Limited +f43e9d Benu Networks, Inc. +f44156 Arrikto Inc. +f44227 S & S Research Inc. +f4428f Samsung Electronics Co.,Ltd +f44450 BND Co., Ltd. +f445ed Portable Innovation Technology Ltd. +f44713 Leading Public Performance Co., Ltd. +f4472a Nanjing Rousing Sci. and Tech. Industrial Co., Ltd +f44848 Amscreen Group Ltd +f449ef EMSTONE +f44b2a Cisco SPVTG +f44c70 Skyworth Digital Technology(Shenzhen) Co.,Ltd +f44c7f HUAWEI TECHNOLOGIES CO.,LTD +f44d17 GOLDCARD HIGH-TECH CO.,LTD. +f44d30 Elitegroup Computer Systems Co.,Ltd. +f44e05 Cisco Systems, Inc +f44efd Actions Semiconductor Co.,Ltd.(Cayman Islands) +f450eb Telechips Inc +f45214 Mellanox Technologies, Inc. +f45433 Rockwell Automation +f45595 HENGBAO Corporation LTD. +f4559c HUAWEI TECHNOLOGIES CO.,LTD +f455e0 Niceway CNC Technology Co.,Ltd.Hunan Province +f4573e Fiberhome Telecommunication Technologies Co.,LTD +f45842 Boxx TV Ltd +f45b73 Wanjiaan Interconnected Technology Co., Ltd +f45c89 Apple, Inc. +f45eab Texas Instruments +f45f69 Matsufu Electronics distribution Company +f45fd4 Cisco SPVTG +f45ff7 DQ Technology Inc. +f4600d Panoptic Technology, Inc +f460e2 Xiaomi Communications Co Ltd +f462d0 Not for Radio, LLC +f4631f HUAWEI TECHNOLOGIES CO.,LTD +f46349 Diffon Corporation +f4645d Toshiba +f4672d ShenZhen Topstar Technology Company +f46a92 SHENZHEN FAST TECHNOLOGIES CO.,LTD +f46abc Adonit Corp. Ltd. +f46bef Sagemcom Broadband SAS +f46d04 ASUSTek COMPUTER INC. +f46de2 zte corporation +f46e24 NEC Personal Computers, Ltd. +f46e95 Extreme Networks, Inc. +f46f4e Echowell +f470ab vivo Mobile Communication Co., Ltd. +f47190 Samsung Electronics Co.,Ltd +f473ca Conversion Sound Inc. +f47488 New H3C Technologies Co., Ltd +f47626 Viltechmeda UAB +f47960 HUAWEI TECHNOLOGIES CO.,LTD +f47a4e Woojeon&Handan +f47acc SolidFire, Inc. +f47b5e Samsung Electronics Co.,Ltd +f47def Samsung Electronics Co.,Ltd +f47f35 Cisco Systems, Inc +f48139 CANON INC. +f483cd TP-LINK TECHNOLOGIES CO.,LTD. +f483e1 Shanghai Clouder Semiconductor Co.,Ltd +f4844c Texas Instruments +f485c6 FDT Technologies +f48771 Infoblox +f48b32 Xiaomi Communications Co Ltd +f48c50 Intel Corporate +f48ceb D-Link International +f48e09 Nokia Corporation +f48e38 Dell Inc. +f48e92 HUAWEI TECHNOLOGIES CO.,LTD +f490ca Tensorcom +f490ea Deciso B.V. +f4911e ZHUHAI EWPE INFORMATION TECHNOLOGY INC +f4939f Hon Hai Precision Ind. Co., Ltd. +f49461 NexGen Storage +f49466 CountMax, ltd +f4951b Hefei Radio Communication Technology Co., Ltd +f49634 Intel Corporate +f49651 NAKAYO Inc +f497c2 Nebulon Inc +f499ac WEBER Schraubautomaten GmbH +f49c12 Structab AB +f49eef Taicang T&W Electronics +f49f54 Samsung Electronics Co.,Ltd +f49ff3 HUAWEI TECHNOLOGIES CO.,LTD +f4a294 EAGLE WORLD DEVELOPMENT CO., LIMITED +f4a52a Hawa Technologies Inc +f4a739 Juniper Networks +f4a997 CANON INC. +f4acc1 Cisco Systems, Inc +f4afe7 Apple, Inc. +f4b164 Lightning Telecommunications Technology Co. Ltd +f4b381 WindowMaster A/S +f4b520 Biostar Microtech international corp. +f4b52f Juniper Networks +f4b549 Xiamen Yeastar Information Technology Co., Ltd. +f4b5aa zte corporation +f4b5bb CERAGON NETWORKS +f4b688 PLANTRONICS, INC. +f4b6e5 TerraSem Co.,Ltd +f4b72a TIME INTERCONNECT LTD +f4b7b3 vivo Mobile Communication Co., Ltd. +f4b7e2 Hon Hai Precision Ind. Co.,Ltd. +f4b85e Texas Instruments +f4b8a7 zte corporation +f4bc97 Shenzhen Crave Communication Co., LTD +f4bcda Shenzhen Jingxun Software Telecommunication Technology Co.,Ltd +f4bd7c Chengdu jinshi communication Co., LTD +f4bd9e Cisco Systems, Inc +f4bf80 HUAWEI TECHNOLOGIES CO.,LTD +f4c248 Samsung Electronics Co.,Ltd +f4c447 Coagent International Enterprise Limited +f4c4d6 Shenzhen Xinfa Electronic Co.,ltd +f4c613 Alcatel-Lucent Shanghai Bell Co., Ltd +f4c6d7 blackned GmbH +f4c714 HUAWEI TECHNOLOGIES CO.,LTD +f4c795 WEY Elektronik AG +f4c7c8 Kelvin Inc. +f4ca24 FreeBit Co., Ltd. +f4cae5 FREEBOX SAS +f4cb52 HUAWEI TECHNOLOGIES CO.,LTD +f4cc55 Juniper Networks +f4cd90 Vispiron Rotec GmbH +f4ce36 Nordic Semiconductor ASA +f4ce46 Hewlett Packard +f4cfe2 Cisco Systems, Inc +f4d032 Yunnan Ideal Information&Technology.,Ltd +f4d108 Intel Corporate +f4d261 SEMOCON Co., Ltd +f4d620 GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD +f4d7b2 LGS Innovations, LLC +f4d9fb Samsung Electronics Co.,Ltd +f4dbe6 Cisco Systems, Inc +f4dc41 YOUNGZONE CULTURE (SHANGHAI) CORP +f4dc4d Beijing CCD Digital Technology Co., Ltd +f4dca5 DAWON DNS +f4dcda Zhuhai Jiahe Communication Technology Co., limited +f4dcf9 HUAWEI TECHNOLOGIES CO.,LTD +f4dd9e GoPro +f4de0c ESPOD Ltd. +f4e11e Texas Instruments +f4e142 Delta Elektronika BV +f4e204 Traqueur +f4e3fb HUAWEI TECHNOLOGIES CO.,LTD +f4e4ad zte corporation +f4e5f2 HUAWEI TECHNOLOGIES CO.,LTD +f4e6d7 Solar Power Technologies, Inc. +f4e926 Tianjin Zanpu Technology Inc. +f4e9d4 QLogic Corporation +f4ea67 Cisco Systems, Inc +f4eab5 Aerohive Networks Inc. +f4eb38 Sagemcom Broadband SAS +f4ec38 TP-LINK TECHNOLOGIES CO.,LTD. +f4ed5f SHENZHEN KTC TECHNOLOGY GROUP +f4ee14 MERCURY COMMUNICATION TECHNOLOGIES CO.,LTD. +f4ef9e SGSG SCIENCE & TECHNOLOGY CO. LTD +f4f15a Apple, Inc. +f4f197 EMTAKE Inc +f4f1e1 Motorola Mobility LLC, a Lenovo Company +f4f26d TP-LINK TECHNOLOGIES CO.,LTD. +f4f3aa JBL GmbH & Co. KG +f4f524 Motorola Mobility LLC, a Lenovo Company +f4f5a5 Nokia Corporation +f4f5d8 Google, Inc. +f4f5db Xiaomi Communications Co Ltd +f4f5e8 Google, Inc. +f4f646 Dediprog Technology Co. Ltd. +f4f951 Apple, Inc. +f4fc32 Texas Instruments +f4fcb1 JJ Corp +f4fd2b ZOYI Company +f80113 HUAWEI TECHNOLOGIES CO.,LTD +f80278 IEEE Registration Authority +f80332 Khomp +f80377 Apple, Inc. +f8042e SAMSUNG ELECTRO-MECHANICS(THAILAND) +f8051c DRS Imaging and Targeting Solutions +f8084f Sagemcom Broadband SAS +f80bbe ARRIS Group, Inc. +f80bcb Cisco Systems, Inc +f80bd0 Datang Telecom communication terminal (Tianjin) Co., Ltd. +f80cf3 LG Electronics (Mobile Communications) +f80d43 Hon Hai Precision Ind. Co.,Ltd. +f80d60 CANON INC. +f80dea ZyCast Technology Inc. +f80df1 Sontex SA +f80f41 Wistron Infocomm (Zhongshan) Corporation +f80f6f Cisco Systems, Inc +f80f84 Natural Security SAS +f81037 Atopia Systems, LP +f81308 Nokia +f81547 Avaya Inc +f81654 Intel Corporate +f81897 2Wire Inc +f81a67 TP-LINK TECHNOLOGIES CO.,LTD. +f81ce5 Telefonbau Behnke GmbH +f81d0f Hitron Technologies. Inc +f81d78 IEEE Registration Authority +f81d90 Solidwintech +f81d93 Longdhua(Beijing) Controls Technology Co.,Ltd +f81edf Apple, Inc. +f82055 Green Information System +f82285 Cypress Technology CO., LTD. +f82387 Shenzhen Horn Audio Co.,Ltd. +f823b2 HUAWEI TECHNOLOGIES CO.,LTD +f82441 Yeelink +f8272e Mercku +f82793 Apple, Inc. +f82819 Liteon Technology Corporation +f82bc8 Jiangsu Switter Co., Ltd +f82c18 2Wire Inc +f82d7c Apple, Inc. +f82dc0 ARRIS Group, Inc. +f82edb RTW GmbH & Co. KG +f82f08 Molex CMS +f82f5b eGauge Systems LLC +f82f6a ITEL MOBILE LIMITED +f82fa8 Hon Hai Precision Ind. Co.,Ltd. +f83002 Texas Instruments +f83094 Alcatel-Lucent Telecom Limited +f8313e endeavour GmbH +f832e4 ASUSTek COMPUTER INC. +f83376 Good Mind Innovation Co., Ltd. +f83441 Intel Corporate +f83553 Magenta Research Ltd. +f835dd Gemtek Technology Co., Ltd. +f8369b Texas Instruments +f83880 Apple, Inc. +f83cbf BOTATO ELECTRONICS SDN BHD +f83d4e Softlink Automation System Co., Ltd +f83dff HUAWEI TECHNOLOGIES CO.,LTD +f83f51 Samsung Electronics Co.,Ltd +f842fb Yasuda Joho Co.,ltd. +f844e3 Taicang T&W Electronics +f845ad Konka Group Co., Ltd. +f8461c Sony Interactive Entertainment Inc. +f8462d SYNTEC Incorporation +f8472d X2gen Digital Corp. Ltd +f84897 Hitachi, Ltd. +f848fd China Mobile Group Device Co.,Ltd. +f84a73 EUMTECH CO., LTD +f84a7f Innometriks Inc +f84abf HUAWEI TECHNOLOGIES CO.,LTD +f84d33 Fiberhome Telecommunication Technologies Co.,LTD +f84dfc Hangzhou Hikvision Digital Technology Co.,Ltd. +f84f57 Cisco Systems, Inc +f8501c Tianjin Geneuo Technology Co.,Ltd +f85063 Verathon +f8516d Denwa Technology Corp. +f852df VNL Europe AB +f854af ECI Telecom Ltd. +f854b8 Amazon Technologies Inc. +f855cd Visteon Corporation +f8572e Core Brands, LLC +f85971 Intel Corporate +f85a00 Sanford LP +f85b9c SB SYSTEMS Co.,Ltd +f85bc9 M-Cube Spa +f85c45 IC Nexus Co. Ltd. +f85c4d Nokia +f85e3c SHENZHEN ZHIBOTONG ELECTRONICS CO.,LTD +f85f2a Nokia Corporation +f860f0 Aruba, a Hewlett Packard Enterprise Company +f86214 Apple, Inc. +f862aa xn systems +f8633f Intel Corporate +f86465 Anova Applied Electronics, Inc. +f86601 Suzhou Chi-tek information technology Co., Ltd +f866d1 Hon Hai Precision Ind. Co.,Ltd. +f866f2 Cisco Systems, Inc +f86971 Seibu Electric Co., +f86ce1 Taicang T&W Electronics +f86ecf Arcx Inc +f86eee HUAWEI TECHNOLOGIES CO.,LTD +f86fc1 Apple, Inc. +f871fe The Goldman Sachs Group, Inc. +f872ea Cisco Systems, Inc +f87394 NETGEAR +f873a2 Avaya Inc +f87588 HUAWEI TECHNOLOGIES CO.,LTD +f875a4 LCFC(HeFei) Electronics Technology co., ltd +f8769b Neopis Co., Ltd. +f877b8 Samsung Electronics Co.,Ltd +f87aef Rosonix Technology, Inc. +f87b20 Cisco Systems, Inc +f87b62 FASTWEL INTERNATIONAL CO., LTD. Taiwan Branch +f87b7a ARRIS Group, Inc. +f87b8c Amped Wireless +f88096 Elsys Equipamentos Eletrônicos Ltda +f8811a OVERKIZ +f88479 Yaojin Technology(Shenzhen)Co.,Ltd +f884f2 Samsung Electronics Co.,Ltd +f887f1 Apple, Inc. +f8893c Inventec Appliances Corp. +f88a3c IEEE Registration Authority +f88a5e Texas Instruments +f88b37 ARRIS Group, Inc. +f88c1c KAISHUN ELECTRONIC TECHNOLOGY CO., LTD. BEIJING +f88def Tenebraex +f88e85 Comtrend Corporation +f88fca Google, Inc. +f89066 Nain Inc. +f8912a GLP German Light Products GmbH +f89173 AEDLE SAS +f893f3 VOLANS +f894c2 Intel Corporate +f89550 Proton Products Chengdu Ltd +f895c7 LG Electronics (Mobile Communications) +f895ea Apple, Inc. +f897cf DAESHIN-INFORMATION TECHNOLOGY CO., LTD. +f8983a Leeman International (HongKong) Limited +f898b9 HUAWEI TECHNOLOGIES CO.,LTD +f898ef HUAWEI TECHNOLOGIES CO.,LTD +f89910 Integrated Device Technology (Malaysia) Sdn. Bhd. +f89955 Fortress Technology Inc +f89a78 HUAWEI TECHNOLOGIES CO.,LTD +f89d0d Control Technology Inc. +f89dbb Tintri +f89e28 Cisco Meraki +f89fb8 YAZAKI Energy System Corporation +f8a03d Dinstar Technologies Co., Ltd. +f8a097 ARRIS Group, Inc. +f8a188 LED Roadway Lighting +f8a2b4 RHEWA-WAAGENFABRIK August Freudewald GmbH &Co. KG +f8a2d6 Liteon Technology Corporation +f8a34f zte corporation +f8a45f Xiaomi Communications Co Ltd +f8a5c5 Cisco Systems, Inc +f8a763 Zhejiang Tmall Technology Co., Ltd. +f8a963 COMPAL INFORMATION (KUNSHAN) CO., LTD. +f8a9d0 LG Electronics (Mobile Communications) +f8a9de PUISSANCE PLUS +f8aa8a Axview Technology (Shenzhen) Co.,Ltd +f8ab05 Sagemcom Broadband SAS +f8ac6d Deltenna Ltd +f8adcb HMD Global Oy +f8ae27 John Deere Electronic Solutions +f8afdb Fiberhome Telecommunication Technologies Co.,LTD +f8b156 Dell Inc. +f8b2f3 GUANGZHOU BOSMA TECHNOLOGY CO.,LTD +f8b46a Hewlett Packard +f8b568 IEEE Registration Authority +f8b599 Guangzhou CHNAVS Digital Technology Co.,Ltd +f8b797 NEC Platforms, Ltd. +f8b7e2 Cisco Systems, Inc +f8bbbf eero inc. +f8bc12 Dell Inc. +f8bc41 Rosslare Enterprises Limited +f8be0d A2UICT Co.,Ltd. +f8bf09 HUAWEI TECHNOLOGIES CO.,LTD +f8c001 Juniper Networks +f8c091 Highgates Technology +f8c120 Xi'an Link-Science Technology Co.,Ltd +f8c249 Private +f8c288 Cisco Systems, Inc +f8c372 TSUZUKI DENKI +f8c397 NZXT Corp. Ltd. +f8c39e HUAWEI TECHNOLOGIES CO.,LTD +f8c4f3 Shanghai Infinity Wireless Technologies Co.,Ltd. +f8c678 Carefusion +f8c96c Fiberhome Telecommunication Technologies Co.,LTD +f8ca59 NetComm Wireless +f8cab8 Dell Inc. +f8cc6e DEPO Electronics Ltd +f8cfc5 Motorola Mobility LLC, a Lenovo Company +f8d027 Seiko Epson Corporation +f8d0ac Sony Interactive Entertainment Inc. +f8d0bd Samsung Electronics Co.,Ltd +f8d111 TP-LINK TECHNOLOGIES CO.,LTD. +f8d3a9 AXAN Networks +f8d462 Pumatronix Equipamentos Eletronicos Ltda. +f8d478 Flextronics Tech.(Ind) Pvt Ltd +f8d756 Simm Tronic Limited +f8d7bf REV Ritter GmbH +f8d9b8 Open Mesh, Inc. +f8da0c Hon Hai Precision Ind. Co.,Ltd. +f8dadf EcoTech, Inc. +f8dae2 NDC Technologies +f8daf4 Taishan Online Technology Co., Ltd. +f8db4c PNY Technologies, INC. +f8db7f HTC Corporation +f8db88 Dell Inc. +f8dc7a Variscite LTD +f8df15 Sunitec Enterprise Co.,Ltd +f8dfa8 zte corporation +f8dfe1 MyLight Systems +f8e079 Motorola Mobility LLC, a Lenovo Company +f8e44e MCOT INC. +f8e4fb Actiontec Electronics, Inc +f8e5cf CGI IT UK LIMITED +f8e61a Samsung Electronics Co.,Ltd +f8e71e Ruckus Wireless +f8e7a0 vivo Mobile Communication Co., Ltd. +f8e7b5 µTech Tecnologia LTDA +f8e811 HUAWEI TECHNOLOGIES CO.,LTD +f8e903 D-Link International +f8e94e Apple, Inc. +f8e968 Egker Kft. +f8ea0a Dipl.-Math. Michael Rauch +f8eda5 ARRIS Group, Inc. +f8f005 Newport Media Inc. +f8f014 RackWare Inc. +f8f082 NAG LLC +f8f1b6 Motorola Mobility LLC, a Lenovo Company +f8f21e Intel Corporate +f8f25a G-Lab GmbH +f8f464 Rawe Electonic GmbH +f8f532 ARRIS Group, Inc. +f8f7d3 International Communications Corporation +f8f7ff SYN-TECH SYSTEMS INC +f8fb2f Santur Corporation +f8fe5c Reciprocal Labs Corp +f8fea8 Technico Japan Corporation +f8ff0b Electronic Technology Inc. +f8ff5f Shenzhen Communication Technology Co.,Ltd +fc0012 Toshiba Samsung Storage Technolgoy Korea Corporation +fc017c Hon Hai Precision Ind. Co.,Ltd. +fc019e VIEVU +fc01cd FUNDACION TEKNIKER +fc039f Samsung Electronics Co.,Ltd +fc0647 Cortland Research, LLC +fc06ed M2Motive Technology Inc. +fc07a0 LRE Medical GmbH +fc084a FUJITSU LIMITED +fc0877 Prentke Romich Company +fc09d8 ACTEON Group +fc09f6 GUANGDONG TONZE ELECTRIC CO.,LTD +fc0a81 Extreme Networks, Inc. +fc0f4b Texas Instruments +fc0fe6 Sony Interactive Entertainment Inc. +fc10bd Control Sistematizado S.A. +fc10c6 Taicang T&W Electronics +fc1186 Logic3 plc +fc1349 Global Apps Corp. +fc15b4 Hewlett Packard +fc1607 Taian Technology(Wuxi) Co.,Ltd. +fc1794 InterCreative Co., Ltd +fc183c Apple, Inc. +fc1910 Samsung Electronics Co.,Ltd +fc19d0 Cloud Vision Networks Technology Co.,Ltd. +fc1a11 vivo Mobile Communication Co., Ltd. +fc1bff V-ZUG AG +fc1ca1 Nokia +fc1d43 Apple, Inc. +fc1d59 I Smart Cities HK Ltd +fc1d84 Autobase +fc1e16 IPEVO corp +fc1f19 SAMSUNG ELECTRO MECHANICS CO., LTD. +fc1fc0 EURECAM +fc229c Han Kyung I Net Co.,Ltd. +fc2325 EosTek (Shenzhen) Co., Ltd. +fc253f Apple, Inc. +fc27a2 TRANS ELECTRIC CO., LTD. +fc29f3 McPay Co.,LTD. +fc2a54 Connected Data, Inc. +fc2a9c Apple, Inc. +fc2bb2 Actiontec Electronics, Inc +fc2d5e zte corporation +fc2e2d Lorom Industrial Co.LTD. +fc2f40 Calxeda, Inc. +fc2f6b Everspin Technologies, Inc. +fc2faa Nokia +fc2fef UTT Technologies Co., Ltd. +fc3288 CELOT Wireless Co., Ltd +fc3342 Juniper Networks +fc335f Polyera +fc3598 Favite Inc. +fc35e6 Visteon corp +fc372b SICHUAN TIANYI COMHEART TELECOMCO.,LTD +fc3ce9 Tsingtong Technologies Co, Ltd. +fc3d93 LONGCHEER TELECOMMUNICATION LIMITED +fc3f7c HUAWEI TECHNOLOGIES CO.,LTD +fc3fab Henan Lanxin Technology Co., Ltd +fc3fdb Hewlett Packard +fc4203 Samsung Electronics Co.,Ltd +fc4463 Universal Audio, Inc +fc4499 Swarco LEA d.o.o. +fc455f JIANGXI SHANSHUI OPTOELECTRONIC TECHNOLOGY CO.,LTD +fc4596 COMPAL INFORMATION (KUNSHAN) CO., LTD. +fc48ef HUAWEI TECHNOLOGIES CO.,LTD +fc492d Amazon Technologies Inc. +fc4ae9 Castlenet Technology Inc. +fc4b1c INTERSENSOR S.R.L. +fc4bbc Sunplus Technology Co., Ltd. +fc4d8c SHENZHEN PANTE ELECTRONICS TECHNOLOGY CO., LTD +fc4dd4 Universal Global Scientific Industrial Co., Ltd. +fc5090 SIMEX Sp. z o.o. +fc51a4 ARRIS Group, Inc. +fc528d Technicolor CH USA Inc. +fc52ce Control iD +fc539e Shanghai Wind Technologies Co.,Ltd +fc55dc Baltic Latvian Universal Electronics LLC +fc589a Cisco Systems, Inc +fc58fa Shen Zhen Shi Xin Zhong Xin Technology Co.,Ltd. +fc5a1d Hitron Technologies. Inc +fc5b24 Weibel Scientific A/S +fc5b26 MikroBits +fc5b39 Cisco Systems, Inc +fc6018 Zhejiang Kangtai Electric Co., Ltd. +fc6198 NEC Personal Products, Ltd +fc61e9 Fiberhome Telecommunication Technologies Co.,LTD +fc626e Beijing MDC Telecom +fc62b9 ALPS ELECTRIC CO., LTD. +fc643a Samsung Electronics Co.,Ltd +fc64ba Xiaomi Communications Co Ltd +fc65de Amazon Technologies Inc. +fc683e Directed Perception, Inc +fc6947 Texas Instruments +fc6bf0 TOPWELL INTERNATIONAL HOLDINDS LIMITED +fc6c31 LXinstruments GmbH +fc6dc0 BME CORPORATION +fc6fb7 ARRIS Group, Inc. +fc7516 D-Link International +fc75e6 Handreamnet +fc7774 Intel Corporate +fc790b Hitachi High Technologies America, Inc. +fc7c02 Phicomm (Shanghai) Co., Ltd. +fc7ce7 FCI USA LLC +fc7d6c HYESUNG TECHWIN Co., Ltd +fc7f56 CoSyst Control Systems GmbH +fc8329 Trei technics +fc8399 Avaya Inc +fc83c6 N-Radio Technologies Co., Ltd. +fc8743 HUAWEI TECHNOLOGIES CO.,LTD +fc8b97 SHENZHEN GONGJIN ELECTRONICS CO.,LT +fc8e7e ARRIS Group, Inc. +fc8f7d SHENZHEN GONGJIN ELECTRONICS CO.,LT +fc8f90 Samsung Electronics Co.,Ltd +fc8fc4 Intelligent Technology Inc. +fc90fa Independent Technologies +fc9114 Technicolor CH USA Inc. +fc923b Nokia Corporation +fc9435 HUAWEI TECHNOLOGIES CO.,LTD +fc946c UBIVELOX +fc94ce zte corporation +fc94e3 Technicolor CH USA Inc. +fc9947 Cisco Systems, Inc +fc9afa Motus Global Inc. +fc9bc6 Sumavision Technologies Co.,Ltd +fc9dd8 Beijing TongTongYiLian Science and Technology Ltd. +fc9fae Fidus Systems Inc +fc9fe1 CONWIN.Tech. Ltd +fca13e Samsung Electronics Co.,Ltd +fca183 Amazon Technologies Inc. +fca22a PT. Callysta Multi Engineering +fca386 SHENZHEN CHUANGWEI-RGB ELECTRONICS CO.,LTD +fca47a IEEE Registration Authority +fca621 Samsung Electronics Co.,Ltd +fca667 Amazon Technologies Inc. +fca6cd Fiberhome Telecommunication Technologies Co.,LTD +fca841 Avaya Inc +fca89a Sunitec Enterprise Co.,Ltd +fca9b0 MIARTECH (SHANGHAI),INC. +fcaa14 GIGA-BYTE TECHNOLOGY CO.,LTD. +fcaab6 Samsung Electronics Co.,Ltd +fcab90 HUAWEI TECHNOLOGIES CO.,LTD +fcad0f QTS NETWORKS +fcae34 ARRIS Group, Inc. +fcaf6a Qulsar Inc +fcafac Socionext Inc. +fcb0c4 Shanghai DareGlobal Technologies Co.,Ltd +fcb10d Shenzhen Tian Kun Technology Co.,LTD. +fcb4e6 ASKEY COMPUTER CORP +fcb58a Wapice Ltd. +fcb662 IC Holdings LLC +fcb698 Cambridge Industries(Group) Co.,Ltd. +fcb6d8 Apple, Inc. +fcb7f0 Idaho National Laboratory +fcbba1 Shenzhen Minicreate Technology Co.,Ltd +fcbc9c Vimar Spa +fcbcd1 HUAWEI TECHNOLOGIES CO.,LTD +fcbd67 Arista Networks +fcbe7b vivo Mobile Communication Co., Ltd. +fcc233 ASUSTek COMPUTER INC. +fcc23d Atmel Corporation +fcc2de Murata Manufacturing Co., Ltd. +fcc734 Samsung Electronics Co.,Ltd +fcc897 zte corporation +fccac4 LifeHealth, LLC +fccce4 Ascon Ltd. +fccf43 HUIZHOU CITY HUIYANG DISTRICT MEISIQI INDUSTRY DEVELOPMENT CO,.LTD +fccf62 IBM Corp +fcd2b6 IEEE Registration Authority +fcd4f2 The Coca Cola Company +fcd4f6 Messana Air.Ray Conditioning s.r.l. +fcd5d9 Shenzhen SDMC Technology Co., Ltd. +fcd6bd Robert Bosch GmbH +fcd733 TP-LINK TECHNOLOGIES CO.,LTD. +fcd817 Beijing Hesun Technologies Co.Ltd. +fcd848 Apple, Inc. +fcdb21 SAMSARA NETWORKS INC +fcdb96 ENERVALLEY CO., LTD +fcdbb3 Murata Manufacturing Co., Ltd. +fcdc4a G-Wearables Corp. +fcdd55 Shenzhen WeWins wireless Co.,Ltd +fce186 A3M Co., LTD +fce192 Sichuan Jinwangtong Electronic Science&Technology Co,.Ltd +fce1d9 Stable Imaging Solutions LLC +fce1fb Array Networks +fce23f CLAY PAKY SPA +fce33c HUAWEI TECHNOLOGIES CO.,LTD +fce557 Nokia Corporation +fce66a Industrial Software Co +fce892 Hangzhou Lancable Technology Co.,Ltd +fce998 Apple, Inc. +fcea50 Integrated Device Technology (Malaysia) Sdn. Bhd. +fcecda Ubiquiti Networks Inc. +fcedb9 Arrayent +fceee6 FORMIKE ELECTRONIC CO., LTD +fcf136 Samsung Electronics Co.,Ltd +fcf152 Sony Corporation +fcf1cd OPTEX-FA CO.,LTD. +fcf528 Zyxel Communications Corporation +fcf647 Fiberhome Telecommunication Technologies Co.,LTD +fcf8ae Intel Corporate +fcf8b7 TRONTEQ Electronic +fcfaf7 Shanghai Baud Data Communication Co.,Ltd. +fcfbfb Cisco Systems, Inc +fcfc48 Apple, Inc. +fcfe77 Hitachi Reftechno, Inc. +fcfec2 Invensys Controls UK Limited +fcffaa IEEE Registration Authority diff --git a/data/kernel-module-icons.json b/data/kernel-module-icons.json new file mode 100644 index 00000000..20921737 --- /dev/null +++ b/data/kernel-module-icons.json @@ -0,0 +1,3221 @@ +{ + "aegis128-aesni": "cryptohash", + "aesni-intel": "cryptohash", + "aria-aesni-avx-x86_64": "cryptohash", + "aria-aesni-avx2-x86_64": "cryptohash", + "aria-gfni-avx512-x86_64": "cryptohash", + "blowfish-x86_64": "cryptohash", + "camellia-aesni-avx-x86_64": "cryptohash", + "camellia-aesni-avx2": "cryptohash", + "camellia-x86_64": "cryptohash", + "cast5-avx-x86_64": "cryptohash", + "cast6-avx-x86_64": "cryptohash", + "chacha-x86_64": "cryptohash", + "crc32-pclmul": "cryptohash", + "crc32c-intel": "cryptohash", + "crct10dif-pclmul": "cryptohash", + "curve25519-x86_64": "cryptohash", + "des3_ede-x86_64": "cryptohash", + "ghash-clmulni-intel": "cryptohash", + "nhpoly1305-avx2": "cryptohash", + "nhpoly1305-sse2": "cryptohash", + "poly1305-x86_64": "cryptohash", + "polyval-clmulni": "cryptohash", + "serpent-avx-x86_64": "cryptohash", + "serpent-avx2": "cryptohash", + "serpent-sse2-x86_64": "cryptohash", + "sha1-ssse3": "cryptohash", + "sha256-ssse3": "cryptohash", + "sha512-ssse3": "cryptohash", + "sm3-avx-x86_64": "cryptohash", + "sm4-aesni-avx-x86_64": "cryptohash", + "sm4-aesni-avx2-x86_64": "cryptohash", + "twofish-avx-x86_64": "cryptohash", + "twofish-x86_64-3way": "cryptohash", + "twofish-x86_64": "cryptohash", + "842": "cryptohash", + "adiantum": "cryptohash", + "aegis128": "cryptohash", + "aes_ti": "cryptohash", + "af_alg": "cryptohash", + "algif_aead": "cryptohash", + "algif_hash": "cryptohash", + "algif_rng": "cryptohash", + "algif_skcipher": "cryptohash", + "ansi_cprng": "cryptohash", + "aria_generic": "cryptohash", + "pkcs8_key_parser": "cryptohash", + "async_memcpy": "cryptohash", + "async_pq": "cryptohash", + "async_raid6_recov": "cryptohash", + "async_tx": "cryptohash", + "async_xor": "cryptohash", + "raid6test": "cryptohash", + "authenc": "cryptohash", + "authencesn": "cryptohash", + "blake2b_generic": "cryptohash", + "blowfish_common": "cryptohash", + "blowfish_generic": "cryptohash", + "camellia_generic": "cryptohash", + "cast5_generic": "cryptohash", + "cast6_generic": "cryptohash", + "cast_common": "cryptohash", + "cbc": "cryptohash", + "ccm": "cryptohash", + "cfb": "cryptohash", + "chacha20poly1305": "cryptohash", + "chacha_generic": "cryptohash", + "cmac": "cryptohash", + "crc32_generic": "cryptohash", + "crc32c_generic": "cryptohash", + "cryptd": "cryptohash", + "crypto_engine": "cryptohash", + "crypto_simd": "cryptohash", + "crypto_user": "cryptohash", + "cts": "cryptohash", + "curve25519-generic": "cryptohash", + "deflate": "cryptohash", + "des_generic": "cryptohash", + "ecb": "cryptohash", + "ecdh_generic": "cryptohash", + "echainiv": "cryptohash", + "ecrdsa_generic": "cryptohash", + "essiv": "cryptohash", + "fcrypt": "cryptohash", + "gcm": "cryptohash", + "ghash-generic": "cryptohash", + "hctr2": "cryptohash", + "keywrap": "cryptohash", + "lrw": "cryptohash", + "lz4": "cryptohash", + "lz4hc": "cryptohash", + "lzo-rle": "cryptohash", + "lzo": "cryptohash", + "md4": "cryptohash", + "michael_mic": "cryptohash", + "nhpoly1305": "cryptohash", + "ofb": "cryptohash", + "pcbc": "cryptohash", + "pcrypt": "cryptohash", + "poly1305_generic": "cryptohash", + "polyval-generic": "cryptohash", + "rmd160": "cryptohash", + "seqiv": "cryptohash", + "serpent_generic": "cryptohash", + "sha3_generic": "cryptohash", + "sm2_generic": "cryptohash", + "sm3": "cryptohash", + "sm3_generic": "cryptohash", + "sm4": "cryptohash", + "sm4_generic": "cryptohash", + "streebog_generic": "cryptohash", + "tcrypt": "cryptohash", + "twofish_common": "cryptohash", + "twofish_generic": "cryptohash", + "vmac": "cryptohash", + "wp512": "cryptohash", + "xcbc": "cryptohash", + "xctr": "cryptohash", + "xor": "cryptohash", + "xts": "cryptohash", + "xxhash_generic": "cryptohash", + "acard-ahci": "hdd", + "ahci_dwc": "hdd", + "ahci_platform": "hdd", + "ata_generic": "hdd", + "ata_piix": "hdd", + "libahci_platform": "hdd", + "pata_acpi": "hdd", + "pata_ali": "hdd", + "pata_amd": "hdd", + "pata_artop": "hdd", + "pata_atiixp": "hdd", + "pata_atp867x": "hdd", + "pata_cmd640": "hdd", + "pata_cmd64x": "hdd", + "pata_cypress": "hdd", + "pata_efar": "hdd", + "pata_hpt366": "hdd", + "pata_hpt37x": "hdd", + "pata_hpt3x2n": "hdd", + "pata_hpt3x3": "hdd", + "pata_it8213": "hdd", + "pata_it821x": "hdd", + "pata_jmicron": "hdd", + "pata_legacy": "hdd", + "pata_marvell": "hdd", + "pata_mpiix": "hdd", + "pata_netcell": "hdd", + "pata_ninja32": "hdd", + "pata_ns87410": "hdd", + "pata_ns87415": "hdd", + "pata_oldpiix": "hdd", + "pata_opti": "hdd", + "pata_optidma": "hdd", + "aten": "hdd", + "bpck": "hdd", + "bpck6": "hdd", + "comm": "hdd", + "dstr": "hdd", + "epat": "hdd", + "epia": "hdd", + "fit2": "hdd", + "fit3": "hdd", + "friq": "hdd", + "frpw": "hdd", + "kbic": "hdd", + "ktti": "hdd", + "on20": "hdd", + "on26": "hdd", + "pata_parport": "hdd", + "pata_pcmcia": "hdd", + "pata_pdc2027x": "hdd", + "pata_pdc202xx_old": "hdd", + "pata_piccolo": "hdd", + "pata_radisys": "hdd", + "pata_rdc": "hdd", + "pata_rz1000": "hdd", + "pata_sch": "hdd", + "pata_serverworks": "hdd", + "pata_sil680": "hdd", + "pata_sis": "hdd", + "pata_sl82c105": "hdd", + "pata_triflex": "hdd", + "pata_via": "hdd", + "pdc_adma": "hdd", + "sata_dwc_460ex": "hdd", + "sata_inic162x": "hdd", + "sata_mv": "hdd", + "sata_nv": "hdd", + "sata_promise": "hdd", + "sata_qstor": "hdd", + "sata_sil": "hdd", + "sata_sil24": "hdd", + "sata_sis": "hdd", + "sata_svw": "hdd", + "sata_sx4": "hdd", + "sata_uli": "hdd", + "sata_via": "hdd", + "sata_vsc": "hdd", + "ath3k": "bluetooth", + "bcm203x": "bluetooth", + "bfusb": "bluetooth", + "bluecard_cs": "bluetooth", + "bpa10x": "bluetooth", + "bt3c_cs": "bluetooth", + "btbcm": "bluetooth", + "btintel": "bluetooth", + "btmrvl": "bluetooth", + "btmrvl_sdio": "bluetooth", + "btmtk": "bluetooth", + "btmtksdio": "bluetooth", + "btmtkuart": "bluetooth", + "btnxpuart": "bluetooth", + "btqca": "bluetooth", + "btrsi": "bluetooth", + "btrtl": "bluetooth", + "btsdio": "bluetooth", + "btusb": "bluetooth", + "dtl1_cs": "bluetooth", + "hci_bcm4377": "bluetooth", + "hci_nokia": "bluetooth", + "hci_uart": "bluetooth", + "hci_vhci": "bluetooth", + "virtio_bt": "bluetooth", + "cdrom": "cdrom", + "amlogic-gxl-crypto": "cryptohash", + "atmel-ecc": "cryptohash", + "atmel-i2c": "cryptohash", + "atmel-sha204a": "cryptohash", + "n5pf": "cryptohash", + "ccp-crypto": "cryptohash", + "ccp": "cryptohash", + "chcr": "cryptohash", + "crypto_safexcel": "cryptohash", + "qat_4xxx": "cryptohash", + "qat_c3xxx": "cryptohash", + "qat_c3xxxvf": "cryptohash", + "qat_c62x": "cryptohash", + "qat_c62xvf": "cryptohash", + "intel_qat": "cryptohash", + "qat_dh895xcc": "cryptohash", + "qat_dh895xccvf": "cryptohash", + "padlock-aes": "cryptohash", + "padlock-sha": "cryptohash", + "virtio_crypto": "cryptohash", + "amd64_edac": "memory", + "e752x_edac": "memory", + "edac_mce_amd": "memory", + "i10nm_edac": "memory", + "i3000_edac": "memory", + "i3200_edac": "memory", + "i5100_edac": "memory", + "i5400_edac": "memory", + "i7300_edac": "memory", + "i7core_edac": "memory", + "i82975x_edac": "memory", + "ie31200_edac": "memory", + "igen6_edac": "memory", + "pnd2_edac": "memory", + "sb_edac": "memory", + "skx_edac": "memory", + "x38_edac": "memory", + "amdgpu": "monitor", + "ast": "monitor", + "analogix-anx78xx": "monitor", + "analogix_dp": "monitor", + "drm_display_helper": "monitor", + "drm_buddy": "monitor", + "drm_dma_helper": "monitor", + "drm_mipi_dbi": "monitor", + "drm_suballoc_helper": "monitor", + "drm_ttm_helper": "monitor", + "drm_vram_helper": "monitor", + "gma500_gfx": "monitor", + "gud": "monitor", + "hyperv_drm": "monitor", + "ch7006": "monitor", + "sil164": "monitor", + "tda9950": "monitor", + "tda998x": "monitor", + "i915": "monitor", + "kvmgt": "monitor", + "mgag200": "monitor", + "nouveau": "monitor", + "panel-auo-a030jtn01": "monitor", + "panel-orisetech-ota5601a": "monitor", + "panel-raspberrypi-touchscreen": "monitor", + "panel-widechips-ws2401": "monitor", + "qxl": "monitor", + "radeon": "monitor", + "gpu-sched": "monitor", + "ssd130x-i2c": "monitor", + "ssd130x-spi": "monitor", + "ssd130x": "monitor", + "bochs": "monitor", + "cirrus": "monitor", + "gm12u320": "monitor", + "hx8357d": "monitor", + "ili9163": "monitor", + "ili9225": "monitor", + "ili9341": "monitor", + "ili9486": "monitor", + "mi0283qt": "monitor", + "panel-mipi-dbi": "monitor", + "repaper": "monitor", + "st7586": "monitor", + "st7735r": "monitor", + "ttm": "monitor", + "udl": "monitor", + "vboxvideo": "monitor", + "vgem": "monitor", + "virtio-gpu": "monitor", + "vkms": "monitor", + "vmwgfx": "monitor", + "drm_xen_front": "monitor", + "amd_sfh": "inputdevices", + "hid-a4tech": "inputdevices", + "hid-accutouch": "inputdevices", + "hid-alps": "inputdevices", + "hid-apple": "inputdevices", + "hid-appleir": "inputdevices", + "hid-asus": "inputdevices", + "hid-aureal": "inputdevices", + "hid-axff": "inputdevices", + "hid-belkin": "inputdevices", + "hid-betopff": "inputdevices", + "hid-bigbenff": "inputdevices", + "hid-cherry": "inputdevices", + "hid-chicony": "inputdevices", + "hid-cmedia": "inputdevices", + "hid-corsair": "inputdevices", + "hid-cougar": "inputdevices", + "hid-cp2112": "inputdevices", + "hid-creative-sb0540": "inputdevices", + "hid-cypress": "inputdevices", + "hid-dr": "inputdevices", + "hid-elan": "inputdevices", + "hid-elecom": "inputdevices", + "hid-elo": "inputdevices", + "hid-emsff": "inputdevices", + "hid-evision": "inputdevices", + "hid-ezkey": "inputdevices", + "hid-ft260": "inputdevices", + "hid-gaff": "inputdevices", + "hid-gembird": "inputdevices", + "hid-gfrm": "inputdevices", + "hid-glorious": "inputdevices", + "hid-google-hammer": "inputdevices", + "hid-gt683r": "inputdevices", + "hid-gyration": "inputdevices", + "hid-holtek-kbd": "inputdevices", + "hid-holtek-mouse": "inputdevices", + "hid-holtekff": "inputdevices", + "hid-hyperv": "inputdevices", + "hid-icade": "inputdevices", + "hid-ite": "inputdevices", + "hid-jabra": "inputdevices", + "hid-kensington": "inputdevices", + "hid-keytouch": "inputdevices", + "hid-kye": "inputdevices", + "hid-lcpower": "inputdevices", + "hid-led": "inputdevices", + "hid-lenovo": "inputdevices", + "hid-letsketch": "inputdevices", + "hid-lg-g15": "inputdevices", + "hid-logitech-dj": "inputdevices", + "hid-logitech-hidpp": "inputdevices", + "hid-logitech": "inputdevices", + "hid-macally": "inputdevices", + "hid-magicmouse": "inputdevices", + "hid-maltron": "inputdevices", + "hid-mcp2221": "inputdevices", + "hid-megaworld": "inputdevices", + "hid-mf": "inputdevices", + "hid-microsoft": "inputdevices", + "hid-monterey": "inputdevices", + "hid-multitouch": "inputdevices", + "hid-nintendo": "inputdevices", + "hid-nti": "inputdevices", + "hid-ntrig": "inputdevices", + "hid-ortek": "inputdevices", + "hid-penmount": "inputdevices", + "hid-petalynx": "inputdevices", + "hid-picolcd": "inputdevices", + "hid-pl": "inputdevices", + "hid-plantronics": "inputdevices", + "hid-playstation": "inputdevices", + "hid-primax": "inputdevices", + "hid-prodikeys": "inputdevices", + "hid-pxrc": "inputdevices", + "hid-razer": "inputdevices", + "hid-redragon": "inputdevices", + "hid-retrode": "inputdevices", + "hid-rmi": "inputdevices", + "hid-roccat-arvo": "inputdevices", + "hid-roccat-common": "inputdevices", + "hid-roccat-isku": "inputdevices", + "hid-roccat-kone": "inputdevices", + "hid-roccat-koneplus": "inputdevices", + "hid-roccat-konepure": "inputdevices", + "hid-roccat-kovaplus": "inputdevices", + "hid-roccat-lua": "inputdevices", + "hid-roccat-pyra": "inputdevices", + "hid-roccat-ryos": "inputdevices", + "hid-roccat-savu": "inputdevices", + "hid-roccat": "inputdevices", + "hid-saitek": "inputdevices", + "hid-samsung": "inputdevices", + "hid-semitek": "inputdevices", + "hid-sensor-custom": "inputdevices", + "hid-sensor-hub": "inputdevices", + "hid-sigmamicro": "inputdevices", + "hid-sjoy": "inputdevices", + "hid-sony": "inputdevices", + "hid-speedlink": "inputdevices", + "hid-steam": "inputdevices", + "hid-steelseries": "inputdevices", + "hid-sunplus": "inputdevices", + "hid-thrustmaster": "inputdevices", + "hid-tivo": "inputdevices", + "hid-tmff": "inputdevices", + "hid-topre": "inputdevices", + "hid-topseed": "inputdevices", + "hid-twinhan": "inputdevices", + "hid-u2fzero": "inputdevices", + "hid-uclogic": "inputdevices", + "hid-udraw-ps3": "inputdevices", + "hid-viewsonic": "inputdevices", + "hid-vivaldi-common": "inputdevices", + "hid-vivaldi": "inputdevices", + "hid-vrc2": "inputdevices", + "hid-waltop": "inputdevices", + "hid-wiimote": "inputdevices", + "hid-xiaomi": "inputdevices", + "hid-xinmo": "inputdevices", + "hid-zpff": "inputdevices", + "hid-zydacron": "inputdevices", + "i2c-hid-acpi": "inputdevices", + "i2c-hid-of": "inputdevices", + "i2c-hid": "inputdevices", + "intel-ish-ipc": "inputdevices", + "intel-ishtp-hid": "inputdevices", + "intel-ishtp-loader": "inputdevices", + "intel-ishtp": "inputdevices", + "surface_hid": "inputdevices", + "surface_hid_core": "inputdevices", + "surface_kbd": "inputdevices", + "uhid": "inputdevices", + "usbhid": "inputdevices", + "wacom": "inputdevices", + "abituguru": "therm", + "abituguru3": "therm", + "acpi_power_meter": "therm", + "ad7314": "therm", + "ad7414": "therm", + "ad7418": "therm", + "adc128d818": "therm", + "adcxx": "therm", + "adm1025": "therm", + "adm1026": "therm", + "adm1029": "therm", + "adm1031": "therm", + "adm1177": "therm", + "adm9240": "therm", + "ads7828": "therm", + "ads7871": "therm", + "adt7310": "therm", + "adt7410": "therm", + "adt7411": "therm", + "adt7462": "therm", + "adt7470": "therm", + "adt7475": "therm", + "adt7x10": "therm", + "aht10": "therm", + "amc6821": "therm", + "applesmc": "therm", + "aquacomputer_d5next": "therm", + "as370-hwmon": "therm", + "asb100": "therm", + "asc7621": "therm", + "asus-ec-sensors": "therm", + "asus_atk0110": "therm", + "asus_wmi_sensors": "therm", + "atxp1": "therm", + "axi-fan-control": "therm", + "coretemp": "therm", + "corsair-cpro": "therm", + "corsair-psu": "therm", + "da9052-hwmon": "therm", + "da9055-hwmon": "therm", + "dell-smm-hwmon": "therm", + "dme1737": "therm", + "drivetemp": "therm", + "ds1621": "therm", + "ds620": "therm", + "emc1403": "therm", + "emc2103": "therm", + "emc2305": "therm", + "emc6w201": "therm", + "f71805f": "therm", + "f71882fg": "therm", + "f75375s": "therm", + "fam15h_power": "therm", + "fschmd": "therm", + "ftsteutates": "therm", + "g760a": "therm", + "g762": "therm", + "gl518sm": "therm", + "gl520sm": "therm", + "hih6130": "therm", + "hwmon-vid": "therm", + "i5500_temp": "therm", + "i5k_amb": "therm", + "ibmaem": "therm", + "ibmpex": "therm", + "iio_hwmon": "therm", + "ina209": "therm", + "ina238": "therm", + "ina2xx": "therm", + "ina3221": "therm", + "intel-m10-bmc-hwmon": "therm", + "it87": "therm", + "jc42": "therm", + "k10temp": "therm", + "k8temp": "therm", + "lineage-pem": "therm", + "lm63": "therm", + "lm70": "therm", + "lm73": "therm", + "lm75": "therm", + "lm77": "therm", + "lm78": "therm", + "lm80": "therm", + "lm83": "therm", + "lm85": "therm", + "lm87": "therm", + "lm90": "therm", + "lm92": "therm", + "lm93": "therm", + "lm95234": "therm", + "lm95241": "therm", + "lm95245": "therm", + "ltc2945": "therm", + "ltc2947-core": "therm", + "ltc2947-i2c": "therm", + "ltc2947-spi": "therm", + "ltc2990": "therm", + "ltc2992": "therm", + "ltc4151": "therm", + "ltc4215": "therm", + "ltc4222": "therm", + "ltc4245": "therm", + "ltc4260": "therm", + "ltc4261": "therm", + "max1111": "therm", + "max127": "therm", + "max16065": "therm", + "max1619": "therm", + "max1668": "therm", + "max197": "therm", + "max31722": "therm", + "max31730": "therm", + "max31760": "therm", + "max31790": "therm", + "max6620": "therm", + "max6621": "therm", + "max6639": "therm", + "max6650": "therm", + "max6697": "therm", + "mc13783-adc": "therm", + "mc34vr500": "therm", + "mcp3021": "therm", + "menf21bmc_hwmon": "therm", + "mlxreg-fan": "therm", + "mr75203": "therm", + "nct6683": "therm", + "nct6775-core": "therm", + "nct6775-i2c": "therm", + "nct6775": "therm", + "nct7802": "therm", + "nct7904": "therm", + "npcm750-pwm-fan": "therm", + "ntc_thermistor": "therm", + "nzxt-kraken2": "therm", + "nzxt-smart2": "therm", + "occ-hwmon-common": "therm", + "occ-p8-hwmon": "therm", + "oxp-sensors": "therm", + "pc87360": "therm", + "pc87427": "therm", + "pcf8591": "therm", + "acbel-fsg032": "therm", + "adm1266": "therm", + "adm1275": "therm", + "bel-pfe": "therm", + "bpa-rs600": "therm", + "delta-ahe50dc-fan": "therm", + "dps920ab": "therm", + "fsp-3y": "therm", + "ibm-cffps": "therm", + "inspur-ipsps": "therm", + "ir35221": "therm", + "ir36021": "therm", + "ir38064": "therm", + "irps5401": "therm", + "isl68137": "therm", + "lm25066": "therm", + "lt7182s": "therm", + "ltc2978": "therm", + "ltc3815": "therm", + "max15301": "therm", + "max16064": "therm", + "max16601": "therm", + "max20730": "therm", + "max20751": "therm", + "max31785": "therm", + "max34440": "therm", + "max8688": "therm", + "mp2888": "therm", + "mp2975": "therm", + "mp5023": "therm", + "mpq7932": "therm", + "pim4328": "therm", + "pli1209bc": "therm", + "pm6764tr": "therm", + "pmbus": "therm", + "pmbus_core": "therm", + "pxe1610": "therm", + "q54sj108a2": "therm", + "stpddc60": "therm", + "tda38640": "therm", + "tps40422": "therm", + "tps53679": "therm", + "tps546d24": "therm", + "ucd9000": "therm", + "ucd9200": "therm", + "xdpe12284": "therm", + "xdpe152c4": "therm", + "zl6100": "therm", + "powr1220": "therm", + "sbrmi": "therm", + "sbtsi_temp": "therm", + "sch5627": "therm", + "sch5636": "therm", + "sch56xx-common": "therm", + "sht15": "therm", + "sht21": "therm", + "sht3x": "therm", + "sht4x": "therm", + "shtc1": "therm", + "sis5595": "therm", + "smm665": "therm", + "smpro-hwmon": "therm", + "smsc47b397": "therm", + "smsc47m1": "therm", + "smsc47m192": "therm", + "stts751": "therm", + "sy7636a-hwmon": "therm", + "tc654": "therm", + "tc74": "therm", + "thmc50": "therm", + "tmp102": "therm", + "tmp103": "therm", + "tmp108": "therm", + "tmp401": "therm", + "tmp421": "therm", + "tmp464": "therm", + "tmp513": "therm", + "tps23861": "therm", + "via-cputemp": "therm", + "via686a": "therm", + "vt1211": "therm", + "vt8231": "therm", + "w83627ehf": "therm", + "w83627hf": "therm", + "w83773g": "therm", + "w83781d": "therm", + "w83791d": "therm", + "w83792d": "therm", + "w83793": "therm", + "w83795": "therm", + "w83l785ts": "therm", + "w83l786ng": "therm", + "wm831x-hwmon": "therm", + "wm8350-hwmon": "therm", + "xgene-hwmon": "therm", + "i2c-algo-bit": "memory", + "i2c-algo-pca": "memory", + "i2c-ali1535": "memory", + "i2c-ali1563": "memory", + "i2c-ali15x3": "memory", + "i2c-amd-mp2-pci": "memory", + "i2c-amd-mp2-plat": "memory", + "i2c-amd756-s4882": "memory", + "i2c-amd756": "memory", + "i2c-amd8111": "memory", + "i2c-cbus-gpio": "memory", + "i2c-cht-wc": "memory", + "i2c-cp2615": "memory", + "i2c-cros-ec-tunnel": "memory", + "i2c-diolan-u2c": "memory", + "i2c-dln2": "memory", + "i2c-emev2": "memory", + "i2c-gpio": "memory", + "i2c-i801": "memory", + "i2c-isch": "memory", + "i2c-ismt": "memory", + "i2c-kempld": "memory", + "i2c-mchp-pci1xxxx": "memory", + "i2c-mlxcpld": "memory", + "i2c-nforce2-s4985": "memory", + "i2c-nforce2": "memory", + "i2c-nvidia-gpu": "memory", + "i2c-ocores": "memory", + "i2c-parport": "memory", + "i2c-pca-platform": "memory", + "i2c-piix4": "memory", + "i2c-robotfuzz-osif": "memory", + "i2c-scmi": "memory", + "i2c-simtec": "memory", + "i2c-sis5595": "memory", + "i2c-sis630": "memory", + "i2c-sis96x": "memory", + "i2c-taos-evm": "memory", + "i2c-tiny-usb": "memory", + "i2c-via": "memory", + "i2c-viapro": "memory", + "i2c-viperboard": "memory", + "i2c-virtio": "memory", + "i2c-xiic": "memory", + "i2c-dev": "memory", + "i2c-mux": "memory", + "i2c-slave-eeprom": "memory", + "i2c-slave-testunit": "memory", + "i2c-smbus": "memory", + "i2c-stub": "memory", + "i2c-mux-gpio": "memory", + "i2c-mux-ltc4306": "memory", + "i2c-mux-mlxcpld": "memory", + "i2c-mux-pca9541": "memory", + "i2c-mux-pca954x": "memory", + "i2c-mux-reg": "memory", + "ff-memless": "inputdevices", + "emu10k1-gp": "inputdevices", + "fm801-gp": "inputdevices", + "gameport": "inputdevices", + "lightning": "inputdevices", + "ns558": "inputdevices", + "joydev": "inputdevices", + "a3d": "joystick", + "adc-joystick": "joystick", + "adi": "joystick", + "analog": "joystick", + "as5011": "joystick", + "cobra": "joystick", + "db9": "joystick", + "fsia6b": "joystick", + "gamecon": "joystick", + "gf2k": "joystick", + "grip": "joystick", + "grip_mp": "joystick", + "guillemot": "joystick", + "iforce-serio": "joystick", + "iforce-usb": "joystick", + "iforce": "joystick", + "interact": "joystick", + "joydump": "joystick", + "magellan": "joystick", + "psxpad-spi": "joystick", + "pxrc": "joystick", + "qwiic-joystick": "joystick", + "sensehat-joystick": "joystick", + "sidewinder": "joystick", + "spaceball": "joystick", + "spaceorb": "joystick", + "stinger": "joystick", + "tmdc": "joystick", + "turbografx": "joystick", + "twidjoy": "joystick", + "walkera0701": "joystick", + "warrior": "joystick", + "xpad": "joystick", + "zhenhua": "joystick", + "adc-keys": "keyboard", + "adp5520-keys": "keyboard", + "adp5588-keys": "keyboard", + "adp5589-keys": "keyboard", + "applespi": "keyboard", + "atkbd": "keyboard", + "cros_ec_keyb": "keyboard", + "cypress-sf": "keyboard", + "dlink-dir685-touchkeys": "keyboard", + "gpio_keys": "keyboard", + "gpio_keys_polled": "keyboard", + "iqs62x-keys": "keyboard", + "lkkbd": "keyboard", + "lm8323": "keyboard", + "lm8333": "keyboard", + "matrix_keypad": "keyboard", + "max7359_keypad": "keyboard", + "mcs_touchkey": "keyboard", + "mpr121_touchkey": "keyboard", + "mtk-pmic-keys": "keyboard", + "newtonkbd": "keyboard", + "opencores-kbd": "keyboard", + "pinephone-keyboard": "keyboard", + "qt1050": "keyboard", + "qt1070": "keyboard", + "qt2160": "keyboard", + "samsung-keypad": "keyboard", + "stowaway": "keyboard", + "sunkbd": "keyboard", + "tca6416-keypad": "keyboard", + "tca8418_keypad": "keyboard", + "tm2-touchkey": "keyboard", + "twl4030_keypad": "keyboard", + "xtkbd": "keyboard", + "matrix-keymap": "inputdevices", + "88pm80x_onkey": "inputdevices", + "88pm860x_onkey": "inputdevices", + "ad714x-i2c": "inputdevices", + "ad714x-spi": "inputdevices", + "ad714x": "inputdevices", + "adxl34x-i2c": "inputdevices", + "adxl34x-spi": "inputdevices", + "adxl34x": "inputdevices", + "apanel": "inputdevices", + "arizona-haptics": "inputdevices", + "atc260x-onkey": "inputdevices", + "ati_remote2": "inputdevices", + "atlas_btns": "inputdevices", + "axp20x-pek": "inputdevices", + "bma150": "inputdevices", + "cm109": "inputdevices", + "cma3000_d0x": "inputdevices", + "cma3000_d0x_i2c": "inputdevices", + "da7280": "inputdevices", + "da9052_onkey": "inputdevices", + "da9055_onkey": "inputdevices", + "da9063_onkey": "inputdevices", + "drv260x": "inputdevices", + "drv2665": "inputdevices", + "drv2667": "inputdevices", + "e3x0-button": "inputdevices", + "gpio-beeper": "inputdevices", + "gpio-vibra": "inputdevices", + "gpio_decoder": "inputdevices", + "ibm-panel": "inputdevices", + "ideapad_slidebar": "inputdevices", + "ims-pcu": "inputdevices", + "iqs269a": "inputdevices", + "iqs626a": "inputdevices", + "iqs7222": "inputdevices", + "keyspan_remote": "inputdevices", + "kxtj9": "inputdevices", + "max77693-haptic": "inputdevices", + "max8925_onkey": "inputdevices", + "max8997_haptic": "inputdevices", + "mc13783-pwrbutton": "inputdevices", + "mma8450": "inputdevices", + "palmas-pwrbutton": "inputdevices", + "pcap_keys": "inputdevices", + "pcf50633-input": "inputdevices", + "pcf8574_keypad": "inputdevices", + "pcspkr": "inputdevices", + "powermate": "inputdevices", + "pwm-beeper": "inputdevices", + "pwm-vibra": "inputdevices", + "rave-sp-pwrbutton": "inputdevices", + "regulator-haptic": "inputdevices", + "retu-pwrbutton": "inputdevices", + "rotary_encoder": "inputdevices", + "rt5120-pwrkey": "inputdevices", + "soc_button_array": "inputdevices", + "twl4030-pwrbutton": "inputdevices", + "twl4030-vibra": "inputdevices", + "twl6040-vibra": "inputdevices", + "uinput": "inputdevices", + "wm831x-on": "inputdevices", + "xen-kbdfront": "inputdevices", + "yealink": "inputdevices", + "appletouch": "mouse", + "bcm5974": "mouse", + "cyapatp": "mouse", + "elan_i2c": "mouse", + "gpio_mouse": "mouse", + "psmouse": "mouse", + "sermouse": "mouse", + "synaptics_i2c": "mouse", + "synaptics_usb": "mouse", + "vsxxxaa": "mouse", + "mousedev": "inputdevices", + "rmi_core": "inputdevices", + "rmi_i2c": "inputdevices", + "rmi_smbus": "inputdevices", + "rmi_spi": "inputdevices", + "altera_ps2": "inputdevices", + "arc_ps2": "inputdevices", + "ct82c710": "inputdevices", + "hyperv-keyboard": "inputdevices", + "i8042": "inputdevices", + "libps2": "inputdevices", + "parkbd": "inputdevices", + "pcips2": "inputdevices", + "ps2-gpio": "inputdevices", + "ps2mult": "inputdevices", + "serio": "inputdevices", + "serio_raw": "inputdevices", + "serport": "inputdevices", + "userio": "inputdevices", + "sparse-keymap": "inputdevices", + "acecad": "inputdevices", + "aiptek": "inputdevices", + "hanwang": "inputdevices", + "kbtab": "inputdevices", + "pegasus_notetaker": "inputdevices", + "wacom_serial4": "inputdevices", + "88pm860x-ts": "inputdevices", + "ad7877": "inputdevices", + "ad7879-i2c": "inputdevices", + "ad7879-spi": "inputdevices", + "ad7879": "inputdevices", + "ads7846": "inputdevices", + "atmel_mxt_ts": "inputdevices", + "auo-pixcir-ts": "inputdevices", + "bu21013_ts": "inputdevices", + "bu21029_ts": "inputdevices", + "chipone_icn8505": "inputdevices", + "colibri-vf50-ts": "inputdevices", + "cy8ctma140": "inputdevices", + "cy8ctmg110_ts": "inputdevices", + "cyttsp4_core": "inputdevices", + "cyttsp4_i2c": "inputdevices", + "cyttsp4_spi": "inputdevices", + "cyttsp5": "inputdevices", + "cyttsp_core": "inputdevices", + "cyttsp_i2c": "inputdevices", + "cyttsp_i2c_common": "inputdevices", + "cyttsp_spi": "inputdevices", + "da9034-ts": "inputdevices", + "da9052_tsi": "inputdevices", + "dynapro": "inputdevices", + "edt-ft5x06": "inputdevices", + "eeti_ts": "inputdevices", + "egalax_ts_serial": "inputdevices", + "ektf2127": "inputdevices", + "elants_i2c": "inputdevices", + "elo": "inputdevices", + "exc3000": "inputdevices", + "fujitsu_ts": "inputdevices", + "goodix_ts": "inputdevices", + "gunze": "inputdevices", + "hampshire": "inputdevices", + "hideep": "inputdevices", + "himax_hx83112b": "inputdevices", + "hycon-hy46xx": "inputdevices", + "hynitron_cstxxx": "inputdevices", + "ili210x": "inputdevices", + "ilitek_ts_i2c": "inputdevices", + "imagis": "inputdevices", + "inexio": "inputdevices", + "iqs5xx": "inputdevices", + "max11801_ts": "inputdevices", + "mc13783_ts": "inputdevices", + "mcs5000_ts": "inputdevices", + "melfas_mip4": "inputdevices", + "mk712": "inputdevices", + "mms114": "inputdevices", + "msg2638": "inputdevices", + "mtouch": "inputdevices", + "novatek-nvt-ts": "inputdevices", + "pcap_ts": "inputdevices", + "penmount": "inputdevices", + "pixcir_i2c_ts": "inputdevices", + "raydium_i2c_ts": "inputdevices", + "resistive-adc-touch": "inputdevices", + "rohm_bu21023": "inputdevices", + "s6sy761": "inputdevices", + "silead": "inputdevices", + "sis_i2c": "inputdevices", + "st1232": "inputdevices", + "stmfts": "inputdevices", + "sur40": "inputdevices", + "surface3_spi": "inputdevices", + "sx8654": "inputdevices", + "ti_am335x_tsc": "inputdevices", + "touchit213": "inputdevices", + "touchright": "inputdevices", + "touchwin": "inputdevices", + "tps6507x-ts": "inputdevices", + "tsc2004": "inputdevices", + "tsc2005": "inputdevices", + "tsc2007": "inputdevices", + "tsc200x-core": "inputdevices", + "tsc40": "inputdevices", + "usbtouchscreen": "inputdevices", + "wacom_i2c": "inputdevices", + "wacom_w8001": "inputdevices", + "wdt87xx_i2c": "inputdevices", + "wm831x-ts": "inputdevices", + "wm97xx-ts": "inputdevices", + "zet6223": "inputdevices", + "zforce_ts": "inputdevices", + "zinitix": "inputdevices", + "vivaldi-fmap": "inputdevices", + "iommufd": "memory", + "virtio-iommu": "memory", + "uvcvideo": "camera-web", + "tuner": "camera-web", + "v4l2-async": "camera-web", + "v4l2-dv-timings": "camera-web", + "v4l2-flash-led-class": "camera-web", + "v4l2-fwnode": "camera-web", + "v4l2-mem2mem": "camera-web", + "videobuf-core": "camera-web", + "videobuf-dma-sg": "camera-web", + "videodev": "camera-web", + "mmc_block": "media-removable", + "mmc_core": "media-removable", + "mmc_test": "media-removable", + "sdio_uart": "media-removable", + "alcor": "media-removable", + "cb710-mmc": "media-removable", + "cqhci": "media-removable", + "mmc_hsq": "media-removable", + "mmc_spi": "media-removable", + "mtk-sd": "media-removable", + "of_mmc_spi": "media-removable", + "rtsx_pci_sdmmc": "media-removable", + "rtsx_usb_sdmmc": "media-removable", + "sdhci-acpi": "media-removable", + "sdhci-pci": "media-removable", + "sdhci-pltfm": "media-removable", + "sdhci-xenon-driver": "media-removable", + "sdhci": "media-removable", + "sdhci_f_sdh30": "media-removable", + "sdricoh_cs": "media-removable", + "tifm_sd": "media-removable", + "toshsd": "media-removable", + "usdhi6rol0": "media-removable", + "ushc": "media-removable", + "via-sdmmc": "media-removable", + "vub300": "media-removable", + "wbsd": "media-removable", + "amt": "network", + "ipddp": "network", + "bareudp": "network", + "bonding": "network", + "c_can": "network", + "c_can_pci": "network", + "c_can_platform": "network", + "can327": "network", + "cc770": "network", + "cc770_platform": "network", + "ctucanfd": "network", + "ctucanfd_pci": "network", + "can-dev": "network", + "ifi_canfd": "network", + "janz-ican3": "network", + "kvaser_pciefd": "network", + "m_can": "network", + "m_can_pci": "network", + "m_can_platform": "network", + "tcan4x5x": "network", + "peak_pciefd": "network", + "ems_pci": "network", + "f81601": "network", + "kvaser_pci": "network", + "peak_pci": "network", + "peak_pcmcia": "network", + "plx_pci": "network", + "sja1000": "network", + "sja1000_platform": "network", + "slcan": "network", + "softing": "network", + "softing_cs": "network", + "hi311x": "network", + "mcp251x": "network", + "mcp251xfd": "network", + "ems_usb": "network", + "esd_usb": "network", + "etas_es58x": "network", + "gs_usb": "network", + "kvaser_usb": "network", + "mcba_usb": "network", + "peak_usb": "network", + "ucan": "network", + "usb_8dev": "network", + "vcan": "network", + "vxcan": "network", + "b53_common": "network", + "b53_mdio": "network", + "b53_mmap": "network", + "b53_serdes": "network", + "b53_spi": "network", + "b53_srab": "network", + "bcm-sf2": "network", + "dsa_loop": "network", + "dsa_loop_bdinfo": "network", + "hellcreek_sw": "network", + "lan9303-core": "network", + "lan9303_i2c": "network", + "lan9303_mdio": "network", + "ksz8863_smi": "network", + "ksz9477_i2c": "network", + "ksz_spi": "network", + "ksz_switch": "network", + "mt7530-mdio": "network", + "mt7530-mmio": "network", + "mt7530": "network", + "mv88e6060": "network", + "mv88e6xxx": "network", + "mscc_felix_dsa_lib": "network", + "mscc_ocelot_ext": "network", + "mscc_seville": "network", + "ar9331": "network", + "qca8k": "network", + "rtl8365mb": "network", + "rtl8366": "network", + "sja1105": "network", + "vitesse-vsc73xx-core": "network", + "vitesse-vsc73xx-platform": "network", + "vitesse-vsc73xx-spi": "network", + "xrs700x": "network", + "xrs700x_i2c": "network", + "xrs700x_mdio": "network", + "dummy": "network", + "eql": "network", + "3c574_cs": "network-interface", + "3c589_cs": "network-interface", + "3c59x": "network-interface", + "typhoon": "network-interface", + "8390": "network-interface", + "axnet_cs": "network-interface", + "ne2k-pci": "network-interface", + "pcnet_cs": "network-interface", + "starfire": "network-interface", + "adin1110": "network-interface", + "et131x": "network-interface", + "slicoss": "network-interface", + "acenic": "network-interface", + "altera_tse": "network-interface", + "ena": "network-interface", + "amd8111e": "network-interface", + "nmclan_cs": "network-interface", + "pcnet32": "network-interface", + "pds_core": "network-interface", + "amd-xgbe": "network-interface", + "atlantic": "network-interface", + "ax88796c": "network-interface", + "alx": "network-interface", + "atl1c": "network-interface", + "atl1e": "network-interface", + "atl1": "network-interface", + "atl2": "network-interface", + "b44": "network-interface", + "bcmsysport": "network-interface", + "bnx2": "network-interface", + "bnx2x": "network-interface", + "bnxt_en": "network-interface", + "cnic": "network-interface", + "genet": "network-interface", + "tg3": "network-interface", + "bna": "network-interface", + "macb": "network-interface", + "macb_pci": "network-interface", + "cavium_ptp": "network-interface", + "liquidio": "network-interface", + "liquidio_vf": "network-interface", + "nicpf": "network-interface", + "nicvf": "network-interface", + "thunder_bgx": "network-interface", + "thunder_xcv": "network-interface", + "cxgb": "network-interface", + "cxgb3": "network-interface", + "cxgb4": "network-interface", + "cxgb4vf": "network-interface", + "ch_ipsec": "network-interface", + "ch_ktls": "network-interface", + "libcxgb": "network-interface", + "enic": "network-interface", + "de2104x": "network-interface", + "dmfe": "network-interface", + "tulip": "network-interface", + "uli526x": "network-interface", + "winbond-840": "network-interface", + "xircom_cb": "network-interface", + "dl2k": "network-interface", + "sundance": "network-interface", + "dnet": "network-interface", + "ec_bhf": "network-interface", + "be2net": "network-interface", + "tsnep": "network-interface", + "ethoc": "network-interface", + "fealnx": "network-interface", + "fmvj18x_cs": "network-interface", + "funcore": "network-interface", + "funeth": "network-interface", + "gve": "network-interface", + "hinic": "network-interface", + "e100": "network-interface", + "e1000": "network-interface", + "e1000e": "network-interface", + "fm10k": "network-interface", + "i40e": "network-interface", + "iavf": "network-interface", + "ice": "network-interface", + "igb": "network-interface", + "igbvf": "network-interface", + "igc": "network-interface", + "ixgbe": "network-interface", + "ixgbevf": "network-interface", + "jme": "network-interface", + "mvmdio": "network-interface", + "octeon_ep": "network-interface", + "prestera": "network-interface", + "prestera_pci": "network-interface", + "skge": "network-interface", + "sky2": "network-interface", + "mlx4_core": "network-interface", + "mlx4_en": "network-interface", + "mlx5_core": "network-interface", + "mlxfw": "network-interface", + "mlxsw_core": "network-interface", + "mlxsw_i2c": "network-interface", + "mlxsw_minimal": "network-interface", + "mlxsw_pci": "network-interface", + "mlxsw_spectrum": "network-interface", + "ks8842": "network-interface", + "ks8851_common": "network-interface", + "ks8851_par": "network-interface", + "ks8851_spi": "network-interface", + "ksz884x": "network-interface", + "enc28j60": "network-interface", + "encx24j600-regmap": "network-interface", + "encx24j600": "network-interface", + "lan743x": "network-interface", + "mana": "network-interface", + "mscc_ocelot_switch_lib": "network-interface", + "myri10ge": "network-interface", + "natsemi": "network-interface", + "ns83820": "network-interface", + "s2io": "network-interface", + "nfp": "network-interface", + "nixge": "network-interface", + "forcedeth": "network-interface", + "hamachi": "network-interface", + "yellowfin": "network-interface", + "ionic": "network-interface", + "netxen_nic": "network-interface", + "qed": "network-interface", + "qede": "network-interface", + "qla3xxx": "network-interface", + "qlcnic": "network-interface", + "qcom-emac": "network-interface", + "rmnet": "network-interface", + "r6040": "network-interface", + "8139cp": "network-interface", + "8139too": "network-interface", + "atp": "network-interface", + "r8169": "network-interface", + "rocker": "network-interface", + "samsung-sxgbe": "network-interface", + "sfc-falcon": "network-interface", + "sfc": "network-interface", + "sfc-siena": "network-interface", + "sc92031": "network-interface", + "sis190": "network-interface", + "sis900": "network-interface", + "epic100": "network-interface", + "smc91c92_cs": "network-interface", + "smsc911x": "network-interface", + "smsc9420": "network-interface", + "dwmac-generic": "network-interface", + "dwmac-intel": "network-interface", + "dwmac-loongson": "network-interface", + "stmmac-pci": "network-interface", + "stmmac-platform": "network-interface", + "stmmac": "network-interface", + "cassini": "network-interface", + "niu": "network-interface", + "sungem": "network-interface", + "sunhme": "network-interface", + "dwc-xlgmac": "network-interface", + "tehuti": "network-interface", + "tlan": "network-interface", + "mse102x": "network-interface", + "via-rhine": "network-interface", + "via-velocity": "network-interface", + "libwx": "network-interface", + "ngbe": "network-interface", + "txgbe": "network-interface", + "w5100-spi": "network-interface", + "w5100": "network-interface", + "w5300": "network-interface", + "ll_temac": "network-interface", + "xilinx_emac": "network-interface", + "xilinx_emaclite": "network-interface", + "xirc2ps_cs": "network-interface", + "defxx": "network", + "skfp": "network", + "fjes": "network", + "geneve": "network", + "gtp": "network", + "6pack": "network", + "baycom_par": "network", + "baycom_ser_fdx": "network", + "baycom_ser_hdx": "network", + "bpqether": "network", + "hdlcdrv": "network", + "mkiss": "network", + "yam": "network", + "hv_netvsc": "network", + "adf7242": "network", + "at86rf230": "network", + "atusb": "network", + "ca8210": "network", + "cc2520": "network", + "fakelb": "network", + "mac802154_hwsim": "network", + "mcr20a": "network", + "mrf24j40": "network", + "ifb": "network", + "ipvlan": "network", + "ipvtap": "network", + "macsec": "network", + "macvlan": "network", + "macvtap": "network", + "mctp-i2c": "network", + "mctp-serial": "network", + "acpi_mdio": "network", + "fwnode_mdio": "network", + "mdio-bcm-unimac": "network", + "mdio-bitbang": "network", + "mdio-cavium": "network", + "mdio-gpio": "network", + "mdio-i2c": "network", + "mdio-mscc-miim": "network", + "mdio-mvusb": "network", + "mdio-thunder": "network", + "mdio": "network", + "mhi_net": "network", + "mii": "network", + "net_failover": "network", + "netconsole": "network", + "netdevsim": "network", + "nlmon": "network", + "ntb_netdev": "network", + "pcs-altera-tse": "network", + "pcs-lynx": "network", + "pcs-mtk-lynxi": "network", + "pcs_xpcs": "network", + "adin": "network", + "adin1100": "network", + "amd": "network", + "aquantia": "network", + "at803x": "network", + "ax88796b": "network", + "bcm-phy-lib": "network", + "bcm-phy-ptp": "network", + "bcm54140": "network", + "bcm7xxx": "network", + "bcm84881": "network", + "bcm87xx": "network", + "broadcom": "network", + "cicada": "network", + "cortina": "network", + "davicom": "network", + "dp83640": "network", + "dp83822": "network", + "dp83848": "network", + "dp83867": "network", + "dp83869": "network", + "dp83tc811": "network", + "dp83td510": "network", + "et1011c": "network", + "fixed_phy": "network", + "icplus": "network", + "intel-xway": "network", + "libphy": "network", + "lxt": "network", + "marvell-88x2222": "network", + "marvell": "network", + "marvell10g": "network", + "mdio_devres": "network", + "mediatek-ge": "network", + "micrel": "network", + "microchip": "network", + "microchip_t1": "network", + "microchip_t1s": "network", + "motorcomm": "network", + "mscc": "network", + "mxl-gpy": "network", + "national": "network", + "ncn26000": "network", + "nxp-c45-tja11xx": "network", + "nxp-cbtx": "network", + "nxp-tja11xx": "network", + "phylink": "network", + "qsemi": "network", + "realtek": "network", + "sfp": "network", + "smsc": "network", + "spi_ks8995": "network", + "ste10Xp": "network", + "teranetics": "network", + "uPD60620": "network", + "vitesse": "network", + "xilinx_gmii2rgmii": "network", + "plip": "network", + "bsd_comp": "network", + "ppp_async": "network", + "ppp_deflate": "network", + "ppp_generic": "network", + "ppp_mppe": "network", + "ppp_synctty": "network", + "pppoe": "network", + "pppox": "network", + "pptp": "network", + "pse_regulator": "network", + "sb1000": "network", + "slhc": "network", + "slip": "network", + "sungem_phy": "network", + "tap": "network", + "team": "network", + "team_mode_activebackup": "network", + "team_mode_broadcast": "network", + "team_mode_loadbalance": "network", + "team_mode_random": "network", + "team_mode_roundrobin": "network", + "thunderbolt_net": "network", + "tun": "network", + "aqc111": "network", + "asix": "network", + "ax88179_178a": "network", + "catc": "network", + "cdc-phonet": "network", + "cdc_eem": "network", + "cdc_ether": "network", + "cdc_mbim": "network", + "cdc_ncm": "network", + "cdc_subset": "network", + "ch9200": "network", + "cx82310_eth": "network", + "dm9601": "network", + "gl620a": "network", + "hso": "network", + "huawei_cdc_ncm": "network", + "int51x1": "network", + "ipheth": "network", + "kalmia": "network", + "kaweth": "network", + "lan78xx": "network", + "lg-vl600": "network", + "mcs7830": "network", + "net1080": "network", + "pegasus": "network", + "plusb": "network", + "qmi_wwan": "network", + "r8152": "network", + "r8153_ecm": "network", + "rndis_host": "network", + "rtl8150": "network", + "sierra_net": "network", + "smsc75xx": "network", + "smsc95xx": "network", + "sr9700": "network", + "sr9800": "network", + "usbnet": "network", + "zaurus": "network", + "veth": "network", + "virtio_net": "network", + "vmxnet3": "network", + "vrf": "network", + "vsockmon": "network", + "vxlan": "network", + "wireguard": "network", + "adm8211": "wireless", + "ar5523": "wireless", + "ath": "wireless", + "ath10k_core": "wireless", + "ath10k_pci": "wireless", + "ath10k_sdio": "wireless", + "ath10k_usb": "wireless", + "ath11k": "wireless", + "ath11k_ahb": "wireless", + "ath11k_pci": "wireless", + "ath12k": "wireless", + "ath5k": "wireless", + "ath6kl_core": "wireless", + "ath6kl_sdio": "wireless", + "ath6kl_usb": "wireless", + "ath9k": "wireless", + "ath9k_common": "wireless", + "ath9k_htc": "wireless", + "ath9k_hw": "wireless", + "ath9k_pci_owl_loader": "wireless", + "carl9170": "wireless", + "wcn36xx": "wireless", + "wil6210": "wireless", + "at76c50x-usb": "wireless", + "atmel": "wireless", + "atmel_cs": "wireless", + "atmel_pci": "wireless", + "b43": "wireless", + "b43legacy": "wireless", + "brcmfmac-bca": "wireless", + "brcmfmac": "wireless", + "brcmfmac-cyw": "wireless", + "brcmfmac-wcc": "wireless", + "brcmsmac": "wireless", + "brcmutil": "wireless", + "airo": "wireless", + "airo_cs": "wireless", + "ipw2100": "wireless", + "ipw2200": "wireless", + "libipw": "wireless", + "iwl3945": "wireless", + "iwl4965": "wireless", + "iwlegacy": "wireless", + "iwldvm": "wireless", + "iwlwifi": "wireless", + "iwlmvm": "wireless", + "hostap": "wireless", + "hostap_cs": "wireless", + "hostap_pci": "wireless", + "hostap_plx": "wireless", + "orinoco": "wireless", + "orinoco_cs": "wireless", + "orinoco_nortel": "wireless", + "orinoco_pci": "wireless", + "orinoco_plx": "wireless", + "orinoco_tmd": "wireless", + "orinoco_usb": "wireless", + "spectrum_cs": "wireless", + "p54common": "wireless", + "p54pci": "wireless", + "p54spi": "wireless", + "p54usb": "wireless", + "ray_cs": "wireless", + "rndis_wlan": "wireless", + "wl3501_cs": "wireless", + "libertas": "wireless", + "libertas_cs": "wireless", + "libertas_sdio": "wireless", + "libertas_spi": "wireless", + "usb8xxx": "wireless", + "libertas_tf": "wireless", + "libertas_tf_usb": "wireless", + "mwifiex": "wireless", + "mwifiex_pcie": "wireless", + "mwifiex_sdio": "wireless", + "mwifiex_usb": "wireless", + "mwl8k": "wireless", + "mt76-connac-lib": "wireless", + "mt76-sdio": "wireless", + "mt76-usb": "wireless", + "mt76": "wireless", + "mt7603e": "wireless", + "mt7615-common": "wireless", + "mt7615e": "wireless", + "mt7663-usb-sdio-common": "wireless", + "mt7663s": "wireless", + "mt7663u": "wireless", + "mt76x0-common": "wireless", + "mt76x0e": "wireless", + "mt76x0u": "wireless", + "mt76x02-lib": "wireless", + "mt76x02-usb": "wireless", + "mt76x2-common": "wireless", + "mt76x2e": "wireless", + "mt76x2u": "wireless", + "mt7915e": "wireless", + "mt7921-common": "wireless", + "mt7921e": "wireless", + "mt7921s": "wireless", + "mt7921u": "wireless", + "mt7996e": "wireless", + "mt7601u": "wireless", + "wilc1000-sdio": "wireless", + "wilc1000-spi": "wireless", + "wilc1000": "wireless", + "plfxlc": "wireless", + "qtnfmac": "wireless", + "qtnfmac_pcie": "wireless", + "rt2400pci": "wireless", + "rt2500pci": "wireless", + "rt2500usb": "wireless", + "rt2800lib": "wireless", + "rt2800mmio": "wireless", + "rt2800pci": "wireless", + "rt2800usb": "wireless", + "rt2x00lib": "wireless", + "rt2x00mmio": "wireless", + "rt2x00pci": "wireless", + "rt2x00usb": "wireless", + "rt61pci": "wireless", + "rt73usb": "wireless", + "rtl818x_pci": "wireless", + "rtl8187": "wireless", + "rtl8xxxu": "wireless", + "btcoexist": "wireless", + "rtl8188ee": "wireless", + "rtl8192c-common": "wireless", + "rtl8192ce": "wireless", + "rtl8192cu": "wireless", + "rtl8192de": "wireless", + "rtl8192ee": "wireless", + "rtl8192se": "wireless", + "rtl8723ae": "wireless", + "rtl8723be": "wireless", + "rtl8723-common": "wireless", + "rtl8821ae": "wireless", + "rtl_pci": "wireless", + "rtl_usb": "wireless", + "rtlwifi": "wireless", + "rtw88_8723d": "wireless", + "rtw88_8723de": "wireless", + "rtw88_8723du": "wireless", + "rtw88_8821c": "wireless", + "rtw88_8821ce": "wireless", + "rtw88_8821cs": "wireless", + "rtw88_8821cu": "wireless", + "rtw88_8822b": "wireless", + "rtw88_8822be": "wireless", + "rtw88_8822bs": "wireless", + "rtw88_8822bu": "wireless", + "rtw88_8822c": "wireless", + "rtw88_8822ce": "wireless", + "rtw88_8822cs": "wireless", + "rtw88_8822cu": "wireless", + "rtw88_core": "wireless", + "rtw88_pci": "wireless", + "rtw88_sdio": "wireless", + "rtw88_usb": "wireless", + "rtw89_8852a": "wireless", + "rtw89_8852ae": "wireless", + "rtw89_8852b": "wireless", + "rtw89_8852be": "wireless", + "rtw89_8852c": "wireless", + "rtw89_8852ce": "wireless", + "rtw89_core": "wireless", + "rtw89_pci": "wireless", + "rsi_91x": "wireless", + "rsi_sdio": "wireless", + "rsi_usb": "wireless", + "wfx": "wireless", + "cw1200_core": "wireless", + "cw1200_wlan_sdio": "wireless", + "cw1200_wlan_spi": "wireless", + "wl1251": "wireless", + "wl1251_sdio": "wireless", + "wl1251_spi": "wireless", + "wl12xx": "wireless", + "wl18xx": "wireless", + "wlcore": "wireless", + "wlcore_sdio": "wireless", + "mac80211_hwsim": "wireless", + "virt_wifi": "wireless", + "zd1201": "wireless", + "zd1211rw": "wireless", + "iosm": "network", + "mhi_wwan_ctrl": "network", + "mhi_wwan_mbim": "network", + "rpmsg_wwan_ctrl": "network", + "mtk_t7xx": "network", + "wwan_hwsim": "network", + "xen-netback": "network", + "xen-netfront": "network", + "nvme-common": "hdd", + "nvme-core": "hdd", + "nvme-fabrics": "hdd", + "nvme-fc": "hdd", + "nvme-rdma": "hdd", + "nvme-tcp": "hdd", + "nvme": "hdd", + "nvme-fcloop": "hdd", + "nvme-loop": "hdd", + "nvmet-fc": "hdd", + "nvmet-rdma": "hdd", + "nvmet-tcp": "hdd", + "nvmet": "hdd", + "pci-hyperv-intf": "devices", + "pci-hyperv": "devices", + "vmd": "devices", + "acpiphp_ibm": "devices", + "cpcihp_generic": "devices", + "cpcihp_zt5550": "devices", + "pci-pf-stub": "devices", + "aer_inject": "devices", + "switchtec": "devices", + "xen-pcifront": "devices", + "3w-9xxx": "hdd", + "3w-sas": "hdd", + "3w-xxxx": "hdd", + "BusLogic": "hdd", + "a100u2w": "hdd", + "aacraid": "hdd", + "advansys": "hdd", + "aic79xx": "hdd", + "aic7xxx": "hdd", + "aic94xx": "hdd", + "am53c974": "hdd", + "arcmsr": "hdd", + "atp870u": "hdd", + "be2iscsi": "hdd", + "bfa": "hdd", + "bnx2fc": "hdd", + "bnx2i": "hdd", + "ch": "hdd", + "csiostor": "hdd", + "cxgb3i": "hdd", + "cxgb4i": "hdd", + "libcxgbi": "hdd", + "dc395x": "hdd", + "scsi_dh_alua": "hdd", + "scsi_dh_emc": "hdd", + "scsi_dh_hp_sw": "hdd", + "scsi_dh_rdac": "hdd", + "dmx3191d": "hdd", + "efct": "hdd", + "esas2r": "hdd", + "esp_scsi": "hdd", + "fcoe": "hdd", + "libfcoe": "hdd", + "fdomain": "hdd", + "fdomain_pci": "hdd", + "fnic": "hdd", + "hpsa": "hdd", + "hptiop": "hdd", + "hv_storvsc": "hdd", + "imm": "hdd", + "initio": "hdd", + "ipr": "hdd", + "ips": "hdd", + "isci": "hdd", + "iscsi_boot_sysfs": "hdd", + "iscsi_tcp": "hdd", + "libfc": "hdd", + "libiscsi": "hdd", + "libiscsi_tcp": "hdd", + "libsas": "hdd", + "lpfc": "hdd", + "megaraid_mbox": "hdd", + "megaraid_mm": "hdd", + "megaraid_sas": "hdd", + "megaraid": "hdd", + "mpi3mr": "hdd", + "mpt3sas": "hdd", + "mvsas": "hdd", + "mvumi": "hdd", + "myrb": "hdd", + "myrs": "hdd", + "aha152x_cs": "hdd", + "fdomain_cs": "hdd", + "qlogic_cs": "hdd", + "sym53c500_cs": "hdd", + "pm80xx": "hdd", + "pmcraid": "hdd", + "ppa": "hdd", + "qedf": "hdd", + "qedi": "hdd", + "qla1280": "hdd", + "qla2xxx": "hdd", + "tcm_qla2xxx": "hdd", + "qla4xxx": "hdd", + "qlogicfas408": "hdd", + "raid_class": "hdd", + "scsi_debug": "hdd", + "scsi_transport_fc": "hdd", + "scsi_transport_iscsi": "hdd", + "scsi_transport_sas": "hdd", + "scsi_transport_spi": "hdd", + "scsi_transport_srp": "hdd", + "ses": "hdd", + "sg": "hdd", + "smartpqi": "hdd", + "snic": "hdd", + "sr_mod": "hdd", + "st": "hdd", + "stex": "hdd", + "sym53c8xx": "hdd", + "virtio_scsi": "hdd", + "vmw_pvscsi": "hdd", + "wd719x": "hdd", + "xen-scsifront": "hdd", + "cxacru": "usb", + "speedtch": "usb", + "ueagle-atm": "usb", + "usbatm": "usb", + "xusbatm": "usb", + "c67x00": "usb", + "cdns-usb-common": "usb", + "cdns3-pci-wrap": "usb", + "cdns3": "usb", + "cdnsp-udc-pci": "usb", + "ci_hdrc": "usb", + "ci_hdrc_msm": "usb", + "ci_hdrc_pci": "usb", + "ci_hdrc_usb2": "usb", + "cdc-acm": "usb", + "cdc-wdm": "usb", + "usblp": "usb", + "usbtmc": "usb", + "ulpi": "usb", + "usb-conn-gpio": "usb", + "ledtrig-usbport": "usb", + "dwc2": "usb", + "dwc2_pci": "usb", + "dwc3-haps": "usb", + "dwc3-pci": "usb", + "dwc3": "usb", + "u_audio": "usb", + "u_ether": "usb", + "u_serial": "usb", + "usb_f_acm": "usb", + "usb_f_ecm": "usb", + "usb_f_ecm_subset": "usb", + "usb_f_eem": "usb", + "usb_f_fs": "usb", + "usb_f_hid": "usb", + "usb_f_mass_storage": "usb", + "usb_f_midi": "usb", + "usb_f_ncm": "usb", + "usb_f_obex": "usb", + "usb_f_phonet": "usb", + "usb_f_printer": "usb", + "usb_f_rndis": "usb", + "usb_f_serial": "usb", + "usb_f_ss_lb": "usb", + "usb_f_tcm": "usb", + "usb_f_uac1": "usb", + "usb_f_uac1_legacy": "usb", + "usb_f_uac2": "usb", + "usb_f_uvc": "usb", + "g_acm_ms": "usb", + "g_audio": "usb", + "g_cdc": "usb", + "g_dbgp": "usb", + "g_ether": "usb", + "g_ffs": "usb", + "g_hid": "usb", + "g_mass_storage": "usb", + "g_midi": "usb", + "g_multi": "usb", + "g_ncm": "usb", + "g_nokia": "usb", + "g_printer": "usb", + "g_serial": "usb", + "g_webcam": "usb", + "g_zero": "usb", + "gadgetfs": "usb", + "raw_gadget": "usb", + "tcm_usb_gadget": "usb", + "libcomposite": "usb", + "amd5536udc_pci": "usb", + "bdc": "usb", + "dummy_hcd": "usb", + "goku_udc": "usb", + "gr_udc": "usb", + "m66592-udc": "usb", + "max3420_udc": "usb", + "mv_u3d_core": "usb", + "mv_udc": "usb", + "net2272": "usb", + "net2280": "usb", + "pch_udc": "usb", + "pxa27x_udc": "usb", + "r8a66597-udc": "usb", + "snps_udc_core": "usb", + "udc-core": "usb", + "bcma-hcd": "usb", + "ehci-fsl": "usb", + "ehci-platform": "usb", + "fsl-mph-dr-of": "usb", + "isp116x-hcd": "usb", + "max3421-hcd": "usb", + "ohci-platform": "usb", + "oxu210hp-hcd": "usb", + "r8a66597-hcd": "usb", + "sl811-hcd": "usb", + "sl811_cs": "usb", + "ssb-hcd": "usb", + "xen-hcd": "usb", + "xhci-pci-renesas": "usb", + "xhci-pci": "usb", + "xhci-plat-hcd": "usb", + "mdc800": "usb", + "microtek": "usb", + "isp1760": "usb", + "adutux": "usb", + "apple-mfi-fastcharge": "usb", + "appledisplay": "usb", + "chaoskey": "usb", + "cypress_cy7c63": "usb", + "cytherm": "usb", + "ehset": "usb", + "emi26": "usb", + "emi62": "usb", + "ezusb": "usb", + "idmouse": "usb", + "iowarrior": "usb", + "isight_firmware": "usb", + "ldusb": "usb", + "legousbtower": "usb", + "lvstest": "usb", + "sisusbvga": "usb", + "trancevibrator": "usb", + "usb251xb": "usb", + "usb3503": "usb", + "usb4604": "usb", + "usblcd": "usb", + "usbsevseg": "usb", + "usbtest": "usb", + "uss720": "usb", + "yurex": "usb", + "usbmon": "usb", + "musb_hdrc": "usb", + "phy-generic": "usb", + "phy-gpio-vbus-usb": "usb", + "phy-isp1301": "usb", + "phy-tahvo": "usb", + "intel-xhci-usb-role-switch": "usb", + "roles": "usb", + "aircable": "usb", + "ark3116": "usb", + "belkin_sa": "usb", + "ch341": "usb", + "cp210x": "usb", + "cyberjack": "usb", + "cypress_m8": "usb", + "digi_acceleport": "usb", + "empeg": "usb", + "f81232": "usb", + "f81534": "usb", + "ftdi_sio": "usb", + "garmin_gps": "usb", + "io_edgeport": "usb", + "io_ti": "usb", + "ipaq": "usb", + "ipw": "usb", + "ir-usb": "usb", + "iuu_phoenix": "usb", + "keyspan": "usb", + "keyspan_pda": "usb", + "kl5kusb105": "usb", + "kobil_sct": "usb", + "mct_u232": "usb", + "metro-usb": "usb", + "mos7720": "usb", + "mos7840": "usb", + "mxuport": "usb", + "navman": "usb", + "omninet": "usb", + "opticon": "usb", + "option": "usb", + "oti6858": "usb", + "pl2303": "usb", + "qcaux": "usb", + "qcserial": "usb", + "quatech2": "usb", + "safe_serial": "usb", + "sierra": "usb", + "spcp8x5": "usb", + "ssu100": "usb", + "symbolserial": "usb", + "ti_usb_3410_5052": "usb", + "upd78f0730": "usb", + "usb-serial-simple": "usb", + "usb_debug": "usb", + "usb_wwan": "usb", + "visor": "usb", + "whiteheat": "usb", + "wishbone-serial": "usb", + "xr_serial": "usb", + "xsens_mt": "usb", + "uas": "usb", + "ums-alauda": "usb", + "ums-cypress": "usb", + "ums-datafab": "usb", + "ums-eneub6250": "usb", + "ums-freecom": "usb", + "ums-isd200": "usb", + "ums-jumpshot": "usb", + "ums-karma": "usb", + "ums-onetouch": "usb", + "ums-realtek": "usb", + "ums-sddr09": "usb", + "ums-sddr55": "usb", + "ums-usbat": "usb", + "usb-storage": "usb", + "typec_displayport": "usb", + "typec_nvidia": "usb", + "anx7411": "usb", + "hd3ss3220": "usb", + "fsa4480": "usb", + "gpio-sbu-mux": "usb", + "intel_pmc_mux": "usb", + "pi3usb30532": "usb", + "rt1719": "usb", + "stusb160x": "usb", + "fusb302": "usb", + "tcpci": "usb", + "tcpci_maxim": "usb", + "tcpci_mt6360": "usb", + "tcpci_mt6370": "usb", + "tcpci_rt1711h": "usb", + "tcpm": "usb", + "typec_wcove": "usb", + "tps6598x": "usb", + "typec": "usb", + "typec_ucsi": "usb", + "ucsi_acpi": "usb", + "ucsi_ccg": "usb", + "ucsi_stm32g0": "usb", + "wusb3801": "usb", + "usbip-core": "usb", + "usbip-host": "usb", + "usbip-vudc": "usb", + "vhci-hcd": "usb", + "9p": "media-floppy", + "affs": "media-floppy", + "kafs": "media-floppy", + "befs": "media-floppy", + "btrfs": "media-floppy", + "cachefiles": "media-floppy", + "ceph": "media-floppy", + "coda": "media-floppy", + "cramfs": "media-floppy", + "dlm": "media-floppy", + "ecryptfs": "media-floppy", + "erofs": "media-floppy", + "exfat": "media-floppy", + "ext4": "media-floppy", + "f2fs": "media-floppy", + "fat": "media-floppy", + "msdos": "media-floppy", + "vfat": "media-floppy", + "fscache": "media-floppy", + "cuse": "media-floppy", + "fuse": "media-floppy", + "virtiofs": "media-floppy", + "gfs2": "media-floppy", + "hfs": "media-floppy", + "hfsplus": "media-floppy", + "isofs": "media-floppy", + "jbd2": "media-floppy", + "jffs2": "media-floppy", + "jfs": "media-floppy", + "lockd": "media-floppy", + "mbcache": "media-floppy", + "minix": "media-floppy", + "netfs": "media-floppy", + "blocklayoutdriver": "media-floppy", + "nfs_layout_nfsv41_files": "media-floppy", + "nfs_layout_flexfiles": "media-floppy", + "nfs": "media-floppy", + "nfsv2": "media-floppy", + "nfsv3": "media-floppy", + "nfsv4": "media-floppy", + "grace": "media-floppy", + "nfs_acl": "media-floppy", + "nfsd": "media-floppy", + "nilfs2": "media-floppy", + "mac-celtic": "media-floppy", + "mac-centeuro": "media-floppy", + "mac-croatian": "media-floppy", + "mac-cyrillic": "media-floppy", + "mac-gaelic": "media-floppy", + "mac-greek": "media-floppy", + "mac-iceland": "media-floppy", + "mac-inuit": "media-floppy", + "mac-roman": "media-floppy", + "mac-romanian": "media-floppy", + "mac-turkish": "media-floppy", + "nls_cp1250": "media-floppy", + "nls_cp1251": "media-floppy", + "nls_cp1255": "media-floppy", + "nls_cp737": "media-floppy", + "nls_cp775": "media-floppy", + "nls_cp850": "media-floppy", + "nls_cp852": "media-floppy", + "nls_cp855": "media-floppy", + "nls_cp857": "media-floppy", + "nls_cp860": "media-floppy", + "nls_cp861": "media-floppy", + "nls_cp862": "media-floppy", + "nls_cp863": "media-floppy", + "nls_cp864": "media-floppy", + "nls_cp865": "media-floppy", + "nls_cp866": "media-floppy", + "nls_cp869": "media-floppy", + "nls_cp874": "media-floppy", + "nls_cp932": "media-floppy", + "nls_cp936": "media-floppy", + "nls_cp949": "media-floppy", + "nls_cp950": "media-floppy", + "nls_euc-jp": "media-floppy", + "nls_iso8859-1": "media-floppy", + "nls_iso8859-13": "media-floppy", + "nls_iso8859-14": "media-floppy", + "nls_iso8859-15": "media-floppy", + "nls_iso8859-2": "media-floppy", + "nls_iso8859-3": "media-floppy", + "nls_iso8859-4": "media-floppy", + "nls_iso8859-5": "media-floppy", + "nls_iso8859-6": "media-floppy", + "nls_iso8859-7": "media-floppy", + "nls_iso8859-9": "media-floppy", + "nls_koi8-r": "media-floppy", + "nls_koi8-ru": "media-floppy", + "nls_koi8-u": "media-floppy", + "nls_utf8": "media-floppy", + "ntfs3": "media-floppy", + "ocfs2_nodemanager": "media-floppy", + "ocfs2_dlm": "media-floppy", + "ocfs2_dlmfs": "media-floppy", + "ocfs2": "media-floppy", + "ocfs2_stack_o2cb": "media-floppy", + "ocfs2_stack_user": "media-floppy", + "ocfs2_stackglue": "media-floppy", + "omfs": "media-floppy", + "orangefs": "media-floppy", + "overlay": "media-floppy", + "pstore_blk": "media-floppy", + "pstore_zone": "media-floppy", + "ramoops": "media-floppy", + "quota_tree": "media-floppy", + "quota_v1": "media-floppy", + "quota_v2": "media-floppy", + "reiserfs": "media-floppy", + "romfs": "media-floppy", + "cifs": "media-floppy", + "cifs_arc4": "media-floppy", + "cifs_md4": "media-floppy", + "ksmbd": "media-floppy", + "squashfs": "media-floppy", + "ubifs": "media-floppy", + "udf": "media-floppy", + "ufs": "media-floppy", + "vboxsf": "media-floppy", + "xfs": "media-floppy", + "zonefs": "media-floppy", + "6lowpan": "network-connections", + "nhc_dest": "network-connections", + "nhc_fragment": "network-connections", + "nhc_ghc_ext_dest": "network-connections", + "nhc_ghc_ext_frag": "network-connections", + "nhc_ghc_ext_hop": "network-connections", + "nhc_ghc_ext_route": "network-connections", + "nhc_ghc_icmpv6": "network-connections", + "nhc_ghc_udp": "network-connections", + "nhc_hop": "network-connections", + "nhc_ipv6": "network-connections", + "nhc_mobility": "network-connections", + "nhc_routing": "network-connections", + "nhc_udp": "network-connections", + "fddi": "network-connections", + "garp": "network-connections", + "mrp": "network-connections", + "p8022": "network-connections", + "psnap": "network-connections", + "stp": "network-connections", + "8021q": "network-connections", + "9pnet": "network-connections", + "9pnet_fd": "network-connections", + "9pnet_rdma": "network-connections", + "9pnet_virtio": "network-connections", + "9pnet_xen": "network-connections", + "appletalk": "network-connections", + "atm": "network-connections", + "br2684": "network-connections", + "clip": "network-connections", + "lec": "network-connections", + "mpoa": "network-connections", + "pppoatm": "network-connections", + "ax25": "network-connections", + "batman-adv": "network-connections", + "bluetooth": "bluetooth", + "bluetooth_6lowpan": "bluetooth", + "bnep": "bluetooth", + "cmtp": "bluetooth", + "hidp": "bluetooth", + "rfcomm": "bluetooth", + "br_netfilter": "network-connections", + "bridge": "network-connections", + "ebt_802_3": "network-connections", + "ebt_among": "network-connections", + "ebt_arp": "network-connections", + "ebt_arpreply": "network-connections", + "ebt_dnat": "network-connections", + "ebt_ip": "network-connections", + "ebt_ip6": "network-connections", + "ebt_limit": "network-connections", + "ebt_log": "network-connections", + "ebt_mark": "network-connections", + "ebt_mark_m": "network-connections", + "ebt_nflog": "network-connections", + "ebt_pkttype": "network-connections", + "ebt_redirect": "network-connections", + "ebt_snat": "network-connections", + "ebt_stp": "network-connections", + "ebt_vlan": "network-connections", + "ebtable_broute": "network-connections", + "ebtable_filter": "network-connections", + "ebtable_nat": "network-connections", + "ebtables": "network-connections", + "nf_conntrack_bridge": "network-connections", + "nft_meta_bridge": "network-connections", + "nft_reject_bridge": "network-connections", + "can-bcm": "network-connections", + "can-gw": "network-connections", + "can-isotp": "network-connections", + "can-raw": "network-connections", + "can": "network-connections", + "can-j1939": "network-connections", + "libceph": "network-connections", + "failover": "network-connections", + "pktgen": "network-connections", + "selftests": "network-connections", + "dns_resolver": "network-connections", + "dsa_core": "network-connections", + "tag_ar9331": "network-connections", + "tag_brcm": "network-connections", + "tag_dsa": "network-connections", + "tag_gswip": "network-connections", + "tag_hellcreek": "network-connections", + "tag_ksz": "network-connections", + "tag_lan9303": "network-connections", + "tag_mtk": "network-connections", + "tag_none": "network-connections", + "tag_ocelot": "network-connections", + "tag_ocelot_8021q": "network-connections", + "tag_qca": "network-connections", + "tag_rtl4_a": "network-connections", + "tag_rtl8_4": "network-connections", + "tag_rzn1_a5psw": "network-connections", + "tag_sja1105": "network-connections", + "tag_trailer": "network-connections", + "tag_xrs700x": "network-connections", + "hsr": "network-connections", + "ieee802154_6lowpan": "network-connections", + "ieee802154": "network-connections", + "ieee802154_socket": "network-connections", + "ife": "network-connections", + "ah4": "network-connections", + "esp4": "network-connections", + "esp4_offload": "network-connections", + "fou": "network-connections", + "gre": "network-connections", + "inet_diag": "network-connections", + "ip_gre": "network-connections", + "ip_tunnel": "network-connections", + "ip_vti": "network-connections", + "ipcomp": "network-connections", + "ipip": "network-connections", + "arp_tables": "network-connections", + "arpt_mangle": "network-connections", + "arptable_filter": "network-connections", + "ip_tables": "network-connections", + "ipt_ECN": "network-connections", + "ipt_REJECT": "network-connections", + "ipt_SYNPROXY": "network-connections", + "ipt_ah": "network-connections", + "ipt_rpfilter": "network-connections", + "iptable_filter": "network-connections", + "iptable_mangle": "network-connections", + "iptable_nat": "network-connections", + "iptable_raw": "network-connections", + "iptable_security": "network-connections", + "nf_defrag_ipv4": "network-connections", + "nf_dup_ipv4": "network-connections", + "nf_nat_h323": "network-connections", + "nf_nat_pptp": "network-connections", + "nf_nat_snmp_basic": "network-connections", + "nf_reject_ipv4": "network-connections", + "nf_socket_ipv4": "network-connections", + "nf_tproxy_ipv4": "network-connections", + "nft_dup_ipv4": "network-connections", + "nft_fib_ipv4": "network-connections", + "nft_reject_ipv4": "network-connections", + "raw_diag": "network-connections", + "tcp_bbr": "network-connections", + "tcp_bic": "network-connections", + "tcp_cdg": "network-connections", + "tcp_dctcp": "network-connections", + "tcp_diag": "network-connections", + "tcp_highspeed": "network-connections", + "tcp_htcp": "network-connections", + "tcp_hybla": "network-connections", + "tcp_illinois": "network-connections", + "tcp_lp": "network-connections", + "tcp_nv": "network-connections", + "tcp_scalable": "network-connections", + "tcp_vegas": "network-connections", + "tcp_veno": "network-connections", + "tcp_westwood": "network-connections", + "tcp_yeah": "network-connections", + "tunnel4": "network-connections", + "udp_diag": "network-connections", + "udp_tunnel": "network-connections", + "xfrm4_tunnel": "network-connections", + "ah6": "network-connections", + "esp6": "network-connections", + "esp6_offload": "network-connections", + "fou6": "network-connections", + "ila": "network-connections", + "ip6_gre": "network-connections", + "ip6_tunnel": "network-connections", + "ip6_udp_tunnel": "network-connections", + "ip6_vti": "network-connections", + "ipcomp6": "network-connections", + "mip6": "network-connections", + "ip6_tables": "network-connections", + "ip6t_NPT": "network-connections", + "ip6t_REJECT": "network-connections", + "ip6t_SYNPROXY": "network-connections", + "ip6t_ah": "network-connections", + "ip6t_eui64": "network-connections", + "ip6t_frag": "network-connections", + "ip6t_hbh": "network-connections", + "ip6t_ipv6header": "network-connections", + "ip6t_mh": "network-connections", + "ip6t_rpfilter": "network-connections", + "ip6t_rt": "network-connections", + "ip6t_srh": "network-connections", + "ip6table_filter": "network-connections", + "ip6table_mangle": "network-connections", + "ip6table_nat": "network-connections", + "ip6table_raw": "network-connections", + "ip6table_security": "network-connections", + "nf_defrag_ipv6": "network-connections", + "nf_dup_ipv6": "network-connections", + "nf_reject_ipv6": "network-connections", + "nf_socket_ipv6": "network-connections", + "nf_tproxy_ipv6": "network-connections", + "nft_dup_ipv6": "network-connections", + "nft_fib_ipv6": "network-connections", + "nft_reject_ipv6": "network-connections", + "sit": "network-connections", + "tunnel6": "network-connections", + "xfrm6_tunnel": "network-connections", + "kcm": "network-connections", + "af_key": "network-connections", + "l2tp_core": "network-connections", + "l2tp_debugfs": "network-connections", + "l2tp_eth": "network-connections", + "l2tp_ip": "network-connections", + "l2tp_ip6": "network-connections", + "l2tp_netlink": "network-connections", + "l2tp_ppp": "network-connections", + "llc": "network-connections", + "llc2": "network-connections", + "mac80211": "network-connections", + "mac802154": "network-connections", + "mpls_gso": "network-connections", + "mpls_iptunnel": "network-connections", + "mpls_router": "network-connections", + "mptcp_diag": "network-connections", + "ip_set": "network-connections", + "ip_set_bitmap_ip": "network-connections", + "ip_set_bitmap_ipmac": "network-connections", + "ip_set_bitmap_port": "network-connections", + "ip_set_hash_ip": "network-connections", + "ip_set_hash_ipmac": "network-connections", + "ip_set_hash_ipmark": "network-connections", + "ip_set_hash_ipport": "network-connections", + "ip_set_hash_ipportip": "network-connections", + "ip_set_hash_ipportnet": "network-connections", + "ip_set_hash_mac": "network-connections", + "ip_set_hash_net": "network-connections", + "ip_set_hash_netiface": "network-connections", + "ip_set_hash_netnet": "network-connections", + "ip_set_hash_netport": "network-connections", + "ip_set_hash_netportnet": "network-connections", + "ip_set_list_set": "network-connections", + "ip_vs": "network-connections", + "ip_vs_dh": "network-connections", + "ip_vs_fo": "network-connections", + "ip_vs_ftp": "network-connections", + "ip_vs_lblc": "network-connections", + "ip_vs_lblcr": "network-connections", + "ip_vs_lc": "network-connections", + "ip_vs_mh": "network-connections", + "ip_vs_nq": "network-connections", + "ip_vs_ovf": "network-connections", + "ip_vs_pe_sip": "network-connections", + "ip_vs_rr": "network-connections", + "ip_vs_sed": "network-connections", + "ip_vs_sh": "network-connections", + "ip_vs_twos": "network-connections", + "ip_vs_wlc": "network-connections", + "ip_vs_wrr": "network-connections", + "nf_conncount": "network-connections", + "nf_conntrack": "network-connections", + "nf_conntrack_amanda": "network-connections", + "nf_conntrack_broadcast": "network-connections", + "nf_conntrack_ftp": "network-connections", + "nf_conntrack_h323": "network-connections", + "nf_conntrack_irc": "network-connections", + "nf_conntrack_netbios_ns": "network-connections", + "nf_conntrack_netlink": "network-connections", + "nf_conntrack_pptp": "network-connections", + "nf_conntrack_sane": "network-connections", + "nf_conntrack_sip": "network-connections", + "nf_conntrack_snmp": "network-connections", + "nf_conntrack_tftp": "network-connections", + "nf_dup_netdev": "network-connections", + "nf_flow_table": "network-connections", + "nf_flow_table_inet": "network-connections", + "nf_log_syslog": "network-connections", + "nf_nat": "network-connections", + "nf_nat_amanda": "network-connections", + "nf_nat_ftp": "network-connections", + "nf_nat_irc": "network-connections", + "nf_nat_sip": "network-connections", + "nf_nat_tftp": "network-connections", + "nf_synproxy_core": "network-connections", + "nf_tables": "network-connections", + "nfnetlink": "network-connections", + "nfnetlink_acct": "network-connections", + "nfnetlink_cthelper": "network-connections", + "nfnetlink_cttimeout": "network-connections", + "nfnetlink_hook": "network-connections", + "nfnetlink_log": "network-connections", + "nfnetlink_osf": "network-connections", + "nfnetlink_queue": "network-connections", + "nft_chain_nat": "network-connections", + "nft_compat": "network-connections", + "nft_connlimit": "network-connections", + "nft_ct": "network-connections", + "nft_dup_netdev": "network-connections", + "nft_fib": "network-connections", + "nft_fib_inet": "network-connections", + "nft_fib_netdev": "network-connections", + "nft_flow_offload": "network-connections", + "nft_fwd_netdev": "network-connections", + "nft_hash": "network-connections", + "nft_limit": "network-connections", + "nft_log": "network-connections", + "nft_masq": "network-connections", + "nft_nat": "network-connections", + "nft_numgen": "network-connections", + "nft_osf": "network-connections", + "nft_queue": "network-connections", + "nft_quota": "network-connections", + "nft_redir": "network-connections", + "nft_reject": "network-connections", + "nft_reject_inet": "network-connections", + "nft_reject_netdev": "network-connections", + "nft_socket": "network-connections", + "nft_synproxy": "network-connections", + "nft_tproxy": "network-connections", + "nft_tunnel": "network-connections", + "nft_xfrm": "network-connections", + "x_tables": "network-connections", + "xt_AUDIT": "network-connections", + "xt_CHECKSUM": "network-connections", + "xt_CLASSIFY": "network-connections", + "xt_CONNSECMARK": "network-connections", + "xt_CT": "network-connections", + "xt_DSCP": "network-connections", + "xt_HL": "network-connections", + "xt_HMARK": "network-connections", + "xt_IDLETIMER": "network-connections", + "xt_LED": "network-connections", + "xt_LOG": "network-connections", + "xt_MASQUERADE": "network-connections", + "xt_NETMAP": "network-connections", + "xt_NFLOG": "network-connections", + "xt_NFQUEUE": "network-connections", + "xt_RATEEST": "network-connections", + "xt_REDIRECT": "network-connections", + "xt_SECMARK": "network-connections", + "xt_TCPMSS": "network-connections", + "xt_TCPOPTSTRIP": "network-connections", + "xt_TEE": "network-connections", + "xt_TPROXY": "network-connections", + "xt_TRACE": "network-connections", + "xt_addrtype": "network-connections", + "xt_bpf": "network-connections", + "xt_cgroup": "network-connections", + "xt_cluster": "network-connections", + "xt_comment": "network-connections", + "xt_connbytes": "network-connections", + "xt_connlabel": "network-connections", + "xt_connlimit": "network-connections", + "xt_connmark": "network-connections", + "xt_conntrack": "network-connections", + "xt_cpu": "network-connections", + "xt_dccp": "network-connections", + "xt_devgroup": "network-connections", + "xt_dscp": "network-connections", + "xt_ecn": "network-connections", + "xt_esp": "network-connections", + "xt_hashlimit": "network-connections", + "xt_helper": "network-connections", + "xt_hl": "network-connections", + "xt_ipcomp": "network-connections", + "xt_iprange": "network-connections", + "xt_ipvs": "network-connections", + "xt_l2tp": "network-connections", + "xt_length": "network-connections", + "xt_limit": "network-connections", + "xt_mac": "network-connections", + "xt_mark": "network-connections", + "xt_multiport": "network-connections", + "xt_nat": "network-connections", + "xt_nfacct": "network-connections", + "xt_osf": "network-connections", + "xt_owner": "network-connections", + "xt_physdev": "network-connections", + "xt_pkttype": "network-connections", + "xt_policy": "network-connections", + "xt_quota": "network-connections", + "xt_rateest": "network-connections", + "xt_realm": "network-connections", + "xt_recent": "network-connections", + "xt_sctp": "network-connections", + "xt_set": "network-connections", + "xt_socket": "network-connections", + "xt_state": "network-connections", + "xt_statistic": "network-connections", + "xt_string": "network-connections", + "xt_tcpmss": "network-connections", + "xt_tcpudp": "network-connections", + "xt_time": "network-connections", + "xt_u32": "network-connections", + "netlink_diag": "network-connections", + "netrom": "network-connections", + "hci": "network-connections", + "nci": "network-connections", + "nci_spi": "network-connections", + "nci_uart": "network-connections", + "nfc": "network-connections", + "nfc_digital": "network-connections", + "nsh": "network-connections", + "openvswitch": "network-connections", + "vport-geneve": "network-connections", + "vport-gre": "network-connections", + "vport-vxlan": "network-connections", + "af_packet_diag": "network-connections", + "phonet": "network-connections", + "pn_pep": "network-connections", + "psample": "network-connections", + "qrtr-mhi": "network-connections", + "qrtr-smd": "network-connections", + "qrtr-tun": "network-connections", + "qrtr": "network-connections", + "rds": "network-connections", + "rds_rdma": "network-connections", + "rds_tcp": "network-connections", + "rfkill-gpio": "network-connections", + "rfkill": "network-connections", + "rose": "network-connections", + "rxrpc": "network-connections", + "act_bpf": "network-connections", + "act_connmark": "network-connections", + "act_csum": "network-connections", + "act_ct": "network-connections", + "act_ctinfo": "network-connections", + "act_gact": "network-connections", + "act_gate": "network-connections", + "act_ife": "network-connections", + "act_ipt": "network-connections", + "act_meta_mark": "network-connections", + "act_meta_skbprio": "network-connections", + "act_meta_skbtcindex": "network-connections", + "act_mirred": "network-connections", + "act_mpls": "network-connections", + "act_nat": "network-connections", + "act_pedit": "network-connections", + "act_police": "network-connections", + "act_sample": "network-connections", + "act_simple": "network-connections", + "act_skbedit": "network-connections", + "act_skbmod": "network-connections", + "act_tunnel_key": "network-connections", + "act_vlan": "network-connections", + "cls_basic": "network-connections", + "cls_bpf": "network-connections", + "cls_cgroup": "network-connections", + "cls_flow": "network-connections", + "cls_flower": "network-connections", + "cls_fw": "network-connections", + "cls_matchall": "network-connections", + "cls_route": "network-connections", + "cls_u32": "network-connections", + "em_canid": "network-connections", + "em_cmp": "network-connections", + "em_ipset": "network-connections", + "em_ipt": "network-connections", + "em_meta": "network-connections", + "em_nbyte": "network-connections", + "em_text": "network-connections", + "em_u32": "network-connections", + "sch_cake": "network-connections", + "sch_cbs": "network-connections", + "sch_choke": "network-connections", + "sch_codel": "network-connections", + "sch_drr": "network-connections", + "sch_etf": "network-connections", + "sch_ets": "network-connections", + "sch_fq": "network-connections", + "sch_fq_pie": "network-connections", + "sch_gred": "network-connections", + "sch_hfsc": "network-connections", + "sch_hhf": "network-connections", + "sch_htb": "network-connections", + "sch_ingress": "network-connections", + "sch_mqprio": "network-connections", + "sch_mqprio_lib": "network-connections", + "sch_multiq": "network-connections", + "sch_netem": "network-connections", + "sch_pie": "network-connections", + "sch_plug": "network-connections", + "sch_prio": "network-connections", + "sch_qfq": "network-connections", + "sch_red": "network-connections", + "sch_sfb": "network-connections", + "sch_sfq": "network-connections", + "sch_skbprio": "network-connections", + "sch_taprio": "network-connections", + "sch_tbf": "network-connections", + "sch_teql": "network-connections", + "sctp": "network-connections", + "sctp_diag": "network-connections", + "smc": "network-connections", + "smc_diag": "network-connections", + "auth_rpcgss": "network-connections", + "rpcsec_gss_krb5": "network-connections", + "sunrpc": "network-connections", + "rpcrdma": "network-connections", + "diag": "network-connections", + "tipc": "network-connections", + "tls": "network-connections", + "unix_diag": "network-connections", + "hv_sock": "network-connections", + "vmw_vsock_virtio_transport": "network-connections", + "vmw_vsock_virtio_transport_common": "network-connections", + "vmw_vsock_vmci_transport": "network-connections", + "vsock": "network-connections", + "vsock_diag": "network-connections", + "vsock_loopback": "network-connections", + "cfg80211": "wireless", + "lib80211": "wireless", + "lib80211_crypt_ccmp": "wireless", + "lib80211_crypt_tkip": "wireless", + "lib80211_crypt_wep": "wireless", + "xsk_diag": "network-connections", + "xfrm_interface": "network-connections", + "xfrm_ipcomp": "network-connections", + "ac97_bus": "audio", + "snd-mixer-oss": "audio", + "snd-pcm-oss": "audio", + "snd-seq-oss": "audio", + "snd-seq-dummy": "audio", + "snd-seq-midi-emul": "audio", + "snd-seq-midi-event": "audio", + "snd-seq-midi": "audio", + "snd-seq-virmidi": "audio", + "snd-seq": "audio", + "snd-compress": "audio", + "snd-ctl-led": "audio", + "snd-hrtimer": "audio", + "snd-hwdep": "audio", + "snd-pcm-dmaengine": "audio", + "snd-pcm": "audio", + "snd-rawmidi": "audio", + "snd-seq-device": "audio", + "snd-timer": "audio", + "snd": "audio", + "snd-mpu401-uart": "audio", + "snd-mpu401": "audio", + "snd-opl3-lib": "audio", + "snd-opl3-synth": "audio", + "snd-aloop": "audio", + "snd-dummy": "audio", + "snd-mtpav": "audio", + "snd-mts64": "audio", + "snd-portman2x4": "audio", + "snd-serial-u16550": "audio", + "snd-virmidi": "audio", + "snd-vx-lib": "audio", + "snd-bebob": "audio", + "snd-dice": "audio", + "snd-firewire-digi00x": "audio", + "snd-fireface": "audio", + "snd-fireworks": "audio", + "snd-firewire-motu": "audio", + "snd-oxfw": "audio", + "snd-firewire-lib": "audio", + "snd-isight": "audio", + "snd-firewire-tascam": "audio", + "snd-hda-ext-core": "audio", + "snd-hda-core": "audio", + "snd-intel-dspcfg": "audio", + "snd-intel-sdw-acpi": "audio", + "snd-ak4113": "audio", + "snd-ak4114": "audio", + "snd-ak4117": "audio", + "snd-ak4xxx-adda": "audio", + "snd-pt2258": "audio", + "snd-cs8427": "audio", + "snd-i2c": "audio", + "snd-sb-common": "audio", + "snd-ac97-codec": "audio", + "snd-ali5451": "audio", + "snd-asihpi": "audio", + "snd-au8810": "audio", + "snd-au8820": "audio", + "snd-au8830": "audio", + "snd-aw2": "audio", + "snd-ca0106": "audio", + "snd-cs46xx": "audio", + "snd-ctxfi": "audio", + "snd-darla20": "audio", + "snd-darla24": "audio", + "snd-echo3g": "audio", + "snd-gina20": "audio", + "snd-gina24": "audio", + "snd-indigo": "audio", + "snd-indigodj": "audio", + "snd-indigodjx": "audio", + "snd-indigoio": "audio", + "snd-indigoiox": "audio", + "snd-layla20": "audio", + "snd-layla24": "audio", + "snd-mia": "audio", + "snd-mona": "audio", + "snd-emu10k1-synth": "audio", + "snd-emu10k1": "audio", + "snd-emu10k1x": "audio", + "snd-hda-codec-analog": "audio", + "snd-hda-codec-ca0110": "audio", + "snd-hda-codec-ca0132": "audio", + "snd-hda-codec-cirrus": "audio", + "snd-hda-codec-cmedia": "audio", + "snd-hda-codec-conexant": "audio", + "snd-hda-codec-cs8409": "audio", + "snd-hda-codec-generic": "audio", + "snd-hda-codec-hdmi": "audio", + "snd-hda-codec-idt": "audio", + "snd-hda-codec-realtek": "audio", + "snd-hda-codec-si3054": "audio", + "snd-hda-codec-via": "audio", + "snd-hda-codec": "audio", + "snd-hda-cs-dsp-ctls": "audio", + "snd-hda-intel": "audio", + "snd-hda-scodec-cs35l41-i2c": "audio", + "snd-hda-scodec-cs35l41-spi": "audio", + "snd-hda-scodec-cs35l41": "audio", + "snd-ice1712": "audio", + "snd-ice1724": "audio", + "snd-ice17xx-ak4xxx": "audio", + "snd-korg1212": "audio", + "snd-lola": "audio", + "snd-lx6464es": "audio", + "snd-mixart": "audio", + "snd-nm256": "audio", + "snd-oxygen-lib": "audio", + "snd-oxygen": "audio", + "snd-virtuoso": "audio", + "snd-pcxhr": "audio", + "snd-riptide": "audio", + "snd-hdsp": "audio", + "snd-hdspm": "audio", + "snd-rme9652": "audio", + "snd-ad1889": "audio", + "snd-als300": "audio", + "snd-als4000": "audio", + "snd-atiixp-modem": "audio", + "snd-atiixp": "audio", + "snd-azt3328": "audio", + "snd-bt87x": "audio", + "snd-cmipci": "audio", + "snd-cs4281": "audio", + "snd-ens1370": "audio", + "snd-ens1371": "audio", + "snd-es1938": "audio", + "snd-es1968": "audio", + "snd-fm801": "audio", + "snd-intel8x0": "audio", + "snd-intel8x0m": "audio", + "snd-maestro3": "audio", + "snd-rme32": "audio", + "snd-rme96": "audio", + "snd-sonicvibes": "audio", + "snd-via82xx-modem": "audio", + "snd-via82xx": "audio", + "snd-trident": "audio", + "snd-vx222": "audio", + "snd-ymfpci": "audio", + "snd-pdaudiocf": "audio", + "snd-vxpocket": "audio", + "snd-soc-adi-axi-i2s": "audio", + "snd-soc-adi-axi-spdif": "audio", + "snd-acp-i2s": "audio", + "snd-acp-legacy-mach": "audio", + "snd-acp-mach": "audio", + "snd-acp-pci": "audio", + "snd-acp-pcm": "audio", + "snd-acp-pdm": "audio", + "snd-acp-rembrandt": "audio", + "snd-acp-renoir": "audio", + "snd-acp-sof-mach": "audio", + "acp_audio_dma": "audio", + "snd-pci-ps": "audio", + "snd-ps-pdm-dma": "audio", + "snd-soc-ps-mach": "audio", + "snd-acp3x-i2s": "audio", + "snd-acp3x-pcm-dma": "audio", + "snd-pci-acp3x": "audio", + "snd-acp3x-pdm-dma": "audio", + "snd-acp3x-rn": "audio", + "snd-rn-pci-acp3x": "audio", + "snd-rpl-pci-acp6x": "audio", + "snd-acp-config": "audio", + "snd-soc-acp-da7219mx98357-mach": "audio", + "snd-soc-acp-es8336-mach": "audio", + "snd-soc-acp-rt5645-mach": "audio", + "snd-soc-acp-rt5682-mach": "audio", + "snd-acp5x-i2s": "audio", + "snd-acp5x-pcm-dma": "audio", + "snd-pci-acp5x": "audio", + "snd-soc-acp5x-mach": "audio", + "snd-acp6x-pdm-dma": "audio", + "snd-pci-acp6x": "audio", + "snd-soc-acp6x-mach": "audio", + "snd-soc-ac97": "audio", + "snd-soc-adau-utils": "audio", + "snd-soc-adau1372-i2c": "audio", + "snd-soc-adau1372-spi": "audio", + "snd-soc-adau1372": "audio", + "snd-soc-adau1701": "audio", + "snd-soc-adau1761-i2c": "audio", + "snd-soc-adau1761-spi": "audio", + "snd-soc-adau1761": "audio", + "snd-soc-adau17x1": "audio", + "snd-soc-adau7002": "audio", + "snd-soc-adau7118-hw": "audio", + "snd-soc-adau7118-i2c": "audio", + "snd-soc-adau7118": "audio", + "snd-soc-ak4104": "audio", + "snd-soc-ak4118": "audio", + "snd-soc-ak4375": "audio", + "snd-soc-ak4458": "audio", + "snd-soc-ak4554": "audio", + "snd-soc-ak4613": "audio", + "snd-soc-ak4642": "audio", + "snd-soc-ak5386": "audio", + "snd-soc-ak5558": "audio", + "snd-soc-alc5623": "audio", + "snd-soc-arizona": "audio", + "snd-soc-aw8738": "audio", + "snd-soc-aw88395-lib": "audio", + "snd-soc-aw88395": "audio", + "snd-soc-bd28623": "audio", + "snd-soc-cros-ec-codec": "audio", + "snd-soc-cs35l32": "audio", + "snd-soc-cs35l33": "audio", + "snd-soc-cs35l34": "audio", + "snd-soc-cs35l35": "audio", + "snd-soc-cs35l36": "audio", + "snd-soc-cs35l41-i2c": "audio", + "snd-soc-cs35l41-lib": "audio", + "snd-soc-cs35l41-spi": "audio", + "snd-soc-cs35l41": "audio", + "snd-soc-cs35l45-i2c": "audio", + "snd-soc-cs35l45-spi": "audio", + "snd-soc-cs35l45": "audio", + "snd-soc-cs35l56-i2c": "audio", + "snd-soc-cs35l56-sdw": "audio", + "snd-soc-cs35l56-shared": "audio", + "snd-soc-cs35l56-spi": "audio", + "snd-soc-cs35l56": "audio", + "snd-soc-cs4234": "audio", + "snd-soc-cs4265": "audio", + "snd-soc-cs4270": "audio", + "snd-soc-cs4271-i2c": "audio", + "snd-soc-cs4271-spi": "audio", + "snd-soc-cs4271": "audio", + "snd-soc-cs42l42-i2c": "audio", + "snd-soc-cs42l42-sdw": "audio", + "snd-soc-cs42l42": "audio", + "snd-soc-cs42l51-i2c": "audio", + "snd-soc-cs42l51": "audio", + "snd-soc-cs42l52": "audio", + "snd-soc-cs42l56": "audio", + "snd-soc-cs42l73": "audio", + "snd-soc-cs42l83-i2c": "audio", + "snd-soc-cs42xx8-i2c": "audio", + "snd-soc-cs42xx8": "audio", + "snd-soc-cs43130": "audio", + "snd-soc-cs4341": "audio", + "snd-soc-cs4349": "audio", + "snd-soc-cs53l30": "audio", + "snd-soc-cx2072x": "audio", + "snd-soc-da7213": "audio", + "snd-soc-da7219": "audio", + "snd-soc-dmic": "audio", + "snd-soc-es7134": "audio", + "snd-soc-es7241": "audio", + "snd-soc-es8316": "audio", + "snd-soc-es8326": "audio", + "snd-soc-es8328-i2c": "audio", + "snd-soc-es8328-spi": "audio", + "snd-soc-es8328": "audio", + "snd-soc-gtm601": "audio", + "snd-soc-hda-codec": "audio", + "snd-soc-hdac-hda": "audio", + "snd-soc-hdac-hdmi": "audio", + "snd-soc-hdmi-codec": "audio", + "snd-soc-ics43432": "audio", + "snd-soc-idt821034": "audio", + "snd-soc-inno-rk3036": "audio", + "snd-soc-lpass-macro-common": "audio", + "snd-soc-lpass-rx-macro": "audio", + "snd-soc-lpass-tx-macro": "audio", + "snd-soc-lpass-va-macro": "audio", + "snd-soc-lpass-wsa-macro": "audio", + "snd-soc-max9759": "audio", + "snd-soc-max98088": "audio", + "snd-soc-max98090": "audio", + "snd-soc-max98357a": "audio", + "snd-soc-max98363": "audio", + "snd-soc-max98373-i2c": "audio", + "snd-soc-max98373-sdw": "audio", + "snd-soc-max98373": "audio", + "snd-soc-max98390": "audio", + "snd-soc-max98396": "audio", + "snd-soc-max98504": "audio", + "snd-soc-max98520": "audio", + "snd-soc-max9860": "audio", + "snd-soc-max9867": "audio", + "snd-soc-max98927": "audio", + "snd-soc-msm8916-digital": "audio", + "snd-soc-mt6351": "audio", + "snd-soc-mt6358": "audio", + "snd-soc-mt6660": "audio", + "snd-soc-nau8315": "audio", + "snd-soc-nau8540": "audio", + "snd-soc-nau8810": "audio", + "snd-soc-nau8821": "audio", + "snd-soc-nau8822": "audio", + "snd-soc-nau8824": "audio", + "snd-soc-nau8825": "audio", + "snd-soc-pcm1681": "audio", + "snd-soc-pcm1789-codec": "audio", + "snd-soc-pcm1789-i2c": "audio", + "snd-soc-pcm179x-codec": "audio", + "snd-soc-pcm179x-i2c": "audio", + "snd-soc-pcm179x-spi": "audio", + "snd-soc-pcm186x-i2c": "audio", + "snd-soc-pcm186x-spi": "audio", + "snd-soc-pcm186x": "audio", + "snd-soc-pcm3060-i2c": "audio", + "snd-soc-pcm3060-spi": "audio", + "snd-soc-pcm3060": "audio", + "snd-soc-pcm3168a-i2c": "audio", + "snd-soc-pcm3168a-spi": "audio", + "snd-soc-pcm3168a": "audio", + "snd-soc-pcm5102a": "audio", + "snd-soc-pcm512x-i2c": "audio", + "snd-soc-pcm512x-spi": "audio", + "snd-soc-pcm512x": "audio", + "snd-soc-peb2466": "audio", + "snd-soc-rk3328": "audio", + "snd-soc-rl6231": "audio", + "snd-soc-rl6347a": "audio", + "snd-soc-rt1011": "audio", + "snd-soc-rt1015": "audio", + "snd-soc-rt1015p": "audio", + "snd-soc-rt1019": "audio", + "snd-soc-rt1308-sdw": "audio", + "snd-soc-rt1308": "audio", + "snd-soc-rt1316-sdw": "audio", + "snd-soc-rt1318-sdw": "audio", + "snd-soc-rt274": "audio", + "snd-soc-rt286": "audio", + "snd-soc-rt298": "audio", + "snd-soc-rt5514-spi": "audio", + "snd-soc-rt5514": "audio", + "snd-soc-rt5616": "audio", + "snd-soc-rt5631": "audio", + "snd-soc-rt5640": "audio", + "snd-soc-rt5645": "audio", + "snd-soc-rt5651": "audio", + "snd-soc-rt5659": "audio", + "snd-soc-rt5660": "audio", + "snd-soc-rt5663": "audio", + "snd-soc-rt5670": "audio", + "snd-soc-rt5677-spi": "audio", + "snd-soc-rt5677": "audio", + "snd-soc-rt5682-i2c": "audio", + "snd-soc-rt5682-sdw": "audio", + "snd-soc-rt5682": "audio", + "snd-soc-rt5682s": "audio", + "snd-soc-rt700": "audio", + "snd-soc-rt711-sdca": "audio", + "snd-soc-rt711": "audio", + "snd-soc-rt712-sdca-dmic": "audio", + "snd-soc-rt712-sdca": "audio", + "snd-soc-rt715-sdca": "audio", + "snd-soc-rt715": "audio", + "snd-soc-rt9120": "audio", + "snd-soc-sgtl5000": "audio", + "snd-soc-si476x": "audio", + "snd-soc-sigmadsp-i2c": "audio", + "snd-soc-sigmadsp-regmap": "audio", + "snd-soc-sigmadsp": "audio", + "snd-soc-simple-amplifier": "audio", + "snd-soc-simple-mux": "audio", + "snd-soc-sma1303": "audio", + "snd-soc-spdif-rx": "audio", + "snd-soc-spdif-tx": "audio", + "snd-soc-src4xxx-i2c": "audio", + "snd-soc-src4xxx": "audio", + "snd-soc-ssm2305": "audio", + "snd-soc-ssm2518": "audio", + "snd-soc-ssm2602-i2c": "audio", + "snd-soc-ssm2602-spi": "audio", + "snd-soc-ssm2602": "audio", + "snd-soc-ssm4567": "audio", + "snd-soc-sta32x": "audio", + "snd-soc-sta350": "audio", + "snd-soc-sti-sas": "audio", + "snd-soc-tas2552": "audio", + "snd-soc-tas2562": "audio", + "snd-soc-tas2764": "audio", + "snd-soc-tas2770": "audio", + "snd-soc-tas2780": "audio", + "snd-soc-tas5086": "audio", + "snd-soc-tas571x": "audio", + "snd-soc-tas5720": "audio", + "snd-soc-tas5805m": "audio", + "snd-soc-tas6424": "audio", + "snd-soc-tda7419": "audio", + "snd-soc-tfa9879": "audio", + "snd-soc-tfa989x": "audio", + "snd-soc-tlv320adc3xxx": "audio", + "snd-soc-tlv320adcx140": "audio", + "snd-soc-tlv320aic23-i2c": "audio", + "snd-soc-tlv320aic23-spi": "audio", + "snd-soc-tlv320aic23": "audio", + "snd-soc-tlv320aic31xx": "audio", + "snd-soc-tlv320aic32x4-i2c": "audio", + "snd-soc-tlv320aic32x4-spi": "audio", + "snd-soc-tlv320aic32x4": "audio", + "snd-soc-tlv320aic3x-i2c": "audio", + "snd-soc-tlv320aic3x-spi": "audio", + "snd-soc-tlv320aic3x": "audio", + "snd-soc-tpa6130a2": "audio", + "snd-soc-ts3a227e": "audio", + "snd-soc-tscs42xx": "audio", + "snd-soc-tscs454": "audio", + "snd-soc-uda1334": "audio", + "snd-soc-wcd-mbhc": "audio", + "snd-soc-wcd9335": "audio", + "snd-soc-wcd934x": "audio", + "snd-soc-wcd938x-sdw": "audio", + "snd-soc-wcd938x": "audio", + "snd-soc-wm-adsp": "audio", + "snd-soc-wm5102": "audio", + "snd-soc-wm8510": "audio", + "snd-soc-wm8523": "audio", + "snd-soc-wm8524": "audio", + "snd-soc-wm8580": "audio", + "snd-soc-wm8711": "audio", + "snd-soc-wm8728": "audio", + "snd-soc-wm8731-i2c": "audio", + "snd-soc-wm8731-spi": "audio", + "snd-soc-wm8731": "audio", + "snd-soc-wm8737": "audio", + "snd-soc-wm8741": "audio", + "snd-soc-wm8750": "audio", + "snd-soc-wm8753": "audio", + "snd-soc-wm8770": "audio", + "snd-soc-wm8776": "audio", + "snd-soc-wm8782": "audio", + "snd-soc-wm8804-i2c": "audio", + "snd-soc-wm8804-spi": "audio", + "snd-soc-wm8804": "audio", + "snd-soc-wm8903": "audio", + "snd-soc-wm8904": "audio", + "snd-soc-wm8940": "audio", + "snd-soc-wm8960": "audio", + "snd-soc-wm8961": "audio", + "snd-soc-wm8962": "audio", + "snd-soc-wm8974": "audio", + "snd-soc-wm8978": "audio", + "snd-soc-wm8985": "audio", + "snd-soc-wsa881x": "audio", + "snd-soc-wsa883x": "audio", + "snd-soc-zl38060": "audio", + "designware_i2s": "audio", + "snd-soc-fsl-rpmsg": "audio", + "snd-soc-fsl-xcvr": "audio", + "snd-soc-simple-card-utils": "audio", + "snd-soc-simple-card": "audio", + "hi6210-i2s": "audio", + "img-i2s-in": "audio", + "img-i2s-out": "audio", + "img-parallel-out": "audio", + "img-spdif-in": "audio", + "img-spdif-out": "audio", + "pistachio-internal-dac": "audio", + "snd-soc-sst-atom-hifi2-platform": "audio", + "snd-intel-sst-acpi": "audio", + "snd-intel-sst-core": "audio", + "snd-intel-sst-pci": "audio", + "snd-soc-avs-da7219": "audio", + "snd-soc-avs-dmic": "audio", + "snd-soc-avs-hdaudio": "audio", + "snd-soc-avs-i2s-test": "audio", + "snd-soc-avs-max98357a": "audio", + "snd-soc-avs-max98373": "audio", + "snd-soc-avs-max98927": "audio", + "snd-soc-avs-nau8825": "audio", + "snd-soc-avs-probe": "audio", + "snd-soc-avs-rt274": "audio", + "snd-soc-avs-rt286": "audio", + "snd-soc-avs-rt298": "audio", + "snd-soc-avs-rt5682": "audio", + "snd-soc-avs-ssm4567": "audio", + "snd-soc-avs": "audio", + "snd-skl_nau88l25_max98357a": "audio", + "snd-soc-bdw-rt286": "audio", + "snd-soc-cml_rt1011_rt5682": "audio", + "snd-soc-ehl-rt5660": "audio", + "snd-soc-hsw-rt5640": "audio", + "snd-soc-intel-hda-dsp-common": "audio", + "snd-soc-intel-sof-cirrus-common": "audio", + "snd-soc-intel-sof-maxim-common": "audio", + "snd-soc-intel-sof-realtek-common": "audio", + "snd-soc-kbl_da7219_max98357a": "audio", + "snd-soc-kbl_da7219_max98927": "audio", + "snd-soc-kbl_rt5660": "audio", + "snd-soc-kbl_rt5663_max98927": "audio", + "snd-soc-kbl_rt5663_rt5514_max98927": "audio", + "snd-soc-skl_hda_dsp": "audio", + "snd-soc-skl_nau88l25_ssm4567": "audio", + "snd-soc-skl_rt286": "audio", + "snd-soc-sof-sdw": "audio", + "snd-soc-sof-ssp-amp": "audio", + "snd-soc-sof_cs42l42": "audio", + "snd-soc-sof_da7219_max98373": "audio", + "snd-soc-sof_es8336": "audio", + "snd-soc-sof_nau8825": "audio", + "snd-soc-sof_rt5682": "audio", + "snd-soc-sst-bdw-rt5650-mach": "audio", + "snd-soc-sst-bdw-rt5677-mach": "audio", + "snd-soc-sst-bxt-da7219_max98357a": "audio", + "snd-soc-sst-bxt-rt298": "audio", + "snd-soc-sst-byt-cht-cx2072x": "audio", + "snd-soc-sst-byt-cht-da7213": "audio", + "snd-soc-sst-byt-cht-es8316": "audio", + "snd-soc-sst-bytcr-rt5640": "audio", + "snd-soc-sst-bytcr-rt5651": "audio", + "snd-soc-sst-bytcr-wm5102": "audio", + "snd-soc-sst-cht-bsw-max98090_ti": "audio", + "snd-soc-sst-cht-bsw-nau8824": "audio", + "snd-soc-sst-cht-bsw-rt5645": "audio", + "snd-soc-sst-cht-bsw-rt5672": "audio", + "snd-soc-sst-glk-rt5682_max98357a": "audio", + "snd-soc-sst-sof-pcm512x": "audio", + "snd-soc-sst-sof-wm8804": "audio", + "snd-soc-catpt": "audio", + "snd-soc-acpi-intel-match": "audio", + "snd-soc-sst-dsp": "audio", + "snd-soc-sst-ipc": "audio", + "snd-soc-skl-ssp-clk": "audio", + "snd-soc-skl": "audio", + "snd-soc-acpi": "audio", + "snd-soc-core": "audio", + "snd-sof-amd-acp": "audio", + "snd-sof-amd-rembrandt": "audio", + "snd-sof-amd-renoir": "audio", + "snd-sof-acpi-intel-byt": "audio", + "snd-sof-intel-atom": "audio", + "snd-sof-intel-hda-common": "audio", + "snd-sof-intel-hda-mlink": "audio", + "snd-sof-intel-hda": "audio", + "snd-sof-pci-intel-apl": "audio", + "snd-sof-pci-intel-cnl": "audio", + "snd-sof-pci-intel-icl": "audio", + "snd-sof-pci-intel-mtl": "audio", + "snd-sof-pci-intel-tgl": "audio", + "snd-sof-pci-intel-tng": "audio", + "snd-sof-acpi": "audio", + "snd-sof-pci": "audio", + "snd-sof-probes": "audio", + "snd-sof-utils": "audio", + "snd-sof": "audio", + "snd-sof-xtensa-dsp": "audio", + "snd-soc-xlnx-formatter-pcm": "audio", + "snd-soc-xlnx-i2s": "audio", + "snd-soc-xlnx-spdif": "audio", + "snd-soc-xtfpga-i2s": "audio", + "soundcore": "audio", + "snd-emux-synth": "audio", + "snd-util-mem": "audio", + "snd-usb-6fire": "audio", + "snd-bcd2000": "audio", + "snd-usb-caiaq": "audio", + "snd-usb-hiface": "audio", + "snd-usb-line6": "audio", + "snd-usb-pod": "audio", + "snd-usb-podhd": "audio", + "snd-usb-toneport": "audio", + "snd-usb-variax": "audio", + "snd-ua101": "audio", + "snd-usb-audio": "audio", + "snd-usbmidi-lib": "audio", + "snd-usb-us122l": "audio", + "snd-usb-usx2y": "audio", + "virtio_snd": "audio", + "snd-hdmi-lpe-audio": "audio", + "snd_xen_front": "audio" +} diff --git a/data/pci.ids.min b/data/pci.ids.min new file mode 100644 index 00000000..3a9009d6 --- /dev/null +++ b/data/pci.ids.min @@ -0,0 +1,211 @@ + +# A minumum version of the pci.ids +# from https://pci-ids.ucw.cz/ + +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 + 00 ISA Compatibility mode-only controller + 05 PCI native mode-only controller + 0a ISA Compatibility mode controller, supports both channels switched to PCI native mode + 0f PCI native mode controller, supports both channels switched to ISA compatibility mode + 80 ISA Compatibility mode-only controller, supports bus mastering + 85 PCI native mode-only controller, supports bus mastering + 8a ISA Compatibility mode controller, supports both channels switched to PCI native mode, supports bus mastering + 8f PCI native mode controller, supports both channels switched to ISA compatibility mode, supports bus mastering + 02 Floppy disk controller + 03 IPI bus controller + 04 RAID bus controller + 05 ATA controller + 20 ADMA single stepping + 30 ADMA continuous operation + 06 SATA controller + 00 Vendor specific + 01 AHCI 1.0 + 02 Serial Storage Bus + 07 Serial Attached SCSI controller + 01 Serial Storage Bus + 08 Non-Volatile memory controller + 01 NVMHCI + 02 NVM Express + 80 Mass storage controller +C 02 Network controller + 00 Ethernet controller + 01 Token ring network controller + 02 FDDI network controller + 03 ATM network controller + 04 ISDN controller + 05 WorldFip controller + 06 PICMG controller + 07 Infiniband controller + 08 Fabric controller + 80 Network controller +C 03 Display controller + 00 VGA compatible controller + 00 VGA controller + 01 8514 controller + 01 XGA compatible controller + 02 3D controller + 80 Display controller +C 04 Multimedia controller + 00 Multimedia video controller + 01 Multimedia audio controller + 02 Computer telephony device + 03 Audio device + 80 Multimedia controller +C 05 Memory controller + 00 RAM memory + 01 FLASH memory + 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 Interface + 00 SMIC + 01 KCS + 02 BT (Block Transfer) + 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 40 Coprocessor +C ff Unassigned class diff --git a/data/sdcard.ids b/data/sdcard.ids new file mode 100644 index 00000000..08dfc49b --- /dev/null +++ b/data/sdcard.ids @@ -0,0 +1,48 @@ +# +# https://github.com/bp0/verbose-spork/blob/master/data/sdcard.ids +# + +# +# List of known/observed SD card manfid's +# +# Syntax: +# MANFID id manufacturer_name(s) + +MANFID 000001 Panasonic +MANFID 000002 Toshiba +MANFID 000003 SanDisk +MANFID 00001b Samsung +MANFID 00001d ADATA +MANFID 000027 Phison +MANFID 000028 Lexar +MANFID 000031 Silicon Power +MANFID 000041 Kingston +MANFID 000074 Transcend Information +MANFID 000076 Patriot Memory +MANFID 000082 Sony +MANFID 00009c Angelbird / Hoodman + +# +# List of known/observed SD card oemid's +# +# Syntax: +# OEMID id vendor_name(s) +# +# The id is normally composed of two ascii +# characters read as a big-endian 16-bit +# value. + +OEMID 3432 Kingston # "42" +OEMID 4144 ADATA # "AD" +OEMID 4245 Lexar / Angelbird / Hoodman # "BE" +OEMID 4a45 Transcend Information # "JE" +OEMID 4a54 Sony # "JT" +OEMID 4a60 Transcend Information # "J`" +OEMID 5041 Panasonic # "PA" +OEMID 5048 Phison # "PH" +OEMID 5054 SanDisk # "PT" +OEMID 5344 SanDisk # "SD" +OEMID 534d Samsung # "SM" +OEMID 534f Angelbird / Hoodman # "SO" +OEMID 5350 Silicon Power # "SP" +OEMID 544d Toshiba # "TM" diff --git a/data/usb.ids b/data/usb.ids new file mode 100644 index 00000000..d52f1a0a --- /dev/null +++ b/data/usb.ids @@ -0,0 +1,21334 @@ +# +# List of USB ID's +# +# Maintained by Stephen J. Gowdy +# If you have any new entries, please submit them via +# http://www.linux-usb.org/usb-ids.html +# or send entries as patches (diff -u old new) in the +# body of your email (a bot will attempt to deal with it). +# The latest version can be obtained from +# http://www.linux-usb.org/usb.ids +# +# Version: 2018.10.23 +# Date: 2018-10-23 20:34:06 +# + +# Vendors, devices and interfaces. Please keep sorted. + +# Syntax: +# vendor vendor_name +# device device_name <-- single tab +# interface interface_name <-- two tabs + +0001 Fry's Electronics + 7778 Counterfeit flash drive [Kingston] +0002 Ingram +0003 Club Mac +0004 Nebraska Furniture Mart +0011 Unknown + 7788 counterfeit flash drive +0053 Planex + 5301 GW-US54ZGL 802.11bg +0078 Microntek + 0006 Joystick +0079 DragonRise Inc. + 0006 PC TWIN SHOCK Gamepad + 0011 Gamepad + 1800 Mayflash Wii U Pro Game Controller Adapter [DirectInput] + 181b Venom Arcade Joystick + 1843 Mayflash GameCube Controller Adapter + 1844 Mayflash GameCube Controller +0085 Boeye Technology Co., Ltd. + 0600 eBook Reader +0105 Trust International B.V. + 145f NW-3100 802.11b/g 54Mbps Wireless Network Adapter [zd1211] +0127 IBP + 0002 HDM Interface + 0127 ibp +0145 Unknown + 0112 Card Reader +017c MLK + 145f Trust Deskset +0200 TP-Link + 0201 MA180 UMTS Modem +0204 Chipsbank Microelectronics Co., Ltd + 6025 CBM2080 / CBM2090 Flash drive controller + 6026 CBM1180 Flash drive controller +0218 Hangzhou Worlde + 0301 MIDI Port +02ad HUMAX Co., Ltd. + 138c PVR Mass Storage +0303 Mini Automation Controller +0324 OCZ Technology Inc + bc06 OCZ ATV USB 2.0 Flash Drive + bc08 OCZ Rally2/ATV USB 2.0 Flash Drive +0325 OCZ Technology Inc + ac02 ATV Turbo / Rally2 Dual Channel USB 2.0 Flash Drive +0386 LTS + 0001 PSX for USB Converter +03d9 Shenzhen Sinote Tech-Electron Co., Ltd + 0499 SE340D PC Remote Control +03da Bernd Walter Computer Technology + 0002 HD44780 LCD interface +03e7 Intel + 2150 Myriad VPU [Movidius Neural Compute Stick] +03e8 EndPoints, Inc. + 0004 SE401 Webcam + 0008 101 Ethernet [klsi] + 0015 ATAPI Enclosure + 2123 SiPix StyleCam Deluxe + 8004 Aox 99001 +03e9 Thesys Microelectronics +03ea Data Broadcasting Corp. +03eb Atmel Corp. + 0902 4-Port Hub + 2002 Mass Storage Device + 2015 at90usbkey sample firmware (HID keyboard) + 2018 at90usbkey sample firmware (CDC ACM) + 2019 stk525 sample firmware (microphone) + 201c at90usbkey sample firmware (HID mouse) + 201d at90usbkey sample firmware (HID generic) + 2022 at90usbkey sample firmware (composite device) + 2040 LUFA Test PID + 2041 LUFA Mouse Demo Application + 2042 LUFA Keyboard Demo Application + 2043 LUFA Joystick Demo Application + 2044 LUFA CDC Demo Application + 2045 LUFA Mass Storage Demo Application + 2046 LUFA Audio Output Demo Application + 2047 LUFA Audio Input Demo Application + 2048 LUFA MIDI Demo Application + 2049 Stripe Snoop Magnetic Stripe Reader + 204a LUFA CDC Class Bootloader + 204b LUFA USB to Serial Adapter Project + 204c LUFA RNDIS Demo Application + 204d LUFA Combined Mouse and Keyboard Demo Application + 204e LUFA Dual CDC Demo Application + 204f LUFA Generic HID Demo Application + 2060 Benito Programmer Project + 2061 LUFA Combined Mass Storage and Keyboard Demo Application + 2062 LUFA Combined CDC and Mouse Demo Application + 2063 LUFA Datalogger Device + 2064 Interfaceless Control-Only LUFA Devices + 2065 LUFA Test and Measurement Demo Application + 2066 LUFA Multiple Report HID Demo + 2068 LUFA Virtual Serial/Mass Storage Demo + 2069 LUFA Webserver Project + 2103 JTAG ICE mkII + 2104 AVR ISP mkII + 2105 AVRONE! + 2106 STK600 development board + 2107 AVR Dragon + 2109 STK541 ZigBee Development Board + 210a AT86RF230 [RZUSBSTICK] transceiver + 210d XPLAIN evaluation kit (CDC ACM) + 2110 AVR JTAGICE3 Debugger and Programmer + 2111 Xplained Pro board debugger and programmer + 2122 XMEGA-A1 Explained evaluation kit + 2140 AVR JTAGICE3 (v3.x) Debugger and Programmer + 2141 ICE debugger + 2145 ATMEGA328P-XMINI (CDC ACM) + 2310 EVK11xx evaluation board + 2404 The Micro + 2fe4 ATxmega32A4U DFU bootloader + 2fe6 Cactus V6 (DFU) + 2fea Cactus RF60 (DFU) + 2fee atmega8u2 DFU bootloader + 2fef atmega16u2 DFU bootloader + 2ff0 atmega32u2 DFU bootloader + 2ff1 at32uc3a3 DFU bootloader + 2ff3 atmega16u4 DFU bootloader + 2ff4 atmega32u4 DFU bootloader + 2ff6 at32uc3b0/1 DFU bootloader + 2ff7 at90usb82 DFU bootloader + 2ff8 at32uc3a0/1 DFU bootloader + 2ff9 at90usb646/647 DFU bootloader + 2ffa at90usb162 DFU bootloader + 2ffb at90usb AVR DFU bootloader + 2ffd at89c5130/c5131 DFU bootloader + 2fff at89c5132/c51snd1c DFU bootloader + 3301 at43301 4-Port Hub + 3312 4-Port Hub + 4102 AirVast W-Buddie WN210 + 5601 at76c510 Prism-II 802.11b Access Point + 5603 Cisco 7920 WiFi IP Phone + 6119 AT91SAM CDC Demo Application + 6124 at91sam SAMBA bootloader + 6127 AT91SAM HID Keyboard Demo Application + 6129 AT91SAM Mass Storage Demo Application + 6200 AT91SAM HID Mouse Demo Application + 7603 D-Link DWL-120 802.11b Wireless Adapter [Atmel at76c503a] + 7604 at76c503a 802.11b Adapter + 7605 at76c503a 802.11b Adapter + 7606 at76c505 802.11b Adapter + 7611 at76c510 rfmd2948 802.11b Access Point + 7613 WL-1130 USB + 7614 AT76c505a Wireless Adapter + 7615 AT76C505AMX Wireless Adapter + 7617 AT76C505AS Wireless Adapter + 7800 Mini Album + 800c Airspy HF+ + ff07 Tux Droid fish dongle +03ec Iwatsu America, Inc. +03ed Mitel Corp. +03ee Mitsumi + 0000 CD-R/RW Drive + 2501 eHome Infrared Receiver + 2502 eHome Infrared Receiver + 5609 Japanese Keyboard + 641f WIF-0402C Bluetooth Adapter + 6438 Bluetooth Device + 6440 WML-C52APR Bluetooth Adapter + 6901 SmartDisk FDD + 6902 Floppy Disk Drive + 7500 CD-R/RW + ffff Dongle with BlueCore in DFU mode +03f0 HP, Inc + 0004 DeskJet 895c + 0011 OfficeJet G55 + 0012 DeskJet 1125C Printer Port + 0024 KU-0316 Keyboard + 002a LaserJet P1102 + 0101 ScanJet 4100c + 0102 PhotoSmart S20 + 0104 DeskJet 880c/970c + 0105 ScanJet 4200c + 0107 CD-Writer Plus + 010c Multimedia Keyboard Hub + 0111 G55xi Printer/Scanner/Copier + 0117 LaserJet 3200 + 011c hn210w 802.11b Adapter + 011d Bluetooth 1.2 Interface [Broadcom BCM2035] + 0121 HP 39g+ [F2224A], 39gs [F2223A], 40gs [F2225A], 48gII [F2226A], 49g+ [F2228A], 50g [F2229A, NW240AA] + 0122 HID Internet Keyboard + 0125 DAT72 Tape + 0139 Barcode Scanner 4430 + 0201 ScanJet 6200c + 0202 PhotoSmart S20 + 0204 DeskJet 815c + 0205 ScanJet 3300c + 0207 CD-Writer Plus 8200e + 020c Multimedia Keyboard + 0211 OfficeJet G85 + 0212 DeskJet 1220C + 0217 LaserJet 2200 + 0218 APOLLO P2500/2600 + 0221 StreamSmart 400 [F2235AA] + 0223 Digital Drive Flash Reader + 022a Laserjet CP1525nw + 0241 Link-5 micro dongle + 0304 DeskJet 810c/812c + 0305 ScanJet 4300c + 0307 CD-Writer+ CD-4e + 0311 OfficeJet G85xi + 0312 Color Inkjet CP1700 + 0314 designjet 30/130 series + 0317 LaserJet 1200 + 0324 SK-2885 keyboard + 034a Elite Keyboard + 0401 ScanJet 5200c + 0404 DeskJet 830c/832c + 0405 ScanJet 3400cse + 0411 OfficeJet G95 + 0412 Printing Support + 0417 LaserJet 1200 series + 0423 HS-COMBO Cardreader + 042a LaserJet M1132 MFP + 0441 Prime [NW280AA, G8X92AA] + 0504 DeskJet 885c + 0505 ScanJet 2100c + 0507 DVD+RW + 050c 5219 Wireless Keyboard + 0511 OfficeJet K60 + 0512 DeckJet 450 + 0517 LaserJet 1000 + 051d Bluetooth Interface + 0601 ScanJet 6300c + 0604 DeskJet 840c + 0605 ScanJet 2200c + 0611 OfficeJet K60xi + 0612 business inkjet 3000 + 0624 Bluetooth Dongle + 0641 X1200 Optical Mouse + 0701 ScanJet 5300c/5370c + 0704 DeskJet 825c + 0705 ScanJet 4400c + 070c Personal Media Drive + 0711 OfficeJet K80 + 0712 DeskJet 1180c + 0714 Printing Support + 0741 Prime Wireless Kit [FOK65AA] + 0801 ScanJet 7400c + 0804 DeskJet 816c + 0805 HP4470C + 0811 OfficeJet K80xi + 0817 LaserJet 3300 + 0901 ScanJet 2300c + 0904 DeskJet 845c + 0912 Printing Support + 0917 LaserJet 3330 + 0924 Modular Smartcard Keyboard + 094a Optical Mouse [672662-001] + 0a01 ScanJet 2400c + 0a17 color LaserJet 3700 + 0b01 ScanJet 82x0C + 0b0c Wireless Keyboard and Optical Mouse receiver + 0b17 LaserJet 2300d + 0c17 LaserJet 1010 + 0c24 Bluetooth Dongle + 0d12 OfficeJet 9100 series + 0d17 LaserJet 1012 + 0d4a SK-2025 Keyboard + 0e17 LaserJet 1015 + 0f0c Wireless Keyboard and Optical Mouse receiver + 0f11 OfficeJet V40 + 0f12 Printing Support + 0f17 LaserJet 1150 + 0f2a LaserJet 400 color M451dn + 1001 Photo Scanner 1000 + 1002 PhotoSmart 140 series + 1004 DeskJet 970c/970cse + 1005 ScanJet 5400c + 1011 OfficeJet V40xi + 1016 Jornada 548 / iPAQ HW6515 Pocket PC + 1017 LaserJet 1300 + 1024 Smart Card Keyboard + 1027 Virtual keyboard and mouse + 102a LaserJet Professional P 1102w + 1102 PhotoSmart 240 series + 1104 DeskJet 959c + 1105 ScanJet 5470c/5490c + 1111 OfficeJet v60 + 1116 Jornada 568 Pocket PC + 1117 LaserJet 1300n + 1151 PSC-750xi Printer/Scanner/Copier + 1198 HID-compliant mouse + 1202 PhotoSmart 320 series + 1204 DeskJet 930c + 1205 ScanJet 4500C/5550C + 1211 OfficeJet v60xi + 1217 LaserJet 2300L + 1227 Virtual CD-ROM + 1302 PhotoSmart 370 series + 1305 ScanJet 4570c + 1311 OfficeJet V30 + 1312 DeskJet 460 + 1317 LaserJet 1005 + 1327 iLO Virtual Hub + 134a Optical Mouse + 1405 ScanJet 3670 + 1411 PSC 750 + 1424 f2105 Monitor Hub + 1502 PhotoSmart 420 series + 1504 DeskJet 920c + 150c Mood Lighting (Microchip Technology Inc.) + 1511 PSC 750xi + 1512 Printing Support + 1517 color LaserJet 3500 + 1524 Smart Card Keyboard - KR + 1539 Mini Magnetic Stripe Reader + 1541 Prime [G8X92AA] + 154a Laser Mouse + 1602 PhotoSmart 330 series + 1604 DeskJet 940c + 1605 ScanJet 5530C PhotoSmart + 1611 psc 780 + 1617 LaserJet 3015 + 161d Wireless Rechargeable Optical Mouse (HID) + 1624 Smart Card Keyboard - JP + 1702 PhotoSmart 380 series + 1704 DeskJet 948C + 1705 ScanJet 5590 + 1711 psc 780xi + 1712 Printing Support + 1717 LaserJet 3020 + 171d Bluetooth 2.0 Interface [Broadcom BCM2045] + 1801 Inkjet P-2000U + 1802 PhotoSmart 470 series + 1804 DeskJet 916C + 1805 ScanJet 7650 + 1811 PSC 720 + 1812 OfficeJet Pro K550 + 1817 LaserJet 3030 + 181d Bluetooth 2.0 Interface + 1902 PhotoSmart A430 series + 1904 DeskJet 3820 + 1911 OfficeJet V45 + 1917 LaserJet 3380 + 1a02 PhotoSmart A510 series + 1a11 OfficeJet 5100 series + 1a17 color LaserJet 4650 + 1b02 PhotoSmart A610 series + 1b04 DeskJet 3810 + 1b05 ScanJet 4850C/4890C + 1b07 Premium Starter Webcam + 1c02 PhotoSmart A710 series + 1c17 Color LaserJet 2550l + 1d02 PhotoSmart A310 series + 1d17 LaserJet 1320 + 1d24 Barcode scanner + 1e02 PhotoSmart A320 Printer series + 1e11 PSC-950 + 1e17 LaserJet 1160 series + 1f02 PhotoSmart A440 Printer series + 1f11 PSC 920 + 1f12 OfficeJet Pro K5300 + 1f17 color LaserJet 5550 + 1f1d un2400 Gobi Wireless Modem + 2001 Floppy + 2002 Hub + 2004 DeskJet 640c + 2005 ScanJet 3570c + 2012 OfficeJet Pro K5400 + 201d un2400 Gobi Wireless Modem (QDL mode) + 2039 Cashdrawer + 2102 PhotoSmart 7345 + 2104 DeskJet 630c + 2112 OfficeJet Pro L7500 + 211d Sierra MC5725 [ev2210] + 2202 PhotoSmart 7600 series + 2205 ScanJet 3500c + 2212 OfficeJet Pro L7600 + 2217 color LaserJet 9500 MFP + 222a LaserJet Pro MFP M125nw + 2302 PhotoSmart 7600 series + 2304 DeskJet 656c + 2305 ScanJet 3970c + 2311 OfficeJet d series + 2312 OfficeJet Pro L7700 + 2317 LaserJet 4350 + 231d Broadcom 2070 Bluetooth Combo + 2402 PhotoSmart 7700 series + 2404 Deskjet F2280 series + 2405 ScanJet 4070 PhotoSmart + 2417 LaserJet 4250 + 241d Gobi 2000 Wireless Modem (QDL mode) + 2424 LP1965 19" Monitor Hub + 2502 PhotoSmart 7700 series + 2504 DeskJet F4200 series + 2505 ScanJet 3770 + 2512 OfficeJet Pro L7300 / Compaq LA2405 series monitor + 2514 4-port hub + 2517 LaserJet 2410 + 251d Gobi 2000 Wireless Modem + 2524 LP3065 30" Monitor Hub + 2602 PhotoSmart A520 series + 2605 ScanJet 3800c + 2611 OfficeJet 7100 series + 2617 Color LaserJet 2820 series + 2624 Pole Display (HP522 2 x 20 Line Display) + 2702 PhotoSmart A620 series + 2704 DeskJet 915 + 2717 Color LaserJet 2830 + 2724 Magnetic Stripe Reader IDRA-334133-HP + 2805 Scanjet G2710 + 2811 PSC-2100 + 2817 Color LaserJet 2840 + 2902 PhotoSmart A820 series + 2911 PSC 2200 + 2917 LaserJet 2420 + 2a11 PSC 2150 series + 2a17 LaserJet 2430 + 2a1d Integrated Module with Bluetooth 2.1 Wireless technology + 2b11 PSC 2170 series + 2b17 LaserJet 1020 + 2b4a Business Slim Keyboard + 2c12 Officejet J4680 + 2c17 LaserJet 1022 + 2c24 Logitech M-UAL-96 Mouse + 2d05 Scanjet 7000 + 2d11 OfficeJet 6110 + 2d17 Printing Support + 2e11 PSC 1000 + 2e17 LaserJet 2600n + 2e24 LP2275w Monitor Hub + 2f11 PSC 1200 + 2f17 Color LaserJet 2605dn + 2f24 LP2475w Monitor Hub + 3002 PhotoSmart P1000 + 3004 DeskJet 980c + 3005 ScanJet 4670v + 3011 PSC 1100 series + 3017 Printing Support + 3102 PhotoSmart P1100 Printer w/ Card Reader + 3104 DeskJet 960c + 3111 OfficeJet 4100 series + 3117 EWS 2605dtn + 311d Atheros AR9285 Malbec Bluetooth Adapter + 3202 PhotoSmart 1215 + 3207 4 GB flash drive + 3211 OfficeJet 4105 series + 3217 LaserJet 3050 + 3302 PhotoSmart 1218 + 3304 DeskJet 990c + 3307 v125w Stick + 3312 OfficeJet J6410 + 3317 LaserJet 3052 + 3402 PhotoSmart 1115 + 3404 DeskJet 6122 + 3417 LaserJet 3055 + 3502 PhotoSmart 230 + 3504 DeskJet 6127c + 3511 PSC 2300 + 3517 LaserJet 3390 + 3602 PhotoSmart 1315 + 3611 PSC 2410 PhotoSmart + 3617 Color LaserJet 2605 + 3711 PSC 2500 + 3717 EWS UPD + 3724 Webcam + 3802 PhotoSmart 100 + 3807 c485w Flash Drive + 3817 LaserJet P2015 series + 3902 PhotoSmart 130 + 3912 Officejet Pro 8500 + 3917 LaserJet P2014 + 3a02 PhotoSmart 7150 + 3a11 OfficeJet 5500 series + 3a17 Printing Support + 3a1d hs2340 HSPA+ mobile broadband + 3b02 PhotoSmart 7150~ + 3b05 Scanjet N8460 + 3b11 PSC 1300 series + 3b17 LaserJet M1005 MFP + 3b2a Color LaserJet MFP M277dw + 3c02 PhotoSmart 7350 + 3c05 Scanjet Professional 1000 Mobile Scanner + 3c11 PSC 1358 + 3c17 EWS UPD + 3d02 PhotoSmart 7350~ + 3d11 OfficeJet 4215 + 3d17 LaserJet P1005 + 3e02 PhotoSmart 7550 + 3e17 LaserJet P1006 + 3f02 PhotoSmart 7550~ + 3f11 PSC-1315/PSC-1317 + 4002 PhotoSmart 635/715/720/735/935/E337 (storage) + 4004 CP1160 + 4102 PhotoSmart 618 + 4105 ScanJet 4370 + 4111 OfficeJet 7200 series + 4117 LaserJet 1018 + 4202 PhotoSmart 812 + 4205 ScanJet G3010 + 4211 OfficeJet 7300 series + 4217 EWS CM1015 + 4302 PhotoSmart 850 (ptp) + 4305 ScanJet G3110 + 4311 OfficeJet 7400 series + 4317 Color LaserJet CM1017 + 4402 PhotoSmart 935 (ptp) + 4417 EWS UPD + 4502 PhotoSmart 945 (PTP mode) + 4505 ScanJet G4010 + 4507 External HDD + 4511 PhotoSmart 2600 + 4512 E709n [Officejet 6500 Wireless] + 4517 EWS UPD + 4605 ScanJet G4050 + 4611 PhotoSmart 2700 + 4717 Color LaserJet CP1215 + 4811 PSC 1600 + 4911 PSC 2350 + 4b11 OfficeJet 6200 + 4c11 PSC 1500 series + 4c17 EWS UPD + 4d11 PSC 1400 + 4d17 EWS UPD + 4e11 PhotoSmart 2570 series + 4f11 OfficeJet 5600 (USBHUB) + 4f17 Color LaserJet CM1312 MFP + 5004 DeskJet 995c + 5011 PhotoSmart 3100 series + 5017 EWS UPD + 5111 PhotoSmart 3200 series + 5211 PhotoSmart 3300 series + 5307 v165w Stick + 5311 OfficeJet 6300 + 5312 Officejet Pro 8500A + 5317 Color LaserJet CP2025 series + 5411 OfficeJet 4300 + 5511 DeskJet F300 series + 5611 PhotoSmart C3180 + 5617 LaserJet M1120 MFP + 5711 PhotoSmart C4100 series + 5717 LaserJet M1120n MFP + 5811 PhotoSmart C5100 series + 5817 LaserJet M1319f MFP + 581d lt4112 Gobi 4G Module Network Device + 5911 PhotoSmart C6180 + 5912 Officejet Pro 8600 + 5a11 PhotoSmart C7100 series + 5b11 OfficeJet J2100 series + 5b12 Officejet Pro 8100 + 5c11 PhotoSmart C4200 Printer series + 5c12 OfficeJet 6700 + 5c17 LaserJet P2055 series + 5d11 PhotoSmart C5200 series + 5e11 PhotoSmart D7400 series + 6004 DeskJet 5550 + 6102 Hewlett Packard Digital Camera + 6104 DeskJet 5650c + 6117 color LaserJet 3550 + 6202 PhotoSmart 215 + 6204 DeskJet 5150c + 6217 Color LaserJet 4700 + 6302 PhotoSmart 318/612 + 6317 Color LaserJet 4730mfp + 6402 PhotoSmart 715 (ptp) + 6411 PhotoSmart C8100 series + 6417 LaserJet 5200 + 6502 PhotoSmart 120 (ptp) + 6511 PhotoSmart C7200 series + 6602 PhotoSmart 320 + 6611 PhotoSmart C4380 series + 6617 LaserJet 5200L + 6702 PhotoSmart 720 (ptp) + 6717 Color LaserJet 3000 + 6802 PhotoSmart 620 (ptp) + 6811 PhotoSmart D5300 series + 6817 Color LaserJet 3800 + 6911 PhotoSmart D7200 series + 6917 Color LaserJet 3600 + 6a02 PhotoSmart 735 (ptp) + 6a11 PhotoSmart C6200 series + 6a17 LaserJet 4240 + 6b02 PhotoSmart R707 (PTP mode) + 6b11 Photosmart C4500 series + 6c11 Photosmart C4480 + 6c17 Color LaserJet 4610 + 6f17 Color LaserJet CP6015 series + 7004 DeskJet 3320c + 7102 PhotoSmart 635 (PTP mode) + 7104 DeskJet 3420c + 7117 CM8060 Color MFP with Edgeline Technology + 7202 PhotoSmart 43x (ptp) + 7204 DeskJet 36xx + 7217 LaserJet M5035 MFP + 7302 PhotoSmart M307 (PTP mode) + 7304 DeskJet 35xx + 7311 Photosmart Premium C309 + 7317 LaserJet P3005 + 7404 Printing Support + 7417 LaserJet M4345 MFP + 7504 Printing Support + 7517 LaserJet M3035 MFP + 7604 DeskJet 3940 + 7611 DeskJet F2492 All-in-One + 7617 LaserJet P3004 + 7702 PhotoSmart R817 (PTP mode) + 7704 DeskJet D4100 + 7717 CM8050 Color MFP with Edgeline Technology + 7804 DeskJet D1360 + 7817 Color LaserJet CP3505 + 7917 LaserJet M5025 MFP + 7a02 PhotoSmart M415 (PTP mode) + 7a04 DeskJet D2460 + 7a17 LaserJet M3027 MFP + 7b02 PhotoSmart M23 (PTP mode) + 7b17 Color LaserJet CP4005 + 7c17 Color LaserJet CM6040 series + 7d04 DeskJet F2100 Printer series + 7d17 Color LaserJet CM4730 MFP + 7e04 DeskJet F4100 Printer series + 8017 LaserJet P4515 + 8104 Printing Support + 8117 LaserJet P4015 + 811c Ethernet HN210E + 8204 Printing Support + 8207 FHA-3510 2.4GHz Wireless Optical Mobile Mouse + 8217 LaserJet P4014 + 8317 LaserJet M9050 MFP + 8404 DeskJet 6800 series + 8417 LaserJet M9040 MFP + 8504 DeskJet 6600 series + 8604 DeskJet 5440 + 8607 Optical Mobile Mouse + 8704 DeskJet 5940 + 8711 Deskjet 2050 J510 + 8804 DeskJet 6980 series + 8904 DeskJet 6940 series + 8911 Deskjet 1050 J410 + 8c07 Digital Stereo Headset + 8c11 Deskjet F4500 series + 9002 PhotoSmart M437 + 9102 PhotoSmart M537 + 9207 HD-4110 Webcam + 9302 PhotoSmart R930 series + 9402 PhotoSmart R837 + 9502 PhotoSmart R840 series + 9602 PhotoSmart M730 series + 9702 PhotoSmart R740 series + 9802 PhotoSmart Mz60 series + 9902 PhotoSmart M630 series + 9a02 PhotoSmart E330 series + 9b02 PhotoSmart M540 series + 9b07 Portable Drive + 9c02 PhotoSmart M440 series + a004 DeskJet 5850c + a011 Deskjet 3050A + a407 Wireless Optical Comfort Mouse + b002 PhotoSmart 7200 series + b102 PhotoSmart 7200 series + b107 v255w/c310w Flash Drive + b116 Webcam + b202 PhotoSmart 7600 series + b302 PhotoSmart 7600 series + b402 PhotoSmart 7700 series + b502 PhotoSmart 7700 series + b602 PhotoSmart 7900 series + b702 PhotoSmart 7900 series + b802 PhotoSmart 7400 series + b902 PhotoSmart 7800 series + ba02 PhotoSmart 8100 series + bb02 PhotoSmart 8400 series + bc02 PhotoSmart 8700 series + bd02 PhotoSmart Pro B9100 series + bef4 NEC Picty760 + c002 PhotoSmart 7800 series + c102 PhotoSmart 8000 series + c111 Deskjet 1510 + c202 PhotoSmart 8200 series + c302 DeskJet D2300 + c402 PhotoSmart D5100 series + c502 PhotoSmart D6100 series + c602 PhotoSmart D7100 series + c702 PhotoSmart D7300 series + c802 PhotoSmart D5060 Printer + d104 Bluetooth Dongle + d507 39gII [NW249AA] + efbe NEC Picty900 + f0be NEC Picty920 + f1be NEC Picty800 +03f1 Genoa Technology +03f2 Oak Technology, Inc. +03f3 Adaptec, Inc. + 0020 AWN-8020 WLAN [Intersil PRISM 2.5] + 0080 AVC-1100 Audio Capture + 0083 AVC-2200 Device + 0087 AVC-2210 Loader + 0088 AVC-2210 Device + 008b AVC-2310 Loader + 008c AVC-2310 Device + 0094 eHome Infrared Receiver + 009b AVC-1410 GameBridge TV NTSC + 2000 USBXchange + 2001 USBXchange Adapter + 2002 USB2-Xchange + 2003 USB2-Xchange Adapter + 4000 4-port hub + adcc Composite Device Support +03f4 Diebold, Inc. +03f5 Siemens Electromechanical +03f8 Epson Imaging Technology Center +03f9 KeyTronic Corp. + 0100 KT-2001 Keyboard + 0101 Keyboard + 0102 Keyboard Mouse +03fb OPTi, Inc. +03fc Elitegroup Computer Systems +03fd Xilinx, Inc. + 0008 Platform Cable USB II + 0050 dfu downloader +03fe Farallon Comunications +0400 National Semiconductor Corp. + 05dc Rigol Technologies DS1000USB Oscilloscope + 0807 Bluetooth Dongle + 080a Bluetooth Device + 09c4 Rigol Technologies DG1022 Arbitrary Waveform Generator + 1000 Mustek BearPaw 1200 Scanner + 1001 Mustek BearPaw 2400 Scanner + 1237 Hub + a000 Smart Display Reference Device + c359 Logitech Harmony + c35b Printing Support + c55d Rigol Technologies DS5000USB Oscilloscope +0401 National Registry, Inc. +0402 ALi Corp. + 5462 M5462 IDE Controller + 5602 M5602 Video Camera Controller + 5603 M5603 Video Camera Controller + 5606 M5606 Video Camera Controller [UVC] + 5621 M5621 High-Speed IDE Controller + 5623 M5623 Scanner Controller + 5627 Welland ME-740PS USB2 3.5" Power Saving Enclosure + 5632 M5632 Host-to-Host Link + 5635 M5635 Flash Card Reader + 5636 USB 2.0 Storage Device + 5637 M5637 IDE Controller + 5642 Storage Device + 5661 M5661 MP3 player + 5667 M5667 MP3 player + 9665 Gateway Webcam +0403 Future Technology Devices International, Ltd + 0000 H4SMK 7 Port Hub / Bricked Counterfeit FT232 Serial (UART) IC + 0232 Serial Converter + 1060 JTAG adapter + 1234 IronLogic RFID Adapter [Z-2 USB] + 1235 Iron Logic Z-397 RS-485/422 converter + 6001 FT232 Serial (UART) IC + 6002 Lumel PD12 + 6007 Serial Converter + 6008 Serial Converter + 6009 Serial Converter + 6010 FT2232C/D/H Dual UART/FIFO IC + 6011 FT4232H Quad HS USB-UART/FIFO IC + 6014 FT232H Single HS USB-UART/FIFO IC + 6015 Bridge(I2C/SPI/UART/FIFO) + 8028 Dev board JTAG (FT232H based) + 8040 4 Port Hub + 8070 7 Port Hub + 8140 Vehicle Explorer Interface + 8210 MGTimer - MGCC (Vic) Timing System + 8370 7 Port Hub + 8371 PS/2 Keyboard And Mouse + 8372 FT8U100AX Serial Port + 8a28 Rainforest Automation ZigBee Controller + 8a98 TIAO Multi-Protocol Adapter + 8b28 Alpermann+Velte TCI70 + 8b29 Alpermann+Velte TC60 CLS + 8b2a Alpermann+Velte Rubidium Q1 + 8b2b Alpermann+Velte TCD + 8b2c Alpermann+Velte TCC70 + 9090 SNAP Stick 200 + 9132 LCD and Temperature Interface + 9133 CallerID + 9135 Rotary Pub alarm + 9136 Pulsecounter + 9e90 Marvell OpenRD Base/Client + 9f80 Ewert Energy Systems CANdapter + a6d0 Texas Instruments XDS100v2 JTAG / BeagleBone A3 + a951 HCP HIT GSM/GPRS modem [Cinterion MC55i] + a9a0 FT2232D - Dual UART/FIFO IC - FTDI + abb8 Lego Mindstorms NXTCam + b0c0 microSensys RFID device + b0c1 microSensys RFID device + b0c2 iID contactless RFID device + b0c3 iID contactless RFID device + b0c4 RFID device + b0c5 RFID device + b810 US Interface Navigator (CAT and 2nd PTT lines) + b811 US Interface Navigator (WKEY and FSK lines) + b812 US Interface Navigator (RS232 and CONFIG lines) + b9b0 Fujitsu SK-16FX-100PMC V1.1 + baf8 Amontec JTAGkey + bcd8 Stellaris Development Board + bcd9 Stellaris Evaluation Board + bcda Stellaris ICDI Board + bdc8 Egnite GmbH - JTAG/RS-232 adapter + bfd8 OpenDCC + bfd9 OpenDCC (Sniffer) + bfda OpenDCC (Throttle) + bfdb OpenDCC (Gateway) + bfdc OpenDCC (GBM) + c580 HID UNIKEY dongle [F-Response] + c630 lcd2usb interface + c631 i2c-tiny-usb interface + c632 xu1541 c64 floppy drive interface + c633 TinyCrypt dongle + c634 glcd2usb interface + c7d0 RR-CirKits LocoBuffer-USB + c8b8 Alpermann+Velte MTD TCU + c8b9 Alpermann+Velte MTD TCU 1HE + c8ba Alpermann+Velte Rubidium H1 + c8bb Alpermann+Velte Rubidium H3 + c8bc Alpermann+Velte Rubidium S1 + c8bd Alpermann+Velte Rubidium T1 + c8be Alpermann+Velte Rubidium D1 + c8bf Alpermann+Velte TC60 RLV + cc48 Tactrix OpenPort 1.3 Mitsubishi + cc49 Tactrix OpenPort 1.3 Subaru + cc4a Tactrix OpenPort 1.3 Universal + cff8 Amontec JTAGkey + d010 SCS PTC-IIusb + d011 SCS Position-Tracker/TNC + d012 SCS DRAGON 1 + d013 SCS DRAGON 1 + d388 Xsens converter + d389 Xsens Wireless Receiver + d38a Xsens serial converter + d38b Xsens serial converter + d38c Xsens Wireless Receiver + d38d Xsens Awinda Station + d38e Xsens serial converter + d38f Xsens serial converter + d491 Zolix Omni 1509 monochromator + d578 Accesio USB-COM-4SM + d6f8 UNI Black BOX + d738 Propox JTAGcable II + d739 Propox ISPcable III + d9a9 Actisense USG-1 NMEA Serial Gateway + d9aa Actisense NGT-1 NMEA2000 PC Interface + d9ab Actisense NGT-1 NMEA2000 Gateway + daf4 Qundis Serial Infrared Head + e0d0 Total Phase Aardvark I2C/SPI Host Adapter + e521 EVER Sinline XL Series UPS + e6c8 PYRAMID Computer GmbH LCD + e700 Elster Unicom III Optical Probe + e729 Segway Robotic Mobility Platforms 200 + e888 Expert ISDN Control USB + e889 USB-RS232 OptoBridge + e88a Expert mouseCLOCK USB II + e88b Precision Clock MSF USB + e88c Expert mouseCLOCK USB II HBG + e8d8 Aaronia AG Spectran Spectrum Analyzer + e8dc Aaronia AG UBBV Preamplifier + ea90 Eclo 1-Wire Adapter + ecd9 miControl miCan-Stick + ed71 HAMEG HO870 Serial Port + ed72 HAMEG HO720 Serial Port + ed73 HAMEG HO730 Serial Port + ed74 HAMEG HO820 Serial Port + ef10 FT1245BL + f070 Serial Converter 422/485 [Vardaan VEUSB422R3] + f0c8 SPROG Decoder Programmer + f0c9 SPROG-DCC CAN-USB + f0e9 Tagsys L-P101 + f1a0 Asix PRESTO Programmer + f208 Papenmeier Braille-Display + f3c0 4N-GALAXY Serial Converter + f608 CTI USB-485-Mini + f60b CTI USB-Nano-485 + f680 Suunto Sports Instrument + f758 GW Instek GDS-8x0 Oscilloscope + f7c0 ZeitControl Cardsystems TagTracer MIFARE + f850 USB-UIRT (Universal Infrared Receiver+Transmitter) + f918 Ant8 Logic Probe + fa00 Matrix Orbital USB Serial + fa01 Matrix Orbital MX2 or MX3 + fa02 Matrix Orbital MX4 or MX5 + fa03 Matrix Orbital VK/LK202 Family + fa04 Matrix Orbital VK/LK204 Family + fa20 Ross-Tech HEX-USB + fc08 Crystalfontz CFA-632 USB LCD + fc09 Crystalfontz CFA-634 USB LCD + fc0b Crystalfontz CFA-633 USB LCD + fc0c Crystalfontz CFA-631 USB LCD + fc0d Crystalfontz CFA-635 USB LCD + fc82 SEMC DSS-20/DSS-25 SyncStation + fd48 ShipModul MiniPlex-4xUSB NMEA Multiplexer + fd49 ShipModul MiniPlex-4xUSB-AIS NMEA Multiplexer + fd4b ShipModul MiniPlex NMEA Multiplexer + ff08 ToolHouse LoopBack Adapter + ff18 ScienceScope Logbook ML + ff19 Logbook Bus + ff1a Logbook Bus + ff1b Logbook Bus + ff1c ScienceScope Logbook LS + ff1d ScienceScope Logbook HS + ff1e Logbook Bus + ff1f Logbook Bus +0404 NCR Corp. + 0202 78XX Scanner + 0203 78XX Scanner - Embedded System + 0310 K590 Printer, Self-Service + 0311 7167 Printer, Receipt/Slip + 0312 7197 Printer Receipt + 0320 5932-USB Keyboard + 0321 5953-USB Dynakey + 0322 5932-USB Enhanced Keyboard + 0323 5932-USB Enhanced Keyboard, Flash-Recovery/Download + 0324 5953-USB Enhanced Dynakey + 0325 5953-USB Enhanced Dynakey Flash-Recovery/Download + 0328 K016: USB-MSR ISO 3-track MSR: POS Standard (See HID pages) + 0329 K018: USB-MSR JIS 2-Track MSR: POS Standard + 032a K016: USB-MSR ISO 3-Track MSR: HID Keyboard Mode + 032b K016/K018: USB-MSR Flash-Recovery/Download +0405 Synopsys, Inc. +0406 Fujitsu-ICL Computers +0407 Fujitsu Personal Systems, Inc. +0408 Quanta Computer, Inc. + 0103 FV TouchCam N1 (Audio) + 030c HP Webcam + 03b2 HP Webcam + 1030 FV TouchCam N1 (Video) + 3000 Optical dual-touch panel + 3001 Optical Touch Screen +0409 NEC Corp. + 0011 PC98 Series Layout Keyboard Mouse + 0012 ATerm IT75DSU ISDN TA + 0014 Japanese Keyboard + 0019 109 Japanese Keyboard with Bus-Powered Hub + 001a PC98 Series Layout Keyboard with Bus-Powered Hub + 0025 Mini Keyboard with Bus-Powered Hub + 0027 MultiSync Monitor + 002c Clik!-USB Drive + 0034 109 Japanese Keyboard with One-touch start buttons + 003f Wireless Keyboard with One-touch start buttons + 0040 Floppy + 004e SuperScript 1400 Series + 004f Wireless Keyboard with One-touch start buttons + 0050 7-port hub + 0058 HighSpeed Hub + 0059 HighSpeed Hub + 005a HighSpeed Hub + 006a Conceptronic USB Harddisk Box + 007d MINICUBE2 + 007e PG-FP5 Flash Memory Programmer + 0081 SuperScript 1400 Series + 0082 SuperScript 1400 Series + 0094 Japanese Keyboard with One-touch start buttons + 0095 Japanese Keyboard + 00a9 AtermIT21L 128K Support Standard + 00aa AtermITX72 128K Support Standard + 00ab AtermITX62 128K Support Standard + 00ac AtermIT42 128K Support Standard + 00ae INSMATEV70G-MAX Standard + 00af AtermITX70 128K Support Standard + 00b0 AtermITX80 128K Support Standard + 00b2 AtermITX80D 128K Support Standard + 00c0 Wireless Remocon + 00f7 Smart Display PK-SD10 + 011d e228 Mobile Phone + 0203 HID Audio Controls + 021d Aterm WL54SU2 802.11g Wireless Adapter [Atheros AR5523] + 0248 Aterm PA-WL54GU + 0249 Aterm WL300NU-G + 02b4 Aterm WL300NU-AG + 02b6 Aterm WL300NU-GS 802.11n Wireless Adapter + 02bc Computer Monitor + 0300 LifeTouch Note + 0301 LifeTouch Note (debug mode) + 55aa Hub + 55ab Hub [iMac/iTouch kbd] + 8010 Intellibase Hub + 8011 Intellibase Hub + efbe P!cty 900 [HP DJ] + f0be P!cty 920 [HP DJ 812c] +040a Kodak Co. + 0001 DVC-323 + 0002 DVC-325 + 0100 DC-220 + 0110 DC-260 + 0111 DC-265 + 0112 DC-290 + 0120 DC-240 + 0121 DC-240 (PTP firmware) + 0130 DC-280 + 0131 DC-5000 + 0132 DC-3400 + 0140 DC-4800 + 0160 DC4800 + 0170 DX3900 + 0200 Digital Camera + 0300 EZ-200 + 0400 MC3 + 0402 Digital Camera + 0403 Z7590 + 0500 DX3500 + 0510 DX3600 + 0525 DX3215 + 0530 DX3700 + 0535 EasyShare CX4230 Camera + 0540 LS420 + 0550 DX4900 + 0555 DX4330 + 0560 CX4200 + 0565 CX4210 + 0566 CX4300 + 0567 LS753 + 0568 LS443 + 0569 LS663 + 0570 DX6340 + 0571 CX6330 + 0572 DX6440 + 0573 CX6230 + 0574 CX6200 + 0575 DX6490 + 0576 DX4530 + 0577 DX7630 + 0578 CX7300/CX7310 + 0579 CX7220 + 057a CX7330 + 057b CX7430 + 057c CX7530 + 057d DX7440 + 057e C300 + 057f DX7590 + 0580 Z730 + 0581 Digital Camera + 0582 Digital Camera + 0583 Digital Camera + 0584 CX6445 + 0585 Digital Camera + 0586 CX7525 + 0587 Digital Camera + 0588 Digital Camera + 0589 EasyShare C360 + 058a C310 + 058b Digital Camera + 058c C330 + 058d C340 + 058e V530 + 058f V550 + 0590 Digital Camera + 0591 Digital Camera + 0592 Digital Camera + 0593 Digital Camera + 0594 Digital Camera + 0595 Digital Camera + 0596 Digital Camera + 0597 Digital Camera + 0598 EASYSHARE M1033 digital camera + 0599 Digital Camera + 059a Digital Camera + 059b Digital Camera + 059c Digital Camera + 059d Digital Camera + 059e Digital Camera + 059f Digital Camera + 05a0 Digital Camera + 05a1 Digital Camera + 05a2 Digital Camera + 05a3 Digital Camera + 05a4 Digital Camera + 05a5 Digital Camera + 05a6 Digital Camera + 05a7 Digital Camera + 05a8 Digital Camera + 05a9 Digital Camera + 05aa Digital Camera + 05ab Digital Camera + 05ac Digital Camera + 05ad Digital Camera + 05ae Digital Camera + 05af Digital Camera + 05b0 Digital Camera + 05b1 Digital Camera + 05b2 Digital Camera + 05b3 EasyShare Z710 Camera + 05b4 Digital Camera + 05b5 Digital Camera + 05b6 Digital Camera + 05b7 Digital Camera + 05b8 Digital Camera + 05b9 Digital Camera + 05ba Digital Camera + 05bb Digital Camera + 05bc Digital Camera + 05bd Digital Camera + 05be Digital Camera + 05bf Digital Camera + 05c0 Digital Camera + 05c1 Digital Camera + 05c2 Digital Camera + 05c3 Digital Camera + 05c4 Digital Camera + 05c5 Digital Camera + 05c8 EASYSHARE Z1485 IS Digital Camera + 05d3 EasyShare M320 Camera + 05d4 EasyShare C180 Digital Camera + 1001 EasyShare SV811 Digital Picture Frame + 4000 InkJet Color Printer + 4021 Photo Printer 6800 + 4022 1400 Digital Photo Printer + 402b Photo Printer 6850 + 402e 605 Photo Printer + 4034 805 Photo Printer + 404f 305 Photo Printer + 4056 ESP 7200 Series AiO + 4109 EasyShare Printer Dock Series 3 + 410d EasyShare G600 Printer Dock + 5010 Wireless Adapter + 5012 DBT-220 Bluetooth Adapter + 6001 i30 + 6002 i40 + 6003 i50 + 6004 i60 + 6005 i80 + 6029 i900 + 602a i900 +040b Weltrend Semiconductor + 0a68 Func MS-3 gaming mouse [WT6573F MCU] + 2367 Human Interface Device [HP CalcPad 200 Calculator and Numeric Keypad] + 6510 Weltrend Bar Code Reader + 6520 Xploder Xbox Memory Unit (8MB) + 6533 Speed-Link Competition Pro + 6543 Manhattan Magnetic Card Strip Reader +040c VTech Computers, Ltd +040d VIA Technologies, Inc. + 3184 VNT VT6656 USB-802.11 Wireless LAN Adapter + 6205 USB 2.0 Card Reader +040e MCCI +040f Echo Speech Corp. +0411 BUFFALO INC. (formerly MelCo., Inc.) + 0001 LUA-TX Ethernet [pegasus] + 0005 LUA-TX Ethernet + 0006 WLI-USB-L11 Wireless LAN Adapter + 0009 LUA2-TX Ethernet + 000b WLI-USB-L11G-WR Wireless LAN Adapter + 000d WLI-USB-L11G Wireless LAN Adapter + 0012 LUA-KTX Ethernet + 0013 USB2-IDE Adapter + 0016 WLI-USB-S11 802.11b Adapter + 0018 USB2-IDE Adapter + 001c USB-IDE Bridge: DUB-PxxG + 0027 WLI-USB-KS11G 802.11b Adapter + 002a SMSC USB97C202 "HD-HB300V2-EU" + 003d LUA-U2-KTX Ethernet + 0044 WLI-USB-KB11 Wireless LAN Adapter + 004b WLI-USB-G54 802.11g Adapter [Broadcom 4320 USB] + 004d WLI-USB-B11 Wireless LAN Adapter + 0050 WLI2-USB2-G54 Wireless LAN Adapter + 005e WLI-U2-KG54-YB WLAN + 0065 Python2 WDM Encoder + 0066 WLI-U2-KG54 WLAN + 0067 WLI-U2-KG54-AI WLAN + 006e LUA-U2-GT 10/100/1000 Ethernet Adapter + 0089 RUF-C/U2 Flash Drive + 008b Nintendo Wi-Fi + 0091 WLI-U2-KAMG54 Wireless LAN Adapter + 0092 WLI-U2-KAMG54 Bootloader + 0097 WLI-U2-KG54-BB + 00a9 WLI-U2-AMG54HP Wireless LAN Adapter + 00aa WLI-U2-AMG54HP Bootloader + 00b3 PC-OP-RS1 RemoteStation + 00bc WLI-U2-KG125S 802.11g Adapter [Broadcom 4320 USB] + 00ca 802.11n Network Adapter + 00cb WLI-U2-G300N 802.11n Adapter + 00d8 WLI-U2-SG54HP + 00d9 WLI-U2-G54HP + 00da WLI-U2-KG54L 802.11bg [ZyDAS ZD1211B] + 00db External Hard Drive HD-PF32OU2 [Buffalo Ministation] + 00e8 WLI-UC-G300N Wireless LAN Adapter [Ralink RT2870] + 0105 External Hard Drive HD-CEU2 [Drive Station] + 012c SATA Bridge + 012e WLI-UC-AG300N Wireless LAN Adapter + 0148 WLI-UC-G300HP Wireless LAN Adapter + 0150 WLP-UC-AG300 Wireless LAN Adapter + 0157 External Hard Drive HD-PEU2 + 0158 WLI-UC-GNHP Wireless LAN Adapter + 015d WLI-UC-GN Wireless LAN Adapter [Ralink RT3070] + 016f WLI-UC-G301N Wireless LAN Adapter [Ralink RT3072] + 017f Sony UWA-BR100 802.11abgn Wireless Adapter [Atheros AR7010+AR9280] + 019e WLI-UC-GNP Wireless LAN Adapter + 01a1 MiniStation Metro + 01a2 WLI-UC-GNM Wireless LAN Adapter [Ralink RT8070] + 01dc Ultra-Slim Portable DVD Writer (DVSM-PC58U2V) + 01de External Hard Drive HD-PCTU3 [Buffalo MiniStation] + 01ee WLI-UC-GNM2 Wireless LAN Adapter [Ralink RT3070] + 01f1 SATA Adapter [HD-LBU3] + 01fd WLI-UC-G450 Wireless LAN Adapter +0412 Award Software International +0413 Leadtek Research, Inc. + 1310 WinFast TV - NTSC + FM + 1311 WinFast TV - NTSC + MTS + FM + 1312 WinFast TV - PAL BG + FM + 1313 WinFast TV - PAL BG+TXT + FM + 1314 WinFast TV Audio - PHP PAL I + 1315 WinFast TV Audio - PHP PAL I+TXT + 1316 WinFast TV Audio - PHP PAL DK + 1317 WinFast TV Audio - PHP PAL DK+TXT + 1318 WinFast TV - PAL I/DK + FM + 1319 WinFast TV - PAL N + FM + 131a WinFast TV Audio - PHP SECAM LL + 131b WinFast TV Audio - PHP SECAM LL+TXT + 131c WinFast TV Audio - PHP SECAM DK + 131d WinFast TV - SECAM DK + TXT + FM + 131e WinFast TV - NTSC Japan + FM + 1320 WinFast TV - NTSC + 1321 WinFast TV - NTSC + MTS + 1322 WinFast TV - PAL BG + 1323 WinFast TV - PAL BG+TXT + 1324 WinFast TV Audio - PHP PAL I + 1325 WinFast TV Audio - PHP PAL I+TXT + 1326 WinFast TV Audio - PHP PAL DK + 1327 WinFast TV Audio - PHP PAL DK+TXT + 1328 WinFast TV - PAL I/DK + 1329 WinFast TV - PAL N + 132a WinFast TV Audio - PHP SECAM LL + 132b WinFast TV Audio - PHP SECAM LL+TXT + 132c WinFast TV Audio - PHP SECAM DK + 132d WinFast TV - SECAM DK + TXT + 132e WinFast TV - NTSC Japan + 6023 EMP Audio Device + 6024 WinFast PalmTop/Novo TV Video + 6025 WinFast DTV Dongle (cold state) + 6026 WinFast DTV Dongle (warm state) + 6029 WinFast DTV Dongle Gold + 6125 WinFast DTV Dongle + 6126 WinFast DTV Dongle BDA Driver + 6a03 RTL2832 [WinFast DTV Dongle Mini] + 6f00 WinFast DTV Dongle (STK7700P based) +0414 Giga-Byte Technology Co., Ltd +0416 Winbond Electronics Corp. + 0035 W89C35 802.11bg WLAN Adapter + 0101 Hub + 0961 AVL Flash Card Reader + 3810 Smart Card Controller + 3811 Generic Controller - Single interface + 3812 Smart Card Controller_2Interface + 3813 Panel Display + 5011 Virtual Com Port + 5518 4-Port Hub + 551a PC Sync Keypad + 551b PC Async Keypad + 551c Sync Tenkey + 551d Async Tenkey + 551e Keyboard + 551f Keyboard w/ Sys and Media + 5521 Keyboard + 6481 16-bit Scanner + 7721 Memory Stick Reader/Writer + 7722 Memory Stick Reader/Writer + 7723 SD Card Reader +0417 Symbios Logic +0418 AST Research +0419 Samsung Info. Systems America, Inc. + 0001 IrDA Remote Controller / Creative Cordless Mouse + 0600 Desktop Wireless 6000 + 3001 Xerox P1202 Laser Printer + 3003 Olivetti PG L12L + 3201 Docuprint P8ex + 3404 SCX-5x12 series + 3406 MFP 830 series + 3407 ML-912 + 3601 InkJet Color Printer + 3602 InkJet Color Printer + 4602 Remote NDIS Network Device + 8001 Hub + 8002 SyncMaster HID Monitor Control + aa03 SDAS-3 MP3 Player +041a Phoenix Technologies, Ltd +041b d'TV +041d S3, Inc. +041e Creative Technology, Ltd + 1002 Nomad II + 1003 Blaster GamePad Cobra + 1050 GamePad Cobra + 1053 Mouse Gamer HD7600L + 200c MuVo V100 + 2020 Zen X-Fi 2 + 2029 ZiiO + 2801 Prodikeys PC-MIDI multifunction keyboard + 3000 SoundBlaster Extigy + 3002 SB External Composite Device + 3010 SoundBlaster MP3+ + 3014 SB External Composite Device + 3015 Sound Blaster Digital Music LX + 3020 SoundBlaster Audigy 2 NX + 3030 SB External Composite Device + 3040 SoundBlaster Live! 24-bit External SB0490 + 3060 Sound Blaster Audigy 2 ZS External + 3061 SoundBlaster Audigy 2 ZS Video Editor + 3090 Sound Blaster Digital Music SX + 30d0 Xmod + 30d3 Sound Blaster Play! + 3100 IR Receiver (SB0540) + 3121 WoW tap chat + 3220 Sound Blaster Tactic(3D) Sigma sound card + 3232 Sound Blaster Premium HD [SBX] + 3f00 E-Mu Xboard 25 MIDI Controller + 3f02 E-Mu 0202 + 3f04 E-Mu 0404 + 3f07 E-Mu Xmidi 1x1 + 3f0e Xmidi 1x1 Tab + 4003 VideoBlaster Webcam Go Plus [W9967CF] + 4004 Nomad II MG + 4005 Webcam Blaster Go ES + 4007 Go Mini + 400a PC-Cam 300 + 400b PC-Cam 600 + 400c Webcam 5 [pwc] + 400d Webcam PD1001 + 400f PC-CAM 550 (Composite) + 4011 Webcam PRO eX + 4012 PC-CAM350 + 4013 PC-Cam 750 + 4015 CardCam Value + 4016 CardCam + 4017 Webcam Mobile [PD1090] + 4018 Webcam Vista [PD1100] + 4019 Audio Device + 401a Webcam Vista [PD1100] + 401c Webcam NX [PD1110] + 401d Webcam NX Ultra + 401e Webcam NX Pro + 401f Webcam Notebook [PD1171] + 4020 Webcam NX + 4021 Webcam NX Ultra + 4022 Webcam NX Pro + 4028 Vista Plus cam [VF0090] + 4029 Webcam Live! + 402f DC-CAM 3000Z + 4034 Webcam Instant + 4035 Webcam Instant + 4036 Webcam Live!/Live! Pro + 4037 Webcam Live! + 4038 ORITE CCD Webcam [PC370R] + 4039 Webcam Live! Effects + 403a Webcam NX Pro 2 + 403b Creative Webcam Vista [VF0010] + 403c Webcam Live! Ultra + 403d Webcam Notebook Ultra + 403e Webcam Vista Plus + 4041 Webcam Live! Motion + 4043 Vibra Plus Webcam + 4045 Live! Cam Voice + 4049 Live! Cam Voice + 4051 Live! Cam Notebook Pro [VF0250] + 4052 Live! Cam Vista IM + 4053 Live! Cam Video IM + 4054 Live! Cam Video IM + 4055 Live! Cam Video IM Pro + 4056 Live! Cam Video IM Pro + 4057 Live! Cam Optia + 4058 Live! Cam Optia AF + 405f WebCam Vista (VF0330) + 4061 Live! Cam Notebook Pro [VF0400] + 4063 Live! Cam Video IM Pro + 4068 Live! Cam Notebook [VF0470] + 406c Live! Cam Sync [VF0520] + 4083 Live! Cam Socialize [VF0640] + 4087 Live! Cam Socialize HD 1080 [VF0680] + 4088 Live! Cam Chat HD [VF0700] + 4095 Live! Cam Sync HD [VF0770] + 4097 Live! Cam Chat HD [VF0700] + 4100 Nomad Jukebox 2 + 4101 Nomad Jukebox 3 + 4102 NOMAD MuVo^2 + 4106 Nomad MuVo + 4107 NOMAD MuVo + 4108 Nomad Jukebox Zen + 4109 Nomad Jukebox Zen NX + 410b Nomad Jukebox Zen USB 2.0 + 410c Nomad MuVo NX + 410f NOMAD MuVo^2 (Flash) + 4110 Nomad Jukebox Zen Xtra + 4111 Dell Digital Jukebox + 4116 MuVo^2 + 4117 Nomad MuVo TX + 411b Zen Touch + 411c Nomad MuVo USB 2.0 + 411d Zen + 411e Zen Micro + 4120 Nomad MuVo TX FM + 4123 Zen Portable Media Center + 4124 MuVo^2 FM (uHDD) + 4126 Dell DJ (2nd gen) + 4127 Dell DJ + 4128 NOMAD Jukebox Zen Xtra (mtp) + 412b MuVo N200 with FM radio + 412f Dell Digital Jukebox 2.Gen + 4130 Zen Micro (mtp) + 4131 DAP-HD0014 [Zen Touch] (MTP) + 4133 Mass Storage Device + 4134 Zen Neeon + 4136 Zen Sleek + 4137 Zen Sleek (mtp) + 4139 Zen Nano Plus + 413c Zen MicroPhoto + 4150 Zen V (MTP) + 4151 Zen Vision:M (mtp) + 4152 Zen V Plus + 4153 Zen Vision W + 4154 Zen Stone + 4155 Zen Stone plus + 4157 Zen (MTP) + 500f Broadband Blaster 8012U-V + 5015 TECOM Bluetooth Device + ffff Webcam Live! Ultra +041f LCS Telegraphics +0420 Chips and Technologies + 1307 Celly SIM Card Reader +0421 Nokia Mobile Phones + 0001 E61i (PC Suite mode) + 0018 6288 GSM Smartphone + 0019 6288 GSM Smartphone (imaging mode) + 001a 6288 GSM Smartphone (file transfer mode) + 0024 5610 XpressMusic (Storage mode) + 0025 5610 XpressMusic (PC Suite mode) + 0028 5610 XpressMusic (Imaging mode) + 002d 6120 Phone (Mass storage mode) + 002e 6120 Phone (Media-Player mode) + 002f 6120 Phone (PC-Suite mode) + 0042 E51 (PC Suite mode) + 0064 3109c GSM Phone + 006b 5310 Xpress Music (PC Suite mode) + 006c 5310 Xpress music (Storage mode) + 006d N95 (Storage mode) + 006e N95 (Multimedia mode) + 006f N95 (Printing mode) + 0070 N95 (PC Suite mode) + 0096 N810 Internet Tablet + 00aa E71 (Mass storage mode) + 00ab E71 (PC Suite mode) + 00e4 E71 (Media transfer mode) + 0103 ADL Flashing Engine AVALON Parent + 0104 ADL Re-Flashing Engine Parent + 0105 Nokia Firmware Upgrade Mode + 0106 ROM Parent + 010d E75 (Storage Mode) + 010e E75 (PC Suite mode) + 010f E75 (Media transfer mode) + 0110 E75 (Imaging Mode) + 0154 5800 XpressMusic (PC Suite mode) + 0155 5800 XpressMusic (Multimedia mode) + 0156 5800 XpressMusic (Storage mode) + 0157 5800 XpressMusic (Imaging mode) + 0199 6700 Classic (msc) + 019a 6700 Classic (PC Suite) + 019b 6700 Classic (mtp) + 01b0 6303 classic Phone (PC Suite mode) + 01b1 6303 classic Phone (Mass storage mode) + 01b2 6303 classic Phone (Printing and media mode) + 01c7 N900 (Storage Mode) + 01c8 N900 (PC-Suite Mode) + 0228 5530 XpressMusic + 023a 6730 Classic + 026a N97 (mass storage) + 026b N97 (Multimedia) + 026c N97 (PC Suite) + 026d N97 (Pictures) + 0295 660i/6600i Slide Phone (Mass Storage) + 0297 660i/6600i Slide Phone (Still Image) + 02e1 5230 (Storage mode) + 02e2 5230 (Multimedia mode) + 02e3 5230 (PC-Suite mode) + 02e4 5230 (Imaging mode) + 0360 C1-01 Ovi Suite Mode + 0396 C7-00 (Modem mode) + 03a4 C5 (Storage mode) + 03c0 C7-00 (Mass storage mode) + 03c1 C7-00 (Media transfer mode) + 03cd C7-00 (Nokia Suite mode) + 03d1 N950 + 0400 7600 Phone Parent + 0401 6650 GSM Phone + 0402 6255 Phone Parent + 0404 5510 + 0405 9500 GSM Communicator + 0407 Music Player HDR-1(tm) + 040b N-Gage GSM Phone + 040d 6620 Phone Parent + 040e 6651 Phone Parent + 040f 6230 GSM Phone + 0410 6630 Imaging Smartphone + 0411 7610 Phone Parent + 0413 6260 Phone Parent + 0414 7370 + 0415 9300 GSM Smartphone + 0416 6170 Phone Parent + 0417 7270 Phone Parent + 0418 E70 (PC Suite mode) + 0419 E60 (PC Suite mode) + 041a 9500 GSM Communicator (RNDIS) + 041b 9300 GSM Smartphone (RNDIS) + 041c 7710 Phone Parent + 041d 6670 Phone Parent + 041e 6680 + 041f 6235 Phone Parent + 0421 3230 Phone Parent + 0422 6681 Phone Parent + 0423 6682 Phone Parent + 0428 6230i Modem + 0429 6230i MultiMedia Card + 0431 770 Internet Tablet + 0432 N90 Phone Parent + 0435 E70 (IP Passthrough/RNDIS mode) + 0436 E60 (IP Passthrough/RNDIS mode) + 0437 6265 Phone Parent + 043a N70 USB Phone Parent + 043b 3155 Phone Parent + 043c 6155 Phone Parent + 043d 6270 Phone Parent + 0443 N70 Phone Parent + 0444 N91 + 044c NM850iG Phone Parent + 044d E61 (PC Suite mode) + 044e E61 (Data Exchange mode) + 044f E61 (IP Passthrough/RNDIS mode) + 0453 9300 Phone Parent + 0456 6111 Phone Parent + 0457 6111 Phone (Printing mode) + 045a 6280 Phone Parent + 045d 6282 Phone Parent + 046e 6110 Navigator + 0471 6110 Navigator + 0485 MTP Device + 04b9 5300 + 04bc 5200 (Nokia mode) + 04bd 5200 (Storage mode) + 04be 5200 (MTP mode) + 04c3 N800 Internet Tablet + 04ce E90 Communicator (PC Suite mode) + 04cf E90 Communicator (Storage mode) + 04f0 Nokia N95 (PC Suite mode) + 04f9 6300 (PC Suite mode) + 0508 E65 (PC Suite mode) + 0509 E65 (Storage mode) + 0518 N9 Phone + 054d C2-01 + 0600 Digital Pen SU-1B + 0610 CS-15 (Internet Stick 3G modem) + 0661 Lumia 620/920 + 0662 301 Dual SIM (Mass Storage) + 0663 301 Dual SIM + 069a 130 [RM-1035] (Charging only) + 06fc Lumia 640 Phone + 0720 X (RM-980) + 0800 Connectivity Cable DKU-5 + 0801 Data Cable DKU-6 + 0802 CA-42 Phone Parent +0422 ADI Systems, Inc. +0423 Computer Access Technology Corp. + 000a NetMate Ethernet + 000c NetMate2 Ethernet + 000d USB Chief Analyzer + 0100 Generic Universal Protocol Analyzer + 0101 UPA USBTracer + 0200 Generic 10K Universal Protocol Analyzer + 020a PETracer ML + 0300 Generic Universal Protocol Analyzer + 0301 2500H Tracer Trainer + 030a PETracer x1 + 1237 Andromeda Hub +0424 Standard Microsystems Corp. + 0001 Integrated Hub + 0140 LPC47M14x hub + 0acd Sitecom Internal Multi Memory reader/writer MD-005 + 0fdc Floppy + 10cd Sitecom Internal Multi Memory reader/writer MD-005 + 2020 USB Hub + 20cd Sitecom Internal Multi Memory reader/writer MD-005 + 20fc 6-in-1 Card Reader + 2134 Hub + 2228 9-in-2 Card Reader + 223a 8-in-1 Card Reader + 2503 USB 2.0 Hub + 2504 USB 2.0 Hub + 2507 hub + 2512 USB 2.0 Hub + 2513 2.0 Hub + 2514 USB 2.0 Hub + 2517 Hub + 2524 USB MultiSwitch Hub + 2602 USB 2.0 Hub + 2640 USB 2.0 Hub + 2660 Hub + 274d HTC Hub Controller + 3fcc RME MADIface + 4041 Hub and media card controller + 4060 Ultra Fast Media Reader + 4064 Ultra Fast Media Reader + 5434 Hub + 5534 Hub + 7500 LAN7500 Ethernet 10/100/1000 Adapter + 9500 LAN9500/LAN9500i + 9512 SMC9512/9514 USB Hub + 9514 SMC9514 Hub + 9904 LAN9512/LAN9514 Ethernet 10/100 Adapter (SAL10) + 9e00 LAN9500A/LAN9500Ai + a700 2 Port Hub + ec00 SMSC9512/9514 Fast Ethernet Adapter +0425 Motorola Semiconductors HK, Ltd + 0101 G-Tech Wireless Mouse & Keyboard + f102 G-Tech U+P Wireless Mouse +0426 Integrated Device Technology, Inc. + 0426 WDM Driver +0427 Motorola Electronics Taiwan, Ltd +0428 Advanced Gravis Computer Tech, Ltd + 4001 GamePad Pro +0429 Cirrus Logic +042a Ericsson Austrian, AG +042b Intel Corp. + 9316 8x931Hx Customer Hub +042c Innovative Semiconductors, Inc. +042d Micronics +042e Acer, Inc. + 0380 MP3 Player +042f Molex, Inc. +0430 Sun Microsystems, Inc. + 0002 109 Keyboard + 0005 Type 6 Keyboard + 000a 109 Japanese Keyboard + 000b 109 Japanese Keyboard + 0082 109 Japanese Keyboard + 0083 109 Japanese Keyboard + 00a2 Type 7 Keyboard + 0100 3-button Mouse + 100e 24.1" LCD Monitor v4 / FID-638 Mouse + 36ba Bus Powered Hub + a101 remote key/mouse for P3 chip + a102 remote key/mouse/storage for P3 chip + a103 remote storage for P3 chip + a111 remote keyboard for P4 chip + a112 remote mouse for P4 chip + a113 remote storage for P4 chip + a4a2 Ethernet (RNDIS and CDC ethernet) + cdab Raritan KVM dongle +0431 Itac Systems, Inc. + 0100 Mouse-Trak 3-button Track Ball +0432 Unisys Corp. + 0031 Document Processor +0433 Alps Electric, Inc. + 1101 IBM Game Controller + abab Keyboard +0434 Samsung Info. Systems America, Inc. +0435 Hyundai Electronics America +0436 Taugagreining HF + 0005 CameraMate (DPCM_USB) +0437 Framatome Connectors USA +0438 Advanced Micro Devices, Inc. +0439 Voice Technologies Group +043d Lexmark International, Inc. + 0001 Laser Printer + 0002 Optra E310 Printer + 0003 Laser Printer + 0004 Laser Printer + 0005 Laser Printer + 0006 Laser Printer + 0007 Laser Printer + 0008 Inkjet Color Printer + 0009 Optra S2450 Printer + 000a Laser Printer + 000b Inkjet Color Printer + 000c Optra E312 Printer + 000d Laser Printer + 000e Laser Printer + 000f Laser Printer + 0010 Laser Printer + 0011 Laser Printer + 0012 Inkjet Color Printer + 0013 Inkjet Color Printer + 0014 InkJet Color Printer + 0015 InkJet Color Printer + 0016 Z12 Color Jetprinter + 0017 Z32 printer + 0018 Z52 Printer + 0019 Forms Printer + 001a Z65 Printer + 001b InkJet Photo Printer + 001c Kodak Personal Picture Maker 200 Printer + 001d InkJet Color Printer + 001e InkJet Photo Printer + 001f Kodak Personal Picture Maker 200 Card Reader + 0020 Z51 Printer + 0021 Z33 Printer + 0022 InkJet Color Printer + 0023 Laser Printer + 0024 Laser Printer + 0025 InkJet Color Printer + 0026 InkJet Color Printer + 0027 InkJet Color Printer + 0028 InkJet Color Printer + 0029 Scan Print Copy + 002a Scan Print Copy + 002b Scan Print Copy + 002c Scan Print Copy + 002d X70/X73 Scan/Print/Copy + 002e Scan Print Copy + 002f Scan Print Copy + 0030 Scan Print Copy + 0031 Scan Print Copy + 0032 Scan Print Copy + 0033 Scan Print Copy + 0034 Scan Print Copy + 0035 Scan Print Copy + 0036 Scan Print Copy + 0037 Scan Print Copy + 0038 Scan Print Copy + 0039 Scan Print Copy + 003a Scan Print Copy + 003b Scan Print Copy + 003c Scan Print Copy + 003d X83 Scan/Print/Copy + 003e Scan Print Copy + 003f Scan Print Copy + 0040 Scan Print Copy + 0041 Scan Print Copy + 0042 Scan Print Copy + 0043 Scan Print Copy + 0044 Scan Print Copy + 0045 Scan Print Copy + 0046 Scan Print Copy + 0047 Scan Print Copy + 0048 Scan Print Copy + 0049 Scan Print Copy + 004a Scan Print Copy + 004b Scan Print Copy + 004c Scan Print Copy + 004d Laser Printer + 004e Laser Printer + 004f InkJet Color Printer + 0050 InkJet Color Printer + 0051 Laser Printer + 0052 Laser Printer + 0053 InkJet Color Printer + 0054 InkJet Color Printer + 0057 Z35 Printer + 0058 Laser Printer + 005a X63 + 005c InkJet Color Printer + 0060 X74/X75 Scanner + 0061 X74 Hub + 0065 X5130 + 0069 X74/X75 Printer + 006d X125 + 006e C510 + 0072 X6170 Printer + 0073 InkJet Color Printer + 0078 InkJet Color Printer + 0079 InkJet Color Printer + 007a Generic Hub + 007b InkJet Color Printer + 007c X1110/X1130/X1140/X1150/X1170/X1180/X1185 + 007d Photo 3150 + 008a 4200 series + 008b InkJet Color Printer + 008c to CF/SM/SD/MS Card Reader + 008e InkJet Color Printer + 008f X422 + 0093 X5250 + 0095 E220 Printer + 0096 2200 series + 0097 P6250 + 0098 7100 series + 009e P910 series Human Interface Device + 009f InkJet Color Printer + 00a9 IBM Infoprint 1410 MFP + 00ab InkJet Color Printer + 00b2 3300 series + 00b8 7300 series + 00b9 8300 series + 00ba InkJet Color Printer + 00bb 2300 series + 00bd Printing Support + 00be Printing Support + 00bf Printing Support + 00c0 6300 series + 00c1 4300 series + 00c7 Printing Support + 00c8 Printing Support + 00c9 Printing Support + 00cb Printing Support + 00cc E120(n) + 00d0 9300 series + 00d3 X340 Scanner + 00d4 X342n Scanner + 00d5 Printing Support + 00d6 X340 Scanner + 00e8 X642e + 00e9 2400 series + 00f6 3400 series + 00f7 InkJet Color Printer + 00ff InkJet Color Printer + 010b 2500 series + 010d 3500-4500 series + 010f 6500 series + 0142 X3650 (Printer, Scanner, Copier) + 01fa S310 series + 4303 Xerox WorkCentre Pro 412 +043e LG Electronics USA, Inc. + 3001 AN-WF100 802.11abgn Wireless Adapter [Broadcom BCM4323] + 3004 TWFM-B003D 802.11abgn Wireless Module [Broadcom BCM43236B] + 3101 AN-WF500 802.11abgn + BT Wireless Adapter [Broadcom BCM43242] + 42bd Flatron 795FT Plus Monitor + 4a4d Flatron 915FT Plus Monitor + 7001 MF-PD100 Soul Digital MP3 Player + 7013 MP3 Player + 70d7 Mouse Scanner LSM-150 [LG Smart Scan Mouse] + 70f5 External HDD + 8484 LPC-U30 Webcam II + 8585 LPC-UC35 Webcam + 8888 Electronics VCS Camera II(LPC-U20) + 9800 Remote Control Receiver_iMON + 9803 eHome Infrared Receiver + 9804 DMB Receiver Control + 9c01 LGE Sync +043f RadiSys Corp. +0440 Eizo Nanao Corp. +0441 Winbond Systems Lab. + 1456 Hub +0442 Ericsson, Inc. + abba Bluetooth Device +0443 Gateway, Inc. + 000e Multimedia Keyboard + 002e Millennium Keyboard +0445 Lucent Technologies, Inc. +0446 NMB Technologies Corp. + 6781 Keyboard with PS/2 Mouse Port + 6782 Keyboard +0447 Momentum Microsystems +0449 Duta Multi Robotik + 0128 Menengah + 0210 Dasar + 0612 Lanjutan +044a Shamrock Tech. Co., Ltd +044b WSI +044c CCL/ITRI +044d Siemens Nixdorf AG +044e Alps Electric Co., Ltd + 1104 Japanese Keyboard + 2002 MD-5500 Printer + 2014 Bluetooth Device + 3001 UGTZ4 Bluetooth + 3002 Bluetooth Device + 3003 Bluetooth Device + 3004 Bluetooth Adapter + 3005 Integrated Bluetooth Device + 3006 Bluetooth Adapter + 3007 Bluetooth Controller (ALPS/UGX) + 300c Bluetooth Controller (ALPS/UGPZ6) + 300d Bluetooth Controller (ALPS/UGPZ6) + 3010 Bluetooth Adapter + 3017 BCM2046 Bluetooth Device + ffff Compaq Bluetooth Multiport Module +044f ThrustMaster, Inc. + 0400 HOTAS Cougar + 0402 HOTAS Warthog Joystick + 0404 HOTAS Warthog Throttle + 044f GP XID + 0f00 Steering Wheel for Xbox + 0f03 Steering Wheel for Xbox + 0f07 Controller for Xbox + 0f0c Xbox Memory Unit (8MB) + 0f10 Modena GT Wheel + a003 Rage 3D Game Pad + a01b PK-GP301 Driving Wheel + a0a0 Top Gun Joystick + a0a1 Top Gun Joystick (rev2) + a0a3 Fusion Digital GamePad + a201 PK-GP201 PlayStick + b108 T-Flight Hotas X Flight Stick + b10a T.16000M Joystick + b203 360 Modena Pro Wheel + b300 Firestorm Dual Power + b303 FireStorm Dual Analog 2 + b304 Firestorm Dual Power + b307 vibrating Upad + b30b Wireless VibrationPad + b315 Firestorm Dual Analog 3 + b323 Dual Trigger 3-in-1 (PC Mode) + b324 Dual Trigger 3-in-1 (PS3 Mode) + b326 Gamepad GP XID + b603 force feedback Wheel + b605 force feedback Racing Wheel + b651 Ferrari GT Rumble Force Wheel + b653 RGT Force Feedback Clutch Racing Wheel + b654 Ferrari GT Force Feedback Wheel + b678 T.Flight Rudder Pedals + b687 TWCS Throttle + b700 Tacticalboard +0450 DFI, Inc. +0451 Texas Instruments, Inc. + 1234 Bluetooth Device + 1428 Hub + 1446 TUSB2040/2070 Hub + 16a6 BM-USBD1 BlueRobin RF heart rate sensor receiver + 2036 TUSB2036 Hub + 2046 TUSB2046 Hub + 2077 TUSB2077 Hub + 2f90 SM-USB-DIG + 3410 TUSB3410 Microcontroller + 3f00 OMAP1610 + 3f02 SMC WSKP100 Wi-Fi Phone + 505f TUSB5052 Serial + 5153 TUSB5052 Hub + 5409 Frontier Labs NEX IA+ Digital Audio Player + 6000 AU5 ADSL Modem (pre-reenum) + 6001 AU5 ADSL Modem + 6060 RNDIS/BeWAN ADSL2+ + 6070 RNDIS/BeWAN ADSL2+ + 625f TUSB6250 ATA Bridge + 8041 Hub + 8042 Hub + 8043 Hub + 8140 TUSB8041 4-Port Hub + 8142 TUSB8041 4-Port Hub + 926b TUSB9260 Boot Loader + dbc0 Device Bay Controller + e001 GraphLink [SilverLink] + e003 TI-84 Plus Calculator + e004 TI-89 Titanium Calculator + e008 TI-84 Plus Silver Calculator + e012 TI-Nspire Calculator + f430 MSP-FET430UIF JTAG Tool + f432 eZ430 Development Tool + ffff Bluetooth Device +0452 Mitsubishi Electronics America, Inc. + 0021 HID Monitor Controls + 0050 Diamond Pro 900u CRT Monitor + 0051 Integrated Hub + 0100 Control Panel for Leica TCS SP5 +0453 CMD Technology + 6781 NMB Keyboard + 6783 Chicony Composite Keyboard +0454 Vobis Microcomputer AG +0455 Telematics International, Inc. +0456 Analog Devices, Inc. + f000 FT2232 JTAG ICE [gnICE] + f001 FT2232H Hi-Speed JTAG ICE [gnICE+] +0457 Silicon Integrated Systems Corp. + 0150 Super Talent 1GB Flash Drive + 0151 Super Flash 1GB / GXT 64MB Flash Drive + 0162 SiS162 usb Wireless LAN Adapter + 0163 SiS163U 802.11 Wireless LAN Adapter + 0817 SiS-184-ASUS-4352.17 touch panel + 10e1 HID Touch Controller + 5401 Wireless Adapter RO80211GS-USB +0458 KYE Systems Corp. (Mouse Systems) + 0001 Mouse + 0002 Genius NetMouse Pro + 0003 Genius NetScroll+ + 0006 Easy Mouse+ + 000b NetMouse Wheel(P+U) + 000c TACOMA Fingerprint V1.06.01 + 000e Genius NetScroll Optical + 0013 TACOMA Fingerprint Mouse V1.06.01 + 001a Genius WebScroll+ + 002e NetScroll + Traveler / NetScroll 110 + 0036 Pocket Mouse LE + 0039 NetScroll+ Superior + 003a NetScroll+ Mini Traveler / Genius NetScroll 120 + 004c Slimstar Pro Keyboard + 0056 Ergo 300 Mouse + 0057 Enhanced Gaming Device + 0059 Enhanced Laser Device + 005a Enhanced Device + 005b Enhanced Device + 005c Enhanced Laser Gaming Device + 005d Enhanced Device + 0061 Bluetooth Dongle + 0066 Genius Traveler 1000 Wireless Mouse + 0072 Navigator 335 + 0083 Bluetooth Dongle + 0087 Ergo 525V Laser Mouse + 0089 Genius Traveler 350 + 00ca Pen Mouse + 0100 EasyPen Tablet + 0101 CueCat + 011b NetScroll T220 + 1001 Joystick + 1002 Game Pad + 1003 Genius VideoCam + 1004 Flight2000 F-23 Joystick + 100a Aashima Technology Trust Sight Fighter Vibration Feedback Joystick + 2001 ColorPage-Vivid Pro Scanner + 2004 ColorPage-HR6 V1 Scanner + 2005 ColorPage-HR6/Vivid3 + 2007 ColorPage-HR6 V2 Scanner + 2008 ColorPage-HR6 V2 Scanner + 2009 ColorPage-HR6A Scanner + 2011 ColorPage-Vivid3x Scanner + 2012 Plustek Scanner + 2013 ColorPage-HR7 Scanner + 2014 ColorPage-Vivid4 + 2015 ColorPage-HR7LE Scanner + 2016 ColorPage-HR6X Scanner + 2017 ColorPage-Vivid3xe + 2018 ColorPage-HR7X + 2019 ColorPage-HR6X Slim + 201a ColorPage-Vivid4xe + 201b ColorPage-Vivid4x + 201c ColorPage-HR8 + 201d ColorPage-Vivid 1200 X + 201e ColorPage-Slim 1200 + 201f ColorPage-Vivid 1200 XE + 2020 ColorPage-Slim 1200 USB2 + 2021 ColorPage-SF600 + 3017 SPEED WHEEL 3 Vibration + 3018 Wireless 2.4Ghz Game Pad + 3019 10-Button USB Joystick with Vibration + 301a MaxFire G-12U Vibration + 301d Genius MaxFire MiniPad + 400f Genius TVGo DVB-T02Q MCE + 4012 TVGo DVB-T03 [AF9015] + 5003 G-pen 560 Tablet + 5004 G-pen Tablet + 505e Genius iSlim 330 + 6001 GF3000F Ethernet Adapter + 7004 VideoCAM Express V2 + 7006 Dsc 1.3 Smart Camera Device + 7007 VideoCAM Web + 7009 G-Shot G312 Still Camera Device + 700c VideoCAM Web V3 + 700d G-Shot G511 Composite Device + 700f VideoCAM Web + 7012 WebCAM USB2.0 + 7014 VideoCAM Live V3 + 701c G-Shot G512 Still Camera + 7020 Sim 321C + 7025 Eye 311Q Camera + 7029 Genius Look 320s (SN9C201 + HV7131R) + 702f Genius Slim 322 + 7035 i-Look 325T Camera + 7045 Genius Look 1320 V2 + 704c Genius i-Look 1321 + 704d Slim 1322AF + 7055 Slim 2020AF camera + 705a Asus USB2.0 Webcam + 705c Genius iSlim 1300AF + 7061 Genius iLook 1321 V2 + 7066 Acer Crystal Eye Webcam + 7067 Genius iSlim 1300AF V2 + 7068 Genius eFace 1325R + 706d Genius iSlim 2000AF V2 + 7076 Genius FaceCam 312 + 7079 FaceCam 2025R + 707f TVGo DVB-T03 [RTL2832] + 7088 WideCam 1050 + 7089 Genius FaceCam 320 + 708c Genius WideCam F100 +0459 Adobe Systems, Inc. +045a SONICblue, Inc. + 07da Supra Express 56K modem + 0b4a SupraMax 2890 56K Modem [Lucent Atlas] + 0b68 SupraMax 56K Modem + 5001 Rio 600 MP3 Player + 5002 Rio 800 MP3 Player + 5003 Nike Psa/Play MP3 Player + 5005 Rio S10 MP3 Player + 5006 Rio S50 MP3 Player + 5007 Rio S35 MP3 Player + 5008 Rio 900 MP3 Player + 5009 Rio S30 MP3 Player + 500d Fuse MP3 Player + 500e Chiba MP3 Player + 500f Cali MP3 Player + 5010 Rio S11 MP3 Player + 501c Virgin MPF-1000 + 501d Rio Fuse + 501e Rio Chiba + 501f Rio Cali + 503f Cali256 MP3 Player + 5202 Rio Riot MP3 Player + 5210 Rio Karma Music Player + 5220 Rio Nitrus MP3 Player + 5221 Rio Eigen +045b Hitachi, Ltd + 0053 RX610 RX-Stick +045d Nortel Networks, Ltd +045e Microsoft Corp. + 0007 SideWinder Game Pad + 0008 SideWinder Precision Pro + 0009 IntelliMouse + 000b Natural Keyboard Elite + 000e SideWinder® Freestyle Pro + 0014 Digital Sound System 80 + 001a SideWinder Precision Racing Wheel + 001b SideWinder Force Feedback 2 Joystick + 001c Internet Keyboard Pro + 001d Natural Keyboard Pro + 001e IntelliMouse Explorer + 0023 Trackball Optical + 0024 Trackball Explorer + 0025 IntelliEye Mouse + 0026 SideWinder GamePad Pro + 0027 SideWinder PnP GamePad + 0028 SideWinder Dual Strike + 0029 IntelliMouse Optical + 002b Internet Keyboard Pro + 002d Internet Keyboard + 002f Integrated Hub + 0033 Sidewinder Strategic Commander + 0034 SideWinder Force Feedback Wheel + 0038 SideWinder Precision 2 + 0039 IntelliMouse Optical + 003b SideWinder Game Voice + 003c SideWinder Joystick + 0040 Wheel Mouse Optical + 0047 IntelliMouse Explorer 3.0 + 0048 Office Keyboard 1.0A + 0053 Optical Mouse + 0059 Wireless IntelliMouse Explorer + 005c Office Keyboard (106/109) + 005f Wireless MultiMedia Keyboard + 0061 Wireless MultiMedia Keyboard (106/109) + 0063 Wireless Natural MultiMedia Keyboard + 0065 Wireless Natural MultiMedia Keyboard (106/109) + 006a Wireless Optical Mouse (IntelliPoint) + 006d eHome Remote Control Keyboard keys + 006e MN-510 802.11b Wireless Adapter [Intersil ISL3873B] + 006f Smart Display Reference Device + 0070 Wireless MultiMedia Keyboard + 0071 Wireless MultiMedia Keyboard (106/109) + 0072 Wireless Natural MultiMedia Keyboard + 0073 Wireless Natural MultiMedia Keyboard (106/109) + 0079 IXI Ogo CT-17 handheld device + 007a 10/100 USB NIC + 007d Notebook Optical Mouse + 007e Wireless Transceiver for Bluetooth + 0080 Digital Media Pro Keyboard + 0083 Basic Optical Mouse + 0084 Basic Optical Mouse + 008a Wireless Optical Desktop Receiver 2.0A + 008b Dual Receiver Wireless Mouse (IntelliPoint) + 008c Wireless Intellimouse Explorer 2.0 + 0095 IntelliMouse Explorer 4.0 (IntelliPoint) + 009c Wireless Transceiver for Bluetooth 2.0 + 009d Wireless Optical Desktop 3.0 + 00a0 eHome Infrared Receiver + 00a4 Compact Optical Mouse, model 1016 + 00b0 Digital Media Pro Keyboard + 00b4 Digital Media Keyboard 1.0A + 00b9 Wireless Optical Mouse 3.0 + 00bb Fingerprint Reader + 00bc Fingerprint Reader + 00bd Fingerprint Reader + 00c2 MN-710 802.11g Wireless Adapter [Intersil ISL3886] + 00c9 MTP Device + 00ca Fingerprint Reader + 00cb Basic Optical Mouse v2.0 + 00ce Generic PPC Flash device + 00d1 Optical Mouse with Tilt Wheel + 00da eHome Infrared Receiver + 00db Natural Ergonomic Keyboard 4000 V1.0 + 00dd Comfort Curve Keyboard 2000 V1.0 + 00e1 Wireless Laser Mouse 6000 Receiver + 00f4 LifeCam VX-6000 (SN9C20x + OV9650) + 00f5 LifeCam VX-3000 + 00f6 Comfort Optical Mouse 1000 + 00f7 LifeCam VX-1000 + 00f8 LifeCam NX-6000 + 00f9 Wireless Desktop Receiver 3.1 + 0202 Xbox Controller + 0280 Xbox Memory Unit (8MB) + 0283 Xbox Communicator + 0284 Xbox DVD Playback Kit + 0285 Xbox Controller S + 0288 Xbox Controller S Hub + 0289 Xbox Controller S + 028b Xbox360 DVD Emulator + 028d Xbox360 Memory Unit 64MB + 028e Xbox360 Controller + 028f Xbox360 Wireless Controller + 0290 Xbox360 Performance Pipe (PIX) + 0291 Xbox 360 Wireless Receiver for Windows + 0292 Xbox360 Wireless Networking Adapter + 029c Xbox360 HD-DVD Drive + 029d Xbox360 HD-DVD Drive + 029e Xbox360 HD-DVD Memory Unit + 02a0 Xbox360 Big Button IR + 02a1 Xbox 360 Wireless Receiver for Windows + 02a8 Xbox360 Wireless N Networking Adapter [Atheros AR7010+AR9280] + 02ad Xbox NUI Audio + 02ae Xbox NUI Camera + 02b0 Xbox NUI Motor + 02b6 Xbox360 Bluetooth Wireless Headset + 02bb Kinect Audio + 02be Kinect for Windows NUI Audio + 02bf Kinect for Windows NUI Camera + 02c2 Kinect for Windows NUI Motor + 02d1 Xbox One Controller + 02d5 Xbox One Digital TV Tuner + 02dd Xbox One Controller (Firmware 2015) + 02e3 Xbox One Elite Controller + 02e6 Wireless XBox Controller Dongle + 02ea Xbox One S Controller + 02fd Xbox One S Controller [Bluetooth] + 0400 Windows Powered Pocket PC 2002 + 0401 Windows Powered Pocket PC 2002 + 0402 Windows Powered Pocket PC 2002 + 0403 Windows Powered Pocket PC 2002 + 0404 Windows Powered Pocket PC 2002 + 0405 Windows Powered Pocket PC 2002 + 0406 Windows Powered Pocket PC 2002 + 0407 Windows Powered Pocket PC 2002 + 0408 Windows Powered Pocket PC 2002 + 0409 Windows Powered Pocket PC 2002 + 040a Windows Powered Pocket PC 2002 + 040b Windows Powered Pocket PC 2002 + 040c Windows Powered Pocket PC 2002 + 040d Windows Powered Pocket PC 2002 + 040e Windows Powered Pocket PC 2002 + 040f Windows Powered Pocket PC 2002 + 0410 Windows Powered Pocket PC 2002 + 0411 Windows Powered Pocket PC 2002 + 0412 Windows Powered Pocket PC 2002 + 0413 Windows Powered Pocket PC 2002 + 0414 Windows Powered Pocket PC 2002 + 0415 Windows Powered Pocket PC 2002 + 0416 Windows Powered Pocket PC 2002 + 0417 Windows Powered Pocket PC 2002 + 0432 Windows Powered Pocket PC 2003 + 0433 Windows Powered Pocket PC 2003 + 0434 Windows Powered Pocket PC 2003 + 0435 Windows Powered Pocket PC 2003 + 0436 Windows Powered Pocket PC 2003 + 0437 Windows Powered Pocket PC 2003 + 0438 Windows Powered Pocket PC 2003 + 0439 Windows Powered Pocket PC 2003 + 043a Windows Powered Pocket PC 2003 + 043b Windows Powered Pocket PC 2003 + 043c Windows Powered Pocket PC 2003 + 043d Becker Traffic Assist Highspeed 7934 + 043e Windows Powered Pocket PC 2003 + 043f Windows Powered Pocket PC 2003 + 0440 Windows Powered Pocket PC 2003 + 0441 Windows Powered Pocket PC 2003 + 0442 Windows Powered Pocket PC 2003 + 0443 Windows Powered Pocket PC 2003 + 0444 Windows Powered Pocket PC 2003 + 0445 Windows Powered Pocket PC 2003 + 0446 Windows Powered Pocket PC 2003 + 0447 Windows Powered Pocket PC 2003 + 0448 Windows Powered Pocket PC 2003 + 0449 Windows Powered Pocket PC 2003 + 044a Windows Powered Pocket PC 2003 + 044b Windows Powered Pocket PC 2003 + 044c Windows Powered Pocket PC 2003 + 044d Windows Powered Pocket PC 2003 + 044e Windows Powered Pocket PC 2003 + 044f Windows Powered Pocket PC 2003 + 0450 Windows Powered Pocket PC 2003 + 0451 Windows Powered Pocket PC 2003 + 0452 Windows Powered Pocket PC 2003 + 0453 Windows Powered Pocket PC 2003 + 0454 Windows Powered Pocket PC 2003 + 0455 Windows Powered Pocket PC 2003 + 0456 Windows Powered Pocket PC 2003 + 0457 Windows Powered Pocket PC 2003 + 0458 Windows Powered Pocket PC 2003 + 0459 Windows Powered Pocket PC 2003 + 045a Windows Powered Pocket PC 2003 + 045b Windows Powered Pocket PC 2003 + 045c Windows Powered Pocket PC 2003 + 045d Windows Powered Pocket PC 2003 + 045e Windows Powered Pocket PC 2003 + 045f Windows Powered Pocket PC 2003 + 0460 Windows Powered Pocket PC 2003 + 0461 Windows Powered Pocket PC 2003 + 0462 Windows Powered Pocket PC 2003 + 0463 Windows Powered Pocket PC 2003 + 0464 Windows Powered Pocket PC 2003 + 0465 Windows Powered Pocket PC 2003 + 0466 Windows Powered Pocket PC 2003 + 0467 Windows Powered Pocket PC 2003 + 0468 Windows Powered Pocket PC 2003 + 0469 Windows Powered Pocket PC 2003 + 046a Windows Powered Pocket PC 2003 + 046b Windows Powered Pocket PC 2003 + 046c Windows Powered Pocket PC 2003 + 046d Windows Powered Pocket PC 2003 + 046e Windows Powered Pocket PC 2003 + 046f Windows Powered Pocket PC 2003 + 0470 Windows Powered Pocket PC 2003 + 0471 Windows Powered Pocket PC 2003 + 0472 Windows Powered Pocket PC 2003 + 0473 Windows Powered Pocket PC 2003 + 0474 Windows Powered Pocket PC 2003 + 0475 Windows Powered Pocket PC 2003 + 0476 Windows Powered Pocket PC 2003 + 0477 Windows Powered Pocket PC 2003 + 0478 Windows Powered Pocket PC 2003 + 0479 Windows Powered Pocket PC 2003 + 047a Windows Powered Pocket PC 2003 + 047b Windows Powered Pocket PC 2003 + 04c8 Windows Powered Smartphone 2002 + 04c9 Windows Powered Smartphone 2002 + 04ca Windows Powered Smartphone 2002 + 04cb Windows Powered Smartphone 2002 + 04cc Windows Powered Smartphone 2002 + 04cd Windows Powered Smartphone 2002 + 04ce Windows Powered Smartphone 2002 + 04d7 Windows Powered Smartphone 2003 + 04d8 Windows Powered Smartphone 2003 + 04d9 Windows Powered Smartphone 2003 + 04da Windows Powered Smartphone 2003 + 04db Windows Powered Smartphone 2003 + 04dc Windows Powered Smartphone 2003 + 04dd Windows Powered Smartphone 2003 + 04de Windows Powered Smartphone 2003 + 04df Windows Powered Smartphone 2003 + 04e0 Windows Powered Smartphone 2003 + 04e1 Windows Powered Smartphone 2003 + 04e2 Windows Powered Smartphone 2003 + 04e3 Windows Powered Smartphone 2003 + 04e4 Windows Powered Smartphone 2003 + 04e5 Windows Powered Smartphone 2003 + 04e6 Windows Powered Smartphone 2003 + 04e7 Windows Powered Smartphone 2003 + 04e8 Windows Powered Smartphone 2003 + 04e9 Windows Powered Smartphone 2003 + 04ea Windows Powered Smartphone 2003 + 04ec Windows Phone (Zune) + 063e Zune HD Media Player + 0640 KIN Phone + 0641 KIN Phone + 0642 KIN Phone + 0707 Wireless Laser Mouse 8000 + 0708 Transceiver v 3.0 for Bluetooth + 070a Charon Bluetooth Dongle (DFU) + 070f LifeChat LX-3000 Headset + 0710 Zune Media Player + 0713 Wireless Presenter Mouse 8000 + 0719 Xbox 360 Wireless Adapter + 071f Mouse/Keyboard 2.4GHz Transceiver V2.0 + 0721 LifeCam NX-3000 (UVC-compliant) + 0723 LifeCam VX-7000 (UVC-compliant) + 0724 SideWinder Mouse + 0728 LifeCam VX-5000 + 0730 Digital Media Keyboard 3000 + 0734 Wireless Optical Desktop 700 + 0736 Sidewinder X5 Mouse + 0737 Compact Optical Mouse 500 + 0745 Nano Transceiver v1.0 for Bluetooth + 074a LifeCam VX-500 [1357] + 0750 Wired Keyboard 600 + 0752 Wired Keyboard 400 + 075d LifeCam Cinema + 0761 LifeCam VX-2000 + 0765 Xbox360 Slim Internal Wireless Module (1400) [Marvell 88W8786U] + 0766 LifeCam VX-800 + 0768 Sidewinder X4 + 076c Comfort Mouse 4500 + 076d LifeCam HD-5000 + 0770 LifeCam VX-700 + 0772 LifeCam Studio + 0779 LifeCam HD-3000 + 077f LifeChat LX-6000 Headset + 0780 Comfort Curve Keyboard 3000 + 0797 Optical Mouse 200 + 0799 Surface Pro embedded keyboard + 07a5 Wireless Receiver 1461C + 07b9 Wired Keyboard 200 + 07c6 RTL8153 GigE [Surface Dock Ethernet] + 07ca Surface Pro 3 Docking Station Audio Device + 07cd Surface Keyboard + 07f8 Wired Keyboard 600 (model 1576) + 07fd Nano Transceiver 1.1 + 0900 Surface Dock Hub + 0901 Surface Dock Hub + 0902 Surface Dock Hub + 0903 Surface Dock Hub + 0904 Surface Dock Extender + 0905 Surface Dock Audio + 090b Hub + 090c SD Card + 091a Hub + 0a00 Lumia 950 Dual SIM (RM-1118) + 930a ISOUSB.SYS Intel 82930 Isochronous IO Test Board + ffca Catalina + fff8 Keyboard + ffff Windows CE Mass Storage +0460 Ace Cad Enterprise Co., Ltd + 0004 Tablet (5x3.75) + 0006 LCD Tablet (12x9) + 0008 Tablet (3x2.25) +0461 Primax Electronics, Ltd + 0010 HP PR1101U / Primax PMX-KPR1101U Keyboard + 0300 G2-300 Scanner + 0301 G2E-300 Scanner + 0302 G2-300 #2 Scanner + 0303 G2E-300 #2 Scanner + 0340 Colorado 9600 Scanner + 0341 Colorado 600u Scanner + 0345 Visioneer 6200 Scanner + 0346 Memorex Maxx 6136u Scanner + 0347 Primascan Colorado 2600u/Visioneer 4400 Scanner + 0360 Colorado 19200 Scanner + 0361 Colorado 1200u Scanner + 0363 VistaScan Astra 3600(ENG) + 0364 LG Electronics Scanworks 600U Scanner + 0365 VistaScan Astra 3600(ENG) + 0366 6400 + 0367 VistaScan Astra 3600(ENG) + 0371 Visioneer Onetouch 8920 Scanner + 0374 UMAX Astra 2500 + 0375 VistaScan Astra 3600(ENG) + 0377 Medion MD 5345 Scanner + 0378 VistaScan Astra 3600(ENG) + 037b Medion MD 6190 Scanner + 037c VistaScan Astra 3600(ENG) + 0380 G2-600 Scanner + 0381 ReadyScan 636i Scanner + 0382 G2-600 #2 Scanner + 0383 G2E-600 Scanner + 038a UMAX Astra 3000/3600 + 038b Xerox 2400 Onetouch + 038c UMAX Astra 4100 + 0392 Medion/Lifetec/Tevion/Cytron MD 6190 + 03a8 9420M + 0813 IBM UltraPort Camera + 0815 Micro Innovations IC200 Webcam + 0819 Fujifilm IX-30 Camera [webcam mode] + 081a Fujifilm IX-30 Camera [storage mode] + 081c Elitegroup ECS-C11 Camera + 081d Elitegroup ECS-C11 Storage + 0a00 Micro Innovations Web Cam 320 + 4d01 Comfort Keyboard / Kensington Orbit Elite + 4d02 Mouse-in-a-Box + 4d03 Kensington Mouse-in-a-box + 4d04 Mouse + 4d06 Balless Mouse (HID) + 4d0f HP Optical Mouse + 4d15 Dell Optical Mouse + 4d17 Optical Mouse + 4d20 HP Optical Mouse + 4d2a PoPo Elixir Mouse (HID) + 4d2b Wireless Laser Mini Mouse (HID) + 4d2c PoPo Mini Pointer Mouse (HID) + 4d2e Optical Mobile Mouse (HID) + 4d51 0Y357C PMX-MMOCZUL (B) [Dell Laser Mouse] + 4d62 HP Laser Mobile Mini Mouse + 4d75 Rocketfish RF-FLBTAD Bluetooth Adapter + 4d81 Dell N889 Optical Mouse + 4de3 HP 5-Button Optical Comfort Mouse + 4de7 webcam + 4e04 Lenovo Keyboard KB1021 +0463 MGE UPS Systems + 0001 UPS + ffff UPS +0464 AMP/Tycoelectronics Corp. +0467 AT&T Paradyne +0468 Wieson Technologies Co., Ltd +046a Cherry GmbH + 0001 Keyboard + 0003 My3000 Hub + 0004 CyBoard Keyboard + 0005 XX33 SmartCard Reader Keyboard + 0008 Wireless Keyboard and Mouse + 0010 SmartBoard XX44 + 0011 G83 (RS 6000) Keyboard + 0021 CyMotion Expert Combo + 0023 Keyboard + 0027 CyMotion Master Solar Keyboard + 002a Wireless Mouse & Keyboard + 002d SmartTerminal XX44 + 003c Raptor Gaming Keyboard + 003d Raptor Gaming Keyboard Integrated Hub + 003e SmartTerminal ST-2xxx + 0041 G86 6240 Keyboard + 0080 eHealth Terminal ST 1503 + 0081 eHealth Keyboard G87 1504 + 00a1 SmartCard Reader Keyboard KC 1000 SC + 0106 R-300 Wireless Mouse Receiver + 010d MX-Board 3.0 Keyboard + b090 Keyboard + b091 Mouse +046b American Megatrends, Inc. + 0001 Keyboard + 0101 PS/2 Keyboard, Mouse & Joystick Ports + 0301 USB 1.0 Hub + 0500 Serial & Parallel Ports + ff10 Virtual Keyboard and Mouse +046c Toshiba Corp., Digital Media Equipment +046d Logitech, Inc. + 0082 Acer Aspire 5672 Webcam + 0200 WingMan Extreme Joystick + 0203 M2452 Keyboard + 0242 Chillstream for Xbox 360 + 0301 M4848 Mouse + 0401 HP PageScan + 0402 NEC PageScan + 040f Logitech/Storm PageScan + 0430 Mic (Cordless) + 0801 QuickCam Home + 0802 Webcam C200 + 0804 Webcam C250 + 0805 Webcam C300 + 0807 Webcam B500 + 0808 Webcam C600 + 0809 Webcam Pro 9000 + 080a Portable Webcam C905 + 080f Webcam C120 + 0810 QuickCam Pro + 0819 Webcam C210 + 081b Webcam C310 + 081d HD Webcam C510 + 0820 QuickCam VC + 0821 HD Webcam C910 + 0823 HD Webcam B910 + 0825 Webcam C270 + 0826 HD Webcam C525 + 0828 HD Webcam B990 + 082b Webcam C170 + 082c HD Webcam C615 + 082d HD Pro Webcam C920 + 0830 QuickClip + 0836 B525 HD Webcam + 0837 BCC950 ConferenceCam + 0840 QuickCam Express + 0843 Webcam C930e + 0850 QuickCam Web + 085c C922 Pro Stream Webcam + 0870 QuickCam Express + 0890 QuickCam Traveler + 0892 OrbiCam + 0894 CrystalCam + 0895 QuickCam for Dell Notebooks + 0896 OrbiCam + 0897 QuickCam for Dell Notebooks + 0899 QuickCam for Dell Notebooks + 089d QuickCam E2500 series + 08a0 QuickCam IM + 08a1 QuickCam IM with sound + 08a2 Labtec Webcam Pro + 08a3 QuickCam QuickCam Chat + 08a6 QuickCam IM + 08a7 QuickCam Image + 08a9 Notebook Deluxe + 08aa Labtec Notebooks + 08ac QuickCam Cool + 08ad QuickCam Communicate STX + 08ae QuickCam for Notebooks + 08af QuickCam Easy/Cool + 08b0 QuickCam 3000 Pro [pwc] + 08b1 QuickCam Notebook Pro + 08b2 QuickCam Pro 4000 + 08b3 QuickCam Zoom + 08b4 QuickCam Zoom + 08b5 QuickCam Sphere + 08b9 QuickCam IM + 08bd Microphone (Pro 4000) + 08c0 QuickCam Pro 3000 + 08c1 QuickCam Fusion + 08c2 QuickCam PTZ + 08c3 Camera (Notebooks Pro) + 08c5 QuickCam Pro 5000 + 08c6 QuickCam for DELL Notebooks + 08c7 QuickCam OEM Cisco VT Camera II + 08c9 QuickCam Ultra Vision + 08ca Mic (Fusion) + 08cb Mic (Notebooks Pro) + 08cc Mic (PTZ) + 08ce QuickCam Pro 5000 + 08cf QuickCam UpdateMe + 08d0 QuickCam Express + 08d7 QuickCam Communicate STX + 08d8 QuickCam for Notebook Deluxe + 08d9 QuickCam IM/Connect + 08da QuickCam Messanger + 08dd QuickCam for Notebooks + 08e0 QuickCam Express + 08e1 Labtec Webcam + 08f0 QuickCam Messenger + 08f1 QuickCam Express + 08f2 Microphone (Messenger) + 08f3 QuickCam Express + 08f4 Labtec Webcam + 08f5 QuickCam Messenger Communicate + 08f6 QuickCam Messenger Plus + 0900 ClickSmart 310 + 0901 ClickSmart 510 + 0903 ClickSmart 820 + 0905 ClickSmart 820 + 0910 QuickCam Cordless + 0920 QuickCam Express + 0921 Labtec Webcam + 0922 QuickCam Live + 0928 QuickCam Express + 0929 Labtec Webcam Pro + 092a QuickCam for Notebooks + 092b Labtec Webcam Plus + 092c QuickCam Chat + 092d QuickCam Express / Go + 092e QuickCam Chat + 092f QuickCam Express Plus + 0950 Pocket Camera + 0960 ClickSmart 420 + 0970 Pocket750 + 0990 QuickCam Pro 9000 + 0991 QuickCam Pro for Notebooks + 0992 QuickCam Communicate Deluxe + 0994 QuickCam Orbit/Sphere AF + 09a1 QuickCam Communicate MP/S5500 + 09a2 QuickCam Communicate Deluxe/S7500 + 09a4 QuickCam E 3500 + 09a5 Quickcam 3000 For Business + 09a6 QuickCam Vision Pro + 09b0 Acer OrbiCam + 09b2 Fujitsu Webcam + 09c0 QuickCam for Dell Notebooks Mic + 09c1 QuickCam Deluxe for Notebooks + 0a01 USB Headset + 0a02 Premium Stereo USB Headset 350 + 0a03 Logitech USB Microphone + 0a04 V20 portable speakers (USB powered) + 0a07 Z-10 Speakers + 0a0b ClearChat Pro USB + 0a0c Clear Chat Comfort USB Headset + 0a13 Z-5 Speakers + 0a14 USB Headset + 0a15 G35 Headset + 0a17 G330 Headset + 0a1f G930 + 0a29 H600 [Wireless Headset] + 0a37 USB Headset H540 + 0a38 Headset H340 + 0a44 Headset H390 + 0a45 960 Headset + 0a4d G430 Surround Sound Gaming Headset + 0a5b G933 Wireless Headset Dongle + 0a66 [G533 Wireless Headset Dongle] + 0b02 C-UV35 [Bluetooth Mini-Receiver] (HID proxy mode) + 8801 Video Camera + b014 Bluetooth Mouse M336/M337/M535 + b305 BT Mini-Receiver + bfe4 Premium Optical Wheel Mouse + c000 N43 [Pilot Mouse] + c001 N48/M-BB48/M-UK96A [FirstMouse Plus] + c002 M-BA47 [MouseMan Plus] + c003 MouseMan + c004 WingMan Gaming Mouse + c005 WingMan Gaming Wheel Mouse + c00b MouseMan Wheel + c00c Optical Wheel Mouse + c00d MouseMan Wheel+ + c00e M-BJ58/M-BJ69 Optical Wheel Mouse + c00f MouseMan Traveler/Mobile + c011 Optical MouseMan + c012 Mouseman Dual Optical + c014 Corded Workstation Mouse + c015 Corded Workstation Mouse + c016 Optical Wheel Mouse + c018 Optical Wheel Mouse + c019 Optical Tilt Wheel Mouse + c01a M-BQ85 Optical Wheel Mouse + c01b MX310 Optical Mouse + c01c Optical Mouse + c01d MX510 Optical Mouse + c01e MX518 Optical Mouse + c024 MX300 Optical Mouse + c025 MX500 Optical Mouse + c030 iFeel Mouse + c031 iFeel Mouse+ + c032 MouseMan iFeel + c033 iFeel MouseMan+ + c034 MouseMan Optical + c035 Mouse + c036 Mouse + c037 Mouse + c038 Mouse + c03d M-BT96a Pilot Optical Mouse + c03e Premium Optical Wheel Mouse (M-BT58) + c03f M-BT85 [UltraX Optical Mouse] + c040 Corded Tilt-Wheel Mouse + c041 G5 Laser Mouse + c042 G3 Laser Mouse + c043 MX320/MX400 Laser Mouse + c044 LX3 Optical Mouse + c045 Optical Mouse + c046 RX1000 Laser Mouse + c047 Laser Mouse M-UAL120 + c048 G9 Laser Mouse + c049 G5 Laser Mouse + c050 RX 250 Optical Mouse + c051 G3 (MX518) Optical Mouse + c053 Laser Mouse + c054 Bluetooth mini-receiver + c058 M115 Mouse + c05a M90/M100 Optical Mouse + c05b M-U0004 810-001317 [B110 Optical USB Mouse] + c05d Optical Mouse + c05f M115 Optical Mouse + c061 RX1500 Laser Mouse + c062 M-UAS144 [LS1 Laser Mouse] + c063 DELL Laser Mouse + c064 M110 corded optical mouse (M-B0001) + c066 G9x Laser Mouse + c068 G500 Laser Mouse + c069 M-U0007 [Corded Mouse M500] + c06a USB Optical Mouse + c06b G700 Wireless Gaming Mouse + c06c Optical Mouse + c077 M105 Optical Mouse + c07c M-R0017 [G700s Rechargeable Gaming Mouse] + c07d G502 Mouse + c07e G402 Gaming Mouse + c083 G403 Prodigy Gaming Mouse + c101 UltraX Media Remote + c110 Harmony 785/880/885 Remote + c111 Harmony 525 Remote + c112 Harmony 890 Remote + c11f Harmony 900/1100 Remote + c121 Harmony One Remote + c122 Harmony 650/700 Remote + c124 Harmony 300/350 Remote + c125 Harmony 200 Remote + c126 Harmony Link + c129 Harmony Hub + c12b Harmony Touch/Ultimate Remote + c201 WingMan Extreme Joystick with Throttle + c202 WingMan Formula + c207 WingMan Extreme Digital 3D + c208 WingMan Gamepad Extreme + c209 WingMan Gamepad + c20a WingMan RumblePad + c20b WingMan Action Pad + c20c WingMan Precision + c20d WingMan Attack 2 + c20e WingMan Formula GP + c211 iTouch Cordless Receiver + c212 WingMan Extreme Digital 3D + c213 J-UH16 (Freedom 2.4 Cordless Joystick) + c214 ATK3 (Attack III Joystick) + c215 Extreme 3D Pro + c216 F310 Gamepad [DirectInput Mode] + c218 F510 Gamepad [DirectInput Mode] + c219 F710 Gamepad [DirectInput Mode] + c21a Precision Gamepad + c21c G13 Advanced Gameboard + c21d F310 Gamepad [XInput Mode] + c21e F510 Gamepad [XInput Mode] + c21f F710 Wireless Gamepad [XInput Mode] + c221 G11/G15 Keyboard / Keyboard + c222 G15 Keyboard / LCD + c223 G11/G15 Keyboard / USB Hub + c225 G11/G15 Keyboard / G keys + c226 G15 Refresh Keyboard + c227 G15 Refresh Keyboard + c228 G19 Gaming Keyboard + c229 G19 Gaming Keyboard Macro Interface + c22a Gaming Keyboard G110 + c22b Gaming Keyboard G110 G-keys + c22d G510 Gaming Keyboard + c22e G510 Gaming Keyboard onboard audio + c231 G13 Virtual Mouse + c245 G400 Optical Mouse + c246 Gaming Mouse G300 + c248 G105 Gaming Keyboard + c24a G600 Gaming Mouse + c24c G400s Optical Mouse + c24d G710 Gaming Keyboard + c24e G500s Laser Gaming Mouse + c281 WingMan Force + c283 WingMan Force 3D + c285 WingMan Strike Force 3D + c286 Force 3D Pro + c287 Flight System G940 + c291 WingMan Formula Force + c293 WingMan Formula Force GP + c294 Driving Force + c295 Momo Force Steering Wheel + c298 Driving Force Pro + c299 G25 Racing Wheel + c29b G27 Racing Wheel + c29c Speed Force Wireless Wheel for Wii + c2a0 Wingman Force Feedback Mouse + c2a1 WingMan Force Feedback Mouse + c2ab G13 Joystick + c301 iTouch Keyboard + c302 iTouch Pro Keyboard + c303 iTouch Keyboard + c305 Internet Keyboard + c307 Internet Keyboard + c308 Internet Navigator Keyboard + c309 Y-BF37 [Internet Navigator Keyboard] + c30a iTouch Composite + c30b NetPlay Keyboard + c30c Internet Keys (X) + c30d Internet Keys + c30e UltraX Keyboard (Y-BL49) + c30f Logicool HID-Compliant Keyboard (106 key) + c311 Y-UF49 [Internet Pro Keyboard] + c312 DeLuxe 250 Keyboard + c313 Internet 350 Keyboard + c315 Classic Keyboard 200 + c316 HID-Compliant Keyboard + c317 Wave Corded Keyboard + c318 Illuminated Keyboard + c31a Comfort Wave 450 + c31b Compact Keyboard K300 + c31c Keyboard K120 + c31d Media Keyboard K200 + c31f Comfort Keyboard K290 + c328 Corded Keyboard K280e + c332 G502 Proteus Spectrum Optical Mouse + c335 G910 Orion Spectrum Mechanical Keyboard + c401 TrackMan Marble Wheel + c402 Marble Mouse (2-button) + c403 Turbo TrackMan Marble FX + c404 TrackMan Wheel + c408 Marble Mouse (4-button) + c501 Cordless Mouse Receiver + c502 Cordless Mouse & iTouch Keys + c503 Cordless Mouse+Keyboard Receiver + c504 Cordless Mouse+Keyboard Receiver + c505 Cordless Mouse+Keyboard Receiver + c506 MX700 Cordless Mouse Receiver + c508 Cordless Trackball + c509 Cordless Keyboard & Mouse + c50a Cordless Mouse + c50b Cordless Desktop Optical + c50c Cordless Desktop S510 + c50d Cordless Mouse + c50e Cordless Mouse Receiver + c510 Cordless Mouse + c512 LX-700 Cordless Desktop Receiver + c513 MX3000 Cordless Desktop Receiver + c514 Cordless Mouse + c515 Cordless 2.4 GHz Presenter Presentation remote control + c517 LX710 Cordless Desktop Laser + c518 MX610 Laser Cordless Mouse + c51a MX Revolution/G7 Cordless Mouse + c51b V220 Cordless Optical Mouse for Notebooks + c521 Cordless Mouse Receiver + c525 MX Revolution Cordless Mouse + c526 Nano Receiver + c529 Logitech Keyboard + Mice + c52b Unifying Receiver + c52d R700 Remote Presenter receiver + c52e MK260 Wireless Combo Receiver + c52f Unifying Receiver + c531 C-U0007 [Unifying Receiver] + c532 Unifying Receiver + c534 Unifying Receiver + c603 3Dconnexion Spacemouse Plus XT + c605 3Dconnexion CADman + c606 3Dconnexion Spacemouse Classic + c621 3Dconnexion Spaceball 5000 + c623 3Dconnexion Space Traveller 3D Mouse + c625 3Dconnexion Space Pilot 3D Mouse + c626 3Dconnexion Space Navigator 3D Mouse + c627 3Dconnexion Space Explorer 3D Mouse + c628 3Dconnexion Space Navigator for Notebooks + c629 3Dconnexion SpacePilot Pro 3D Mouse + c62b 3Dconnexion Space Mouse Pro + c640 NuLOOQ navigator + c702 Cordless Presenter + c703 Elite Keyboard Y-RP20 + Mouse MX900 (Bluetooth) + c704 diNovo Wireless Desktop + c705 MX900 Bluetooth Wireless Hub (C-UJ16A) + c707 Bluetooth wireless hub + c708 Bluetooth wireless hub + c709 BT Mini-Receiver (HCI mode) + c70a MX5000 Cordless Desktop + c70b BT Mini-Receiver (HID proxy mode) + c70c BT Mini-Receiver (HID proxy mode) + c70d Bluetooth wireless hub + c70e MX1000 Bluetooth Laser Mouse + c70f Bluetooth wireless hub + c712 Bluetooth wireless hub + c714 diNovo Edge Keyboard + c715 Bluetooth wireless hub + c71a Bluetooth wireless hub + c71d Bluetooth wireless hub + c71f diNovo Mini Wireless Keyboard + c720 Bluetooth wireless hub + ca03 MOMO Racing + ca04 Formula Vibration Feedback Wheel + ca84 Cordless Controller for Xbox + ca88 Thunderpad for Xbox + ca8a Precision Vibration Feedback Wheel for Xbox + caa3 DriveFX Racing Wheel + cab1 Cordless Keyboard for Wii HID Receiver + d001 QuickCam Pro + f301 Controller +046e Behavior Tech. Computer Corp. + 0100 Keyboard + 3001 Mass Storage Device + 3002 Mass Storage Device + 3003 Mass Storage Device + 3005 Mass Storage Device + 3008 Mass Storage Device + 5250 KeyMaestro Multimedia Keyboard + 5273 KeyMaestro Multimedia Keyboard + 52e6 Cordless Mouse + 5308 KeyMaestro Keyboard + 5408 KeyMaestro Multimedia Keyboard/Hub + 5500 Portable Keyboard 86+9 keys (Model 6100C US) + 5550 5 button optical mouse model M873U + 5720 Smart Card Reader + 6782 BTC 7932 mouse+keyboard +046f Crystal Semiconductor +0471 Philips (or NXP) + 0101 DSS350 Digital Speaker System + 0104 DSS330 Digital Speaker System [uda1321] + 0105 UDA1321 + 014f GoGear SA9200 + 0160 MP3 Player + 0161 MP3 Player + 0163 GoGear SA1100 + 0164 GoGear SA1110/02 + 0165 GoGear SA1330 + 0201 Hub + 0222 Creative Nomad Jukebox + 0302 PCA645VC Webcam [pwc] + 0303 PCA646VC Webcam [pwc] + 0304 Askey VC010 Webcam [pwc] + 0307 PCVC675K Webcam [pwc] + 0308 PCVC680K Webcam [pwc] + 030b PC VGA Camera (Vesta Fun) + 030c PCVC690K Webcam [pwc] + 0310 PCVC730K Webcam [pwc] + 0311 PCVC740K ToUcam Pro [pwc] + 0312 PCVC750K Webcam [pwc] + 0314 DMVC 1000K + 0316 DMVC 2000K Video Capture + 0321 FunCam + 0322 DMVC1300K PC Camera + 0325 SPC 200NC PC Camera + 0326 SPC 300NC PC Camera + 0327 Webcam SPC 6000 NC (Webcam w/ mic) + 0328 SPC 700NC PC Camera + 0329 SPC 900NC PC Camera / ORITE CCD Webcam(PC370R) + 032d SPC 210NC PC Camera + 032e SPC 315NC PC Camera + 0330 SPC 710NC PC Camera + 0331 SPC 1300NC PC Camera + 0332 SPC 1000NC PC Camera + 0333 SPC 620NC PC Camera + 0334 SPC 520/525NC PC Camera + 0401 Semiconductors CICT Keyboard + 0402 PS/2 Mouse on Semiconductors CICT Keyboard + 0406 15 inch Detachable Monitor + 0407 10 inch Mobile Monitor + 0408 SG3WA1/74 802.11b WLAN Adapter [Atmel AT76C503A] + 0471 Digital Speaker System + 0601 OVU1020 IR Dongle (Kbd+Mouse) + 0602 ATI Remote Wonder II Input Device + 0603 ATI Remote Wonder II Controller + 0608 eHome Infrared Receiver + 060a TSU9600 Remote Control + 060c Consumer Infrared Transceiver (HP) + 060d Consumer Infrared Transceiver (SRM5100) + 060e RF Dongle + 060f Consumer Infrared Transceiver + 0613 Infrared Transceiver + 0617 IEEE802.15.4 RF Dongle + 0619 TSU9400 Remote Control + 0666 Hantek DDS-3005 Arbitrary Waveform Generator + 0700 Semiconductors CICT Hub + 0701 150P1 TFT Display + 0809 AVNET Bluetooth Device + 0811 JR24 CDRW + 0814 DCCX38/P data cable + 0815 eHome Infrared Receiver + 0844 SA2111/02 1GB Flash Audio Player + 084a GoGear SA3125 + 084e GoGear SA60xx (mtp) + 0888 Hantek DDS-3005 Arbitrary Waveform Generator + 1103 Digital Speaker System + 1120 Creative Rhomba MP3 player + 1125 Nike psa[128max Player + 1137 HDD065 MP3 player + 1201 Arima Bluetooth Device + 1230 Wireless Adapter 11g + 1232 SNU6500 Wireless Adapter + 1233 Wireless Adapter Bootloader Download + 1236 SNU5600 802.11bg + 1237 TalkTalk SNU5630NS/05 802.11bg + 1552 ISP 1581 Hi-Speed USB MPEG2 Encoder Reference Kit + 1801 Diva MP3 player + 200a Wireless Network Adapter + 200f 802.11n Wireless Adapter + 2021 SDE3273FC/97 2.5" SATA HDD Enclosure [INIC-1608L] + 2022 GoGear SA52XX + 2034 Webcam SPC530NC + 2036 Webcam SPC1030NC + 203f TSU9200 Remote Control + 2046 TSU9800 Remote Control + 204e GoGear RaGa (SA1942/02) + 205e TSU9300 Remote Control + 206c MCE IR Receiver - Spinel plusf0r ASUS + 2070 GoGear Mix + 2076 GoGear Aria + 2079 GoGear Opus + 2088 MCE IR Receiver with ALS- Spinel plus for ASUS + 209e PTA01 Wireless Adapter + 20b6 GoGear Vibe + 20d0 SPZ2000 Webcam [PixArt PAC7332] + 20e3 GoGear Raga + 20e4 GoGear ViBE 8GB + 2160 Mio LINK Heart Rate Monitor + 21e0 GoGEAR Raga + 262c SPC230NC Webcam + 485d Senselock SenseIV v2.x + df55 LPCXpresso LPC-Link +0472 Chicony Electronics Co., Ltd + 0065 PFU-65 Keyboard [Chicony] + b086 Asus USB2.0 Webcam + b091 Webcam +0473 Sanyo Information Business Co., Ltd +0474 Sanyo Electric Co., Ltd + 0110 Digital Voice Recorder R200 + 0217 Xacti J2 + 022f C5 Digital Media Camera (mass storage mode) + 0230 C5 Digital Media Camera (PictBridge mode) + 0231 C5 Digital Media Camera (PC control mode) + 0401 Optical Drive + 0701 SCP-4900 Cellphone + 071f Usb Com Port Enumerator + 0722 W33SA Camera +0475 Relisys/Teco Information System + 0100 NEC Petiscan + 0103 Eclipse 1200U/Episode + 0210 Scorpio Ultra 3 +0476 AESP +0477 Seagate Technology, Inc. +0478 Connectix Corp. + 0001 QuickCam + 0002 QuickClip + 0003 QuickCam Pro +0479 Advanced Peripheral Laboratories +047a Semtech Corp. + 0004 ScreenCoder UR7HCTS2-USB +047b Silitek Corp. + 0001 Keyboard + 0002 Keyboard and Mouse + 0011 SK-1688U Keyboard + 00f9 SK-1789u Keyboard + 0101 BlueTooth Keyboard and Mouse + 020b SK-3105 SmartCard Reader + 050e Internet Compact Keyboard + 1000 Trust Office Scan USB 19200 + 1002 HP ScanJet 4300c Parallel Port +047c Dell Computer Corp. + ffff UPS Tower 500W LV +047d Kensington + 1001 Mouse*in*a*Box + 1002 Expert Mouse Pro + 1003 Orbit TrackBall + 1004 MouseWorks + 1005 TurboBall + 1006 TurboRing + 1009 Orbit TrackBall for Mac + 1012 PocketMouse + 1013 Mouse*in*a*Box Optical Pro + 1014 Expert Mouse Pro Wireless + 1015 Expert Mouse + 1016 ADB/USB Orbit + 1018 Studio Mouse + 101d Mouse*in*a*Box Optical Pro + 101e Studio Mouse Wireless + 101f PocketMouse Pro + 1020 Expert Mouse Trackball + 1021 Expert Mouse Wireless + 1022 Orbit Optical + 1023 Pocket Mouse Pro Wireless + 1024 PocketMouse + 1025 Mouse*in*a*Box Optical Elite Wireless + 1026 Pocket Mouse Pro + 1027 StudioMouse + 1028 StudioMouse Wireless + 1029 Mouse*in*a*Box Optical Elite + 102a Mouse*in*a*Box Optical + 102b PocketMouse + 102c Iridio + 102d Pilot Optical + 102e Pilot Optical Pro + 102f Pilot Optical Pro Wireless + 1042 Ci25m Notebook Optical Mouse [Diamond Eye Precision] + 1043 Ci65m Wireless Notebook Optical Mouse + 104a PilotMouse Mini Retractable + 105d PocketMouse Bluetooth + 105e Bluetooth EDR Dongle + 1061 PocketMouse Grip + 1062 PocketMouse Max + 1063 PocketMouse Max Wireless + 1064 PocketMouse 2.0 Wireless + 1065 PocketMouse 2.0 + 1066 PocketMouse Max Glow + 1067 ValueMouse + 1068 ValueOpt White + 1069 ValueOpt Black + 106a PilotMouse Laser Wireless Mini + 106b PilotMouse Laser - 3 Button + 106c PilotMouse Laser - Gaming + 106d PilotMouse Laser - Wired + 106e PilotMouse Micro Laser + 1070 ValueOpt Travel + 1071 ValueOpt RF TX + 1072 PocketMouse Colour + 1073 PilotMouse Laser - 6 Button + 1074 PilotMouse Laser Wireless Mini + 1075 SlimBlade Presenter Media Mouse + 1076 SlimBlade Media Mouse + 1077 SlimBlade Presenter Mouse + 1152 Bluetooth EDR Dongle + 2002 Optical Elite Wireless + 2010 Wireless Presentation Remote + 2012 Wireless Presenter with Laser Pointer + 2021 PilotBoard Wireless + 2030 PilotBoard Wireless + 2034 SlimBlade Media Notebook Set + 2041 SlimBlade Trackball + 2048 Orbit Trackball with Scroll Ring + 4003 Gravis Xterminator Digital Gamepad + 4005 Gravis Eliminator GamePad Pro + 4006 Gravis Eliminator AfterShock + 4007 Gravis Xterminator Force + 4008 Gravis Destroyer TiltPad + 5001 Cabo I Camera + 5002 VideoCam CABO II + 5003 VideoCam +047e Agere Systems, Inc. (Lucent) + 0300 ORiNOCO Card + 1001 USS720 Parallel Port + 2892 Systems Soft Modem + bad1 Lucent 56k Modem + f101 Atlas Modem +047f Plantronics, Inc. + 0101 Bulk Driver + 0301 Bulk Driver + 0411 Savi Office Base Station + 0ca1 USB DSP v4 Audio Interface + 4254 BUA-100 Bluetooth Adapter + ac01 Savi 7xx + ad01 GameCom 777 5.1 Headset + c008 Audio 655 DSP + c00e Blackwire C310 headset +0480 Toshiba America Inc + 0001 InTouch Module + 0004 InTouch Module + 0011 InTouch Module + 0014 InTouch Module + 0100 Stor.E Slim USB 3.0 + 0200 External Disk + a006 External Disk 1.5TB + a007 External Disk USB 3.0 + a009 Stor.E Basics + a00d STOR.E BASICS 500GB + a100 Canvio Alu 2TB 2.5" Black External Disk Model HDTH320EK3CA + a202 Canvio Basics HDD + a208 Canvio Basics 2TB USB 3.0 Portable Hard Drive + b001 Stor.E Partner + b207 Canvio Ready + d000 External Disk 2TB Model DT01ABA200 + d010 External Disk 3TB + d011 Canvio Desk +0481 Zenith Data Systems +0482 Kyocera Corp. + 000e FS-1020D Printer + 000f FS-1920 Mono Printer + 0015 FS-1030D printer + 0100 Finecam S3x + 0101 Finecam S4 + 0103 Finecam S5 + 0105 Finecam L3 + 0106 Finecam + 0107 Digital Camera Device + 0108 Digital Camera Device + 0203 AH-K3001V + 0204 iBurst Terminal + 0408 FS-1320D Printer + 0640 ECOSYS M6026cdn + 069b ECOSYS M2635dn +0483 STMicroelectronics + 0137 BeWAN ADSL USB ST (blue or green) + 0138 Unicorn II (ST70138B + MTC-20174TQ chipset) + 1307 Cytronix 6in1 Card Reader + 163d Cool Icam Digi-MP3 + 2015 TouchChip® Fingerprint Reader + 2016 Fingerprint Reader + 2017 Biometric Smart Card Reader + 2018 BioSimKey + 2302 Portable Flash Device (PFD) + 3744 ST-LINK/V1 + 3747 ST Micro Connect Lite + 3748 ST-LINK/V2 + 374b ST-LINK/V2.1 + 4810 ISDN adapter + 481d BT Digital Access adapter + 5000 ST Micro/Ergenic ERG BT-002 Bluetooth Adapter + 5001 ST Micro Bluetooth Device + 5710 Joystick in FS Mode + 5720 Mass Storage Device + 5721 Hantek DDS-3X25 Arbitrary Waveform Generator + 5722 Bulk Demo + 5730 Audio Speaker + 5731 Microphone + 5740 Virtual COM Port + 7270 ST Micro Serial Bridge + 7554 56k SoftModem + 8213 ThermaData Logger Cradle + 8259 Probe + 91d1 Sensor Hub + a171 ThermaData WiFi + df11 STM Device in DFU Mode + ff10 Swann ST56 Modem +0484 Specialix +0485 Nokia Monitors +0486 ASUS Computers, Inc. + 0185 EeePC T91MT HID Touch Panel +0487 Stewart Connector +0488 Cirque Corp. +0489 Foxconn / Hon Hai + 0502 SmartMedia Card Reader Firmware Loader + 0503 SmartMedia Card Reader + d00c Rollei Compactline (Storage Mode) + d00e Rollei Compactline (Video Mode) + e000 T-Com TC 300 + e003 Pirelli DP-L10 + e00d Broadcom Bluetooth 2.1 Device + e00f Foxconn T77H114 BCM2070 [Single-Chip Bluetooth 2.1 + EDR Adapter] + e011 Acer Bluetooth module + e016 Ubee PXU1900 WiMAX Adapter [Beceem BCSM250] + e02c Atheros AR5BBU12 Bluetooth Device + e032 Broadcom BCM20702 Bluetooth + e042 Broadcom BCM20702 Bluetooth + e04d Atheros AR3012 Bluetooth + e055 BCM43142A0 broadcom bluetooth +048a S-MOS Systems, Inc. +048c Alps Electric Ireland, Ltd +048d Integrated Technology Express, Inc. + 1165 IT1165 Flash Controller + 1172 Flash Drive + 1336 SD/MMC Cardreader + 1345 Multi Cardreader + 9006 IT9135 BDA Afatech DVB-T HDTV Dongle + 9009 Zolid HD DVD Maker + 9135 Zolid Mini DVB-T Stick + 9306 IT930x DVB stick + 9503 ITE it9503 feature-limited DVB-T transmission chip [ccHDtv] + 9507 ITE it9507 full featured DVB-T transmission chip [ccHDtv] + 9910 IT9910 chipset based grabber +048f Eicon Tech. +0490 United Microelectronics Corp. +0491 Capetronic + 0003 Taxan Monitor Control +0492 Samsung SemiConductor, Inc. + 0140 MP3 player + 0141 MP3 Player +0493 MAG Technology Co., Ltd +0495 ESS Technology, Inc. +0496 Micron Electronics +0497 Smile International + c001 Camera Device +0498 Capetronic (Kaohsiung) Corp. +0499 Yamaha Corp. + 1000 UX256 MIDI I/F + 1001 MU1000 + 1002 MU2000 + 1003 MU500 + 1004 UW500 + 1005 MOTIF6 + 1006 MOTIF7 + 1007 MOTIF8 + 1008 UX96 MIDI I/F + 1009 UX16 MIDI I/F + 100a EOS BX + 100c UC-MX + 100d UC-KX + 100e S08 + 100f CLP-150 + 1010 CLP-170 + 1011 P-250 + 1012 TYROS + 1013 PF-500 + 1014 S90 + 1015 MOTIF-R + 1016 MDP-5 + 1017 CVP-204 + 1018 CVP-206 + 1019 CVP-208 + 101a CVP-210 + 101b PSR-1100 + 101c PSR-2100 + 101d CLP-175 + 101e PSR-K1 + 101f EZ-J24 + 1020 EZ-250i + 1021 MOTIF ES 6 + 1022 MOTIF ES 7 + 1023 MOTIF ES 8 + 1024 CVP-301 + 1025 CVP-303 + 1026 CVP-305 + 1027 CVP-307 + 1028 CVP-309 + 1029 CVP-309GP + 102a PSR-1500 + 102b PSR-3000 + 102e ELS-01/01C + 1030 PSR-295/293 + 1031 DGX-205/203 + 1032 DGX-305 + 1033 DGX-505 + 1037 PSR-E403 + 103c MOTIF-RACK ES + 1054 S90XS Keyboard/Music Synthesizer + 160f P-105 + 1613 Clavinova CLP535 + 1704 Steinberg UR44 + 2000 DGP-7 + 2001 DGP-5 + 3001 YST-MS55D USB Speaker + 3003 YST-M45D USB Speaker + 4000 NetVolante RTA54i Broadband&ISDN Router + 4001 NetVolante RTW65b Broadband Wireless Router + 4002 NetVolante RTW65i Broadband&ISDN Wireless Router + 4004 NetVolante RTA55i Broadband VoIP Router + 5000 CS1D + 5001 DSP1D + 5002 DME32 + 5003 DM2000 + 5004 02R96 + 5005 ACU16-C + 5006 NHB32-C + 5007 DM1000 + 5008 01V96 + 5009 SPX2000 + 500a PM5D + 500b DME64N + 500c DME24N + 6001 CRW2200UX Lightspeed 2 External CD-RW Drive + 7000 DTX + 7010 UB99 +049a Gandalf Technologies, Ltd +049b Curtis Computer Products +049c Acer Advanced Labs, Inc. + 0002 Keyboard (???) +049d VLSI Technology +049f Compaq Computer Corp. + 0002 InkJet Color Printer + 0003 iPAQ PocketPC + 000e Internet Keyboard + 0012 InkJet Color Printer + 0018 PA-1/PA-2 MP3 Player + 0019 InkJet Color Printer + 001a S4 100 Scanner + 001e IJ650 Inkjet Printer + 001f WL215 Adapter + 0021 S200 Scanner + 0027 Bluetooth Multiport Module by Compaq + 002a 1400P Inkjet Printer + 002b A3000 + 002c Lexmark X125 + 0032 802.11b Adapter [ipaq h5400] + 0033 Wireless LAN MultiPort W100 [Intersil PRISM 2.5] + 0036 Bluetooth Multiport Module + 0051 KU-0133 Easy Access Interner Keyboard + 0076 Wireless LAN MultiPort W200 + 0080 GPRS Multiport + 0086 Bluetooth Device + 504a Personal Jukebox PJB100 + 505a Linux-USB "CDC Subset" Device, or Itsy (experimental) + 8511 iPAQ Networking 10/100 Ethernet [pegasus2] +04a0 Digital Equipment Corp. +04a1 SystemSoft Corp. + fff0 Telex Composite Device +04a2 FirePower Systems +04a3 Trident Microsystems, Inc. +04a4 Hitachi, Ltd + 0004 DVD-CAM DZ-MV100A Camcorder + 001e DVDCAM USB HS Interface +04a5 Acer Peripherals Inc. (now BenQ Corp.) + 0001 Keyboard + 0002 API Ergo K/B + 0003 API Generic K/B Mouse + 12a6 AcerScan C310U + 1a20 Prisa 310U + 1a2a Prisa 620U + 2022 Prisa 320U/340U + 2040 Prisa 620UT + 205e ScanPrisa 640BU + 2060 Prisa 620U+/640U + 207e Prisa 640BU + 209e ScanPrisa 640BT + 20ae S2W 3000U + 20b0 S2W 3300U/4300U + 20be Prisa 640BT + 20c0 Prisa 1240UT + 20de S2W 4300U+ + 20f8 Benq 5000 + 20fc Benq 5000 + 20fe SW2 5300U + 2137 Benq 5150/5250 + 2202 Benq 7400UT + 2311 Benq 5560 + 3003 Benq Webcam + 3008 Benq 1500 + 300a Benq 3410 + 300c Benq 1016 + 3019 Benq DC C40 + 4000 P30 Composite Device + 4013 BenQ-Siemens EF82/SL91 + 4044 BenQ-Siemens SF71 + 4045 BenQ-Siemens E81 + 4048 BenQ M7 + 6001 Mass Storage Device + 6002 Mass Storage Device + 6003 ATA/ATAPI Adapter + 6004 Mass Storage Device + 6005 Mass Storage Device + 6006 Mass Storage Device + 6007 Mass Storage Device + 6008 Mass Storage Device + 6009 Mass Storage Device + 600a Mass Storage Device + 600b Mass Storage Device + 600c Mass Storage Device + 600d Mass Storage Device + 600e Mass Storage Device + 600f Mass Storage Device + 6010 Mass Storage Device + 6011 Mass Storage Device + 6012 Mass Storage Device + 6013 Mass Storage Device + 6014 Mass Storage Device + 6015 Mass Storage Device + 6125 MP3 Player + 6180 MP3 Player + 6200 MP3 Player + 7500 Hi-Speed Mass Storage Device + 9000 AWL300 Wireless Adapter + 9001 AWL400 Wireless Adapter + 9213 Kbd Hub +04a6 Nokia Display Products + 00b9 Audio + 0180 Hub Type P + 0181 HID Monitor Controls +04a7 Visioneer + 0100 StrobePro + 0101 Strobe Pro Scanner (1.01) + 0102 StrobePro Scanner + 0211 OneTouch 7600 Scanner + 0221 OneTouch 5300 Scanner + 0223 OneTouch 8200 + 0224 OneTouch 4800 USB/Microtek Scanport 3000 + 0225 VistaScan Astra 3600(ENG) + 0226 OneTouch 5300 USB + 0229 OneTouch 7100 + 022a OneTouch 6600 + 022c OneTouch 9000/9020 + 0231 6100 Scanner + 0311 6200 EPP/USB Scanner + 0321 OneTouch 8100 EPP/USB Scanner + 0331 OneTouch 8600 EPP/USB Scanner + 0341 6400 + 0361 VistaScan Astra 3600(ENG) + 0362 OneTouch 9320 + 0371 OneTouch 8700/8920 + 0380 OneTouch 7700 + 0382 Photo Port 7700 + 0390 9650 + 03a0 Xerox 4800 One Touch + 0410 OneTouch Pro 8800/8820 + 0421 9450 USB + 0423 9750 Scanner + 0424 Strobe XP 450 + 0425 Strobe XP 100 + 0426 Strobe XP 200 + 0427 Strobe XP 100 + 0444 OneTouch 7300 + 0445 CardReader 100 + 0446 Xerox DocuMate 510 + 0447 XEROX DocuMate 520 + 0448 XEROX DocuMate 250 + 0449 Xerox DocuMate 252 + 044a Xerox 6400 + 044c Xerox DocuMate 262 + 0474 Strobe XP 300 + 0475 Xerox DocuMate 272 + 0478 Strobe XP 220 + 0479 Strobe XP 470 + 047a 9450 + 047b 9650 + 047d 9420 + 0480 9520 + 048f Strobe XP 470 + 0491 Strobe XP 450 + 0493 9750 + 0494 Strobe XP 120 + 0497 Patriot 430 + 0498 Patriot 680 + 0499 Patriot 780 + 049b Strobe XP 100 + 04a0 7400 + 04ac Xerox Travel Scanner 100 + 04bb strobe 400 scanner + 04cd Xerox Travel Scanner 150 +04a8 Multivideo Labs, Inc. + 0101 Hub + 0303 Peripheral Switch + 0404 Peripheral Switch +04a9 Canon, Inc. + 1005 BJ Printer Hub + 1035 PD Printer Storage + 1050 BJC-8200 + 1051 BJC-3000 Color Printer + 1052 BJC-6100 + 1053 BJC-6200 + 1054 BJC-6500 + 1055 BJC-85 + 1056 BJC-2110 Color Printer + 1057 LR1 + 105a BJC-55 + 105b S600 Printer + 105c S400 + 105d S450 Printer + 105e S800 + 1062 S500 Printer + 1063 S4500 + 1064 S300 Printer + 1065 S100 + 1066 S630 + 1067 S900 + 1068 S9000 + 1069 S820 + 106a S200 Printer + 106b S520 Printer + 106d S750 Printer + 106e S820D + 1070 S530D + 1072 I850 Printer + 1073 I550 Printer + 1074 S330 Printer + 1076 i70 + 1077 i950 + 107a S830D + 107b i320 + 107c i470D + 107d i9100 + 107e i450 + 107f i860 + 1082 i350 + 1084 i250 + 1085 i255 + 1086 i560 + 1088 i965 + 108a i455 + 108b i900D + 108c i475D + 108d PIXMA iP2000 + 108f i80 + 1090 i9900 Photo Printer + 1091 PIXMA iP1500 + 1093 PIXMA iP4000 + 1094 PIXMA iP3000x Printer + 1095 PIXMA iP6000D + 1097 PIXMA iP5000 + 1098 PIXMA iP1000 + 1099 PIXMA iP8500 + 109c PIXMA iP4000R + 109d iP90 + 10a0 PIXMA iP1600 Printer + 10a2 iP4200 + 10a4 iP5200R + 10a5 iP5200 + 10a7 iP6210D + 10a8 iP6220D + 10a9 iP6600D + 10b6 PIXMA iP4300 Printer + 10b7 PIXMA iP5300 Printer + 10c2 PIXMA iP1800 Printer + 10c4 Pixma iP4500 Printer + 10c9 PIXMA iP4600 Printer + 10ca PIXMA iP3600 Printer + 10e3 PIXMA iX6850 Printer + 1404 W6400PG + 1405 W8400PG + 150f BIJ2350 PCL + 1510 BIJ1350 PCL + 1512 BIJ1350D PCL + 1601 DR-2080C Scanner + 1607 DR-6080 Scanner + 1608 DR-2580C Scanner + 1609 DR-3080CII + 160a DR-2050C Scanner + 1700 PIXMA MP110 Scanner + 1701 PIXMA MP130 Scanner + 1702 MP410 Composite + 1703 MP430 Composite + 1704 MP330 Composite + 1706 PIXMA MP750 Scanner + 1707 PIXMA MP780/MP790 + 1708 PIXMA MP760/MP770 + 1709 PIXMA MP150 Scanner + 170a PIXMA MP170 Scanner + 170b PIXMA MP450 Scanner + 170c PIXMA MP500 Scanner + 170d PIXMA MP800 Scanner + 170e PIXMA MP800R + 1710 MP950 + 1712 PIXMA MP530 + 1713 PIXMA MP830 Scanner + 1714 MP160 + 1715 PIXMA MP180 + 1716 PIXMA MP460 + 1717 PIXMA MP510 + 1718 PIXMA MP600 + 1719 PIXMA MP600R + 171a PIXMA MP810 + 171b PIXMA MP960 + 171c PIXMA MX7600 + 1721 PIXMA MP210 + 1722 PIXMA MP220 + 1723 PIXMA MP470 + 1724 PIXMA MP520 series + 1725 PIXMA MP610 + 1726 PIXMA MP970 + 1727 PIXMA MX300 + 1728 PIXMA MX310 series + 1729 PIXMA MX700 + 172b MP140 ser + 172c PIXMA MX850 + 172d PIXMA MP980 + 172e PIXMA MP630 + 172f PIXMA MP620 + 1730 PIXMA MP540 + 1731 PIXMA MP480 + 1732 PIXMA MP240 + 1733 PIXMA MP260 + 1734 PIXMA MP190 + 1735 PIXMA MX860 + 1736 PIXMA MX320 series + 1737 PIXMA MX330 + 173a PIXMA MP250 + 173b PIXMA MP270 All-In-One Printer + 173c PIXMA MP490 + 173d PIXMA MP550 + 173e PIXMA MP560 + 173f PIXMA MP640 + 1740 PIXMA MP990 + 1741 PIXMA MX340 + 1742 PIXMA MX350 + 1743 PIXMA MX870 + 1746 PIXMA MP280 + 1747 PIXMA MP495 + 1748 PIXMA MG5100 Series + 1749 PIXMA MG5200 Series + 174a PIXMA MG6100 Series + 174b PIXMA MG8100 Series + 174d PIXMA MX360 + 174e PIXMA MX410 + 174f PIXMA MX420 + 1750 PIXMA MX880 Series + 1752 PIXMA MG3100 Series + 1753 PIXMA MG4100 Series + 1754 PIXMA MG5300 Series + 1755 PIXMA MG6200 Series + 1756 PIXMA MG8200 Series + 1757 PIXMA MP493 + 1759 PIXMA MX370 Series + 175b PIXMA MX430 Series + 175c PIXMA MX510 Series + 175d PIXMA MX710 Series + 175e PIXMA MX890 Series + 175f PIXMA MP230 + 1762 PIXMA MG3200 Series + 1763 PIXMA MG4200 Series + 1764 PIXMA MG5400 Series + 1765 PIXMA MG6300 Series + 1766 PIXMA MX390 Series + 1768 PIXMA MX450 Series + 1769 PIXMA MX520 Series + 176a PIXMA MX720 Series + 176b PIXMA MX920 Series + 176d PIXMA MG2500 Series + 176e PIXMA MG3500 Series + 176f PIXMA MG6500 Series + 1770 PIXMA MG6400 Series + 1771 PIXMA MG5500 Series + 1772 PIXMA MG7100 Series + 1774 PIXMA MX470 Series + 1775 PIXMA MX530 Series + 177c PIXMA MG7500 Series + 177e PIXMA MG6600 Series + 177f PIXMA MG5600 Series + 1780 PIXMA MG2900 Series + 1787 PIXMA MX490 Series + 178a PIXMA MG3600 Series + 178d PIXMA MG6853 + 1900 CanoScan LiDE 90 + 1901 CanoScan 8800F + 1904 CanoScan LiDE 100 + 1905 CanoScan LiDE 200 + 1906 CanoScan 5600F + 1907 CanoScan LiDE 700F + 1909 CanoScan LiDE 110 + 190a CanoScan LiDE 210 + 190d CanoScan 9000F Mark II + 190e CanoScan LiDE 120 + 190f CanoScan LiDE 220 + 2200 CanoScan LiDE 25 + 2201 CanoScan FB320U + 2202 CanoScan FB620U + 2204 CanoScan FB630U + 2205 CanoScan FB1210U + 2206 CanoScan N650U/N656U + 2207 CanoScan 1220U + 2208 CanoScan D660U + 220a CanoScan D2400UF + 220b CanoScan D646U + 220c CanoScan D1250U2 + 220d CanoScan N670U/N676U/LiDE 20 + 220e CanoScan N1240U/LiDE 30 + 220f CanoScan 8000F + 2210 CanoScan 9900F + 2212 CanoScan 5000F + 2213 CanoScan LiDE 50/LiDE 35/LiDE 40 + 2214 CanoScan LiDE 80 + 2215 CanoScan 3000/3000F/3000ex + 2216 CanoScan 3200F + 2217 CanoScan 5200F + 2219 CanoScan 9950F + 221b CanoScan 4200F + 221c CanoScan LiDE 60 + 221e CanoScan 8400F + 221f CanoScan LiDE 500F + 2220 CanoScan LIDE 25 + 2224 CanoScan LiDE 600F + 2225 CanoScan LiDE 70 + 2228 CanoScan 4400F + 2229 CanoScan 8600F + 2602 MultiPASS C555 + 2603 MultiPASS C755 + 260a LBP810 + 260e LBP-2000 + 2610 MPC600F + 2611 SmartBase MPC400 + 2612 MultiPASS C855 + 2617 LBP1210 + 261a iR1600 + 261b iR1610 + 261c iC2300 + 261f MPC200 Printer + 2621 iR2000 + 2622 iR2010 + 2623 FAX-B180C + 2629 FAXPHONE L75 + 262b LaserShot LBP-1120 Printer + 262c imageCLASS D300 + 262d iR C3200 + 262f PIXMA MP730 + 2630 PIXMA MP700 + 2631 LASER CLASS 700 + 2632 FAX-L2000 + 2633 LASERCLASS 500 + 2634 PC-D300/FAX-L400/ICD300 + 2635 MPC190 + 2637 iR C6800 + 2638 iR C3100 + 263c PIXMA MP360 + 263d PIXMA MP370 + 263e PIXMA MP390 + 263f PIXMA MP375R + 2646 MF5530 Scanner Device V1.9.1 + 2647 MF5550 Composite + 264c PIXMA MP740 + 264d PIXMA MP710 + 264e MF5630 + 264f MF5650 (FAX) + 2650 iR 6800C EUR + 2651 iR 3100C EUR + 2655 FP-L170/MF350/L380/L398 + 2656 iR1510-1670 CAPT Printer + 2659 MF8100 + 265b CAPT Printer + 265c iR C3220 + 265d MF5730 + 265e MF5750 + 265f MF5770 + 2660 MF3110 + 2663 iR3570/iR4570 + 2664 iR2270/iR2870 + 2665 iR C2620 + 2666 iR C5800 + 2667 iR85PLUS + 2669 iR105PLUS + 266a CAPT Device + 266b iR8070 + 266c iR9070 + 266d iR 5800C EUR + 266e CAPT Device + 266f iR2230 + 2670 iR3530 + 2671 iR5570/iR6570 + 2672 iR C3170 + 2673 iR 3170C EUR + 2674 FAX-L120 + 2675 iR2830 + 2676 LBP2900 + 2677 iR C2570 + 2678 iR 2570C EUR + 2679 CAPT Device + 267a iR2016 + 267b iR2020 + 267d MF7100 series + 2684 MF3200 series + 2686 MF6500 series + 2687 iR4530 + 2688 LBP3460 + 2689 FAX-L180/L380S/L398S + 268a LC310/L390/L408S + 268c iR C6870 + 268d iR 6870C EUR + 268e iR C5870 + 268f iR 5870C EUR + 2691 iR7105 + 26a3 MF4100 series + 26b0 MF4600 series + 26b4 MF4010 series + 26b5 MF4200 series + 26da LBP3010B printer + 26e6 iR1024 + 271a LBP6000 + 2736 I-SENSYS MF4550d + 2737 MF4410 + 3041 PowerShot S10 + 3042 CanoScan FS4000US Film Scanner + 3043 PowerShot S20 + 3044 EOS D30 + 3045 PowerShot S100 + 3046 IXY Digital + 3047 Digital IXUS + 3048 PowerShot G1 + 3049 PowerShot Pro90 IS + 304a CP-10 + 304b IXY Digital 300 + 304c PowerShot S300 + 304d Digital IXUS 300 + 304e PowerShot A20 + 304f PowerShot A10 + 3050 PowerShot unknown 1 + 3051 PowerShot S110 + 3052 Digital IXUS V + 3055 PowerShot G2 + 3056 PowerShot S40 + 3057 PowerShot S30 + 3058 PowerShot A40 + 3059 PowerShot A30 + 305b ZR45MC Digital Camcorder + 305c PowerShot unknown 2 + 3060 EOS D60 + 3061 PowerShot A100 + 3062 PowerShot A200 + 3063 CP-100 + 3065 PowerShot S200 + 3066 Digital IXUS 330 + 3067 MV550i Digital Video Camera + 3069 PowerShot G3 + 306a Digital unknown 3 + 306b MVX2i Digital Video Camera + 306c PowerShot S45 + 306d PowerShot S45 PtP Mode + 306e PowerShot G3 (normal mode) + 306f PowerShot G3 (ptp) + 3070 PowerShot S230 + 3071 PowerShot S230 (ptp) + 3072 PowerShot SD100 / Digital IXUS II (ptp) + 3073 PowerShot A70 (ptp) + 3074 PowerShot A60 (ptp) + 3075 IXUS 400 Camera + 3076 PowerShot A300 + 3077 PowerShot S50 + 3078 ZR70MC Digital Camcorder + 307a MV650i (normal mode) + 307b MV630i Digital Video Camera + 307c CP-200 + 307d CP-300 + 307f Optura 20 + 3080 MVX150i (normal mode) / Optura 20 (normal mode) + 3081 Optura 10 + 3082 MVX100i / Optura 10 + 3083 EOS 10D + 3084 EOS 300D / EOS Digital Rebel + 3085 PowerShot G5 + 3087 Elura 50 (PTP mode) + 3088 Elura 50 (normal mode) + 308d MVX3i + 308e FV M1 (normal mode) / MVX 3i (normal mode) / Optura Xi (normal mode) + 3093 Optura 300 + 3096 IXY DV M2 (normal mode) / MVX 10i (normal mode) + 3099 EOS 300D (ptp) + 309a PowerShot A80 + 309b Digital IXUS (ptp) + 309c PowerShot S1 IS + 309d Powershot Pro 1 + 309f Camera + 30a0 Camera + 30a1 Camera + 30a2 Camera + 30a8 Elura 60E/Optura 40 (ptp) + 30a9 MVX25i (normal mode) / Optura 40 (normal mode) + 30b1 PowerShot S70 (normal mode) / PowerShot S70 (PTP mode) + 30b2 PowerShot S60 (normal mode) / PowerShot S60 (PTP mode) + 30b3 PowerShot G6 (normal mode) / PowerShot G6 (PTP mode) + 30b4 PowerShot S500 + 30b5 PowerShot A75 + 30b6 Digital IXUS II2 / Digital IXUS II2 (PTP mode) / PowerShot SD110 (PTP mode) / PowerShot SD110 Digital ELPH + 30b7 PowerShot A400 / PowerShot A400 (PTP mode) + 30b8 PowerShot A310 / PowerShot A310 (PTP mode) + 30b9 Powershot A85 + 30ba PowerShot S410 Digital Elph + 30bb PowerShot A95 + 30bd CP-220 + 30be CP-330 + 30bf Digital IXUS 40 + 30c0 Digital IXUS 30 (PTP mode) / PowerShot SD200 (PTP mode) + 30c1 Digital IXUS 50 (normal mode) / IXY Digital 55 (normal mode) / PowerShot A520 (PTP mode) / PowerShot SD400 (normal mode) + 30c2 PowerShot A510 (normal mode) / PowerShot A510 (PTP mode) + 30c4 Digital IXUS i5 (normal mode) / IXY Digital L2 (normal mode) / PowerShot SD20 (normal mode) + 30ea EOS 1D Mark II (PTP mode) + 30eb EOS 20D + 30ec EOS 20D (ptp) + 30ee EOS 350D + 30ef EOS 350D (ptp) + 30f0 PowerShot S2 IS (PTP mode) + 30f2 Digital IXUS 700 (normal mode) / Digital IXUS 700 (PTP mode) / IXY Digital 600 (normal mode) / PowerShot SD500 (normal mode) / PowerShot SD500 (PTP mode) + 30f4 PowerShot SD30 / Ixus iZoom / IXY DIGITAL L3 + 30f5 SELPHY CP500 + 30f6 SELPHY CP400 + 30f8 Powershot A430 + 30f9 PowerShot A410 (PTP mode) + 30fa PowerShot S80 + 30fc PowerShot A620 (PTP mode) + 30fd PowerShot A610 (normal mode)/PowerShot A610 (PTP mode) + 30fe Digital IXUS 65 (PTP mode)/PowerShot SD630 (PTP mode) + 30ff Digital IXUS 55 (PTP mode)/PowerShot SD450 (PTP mode) + 3100 PowerShot TX1 + 310b SELPHY CP600 + 310e Digital IXUS 50 (PTP mode) + 310f PowerShot A420 + 3110 EOS Digital Rebel XTi + 3115 PowerShot SD900 / Digital IXUS 900 Ti / IXY DIGITAL 1000 + 3116 Digital IXUS 750 / PowerShot SD550 (PTP mode) + 3117 PowerShot A700 + 3119 PowerShot SD700 IS / Digital IXUS 800 IS / IXY Digital 800 IS + 311a PowerShot S3 IS + 311b PowerShot A540 + 311c PowerShot SD600 DIGITAL ELPH / DIGITAL IXUS 60 / IXY DIGITAL 70 + 3125 PowerShot G7 + 3126 PowerShot A530 + 3127 SELPHY CP710 + 3128 SELPHY CP510 + 312d Elura 100 + 3136 PowerShot SD800 IS / Digital IXUS 850 IS / IXY DIGITAL 900 IS + 3137 PowerShot SD40 / Digital IXUS i7 IXY / DIGITAL L4 + 3138 PowerShot A710 IS + 3139 PowerShot A640 + 313a PowerShot A630 + 3141 SELPHY ES1 + 3142 SELPHY CP730 + 3143 SELPHY CP720 + 3145 EOS 450D + 3146 EOS 40D + 3147 EOS 1Ds Mark III + 3148 PowerShot S5 IS + 3149 PowerShot A460 + 314b PowerShot SD850 IS DIGITAL ELPH / Digital IXUS 950 IS / IXY DIGITAL 810 IS + 314c PowerShot A570 IS + 314d PowerShot A560 + 314e PowerShot SD750 DIGITAL ELPH / DIGITAL IXUS 75 / IXY DIGITAL 90 + 314f PowerShot SD1000 DIGITAL ELPH / DIGITAL IXUS 70 / IXY DIGITAL 10 + 3150 PowerShot A550 + 3155 PowerShot A450 + 315a PowerShot G9 + 315b PowerShot A650 IS + 315d PowerShot A720 + 315e PowerShot SX100 IS + 315f PowerShot SD950 IS DIGITAL ELPH / DIGITAL IXUS 960 IS / IXY DIGITAL 2000 IS + 3160 Digital IXUS 860 IS + 3170 SELPHY CP750 + 3171 SELPHY CP740 + 3172 SELPHY CP520 + 3173 PowerShot SD890 IS DIGITAL ELPH / Digital IXUS 970 IS / IXY DIGITAL 820 IS + 3174 PowerShot SD790 IS DIGITAL ELPH / Digital IXUS 90 IS / IXY DIGITAL 95 IS + 3175 IXY Digital 25 IS + 3176 PowerShot A590 + 3177 PowerShot A580 + 317a PC1267 [Powershot A470] + 3184 Digital IXUS 80 IS (PTP mode) + 3185 SELPHY ES2 + 3186 SELPHY ES20 + 318d PowerShot SX100 IS + 318e PowerShot A1000 IS + 318f PowerShot G10 + 3191 PowerShot A2000 IS + 3192 PowerShot SX110 IS + 3193 PowerShot SD990 IS DIGITAL ELPH / Digital IXUS 980 IS / IXY DIGITAL 3000 IS + 3195 PowerShot SX1 IS + 3196 PowerShot SD880 IS DIGITAL ELPH / Digital IXUS 870 IS / IXY DIGITAL 920 IS + 3199 EOS 5D Mark II + 319a EOS 7D + 319b EOS 50D + 31aa SELPHY CP770 + 31ab SELPHY CP760 + 31ad PowerShot E1 + 31af SELPHY ES3 + 31b0 SELPHY ES30 + 31b1 SELPHY CP530 + 31bc PowerShot D10 + 31bd PowerShot SD960 IS DIGITAL ELPH / Digital IXUS 110 IS / IXY DIGITAL 510 IS + 31be PowerShot A2100 IS + 31bf PowerShot A480 + 31c0 PowerShot SX200 IS + 31c1 PowerShot SD970 IS DIGITAL ELPH / Digital IXUS 990 IS / IXY DIGITAL 830 IS + 31c2 PowerShot SD780 IS DIGITAL ELPH / Digital IXUS 100 IS / IXY DIGITAL 210 IS + 31c3 PowerShot A1100 IS + 31c4 PowerShot SD1200 IS DIGITAL ELPH / Digital IXUS 95 IS / IXY DIGITAL 110 IS + 31cf EOS Rebel T1i / EOS 500D / EOS Kiss X3 + 31dd SELPHY CP780 + 31df PowerShot G11 + 31e0 PowerShot SX120 IS + 31e1 PowerShot S90 + 31e4 PowerShot SX20 IS + 31e5 Digital IXUS 200 IS + 31e6 PowerShot SD940 IS DIGITAL ELPH / Digital IXUS 120 IS / IXY DIGITAL 220 IS + 31e7 SELPHY CP790 + 31ea EOS Rebel T2i / EOS 550D / EOS Kiss X4 + 31ee SELPHY ES40 + 31ef PowerShot A495 + 31f0 PowerShot A490 + 31f1 PowerShot A3100 IS / PowerShot A3150 IS + 31f2 PowerShot A3000 IS + 31f3 PowerShot Digital ELPH SD1400 IS + 31f4 PowerShot SD1300 IS / IXUS 105 + 31f5 Powershot SD3500 IS / IXUS 210 IS + 31f6 PowerShot SX210 IS + 31f7 Powershot SD4000 IS / IXUS 300 HS / IXY 30S + 31f8 Powershot SD4500 IS / IXUS 1000 HS / IXY 50S + 31ff Digital IXUS 55 + 3209 Vixia HF S21 A + 320f PowerShot G12 + 3210 Powershot SX30 IS + 3211 PowerShot SX130 IS + 3212 Powershot S95 + 3214 SELPHY CP800 + 3215 EOS 60D + 3218 EOS 600D / Rebel T3i (ptp) + 3219 EOS 1D X + 3223 PowerShot A3300 IS + 3224 PowerShot A3200 IS + 3225 PowerShot ELPH 500 HS / IXUS 310 HS + 3226 PowerShow A800 + 3227 PowerShot ELPH 100 HS / IXUS 115 HS + 3228 PowerShot SX230 HS + 3229 PowerShot ELPH 300 HS / IXUS 220 HS + 322a PowerShot A2200 + 322b Powershot A1200 + 322c PowerShot SX220 HS + 3233 PowerShot G1 X + 3234 PowerShot SX150 IS + 3235 PowerShot ELPH 510 HS / IXUS 1100 HS + 3236 PowerShot S100 + 3237 PowerShot ELPH 310 HS / IXUS 230 HS + 3238 PowerShot SX40 HS + 323a EOS 5D Mark III + 323b EOS Rebel T4i + 323d EOS M + 323e PowerShot A1300 + 323f PowerShot A810 + 3240 PowerShot ELPH 320 HS / IXUS 240 HS + 3241 PowerShot ELPH 110 HS / IXUS 125 HS + 3242 PowerShot D20 + 3243 PowerShot A4000 IS + 3244 PowerShot SX260 HS + 3245 PowerShot SX240 HS + 3246 PowerShot ELPH 530 HS / IXUS 510 HS + 3247 PowerShot ELPH 520 HS / IXUS 500 HS + 3248 PowerShot A3400 IS + 3249 PowerShot A2400 IS + 324a PowerShot A2300 + 3250 EOS 6D + 3252 EOS 1D C + 3253 EOS 70D + 3255 SELPHY CP900 + 3256 SELPHY CP810 + 3258 PowerShot G15 + 3259 PowerShot SX50 HS + 325a PowerShot SX160 IS + 325b PowerShot S110 + 325c PowerShot SX500 IS + 325e PowerShot N + 325f PowerShot SX280 HS + 3260 PowerShot SX270 HS + 3261 PowerShot A3500 IS + 3262 PowerShot A2600 + 3263 PowerShot SX275 HS + 3264 PowerShot A1400 + 3265 Powershot ELPH 130 IS / IXUS 140 + 3266 Powershot ELPH 120 IS / IXUS 135 + 3268 PowerShot ELPH 330 HS / IXUS 255 HS + 326f EOS 7D Mark II + 3270 EOS 100D + 3271 PowerShot A2500 + 3272 EOS 700D + 3274 PowerShot G16 + 3275 PowerShot S120 + 3276 PowerShot SX170 IS + 3277 PowerShot SX510 HS + 3278 PowerShot S200 + 327a SELPHY CP910 + 327b SELPHY CP820 + 327d Powershot ELPH 115 IS / IXUS 132 + 327f EOS Rebel T5 / EOS 1200D / EOS Kiss X70 + 3284 PowerShot D30 + 3285 PowerShot SX700 HS + 3286 PowerShot SX600 HS + 3287 PowerShot ELPH 140 IS / IXUS 150 + 3288 Powershot ELPH 135 / IXUS 145 + 3289 PowerShot ELPH 340 HS / IXUS 265 HS + 328a PowerShot ELPH 150 IS / IXUS 155 + 328b PowerShot N Facebook(R) Ready + 3299 EOS M3 + 329a PowerShot SX60 HS + 329b PowerShot SX520 HS + 329c PowerShot SX400 IS + 329d PowerShot G7 X + 329f PowerShot SX530 HS + 32a6 PowerShot SX710 HS + 32aa Powershot ELPH 160 / IXUS 160 + 32ab PowerShot ELPH 350HS / IXUS 275 HS + 32ac PowerShot ELPH 170 IS / IXUS 170 + 32ad PowerShot SX410 IS + 32b1 SELPHY CP1200 + 32b2 PowerShot G9 X + 32b4 EOS Rebel T6 + 32bb EOS M5 + 32bf PowerShot SX420 IS + 32c1 PowerShot ELPH 180 / IXUS 175 + 32c2 PowerShot SX720 HS + 32d5 PowerShot SX430 IS + 32db SELPHY CP1300 +04aa DaeWoo Telecom, Ltd +04ab Chromatic Research +04ac Micro Audiometrics Corp. +04ad Dooin Electronics + 2501 Bluetooth Device +04af Winnov L.P. +04b0 Nikon Corp. + 0102 Coolpix 990 + 0103 Coolpix 880 + 0104 Coolpix 995 + 0106 Coolpix 775 + 0107 Coolpix 5000 + 0108 Coolpix 2500 + 0109 Coolpix 2500 (ptp) + 010a Coolpix 4500 + 010b Coolpix 4500 (ptp) + 010d Coolpix 5700 (ptp) + 010e Coolpix 4300 (storage) + 010f Coolpix 4300 (ptp) + 0110 Coolpix 3500 (Sierra Mode) + 0111 Coolpix 3500 (ptp) + 0112 Coolpix 885 (ptp) + 0113 Coolpix 5000 (ptp) + 0114 Coolpix 3100 (storage) + 0115 Coolpix 3100 (ptp) + 0117 Coolpix 2100 (ptp) + 0119 Coolpix 5400 (ptp) + 011d Coolpix 3700 (ptp) + 0121 Coolpix 3200 (ptp) + 0122 Coolpix 2200 (ptp) + 0124 Coolpix 8400 (mass storage mode) + 0125 Coolpix 8400 (ptp) + 0126 Coolpix 8800 + 0129 Coolpix 4800 (ptp) + 012c Coolpix 4100 (storage) + 012d Coolpix 4100 (ptp) + 012e Coolpix 5600 (ptp) + 0130 Coolpix 4600 (ptp) + 0135 Coolpix 5900 (ptp) + 0136 Coolpix 7900 (storage) + 0137 Coolpix 7900 (ptp) + 013a Coolpix 100 (storage) + 013b Coolpix 100 (ptp) + 0141 Coolpix P2 (storage) + 0142 Coolpix P2 (ptp) + 0163 Coolpix P5100 (ptp) + 0169 Coolpix P50 (ptp) + 0202 Coolpix SQ (ptp) + 0203 Coolpix 4200 (mass storage mode) + 0204 Coolpix 4200 (ptp) + 0205 Coolpix 5200 (storage) + 0206 Coolpix 5200 (ptp) + 0301 Coolpix 2000 (storage) + 0302 Coolpix 2000 (ptp) + 0317 Coolpix L20 (ptp) + 0402 DSC D100 (ptp) + 0403 D2H (mass storage mode) + 0404 D2H SLR (ptp) + 0405 D70 (mass storage mode) + 0406 DSC D70 (ptp) + 0408 D2X SLR (ptp) + 0409 D50 digital camera + 040a D50 (ptp) + 040c D2Hs + 040e DSC D70s (ptp) + 040f D200 (mass storage mode) + 0410 D200 (ptp) + 0413 D40 (mass storage mode) + 041e D60 digital camera (mass storage mode) + 0422 D700 (ptp) + 0423 D5000 + 0424 D3000 + 0425 D300S + 0428 D7000 + 0429 D5100 + 042a D800 (ptp) + 043f D5600 + 0f03 PD-10 Wireless Printer Adapter + 4000 Coolscan LS 40 ED + 4001 LS 50 ED/Coolscan V ED + 4002 Super Coolscan LS-5000 ED +04b1 Pan International +04b3 IBM Corp. + 3003 Rapid Access III Keyboard + 3004 Media Access Pro Keyboard + 300a Rapid Access IIIe Keyboard + 3016 UltraNav Keyboard Hub + 3018 UltraNav Keyboard + 301a 2-port low-power hub + 301b SK-8815 Keyboard + 301c Enhanced Performance Keyboard + 3020 Enhanced Performance Keyboard + 3025 NetVista Full Width Keyboard + 3100 NetVista Mouse + 3103 ScrollPoint Pro Mouse + 3104 ScrollPoint Wireless Mouse + 3105 ScrollPoint Optical (HID) + 3107 ThinkPad 800dpi Optical Travel Mouse + 3108 800dpi Optical Mouse w/ Scroll Point + 3109 Optical ScrollPoint Pro Mouse + 310b Red Wheel Mouse + 310c Wheel Mouse + 4427 Portable CD ROM + 4482 Serial Converter + 4484 SMSC USB20H04 3-Port Hub [ThinkPad X4 UltraBase, Wistron S Note-3 Media Slice] + 4485 ThinkPad Dock Hub + 4524 40 Character Vacuum Fluorescent Display + 4525 Double sided CRT + 4535 4610 Suremark Printer + 4550 NVRAM (128 KB) + 4554 Cash Drawer + 4580 Hub w/ NVRAM + 4581 4800-2xx Hub w/ Cash Drawer + 4604 Keyboard w/ Card Reader + 4671 4820 LCD w/ MSR/KB +04b4 Cypress Semiconductor Corp. + 0001 Mouse + 0002 CY7C63x0x Thermometer + 0033 Mouse + 0060 Wireless optical mouse + 0100 Cino FuzzyScan F760-B + 0101 Keyboard/Hub + 0102 Keyboard with APM + 0130 MyIRC Remote Receiver + 0306 Telephone Receiver + 0407 Optical Skype Mouse + 0bad MetaGeek Wi-Spy + 1002 CY7C63001 R100 FM Radio + 1006 Human Interface Device + 2050 hub + 2830 Opera1 DVB-S (cold state) + 3813 NANO BIOS Programmer + 4235 Monitor 02 Driver + 4381 SCAPS USC-1 Scanner Controller + 4611 Storage Adapter FX2 (CY) + 4616 Flash Disk (TPP) + 4624 DS-Xtreme Flash Card + 5201 Combi Keyboard-Hub (Hub) + 5202 Combi Keyboard-Hub (Keyboard) + 5500 HID->COM RS232 Adapter + 5a9b Dacal CD/DVD Library D-101/DC-300/DC-016RW + 6370 ViewMate Desktop Mouse CC2201 + 6502 CY4609 + 6506 CY4603 + 650a CY4613 + 6560 CY7C65640 USB-2.0 "TetraHub" + 6830 CY7C68300A EZ-USB AT2 USB 2.0 to ATA/ATAPI + 6831 Storage Adapter ISD-300LP (CY) + 7417 Wireless PC Lock/Ultra Mouse + 8329 USB To keyboard/Mouse Converter + 8613 CY7C68013 EZ-USB FX2 USB 2.0 Development Kit + 8614 DTV-DVB UDST7020BDA DVB-S Box(DVBS for MCE2005) + 861f Anysee E30 USB 2.0 DVB-T Receiver + bca1 Barcode Reader + cc04 Centor USB RACIA-ALVAR USB PORT + cc06 Centor-P RACIA-ALVAR USB PORT + d5d5 CY7C63x0x Zoltrix Z-Boxer GamePad + de61 Barcode Reader + de64 Barcode Reader + f000 CY30700 Licorice evaluation board + f111 CY8CKIT-002 PSoC MiniProg3 Rev A Program and debug kit + f115 PSoC FirstTouch Programmer + f231 DELLY Changer 4in1 universal IR remote + f232 Mono embedded computer + fd13 Programmable power socket +04b5 ROHM LSI Systems USA, LLC + 3064 Hantek DSO-3064 +04b6 Hint Corp. +04b7 Compal Electronics, Inc. +04b8 Seiko Epson Corp. + 0001 Stylus Color 740 / Photo 750 + 0002 ISD Smart Cable for Mac + 0003 ISD Smart Cable + 0004 Printer + 0005 Printer + 0006 Printer + 0007 Printer + 0015 Stylus Photo R3000 + 0101 GT-7000U [Perfection 636] + 0102 GT-2200 + 0103 GT-6600U [Perfection 610] + 0104 GT-7600UF [Perfection 1200U/1200U Photo] + 0105 Stylus Scan 2000 + 0106 Stylus Scan 2500 + 0107 ES-2000 [Expression 1600U] + 0108 CC-700 + 0109 ES-8500 [Expression 1640 XL] + 010a GT-8700/GT-8700F [Perfection 1640SU/1640SU PHOTO] + 010b GT-7700U [Perfection 1240U] + 010c GT-6700U [Perfection 640] + 010d CC-500L + 010e ES-2200 [Perfection 1680] + 010f GT-7200U [Perfection 1250/1250 PHOTO] + 0110 GT-8200U/GT-8200UF [Perfection 1650/1650 PHOTO] + 0112 GT-9700F [Perfection 2450 PHOTO] + 0114 Perfection 660 + 0116 GT-9400UF [Perfection 3170] + 0118 GT-F600 [Perfection 4180] + 0119 GT-X750 [Perfection 4490 Photo] + 011a CC-550L [1000 ICS] + 011b GT-9300UF [Perfection 2400 PHOTO] + 011c GT-9800F [Perfection 3200] + 011d GT-7300U [Perfection 1260/1260 PHOTO] + 011e GT-8300UF [Perfection 1660 PHOTO] + 011f GT-8400UF [Perfection 1670/1670 PHOTO] + 0120 GT-7400U [Perfection 1270] + 0121 GT-F500/GT-F550 [Perfection 2480/2580 PHOTO] + 0122 GT-F520/GT-F570 [Perfection 3590 PHOTO] + 0126 ES-7000H [GT-15000] + 0128 GT-X700 [Perfection 4870] + 0129 ES-10000G [Expression 10000XL] + 012a GT-X800 [Perfection 4990 PHOTO] + 012b ES-H300 [GT-2500] + 012c GT-X900 [Perfection V700/V750 Photo] + 012d GT-F650 [GT-S600/Perfection V10/V100] + 012e GT-F670 [Perfection V200 Photo] + 012f GT-F700 [Perfection V350] + 0130 GT-X770 [Perfection V500] + 0131 GT-F720 [GT-S620/Perfection V30/V300 Photo] + 0133 GT-1500 [GT-D1000] + 0135 GT-X970 + 0136 ES-D400 [GT-S80] + 0137 ES-D200 [GT-S50] + 0138 ES-H7200 [GT-20000] + 013a GT-X820 [Perfection V600 Photo] + 0142 GT-F730 [GT-S630/Perfection V33/V330 Photo] + 0143 GT-S55 + 0144 GT-S85 + 0151 Perfection V800 Photo + 0202 Receipt Printer M129C/TM-T70 + 0401 CP 800 Digital Camera + 0402 PhotoPC 850z + 0403 PhotoPC 3000z + 0509 JVC PIX-MC10 + 0601 Stylus Photo 875DC Card Reader + 0602 Stylus Photo 895 Card Reader + 0801 CC-600PX [Stylus CX5200/CX5400/CX6600] + 0802 CC-570L [Stylus CX3100/CX3200] + 0803 Printer (Composite Device) + 0804 Storage Device + 0805 Stylus CX6300/CX6400 + 0806 PM-A850 [Stylus Photo RX600/610] + 0807 Stylus Photo RX500/510 + 0808 Stylus CX5200/CX5300/CX5400 + 0809 Storage Device + 080a F-3200 + 080c ME100 [Stylus CX1500] + 080d Stylus CX4500/4600 + 080e PX-A550 [CX-3500/3600/3650 MFP] + 080f Stylus Photo RX420/RX425/RX430 + 0810 PM-A900 [Stylus Photo RX700] + 0811 PM-A870 [Stylus Photo RX620/RX630] + 0812 MFP Composite Device + 0813 Stylus CX6500/6600 + 0814 PM-A700 + 0815 LP-A500 [AcuLaser CX1] + 0816 Printer (Composite Device) + 0817 LP-M5500/LP-M5500F + 0818 Stylus CX3700/CX3800/DX3800 + 0819 PX-A650 [Stylus CX4700/CX4800/DX4800/DX4850] + 081a PM-A750 [Stylus Photo RX520/RX530] + 081b MFP Composite Device + 081c PM-A890 [Stylus Photo RX640/RX650] + 081d PM-A950 + 081e MFP Composite Device + 081f Stylus CX7700/7800 + 0820 Stylus CX4100/CX4200/DX4200 + 0821 Stylus CX5700F/CX5800F + 0822 Storage Device + 0823 MFP Composite Device + 0824 Storage Device + 0825 MFP Composite Device + 0826 Storage Device + 0827 PM-A820 [Stylus Photo RX560/RX580/RX585/RX590] + 0828 PM-A970 + 0829 PM-T990 + 082a PM-A920 + 082b Stylus CX5900/CX5000/DX5000/DX5050 + 082c Storage Device + 082d Storage Device + 082e PX-A720 [Stylus CX5900/CX6000/DX6000] + 082f PX-A620 [Stylus CX3900/DX4000/DX4050] + 0830 ME 200 [Stylus CX2800/CX2900] + 0831 Stylus CX6900F/CX7000F/DX7000F + 0832 MFP Composite Device + 0833 LP-M5600 + 0834 LP-M6000 + 0835 AcuLaser CX21 + 0836 PM-T960 + 0837 PM-A940 [Stylus Photo RX680/RX685/RX690] + 0838 PX-A640 [CX7300/CX7400/DX7400] + 0839 PX-A740 [CX8300/CX8400/DX8400] + 083a PX-FA700 [CX9300F/CX9400Fax/DX9400F] + 083b MFP Composite Device + 083c PM-A840S [Stylus Photo RX595/RX610] + 083d MFP Composite Device + 083e MFP Composite Device + 083f Stylus CX4300/CX4400/CX5500/CX5600/DX4400/DX4450 + 0841 PX-401A [ME 300/Stylus NX100] + 0843 LP-M5000 + 0844 EP-901A/EP-901F [Artisan 800/Stylus Photo PX800FW] + 0846 EP-801A [Artisan 700/Stylus Photo PX700W/TX700W] + 0847 PX-601F [ME Office 700FW/Stylus Office BX600FW/TX600FW] + 0848 ME Office 600F/Stylus Office BX300F/TX300F + 0849 Stylus SX205 + 084a PX-501A [Stylus NX400] + 084d PX-402A [Stylus SX115/Stylus NX110 Series] + 084f ME OFFICE 510 + 0850 EP-702A [Stylus Photo PX650/TX650 Series] + 0851 Stylus SX410 + 0852 EP-802A [Artisan 710 Series/Stylus Photo PX710W/TX720W Series] + 0853 EP-902A [Artisan 810 Series/Stylus Photo PX810FW Series] + 0854 ME OFFICE 650FN Series/Stylus Office BX310FN/TX520FN Series + 0855 PX-602F [Stylus Office BX610FW/TX620FW Series] + 0856 PX-502A [Stylus SX515W] + 085c ME 320/330 Series [Stylus SX125] + 085d PX-603F [ME OFFICE 960FWD Series/Stylus Office BX625FWD/TX620FWD Series] + 085e PX-503A [ME OFFICE 900WD Series/Stylus Office BX525WD] + 085f Stylus Office BX320FW/TX525FW Series + 0860 EP-903A/EP-903F [Artisan 835/Stylus Photo PX820FWD Series] + 0861 EP-803A/EP-803AW [Artisan 725/Stylus Photo PX720WD/TX720WD Series] + 0862 EP-703A [Stylus Photo PX660 Series] + 0863 ME OFFICE 620F Series/Stylus Office BX305F/BX305FW/TX320F + 0864 ME OFFICE 560W Series + 0865 ME OFFICE 520 Series + 0866 AcuLaser MX20DN/MX20DNF/MX21DNF + 0869 PX-1600F + 086a PX-673F [Stylus Office BX925FWD] + 0870 Stylus Office BX305FW Plus + 0871 K200 Series + 0872 K300 Series + 0873 L200 Series + 0878 EP-704A + 0879 EP-904A/EP-904F [Artisan 837/Stylus Photo PX830FWD Series] + 087b EP-804A/EP-804AR/EP-804AW [Stylus Photo PX730WD/Artisan 730 Series] + 087c PX-1700F + 087d PX-B750F/WP-4525 Series + 087f PX-403A + 0880 PX-434A [Stylus NX330 Series] + 0881 PX-404A [ME OFFICE 535] + 0883 ME 340 Series/Stylus NX130 Series + 0884 Stylus NX430W Series + 0885 Stylus NX230/SX235W Series + 088f Stylus Office BX635FWD + 0890 ME OFFICE 940FW Series/Stylus Office BX630FW Series + 0891 Stylus Office BX535WD + 0892 Stylus Office BX935FWD + 0893 EP-774A +04b9 Rainbow Technologies, Inc. + 0300 SafeNet USB SuperPro/UltraPro + 1000 iKey 1000 Token + 1001 iKey 1200 Token + 1002 iKey Token + 1003 iKey Token + 1004 iKey Token + 1005 iKey Token + 1006 iKey Token + 1200 iKey 2000 Token + 1201 iKey Token + 1202 iKey 2032 Token + 1203 iKey Token + 1204 iKey Token + 1205 iKey Token + 1206 iKey 4000 Token + 1300 iKey 3000 Token + 1301 iKey 3000 + 1302 iKey Token + 1303 iKey Token + 1304 iKey Token + 1305 iKey Token + 1306 iKey Token + 8000 SafeNet Sentinel Hardware Key +04ba Toucan Systems, Ltd +04bb I-O Data Device, Inc. + 0101 USB2-IDE/ATAPI Bridge Adapter + 0201 USB2-IDE/ATAPI Bridge Adapter + 0204 DVD Multi-plus unit iU-CD2 + 0206 DVD Multi-plus unit DVR-UEH8 + 0301 Storage Device + 0314 USB-SSMRW SD-card + 0319 USB2-IDE/ATAPI Bridge Adapter + 031a USB2-IDE/ATAPI Bridge Adapter + 031b USB2-IDE/ATAPI Bridge Adapter + 031e USB-SDRW SD-card + 0502 Nogatech Live! (BT) + 0528 GV-USB Video Capture + 0901 USB ETT + 0904 ET/TX Ethernet [pegasus] + 0913 ET/TX-S Ethernet [pegasus2] + 0919 USB WN-B11 + 0922 IOData AirPort WN-B11/USBS 802.11b + 0930 ETG-US2 + 0937 WN-WAG/USL Wireless LAN Adapter + 0938 WN-G54/USL Wireless LAN Adapter + 093b WN-GDN/USB + 093f WNGDNUS2 802.11n + 0944 WHG-AGDN/US Wireless LAN Adapter + 0945 WN-GDN/US3 Wireless LAN Adapter + 0947 WN-G150U Wireless LAN Adapter + 0948 WN-G300U Wireless LAN Adapter + 0a03 Serial USB-RSAQ1 + 0a07 USB2-iCN Adapter + 0a08 USB2-iCN Adapter + 0c01 FM-10 Pro Disk +04bd Toshiba Electronics Taiwan Corp. +04be Telia Research AB +04bf TDK Corp. + 0100 MediaReader CF + 0115 USB-PDC Adapter UPA9664 + 0116 USB-cdmaOne Adapter UCA1464 + 0117 USB-PHS Adapter UHA6400 + 0118 USB-PHS Adapter UPA6400 + 0135 MediaReader Dual + 0202 73S1121F Smart Card Reader- + 0309 Bluetooth USB dongle + 030a IBM Bluetooth Ultraport Module + 030b Bluetooth Device + 030c Ultraport Bluetooth Device + 0310 Integrated Bluetooth + 0311 Integrated Bluetooth Device + 0317 Bluetooth UltraPort Module from IBM + 0318 IBM Integrated Bluetooth + 0319 Bluetooth Adapter + 0320 Bluetooth Adapter + 0321 Bluetooth Device + 0a28 INDI AV-IN Device +04c1 U.S. Robotics (3Com) + 0020 56K Voice Pro + 0022 56K Voice Pro + 007e ISDN TA + 0082 OfficeConnect Analog Modem + 008f Pro ISDN TA + 0097 OfficeConnect Analog + 009d HomeConnect Webcam [vicam] + 00a9 ISDN Pro TA-U + 00b9 HomeConnect IDSL Modem + 3021 56k Voice FaxModem Pro +04c2 Methode Electronics Far East PTE, Ltd +04c3 Maxi Switch, Inc. + 1102 Mouse + 2102 Mouse +04c4 Lockheed Martin Energy Research +04c5 Fujitsu, Ltd + 1029 fi-4010c Scanner + 1033 fi-4110CU + 1041 fi-4120c Scanner + 1042 fi-4220c Scanner + 105b AH-F401U Air H device + 1084 PalmSecure Sensor V2 + 1096 fi-5110EOX + 1097 fi-5110C + 10ae fi-4120C2 + 10af fi-4220C2 + 10c7 fi-60f scanner + 10e0 fi-5120c Scanner + 10e1 fi-5220C + 10e7 fi-5900C + 10fe S500 + 1150 fi-6230 + 125a PalmSecure Sensor Device - MP + 200f Sigma DP2 (Mass Storage) + 2010 Sigma DP2 (PictBridge) + 201d SATA 3.0 6Gbit/s Adaptor [GROOVY] +04c6 Toshiba America Electronic Components +04c7 Micro Macro Technologies +04c8 Konica Corp. + 0720 Digital Color Camera + 0721 e-miniD Camera + 0722 e-mini + 0723 KD-200Z Camera + 0726 KD-310Z Camera + 0728 Revio C2 Mass Storage Device + 0729 Revio C2 Digital Camera + 072c Revio KD20M + 072d Revio KD410Z +04ca Lite-On Technology Corp. + 004b Keyboard + 004f SK-9020 keyboard + 1766 HID Monitor Controls + 2004 Bluetooth 4.0 [Broadcom BCM20702A0] + 2006 Broadcom BCM43142A0 Bluetooth Device + 2007 Broadcom BCM43142A0 Bluetooth Device + 3005 Atheros Bluetooth + 300b Atheros AR3012 Bluetooth + 300d Atheros AR3012 Bluetooth + 300f Atheros AR3012 Bluetooth + 3014 Qualcomm Atheros Bluetooth + 7022 HP HD Webcam + 7025 HP HD Webcam + 7046 TOSHIBA Web Camera - HD + 9304 Hub + f01c TT1280DA DVB-T TV Tuner +04cb Fuji Photo Film Co., Ltd + 0100 FinePix 30i/40i/50i, A101/201, 1300/2200, 1400/2400/2600/2800/4500/4700/4800/4900/6800/6900 Zoom + 0103 FinePix NX-500/NX-700 printer + 0104 FinePix A101, 2600/2800/4800/6800 Zoom (PC CAM) + 0108 FinePix F601 Zoom (DSC) + 0109 FinePix F601 Zoom (PC CAM) + 010a FinePix S602 (Pro) Zoom (DSC) + 010b FinePix S602 (Pro) Zoom (PC CAM) + 010d FinePix S2 pro + 010e FinePix F402 Zoom (DSC) + 010f FinePix F402 Zoom (PC CAM) + 0110 FinePix M603 Zoom (DSC) + 0111 FinePix M603 Zoom (PC CAM) + 0112 FinePix A202, A200 Zoom (DSC) + 0113 FinePix A202, A200 Zoom (PC CAM) + 0114 FinePix F401 Zoom (DSC) + 0115 FinePix F401 Zoom (PC CAM) + 0116 FinePix A203 Zoom (DSC) + 0117 FinePix A203 Zoom (PC CAM) + 0118 FinePix A303 Zoom (DSC) + 0119 FinePix A303 Zoom (PC CAM) + 011a FinePix S304/3800 Zoom (DSC) + 011b FinePix S304/3800 Zoom (PC CAM) + 011c FinePix A204/2650 Zoom (DSC) + 011d FinePix A204/2650 Zoom (PC CAM) + 0120 FinePix F700 Zoom (DSC) + 0121 FinePix F700 Zoom (PC CAM) + 0122 FinePix F410 Zoom (DSC) + 0123 FinePix F410 Zoom (PC CAM) + 0124 FinePix A310 Zoom (DSC) + 0125 FinePix A310 Zoom (PC CAM) + 0126 FinePix A210 Zoom (DSC) + 0127 FinePix A210 Zoom (PC CAM) + 0128 FinePix A205(S) Zoom (DSC) + 0129 FinePix A205(S) Zoom (PC CAM) + 012a FinePix F610 Zoom (DSC) + 012b FinePix Digital Camera 030513 + 012c FinePix S7000 Zoom (DSC) + 012d FinePix S7000 Zoom (PC CAM) + 012f FinePix Digital Camera 030731 + 0130 FinePix S5000 Zoom (DSC) + 0131 FinePix S5000 Zoom (PC CAM) + 013b FinePix Digital Camera 030722 + 013c FinePix S3000 Zoom (DSC) + 013d FinePix S3000 Zoom (PC CAM) + 013e FinePix F420 Zoom (DSC) + 013f FinePix F420 Zoom (PC CAM) + 0142 FinePix S7000 Zoom (PTP) + 0148 FinePix A330 Zoom (DSC) + 0149 FinePix A330 Zoom (UVC) + 014a FinePix A330 Zoom (PTP) + 014b FinePix A340 Zoom (DSC) + 014c FinePix A340 Zoom (UVC) + 0159 FinePix F710 Zoom (DSC) + 0165 FinePix S3500 Zoom (DSC) + 0168 FinePix E500 Zoom (DSC) + 0169 FinePix E500 Zoom (UVC) + 016b FinePix E510 Zoom (DSC) + 016c FinePix E510 Zoom (PC CAM) + 016e FinePix S5500 Zoom (DSC) + 016f FinePix S5500 Zoom (UVC) + 0171 FinePix E550 Zoom (DSC) + 0172 FinePix E550 Zoom (UVC) + 0177 FinePix F10 (DSC) + 0179 Finepix F10 (PTP) + 0186 FinePix S5200/S5600 Zoom (DSC) + 0188 FinePix S5200/S5600 Zoom (PTP) + 018e FinePix S9500 Zoom (DSC) + 018f FinePix S9500 Zoom (PTP) + 0192 FinePix E900 Zoom (DSC) + 0193 FinePix E900 Zoom (PTP) + 019b FinePix F30 (PTP) + 01af FinePix A700 (PTP) + 01bf FinePix F6000fd/S6500fd Zoom (PTP) + 01c0 FinePix F20 (PTP) + 01c1 FinePix F31fd (PTP) + 01c3 FinePix S5 Pro + 01c4 FinePix S5700 Zoom (PTP) + 01c5 FinePix F40fd (PTP) + 01c6 FinePix A820 Zoom (PTP) + 01d2 FinePix A800 Zoom (PTP) + 01d3 FinePix A920 (PTP) + 01d4 FinePix F50fd (PTP) + 01d5 FinePix F47 (PTP) + 01f7 FinePix J250 (PTP) + 01fd A160 + 023e FinePix AX300 + 0240 FinePix S2950 Digital Camera + 0241 FinePix S3200 Digital Camera + 0278 FinePix JV300 + 02c5 FinePix S9900W Digital Camera (PTP) + 5006 ASK-300 +04cc ST-Ericsson + 1122 Hub + 1520 USB 2.0 Hub (Avocent KVM) + 1521 USB 2.0 Hub + 1a62 GW Instek GSP-830 Spectrum Analyzer (HID) + 2323 Ux500 serial debug port + 2533 NFC device (PN533) + 8116 Camera +04cd Tatung Co. Of America +04ce ScanLogic Corp. + 0002 SL11R-IDE IDE Bridge + 0100 USB2PRN Printer Class + 0300 Phantom 336CX - C3 scanner + 04ce SL11DEMO, VID: 0x4ce, PID: 0x4ce + 07d1 SL11R, VID: 0x4ce, PID: 0x07D1 +04cf Myson Century, Inc. + 0022 OCZ Alchemy Series Elixir II Keyboard + 0800 MTP800 Mass Storage Device + 8810 CS8810 Mass Storage Device + 8811 CS8811 Mass Storage Device + 8813 CS8813 Mass Storage Device + 8818 USB2.0 to ATAPI Bridge Controller + 8819 USB 2.0 SD/MMC Reader + 9920 CS8819A2-114 Mass Storage Device +04d0 Digi International +04d1 ITT Canon +04d2 Altec Lansing Technologies + 0070 ADA70 Speakers + 0305 Non-Compliant Audio Device + 0311 ADA-310 Speakers + 2060 Claritel-i750 - vp + ff05 ADA-305 Speakers + ff47 Lansing HID Audio Controls + ff49 Lansing HID Audio Controls +04d3 VidUS, Inc. +04d4 LSI Logic, Inc. +04d5 Forte Technologies, Inc. +04d6 Mentor Graphics +04d7 Oki Semiconductor + 1be4 Bluetooth Device +04d8 Microchip Technology, Inc. + 0002 PicoLCD 20x2 + 0003 PICkit 2 Microcontroller Programmer + 000a CDC RS-232 Emulation Demo + 000b PIC18F2550 (32K Flashable 10 Channel, 10 Bit A/D USB Microcontroller) + 0032 PICkit1 + 0033 PICkit2 + 0036 PICkit Serial Analyzer + 00e0 PIC32 Starter Board + 04cd 28Cxxx EEPROM Programmer + 0a04 AGP LIN Serial Analyzer + 8000 In-Circuit Debugger + 8001 ICD2 in-circuit debugger + 8101 PIC24F Starter Kit + 8107 Microstick II + 8108 ChipKit Pro MX7 (PIC32MX) + 9004 Microchip REAL ICE + 900a PICkit3 + 9012 PICkit4 + c001 PicoLCD 20x4 + e11c TL866CS EEPROM Programmer [MiniPRO] + f2c4 Macareux-labs Hygrometry Temperature Sensor + f2f7 Yepkit YKUSH + f3aa Macareux-labs Usbce Bootloader mode + f437 SBE Tech Ultrasonic Anemometer + f4b5 SmartScope + f8da Hughski Ltd. ColorHug + f8e8 Harmony 300/350 Remote + f91c SPROG IIv3 + faff Dangerous Prototypes BusPirate v4 Bootloader mode + fb00 Dangerous Prototypes BusPirate v4 + fbb2 GCUSB-nStep stepper motor controller + fbba DiscFerret Magnetic Disc Analyser (bootloader mode) + fbbb DiscFerret Magnetic Disc Analyser (active mode) + fc1e Bachrus Speedometer Interface + fc92 Open Bench Logic Sniffer + ffee Devantech USB-ISS + ffef PICoPLC [APStech] +04d9 Holtek Semiconductor, Inc. + 0022 Portable Keyboard + 048e Optical Mouse + 0499 Optical Mouse + 1135 Mouse [MGK-15BU/MLK-15BU] + 1203 Keyboard + 1400 PS/2 keyboard + mouse controller + 1503 Keyboard + 1603 Keyboard + 1702 Keyboard LKS02 + 1818 Keyboard [Diatec Filco Majestouch 2] + 2011 Keyboard [Diatec Filco Majestouch 1] + 2013 Keyboard [Das Keyboard] + 2206 Fujitsu Siemens Mouse Esprimo Q + 2221 Keyboard + 2323 Keyboard + 2519 Shenzhen LogoTech 2.4GHz receiver + 2832 HT82A832R Audio MCU + 2834 HT82A834R Audio MCU + a01c wireless multimedia keyboard with trackball [Trust ADURA 17911] + a050 Chatman V1 + a052 USB-zyTemp + a055 Keyboard + a096 Keyboard + a09f E-Signal LUOM G10 Mechanical Gaming Mouse + a100 Mouse [HV-MS735] + a11b Mouse [MX-3200] + e002 MCU +04da Panasonic (Matsushita) + 0901 LS-120 Camera + 0912 SDR-S10 + 0b01 CD-R/RW Drive + 0b03 SuperDisk 240MB + 0d01 CD-R Drive KXL-840AN + 0d09 CD-R Drive KXL-RW32AN + 0d0a CD-R Drive KXL-CB20AN + 0d0d CDRCB03 + 0d0e DVD-ROM & CD-R/RW + 0f07 KX-MB2030 Multifunction Laser Printer + 0f40 Printer + 104d Elite Panaboard UB-T880 (HID) + 104e Elite Panaboard Pen Adaptor (HID) + 1500 MFSUSB Driver + 1800 DY-WL10 802.11abgn Adapter [Broadcom BCM4323] + 1b00 MultiMediaCard + 2121 EB-VS6 + 2316 DVC Mass Storage Device + 2317 DVC USB-SERIAL Driver for WinXP + 2318 NV-GS11/230/250 (webcam mode) + 2319 NV-GS15 (webcam mode) + 231a NV-GS11/230/250 (DV mode) + 231d DVC Web Camera Device + 231e DVC DV Stream Device + 2372 Lumix Camera (Storage mode) + 2374 Lumix Camera (PTP mode) + 2451 HDC-SD9 + 245b HC-X920K (3MOS Full HD video camcorder) + 2477 SDR-H85 Camcorder (PC mode) + 2478 SDR-H85 Camcorder (recorder mode - SD card) + 2479 SDR-H85 Camcorder (recorder mode - HDD) + 2497 HDC-TM700 + 250c Gobi Wireless Modem (QDL mode) + 250d Gobi Wireless Modem + 3904 N5HBZ0000055 802.11abgn Wireless Adapter [Atheros AR7010+AR9280] + 3908 N5HBZ0000062 802.11abgn Wireless Adapter [Atheros AR9374v1.1] + 3c04 JT-P100MR-20 [ePassport Reader] +04db Hypertec Pty, Ltd +04dc Huan Hsin Holdings, Ltd +04dd Sharp Corp. + 13a6 MFC2000 + 6006 AL-1216 + 6007 AL-1045 + 6008 AL-1255 + 6009 AL-1530CS + 600a AL-1540CS + 600b AL-1456 + 600c AL-1555 + 600d AL-1225 + 600e AL-1551CS + 600f AR-122E + 6010 AR-152E + 6011 AR-157E + 6012 SN-1045 + 6013 SN-1255 + 6014 SN-1456 + 6015 SN-1555 + 6016 AR-153E + 6017 AR-122E N + 6018 AR-153E N + 6019 AR-152E N + 601a AR-157E N + 601b AL-1217 + 601c AL-1226 + 601d AR-123E + 6021 IS01 + 7002 DVC Ver.1.0 + 7004 VE-CG40U Digital Still Camera + 7005 VE-CG30 Digital Still Camera + 7007 VL-Z7S Digital Camcorder + 8004 Zaurus SL-5000D/SL-5500 PDA + 8005 Zaurus A-300 + 8006 Zaurus SL-B500/SL-5600 PDA + 8007 Zaurus C-700 PDA + 9009 AR-M160 + 9014 IM-DR80 Portable NetMD Player + 9031 Zaurus C-750/C-760/C-860/SL-C3000 PDA + 9032 Zaurus SL-6000 + 903a GSM GPRS + 9050 Zaurus C-860 PDA + 9056 Viewcam Z + 9073 AM-900 + 9074 GSM GPRS + 90a9 Sharp Composite + 90d0 USB-to-Serial Comm. Port + 90f2 Sharp 3G GSM USB Control + 9120 WS004SH + 9122 WS007SH + 9123 W-ZERO3 ES Smartphone + 91a3 922SH Internet Machine + 939a IS03 +04de MindShare, Inc. +04df Interlink Electronics +04e1 Iiyama North America, Inc. + 0201 Monitor Hub +04e2 Exar Corp. + 1410 XR21V1410 USB-UART IC +04e3 Zilog, Inc. +04e4 ACC Microelectronics +04e5 Promise Technology +04e6 SCM Microsystems, Inc. + 0001 E-USB ATA Bridge + 0002 eUSCSI SCSI Bridge + 0003 eUSB SmartMedia Card Reader + 0005 eUSB SmartMedia/CompactFlash Card Reader + 0006 eUSB SmartMedia Card Reader + 0007 Hifd + 0009 eUSB ATA/ATAPI Adapter + 000a eUSB CompactFlash Adapter + 000b eUSCSI Bridge + 000c eUSCSI Bridge + 000d Dazzle MS + 0012 Dazzle SD/MMC + 0101 eUSB ATA Bridge (Sony Spressa USB CDRW) + 0311 Dazzle DM-CF + 0312 Dazzle DM-SD/MMC + 0313 Dazzle SM + 0314 Dazzle MS + 0322 e-Film Reader-5 + 0325 eUSB ORCA Quad Reader + 0327 Digital Media Reader + 03fe DMHS2 DFU Adapter + 0406 eUSB SmartDM Reader + 04e6 eUSB DFU Adapter + 04e7 STCII DFU Adapter + 04e8 eUSBDM DFU Adapter + 04e9 DM-E DFU Adapter + 0500 Veridicom 5thSense Fingerprint Sensor and eUSB SmartCard + 0701 DCS200 Loader Device + 0702 DVD Creation Station 200 + 0703 DVC100 Loader Device + 0704 Digital Video Creator 100 + 1001 SCR300 Smart Card Reader + 1010 USBAT-2 CompactFlash Card Reader + 1014 e-Film Reader-3 + 1020 USBAT ATA/ATAPI Adapter + 2007 RSA SecurID ComboReader + 2009 Citibank Smart Card Reader + 200a Reflex v.2 Smart Card Reader + 200d STR391 Reader + 5111 SCR331-DI SmartCard Reader + 5113 SCR333 SmartCard Reader + 5114 SCR331-DI SmartCard Reader + 5115 SCR335 SmartCard Reader + 5116 SCR331-LC1 / SCR3310 SmartCard Reader + 5117 SCR3320 - Smart Card Reader + 5118 Expresscard SIM Card Reader + 5119 SCR3340 - ExpressCard54 Smart Card Reader + 511b SmartCard Reader + 511d SCR3311 Smart Card Reader + 5120 SCR331-DI SmartCard Reader + 5121 SDI010 Smart Card Reader + 5151 SCR338 Keyboard Smart Card Reader + 5292 SCL011 RFID reader + 5410 SCR35xx Smart Card Reader + 5591 SCL3711-NFC&RW + 5810 uTrust 2700 R Smart Card Reader + e000 SCRx31 Reader + e001 SCR331 SmartCard Reader + e003 SPR532 PinPad SmartCard Reader +04e7 Elo TouchSystems + 0001 TouchScreen + 0002 Touchmonitor Interface 2600 Rev 2 + 0004 4000U CarrollTouch® Touchmonitor Interface + 0007 2500U IntelliTouch® Touchmonitor Interface + 0008 3000U AccuTouch® Touchmonitor Interface + 0009 4000U CarrollTouch® Touchmonitor Interface + 0020 Touchscreen Interface (2700) + 0021 Touchmonitor Interface + 0030 4500U CarrollTouch® Touchmonitor Interface + 0032 Touchmonitor Interface + 0033 Touchmonitor Interface + 0041 5010 Surface Capacitive Touchmonitor Interface + 0042 Touchmonitor Interface + 0050 2216 AccuTouch® Touchmonitor Interface + 0071 Touchmonitor Interface + 0072 Touchmonitor Interface + 0081 Touchmonitor Interface + 0082 Touchmonitor Interface + 00ff Touchmonitor Interface +04e8 Samsung Electronics Co., Ltd + 0001 Printer Bootloader + 0100 Kingston Flash Drive (128MB) + 0110 Connect3D Flash Drive + 0111 Connect3D Flash Drive + 0300 E2530 / GT-C3350 Phones (Mass storage mode) + 1003 MP3 Player and Recorder + 1006 SDC-200Z + 130c NX100 + 1323 WB700 Camera + 1f05 S2 Portable [JMicron] (500GB) + 1f06 HX-MU064DA portable harddisk + 2018 WIS09ABGN LinkStick Wireless LAN Adapter + 2035 Digital Photo Frame Mass Storage + 2036 Digital Photo Frame Mini Monitor + 3004 ML-4600 + 3005 Docuprint P1210 + 3008 ML-6060 laser printer + 300c ML-1210 Printer + 300e Laser Printer + 3104 ML-3550N + 3210 ML-5200A Laser Printer + 3226 Laser Printer + 3228 Laser Printer + 322a Laser Printer + 322c Laser Printer + 3230 ML-1440 + 3232 Laser Printer + 3236 ML-1450 + 3238 ML-1430 + 323a ML-1710 Printer + 323b Phaser 3130 + 323c Laser Printer + 323d Phaser 3120 + 323e Laser Printer + 3240 Laser Printer + 3242 ML-1510 Laser Printer + 3248 Color Laser Printer + 324a Laser Printer + 324c ML-1740 Printer + 324d Phaser 3121 + 3256 ML-1520 Laser Printer + 325b Xerox Phaser 3117 Laser Printer + 325f Phaser 3425 Laser Printer + 3260 CLP-510 Color Laser Printer + 3268 ML-1610 Mono Laser Printer + 326c ML-2010P Mono Laser Printer + 3276 ML-3050/ML-3051 Laser Printer + 327e ML-2510 Series + 328e CLP-310 Color Laser Printer + 3292 ML-1640 Series Laser Printer + 3296 ML-2580N Mono Laser Printer + 3297 ML-191x/ML-252x Laser Printer + 329f CLP-325 Color Laser Printer + 3301 ML-1660 Series + 330c ML-1865 + 330f ML-216x Series Laser Printer + 3310 ML-331x Series Laser Printer + 3315 ML-2540 Series Laser Printer + 331e M262x/M282x Xpress Series Laser Printer + 3409 SCX-4216F Scanner + 340c SCX-5x15 series + 340d SCX-6x20 series + 340e MFP 560 series + 340f Printing Support + 3412 SCX-4x20 series + 3413 SCX-4100 Scanner + 3415 Composite Device + 3419 Composite Device + 341a Printing Support + 341b SCX-4200 series + 341c Composite Device + 341d Composite Device + 341f Composite Device + 3420 Composite Device + 3426 SCX-4500 Laser Printer + 342d SCX-4x28 Series + 344f SCX-3400 Series + 3605 InkJet Color Printer + 3606 InkJet Color Printer + 3609 InkJet Color Printer + 3902 InkJet Color Printer + 3903 Xerox WorkCentre XK50cx + 390f InkJet Color Printer + 3911 SCX-1020 series + 4005 GT-S8000 Jet (msc) + 4f1f GT-S8000 Jet (mtp) + 5000 YP-MF series + 5001 YP-100 + 5002 YP-30 + 5003 YP-700 + 5004 YP-30 + 5005 YP-300 + 5006 YP-750 + 500d MP3 Player + 5010 Yepp YP-35 + 5011 YP-780 + 5013 YP-60 + 5015 yepp upgrade + 501b MP3 Player + 5021 Yepp YP-ST5 + 5026 YP-MT6V + 5027 YP-T7 + 502b YP-F1 + 5032 YP-J70 + 503b YP-U1 MP3 Player + 503d YP-T7F + 5041 YP-Z5 + 5050 YP-U2 MP3 Player + 5051 YP-F2R + 5055 YP-T9 + 507d YP-U3 (mtp) + 507f YP-T9J + 5080 Yepp YP-K3 (msc) + 5081 Yepp YP-K3 (mtp) + 5082 YP-P2 (msc) + 5083 YP-P2 (mtp) + 508a YP-T10 + 508b YP-S5 MP3 Player + 508c YP-S5 + 5090 YP-S3 (msc) + 5091 YP-S3 (mtp) + 5092 YP-U4 (msc) + 5093 YP-U4 (mtp) + 5095 YP-S2 + 510f YP-R1 + 5119 Yepp YP-P3 + 511c YP-Q2 + 5121 YP-U5 + 5123 Yepp YP-M1 + 5a00 YP-NEU + 5a01 YP-NDU + 5a03 Yepp MP3 Player + 5a04 YP-800 + 5a08 YP-90 + 5a0f Meizu M6 MiniPlayer + 5b01 Memory Stick Reader/Writer + 5b02 Memory Stick Reader/Writer + 5b03 Memory Stick Reader/Writer + 5b04 Memory Stick Reader/Writer + 5b05 Memory Stick Reader/Writer + 5b11 SEW-2001u Card + 5f00 NEXiO Sync + 5f01 NEXiO Sync + 5f02 NEXiO Sync + 5f03 NEXiO Sync + 5f04 NEXiO Sync + 5f05 STORY Station 1TB + 6032 G2 Portable hard drive + 6033 G2 Portable device + 6034 G2 Portable hard drive + 60b3 M2 Portable Hard Drive + 60c4 M2 Portable Hard Drive USB 3.0 + 6124 D3 Station External Hard Drive + 6125 D3 Station External Hard Drive + 61b5 M3 Portable Hard Drive 2TB + 61b6 M3 Portable Hard Drive 1TB + 61f3 Portable SSD T3 (MU-PT250B, MU-PT500B) + 61f5 Portable SSD T5 + 6601 Mobile Phone + 6602 Galaxy + 6603 Galaxy + 6611 MITs Sync + 6613 MITs Sync + 6615 MITs Sync + 6617 MITs Sync + 6619 MITs Sync + 661b MITs Sync + 661e Handheld + 6620 Handheld + 6622 Handheld + 6624 Handheld + 662e MITs Sync + 6630 MITs Sync + 6632 MITs Sync + 663e D900e/B2100 Phone + 663f SGH-E720/SGH-E840 + 6640 Usb Modem Enumerator + 6651 i8510 Innov8 + 6702 X830 + 6708 U600 Phone + 6709 U600 + 6734 Juke + 6759 D900e/B2100 Media Player + 675a D900e/B2100 Mass Storage + 675b D900e Camera + 6772 Standalone LTE device (Trial) + 6795 S5230 + 6802 Standalone HSPA device + 6806 Composite LTE device (Trial) + 6807 Composite HSPA device + 681c Galaxy Portal/Spica/S + 681d Galaxy Portal/Spica Android Phone + 6843 E2530 Phone (Samsung Kies mode) + 684e Wave (GT-S8500) + 685b GT-I9100 Phone [Galaxy S II] (mass storage mode) + 685c GT-I9250 Phone [Galaxy Nexus] (Mass storage mode) + 685d GT-I9100 Phone [Galaxy S II] (Download mode) + 685e GT-I9100 / GT-C3350 Phones (USB Debugging mode) + 6860 Galaxy (MTP) + 6863 GT-I9500 [Galaxy S4] / GT-I9250 [Galaxy Nexus] (network tethering) + 6864 GT-I9070 (network tethering, USB debugging enabled) + 6865 Galaxy (PTP mode) + 6866 Galaxy (debugging mode) + 6868 Escape Composite driver for Android Phones: Modem+Diagnostic+ADB + 6875 GT-B3710 Standalone LTE device (Commercial) + 6876 GT-B3710 LTE Modem + 6877 Galaxy S + 687a GT-E2370 mobile phone + 6888 GT-B3730 Composite LTE device (Commercial) + 6889 GT-B3730 Composite LTE device (Commercial) + 689a LTE Storage Driver [CMC2xx] + 689e GT-S5670 [Galaxy Fit] + 68aa Reality + 7011 SEW-2003U Card + 7021 Bluetooth Device + 7061 eHome Infrared Receiver + 7080 Anycall SCH-W580 + 7081 Human Interface Device + 8001 Handheld + e020 SERI E02 SCOM 6200 UMTS Phone + e021 SERI E02 SCOM 6200 Virtual UARTs + e022 SERI E02 SCOM 6200 Flash Load Disk + f000 Intensity 3 (Mass Storage Mode) + ff30 SG_iMON +04e9 PC-Tel, Inc. +04ea Brooktree Corp. +04eb Northstar Systems, Inc. + e004 eHome Infrared Transceiver +04ec Tokyo Electron Device, Ltd +04ed Annabooks +04ef Pacific Electronic International, Inc. +04f0 Daewoo Electronics Co., Ltd +04f1 Victor Company of Japan, Ltd + 0001 GC-QX3 Digital Still Camera + 0004 GR-DVL815U Digital Video Camera + 0006 DV Camera Storage + 0008 GZ-MG30AA/MC500E Digital Video Camera + 0009 GR-DX25EK Digital Video Camera + 000a GR-D72 Digital Video Camera + 1001 GC-A50 Camera Device + 3008 MP-PRX1 Ethernet + 3009 MP-XP7250 WLAN Adapter +04f2 Chicony Electronics Co., Ltd + 0001 KU-8933 Keyboard + 0002 NT68P81 Keyboard + 0110 KU-2971 Keyboard + 0111 KU-9908 Keyboard + 0112 KU-8933 Keyboard with PS/2 Mouse port + 0116 KU-2971/KU-0325 Keyboard + 0200 KBR-0108 + 0201 Gaming Keyboard KPD0250 + 0220 Wireless HID Receiver + 0402 Genius LuxeMate i200 Keyboard + 0403 KU-0420 keyboard + 0418 KU-0418 Tactical Pad + 0618 RG-0618U Wireless HID Receiver & KG-0609 Wireless Keyboard with Touchpad + 0718 wired mouse + 0760 Acer KU-0760 Keyboard + 0833 KU-0833 Keyboard + 0841 HP Multimedia Keyboard + 0860 2.4G Multimedia Wireless Kit + 1061 HP KG-1061 Wireless Keyboard+Mouse + 1121 Periboard 717 Mini Wireless Keyboard + a001 E-Video DC-100 Camera + a120 ORITE CCD Webcam(PC370R) + a121 ORITE CCD Webcam(PC370R) + a122 ORITE CCD Webcam(PC370R) + a123 ORITE CCD Webcam(PC370R) + a124 ORITE CCD Webcam(PC370R) + a128 PC Camera (SN9C202 + OV7663 + EEPROM) + a133 Gateway Webcam + a136 LabTec Webcam 5500 + a147 Medion Webcam + a204 DSC WIA Device (1300) + a208 DSC WIA Device (2320) + a209 Labtec DC-2320 + a20a DSC WIA Device (3310) + a20c DSC WIA Device (3320) + a210 Audio Device + b008 USB 2.0 Camera + b009 Integrated Camera + b010 Integrated Camera + b012 1.3 MPixel UVC Webcam + b013 USB 2.0 Camera + b015 VGA 24fps UVC Webcam + b016 VGA 30fps UVC Webcam + b018 2M UVC Webcam + b021 ViewSonic 1.3M, USB2.0 Webcam + b022 Gateway USB 2.0 Webcam + b023 Gateway USB 2.0 Webcam + b024 USB 2.0 Webcam + b025 Camera + b027 Gateway USB 2.0 Webcam + b028 VGA UVC Webcam + b029 1.3M UVC Webcam + b036 Asus Integrated 0.3M UVC Webcam + b044 Acer CrystalEye Webcam + b057 integrated USB webcam + b059 CKF7037 HP webcam + b064 CNA7137 Integrated Webcam + b070 Camera + b071 2.0M UVC Webcam / CNF7129 + b083 CKF7063 Webcam (HP) + b091 Webcam + b104 CNF7069 Webcam + b107 CNF7070 Webcam + b14c CNF8050 Webcam + b159 CNF8243 Webcam + b15c Sony Vaio Integrated Camera + b175 4-Port Hub + b1aa Webcam-101 + b1ac HP Laptop Integrated Webcam [2 MP Fixed] + b1b4 Lenovo Integrated Camera + b1b9 Asus Integrated Webcam + b1cf Lenovo Integrated Camera + b1d6 CNF9055 Toshiba Webcam + b1d8 1.3M Webcam + b1e4 Toshiba Integrated Webcam + b213 Fujitsu Integrated Camera + b217 Lenovo Integrated Camera (0.3MP) + b221 integrated camera + b230 Integrated HP HD Webcam + b257 Lenovo Integrated Camera + b26b Sony Visual Communication Camera + b272 Lenovo EasyCamera + b2b0 Camera + b2b9 Lenovo Integrated Camera UVC + b2da thinkpad t430s camera + b2db Thinkpad T430 camera + b2ea Integrated Camera [ThinkPad] + b2f4 HP Webcam-50 + b330 Asus 720p CMOS webcam + b354 UVC 1.00 device HD UVC WebCam + b394 Integrated Camera + b3eb HP 720p HD Monitor Webcam + b3f6 HD WebCam (Acer) + b3fd HD WebCam (Asus N-series) + b40e HP Truevision HD camera + b444 Lenovo Integrated Webcam + b5ce Integrated Camera + b5cf Integrated IR Camera +04f3 Elan Microelectronics Corp. + 000a Touchscreen + 0103 ActiveJet K-2024 Multimedia Keyboard + 016f Touchscreen + 01a4 Wireless Keyboard + 0201 Touchscreen + 0210 Optical Mouse + 0212 Laser Mouse + 0214 Lynx M9 Optical Mouse + 0230 3D Optical Mouse + 0232 Mouse + 0234 Optical Mouse + 0235 Optical Mouse + 02f4 2.4G Cordless Mouse + 0381 Touchscreen + 04a0 Dream Cheeky Stress/Panic Button +04f4 Harting Elektronik, Inc. +04f5 Fujitsu-ICL Systems, Inc. +04f6 Norand Corp. +04f7 Newnex Technology Corp. +04f8 FuturePlus Systems +04f9 Brother Industries, Ltd + 0002 HL-1050 Laser Printer + 0005 Printer + 0006 HL-1240 Laser Printer + 0007 HL-1250 Laser Printer + 0008 HL-1270 Laser Printer + 0009 Printer + 000a P2500 series + 000b Printer + 000c Printer + 000d HL-1440 Laser Printer + 000e HL-1450 series + 000f HL-1470N series + 0010 Printer + 0011 Printer + 0012 Printer + 0013 Printer + 0014 Printer + 0015 Printer + 0016 Printer + 0017 Printer + 0018 Printer + 001a HL-1430 Laser Printer + 001c Printer + 001e Printer + 0020 HL-5130 series + 0021 HL-5140 series + 0022 HL-5150D series + 0023 HL-5170DN series + 0024 Printer + 0025 Printer + 0027 HL-2030 Laser Printer + 0028 Printer + 0029 Printer + 002a HL-52x0 series + 002b HL-5250DN Printer + 002c Printer + 002d Printer + 0039 HL-5340 series + 0041 HL-2250DN Laser Printer + 0042 HL-2270DW Laser Printer + 0100 MFC8600/9650 series + 0101 MFC9600/9870 series + 0102 MFC9750/1200 series + 0104 MFC-8300J + 0105 MFC-9600J + 0106 MFC-7300C + 0107 MFC-7400C + 0108 MFC-9200C + 0109 MFC-830 + 010a MFC-840 + 010b MFC-860 + 010c MFC-7400J + 010d MFC-9200J + 010e MFC-3100C Scanner + 010f MFC-5100C + 0110 MFC-4800 Scanner + 0111 MFC-6800 + 0112 DCP1000 Port(FaxModem) + 0113 MFC-8500 + 0114 MFC9700 Port(FaxModem) + 0115 MFC-9800 Scanner + 0116 DCP1400 Scanner + 0119 MFC-9660 + 011a MFC-9860 + 011b MFC-9880 + 011c MFC-9760 + 011d MFC-9070 + 011e MFC-9180 + 011f MFC-9160 + 0120 MFC580 Port(FaxModem) + 0121 MFC-590 + 0122 MFC-5100J + 0124 MFC-4800J + 0125 MFC-6800J + 0127 MFC-9800J + 0128 MFC-8500J + 0129 Imagistics 2500 (MFC-8640D clone) + 012b MFC-9030 + 012e FAX4100e IntelliFax 4100e + 012f FAX-4750e + 0130 FAX-5750e + 0132 MFC-5200C RemovableDisk + 0135 MFC-100 Scanner + 0136 MFC-150CL Scanner + 013c MFC-890 Port + 013d MFC-5200J + 013e MFC-4420C RemovableDisk + 013f MFC-4820C RemovableDisk + 0140 DCP-8020 + 0141 DCP-8025D + 0142 MFC-8420 + 0143 MFC-8820D + 0144 DCP-4020C RemovableDisk + 0146 MFC-3220C + 0147 FAX-1820C Printer + 0148 MFC-3320CN + 0149 FAX-1920CN Printer + 014a MFC-3420C + 014b MFC-3820CN + 014c DCP-3020C + 014d FAX-1815C Printer + 014e MFC-8820J + 014f DCP-8025J + 0150 MFC-8220 Port(FaxModem) + 0151 MFC-8210J + 0153 DCP-1000J + 0157 MFC-3420J Printer + 0158 MFC-3820JN Port(FaxModem) + 015d MFC Composite Device + 015e DCP-8045D + 015f MFC-8440 + 0160 MFC-8840D + 0161 MFC-210C + 0162 MFC-420CN Remote Setup Port + 0163 MFC-410CN RemovableDisk + 0165 MFC-620CN + 0166 MFC-610CLN RemovableDisk + 0168 MFC-620CLN + 0169 DCP-110C RemovableDisk + 016b DCP-310CN RemovableDisk + 016c FAX-2440C Printer + 016d MFC-5440CN + 016e MFC-5840CN Remote Setup Port + 0170 FAX-1840C Printer + 0171 FAX-1835C Printer + 0172 FAX-1940CN Printer + 0173 MFC-3240C Remote Setup Port + 0174 MFC-3340CN RemovableDisk + 017b Imagistics sx2100 + 0180 MFC-7420 + 0181 MFC-7820N Port(FaxModem) + 0182 DCP-7010 + 0183 DCP-7020 + 0184 DCP-7025 Printer + 0185 MFC-7220 Printer + 0186 Composite Device + 0187 FAX-2820 Printer + 0188 FAX-2920 Printer + 018a MFC-9420CN + 018c DCP-115C + 018d DCP-116C + 018e DCP-117C + 018f DCP-118C + 0190 DCP-120C + 0191 DCP-315CN + 0192 DCP-340CW + 0193 MFC-215C + 0194 MFC-425CN + 0195 MFC-820CW Remote Setup Port + 0196 MFC-820CN Remote Setup Port + 0197 MFC-640CW + 019a MFC-840CLN Remote Setup Port + 01a2 MFC-8640D + 01a3 Composite Device + 01a4 DCP-8065DN Printer + 01a5 MFC-8460N Port(FaxModem) + 01a6 MFC-8860DN Port(FaxModem) + 01a7 MFC-8870DW Printer + 01a8 DCP-130C + 01a9 DCP-330C + 01aa DCP-540CN + 01ab MFC-240C + 01ae DCP-750CW RemovableDisk + 01af MFC-440CN + 01b0 MFC-660CN + 01b1 MFC-665CW + 01b2 MFC-845CW + 01b4 MFC-460CN + 01b5 MFC-630CD + 01b6 MFC-850CDN + 01b7 MFC-5460CN + 01b8 MFC-5860CN + 01ba MFC-3360C + 01bd MFC-8660DN + 01be DCP-750CN RemovableDisk + 01bf MFC-860CDN + 01c0 DCP-128C + 01c1 DCP-129C + 01c2 DCP-131C + 01c3 DCP-329C + 01c4 DCP-331C + 01c5 MFC-239C + 01c9 DCP-9040CN + 01ca MFC-9440CN + 01cb DCP-9045CDN + 01cc MFC-9840CDW + 01ce DCP-135C + 01cf DCP-150C + 01d0 DCP-350C + 01d1 DCP-560CN + 01d2 DCP-770CW + 01d3 DCP-770CN + 01d4 MFC-230C + 01d5 MFC-235C + 01d6 MFC-260C + 01d7 MFC-465CN + 01d8 MFC-680CN + 01d9 MFC-685CW + 01da MFC-885CW + 01db MFC-480CN + 01dc MFC-650CD + 01dd MFC-870CDN + 01de MFC-880CDN + 01df DCP-155C + 01e0 MFC-265C + 01e1 DCP-153C + 01e2 DCP-157C + 01e3 DCP-353C + 01e4 DCP-357C + 01e7 MFC-7340 + 01e9 DCP-7040 + 01ea DCP-7030 + 01eb MFC-7320 + 01ec MFC-9640CW + 01f4 MFC-5890CN + 020a MFC-8670DN + 020c DCP-9042CDN + 020d MFC-9450CDN + 0216 MFC-8880DN + 0217 MFC-8480DN + 0219 MFC-8380DN + 021a MFC-8370DN + 021b DCP-8070D + 021c MFC-9320CW + 021d MFC-9120CN + 021e DCP-9010CN + 021f DCP-8085DN + 0220 MFC-9010CN + 0222 DCP-195C + 0223 DCP-365CN + 0224 DCP-375CW + 0225 DCP-395CN + 0227 DCP-595CN + 0228 MFC-255CW + 0229 MFC-295CN + 022a MFC-495CW + 022b MFC-495CN + 022c MFC-795CW + 022d MFC-675CD + 022e MFC-695CDN + 022f MFC-735CD + 0230 MFC-935CDN + 0234 DCP-373CW + 0235 DCP-377CW + 0236 DCP-390CN + 0239 MFC-253CW + 023a MFC-257CW + 023e DCP-197C + 023f MFC-8680DN + 0240 MFC-J950DN + 0248 DCP-7055 scanner/printer + 024e MFC-7460DN + 0253 DCP-J125 + 0254 DCP-J315W + 0255 DCP-J515W + 0256 DCP-J515N + 0257 DCP-J715W + 0258 DCP-J715N + 0259 MFC-J220 + 025a MFC-J410 + 025b MFC-J265W + 025c MFC-J415W + 025d MFC-J615W + 025e MFC-J615N + 025f MFC-J700D + 0260 MFC-J800D + 0261 MFC-J850DN + 026b MFC-J630W + 026d MFC-J805D + 026e MFC-J855DN + 026f MFC-J270W + 0270 MFC-7360N + 0273 DCP-7057 scanner/printer + 0276 MFC-5895CW + 0278 MFC-J410W + 0279 DCP-J525W + 027a DCP-J525N + 027b DCP-J725DW + 027c DCP-J725N + 027d DCP-J925DW + 027e MFC-J955DN + 027f MFC-J280W + 0280 MFC-J435W + 0281 MFC-J430W + 0282 MFC-J625DW + 0283 MFC-J825DW + 0284 MFC-J825N + 0285 MFC-J705D + 0287 MFC-J860DN + 0288 MFC-J5910DW + 0289 MFC-J5910CDW + 028a DCP-J925N + 028d MFC-J835DW + 028f MFC-J425W + 0290 MFC-J432W + 0291 DCP-8110DN + 0292 DCP-8150DN + 0293 DCP-8155DN + 0294 DCP-8250DN + 0295 MFC-8510DN + 0296 MFC-8520DN + 0298 MFC-8910DW + 0299 MFC-8950DW + 029a MFC-8690DW + 029c MFC-8515DN + 029e MFC-9125CN + 029f MFC-9325CW + 02a0 DCP-J140W + 02a5 MFC-7240 + 02a6 FAX-2940 + 02a7 FAX-2950 + 02a8 MFC-7290 + 02ab FAX-2990 + 02ac DCP-8110D + 02ad MFC-9130CW + 02ae MFC-9140CDN + 02af MFC-9330CDW + 02b0 MFC-9340CDW + 02b1 DCP-9020CDN + 02b2 MFC-J810DN + 02b3 MFC-J4510DW + 02b4 MFC-J4710DW + 02b5 DCP-8112DN + 02b6 DCP-8152DN + 02b7 DCP-8157DN + 02b8 MFC-8512DN + 02ba MFC-8912DW + 02bb MFC-8952DW + 02bc DCP-J540N + 02bd DCP-J740N + 02be MFC-J710D + 02bf MFC-J840N + 02c0 DCP-J940N + 02c1 MFC-J960DN + 02c2 DCP-J4110DW + 02c3 MFC-J4310DW + 02c4 MFC-J4410DW + 02c5 MFC-J4610DW + 02c6 DCP-J4210N + 02c7 MFC-J4510N + 02c8 MFC-J4910CDW + 02c9 MFC-J4810DN + 02ca MFC-8712DW + 02cb MFC-8710DW + 02cc MFC-J2310 + 02cd MFC-J2510 + 02ce DCP-7055W + 02cf DCP-7057W + 02d0 DCP-1510 + 02d1 MFC-1810 + 02d3 DCP-9020CDW + 02d4 MFC-8810DW + 02dd DCP-J4215N + 02de DCP-J132W + 02df DCP-J152W + 02e0 DCP-J152N + 02e1 DCP-J172W + 02e2 DCP-J552DW + 02e3 DCP-J552N + 02e4 DCP-J752DW + 02e5 DCP-J752N + 02e6 DCP-J952N + 02e7 MFC-J245 + 02e8 MFC-J470DW + 02e9 MFC-J475DW + 02ea MFC-J285DW + 02eb MFC-J650DW + 02ec MFC-J870DW + 02ed MFC-J870N + 02ee MFC-J720D + 02ef MFC-J820DN + 02f0 MFC-J980DN + 02f1 MFC-J890DN + 02f2 MFC-J6520DW + 02f3 MFC-J6570CDW + 02f4 MFC-J6720DW + 02f5 MFC-J6920DW + 02f6 MFC-J6970CDW + 02f7 MFC-J6975CDW + 02f8 MFC-J6770CDW + 02f9 DCP-J132N + 02fa MFC-J450DW + 02fb MFC-J875DW + 02fc DCP-J100 + 02fd DCP-J105 + 02fe MFC-J200 + 02ff MFC-J3520 + 0300 MFC-J3720 + 030f DCP-L8400CDN + 0310 DCP-L8450CDW + 0311 MFC-L8600CDW + 0312 MFC-L8650CDW + 0313 MFC-L8850CDW + 0314 MFC-L9550CDW + 0318 MFC-7365DN + 0320 MFC-L2740DW + 0321 DCP-L2500D + 0322 DCP-L2520DW + 0324 DCP-L2520D + 0326 DCP-L2540DN + 0328 DCP-L2540DW + 0329 DCP-L2560DW + 0330 HL-L2380DW + 0331 MFC-L2700DW + 0335 FAX-L2700DN + 0337 MFC-L2720DW + 0338 MFC-L2720DN + 0339 DCP-J4120DW + 033a MFC-J4320DW + 033c MFC-J2320 + 033d MFC-J4420DW + 0340 MFC-J4620DW + 0341 MFC-J2720 + 0342 MFC-J4625DW + 0343 MFC-J5320DW + 0346 MFC-J5620DW + 0347 MFC-J5720DW + 0349 DCP-J4220N + 034b MFC-J4720N + 034e MFC-J5720CDW + 034f MFC-J5820DN + 0350 MFC-J5620CDW + 0351 DCP-J137N + 0353 DCP-J557N + 0354 DCP-J757N + 0355 DCP-J957N + 0356 MFC-J877N + 0357 MFC-J727D + 0358 MFC-J987DN + 0359 MFC-J827DN + 035a MFC-J897DN + 035b DCP-1610W + 035c DCP-1610NW + 035d MFC-1910W + 035e MFC-1910NW + 0360 DCP-1618W + 0361 MFC-1919NW + 0364 MFC-J5625DW + 0365 MFC-J4520DW + 0366 MFC-J5520DW + 0367 DCP-7080D + 0368 DCP-7080 + 0369 DCP-7180DN + 036a DCP-7189DW + 036b MFC-7380 + 036c MFC-7480D + 036d MFC-7880DN + 036e MFC-7889DW + 036f DCP-9022CDW + 0370 MFC-9142CDN + 0371 MFC-9332CDW + 0372 MFC-9342CDW + 0373 MFC-L2700D + 0376 DCP-1600 + 0377 MFC-1900 + 0378 DCP-1608 + 0379 DCP-1619 + 037a MFC-1906 + 037b MFC-1908 + 037c ADS-2000e + 037d ADS-2100e + 037e ADS-2500We + 037f ADS-2600We + 0380 DCP-J562DW + 0381 DCP-J562N + 0383 DCP-J962N + 0384 MFC-J480DW + 0385 MFC-J485DW + 0386 MFC-J460DW + 0388 MFC-J680DW + 0389 MFC-J880DW + 038a MFC-J885DW + 038b MFC-J880N + 038c MFC-J730DN + 038d MFC-J990DN + 038e MFC-J830DN + 038f MFC-J900DN + 0390 MFC-J5920DW + 0392 MFC-L2705DW + 0393 DCP-T300 + 0394 DCP-T500W + 0395 DCP-T700W + 0396 MFC-T800W + 0397 DCP-J963N + 03b3 MFC-J6925DW + 03b4 MFC-J6573CDW + 03b5 MFC-J6973CDW + 03b6 MFC-J6990CDW + 03bb MFC-L2680W + 03bc MFC-L2700DN + 03bd DCP-J762N + 1000 Printer + 1002 Printer + 2002 PTUSB Printing + 2004 PT-2300/2310 p-Touch Laber Printer + 2007 PT-2420PC P-touch Label Printer + 2015 QL-500 P-touch label printer + 2016 QL-550 P-touch label printer + 201a PT-18R P-touch label printer + 201b QL-650TD P-touch Label Printer + 2027 QL-560 P-touch Label Printer + 2028 QL-570 P-touch Label Printer + 202b PT-7600 P-touch Label Printer + 2041 PT-2730 P-touch Label Printer + 2061 PT-P700 P-touch Label Printer + 2064 PT-P700 P-touch Label Printer RemovableDisk + 2100 Card Reader Writer + 2102 Sewing machine + 60a0 ADS-2000 + 60a1 ADS-2100 + 60a4 ADS-2500W + 60a5 ADS-2600W + 60a6 ADS-1000W + 60a7 ADS-1100W + 60a8 ADS-1500W + 60a9 ADS-1600W +04fa Dallas Semiconductor + 2490 DS1490F 2-in-1 Fob, 1-Wire adapter + 4201 DS4201 Audio DAC +04fb Biostar Microtech International Corp. +04fc Sunplus Technology Co., Ltd + 0003 CM1092 / Wintech CM-5098 Optical Mouse + 0005 USB OpticalWheel Mouse + 0013 ViewMate Desktop Mouse CC2201 + 0015 ViewMate Desktop Mouse CC2201 + 00d3 00052486 / Laser Mouse M1052 [hama] + 0171 SPCA1527A/SPCA1528 SD card camera (Mass Storage mode) + 0201 SPCP825 RS232C Adapter + 0232 Fingerprint + 0538 Wireless Optical Mouse 2.4G [Bright] + 0561 Flexcam 100 + 05d8 Wireless keyboard/mouse + 05da SPEEDLINK SNAPPY Wireless Mouse Nano + 0c15 SPIF215A SATA bridge + 0c25 SATALink SPIF225A + 1528 SPCA1527A/SPCA1528 SD card camera (webcam mode) + 1533 Mass Storage + 2080 ASUS Webcam + 500c CA500C Digital Camera + 504a Aiptek Mini PenCam 1.3 + 504b Aiptek Mega PockerCam 1.3/Maxell MaxPocket LE 1.3 + 5330 Digitrex 2110 + 5331 Vivitar Vivicam 10 + 5360 Sunplus Generic Digital Camera + 5563 Digital Media Player MP3/WMA [The Sharper Image] + 5720 Card Reader Driver + 6333 Siri A9 UVC chipset + 7333 Finet Technology Palmpix DC-85 + 757a Aiptek, MP315 MP3 Player + ffff PureDigital Ritz Disposable +04fd Soliton Systems, K.K. + 0003 Smart Card Reader II +04fe PFU, Ltd +04ff E-CMOS Corp. +0500 Siam United Hi-Tech + 0001 DART Keyboard Mouse + 0002 DART-2 Keyboard +0501 Fujikura DDK, Ltd +0502 Acer, Inc. + 0001 Handheld + 0736 Handheld + 15b1 PDA n311 + 1631 c10 Series + 1632 c20 Series + 16e1 n10 Handheld Sync + 16e2 n20 Pocket PC Sync + 16e3 n30 Handheld Sync + 2008 Liquid Gallant Duo E350 (preloader) + 3202 Liquid + 3203 Liquid (Debug mode) + 3230 BeTouch E120 + 3317 Liquid + 3325 Iconia tablet A500 + 3341 Iconia tablet A500 + 33c3 Liquid Gallant Duo E350 + 33c4 Liquid Gallant Duo E350 (debug mode) + 33c7 Liquid Gallant Duo E350 (USB tethering) + 33c8 Liquid Gallant Duo E350 (debug mode, USB tethering) + d001 Divio NW801/DVC-V6+ Digital Camera +0503 Hitachi America, Ltd +0504 Hayes Microcomputer Products +0506 3Com Corp. + 009d HomeConnect Camera + 00a0 3CREB96 Bluetooth Adapter + 00a1 Bluetooth Device + 00a2 Bluetooth Device + 00df 3Com Home Connect lite + 0100 HomeConnect ADSL Modem Driver + 03e8 3C19250 Ethernet [klsi] + 0a01 3CRSHEW696 Wireless Adapter + 0a11 3CRWE254G72 802.11g Adapter + 11f8 HomeConnect 3C460 + 2922 HomeConnect Cable Modem External with + 3021 U.S.Robotics 56000 Voice FaxModem Pro + 4601 3C460B 10/100 Ethernet Adapter + f002 3CP4218 ADSL Modem (pre-init) + f003 3CP4218 ADSL Modem + f100 3CP4218 ADSL Modem (pre-init) +0507 Hosiden Corp. + 0011 Konami ParaParaParadise Controller +0508 Clarion Co., Ltd +0509 Aztech Systems, Ltd + 0801 ADSL Modem + 0802 ADSL Modem (RFC1483) + 0806 DSL Modem + 080f Binatone ADSL500 Modem Network Interface + 0812 Pirelli ADSL Modem Network Interface +050a Cinch Connectors +050b Cable System International +050c InnoMedia, Inc. +050d Belkin Components + 0004 Direct Connect + 0012 F8T012 Bluetooth Adapter + 0013 F8T013 Bluetooth Adapter + 0017 B8T017 Bluetooth+EDR 2.1 / F4U017 USB 2.0 7-port Hub + 003a Universal Media Reader + 0050 F5D6050 802.11b Wireless Adapter v2000 [Atmel at76c503a] + 0081 F8T001v2 Bluetooth + 0083 Bluetooth Device + 0084 F8T003v2 Bluetooth + 0102 Flip KVM + 0103 F5U103 Serial Adapter [etek] + 0106 VideoBus II Adapter, Video + 0108 F1DE108B KVM + 0109 F5U109/F5U409 PDA Adapter + 0115 SCSI Adapter + 0119 F5U120-PC Dual PS/2 Ports / F5U118-UNV ADB Adapter + 0121 F5D5050 100Mbps Ethernet + 0122 Ethernet Adapter + 0131 Bluetooth Device with trace filter + 016a Bluetooth Mini Dongle + 0200 Nostromo SpeedPad n52te Gaming Keyboard + 0201 Peripheral Switch + 0208 USBView II Video Adapter [nt1004] + 0210 F5U228 Hi-Speed USB 2.0 DVD Creator + 0211 F5U211 USB 2.0 15-in-1 Media Reader & Writer + 0224 F5U224 USB 2.0 4-Port Hub + 0234 F5U234 USB 2.0 4-Port Hub + 0237 F5U237 USB 2.0 7-Port Hub + 0240 F5U240 USB 2.0 CF Card Reader + 0249 USB 2 Flash Media Device + 0257 F5U257 Serial + 0304 FSU304 USB 2.0 - 4 Ports Hub + 0307 USB 2.0 - 7 ports Hub [FSU307] + 0409 F5U409 Serial + 0416 Staples 12416 7 port desktop hub + 0551 F6C550-AVR UPS + 065a F8T065BF Mini Bluetooth 4.0 Adapter + 0706 2-N-1 7-Port Hub (Lower half) + 0802 Nostromo n40 Gamepad + 0803 Nostromo 1745 GamePad + 0805 Nostromo N50 GamePad + 0815 Nostromo n52 HID SpeedPad Mouse Wheel + 0826 ErgoFit Wireless Optical Mouse (HID) + 0980 HID UPS Battery + 1004 F9L1004 802.11n Surf N300 XR Wireless Adapter [Realtek RTL8192CU] + 1102 F7D1102 N150/Surf Micro Wireless Adapter v1000 [Realtek RTL8188CUS] + 1103 F9L1103 N750 DB 802.11abgn 2x3:3 [Ralink RT3573] + 1106 F9L1106v1 802.11a/b/g/n/ac Wireless Adapter [Broadcom BCM43526] + 1109 F9L1109v1 802.11a/b/g/n/ac Wireless Adapter [Realtek RTL8812AU] + 110a F9L1101v2 802.11abgn Wireless Adapter [Realtek RTL8192DU] + 11f2 ISY Wireless Micro Adapter IWL 2000 [RTL8188CUS] + 1202 F5U120-PC Parallel Printer Port + 1203 F5U120-PC Serial Port + 2103 F7D2102 802.11n N300 Micro Wireless Adapter v3000 [Realtek RTL8192CU] + 21f1 N300 WLAN N Adapter [ISY] + 21f2 RTL8192CU 802.11n WLAN Adapter [ISY IWL 4000] + 258a F5U258 Host to Host cable + 3101 F1DF102U/F1DG102U Flip Hub + 3201 F1DF102U/F1DG102U Flip KVM + 4050 ZD1211B + 5055 F5D5055 Gigabit Network Adapter [AX88xxx] + 6050 F6D6050 802.11abgn Wireless Adapter [Broadcom BCM4323] + 6051 F5D6051 802.11b Wireless Network Adapter [ZyDAS ZD1201] + 615a F7D4101 / F9L1101v1 802.11abgn Wireless Adapter [Broadcom BCM4323] + 7050 F5D7050 Wireless G Adapter v1000/v2000 [Intersil ISL3887] + 7051 F5D7051 802.11g Adapter v1000 [Broadcom 4320 USB] + 705a F5D7050 Wireless G Adapter v3000 [Ralink RT2571W] + 705b Wireless G Adapter + 705c F5D7050 Wireless G Adapter v4000 [Zydas ZD1211B] + 705e F5D7050 Wireless G Adapter v5000 [Realtek RTL8187B] + 706a 2-N-1 7-Port Hub (Upper half) + 8053 F5D8053 N Wireless USB Adapter v1000/v4000 [Ralink RT2870] + 805c F5D8053 N Wireless Adapter v3000 [Ralink RT2870] + 805e F5D8053 N Wireless USB Adapter v5000 [Realtek RTL8192U] + 815c F5D8053 N Wireless USB Adapter v3000 [Ralink RT2870] + 815f F5D8053 N Wireless USB Adapter v6000 [Realtek RTL8192SU] + 825a F5D8055 N+ Wireless Adapter v1000 [Ralink RT2870] + 825b F5D8055 N+ Wireless Adapter v2000 [Ralink RT3072] + 845a F7D2101 802.11n Surf & Share Wireless Adapter v1000 [Realtek RTL8192SU] + 905b F5D9050 Wireless G+ MIMO Network Adapter v3000 [Ralink RT2573] + 905c F5D9050 Wireless G+ MIMO Network Adapter v4000 [Ralink RT2573] + 935a F6D4050 N150 Enhanced Wireless Network Adapter v1000 [Ralink RT3070] + 935b F6D4050 N150 Enhanced Wireless Network Adapter v2000 [Ralink RT3070] + 945a F7D1101 v1 Basic Wireless Adapter [Realtek RTL8188SU] + 945b F7D1101 v2 Basic Wireless Adapter [Ralink RT3370] + d321 Dynex DX-NUSB 802.11bgn Wireless Adapter [Broadcom BCM43231] +050e Neon Technology, Inc. +050f KC Technology, Inc. + 0001 Hub + 0003 KC82C160S Hub + 0180 KC-180 IrDA Dongle + 0190 KC2190 USB Host-to-Host cable +0510 Sejin Electron, Inc. + 0001 Keyboard + 1000 Keyboard with PS/2 Mouse Port + e001 Mouse +0511 N'Able (DataBook) Technologies, Inc. + 002b AOC DVB +0512 Hualon Microelectronics Corp. +0513 digital-X, Inc. +0514 FCI Electronics +0515 ACTC +0516 Longwell Electronics +0517 Butterfly Communications +0518 EzKEY Corp. + 0001 USB to PS2 Adaptor v1.09 + 0002 EZ-9900C Keyboard +0519 Star Micronics Co., Ltd + 0003 TSP100ECO/TSP100II + c002 Xlive Bluetooth XBM-100S MP3 Player +051a WYSE Technology + a005 Smart Display Version 9973 +051b Silicon Graphics +051c Shuttle, Inc. + 0005 VFD Module + c001 eHome Infrared Receiver + c002 eHome Infrared Receiver +051d American Power Conversion + 0001 UPS + 0002 Uninterruptible Power Supply + 0003 UPS +051e Scientific Atlanta, Inc. +051f IO Systems (Elite Electronics), Inc. +0520 Taiwan Semiconductor Manufacturing Co. +0521 Airborn Connectors +0522 Advanced Connectek, Inc. +0523 ATEN GmbH +0524 Sola Electronics +0525 Netchip Technology, Inc. + 100d RFMD Bluetooth Device + 1080 NET1080 USB-USB Bridge + 1200 SSDC Adapter II + 1265 File-backed Storage Gadget + 3424 Lumidigm Venus fingerprint sensor + a0f0 Cambridge Electronic Devices Power1401 mk 2 + a140 USB Clik! 40 + a141 (OME) PocketZip 40 MP3 Player Driver + a220 GVC Bluetooth Wireless Adapter + a4a0 Linux-USB "Gadget Zero" + a4a1 Linux-USB Ethernet Gadget + a4a2 Linux-USB Ethernet/RNDIS Gadget + a4a3 Linux-USB user-mode isochronous source/sink + a4a4 Linux-USB user-mode bulk source/sink + a4a5 Pocketbook Pro 903 / Mobius 2 Action Cam + a4a6 Linux-USB Serial Gadget + a4a7 Linux-USB Serial Gadget (CDC ACM mode) + a4a8 Linux-USB Printer Gadget + a4a9 Linux-USB OBEX Gadget + a4aa Linux-USB CDC Composite Gadge (Ethernet and ACM) +0526 Temic MHS S.A. +0527 ALTRA +0528 ATI Technologies, Inc. + 7561 TV Wonder + 7562 TV Wonder, Edition (FN5) + 7563 TV Wonder, Edition (FI) + 7564 TV Wonder, Edition (FQ) + 7565 TV Wonder, Edition (NTSC+) + 7566 TV Wonder, Edition (FN5) + 7567 TV Wonder, Edition (FI) + 7568 TV Wonder, Edition (FQ) + 7569 Live! Pro (A) + 756a Live! Pro Audio (O) +0529 Aladdin Knowledge Systems + 0001 HASP copy protection dongle + 030b eToken R1 v3.1.3.x + 0313 eToken R1 v3.2.3.x + 031b eToken R1 v3.3.3.x + 0323 eToken R1 v3.4.3.x + 0412 eToken R2 v2.2.4.x + 041a eToken R2 v2.2.4.x + 0422 eToken R2 v2.4.4.x + 042a eToken R2 v2.5.4.x + 050c eToken Pro v4.1.5.x + 0514 eToken Pro v4.2.5.4 + 0600 eToken Pro 64k (4.2) + 0620 Token JC +052a Crescent Heart Software +052b Tekom Technologies, Inc. + 0102 Ca508A HP1020 Camera v.1.3.1.6 + 0801 Yakumo MegaImage 37 + 1512 Yakumo MegaImage IV + 1513 Aosta CX100 Webcam + 1514 Aosta CX100 Webcam Storage + 1905 Yakumo MegaImage 47 + 1911 Yakumo MegaImage 47 SL + 2202 WDM Still Image Capture + 2203 Sound Vision Stream Driver + 3a06 DigiLife DDV-5120A + d001 P35U Camera Capture +052c Canon Information Systems, Inc. +052d Avid Electronics Corp. +052e Standard Microsystems Corp. +052f Unicore Software, Inc. +0530 American Microsystems, Inc. +0531 Wacom Technology Corp. +0532 Systech Corp. +0533 Alcatel Mobile Phones +0534 Motorola, Inc. +0535 LIH TZU Electric Co., Ltd +0536 Hand Held Products (Welch Allyn, Inc.) + 01a0 PDT +0537 Inventec Corp. +0538 Caldera International, Inc. (SCO) +0539 Shyh Shiun Terminals Co., Ltd +053a PrehKeyTec GmbH + 0b00 Hub + 0b01 Preh MCI 3100 +053b Global Village Communication +053c Institut of Microelectronic & Mechatronic Systems +053d Silicon Architect +053e Mobility Electronics +053f Synopsys, Inc. +0540 UniAccess AB + 0101 Panache Surf ISDN TA +0541 Sirf Technology, Inc. +0543 ViewSonic Corp. + 00fe G773 Monitor Hub + 00ff P815 Monitor Hub + 0bf2 airpanel V150 Wireless Smart Display + 0bf3 airpanel V110 Wireless Smart Display + 0ed9 Color Pocket PC V35 + 0f01 airsync Wi-Fi Wireless Adapter + 1527 Color Pocket PC V36 + 1529 Color Pocket PC V37 + 152b Color Pocket PC V38 + 152e Pocket PC + 1921 Communicator Pocket PC + 1922 Smartphone + 1923 Pocket PC V30 + 1a11 Wireless 802.11g Adapter + 1e60 TA310 - ATSC/NTSC/PAL Driver(PCM4) + 4153 ViewSonic G773 Control (?) +0544 Cristie Electronics, Ltd +0545 Xirlink, Inc. + 7333 Trution Web Camera + 8002 IBM NetCamera + 8009 Veo PC Camera + 800c Veo Stingray + 800d Veo PC Camera + 8080 IBM C-It Webcam + 808a Veo PC Camera + 808b Veo Stingray + 808d Veo PC Camera + 810a Veo Advanced Connect Webcam + 810b Veo PC Camera + 810c Veo PC Camera + 8135 Veo Mobile/Advanced Web Camera + 813a Veo PC Camera + 813b Veo PC Camera + 813c Veo Mobile/Advanced Web Camera + 8333 Veo Stingray/Connect Web Camera + 888c eVision 123 digital camera + 888d eVision 123 digital camera +0546 Polaroid Corp. + 0daf PDC 2300Z + 1bed PDC 1320 Camera + 3097 PDC 310 + 3155 PDC 3070 Camera + 3187 Digital Camera + 3191 Ion 80 Camera + 3273 PDC 2030 Camera + 3304 a500 Digital Camera + dccf Sound Vision Stream Driver +0547 Anchor Chips, Inc. + 0001 ICSI Bluetooth Device + 1002 Python2 WDM Encoder + 1006 Hantek DSO-2100 UF + 2131 AN2131 EZUSB Microcontroller + 2235 AN2235 EZUSB-FX Microcontroller + 2710 EZ-Link Loader (EZLNKLDR.SYS) + 2720 AN2720 USB-USB Bridge + 2727 Xircom PGUNET USB-USB Bridge + 2750 EZ-Link (EZLNKUSB.SYS) + 2810 Cypress ATAPI Bridge + 4018 AmScope MU1803 + 4d90 AmScope MD1900 camera + 6010 AmScope MU1000 camera + 6510 Touptek UCMOS05100KPA + 7000 PowerSpec MCE460 Front Panel LED Display + 7777 Bluetooth Device + 9999 AN2131 uninitialized (?) +0548 Tyan Computer Corp. + 1005 EZ Cart II GameBoy Flash Programmer +0549 Pixera Corp. +054a Fujitsu Microelectronics, Inc. +054b New Media Corp. +054c Sony Corp. + 0001 HUB + 0002 Standard HUB + 0010 Cyber-shot, Mavica (msc) + 0014 Nogatech USBVision (SY) + 0022 Storage Adapter V2 (TPP) + 0023 CD Writer + 0024 Mavica CD-1000 Camera + 0025 NW-MS7 Walkman MemoryStick Reader + 002b Portable USB Harddrive V2 + 002c USB Floppy Disk Drive + 002d MSAC-US1 MemoryStick Reader + 002e HandyCam MemoryStick Reader + 0030 Storage Adapter V2 (TPP) + 0032 MemoryStick MSC-U01 Reader + 0035 Network Walkman (E) + 0036 Net MD + 0037 MG Memory Stick Reader/Writer + 0038 Clie PEG-S300/D PalmOS PDA + 0039 Network Walkman (MS) + 003c VAIO-MX LCD Control + 0045 Digital Imaging Video + 0046 Network Walkman + 004a Memory Stick Hi-Fi System + 004b Memory Stick Reader/Writer + 004e DSC-xxx (ptp) + 0056 MG Memory Stick Reader/Writer + 0058 Clie PEG-N7x0C PalmOS PDA Mass Storage + 0066 Clie PEG-N7x0C/PEG-T425 PalmOS PDA Serial + 0067 CMR-PC3 Webcam + 0069 Memorystick MSC-U03 Reader + 006c FeliCa S310 [PaSoRi] + 006d Clie PEG-T425 PDA Mass Storage + 006f Network Walkman (EV) + 0073 Storage CRX1750U + 0075 Net MD + 0076 Storage Adapter ACR-U20 + 007c Net MD + 007f IC Recorder (MS) + 0080 Net MD + 0081 Net MD + 0084 Net MD + 0085 Net MD + 0086 Net MD + 008b Micro Vault 64M Mass Storage + 0095 Clie s360 + 0099 Clie NR70 PDA Mass Storage + 009a Clie NR70 PDA Serial + 00ab Visual Communication Camera (PCGA-UVC10) + 00af DPP-EX Series Digital Photo Printer + 00bf IC Recorder (S) + 00c0 Handycam DCR-30 + 00c6 Net MD + 00c7 Net MD + 00c8 MZ-N710 Minidisc Walkman + 00c9 Net MD + 00ca MZ-DN430 Minidisc Walkman + 00cb MSAC-US20 Memory Stick Reader + 00da Clie nx60 + 00e8 Network Walkman (MS) + 00e9 Handheld + 00eb Net MD + 0101 Net MD + 0103 IC Recorder (ST) + 0105 Micro Vault Hub + 0107 VCC-U01 Visual Communication Camera + 0110 Digital Imaging Video + 0113 Net MD + 0116 IC Recorder (P) + 0144 Clie PEG-TH55 PDA + 0147 Visual Communication Camera (PCGA-UVC11) + 014c Aiwa AM-NX9 Net MD Music Recorder MDLP + 014d Memory Stick Reader/Writer + 0154 Eyetoy Audio Device + 0155 Eyetoy Video Device + 015f IC Recorder (BM) + 0169 Clie PEG-TJ35 PDA Serial + 016a Clie PEG-TJ35 PDA Mass Storage + 016b Mobile HDD + 016d IC Recorder (SX) + 016e DPP-EX50 Digital Photo Printer + 0171 Fingerprint Sensor 3500 + 017e Net MD + 017f Hi-MD WALKMAN + 0180 Net MD + 0181 Hi-MD WALKMAN + 0182 Net MD + 0183 Hi-MD WALKMAN + 0184 Net MD + 0185 Hi-MD WALKMAN + 0186 Net MD + 0187 Hi-MD MZ-NH600 WALKMAN + 0188 Net MD + 018a Net MD + 018b Hi-MD SOUND GATE + 019e Micro Vault 1.0G Mass Storage + 01ad ATRAC HDD PA + 01bb FeliCa S320 [PaSoRi] + 01bd MRW62E Multi-Card Reader/Writer + 01c3 NW-E55 Network Walkman + 01c6 MEMORY P-AUDIO + 01c7 Printing Support + 01c8 PSP Type A + 01c9 PSP Type B + 01d0 DVD+RW External Drive DRU-700A + 01d5 IC RECORDER + 01de VRD-VC10 [Video Capture] + 01e8 UP-DR150 Photo Printer + 01e9 Net MD + 01ea Hi-MD WALKMAN + 01ee IC RECORDER + 01fa IC Recorder (P) + 01fb NW-E405 Network Walkman + 020f Device + 0210 ATRAC HDD PA + 0219 Net MD + 021a Hi-MD WALKMAN + 021b Net MD + 021c Hi-MD WALKMAN + 021d Net MD + 0226 UP-CR10L + 0227 Printing Support + 022c Net MD + 022d Hi-MD AUDIO + 0233 ATRAC HDD PA + 0236 Mobile HDD + 023b DVD+RW External Drive DRU-800UL + 023c Net MD + 023d Hi-MD WALKMAN + 0243 MicroVault Flash Drive + 024b Vaio VGX Mouse + 0257 IFU-WLM2 USB Wireless LAN Module (Wireless Mode) + 0258 IFU-WLM2 USB Wireless LAN Module (Memory Mode) + 0259 IC RECORDER + 0267 Tachikoma Device + 0268 Batoh Device / PlayStation 3 Controller + 0269 HDD WALKMAN + 026a HDD WALKMAN + 0271 IC Recorder (P) + 027c NETWORK WALKMAN + 027e SONY Communicator + 027f IC RECORDER + 0286 Net MD + 0287 Hi-MD WALKMAN + 0290 VGP-UVC100 Visual Communication Camera + 029b PRS-500 eBook reader + 02a5 MicroVault Flash Drive + 02af Handycam DCR-DVD306E + 02c4 Device + 02d1 DVD RW + 02d2 PSP Slim + 02d8 SBAC-US10 SxS PRO memory card reader/writer + 02e1 FeliCa S330 [PaSoRi] + 02ea PlayStation 3 Memory Card Adaptor + 02f9 DSC-H9 + 0317 WALKMAN + 031a Walkman NWD-B103F + 031e PRS-300/PRS-505 eBook reader + 0325 NWZ-A818 + 033e DSC-W120/W290 + 0346 Handycam DCR-SR55E + 0348 HandyCam HDR-TG3E + 035b Walkman NWZ-A828 + 035c NWZ-A726/A728/A729 + 035f UP-DR200 Photo Printer + 0382 Memory Stick PRO-HG Duo Adaptor (MSAC-UAH1) + 0385 Walkman NWZ-E436F + 0387 IC Recorder (P) + 03bc Webbie HD - MHS-CM1 + 03cc SD Card Reader + 03d1 DPF-X95 + 03d3 DR-BT100CX + 03d5 PlayStation Move motion controller + 03fc WALKMAN [NWZ-E345] + 03fd Walkman NWZ-E443 + 042f PlayStation Move navigation controller + 0440 DSC-H55 + 0485 MHS-PM5 HD camcorder + 04cb WALKMAN NWZ-E354 + 0541 DSC-HX100V [Cybershot Digital Still Camera] + 05c4 DualShock 4 [CUH-ZCT1x] + 0689 Walkman NWZ-B173F + 06bb WALKMAN NWZ-F805 + 06c3 RC-S380 + 07c4 ILCE-6000 (aka Alpha-6000) in Mass Storage mode + 082f Walkman NWZW Series + 0847 WG-C10 Portable Wireless Server + 088c Portable Headphone Amplifier + 08b7 ILCE-6000 (aka Alpha-6000) in MTP mode + 094e ILCE-6000 (aka Alpha-6000) in PC Remote mode + 0994 ILCE-6000 (aka Alpha-6000) in charging mode + 09cc DualShock 4 [CUH-ZCT2x] + 0ba0 Dualshock4 Wireless Adaptor + 0bb5 Headset MDR-1000X + 1000 Wireless Buzz! Receiver +054d Try Corp. +054e Proside Corp. +054f WYSE Technology Taiwan +0550 Fuji Xerox Co., Ltd + 0002 InkJet Color Printer + 0004 InkJet Color Printer + 0005 InkJet Color Printer + 000b Workcentre 24 + 014e CM215b Printer + 0165 DocuPrint M215b +0551 CompuTrend Systems, Inc. +0552 Philips Monitors +0553 STMicroelectronics Imaging Division (VLSI Vision) + 0001 TerraCAM + 0002 CPiA Webcam + 0100 STV0672 Camera + 0140 Video Camera + 0150 CDE CAM 100 + 0151 Digital Blue QX5 Microscope + 0200 Dual-mode Camera0 + 0201 Dual-mode Camera1 + 0202 STV0680 Camera + 0674 Multi-mode Camera + 0679 NMS Video Camera (Webcam) + 1002 Che-ez! Splash +0554 Dictaphone Corp. +0555 ANAM S&T Co., Ltd +0556 Asahi Kasei Microsystems Co., Ltd + 0001 AK5370 I/F A/D Converter +0557 ATEN International Co., Ltd + 2001 UC-1284 Printer Port + 2002 10Mbps Ethernet [klsi] + 2004 UC-100KM PS/2 Mouse and Keyboard adapter + 2006 UC-1284B Printer Port + 2007 UC-110T 100Mbps Ethernet [pegasus] + 2008 UC-232A Serial Port [pl2303] + 2009 UC-210T Ethernet + 2011 UC-2324 4xSerial Ports [mos7840] + 2202 CS124U Miniview II KVM Switch + 2212 Keyboard/Mouse + 2213 CS682 2-Port USB 2.0 DVI KVM Switch + 2221 Winbond Hermon + 2404 4-port switch + 2600 IDE Bridge + 2701 CE700A KVM Extender + 4000 DSB-650 10Mbps Ethernet [klsi] + 7000 Hub + 7820 UC-2322 2xSerial Ports [mos7820] + 8021 Hub +0558 Truevision, Inc. + 1009 GW Instek GDS-1000 Oscilloscope + 100a GW Instek GDS-1000A Oscilloscope + 2009 GW Instek GDS-2000 Oscilloscope +0559 Cadence Design Systems, Inc. +055a Kenwood USA +055b KnowledgeTek, Inc. +055c Proton Electronic Ind. +055d Samsung Electro-Mechanics Co. + 0001 Keyboard + 0bb1 Bluetooth Device + 1030 Optical Wheel Mouse (OMS3CB/OMGB30) + 1031 Optical Wheel Mouse (OMA3CB/OMGI30) + 1040 Mouse HID Device + 1050 E-Mail Optical Wheel Mouse (OMS3CE) + 1080 Optical Wheel Mouse (OMS3CH) + 2020 Floppy Disk Drive + 6780 Keyboard V1 + 6781 Keyboard Mouse + 8001 E.M. Hub + 9000 AnyCam [pwc] + 9001 MPC-C30 AnyCam Premium for Notebooks [pwc] + a000 SWL-2100U + a010 WLAN Adapter(SWL-2300) + a011 Boot Device + a012 WLAN Adapter(SWL-2300) + a013 WLAN Adapter(SWL-2350) + a230 Boot Device + b000 11Mbps WLAN Mini Adapter + b230 Netopia 802.11b WLAN Adapter + b231 LG Wireless LAN 11b Adapter +055e CTX Opto-Electronics Corp. +055f Mustek Systems, Inc. + 0001 ScanExpress 1200 CU + 0002 ScanExpress 600 CU + 0003 ScanExpress 1200 USB + 0006 ScanExpress 1200 UB + 0007 ScanExpress 1200 USB Plus + 0008 ScanExpress 1200 CU Plus + 0010 BearPaw 1200F + 0210 ScanExpress A3 USB + 0218 BearPaw 2400 TA + 0219 BearPaw 2400 TA Plus + 021a BearPaw 2448 TA Plus + 021b BearPaw 1200 CU Plus + 021c BearPaw 1200 CU Plus + 021d BearPaw 2400 CU Plus + 021e BearPaw 1200 TA/CS + 021f SNAPSCAN e22 + 0400 BearPaw 2400 TA Pro + 0401 P 3600 A3 Pro + 0408 BearPaw 2448 CU Pro + 0409 BearPaw 2448 TA Pro + 040b ScanExpress A3 USB 1200 PRO + 0501 ScanExpress A3 2400 Pro + 0873 ScanExpress 600 USB + 1000 BearPaw 4800 TA Pro + a350 gSmart 350 Camera + a800 MDC 800 Camera + b500 MDC 3000 Camera + c005 PC CAM 300A + c200 gSmart 300 + c211 Kowa Bs888e Microcamera + c220 gSmart mini + c230 Digicam 330K + c232 MDC3500 Camera + c360 DV 4000 Camera + c420 gSmart mini 2 Camera + c430 gSmart LCD 2 Camera + c440 DV 3000 Camera + c520 gSmart mini 3 Camera + c530 gSmart LCD 2 Camera + c540 gSmart D30 Camera + c630 MDC 4000 Camera + c631 MDC 4000 Camera + c650 MDC 5500Z Camera + d001 WCam 300 + d003 WCam 300A + d004 WCam 300AN +0560 Interface Corp. +0561 Oasis Design, Inc. +0562 Telex Communications, Inc. + 0001 Enhanced Microphone + 0002 Telex Microphone +0563 Immersion Corp. +0564 Kodak Digital Product Center, Japan Ltd. (formerly Chinon Industries Inc.) +0565 Peracom Networks, Inc. + 0001 Serial Port [etek] + 0002 Enet Ethernet [klsi] + 0003 @Home Networks Ethernet [klsi] + 0005 Enet2 Ethernet [klsi] + 0041 Peracom Remote NDIS Ethernet Adapter +0566 Monterey International Corp. + 0110 ViewMate Desktop Mouse CC2201 + 1001 ViewMate Desktop Mouse CC2201 + 1002 ViewMate Desktop Mouse CC2201 + 1003 ViewMate Desktop Mouse CC2201 + 1004 ViewMate Desktop Mouse CC2201 + 1005 ViewMate Desktop Mouse CC2201 + 1006 ViewMate Desktop Mouse CC2201 + 1007 ViewMate Desktop Mouse CC2201 + 2800 MIC K/B + 2801 MIC K/B Mouse + 2802 Kbd Hub + 3002 Keyboard + 3004 Genius KB-29E + 3107 Keyboard + 4006 FID 638 Mouse (Sun Microsystems) +0567 Xyratex International, Ltd +0568 Quartz Ingenierie +0569 SegaSoft +056a Wacom Co., Ltd + 0000 PenPartner + 0001 PenPartner 4x5 + 0002 PenPartner 6x8 + 0003 PTU-600 [Cintiq Partner] + 0010 ET-0405 [Graphire] + 0011 ET-0405A [Graphire2 (4x5)] + 0012 ET-0507A [Graphire2 (5x7)] + 0013 CTE-430 [Graphire3 (4x5)] + 0014 CTE-630 [Graphire3 (6x8)] + 0015 CTE-440 [Graphire4 (4x5)] + 0016 CTE-640 [Graphire4 (6x8)] + 0017 CTE-450 [Bamboo Fun (small)] + 0018 CTE-650 [Bamboo Fun (medium)] + 0019 CTE-631 [Bamboo One] + 0020 GD-0405 [Intuos (4x5)] + 0021 GD-0608 [Intuos (6x8)] + 0022 GD-0912 [Intuos (9x12)] + 0023 GD-1212 [Intuos (12x12)] + 0024 GD-1218 [Intuos (12x18)] + 0026 PTH-450 [Intuos5 touch (S)] + 0027 PTH-650 [Intuos5 touch (M)] + 0028 PTH-850 [Intuos5 touch (L)] + 0029 PTK-450 [Intuos5 (S)] + 002a PTK-650 [Intuos5 (M)] + 0030 PL400 + 0031 PL500 + 0032 PL600 + 0033 PL600SX + 0034 PL550 + 0035 PL800 + 0037 PL700 + 0038 PL510 + 0039 DTU-710 + 003f DTZ-2100 [Cintiq 21UX] + 0041 XD-0405-U [Intuos2 (4x5)] + 0042 XD-0608-U [Intuos2 (6x8)] + 0043 XD-0912-U [Intuos2 (9x12)] + 0044 XD-1212-U [Intuos2 (12x12)] + 0045 XD-1218-U [Intuos2 (12x18)] + 0047 Intuos2 6x8 + 0057 DTK-2241 + 0059 DTH-2242 tablet + 005b DTH-2200 [Cintiq 22HD Touch] tablet + 005d DTH-2242 touchscreen + 005e DTH-2200 [Cintiq 22HD Touch] touchscreen + 0060 FT-0405 [Volito, PenPartner, PenStation (4x5)] + 0061 FT-0203 [Volito, PenPartner, PenStation (2x3)] + 0062 CTF-420 [Volito2] + 0063 CTF-220 [BizTablet] + 0064 CTF-221 [PenPartner2] + 0065 MTE-450 [Bamboo] + 0069 CTF-430 [Bamboo One] + 006a CTE-460 [Bamboo One Pen (S)] + 006b CTE-660 [Bamboo One Pen (M)] + 0081 CTE-630BT [Graphire Wireless (6x8)] + 0084 Wireless adapter for Bamboo tablets + 0090 TPC90 + 0093 TPC93 + 0097 TPC97 + 009a TPC9A + 00b0 PTZ-430 [Intuos3 (4x5)] + 00b1 PTZ-630 [Intuos3 (6x8)] + 00b2 PTZ-930 [Intuos3 (9x12)] + 00b3 PTZ-1230 [Intuos3 (12x12)] + 00b4 PTZ-1231W [Intuos3 (12x19)] + 00b5 PTZ-631W [Intuos3 (6x11)] + 00b7 PTZ-431W [Intuos3 (4x6)] + 00b8 PTK-440 [Intuos4 (4x6)] + 00b9 PTK-640 [Intuos4 (6x9)] + 00ba PTK-840 [Intuos4 (8x13)] + 00bb PTK-1240 [Intuos4 (12x19)] + 00c0 DTF-521 + 00c4 DTF-720 + 00c5 DTZ-2000W [Cintiq 20WSX] + 00c6 DTZ-1200W [Cintiq 12WX] + 00c7 DTU-1931 + 00cc DTK-2100 [Cintiq 21UX] + 00ce DTU-2231 + 00d0 CTT-460 [Bamboo Touch] + 00d1 CTH-460 [Bamboo Pen & Touch] + 00d2 CTH-461 [Bamboo Fun/Craft/Comic Pen & Touch (S)] + 00d3 CTH-661 [Bamboo Fun/Comic Pen & Touch (M)] + 00d4 CTL-460 [Bamboo Pen (S)] + 00d5 CTL-660 [Bamboo Pen (M)] + 00d6 CTH-460 [Bamboo Pen & Touch] + 00d7 CTH-461 [Bamboo Fun/Craft/Comic Pen & Touch (S)] + 00d8 CTH-661 [Bamboo Fun/Comic Pen & Touch (M)] + 00d9 CTT-460 [Bamboo Touch] + 00da CTH-461SE [Bamboo Pen & Touch Special Edition (S)] + 00db CTH-661SE [Bamboo Pen & Touch Special Edition (M)] + 00dc CTT-470 [Bamboo Touch] + 00dd CTL-470 [Bamboo Connect] + 00de CTH-470 [Bamboo Fun Pen & Touch] + 00df CTH-670 [Bamboo Create/Fun] + 00e2 TPCE2 + 00e3 TPCE3 + 00e5 TPCE5 + 00e6 TPCE6 + 00ec TPCEC + 00ed TPCED + 00ef TPCEF + 00f4 DTK-2400 [Cintiq 24HD] tablet + 00f6 DTH-2400 [Cintiq 24HD touch] touchscreen + 00f8 DTH-2400 [Cintiq 24HD touch] tablet + 00fa DTK-2200 [Cintiq 22HD] tablet + 00fb DTU-1031 + 0100 TPC100 + 0101 TPC101 + 010d TPC10D + 010e TPC10E + 010f TPC10F + 0116 TPC116 + 012c TPC12C + 0221 MDP-123 [Inkling] + 0300 CTL-471 [Bamboo Splash, One by Wacom (S)] + 0301 CTL-671 [One by Wacom (M)] + 0302 CTH-480 [Intuos Pen & Touch (S)] + 0303 CTH-680 [Intuos Pen & Touch (M)] + 0304 DTK-1300 [Cintiq 13HD] + 0307 DTH-A1300 [Cintiq Companion Hybrid] tablet + 0309 DTH-A1300 [Cintiq Companion Hybrid] touchscreen + 030e CTL-480 [Intuos Pen (S)] + 0314 PTH-451 [Intuos pro (S)] + 0315 PTH-651 [Intuos pro (M)] + 0317 PTH-851 [Intuos pro (L)] + 0318 CTH-301 [Bamboo] + 032f DTU-1031X + 0347 Integrated Hub + 0348 Integrated Hub + 034a DTH-W1320 [MobileStudio Pro 13] touchscreen + 034b DTH-W1620 [MobileStudio Pro 16] touchscreen + 034d DTH-W1320 [MobileStudio Pro 13] tablet + 034e DTH-W1620 [MobileStudio Pro 16] tablet + 034f DTH-1320 [Cintiq Pro 13] tablet + 0350 DTH-1620 [Cintiq Pro 16] tablet + 0351 DTH-2420 [Cintiq Pro 24 PT] tablet + 0352 DTH-3220 [Cintiq Pro 32] tablet + 0353 DTH-1320 [Cintiq Pro 13] touchscreen + 0354 DTH-1620 [Cintiq Pro 16] touchscreen + 0355 DTH-2420 [Cintiq Pro 24 PT] touchscreen + 0356 DTH-3220 [Cintiq Pro 32] touchscreen + 0357 PTH-660 [Intuos Pro (M)] + 0358 PTH-860 [Intuos Pro (L)] + 035a DTH-1152 tablet + 0368 DTH-1152 touchscreen + 0374 CTL-4100 [Intuos (S)] + 0375 CTL-6100 [Intuos (M)] + 0376 CTL-4100WL [Intuos BT (S)] + 0378 CTL-6100WL [Intuos BT (M)] + 037a CTL-472 [One by Wacom (S)] + 037b CTL-672 [One by Wacom (M)] + 037c DTK-2420 [Cintiq Pro 24 P] + 037d DTH-2452 tablet + 037e DTH-2452 touchscreen + 0382 DTK-2451 tablet + 038a DTH-3220 [Cintiq Pro 32] internal hub + 038d DTH-3220 [Cintiq Pro 32] internal hub + 038e DTH-3220 [Cintiq Pro 32] external hub + 038f DTH-3220 [Cintiq Pro 32] internal hub + 0400 PenPartner 4x5 + 4001 TPC4001 + 4004 TPC4004 + 4850 PenPartner 6x8 + 5000 TPC5000 + 5002 TPC5002 + 5010 TPC5010 +056b Decicon, Inc. +056c eTEK Labs + 0006 KwikLink Host-Host Connector + 8007 Kwik232 Serial Port + 8100 KwikLink Host-Host Connector + 8101 KwikLink USB-USB Bridge +056d EIZO Corp. + 0000 Hub + 0001 Monitor + 0002 HID Monitor Controls + 0003 Device Bay Controller +056e Elecom Co., Ltd + 0002 29UO Mouse + 0057 M-PGDL Mouse + 005c M-PGDL Mouse + 005d M-FGDL Mouse + 005e M-FG2DL Mouse + 0062 M-D18DR Mouse + 0063 M-SODL Mouse + 0069 M-GE1UL Mouse + 0071 M-GE3DL Mouse + 0072 M-LS6UL Mouse + 0073 M-LS7UL Mouse + 0074 M-FW1UL Mouse + 0075 M-FW2DL Mouse + 200c LD-USB/TX + 4002 Laneed 100Mbps Ethernet LD-USB/TX [pegasus] + 4005 LD-USBL/TX + 400b LD-USB/TX + 4010 LD-USB20 + 5003 UC-SGT + 5004 UC-SGT + 6008 Flash Disk + abc1 LD-USB/TX +056f Korea Data Systems Co., Ltd + cd00 CDM-751 CD organizer +0570 Epson America +0571 Interex, Inc. + 0002 echoFX InterView Lite +0572 Conexant Systems (Rockwell), Inc. + 0001 Ezcam II Webcam + 0002 Ezcam II Webcam + 0040 Wondereye CP-115 Webcam + 0041 Webcam Notebook + 0042 Webcam Notebook + 0320 DVBSky T330 DVB-T2/C tuner + 1232 V.90 modem + 1234 Typhoon Redfun Modem V90 56k + 1252 HCF V90 Data Fax Voice Modem + 1253 Zoom V.92 Faxmodem + 1300 SoftK56 Data Fax Voice CARP + 1301 Modem Enumerator + 1328 TrendNet TFM-561 modem + 1804 HP Dock Audio + 2000 SoftGate 802.11 Adapter + 2002 SoftGate 802.11 Adapter + 262a tm5600 Video & Audio Grabber Capture + 680c DVBSky T680C DVB-T2/C tuner + 6831 DVBSky S960 DVB-S2 tuner + 8390 WinFast PalmTop/Novo TV Video + 8392 WinFast PalmTop/Novo TV Video + 960c DVBSky S960C DVB-S2 tuner + c686 Geniatech T220A DVB-T2 TV Stick + c688 Geniatech T230 DVB-T2 TV Stick + cafc CX861xx ROM Boot Loader + cafd CX82310 ROM Boot Loader + cafe AccessRunner ADSL Modem + cb00 ADSL Modem + cb01 ADSL Modem + cb06 StarModem Network Interface +0573 Zoran Co. Personal Media Division (Nogatech) + 0003 USBGear USBG-V1 + 0400 D-Link V100 + 0600 Dazzle USBVision (1006) + 1300 leadtek USBVision (1006) + 2000 X10 va10a Wireless Camera + 2001 Dazzle EmMe (2001) + 2101 Zoran Co. PMD (Nogatech) AV-grabber Manhattan + 2d00 Osprey 50 + 2d01 Hauppauge USB-Live Model 600 + 3000 Dazzle MicroCam (NTSC) + 3001 Dazzle MicroCam (PAL) + 4000 Nogatech TV! (NTSC) + 4001 Nogatech TV! (PAL) + 4002 Nogatech TV! (PAL-I-) + 4003 Nogatech TV! (MF-) + 4008 Nogatech TV! (NTSC) (T) + 4009 Nogatech TV! (PAL) (T) + 4010 Nogatech TV! (NTSC) (A) + 4100 USB-TV FM (NTSC) + 4110 PNY USB-TV (NTSC) FM + 4400 Nogatech TV! Pro (NTSC) + 4401 Nogatech TV! Pro (PAL) + 4450 PixelView PlayTv-USB PRO (PAL) FM + 4451 Nogatech TV! Pro (PAL+) + 4452 Nogatech TV! Pro (PAL-I+) + 4500 Nogatech TV! Pro (NTSC) + 4501 Nogatech TV! Pro (PAL) + 4550 ZTV ZT-721 2.4GHz A/V Receiver + 4551 Dazzle TV! Pro Audio (P+) + 4d00 Hauppauge WinTV-USB USA + 4d01 Hauppauge WinTV-USB + 4d02 Hauppauge WinTV-USB UK + 4d03 Hauppauge WinTV-USB France + 4d04 Hauppauge WinTV (PAL D/K) + 4d10 Hauppauge WinTV-USB with FM USA radio + 4d11 Hauppauge WinTV-USB (PAL) with FM radio + 4d12 Hauppauge WinTV-USB UK with FM Radio + 4d14 Hauppauge WinTV (PAL D/K FM) + 4d20 Hauppauge WinTV-USB II (PAL) with FM radio + 4d21 Hauppauge WinTV-USB II (PAL) + 4d22 Hauppauge WinTV-USB II (PAL) Model 566 + 4d23 Hauppauge WinTV-USB France 4D23 + 4d24 Hauppauge WinTV Pro (PAL D/K) + 4d25 Hauppauge WinTV-USB Model 40209 rev B234 + 4d26 Hauppauge WinTV-USB Model 40209 rev B243 + 4d27 Hauppauge WinTV-USB Model 40204 Rev B281 + 4d28 Hauppauge WinTV-USB Model 40204 rev B283 + 4d29 Hauppauge WinTV-USB Model 40205 rev B298 + 4d2a Hauppague WinTV-USB Model 602 Rev B285 + 4d2b Hauppague WinTV-USB Model 602 Rev B282 + 4d2c Hauppauge WinTV Pro (PAL/SECAM) + 4d30 Hauppauge WinTV-USB FM Model 40211 Rev B123 + 4d31 Hauppauge WinTV-USB III (PAL) with FM radio Model 568 + 4d32 Hauppauge WinTV-USB III (PAL) FM Model 573 + 4d34 Hauppauge WinTV Pro (PAL D/K FM) + 4d35 Hauppauge WinTV-USB III (PAL) FM Model 597 + 4d36 Hauppauge WinTV Pro (PAL B/G FM) + 4d37 Hauppauge WinTV-USB Model 40219 rev E189 + 4d38 Hauppauge WinTV Pro (NTSC FM) +0574 City University of Hong Kong +0575 Philips Creative Display Solutions +0576 BAFO/Quality Computer Accessories +0577 ELSA +0578 Intrinsix Corp. +0579 GVC Corp. +057a Samsung Electronics America +057b Y-E Data, Inc. + 0000 FlashBuster-U Floppy + 0001 Tri-Media Reader Floppy + 0006 Tri-Media Reader Card Reader + 0010 Memory Stick Reader Writer + 0020 HEXA Media Drive 6-in-1 Card Reader Writer + 0030 Memory Card Viewer (TV) +057c AVM GmbH + 0b00 ISDN-Controller B1 Family + 0c00 ISDN-Controller FRITZ!Card + 1000 ISDN-Controller FRITZ!Card v2.0 + 1900 ISDN-Controller FRITZ!Card v2.1 + 2000 ISDN-Connector FRITZ!X + 2200 BlueFRITZ! + 2300 Teledat X130 DSL + 2800 Teledat 2a/b / X120 / NetXXL ISDN Terminal Adapter + 3200 Teledat X130 DSL + 3500 FRITZ!Card DSL SL + 3701 FRITZ!Box SL + 3702 FRITZ!Box + 3800 BlueFRITZ! Bluetooth Stick + 3a00 FRITZ!Box Fon + 3c00 FRITZ!Box WLAN + 3d00 FRITZ!Box Fon WLAN 7050/7140/7170/IAD3331 + 3e01 FRITZ!Box (Annex A) + 4001 FRITZ!Box Fon (Annex A) + 4101 FRITZ!Box WLAN (Annex A) + 4201 FRITZ!Box Fon WLAN (Annex A) + 4601 Eumex 5520PC (WinXP/2000) + 4602 Eumex 400 (WinXP/2000) + 4701 AVM FRITZ!Box Fon ata + 5401 Eumex 300 IP + 5601 AVM Fritz!WLAN [Texas Instruments TNETW1450] + 6201 AVM Fritz!WLAN v1.1 [Texas Instruments TNETW1450] + 62ff AVM Fritz!WLAN USB (in CD-ROM-mode) + 8401 Fritz!WLAN N [Atheros AR9001U] + 8402 Fritz!WLAN N 2.4 [Atheros AR9001U] + 8403 Fritz!WLAN N v2 [Atheros AR9271] + 84ff AVM Fritz!WLAN USB N (in CD-ROM-mode) + 8501 FRITZ WLAN N v2 [RT5572/rt2870.bin] +057d Shark Multimedia, Inc. +057e Nintendo Co., Ltd + 0305 Broadcom BCM2045A Bluetooth Radio [Nintendo Wii] + 0306 Wii Remote Controller RVL-003 + 0337 Wii U GameCube Controller Adapter + 2006 Joy-Con L + 2007 Joy-Con R +057f QuickShot, Ltd + 6238 USB StrikePad +0580 Denron, Inc. +0581 Racal Data Group +0582 Roland Corp. + 0000 UA-100(G) + 0002 UM-4/MPU-64 MIDI Interface + 0003 SoundCanvas SC-8850 + 0004 U-8 + 0005 UM-2(C/EX) + 0007 SoundCanvas SC-8820 + 0008 PC-300 + 0009 UM-1(E/S/X) + 000b SK-500 + 000c SC-D70 + 0010 EDIROL UA-5 + 0011 Edirol UA-5 Sound Capture + 0012 XV-5050 + 0013 XV-5050 + 0014 EDIROL UM-880 MIDI I/F (native) + 0015 EDIROL UM-880 MIDI I/F (generic) + 0016 EDIROL SD-90 + 0017 EDIROL SD-90 + 0018 UA-1A + 001b MMP-2 + 001c MMP-2 + 001d V-SYNTH + 001e V-SYNTH + 0023 EDIROL UM-550 + 0024 EDIROL UM-550 + 0025 EDIROL UA-20 + 0026 EDIROL UA-20 + 0027 EDIROL SD-20 + 0028 EDIROL SD-20 + 0029 EDIROL SD-80 + 002a EDIROL SD-80 + 002b EDIROL UA-700 + 002c EDIROL UA-700 + 002d XV-2020 Synthesizer + 002e XV-2020 Synthesizer + 002f VariOS + 0030 VariOS + 0033 EDIROL PCR + 0034 EDIROL PCR + 0035 M-1000 + 0037 Digital Piano + 0038 Digital Piano + 003b BOSS GS-10 + 003c BOSS GS-10 + 0040 GI-20 + 0041 GI-20 + 0042 RS-70 + 0043 RS-70 + 0044 EDIROL UA-1000 + 0047 EDIROL UR-80 WAVE + 0048 EDIROL UR-80 MIDI + 0049 EDIROL UR-80 WAVE + 004a EDIROL UR-80 MIDI + 004b EDIROL M-100FX + 004c EDIROL PCR-A WAVE + 004d EDIROL PCR-A MIDI + 004e EDIROL PCR-A WAVE + 004f EDIROL PCR-A MIDI + 0050 EDIROL UA-3FX + 0052 EDIROL UM-1SX + 0054 Digital Piano + 0060 EXR Series + 0064 EDIROL PCR-1 WAVE + 0065 EDIROL PCR-1 MIDI + 0066 EDIROL PCR-1 WAVE + 0067 EDIROL PCR-1 MIDI + 006a SP-606 + 006b SP-606 + 006d FANTOM-X + 006e FANTOM-X + 0073 EDIROL UA-25 + 0074 EDIROL UA-25 + 0075 BOSS DR-880 + 0076 BOSS DR-880 + 007a RD + 007b RD + 007d EDIROL UA-101 + 0080 G-70 + 0081 G-70 + 0084 V-SYNTH XT + 0089 BOSS GT-PRO + 008b EDIROL PC-50 + 008c EDIROL PC-50 + 008d EDIROL UA-101 USB1 + 0092 EDIROL PC-80 WAVE + 0093 EDIROL PC-80 MIDI + 0096 EDIROL UA-1EX + 009a EDIROL UM-3EX + 009d EDIROL UM-1 + 00a0 MD-P1 + 00a2 Digital Piano + 00a3 EDIROL UA-4FX + 00a6 Juno-G + 00a9 MC-808 + 00ad SH-201 + 00b2 VG-99 + 00b3 VG-99 + 00b7 BK-7m/VIMA JM-5/8 + 00c2 SonicCell + 00c4 EDIROL M-16DX + 00c5 SP-555 + 00c7 V-Synth GT + 00d1 Music Atelier + 00d3 M-380/400 + 00da BOSS GT-10 + 00db BOSS GT-10 Guitar Effects Processor + 00dc BOSS GT-10B + 00de Fantom G + 00e6 EDIROL UA-25EX (Advanced mode) + 00e7 EDIROL UA-25EX + 00e9 UA-1G + 00eb VS-100 + 00f6 GW-8/AX-Synth + 00f8 JUNO Series + 00fc VS-700C + 00fd VS-700 + 00fe VS-700 M1 + 00ff VS-700 M2 + 0100 VS-700 + 0101 VS-700 M2 + 0102 VB-99 + 0104 UM-1G + 0106 UM-2G + 0108 UM-3G + 0109 eBand JS-8 + 010d A-500S + 010f A-PRO + 0110 A-PRO + 0111 GAIA SH-01 + 0113 ME-25 + 0114 SD-50 + 0116 WAVE/MP3 RECORDER R-05 + 0117 VS-20 + 0119 OCTAPAD SPD-30 + 011c Lucina AX-09 + 011e BR-800 + 0120 OCTA-CAPTURE + 0121 OCTA-CAPTURE + 0123 JUNO-Gi + 0124 M-300 + 0127 GR-55 + 012a UM-ONE + 012b DUO-CAPTURE + 012f QUAD-CAPTURE + 0130 MICRO BR BR-80 + 0132 TRI-CAPTURE + 0134 V-Mixer + 0138 Boss RC-300 (Audio mode) + 0139 Boss RC-300 (Storage mode) + 013a JUPITER-80 + 013e R-26 + 0145 SPD-SX + 014b eBand JS-10 + 014d GT-100 + 0150 TD-15 + 0151 TD-11 + 0154 JUPITER-50 + 0156 A-Series + 0158 TD-30 + 0159 DUO-CAPTURE EX + 015b INTEGRA-7 + 015d R-88 + 0505 EDIROL UA-101 +0583 Padix Co., Ltd (Rockfire) + 0001 4 Axis 12 button +POV + 0002 4 Axis 12 button +POV + 2030 RM-203 USB Nest [mode 1] + 2031 RM-203 USB Nest [mode 2] + 2032 RM-203 USB Nest [mode 3] + 2033 RM-203 USB Nest [mode 4] + 2050 PX-205 PSX Bridge + 205f PSX/USB converter + 206f USB, 2-axis 8-button gamepad + 3050 QF-305u Gamepad + 3379 Rockfire X-Force + 337f Rockfire USB RacingStar Vibra + 509f USB,4-Axis,12-Button with POV + 5259 Rockfire USB SkyShuttle Vibra + 525f USB Vibration Pad + 5308 USB Wireless VibrationPad + 5359 Rockfire USB SkyShuttle Pro + 535f USB,real VibrationPad + 5659 Rockfire USB SkyShuttle Vibra + 565f USB VibrationPad + 6009 Revenger + 600f USB,GameBoard II + 6258 USB, 4-axis, 6-button joystick w/view finder + 6889 Windstorm Pro + 688f QF-688uv Windstorm Pro Joystick + 7070 QF-707u Bazooka Joystick + a000 MaxFire G-08XU Gamepad + a015 4-Axis,16-Button with POV + a019 USB, Vibration ,4-axis, 8-button joystick w/view finder + a020 USB,4-Axis,10-Button with POV + a021 USB,4-Axis,12-Button with POV + a022 USB,4-Axis,14-Button with POV + a023 USB,4-Axis,16-Button with POV + a024 4axis,12button vibrition audio gamepad + a025 4axis,12button vibrition audio gamepad + a130 USB Wireless 2.4GHz Gamepad + a131 USB Wireless 2.4GHz Joystick + a132 USB Wireless 2.4GHz Wheelpad + a133 USB Wireless 2.4GHz Wheel&Gamepad + a202 ForceFeedbackWheel + a209 MetalStrike FF + b000 USB,4-Axis,12-Button with POV + b001 USB,4-Axis,12-Button with POV + b002 Vibration,12-Button USB Wheel + b005 USB,12-Button Wheel + b008 USB Wireless 2.4GHz Wheel + b009 USB,12-Button Wheel + b00a PSX/USB converter + b00b PSX/USB converter + b00c PSX/USB converter + b00d PSX/USB converter + b00e 4-Axis,12-Button with POV + b00f USB,5-Axis,10-Button with POV + b010 MetalStrike Pro + b012 Wireless MetalStrike + b013 USB,Wiress 2.4GHZ Joystick + b016 USB,5-Axis,10-Button with POV + b018 TW6 Wheel + ff60 USB Wireless VibrationPad +0584 RATOC System, Inc. + 0008 Fujifilm MemoryCard ReaderWriter + 0220 U2SCX SCSI Converter + 0304 U2SCX-LVD (SCSI Converter) + b000 REX-USB60 + b020 REX-USB60F +0585 FlashPoint Technology, Inc. + 0001 Digital Camera + 0002 Digital Camera + 0003 Digital Camera + 0004 Digital Camera + 0005 Digital Camera + 0006 Digital Camera + 0007 Digital Camera + 0008 Digital Camera + 0009 Digital Camera + 000a Digital Camera + 000b Digital Camera + 000c Digital Camera + 000d Digital Camera + 000e Digital Camera + 000f Digital Camera +0586 ZyXEL Communications Corp. + 0025 802.11b/g/n USB Wireless Network Adapter + 0100 omni.net + 0102 omni.net II ISDN TA [HFC-S] + 0110 omni.net Plus + 1000 omni.net LCD Plus - ISDN TA + 1500 Omni 56K Plus + 2011 Scorpion-980N keyboard + 3304 LAN Modem + 3309 ADSL Modem Prestige 600 series + 330a ADSL Modem Interface + 330e USB Broadband ADSL Modem Rev 1.10 + 3400 ZyAIR B-220 IEEE 802.11b Adapter + 3401 ZyAIR G-220 802.11bg + 3402 ZyAIR G-220F 802.11bg + 3403 AG-200 802.11abg Wireless Adapter [Atheros AR5523] + 3407 G-200 v2 802.11bg + 3408 G-260 802.11bg + 3409 AG-225H 802.11bg + 340a M-202 802.11bg + 340c G-270S 802.11bg Wireless Adapter [Atheros AR5523] + 340f G-220 v2 802.11bg + 3410 ZyAIR G-202 802.11bg + 3412 802.11bg + 3413 ZyAIR AG-225H v2 802.11bg + 3415 G-210H 802.11g Wireless Adapter + 3416 NWD-210N 802.11b/g/n-draft wireless adapter + 3417 NWD271N 802.11n Wireless Adapter [Atheros AR9001U-(2)NG] + 3418 NWD211AN 802.11abgn Wireless Adapter [Ralink RT2870] + 3419 G-220 v3 802.11bg Wireless Adapter [ZyDAS ZD1211B] + 341a NWD-270N Wireless N-lite USB Adapter + 341e NWD2105 802.11bgn Wireless Adapter [Ralink RT3070] + 341f NWD2205 802.11n Wireless N Adapter [Realtek RTL8192CU] + 3425 NWD6505 802.11a/b/g/n/ac Wireless Adapter [MediaTek MT7610U] + 343e N220 802.11bgn Wireless Adapter +0587 America Kotobuki Electronics Industries, Inc. +0588 Sapien Design +0589 Victron +058a Nohau Corp. +058b Infineon Technologies + 0015 Flash Loader utility + 001c Flash Drive + 0041 Flash Loader utility +058c In Focus Systems + 0007 Flash + 0008 LP130 + 000a LP530 + 0010 Projector + 0011 Projector + 0012 Projector + 0013 Projector + 0014 Projector + 0015 Projector + 0016 Projector + 0017 Projector + 0018 Projector + 0019 Projector + 001a Projector + 001b Projector + 001c Projector + 001d Projector + 001e Projector + 001f Projector + ffe5 IN34 Projector + ffeb Projector IN76 +058d Micrel Semiconductor +058e Tripath Technology, Inc. +058f Alcor Micro Corp. + 1234 Flash Drive + 2412 SCard R/W CSR-145 + 2802 Monterey Keyboard + 5492 Hub + 6232 Hi-Speed 16-in-1 Flash Card Reader/Writer + 6254 USB Hub + 6331 SD/MMC/MS Card Reader + 6332 Multi-Function Card Reader + 6335 SD/MMC Card Reader + 6360 Multimedia Card Reader + 6361 Multimedia Card Reader + 6362 Flash Card Reader/Writer + 6364 AU6477 Card Reader Controller + 6366 Multi Flash Reader + 6377 AU6375 4-LUN card reader + 6386 Memory Card + 6387 Flash Drive + 6390 USB 2.0-IDE bridge + 6391 IDE Bridge + 9213 MacAlly Kbd Hub + 9215 AU9814 Hub + 9254 Hub + 9310 Mass Storage (UID4/5A & UID7A) + 9320 Micro Storage Driver for Win98 + 9321 Micro Storage Driver for Win98 + 9330 SD Reader + 9331 Micro Storage Driver for Win98 + 9340 Delkin eFilm Reader-32 + 9350 Delkin eFilm Reader-32 + 9360 8-in-1 Media Card Reader + 9361 Multimedia Card Reader + 9368 Multimedia Card Reader + 9380 Flash Drive + 9381 Flash Drive + 9382 Acer/Sweex Flash drive + 9384 qdi U2Disk T209M + 9410 Keyboard + 9472 Keyboard Hub + 9510 ChunghwaTL USB02 Smartcard Reader + 9520 Watchdata W 1981 + 9540 AU9540 Smartcard Reader + 9720 USB-Serial Adapter + a014 Asus Integrated Webcam + b002 Acer Integrated Webcam +0590 Omron Corp. + 0004 Cable Modem + 000b MR56SVS + 0028 HJ-720IT / HEM-7080IT-E / HEM-790IT +0591 Questra Consulting +0592 Powerware Corp. + 0002 UPS (X-Slot) +0593 Incite +0594 Princeton Graphic Systems +0595 Zoran Microelectronics, Ltd + 1001 Digitrex DSC-1300/DSC-2100 (mass storage mode) + 2002 DIGITAL STILL CAMERA 6M 4X + 4343 Digital Camera EX-20 DSC +0596 MicroTouch Systems, Inc. + 0001 Touchscreen + 0002 Touch Screen Controller + 0500 PCT Multitouch HID Controller + 0543 DELL XPS touchscreen +0597 Trisignal Communications +0598 Niigata Canotec Co., Inc. +0599 Brilliance Semiconductor, Inc. +059a Spectrum Signal Processing, Inc. +059b Iomega Corp. + 0001 Zip 100 (Type 1) + 000b Zip 100 (Type 2) + 0021 Win98 Disk Controller + 0030 Zip 250 (Ver 1) + 0031 Zip 100 (Type 3) + 0032 Zip 250 (Ver 2) + 0034 Zip 100 Driver + 0037 Zip 750 MB + 0040 SCSI Bridge + 0042 Rev 70 GB + 0050 Zip CD 650 Writer + 0053 CDRW55292EXT CD-RW External Drive + 0056 External CD-RW Drive Enclosure + 0057 Mass Storage Device + 005d Mass Storage Device + 005f CDRW64892EXT3-C CD-RW 52x24x52x External Drive + 0060 PCMCIA PocketZip Dock + 0061 Varo PocketZip 40 MP3 Player + 006d HipZip MP3 Player + 0070 eGo Portable Hard Drive + 007c Ultra Max USB/1394 + 007d HTC42606 0G9AT00 [Iomega HDD] + 007e Mini 256MB/512MB Flash Drive [IOM2D5] + 00db FotoShow Zip 250 Driver + 0150 Mass Storage Device + 015d Super DVD Writer + 0173 Hi-Speed USB-to-IDE Bridge Controller + 0174 Hi-Speed USB-to-IDE Bridge Controller + 0176 Hi-Speed USB-to-IDE Bridge Controller + 0177 Hi-Speed USB-to-IDE Bridge Controller + 0178 Hi-Speed USB-to-IDE Bridge Controller + 0179 Hi-Speed USB-to-IDE Bridge Controller + 017a HDD + 017b HDD/1394A + 017c HDD/1394B + 0251 Optical + 0252 Optical + 0275 ST332082 0A + 0278 LDHD-UPS [Professional Desktop Hard Drive eSATA / USB2.0] + 027a LPHD250-U [Portable Hard Drive Silver Series 250 Go] + 0470 Prestige Portable Hard Drive + 047a Select Portable Hard Drive + 0571 Prestige Portable Hard Drive + 0579 eGo Portable Hard Drive + 1052 DVD+RW External Drive +059c A-Trend Technology Co., Ltd +059d Advanced Input Devices +059e Intelligent Instrumentation +059f LaCie, Ltd + 0201 StudioDrive USB2 + 0202 StudioDrive USB2 + 0203 StudioDrive USB2 + 0211 PocketDrive + 0212 PocketDrive + 0213 PocketDrive USB2 + 0323 LaCie d2 Drive USB2 + 0421 Big Disk G465 + 0525 BigDisk Extreme 500 + 0641 Mobile Hard Drive + 0829 BigDisk Extreme+ + 1004 Little Disk 20 GB + 100c Rugged Triple Interface Mobile Hard Drive + 1010 Desktop Hard Drive + 1016 Desktop Hard Drive + 1018 Desktop Hard Drive + 1019 Desktop Hard Drive + 1021 Little Disk + 1027 iamaKey V2 + 102a Rikiki Hard Drive + 1049 rikiki Harddrive + 1052 P'9220 Mobile Drive + 1061 Rugged USB3-FW + 1064 Rugged 16 and 32 GB + 106b Rugged Mini HDD + 106d Porsche Design Mobile Drive + 106e Porsche Design Desktop Drive + a601 HardDrive + a602 CD R/W +05a0 Vetronix Corp. +05a1 USC Corp. +05a2 Fuji Film Microdevices Co., Ltd +05a3 ARC International + 8388 Marvell 88W8388 802.11a/b/g WLAN + 9230 Camera + 9320 Camera + 9331 Camera + 9422 Camera + 9520 Camera +05a4 Ortek Technology, Inc. + 1000 WKB-1000S Wireless Ergo Keyboard with Touchpad + 2000 WKB-2000 Wireless Keyboard with Touchpad + 9720 Keyboard Mouse + 9722 Keyboard + 9731 MCK-600W/MCK-800USB Keyboard + 9783 Wireless Keypad + 9837 Targus Number Keypad + 9862 Targus Number Keypad (Composite Device) + 9881 IR receiver [VRC-1100 Vista MCE Remote Control] +05a5 Sampo Technology Corp. +05a6 Cisco Systems, Inc. + 0001 CVA124 Cable Voice Adapter (WDM) + 0002 CVA122 Cable Voice Adapter (WDM) + 0003 CVA124E Cable Voice Adapter (WDM) + 0004 CVA122E Cable Voice Adapter (WDM) +05a7 Bose Corp. + 4000 Bluetooth Headset + 4001 Bluetooth Headset in DFU mode + 4002 Bluetooth Headset Series 2 + 4003 Bluetooth Headset Series 2 in DFU mode + bc50 SoundLink Wireless Mobile speaker + bc51 SoundLink Wireless Mobile speaker in DFU mode +05a8 Spacetec IMC Corp. +05a9 OmniVision Technologies, Inc. + 0511 OV511 Webcam + 0518 OV518 Webcam + 0519 OV519 Microphone + 1550 VEHO Filmscanner + 2640 OV2640 Webcam + 2643 Monitor Webcam + 264b Monitor Webcam + 2800 SuperCAM + 4519 Webcam Classic + 7670 OV7670 Webcam + 8065 GAIA Sensor FPGA Demo Board + 8519 OV519 Webcam + a511 OV511+ Webcam + a518 D-Link DSB-C310 Webcam +05aa Utilux South China, Ltd +05ab In-System Design + 0002 Parallel Port + 0030 Storage Adapter V2 (TPP) + 0031 ATA Bridge + 0060 USB 2.0 ATA Bridge + 0061 Storage Adapter V3 (TPP-I) + 0101 Storage Adapter (TPP) + 0130 Compact Flash and Microdrive Reader (TPP) + 0200 USS725 ATA Bridge + 0201 Storage Adapter (TPP) + 0202 ATA Bridge + 0300 Portable Hard Drive (TPP) + 0301 Portable Hard Drive V2 + 0350 Portable Hard Drive (TPP) + 0351 Portable Hard Drive V2 + 081a ATA Bridge + 0cda ATA Bridge for CD-R/RW + 1001 BAYI Printer Class Support + 5700 Storage Adapter V2 (TPP) + 5701 USB Storage Adapter V2 + 5901 Smart Board (TPP) + 5a01 ATI Storage Adapter (TPP) + 5d01 DataBook Adapter (TPP) +05ac Apple, Inc. + 0201 USB Keyboard [Alps or Logitech, M2452] + 0202 Keyboard [ALPS] + 0205 Extended Keyboard [Mitsumi] + 0206 Extended Keyboard [Mitsumi] + 020b Pro Keyboard [Mitsumi, A1048/US layout] + 020c Extended Keyboard [Mitsumi] + 020d Pro Keyboard [Mitsumi, A1048/JIS layout] + 020e Internal Keyboard/Trackpad (ANSI) + 020f Internal Keyboard/Trackpad (ISO) + 0214 Internal Keyboard/Trackpad (ANSI) + 0215 Internal Keyboard/Trackpad (ISO) + 0216 Internal Keyboard/Trackpad (JIS) + 0217 Internal Keyboard/Trackpad (ANSI) + 0218 Internal Keyboard/Trackpad (ISO) + 0219 Internal Keyboard/Trackpad (JIS) + 021a Internal Keyboard/Trackpad (ANSI) + 021b Internal Keyboard/Trackpad (ISO) + 021c Internal Keyboard/Trackpad (JIS) + 021d Aluminum Mini Keyboard (ANSI) + 021e Aluminum Mini Keyboard (ISO) + 021f Aluminum Mini Keyboard (JIS) + 0220 Aluminum Keyboard (ANSI) + 0221 Aluminum Keyboard (ISO) + 0222 Aluminum Keyboard (JIS) + 0223 Internal Keyboard/Trackpad (ANSI) + 0224 Internal Keyboard/Trackpad (ISO) + 0225 Internal Keyboard/Trackpad (JIS) + 0229 Internal Keyboard/Trackpad (ANSI) + 022a Internal Keyboard/Trackpad (MacBook Pro) (ISO) + 022b Internal Keyboard/Trackpad (MacBook Pro) (JIS) + 0230 Internal Keyboard/Trackpad (MacBook Pro 4,1) (ANSI) + 0231 Internal Keyboard/Trackpad (MacBook Pro 4,1) (ISO) + 0232 Internal Keyboard/Trackpad (MacBook Pro 4,1) (JIS) + 0236 Internal Keyboard/Trackpad (ANSI) + 0237 Internal Keyboard/Trackpad (ISO) + 0238 Internal Keyboard/Trackpad (JIS) + 023f Internal Keyboard/Trackpad (ANSI) + 0240 Internal Keyboard/Trackpad (ISO) + 0241 Internal Keyboard/Trackpad (JIS) + 0242 Internal Keyboard/Trackpad (ANSI) + 0243 Internal Keyboard/Trackpad (ISO) + 0244 Internal Keyboard/Trackpad (JIS) + 0245 Internal Keyboard/Trackpad (ANSI) + 0246 Internal Keyboard/Trackpad (ISO) + 0247 Internal Keyboard/Trackpad (JIS) + 024a Internal Keyboard/Trackpad (MacBook Air) (ISO) + 024d Internal Keyboard/Trackpad (MacBook Air) (ISO) + 0250 Aluminium Keyboard (ISO) + 0252 Internal Keyboard/Trackpad (ANSI) + 0253 Internal Keyboard/Trackpad (ISO) + 0254 Internal Keyboard/Trackpad (JIS) + 0259 Internal Keyboard/Trackpad + 0263 Apple Internal Keyboard / Trackpad (MacBook Retina) + 0267 Magic Keyboard A1644 + 0269 Magic Mouse 2 (Lightning connector) + 0273 Internal Keyboard/Trackpad (ISO) + 0301 USB Mouse [Mitsumi, M4848] + 0302 Optical Mouse [Fujitsu] + 0304 Mighty Mouse [Mitsumi, M1152] + 0306 Optical USB Mouse [Fujitsu] + 030a Internal Trackpad + 030b Internal Trackpad + 030d Magic Mouse + 030e MC380Z/A [Magic Trackpad] + 1000 Bluetooth HCI MacBookPro (HID mode) + 1001 Keyboard Hub [ALPS] + 1002 Extended Keyboard Hub [Mitsumi] + 1003 Hub in Pro Keyboard [Mitsumi, A1048] + 1006 Hub in Aluminum Keyboard + 1008 Mini DisplayPort to Dual-Link DVI Adapter + 1101 Speakers + 1105 Audio in LED Cinema Display + 1107 Thunderbolt Display Audio + 1112 FaceTime HD Camera (Display) + 1201 3G iPod + 1202 iPod 2G + 1203 iPod 4.Gen Grayscale 40G + 1204 iPod [Photo] + 1205 iPod Mini 1.Gen/2.Gen + 1206 iPod '06' + 1207 iPod '07' + 1208 iPod '08' + 1209 iPod Video + 120a iPod Nano + 1223 iPod Classic/Nano 3.Gen (DFU mode) + 1224 iPod Nano 3.Gen (DFU mode) + 1225 iPod Nano 4.Gen (DFU mode) + 1227 Mobile Device (DFU Mode) + 1231 iPod Nano 5.Gen (DFU mode) + 1240 iPod Nano 2.Gen (DFU mode) + 1242 iPod Nano 3.Gen (WTF mode) + 1243 iPod Nano 4.Gen (WTF mode) + 1245 iPod Classic 3.Gen (WTF mode) + 1246 iPod Nano 5.Gen (WTF mode) + 1255 iPod Nano 4.Gen (DFU mode) + 1260 iPod Nano 2.Gen + 1261 iPod Classic + 1262 iPod Nano 3.Gen + 1263 iPod Nano 4.Gen + 1265 iPod Nano 5.Gen + 1266 iPod Nano 6.Gen + 1267 iPod Nano 7.Gen + 1281 Apple Mobile Device [Recovery Mode] + 1290 iPhone + 1291 iPod Touch 1.Gen + 1292 iPhone 3G + 1293 iPod Touch 2.Gen + 1294 iPhone 3GS + 1296 iPod Touch 3.Gen (8GB) + 1297 iPhone 4 + 1299 iPod Touch 3.Gen + 129a iPad + 129c iPhone 4(CDMA) + 129e iPod Touch 4.Gen + 129f iPad 2 + 12a0 iPhone 4S + 12a2 iPad 2 (3G; 64GB) + 12a3 iPad 2 (CDMA) + 12a4 iPad 3 (wifi) + 12a5 iPad 3 (CDMA) + 12a6 iPad 3 (3G, 16 GB) + 12a8 iPhone5/5C/5S/6 + 12a9 iPad 2 + 12aa iPod Touch 5.Gen [A1421] + 12ab iPad 4/Mini1 + 1300 iPod Shuffle + 1301 iPod Shuffle 2.Gen + 1302 iPod Shuffle 3.Gen + 1303 iPod Shuffle 4.Gen + 1401 Modem + 1402 Ethernet Adapter [A1277] + 1500 SuperDrive [A1379] + 8005 OHCI Root Hub Simulation + 8006 EHCI Root Hub Simulation + 8007 XHCI Root Hub USB 2.0 Simulation + 8202 HCF V.90 Data/Fax Modem + 8203 Bluetooth HCI + 8204 Built-in Bluetooth 2.0+EDR HCI + 8205 Bluetooth HCI + 8206 Bluetooth HCI + 820a Bluetooth HID Keyboard + 820b Bluetooth HID Mouse + 820f Bluetooth HCI + 8213 Bluetooth Host Controller + 8215 Built-in Bluetooth 2.0+EDR HCI + 8216 Bluetooth USB Host Controller + 8217 Bluetooth USB Host Controller + 8218 Bluetooth Host Controller + 821a Bluetooth Host Controller + 821f Built-in Bluetooth 2.0+EDR HCI + 8240 Built-in IR Receiver + 8241 Built-in IR Receiver + 8242 Built-in IR Receiver + 8281 Bluetooth Host Controller + 8286 Bluetooth Host Controller + 828c Bluetooth Host Controller + 8290 Bluetooth Host Controller + 8300 Built-in iSight (no firmware loaded) + 8403 Internal Memory Card Reader + 8404 Internal Memory Card Reader + 8501 Built-in iSight [Micron] + 8502 Built-in iSight + 8505 Built-in iSight + 8507 Built-in iSight + 8508 iSight in LED Cinema Display + 8509 FaceTime HD Camera + 850a FaceTime Camera + 8510 FaceTime HD Camera (Built-in) + 911c Hub in A1082 [Cinema HD Display 23"] + 9127 Hub in Thunderbolt Display + 912f Hub in 30" Cinema Display + 9215 Studio Display 15" + 9217 Studio Display 17" + 9218 Cinema Display 23" + 9219 Cinema Display 20" + 921c A1082 [Cinema HD Display 23"] + 921e Cinema Display 24" + 9221 30" Cinema Display + 9226 LED Cinema Display + 9227 Thunderbolt Display + 9232 Cinema HD Display 30" + ffff Bluetooth in DFU mode - Driver +05ad Y.C. Cable U.S.A., Inc. +05ae Synopsys, Inc. +05af Jing-Mold Enterprise Co., Ltd + 0806 HP SK806A Keyboard + 0809 Wireless Keyboard and Mouse + 0821 IDE to + 3062 Cordless Keyboard + 9167 KB 9151B - 678 + 9267 KB 9251B - 678 Mouse +05b0 Fountain Technologies, Inc. +05b1 First International Computer, Inc. + 1389 Bluetooth Wireless Adapter +05b4 LG Semicon Co., Ltd + 4857 M-Any DAH-210 + 6001 HYUNDAI GDS30C6001 SSFDC / MMC I/F Controller +05b5 Dialogic Corp. +05b6 Proxima Corp. +05b7 Medianix Semiconductor, Inc. +05b8 Agiler, Inc. + 3002 Scroll Mouse + 3223 ISY Wireless Presenter +05b9 Philips Research Laboratories +05ba DigitalPersona, Inc. + 0007 Fingerprint Reader + 0008 Fingerprint Reader + 000a Fingerprint Reader +05bb Grey Cell Systems +05bc 3G Green Green Globe Co., Ltd + 0004 Trackball +05bd RAFI GmbH & Co. KG +05be Tyco Electronics (Raychem) +05bf S & S Research +05c0 Keil Software +05c1 Kawasaki Microelectronics, Inc. +05c2 Media Phonics (Suisse) S.A. +05c5 Digi International, Inc. + 0002 AccelePort USB 2 + 0004 AccelePort USB 4 + 0008 AccelePort USB 8 +05c6 Qualcomm, Inc. + 0114 Select RW-200 CDMA Wireless Modem + 1000 Mass Storage Device + 3100 CDMA Wireless Modem/Phone + 3196 CDMA Wireless Modem + 3197 CDMA Wireless Modem/Phone + 6000 Siemens SG75 + 6503 AnyData APE-540H + 6613 Onda H600/N501HS ZTE MF330 + 6764 A0001 Phone [OnePlus One] + 9000 SIMCom SIM5218 modem + 9001 Gobi Wireless Modem + 9002 Gobi Wireless Modem + 9003 Quectel UC20 + 9008 Gobi Wireless Modem (QDL mode) + 9018 Qualcomm HSUSB Device + 9025 Qualcomm HSUSB Device + 9201 Gobi Wireless Modem (QDL mode) + 9202 Gobi Wireless Modem + 9203 Gobi Wireless Modem + 9205 Gobi 2000 + 9211 Acer Gobi Wireless Modem (QDL mode) + 9212 Acer Gobi Wireless Modem + 9214 Acer Gobi 2000 Wireless Modem (QDL mode) + 9215 Acer Gobi 2000 Wireless Modem + 9221 Gobi Wireless Modem (QDL mode) + 9222 Gobi Wireless Modem + 9224 Sony Gobi 2000 Wireless Modem (QDL mode) + 9225 Sony Gobi 2000 Wireless Modem + 9231 Gobi Wireless Modem (QDL mode) + 9234 Top Global Gobi 2000 Wireless Modem (QDL mode) + 9235 Top Global Gobi 2000 Wireless Modem + 9244 Samsung Gobi 2000 Wireless Modem (QDL mode) + 9245 Samsung Gobi 2000 Wireless Modem + 9264 Asus Gobi 2000 Wireless Modem (QDL mode) + 9265 Asus Gobi 2000 Wireless Modem + 9274 iRex Technologies Gobi 2000 Wireless Modem (QDL mode) + 9275 iRex Technologies Gobi 2000 Wireless Modem +05c7 Qtronix Corp. + 0113 PC Line Mouse + 1001 Lynx Mouse + 2001 Keyboard + 2011 SCorpius Keyboard + 6001 Ten-Keypad +05c8 Cheng Uei Precision Industry Co., Ltd (Foxlink) + 0103 FO13FF-65 PC-CAM + 010b Webcam (UVC) + 021a HP Webcam + 0318 Webcam + 0361 SunplusIT INC. HP Truevision HD Webcam + 036e Webcam + 0403 Webcam + 041b HP 2.0MP High Definition Webcam +05c9 Semtech Corp. +05ca Ricoh Co., Ltd + 0101 RDC-5300 Camera + 0325 Caplio GX (ptp) + 032d Caplio GX 8 (ptp) + 032f Caplio R3 (ptp) + 03a1 IS200e + 0403 Printing Support + 0405 Type 101 + 0406 Type 102 + 1803 V5 camera [R5U870] + 1810 Pavilion Webcam [R5U870] + 1812 Pavilion Webcam + 1814 HD Webcam + 1815 Dell Laptop Integrated Webcam + 1820 Integrated Webcam + 1830 Visual Communication Camera VGP-VCC2 [R5U870] + 1832 Visual Communication Camera VGP-VCC3 [R5U870] + 1833 Visual Communication Camera VGP-VCC2 [R5U870] + 1834 Visual Communication Camera VGP-VCC2 [R5U870] + 1835 Visual Communication Camera VGP-VCC5 [R5U870] + 1836 Visual Communication Camera VGP-VCC4 [R5U870] + 1837 Visual Communication Camera VGP-VCC4 [R5U870] + 1839 Visual Communication Camera VGP-VCC6 [R5U870] + 183a Visual Communication Camera VGP-VCC7 [R5U870] + 183b Visual Communication Camera VGP-VCC8 [R5U870] + 183d Sony Vaio Integrated Webcam + 183e Visual Communication Camera VGP-VCC9 [R5U870] + 1841 Fujitsu F01/ Lifebook U810 [R5U870] + 1870 Webcam 1000 + 18b0 Sony Vaio Integrated Webcam + 18b1 Sony Vaio Integrated Webcam + 18b3 Sony Vaio Integrated Webcam + 18b5 Sony Vaio Integrated Webcam + 2201 RDC-7 Camera + 2202 Caplio RR30 + 2203 Caplio 300G + 2204 Caplio G3 + 2205 Caplio RR30 / Medion MD 6126 Camera + 2206 Konica DG-3Z + 2207 Caplio Pro G3 + 2208 Caplio G4 + 2209 Caplio 400G wide + 220a KONICA MINOLTA DG-4Wide + 220b Caplio RX + 220c Caplio GX + 220d Caplio R1/RZ1 + 220e Sea & Sea 5000G + 220f Rollei dr5 / Rollei dr5 (PTP mode) + 2211 Caplio R1S + 2212 Caplio R1v Camera + 2213 Caplio R2 + 2214 Caplio GX 8 + 2215 DSC 725 + 2216 Caplio R3 + 2222 RDC-i500 +05cb PowerVision Technologies, Inc. + 1483 PV8630 interface (scanners, webcams) +05cc ELSA AG + 2100 MicroLink ISDN Office + 2219 MicroLink ISDN + 2265 MicroLink 56k + 2267 MicroLink 56k (V.250) + 2280 MicroLink 56k Fun + 3000 Micolink USB2Ethernet [pegasus] + 3100 AirLancer USB-11 + 3363 MicroLink ADSL Fun +05cd Silicom, Ltd +05ce sci-worx GmbH +05cf Sung Forn Co., Ltd +05d0 GE Medical Systems Lunar +05d1 Brainboxes, Ltd + 0003 Bluetooth Adapter BL-554 +05d2 Wave Systems Corp. +05d3 Tohoku Ricoh Co., Ltd +05d5 Super Gate Technology Co., Ltd +05d6 Philips Semiconductors, CICT +05d7 Thomas & Betts Corp. + 0099 10Mbps Ethernet [klsi] +05d8 Ultima Electronics Corp. + 4001 Artec Ultima 2000 + 4002 Artec Ultima 2000 (GT6801 based)/Lifetec LT9385/ScanMagic 1200 UB Plus Scanner + 4003 Artec E+ 48U + 4004 Artec E+ Pro + 4005 MEM48U + 4006 TRUST EASY WEBSCAN 19200 + 4007 TRUST 240H EASY WEBSCAN GOLD + 4008 Trust Easy Webscan 19200 + 4009 Umax Astraslim + 4013 IT Scan 1200 + 8105 Artec T1 USB TVBOX (cold) + 8106 Artec T1 USB TVBOX (warm) + 8107 Artec T1 USB TVBOX with AN2235 (cold) + 8108 Artec T1 USB TVBOX with AN2235 (warm) + 8109 Artec T1 USB2.0 TVBOX (cold +05d9 Axiohm Transaction Solutions + a225 A225 Printer + a758 A758 Printer + a794 A794 Printer +05da Microtek International, Inc. + 0091 ScanMaker X6u + 0093 ScanMaker V6USL + 0094 Phantom 336CX/C3 + 0099 ScanMaker X6/X6U + 009a Phantom C6 + 00a0 Phantom 336CX/C3 (#2) + 00a3 ScanMaker V6USL + 00ac ScanMaker V6UL + 00b6 ScanMaker V6UPL + 00ef ScanMaker V6UPL + 1006 Jenoptik JD350 entrance + 1011 NHJ Che-ez! Kiss Digital Camera + 1018 Digital Dream Enigma 1.3 + 1020 Digital Dream l'espion xtra + 1025 Take-it Still Camera Device + 1026 Take-it + 1043 Take-It 1300 DSC Bulk Driver + 1045 Take-it D1 + 1047 Take-it Camera Composite Device + 1048 Take-it Q3 + 1049 3M Still Camera Device + 1051 Camcorder Series + 1052 Mass Storage Device + 1053 Take-it DV Composite Device + 1054 Mass Storage Device + 1055 Digital Camera Series(536) + 1056 Mass Storage Device + 1057 Take-it DSC Camera Device(536) + 1058 Mass Storage Device + 1059 Camcorder DSC Series + 1060 Microtek Take-it MV500 + 2007 ArtixScan DI 1210 + 200c 1394_USB2 Scanner + 200e ArtixScan DI 810 + 2017 UF ICE Scanner + 201c 4800 Scanner + 201d ArtixScan DI 1610 + 201f 4800 Scanner-ICE + 202e ArtixScan DI 2020 + 208b ScanMaker 6800 + 208f ArtixScan DI 2010 + 209e ScanMaker 4700LP + 20a7 ScanMaker 5600 + 20b0 ScanMaker X12USL + 20b1 ScanMaker 8700 + 20b4 ScanMaker 4700 + 20bd ScanMaker 5700 + 20c9 ScanMaker 6700 + 20d2 Microtek ArtixScan 1800f + 20d6 PS4000 + 20de ScanMaker 9800XL + 20e0 ScanMaker 9700XL + 20ed ScanMaker 4700 + 20ee Micortek ScanMaker X12USL + 2838 RT2832U + 3008 Scanner + 300a 4800 ICE Scanner + 300b 4800 Scanner + 300f MiniScan C5 + 3020 4800dpi Scanner + 3021 1200dpi Scanner + 3022 Scanner 4800dpi + 3023 USB1200II Scanner + 3025 ScanMaker S460 + 30c1 USB600 Scanner + 30ce ScanMaker 3800 + 30cf ScanMaker 4800 + 30d4 USB1200 Scanner + 30d8 Scanner + 30d9 USB2400 Scanner + 30e4 ScanMaker 4100 + 30e5 USB3200 Scanner + 30e6 ScanMaker i320 + 40b3 ScanMaker 3600 + 40b8 ScanMaker 3700 + 40c7 ScanMaker 4600 + 40ca ScanMaker 3600 + 40cb ScanMaker 3700 + 40dd ScanMaker 3750i + 40ff ScanMaker 3600 + 5003 Goya + 5013 3200 Scanner + 6072 XT-3500 A4 HD Scanner + 80a3 ScanMaker V6USL (#2) + 80ac ScanMaker V6UL/SpicyU +05db Sun Corp. (Suntac?) + 0003 SUNTAC U-Cable type D2 + 0005 SUNTAC U-Cable type P1 + 0009 SUNTAC Slipper U + 000a SUNTAC Ir-Trinity + 000b SUNTAC U-Cable type A3 + 0011 SUNTAC U-Cable type A4 +05dc Lexar Media, Inc. + 0001 jumpSHOT CompactFlash Reader + 0002 JumpShot + 0003 JumpShot + 0080 Jumpdrive Secure 64MB + 0081 RBC Compact Flash Drive + 00a7 JumpDrive Impact + 0100 JumpDrive PRO + 0200 JumpDrive 2.0 Pro + 0300 Jumpdrive Geysr + 0301 JumpDrive Classic + 0302 JD Micro + 0303 JD Micro Pro + 0304 JD Secure II + 0310 JumpDrive + 0311 JumpDrive Classic + 0312 JD Micro + 0313 JD Micro Pro + 0320 JumpDrive + 0321 JD Micro + 0322 JD Micro Pro + 0323 UFC + 0330 JumpDrive Expression + 0340 JumpDrive TAD + 0350 Express Card + 0400 UFDC + 0401 UFDC + 0403 Locked B Device + 0405 Locked C Device + 0407 Locked D Device + 0409 Locked E Device + 040b Locked F Device + 040d Locked G Device + 040f Locked H Device + 0410 JumpDrive + 0411 JumpDrive + 0413 Locked J Device + 0415 Locked K Device + 0417 Locked L Device + 0419 Locked M Device + 041b Locked N Device + 041d Locked O Device + 041f Locked P Device + 0420 JumpDrive + 0421 JumpDrive + 0423 Locked R Device + 0425 Locked S Device + 0427 Locked T Device + 0429 Locked U Device + 042b Locked V Device + 042d Locked W Device + 042f Locked X Device + 0431 Locked Y Device + 0433 Locked Z Device + 4d02 MP3 Player + 4d12 MP3 Player + 4d30 MP3 Player + a209 JumpDrive S70 + a300 JumpDrive2 + a400 JumpDrive trade; Pro 40-501 + a410 JumpDrive 128MB/256MB + a411 JumpDrive Traveler + a420 JumpDrive Pro + a421 JumpDrive Pro II + a422 JumpDrive Micro Pro + a430 JumpDrive Secure + a431 JumpDrive Secure II + a432 JumpDrive Classic + a440 JumpDrive Lightning + a450 JumpDrive TouchGuard + a460 JD Mercury + a501 JumpDrive Classic + a510 JumpDrive Sport + a530 JumpDrive Expression + a531 JumpDrive Secure II + a560 JumpDrive FireFly + a701 JumpDrive FireFly + a731 JumpDrive FireFly + a762 JumpDrive FireFly + a768 JumpDrive Retrax + a790 JumpDrive 2GB + a811 16GB Gizmo! + a813 16gB flash thumb drive + a815 JumpDrive V10 + a81d LJDTT16G [JumpDrive 16GB] + a833 JumpDrive S23 64GB + a838 JumpDrive Tough + b002 USB CF Reader + b018 Multi-Card Reader + b047 SDHC Reader [RW047-7000] + b051 microSD RDR UHS-I Card Reader [LRWM03U-7000] + ba02 Workflow CFR1 + ba0a Workflow DD512 + c753 JumpDrive TwistTurn + c75c JumpDrive V10 +05dd Delta Electronics, Inc. + ff31 AWU-120 + ff32 FriendlyNET AeroLAN AL2011 + ff35 PCW 100 - Wireless 802.11b Adapter + ff91 2Wire PC Port Phoneline 10Mbps Adapter +05df Silicon Vision, Inc. +05e0 Symbol Technologies + 0700 Bar Code Scanner (CS1504) + 0800 Spectrum24 Wireless LAN Adapter + 1200 Bar Code Scanner + 1701 Bar Code Scanner (CDC) + 1900 SNAPI Imaging Device + 2000 MC3090 Rugged Mobile Computer + 200d MC70 Rugged Mobile Computer +05e1 Syntek Semiconductor Co., Ltd + 0100 802.11g + Bluetooth Wireless Adapter + 0408 STK1160 Video Capture Device + 0500 DC-112X Webcam + 0501 DC-1125 Webcam + 0890 STK011 Camera + 0892 STK013 Camera + 0895 STK016 Camera + 0896 STK017 Camera + 2010 ARCTIC Sound P261 Headphones +05e2 ElecVision, Inc. +05e3 Genesys Logic, Inc. + 000a Keyboard with PS/2 Port + 000b Mouse + 0100 Nintendo Game Boy Advance SP + 0120 Pacific Image Electronics PrimeFilm 1800u slide/negative scanner + 0131 CF/SM Reader/Writer + 0142 Multiple Slides Scanner-3600 + 0143 Multiple Frames Film Scanner-36series + 0145 Reflecta CrystalScan 7200 Photo-Scanner + 0180 Plustek Scanner + 0182 Wize Media 1000 + 0189 ScanJet 4600 series + 018a Xerox 6400 + 0300 GLUSB98PT Parallel Port + 0301 USB2LPT Cable Release2 + 0406 Hub + 0501 GL620USB Host-Host interface + 0502 GL620USB-A GeneLink USB-USB Bridge + 0503 Webcam + 0504 HID Keyboard Filter + 0604 USB 1.1 Hub + 0605 USB 2.0 Hub + 0606 USB 2.0 Hub / D-Link DUB-H4 USB 2.0 Hub + 0607 Logitech G110 Hub + 0608 Hub + 0610 4-port hub + 0612 Hub + 0616 hub + 0660 USB 2.0 Hub + 0700 SIIG US2256 CompactFlash Card Reader + 0701 USB 2.0 IDE Adapter + 0702 USB 2.0 IDE Adapter [GL811E] + 0703 Card Reader + 0704 Card Reader + 0705 Card Reader + 0706 Card Reader + 0707 Card Reader + 0708 Card Reader + 0709 Card Reader + 070a Pen Flash + 070b DMHS1B Rev 3 DFU Adapter + 070e USB 2.0 Card Reader + 070f Pen Flash + 0710 USB 2.0 33-in-1 Card Reader + 0711 Card Reader + 0712 Delkin Mass Storage Device + 0715 USB 2.0 microSD Reader + 0716 USB 2.0 Multislot Card Reader/Writer + 0717 All-in-1 Card Reader + 0718 IDE/SATA Adapter + 0719 SATA adapter + 0722 SD/MMC card reader + 0723 GL827L SD/MMC/MS Flash Card Reader + 0726 SD Card Reader + 0727 microSD Reader/Writer + 0731 GL3310 SATA 3Gb/s Bridge Controller + 0732 All-in-One Cardreader + 0736 microSD Reader/Writer + 0738 Card reader + 0741 microSD Card Reader + 0743 SDXC and microSDXC CardReader + 0745 Logilink CR0012 + 0748 All-in-One Cardreader + 0751 microSD Card Reader + 0760 USB 2.0 Card Reader/Writer + 0761 Genesys Mass Storage Device + 0780 USBFS DFU Adapter + 07a0 Pen Flash + 0880 Wasp (SL-6612) + 0927 Card Reader + 1205 Afilias Optical Mouse H3003 / Trust Optical USB MultiColour Mouse MI-2330 + a700 Pen Flash + f102 VX7012 TV Box + f103 VX7012 TV Box + f104 VX7012 TV Box + fd21 3M TL20 Temperature Logger + fe00 Razer Mouse +05e4 Red Wing Corp. +05e5 Fuji Electric Co., Ltd +05e6 Keithley Instruments +05e8 ICC, Inc. +05e9 Kawasaki LSI + 0008 KL5KUSB101B Ethernet [klsi] + 0009 Sony 10Mbps Ethernet [pegasus] + 000c USB-to-RS-232 + 000d USB-to-RS-232 + 0014 RS-232 J104 + 0040 Ethernet Adapter + 2008 Ethernet Adapter +05eb FFC, Ltd +05ec COM21, Inc. +05ee Cytechinfo Inc. +05ef AVB, Inc. [anko?] + 020a Top Shot Pegasus Joystick + 8884 Mag Turbo Force Wheel + 8888 Top Shot Force Feedback Racing Wheel +05f0 Canopus Co., Ltd + 0101 DA-Port DAC +05f1 Compass Communications +05f2 Dexin Corp., Ltd + 0010 AQ Mouse +05f3 PI Engineering, Inc. + 0007 Kinesis Advantage PRO MPC/USB Keyboard + 0081 Kinesis Integrated Hub + 00ff VEC Footpedal + 0203 Y-mouse Keyboard & Mouse Adapter + 020b PS2 Adapter + 0232 X-Keys Switch Interface, Programming Mode + 0261 X-Keys Switch Interface, SPLAT Mode + 0264 X-Keys Switch Interface, Composite Mode +05f5 Unixtar Technology, Inc. +05f6 AOC International +05f7 RFC Distribution(s) PTE, Ltd +05f9 PSC Scanning, Inc. + 1104 Magellan 2200VS + 1206 Gryphon series (OEM mode) + 2202 Point of Sale Handheld Scanner + 2206 Gryphon series (keyboard emulation mode) + 220c Datalogic Gryphon GD4430 + 2601 Datalogic Magellan 1000i Barcode Scanner + 2602 Datalogic Magellan 1100i Barcode Scanner + 4204 Gryphon series (RS-232 emulation mode) + 5204 Datalogic Gryphon GFS4170 (config mode) +05fa Siemens Telecommunications Systems, Ltd + 3301 Keyboard with PS/2 Mouse Port + 3302 Keyboard + 3303 Keyboard with PS/2 Mouse Port +05fc Harman + 0001 Soundcraft Si Multi Digital Card + 0010 Soundcraft Si MADI combo card + 7849 Harman/Kardon SoundSticks +05fd InterAct, Inc. + 0239 SV-239 HammerHead Digital + 0251 Raider Pro + 0253 ProPad 8 Digital + 0286 SV-286 Cyclone Digital + 107a PowerPad Pro X-Box pad + 262a 3dfx HammerHead FX + 262f HammerHead Fx + daae Game Shark + dbae Datel XBoxMC +05fe Chic Technology Corp. + 0001 Mouse + 0003 Cypress USB Mouse + 0005 Viewmaster 4D Browser Mouse + 0007 Twinhead Mouse + 0009 Inland Pro 4500/5000 Mouse + 0011 Browser Mouse + 0014 Gamepad + 1010 Optical Wireless + 2001 Microsoft Wireless Receiver 700 +05ff LeCroy Corp. +0600 Barco Display Systems +0601 Jazz Hipster Corp. + 0003 Internet Security Co., Ltd. SecureKey +0602 Vista Imaging, Inc. + 1001 ViCam Webcam +0603 Novatek Microelectronics Corp. + 00f1 Keyboard (Labtec Ultra Flat Keyboard) + 00f2 Keyboard (Labtec Ultra Flat Keyboard) + 6871 Mouse + 8611 NTK96550 based camera +0604 Jean Co., Ltd +0605 Anchor C&C Co., Ltd +0606 Royal Information Electronics Co., Ltd +0607 Bridge Information Co., Ltd +0608 Genrad Ads +0609 SMK Manufacturing, Inc. + 031d eHome Infrared Receiver + 0322 eHome Infrared Receiver + 0334 eHome Infrared Receiver + ff12 SMK Bluetooth Device +060a Worthington Data Solutions, Inc. +060b Solid Year + 0001 MacAlly Keyboard + 0230 KSK-8003 UX Keyboard + 0540 DeltaCo TB-106U Keyboard + 1006 Japanese Keyboard - 260U + 2101 Keyboard + 2231 KSK-6001 UELX Keyboard + 2270 Gigabyte K8100 Aivia Gaming Keyboard + 5253 Thermaltake MEKA G-Unit Gaming Keyboard + 5811 ACK-571U Wireless Keyboard + 5903 Japanese Keyboard - 595U + 6001 SolidTek USB 2p HUB + 6002 SolidTek USB Keyboard + 6003 Japanese Keyboard - 600HM + 6231 Thermaltake eSPORTS Meka Keyboard + 8007 P-W1G1F12 VER:1 [Macally MegaCam] + a001 Maxwell Compact Pc PM3 +060c EEH Datalink GmbH +060d Auctor Corp. +060e Transmonde Technologies, Inc. +060f Joinsoon Electronics Mfg. Co., Ltd +0610 Costar Electronics, Inc. +0611 Totoku Electric Co., Ltd +0613 TransAct Technologies, Inc. +0614 Bio-Rad Laboratories +0615 Quabbin Wire & Cable Co., Inc. +0616 Future Techno Designs PVT, Ltd +0617 Swiss Federal Insitute of Technology + 000a Thymio-II + 000c Thymio-II Wireless +0618 MacAlly + 0101 Mouse +0619 Seiko Instruments, Inc. + 0101 SLP-100 Driver + 0102 SLP-200 Driver + 0103 SLP-100N Driver + 0104 SLP-200N Driver + 0105 SLP-240 Driver + 0501 SLP-440 Driver + 0502 SLP-450 Driver +061a Veridicom International, Inc. + 0110 5thSense Fingerprint Sensor + 0200 FPS200 Fingerprint Sensor + 8200 VKI-A Fingerprint Sensor/Flash Storage (dumb) + 9200 VKI-B Fingerprint Sensor/Flash Storage (smart) +061b Promptus Communications, Inc. +061c Act Labs, Ltd +061d Quatech, Inc. + c020 SSU-100 +061e Nissei Electric Co. + 0001 nissei 128DE-USB - + 0010 nissei 128DE-PNA - +0620 Alaris, Inc. + 0004 QuickVideo weeCam + 0007 QuickVideo weeCam + 000a QuickVideo weeCam + 000b QuickVideo weeCam +0621 ODU-Steckverbindungssysteme GmbH & Co. KG +0622 Iotech, Inc. +0623 Littelfuse, Inc. +0624 Avocent Corp. + 0248 Virtual Hub + 0249 Virtual Keyboard/Mouse + 0251 Virtual Mass Storage + 0294 Dell 03R874 KVM dongle + 0402 Cisco Virtual Keyboard and Mouse + 0403 Cisco Virtual Mass Storage +0625 TiMedia Technology Co., Ltd +0626 Nippon Systems Development Co., Ltd +0627 Adomax Technology Co., Ltd +0628 Tasking Software, Inc. +0629 Zida Technologies, Ltd +062a MosArt Semiconductor Corp. + 0000 Optical mouse + 0001 Notebook Optical Mouse + 0102 Wireless Keyboard/Mouse Combo [MK1152WC] + 0201 Defender Office Keyboard (K7310) S Zodiak KM-9010 + 0252 Emerge Uni-retractable Laser Mouse + 2410 Wireless PS3 gamepad + 3286 Nano Receiver [Sandstrom Laser Mouse SMWLL11] + 4101 Wireless Keyboard/Mouse + 6301 Trust Wireless Optical Mouse MI-4150K + 9003 VoIP Conference Hub (A16GH) + 9004 USR9602 USB Internet Mini Phone +062b Greatlink Electronics Taiwan, Ltd +062c Institute for Information Industry +062d Taiwan Tai-Hao Enterprises Co., Ltd +062e Mainsuper Enterprises Co., Ltd +062f Sin Sheng Terminal & Machine, Inc. +0631 JUJO Electronics Corp. +0633 Cyrix Corp. +0634 Micron Technology, Inc. + 0655 Embedded Mass Storage Drive [RealSSD] +0635 Methode Electronics, Inc. +0636 Sierra Imaging, Inc. + 0003 Vivicam 35Xx +0638 Avision, Inc. + 0268 iVina 1200U Scanner + 026a Minolta Dimage Scan Dual II AF-2820U (2886) + 0a10 iVina FB1600/UMAX Astra 4500 + 0a13 AV600U + 0a15 Konica Minolta SC-110 + 0a16 Konica Minolta SC-215 + 0a30 UMAX Astra 6700 Scanner + 0a41 Avision AM3000/MF3000 Series + 0f01 fi-4010CU +# typo? + 4004 Minolta Dimage Scan Elite II AF-2920 (2888) +0639 Chrontel, Inc. +063a Techwin Corp. +063b Taugagreining HF +063c Yamaichi Electronics Co., Ltd (Sakura) +063d Fong Kai Industrial Co., Ltd +063e RealMedia Technology, Inc. +063f New Technology Cable, Ltd +0640 Hitex Development Tools + 0026 LPC-Stick +0641 Woods Industries, Inc. +0642 VIA Medical Corp. +0644 TEAC Corp. + 0000 Floppy + 0200 All-In-One Multi-Card Reader CA200/B/S + 1000 CD-ROM Drive + 800d TASCAM Portastudio DP-01FX + 800e TASCAM US-122L + 801d TASCAM DR-100 + 8021 TASCAM US-122mkII + d001 CD-R/RW Unit + d002 CD-R/RW Unit + d010 CD-RW/DVD Unit +0645 Who? Vision Systems, Inc. +0646 UMAX +0647 Acton Research Corp. + 0100 ARC SpectraPro UV/VIS/IR Monochromator/Spectrograph + 0101 ARC AM-VM Mono Airpath/Vacuum Monochromator/Spectrograph + 0102 ARC Inspectrum Mono + 0103 ARC Filterwheel + 03e9 Inspectrum 128x1024 F VIS Spectrograph + 03ea Inspectrum 256x1024 F VIS Spectrograph + 03eb Inspectrum 128x1024 B VIS Spectrograph + 03ec Inspectrum 256x1024 B VIS Spectrograph +0648 Inside Out Networks +0649 Weli Science Co., Ltd +064b Analog Devices, Inc. (White Mountain DSP) + 0165 Blackfin 535 [ADZS HPUSB ICE] +064c Ji-Haw Industrial Co., Ltd +064d TriTech Microelectronics, Ltd +064e Suyin Corp. + 2100 Sony Visual Communication Camera + 9700 Asus Integrated Webcam + a100 Acer OrbiCam + a101 Acer CrystalEye Webcam + a102 Acer/Lenovo Webcam [CN0316] + a103 Acer/HP Integrated Webcam [CN0314] + a110 HP Webcam + a114 Lemote Webcam + a116 UVC 1.3MPixel WebCam + a136 Asus Integrated Webcam [CN031B] + a219 1.3M WebCam (notebook emachines E730, Acer sub-brand) + c107 HP webcam [dv6-1190en] + c335 HP TrueVision HD + d101 Acer CrystalEye Webcam + d213 UVC HD Webcam + d217 HP TrueVision HD + e201 Lenovo Integrated Webcam + e203 Lenovo Integrated Webcam + e258 HP TrueVision HD Integrated Webcam + e263 HP TrueVision HD Integrated Webcam + f102 Lenovo Integrated Webcam [R5U877] + f103 Lenovo Integrated Webcam [R5U877] + f209 HP Webcam + f300 UVC 0.3M Webcam +064f WIBU-Systems AG + 03e9 CmStick (MSD, article no. 1001-xx-xxx) + 03f2 CmStick/M (MSD, article no. 1010-xx-xxx) + 03f3 CmStick/M (MSD, article no. 1011-xx-xxx) + 0bd7 Wibu-Box/U (article no. 3031-xx-xxx) + 0bd8 Wibu-Box/RU (article no. 3032-xx-xxx) + 2af9 CmStick (HID, article no. 1001-xx-xxx) + 2b03 CmStick/M (HID, article no. 1011-xx-xxx) + 5213 CmStick/M (COMPOSITE, article no. 1011-xx-xxx) +0650 Dynapro Systems +0651 Likom Technology Sdn. Bhd. +0652 Stargate Solutions, Inc. +0653 CNF, Inc. +0654 Granite Microsystems, Inc. + 0005 Device Bay Controller + 0006 Hub + 0007 Device Bay Controller + 0016 Hub +0655 Space Shuttle Hi-Tech Co., Ltd +0656 Glory Mark Electronic, Ltd +0657 Tekcon Electronics Corp. +0658 Sigma Designs, Inc. + 0200 Aeotec Z-Stick Gen5 (ZW090) - UZB +0659 Aethra +065a Optoelectronics Co., Ltd + 0001 Opticon OPR-2001 / NLV-1001 (keyboard mode) + 0009 NLV-1001 (serial mode) / OPN-2001 [Opticon] +065b Tracewell Systems +065e Silicon Graphics +065f Good Way Technology Co., Ltd & GWC technology Inc. +0660 TSAY-E (BVI) International, Inc. +0661 Hamamatsu Photonics K.K. +0662 Kansai Electric Co., Ltd +0663 Topmax Electronic Co., Ltd + 0103 CobraPad +0664 ET&T Technology Co., Ltd. + 0301 Groovy Technology Corp. GTouch Touch Screen + 0302 Groovy Technology Corp. GTouch Touch Screen + 0303 Groovy Technology Corp. GTouch Touch Screen + 0304 Groovy Technology Corp. GTouch Touch Screen + 0305 Groovy Technology Corp. GTouch Touch Screen + 0306 Groovy Technology Corp. GTouch Touch Screen + 0307 Groovy Technology Corp. GTouch Touch Screen + 0309 Groovy Technology Corp. GTouch Touch Screen +0665 Cypress Semiconductor + 5161 USB to Serial +0667 Aiwa Co., Ltd + 0fa1 TD-U8000 Tape Drive +0668 WordWand +0669 Oce' Printing Systems GmbH +066a Total Technologies, Ltd +066b Linksys, Inc. + 0105 SCM eUSB SmartMedia Card Reader + 010a Melco MCR-U2 SmartMedia / CompactFlash Reader + 200c USB10TX + 2202 USB10TX Ethernet [pegasus] + 2203 USB100TX Ethernet [pegasus] + 2204 USB100TX HomePNA Ethernet [pegasus] + 2206 USB Ethernet [pegasus] + 2207 HomeLink Phoneline 10M Network Adapter + 2211 WUSB11 802.11b Adapter + 2212 WUSB11v2.5 802.11b Adapter + 2213 WUSB12v1.1 802.11b Adapter + 2219 Instant Wireless Network Adapter + 400b USB10TX +066d Entrega, Inc. +066e Acer Semiconductor America, Inc. +066f SigmaTel, Inc. + 003b MP3 Player + 003e MP3 Player + 003f MP3 Player + 0040 MP3 Player + 0041 MP3 Player + 0042 MP3 Player + 0043 MP3 Player + 004b A-Max PA11 MP3 Player + 3400 STMP3400 D-Major MP3 Player + 3410 STMP3410 D-Major MP3 Player + 3500 Player Recovery Device + 3780 STMP3780/i.MX23 SystemOnChip in RecoveryMode + 4200 STIr4200 IrDA Bridge + 4210 STIr4210 IrDA Bridge + 8000 MSCN MP3 Player + 8001 SigmaTel MSCN Audio Player + 8004 MSCNMMC MP3 Player + 8008 i-Bead 100 MP3 Player + 8020 MP3 Player + 8034 MP3 Player + 8036 MP3 Player + 8038 MP3 Player + 8056 MP3 Player + 8060 MP3 Player + 8066 MP3 Player + 807e MP3 Player + 8092 MP3 Player + 8096 MP3 Player + 809a MP3 Player + 80aa MP3 Player + 80ac MP3 Player + 80b8 MP3 Player + 80ba MP3 Player + 80bc MP3 Player + 80bf MP3 Player + 80c5 MP3 Player + 80c8 MP3 Player + 80ca MP3 Player + 80cc MP3 Player + 8104 MP3 Player + 8106 MP3 Player + 8108 MP3 Player + 810a MP3 Player + 810c MP3 Player + 8122 MP3 Player + 8124 MP3 Player + 8126 MP3 Player + 8128 MP3 Player + 8134 MP3 Player + 8136 MP3 Player + 8138 MP3 Player + 813a MP3 Player + 813e MP3 Player + 8140 MP3 Player + 8142 MP3 Player + 8144 MP3 Player + 8146 MP3 Player + 8148 MP3 Player + 814c MP3 Player + 8201 MP3 Player + 8202 Jens of Sweden / I-BEAD 150M/150H MP3 player + 8203 MP3 Player + 8204 MP3 Player + 8205 MP3 Player + 8206 Digital MP3 Music Player + 8207 MP3 Player + 8208 MP3 Player + 8209 MP3 Player + 820a MP3 Player + 820b MP3 Player + 820c MP3 Player + 820d MP3 Player + 820e MP3 Player + 820f MP3 Player + 8210 MP3 Player + 8211 MP3 Player + 8212 MP3 Player + 8213 MP3 Player + 8214 MP3 Player + 8215 MP3 Player + 8216 MP3 Player + 8217 MP3 Player + 8218 MP3 Player + 8219 MP3 Player + 821a MP3 Player + 821b MP3 Player + 821c MP3 Player + 821d MP3 Player + 821e MP3 Player + 821f MP3 Player + 8220 MP3 Player + 8221 MP3 Player + 8222 MP3 Player + 8223 MP3 Player + 8224 MP3 Player + 8225 MP3 Player + 8226 MP3 Player + 8227 MP3 Player + 8228 MP3 Player + 8229 MP3 Player + 8230 MP3 Player + 829c MP3 Player + 82e0 MP3 Player + 8320 TrekStor i.Beat fun + 835d MP3 Player + 9000 MP3 Player + 9001 MP3 Player + 9002 MP3 Player +0670 Sequel Imaging + 0001 Calibrator + 0005 Enable Cable +0672 Labtec, Inc. + 1041 LCS1040 Speaker System + 5000 SpaceBall 4000 FLX +0673 HCL + 5000 Keyboard +0674 Key Mouse Electronic Enterprise Co., Ltd +0675 DrayTek Corp. + 0110 Vigor 128 ISDN TA + 0530 Vigor530 IEEE 802.11G Adapter (ISL3880+NET2280) + 0550 Vigor550 + 1688 miniVigor 128 ISDN TA [HFC-S] + 6694 miniVigor 128 ISDN TA +0676 Teles AG +0677 Aiwa Co., Ltd + 07d5 TM-ED1285(USB) + 0fa1 TD-U8000 Tape Drive +0678 ACard Technology Corp. +067b Prolific Technology, Inc. + 0000 PL2301 USB-USB Bridge + 0001 PL2302 USB-USB Bridge + 0307 Motorola Serial Adapter + 04bb PL2303 Serial (IODATA USB-RSAQ2) + 0600 IDE Bridge + 0610 Onext EG210U MODEM + 0611 AlDiga AL-11U Quad-band GSM/GPRS/EDGE modem + 2303 PL2303 Serial Port + 2305 PL2305 Parallel Port + 2306 Raylink Bridge Controller + 2307 PL2307 USB-ATAPI4 Bridge + 2313 FITEL PHS U Cable Adaptor + 2315 Flash Disk Embedded Hub + 2316 Flash Disk Security Device + 2317 Mass Storage Device + 2501 PL2501 USB-USB Bridge (USB 2.0) + 2506 Kaser 8gB micro hard drive + 2507 PL2507 Hi-speed USB to IDE bridge controller + 2515 Flash Disk Embedded Hub + 2517 Flash Disk Mass Storage Device + 2528 Storage device (8gB thumb drive) + 25a1 PL25A1 Host-Host Bridge + 2773 PL2773 SATAII bridge controller + 3400 Hi-Speed Flash Disk with TruePrint AES3400 + 3500 Hi-Speed Flash Disk with TruePrint AES3500 + 3507 PL3507 ATAPI6 Bridge + aaa0 Prolific Pharos + aaa2 PL2303 Serial Adapter (IODATA USB-RSAQ3) + aaa3 PL2303x Serial Adapter +067c Efficient Networks, Inc. + 1001 Siemens SpeedStream 100MBps Ethernet + 1022 Siemens SpeedStream 1022 802.11b Adapter + 1023 SpeedStream Wireless + 4020 SpeedStream 4020 ATM/ADSL Installer + 4031 Efficient ADSL Modem + 4032 SpeedStream 4031 ATM/ADSL Installer + 4033 SpeedStream 4031 ATM/ADSL Installer + 4060 Alcatel Speedstream 4060 ADSL Modem + 4062 Efficient Networks 4060 Loader + 5667 Efficient Networks Virtual Bus for ADSL Modem + c031 SpeedStream 4031 ATM/ADSL Installer + c032 SpeedStream 4031 ATM/ADSL Installer + c033 SpeedStream 4031 ATM/ADSL Installer + c060 SpeedStream 4060 Miniport ATM/ADSL Adapter + d667 Efficient Networks Virtual Bus for ADSL Modem + e240 Speedstream Ethernet Adapter E240 + e540 Speedstream Ethernet Adapter E240 +067d Hohner Corp. +067e Intermec Technologies Corp. + 0801 HID Keyboard, Barcode scanner + 0803 VCP, Barcode scanner + 0805 VCP + UVC, Barcode scanner + 1001 Mobile Computer +067f Virata, Ltd + 4552 DSL-200 ADSL Modem + 6542 DSL Modem + 6549 DSL Modem + 7541 DSL Modem +0680 Realtek Semiconductor Corp., CPP Div. (Avance Logic) + 0002 Arowana Optical Wheel Mouse MSOP-01 +0681 Siemens Information and Communication Products + 0001 Dect Base + 0002 Gigaset 3075 Passive ISDN + 0005 ID-Mouse with Fingerprint Reader + 0012 I-Gate 802.11b Adapter + 001b WLL013 + 001d Hipath 1000 + 0022 Gigaset SX353 ISDN + 0026 DECT Data - Gigaset M34 + 002b A-100-I ADSL Modem + 002e ADSL Router_S-141 + 0034 GSM module MC35/ES75 USB Modem + 3c06 54g USB Network Adapter +0682 Victor Company of Japan, Ltd +0684 Actiontec Electronics, Inc. +0685 ZD Incorporated + 7000 HSDPA Modem +0686 Minolta Co., Ltd + 2001 PagePro 4110W + 2004 PagePro 1200W + 2005 Magicolor 2300 DL + 3001 PagePro 4100 + 3005 PagePro 1250E + 3006 PagePro 1250W + 3009 Magicolor 2300W + 300b PagePro 1350W + 300c PagePro 1300W + 302e Develop D 1650iD PCL + 3034 Develop D 2050iD PCL + 4001 Dimage 2300 + 4003 Dimage 2330 Zoom Camera + 4004 Dimage Scan Elite II AF-2920 (2888) + 4005 Minolta DiMAGE E201 Mass Storage Device + 4006 Dimage 7 Camera + 4007 Dimage S304 Camera + 4008 Dimage 5 Camera + 4009 Dimage X Camera + 400a Dimage S404 Camera + 400b Dimage 7i Camera + 400c Dimage F100 Camera + 400d Dimage Scan Dual III AF-2840 (2889) + 400e Dimage Scan Elite 5400 (2890) + 400f Dimage 7Hi Camera + 4010 Dimage Xi Camera + 4011 Dimage F300 Camera + 4012 Dimage F200 Camera + 4014 Dimage S414 Camera + 4015 Dimage XT Camera [storage] + 4016 Dimage XT Camera [remote mode] + 4017 Dimage E223 + 4018 Dimage Z1 Camera + 4019 Dimage A1 Camera [remote mode] + 401a Dimage A1 Camera [storage] + 401c Dimage X20 Camera + 401e Dimage E323 Camera +068a Pertech, Inc. +068b Potrans International, Inc. +068e CH Products, Inc. + 00d3 OEM 3 axis 5 button joystick + 00e2 HFX OEM Joystick + 00f0 Multi-Function Panel + 00f1 Pro Throttle + 00f2 Flight Sim Pedals + 00f3 Fighterstick + 00f4 Combatstick + 00fa Ch Throttle Quadrant + 00ff Flight Sim Yoke + 0500 GameStick 3D + 0501 CH Pro Pedals + 0504 F-16 Combat Stick +0690 Golden Bridge Electech, Inc. +0693 Hagiwara Sys-Com Co., Ltd + 0002 FlashGate SmartMedia Card Reader + 0003 FlashGate CompactFlash Card Reader + 0005 FlashGate + 0006 SM PCCard R/W and SPD + 0007 FlashGate ME (Authenticated) + 000a SDCard/MMC Reader/Writer +0694 Lego Group + 0001 Mindstorms Tower + 0002 Mindstorms NXT + 0005 Mindstorms EV3 + 0006 Mindstorms EV3 Firmware Update +0698 Chuntex (CTX) + 1786 1300ex Monitor + 2003 CTX M730V built in Camera + 9999 VLxxxx Monitor+Hub +0699 Tektronix, Inc. + 0347 AFG 3022B + 036a TDS 2024B +069a Askey Computer Corp. + 0001 VC010 Webcam [pwc] + 0303 Cable Modem + 0311 ADSL Router Remote NDIS Device + 0318 Remote NDIS Device + 0319 220V Remote NDIS Device + 0320 IEEE 802.11b Wireless LAN Card + 0321 Dynalink WLL013 / Compex WLU11A 802.11b Adapter + 0402 Scientific Atlanta WebSTAR 100 & 200 series Cable Modem + 0811 BT Virtual Bus for Helium + 0821 BT Voyager 1010 802.11b Adapter + 4402 Scientific Atlanta WebSTAR 2000 series Cable Modem + 4403 Scientific Atlanta WebSTAR 300 series Cable Modem + 4501 Scientific-Atlanta WebSTAR 2000 series Cable Modem +069b Thomson, Inc. + 0704 DCM245 Cable Modem + 0705 THG540K Cable Modem + 0709 Lyra PDP2424 + 070c MP3 Player + 070d MP3 Player + 070e MP3 Player + 070f RCA Lyra RD1071 MP3 Player + 0731 Lyra M200E256 + 0761 RCA H100A + 0778 PEARL USB Device + 2220 RCA Kazoo RD1000 MP3 Player + 300a RCA Lyra MP3 Player + 3012 MP3 Player + 3013 MP3 Player + 5557 RCA CDS6300 +069d Hughes Network Systems (HNS) + 0001 Satellite Receiver Device + 0002 Satellite Device +069e Welcat Inc. + 0005 Marx CryptoBox v1.2 +069f Allied Data Technologies BV + 0010 Tornado Speakerphone FaxModem 56.0 + 0011 Tornado Speakerphone FaxModem 56.0 + 1000 ADT VvBus for CopperJet + 1004 CopperJet 821 RouterPlus +06a2 Topro Technology, Inc. + 0033 USB Mouse +06a3 Saitek PLC + 0006 Cyborg Gold Joystick + 0109 P880 Pad + 0160 ST290 Pro + 0200 Xbox Adrenalin Hub + 0241 Xbox Adrenalin Gamepad + 0255 X52 Flight Controller + 040b P990 Dual Analog Pad + 040c P2900 Wireless Pad + 0422 ST90 Joystick + 0460 ST290 Pro Flight Stick + 0463 ST290 + 0464 Cyborg Evo + 0471 Cyborg Graphite Stick + 0501 R100 Sports Wheel + 0502 ST200 Stick + 0506 R220 Digital Wheel + 051e Cyborg Digital II Stick + 052d P750 Gamepad + 053c X45 Flight Controller + 053f X36F Flightstick + 056c P2000 Tilt Pad + 056f P2000 Tilt Pad + 05d2 PC Dash 2 + 075c X52 Flight Controller + 0762 Saitek X52 Pro Flight Control System + 0763 Pro Flight Rudder Pedals + 0764 Flight Pro Combat Rudder + 0805 R440 Force Wheel + 0b4e Pro Flight Backlit Information Panel + 0bac Pro Flight Yoke + 0c2d Pro Flight Quadrant + 0d05 Pro Flight Radio Panel + 0d06 Flight Pro Multi Panel + 0d67 Pro Flight Switch Panel + 1003 GM2 Action Pad + 1009 Action Pad + 100a SP550 Pad and Joystick Combo + 100b SP550 Pad + 1509 P3000 Wireless Pad + 1589 P3000 Wireless Pad + 2541 X45 Flight Controller + 3509 P3000 RF GamePad + 353e Cyborg Evo Wireless + 3589 P3000 Wireless Pad + 35be Cyborg Evo + 5509 P3000 Wireless Pad + 712c Pro Flight Yoke integrated hub + 8000 Gamers' Keyboard + 801e Cyborg 3D Digital Stick II + 8020 Eclipse Keyboard + 8021 Eclipse II Keyboard + 802d P750 Pad + 803f X36 Flight Controller + 806f P2000 Tilt Pad + 80c0 Pro Gamer Command Unit + 80c1 Cyborg Command Pad Unit + a2ae Pro Flight Instrument Panel + a502 Gaming Mouse + f518 P3200 Rumble Force Game Pad + ff04 R440 Force Wheel + ff0c Cyborg Force Rumble Pad + ff0d P2600 Rumble Force Pad + ff12 Cyborg 3D Force Stick + ff17 ST 330 Rumble Force Stick + ff52 Cyborg 3D Rumble Force Joystick + ffb5 Cyborg Evo Force Joystick +06a4 Xiamen Doowell Electron Co., Ltd +06a5 Divio + 0000 Typhoon Webcam 100k [nw8000] + d001 ProLink DS3303u Webcam + d800 Chicony TwinkleCam + d820 Wize Media 1000 +06a7 MicroStore, Inc. +06a8 Topaz Systems, Inc. + 0042 SignatureGem 1X5 Pad + 0043 SignatureGem 1X5-HID Pad +06a9 Westell + 0005 WireSpeed Dual Connect Modem + 0006 WireSpeed Dual Connect Modem + 000a WireSpeed Dual Connect Modem + 000b WireSpeed Dual Connect Modem + 000e A90-211WG-01 802.11g Adapter [Intersil ISL3887] +06aa Sysgration, Ltd +06ac Fujitsu Laboratories of America, Inc. +06ad Greatland Electronics Taiwan, Ltd +06ae Professional Multimedia Testing Centre +06af Harting, Inc. of North America +06b8 Pixela Corp. +06b9 Alcatel Telecom + 0120 SpeedTouch 120g 802.11g Wireless Adapter [Intersil ISL3886] + 0121 SpeedTouch 121g Wireless Dongle + 2001 SPEED TOUCH Card + 4061 SpeedTouch ISDN or ADSL Modem + 4062 SpeedTouch ISDN or ADSL router + a5a5 DynaMiTe Modem +06ba Smooth Cord & Connector Co., Ltd +06bb EDA, Inc. +06bc Oki Data Corp. + 000b Okipage 14ex Printer + 0027 Okipage 14e + 00f7 OKI B4600 Mono Printer + 015e OKIPOS 411/412 POS Printer + 01c9 OKI B430 Mono Printer + 020b OKI ES4140 Mono Printer + 02bb OKI PT390 POS Printer + 0a91 B2500MFP (printer+scanner) + 3801 B6100 Laser Printer +06bd AGFA-Gevaert NV + 0001 SnapScan 1212U + 0002 SnapScan 1236U + 0100 SnapScan Touch + 0101 SNAPSCAN ELITE + 0200 ScanMaker 8700 + 02bf DUOSCAN f40 + 0400 CL30 + 0401 Mass Storage + 0403 ePhoto CL18 Camera + 0404 ePhoto CL20 Camera + 2061 SnapScan 1212U (?) + 208d Snapscan e40 + 208f SnapScan e50 + 2091 SnapScan e20 + 2093 SnapScan e10 + 2095 SnapScan e25 + 2097 SnapScan e26 + 20fd SnapScan e52 + 20ff SnapScan e42 +06be AME Optimedia Technology Co., Ltd + 0800 Optimedia Camera + 1005 Dazzle DPVM! (1005) + d001 P35U Camera Capture +06bf Leoco Corp. +06c2 Phidgets Inc. (formerly GLAB) + 0030 PhidgetRFID + 0031 RFID reader + 0038 4-Motor PhidgetServo v3.0 + 0039 1-Motor PhidgetServo v3.0 + 003a 8-Motor PhidgetAvancedServo + 0040 PhidgetInterface Kit 0-0-4 + 0044 PhidgetInterface Kit 0-16-16 + 0045 PhidgetInterface Kit 8-8-8 + 0048 PhidgetStepper (Under Development) + 0049 PhidgetTextLED Ver 1.0 + 004a PhidgetLED Ver 1.0 + 004b PhidgetEncoder Ver 1.0 + 0051 PhidgetInterface Kit 0-5-7 (Custom) + 0052 PhidgetTextLCD + 0053 PhidgetInterfaceKit 0-8-8 + 0058 PhidgetMotorControl Ver 1.0 + 0070 PhidgetTemperatureSensor Ver 1.0 + 0071 PhidgetAccelerometer Ver 1.0 + 0072 PhidgetWeightSensor Ver 1.0 + 0073 PhidgetHumiditySensor + 0074 PhidgetPHSensor + 0075 PhidgetGyroscope +06c4 Bizlink International Corp. +06c5 Hagenuk, GmbH +06c6 Infowave Software, Inc. +06c8 SIIG, Inc. +06c9 Taxan (Europe), Ltd + 0005 Monitor Control + 0007 Monitor Control + 0009 Monitor Control +06ca Newer Technology, Inc. + 2003 uSCSI +06cb Synaptics, Inc. + 0001 TouchPad + 0002 Integrated TouchPad + 0003 cPad + 0005 Touchpad/FPS + 0006 TouchScreen + 0007 USB Styk + 0008 WheelPad + 0009 Composite TouchPad and TrackPoint + 000e HID Device + 0010 Wireless TouchPad + 0013 DisplayPad + 2970 touchpad +06cc Terayon Communication Systems + 0101 Cable Modem + 0102 Cable Modem + 0103 Cable Modem + 0104 Cable Modem + 0304 Cable Modem +06cd Keyspan + 0101 USA-28 PDA [no firmware] + 0102 USA-28X PDA [no firmware] + 0103 USA-19 PDA [no firmware] + 0104 PDA [prerenum] + 0105 USA-18X PDA [no firmware] + 0106 USA-19W PDA [no firmware] + 0107 USA-19 PDA + 0108 USA-19W PDA + 0109 USA-49W serial adapter [no firmware] + 010a USA-49W serial adapter + 010b USA-19Qi serial adapter [no firmware] + 010c USA-19Qi serial adapter + 010d USA-19Q serial Adapter (no firmware) + 010e USA-19Q serial Adapter + 010f USA-28 PDA + 0110 USA-28Xb PDA + 0111 USA-18 serial Adapter + 0112 USA-18X PDA + 0113 USA-28Xb PDA [no firmware] + 0114 USA-28Xa PDA [no firmware] + 0115 USA-28Xa PDA + 0116 USA-18XA serial Adapter (no firmware) + 0117 USA-18XA serial Adapter + 0118 USA-19QW PDA [no firmware] + 0119 USA-19QW PDA + 011a USA-49Wlc serial adapter [no firmware] + 011b MPR Serial Preloader (MPRQI) + 011c MPR Serial (MPRQI) + 011d MPR Serial Preloader (MPRQ) + 011e MPR Serial (MPRQ) + 0121 USA-19hs serial adapter + 012a USA-49Wlc serial adapter + 0201 UIA-10 Digital Media Remote [Cypress AN2131SC] + 0202 UIA-11 Digital Media Remote +06ce Contec + 8311 COM-1(USB)H +06cf SpheronVR AG + 1010 PanoCam 10 + 1012 PanoCam 12/12X +06d0 LapLink, Inc. + 0622 LapLink Gold USB-USB Bridge [net1080] +06d1 Daewoo Electronics Co., Ltd +06d3 Mitsubishi Electric Corp. + 0284 FX-USB-AW/-BD RS482 Converters + 0380 CP8000D Port + 0381 CP770D Port + 0385 CP900D Port + 0387 CP980D Port + 038b CP3020D Port + 038c CP900DW(ID) Port + 0393 CP9500D/DW Port + 0394 CP9000D/DW Port + 0398 P93D + 03a1 CP9550D/DW Port + 03a5 CP9550DW-S + 03a9 CP-9600DW + 03aa CP3020DA + 03ad CP-9800D/DW + 03ae CP-9800DW-S + 3b10 P95D + 3b21 CP-9810D/DW + 3b30 CP-D70DW / CP-D707DW + 3b31 CP-K60DW-S + 3b36 CP-D80DW + 3b50 CP-W5000DW + 3b60 CP-D90DW +06d4 Cisco Systems +06d5 Toshiba + 4000 Japanese Keyboard +06d6 Aashima Technology B.V. + 0025 Gamepad + 0026 Predator TH 400 Gamepad + 002d Trust PowerC@m 350FT + 002e Trust PowerC@m 350FS + 0030 Trust 710 LCD POWERC@M ZOOM - MSD + 0031 Trust 610/710 LCD POWERC@M ZOOM + 003a Trust PowerC@m 770Z (mass storage mode) + 003b Trust PowerC@m 770Z (webcam mode) + 003c Trust 910z PowerC@m + 003f Trust 735S POWERC@M ZOOM, WDM DSC Bulk Driver + 0050 Trust 738AV LCD PV Digital Camera + 0062 TRUST 782AV LCD P. V. Video Capture + 0066 TRUST Digital PCTV and Movie Editor + 0067 Trust 350FS POWERC@M FLASH + 006b TRUST AUDIO VIDEO EDITOR +06d7 Network Computing Devices (NCD) +06d8 Technical Marketing Research, Inc. +06da Phoenixtec Power Co., Ltd + 0002 UPS + 0003 1300VA UPS +06db Paradyne +06dc Foxlink Image Technology Co., Ltd + 0012 Scan 1200c Scanner + 0014 Prolink Winscan Pro 2448U +06de Heisei Electronics Co., Ltd +06e0 Multi-Tech Systems, Inc. + 0319 MT9234ZBA-USB MultiModem ZBA + f101 MT5634ZBA-USB MultiModemUSB (old firmware) + f103 MT5634MU MultiMobileUSB + f104 MT5634ZBA-USB MultiModemUSB (new firmware) + f107 MT5634ZBA-USB-V92 MultiModemUSB + f120 MT9234ZBA-USB-CDC-ACM-XR MultiModem ZBA CDC-ACM-XR +06e1 ADS Technologies, Inc. + 0008 UBS-10BT Ethernet [klsi] + 0009 UBS-10BT Ethernet + 0833 Mass Storage Device + a155 FM Radio Receiver/Instant FM Music (RDX-155-EF) + a160 Instant Video-To-Go RDX-160 (no firmware) + a161 Instant Video-To-Go RDX-160 + a190 Instand VCD Capture + a191 Instant VideoXpress + a337 Mini DigitalTV + a701 DVD Xpress + a708 saa7114H video input card (Instant VideoMPX) + b337 Mini DigitalTV + b701 DVD Xpress B +06e4 Alcatel Microelectronics +06e6 Tiger Jet Network, Inc. + 0200 Internet Phone + 0201 Internet Phone + 0202 Composite Device + 0203 Internet Phone + 0210 Composite Device + 0211 Internet Phone + 0212 Internet Phone + 031c Internet Phone + 031d Internet Phone + 031e Internet Phone + 3200 Composite Device + 3201 Internet Phone + 3202 Composite Device + 3203 Composite Device + 7200 Composite Device + 7210 Composite Device + 7250 Composite Device + 825c Internet Phone + 831c Internet Phone + 831d Composite Device + 831e Composite Device + b200 Composite Device + b201 Composite Device + b202 Internet Phone + b210 Internet Phone + b211 Composite Device + b212 Composite Device + b250 Composite Device + b251 Internet Phone + b252 Internet Phone + c200 Internet Phone + c201 Internet Phone + c202 Composite Device + c203 Internet Phone + c210 Personal PhoneGateway + c211 Personal PhoneGateway + c212 Personal PhoneGateway + c213 PPG Device + c25c Composite Device + c290 PPG Device + c291 PPG Device + c292 PPG Device + c293 Personal PhoneGateway + c31c Composite Device + c39c Personal PhoneGateway + c39d PPG Device + c39e PPG Device + c39f PPG Device + c700 Internet Phone + c701 Internet Phone + c702 Composite Device + c703 Internet Phone + c710 VoIP Combo Device + c711 VoIP Combo + c712 VoIP Combo Device + c713 VoIP Combo Device + cf00 Composite Device + cf01 Internet Phone + cf02 Internet Phone + cf03 Composite Device + d210 Personal PhoneGateway + d211 PPG Device + d212 PPG Device + d213 Personal PhoneGateway + d700 Composite Device + d701 Composite Device + d702 Internet Phone + d703 Composite Device + d710 VoIP Combo + d711 VoIP Combo Device + d712 VoIP Combo + d713 VoIP Combo + df00 Composite Device + df01 Composite Device + df02 Internet Phone + df03 Internet Phone + f200 Internet Phone + f201 Internet Phone + f202 Composite Device + f203 Composite Device + f210 Internet Phone + f250 Composite Device + f252 Internet Phone + f310 Internet Phone + f350 Composite Device +06ea Sirius Technologies + 0001 NetCom Roadster II 56k + 0002 Roadster II 56k +06eb PC Expert Tech. Co., Ltd +06ef I.A.C. Geometrische Ingenieurs B.V. +06f0 T.N.C Industrial Co., Ltd + de01 DualCam Video Camera + de02 DualCam Still Camera +06f1 Opcode Systems, Inc. + a011 SonicPort + a021 SonicPort Optical +06f2 Emine Technology Co. + 0011 KVM Switch Keyboard +06f6 Wintrend Technology Co., Ltd +06f7 Wailly Technology Ltd + 0003 USB->Din 4 Adaptor +06f8 Guillemot Corp. + 3002 Hercules Blog Webcam + 3004 Hercules Classic Silver + 3005 Hercules Dualpix Exchange + 3007 Hercules Dualpix Chat and Show + 3020 Hercules Webcam EC300 + a300 Dual Analog Leader GamePad + b000 Hercules DJ Console + c000 Hercules Muse Pocket + d002 Hercules DJ Console + e000 HWGUSB2-54 WLAN + e010 HWGUSB2-54-LB + e020 HWGUSB2-54V2-AP + e031 Hercules HWNUm-300 Wireless N mini [Realtek RTL8191SU] + e032 HWGUm-54 [Hercules Wireless G Ultra Mini Key] + e033 Hercules HWNUp-150 802.11n Wireless N Pico [Realtek RTL8188CUS] +06f9 ASYST electronic d.o.o. +06fa HSD S.r.L +06fc Motorola Semiconductor Products Sector +06fd Boston Acoustics + 0101 Audio Device + 0102 Audio Device + 0201 2-piece Audio Device +06fe Gallant Computer, Inc. +0701 Supercomal Wire & Cable SDN. BHD. +0703 Bvtech Industry, Inc. +0705 NKK Corp. +0706 Ariel Corp. +0707 Standard Microsystems Corp. + 0100 2202 Ethernet [klsi] + 0200 2202 Ethernet [pegasus] + 0201 EZ Connect USB Ethernet + ee04 SMCWUSB32 802.11b Wireless LAN Card + ee06 SMC2862W-G v1 EZ Connect 802.11g Adapter [Intersil ISL3886] + ee13 SMC2862W-G v2 EZ Connect 802.11g Adapter [Intersil ISL3887] +0708 Putercom Co., Ltd + 047e USB-1284 BRIDGE +0709 Silicon Systems, Ltd (SSL) +070a Oki Electric Industry Co., Ltd + 4002 Bluetooth Device + 4003 Bluetooth Device +070d Comoss Electronic Co., Ltd +070e Excel Cell Electronic Co., Ltd +0710 Connect Tech, Inc. + 0001 WhiteHeat (fake ID) + 8001 WhiteHeat +0711 Magic Control Technology Corp. + 0100 Hub + 0180 IRXpress Infrared Device + 0181 IRXpress Infrared Device + 0200 BAY-3U1S1P Serial Port + 0210 MCT1S Serial Port + 0230 MCT-232 Serial Port + 0231 PS/2 Mouse Port + 0232 Serial On Port + 0240 PS/2 to USB Converter + 0300 BAY-3U1S1P Parallel Port + 0302 Parallel Port + 0900 SVGA Adapter + 5001 Trigger UV-002BD[Startech USBVGAE] + 5100 Magic Control Technology Corp. (USB2VGA dongle) +0713 Interval Research Corp. +0714 NewMotion, Inc. + 0003 ADB converter +0717 ZNK Corp. +0718 Imation Corp. + 0002 SuperDisk 120MB + 0003 SuperDisk 120MB (Authenticated) + 0060 Flash Drive + 0061 Flash Drive + 0062 Flash Drive + 0063 Swivel Flash Drive + 0064 Flash Drive + 0065 Flash Drive + 0066 Flash Drive + 0067 Flash Drive + 0068 Flash Drive + 0084 Flash Drive Mini + 043c Flash drive 16GB [Nano Pro] + 0582 Revo Flash Drive + 0622 TDK Trans-It 4GB + 0624 TDK Trans-It 16GB + 1120 RDX External dock (redbud) + 4006 8x Slim DVD Multi-Format Recorder External + d000 Disc Stakka CD/DVD Manager +0719 Tremon Enterprises Co., Ltd +071b Domain Technologies, Inc. + 0002 DTI-56362-USB Digital Interface Unit + 0101 Audio4-USB DSP Data Acquisition Unit + 0184 Archos 2 8GB EM184RB + 0201 Audio4-5410 DSP Data Acquisition Unit + 0301 SB-USB JTAG Emulator + 3203 Rockchip Media Player + 32bb Music Mediatouch +071c Xionics Document Technologies, Inc. +071d Eicon Networks Corp. + 1000 Diva 2.01 S/T [PSB2115F] + 1003 Diva ISDN 2.0 + 1005 Diva ISDN 4.0 [HFC-S] + 2000 Teledat Surf +071e Ariston Technologies +0720 Keyence Corp. + 8001 LJ-V7001 +0723 Centillium Communications Corp. + 0002 Palladia 300/400 Adsl Modem +0726 Vanguard International Semiconductor-America +0729 Amitm + 1000 USC-1000 Serial Port +072e Sunix Co., Ltd +072f Advanced Card Systems, Ltd + 0001 AC1030-based SmartCard Reader + 0008 ACR 80 Smart Card Reader + 0100 AET65 + 0101 AET65 + 0102 AET62 + 0103 AET62 + 0901 ACR1281U-C4 (BSI) + 1000 PLDT Drive + 1001 PLDT Drive + 2011 ACR88U + 2100 ACR128U + 2200 ACR122U + 220a ACR1281U-C5 (BSI) + 220c ACR1283 Bootloader + 220f ACR1281U-C2 (qPBOC) + 2211 ACR1261 1S Dual Reader + 2214 ACR1222 1SAM PICC Reader + 2215 ACR1281 2S CL Reader + 221a ACR1251U-A1 + 221b ACR1251U-C + 2224 ACR1281 1S Dual Reader + 222b ACR1222U-C8 + 222c ACR1283L-D2 + 222d [OEM Reader] + 222e ACR123U + 2242 ACR1251 1S Dual Reader + 8002 AET63 BioTRUSTKey + 8003 ACR120 + 8103 ACR120 + 8201 APG8201 + 8900 ACR89U-A1 + 8901 ACR89U-A2 + 8902 ACR89U-A3 + 9000 ACR38 AC1038-based Smart Card Reader + 9006 CryptoMate + 90cc ACR38 SmartCard Reader + 90ce [OEM Reader] + 90cf ACR38 SAM Smart Card Reader + 90d0 PertoSmart EMV - Card Reader + 90d2 ACR83U + 90d8 ACR3801 + 90db CryptoMate64 + b000 ACR3901U + b100 ACR39U + b101 ACR39K + b102 ACR39T + b103 ACR39F + b104 ACR39U-SAM + b106 ACOS5T2 + b200 ACOS5T1 + b301 ACR32-A1 +0731 Susteen, Inc. + 0528 SonyEricsson DCU-11 Cable +0732 Goldfull Electronics & Telecommunications Corp. +0733 ViewQuest Technologies, Inc. + 0101 Digital Video Camera + 0110 VQ110 Video Camera + 0401 CS330 Webcam + 0402 M-318B Webcam + 0430 Intel Pro Share Webcam + 0630 VQ630 Dual Mode Digital Camera(Bulk) + 0631 Hercules Dualpix + 0780 Smart Cam Deluxe(composite) + 1310 Epsilon 1.3/Jenoptik JD C1.3/UMAX AstraPix 470 (mass storage mode) + 1311 Epsilon 1.3/Jenoptik JD C1.3/UMAX AstraPix 470 (PC Cam mode) + 1314 Mercury 2.1MEG Deluxe Classic Cam + 2211 Jenoptik jdc 21 LCD Camera + 2221 Mercury Digital Pro 3.1p + 3261 Concord 3045 spca536a Camera + 3281 Cyberpix S550V +0734 Lasat Communications A/S + 0001 560V Modem + 0002 Lasat 560V Modem + 043a DVS Audio + 043b 3DeMon USB Capture +0735 Asuscom Network + 2100 ISDN Adapter + 2101 ISDN Adapter + 6694 ISDNlink 128K + c541 ISDN TA 280 +0736 Lorom Industrial Co., Ltd +0738 Mad Catz, Inc. + 4507 XBox Device + 4516 XBox Device + 4520 XBox Device + 4526 XBox Device + 4536 XBox Device + 4540 XBox Device + 4556 XBox Device + 4566 XBox Device + 4576 XBox Device + 4586 XBox Device + 4588 XBox Device + 8818 Street Fighter IV Arcade FightStick (PS3) +073a Chaplet Systems, Inc. + 2230 infrared dongle for remote +073b Suncom Technologies +073c Industrial Electronic Engineers, Inc. + 0305 Pole Display (PC305-3415 2 x 20 Line Display) + 0322 Pole Display (PC322-3415 2 x 20 Line Display) + 0324 Pole Display (LB324-USB 4 x 20 Line Display) + 0330 Pole Display (P330-3415 2 x 20 Line Display) + 0424 Pole Display (SP324-4415 4 x 20 Line Display) + 0450 Pole Display (L450-USB Graphic Line Display) + 0505 Pole Display (SPC505-3415 2 x 20 Line Display) + 0522 Pole Display (SPC522-3415 2 x 20 Line Display) + 0624 Pole Display (SP324-3415 4 x 20 Line Display) +073d Eutron S.p.a. + 0005 Crypto Token + 0007 CryptoIdentity CCID + 0025 SmartKey 3 + 0c00 Pocket Reader + 0d00 StarSign Bio Token 3.0 EU +073e NEC, Inc. + 0301 Game Pad +0742 Stollmann + 2008 ISDN TA [HFC-S] + 2009 ISDN TA [HFC-S] + 200a ISDN TA [HFC-S] +0745 Syntech Information Co., Ltd +0746 Onkyo Corp. + 5500 SE-U55 Audio Device +0747 Labway Corp. +0748 Strong Man Enterprise Co., Ltd +0749 EVer Electronics Corp. +074a Ming Fortune Industry Co., Ltd +074b Polestar Tech. Corp. +074c C-C-C Group PLC +074d Micronas GmbH + 3553 Composite USB-Device + 3554 Composite USB-Device + 3556 Composite USB-Device +074e Digital Stream Corp. + 0001 PS/2 Adapter + 0002 PS/2 Adapter +0755 Aureal Semiconductor +0757 Network Technologies, Inc. +0758 Carl Zeiss Microscopy GmbH +075b Sophisticated Circuits, Inc. + 0001 Kick-off! Watchdog +0763 M-Audio + 0115 O2 / KeyRig 25 + 0117 Trigger Finger + 0119 MidAir + 0150 M-Audio Uno + 0160 M-Audio 1x1 + 0192 M-Audio Keystation 88es + 0193 ProKeys 88 + 0194 ProKeys 88sx + 0195 Oxygen 8 v2 + 0196 Oxygen 49 + 0197 Oxygen 61 + 0198 Axiom 25 + 0199 Axiom 49 + 019a Axiom 61 + 019b KeyRig 49 + 019c KeyStudio + 1001 MidiSport 2x2 + 1002 MidiSport 2x2 + 1003 MidiSport 2x2 + 1010 MidiSport 1x1 + 1011 MidiSport 1x1 + 1014 M-Audio Keystation Loader + 1015 M-Audio Keystation + 1020 Midisport 4x4 + 1021 MidiSport 4x4 + 1030 M-Audio MIDISPORT 8x8 + 1031 MidiSport 8x8/s Loader + 1033 MidiSport 8x8/s + 1040 M-Audio MidiSport 2x4 Loader + 1041 M-Audio MidiSport 2x4 + 1110 MidiSport 1x1 + 2001 M Audio Quattro + 2002 M Audio Duo + 2003 M Audio AudioPhile + 2004 M-Audio MobilePre + 2006 M-Audio Transit + 2007 M-Audio Sonica Theater + 2008 M-Audio Ozone + 200d M-Audio OmniStudio + 200f M-Audio MobilePre + 2010 M-Audio Fast Track + 2012 M-Audio Fast Track Pro + 2013 M-Audio JamLab + 2015 M-Audio RunTime DFU + 2016 M-Audio RunTime DFU + 2019 M-Audio Ozone Academic + 201a M-Audio Micro + 201b M-Audio RunTime DFU + 201d M-Audio Producer + 2024 M-Audio Fast Track MKII + 2080 M-Audio Fast Track Ultra + 2081 M-Audio RunTime DFU / Fast Track Ultra 8R + 2803 M-Audio Audiophile DFU + 2804 M-Audio MobilePre DFU + 2806 M-Audio Transit DFU + 2815 M-Audio DFU + 2816 M-Audio DFU + 281b M-Audio DFU + 2880 M-Audio DFU + 2881 M-Audio DFU +0764 Cyber Power System, Inc. + 0005 Cyber Power UPS + 0501 CP1500 AVR UPS + 0601 PR1500LCDRT2U UPS +0765 X-Rite, Inc. + 5001 Huey PRO Colorimeter + 5010 X-Rite Pantone Color Sensor + 5020 i1 Display Pro + 6003 ColorMunki Smile + d094 X-Rite DTP94 [Quato Silver Haze Pro] +0766 Jess-Link Products Co., Ltd + 001b Packard Bell Go + 0204 TopSpeed Cyberlink Remote Control +0767 Tokheim Corp. +0768 Camtel Technology Corp. + 0006 Camtel Technology USB TV Genie Pro FM Model TVB330 + 0023 eHome Infrared Receiver +0769 Surecom Technology Corp. + 11f2 EP-9001-g 802.11g 54M WLAN Adapter + 11f3 RT2570 + 11f7 802.11g 54M WLAN Adapter + 31f3 RT2573 +076a Smart Technology Enablers, Inc. +076b OmniKey AG + 0596 CardMan 2020 + 1021 CardMan 1021 + 1221 CardMan 1221 + 1784 CardMan 6020 + 3021 CardMan 3121 + 3022 CardMan 3021 + 3610 CardMan 3620 + 3621 CardMan 3621 + 3821 CardMan 3821 + 4321 CardMan 4321 + 5121 CardMan 5121 + 5125 CardMan 5125 + 5321 CardMan 5321 + 5340 CardMan 5021 CL + 6622 CardMan 6121 + a011 CCID Smart Card Reader Keyboard + a021 CCID Smart Card Reader + a022 CardMan Smart@Link + c000 CardMan 3x21 CS + c001 CardMan 5121 CS +076c Partner Tech +076d Denso Corp. +076e Kuan Tech Enterprise Co., Ltd +076f Jhen Vei Electronic Co., Ltd +0770 Welch Allyn, Inc - Medical Division +0771 Observator Instruments BV + 4455 OMC45III + ae0f OMC45III +0772 Your data Our Care +0774 AmTRAN Technology Co., Ltd +0775 Longshine Electronics Corp. +0776 Inalways Corp. +0777 Comda Enterprise Corp. +0778 Volex, Inc. +0779 Fairchild Semiconductor +077a Sankyo Seiki Mfg. Co., Ltd +077b Linksys + 08be BEFCMU10 v4 Cable Modem + 2219 WUSB11 V2.6 802.11b Adapter + 2226 USB200M 100baseTX Adapter + 2227 Network Everywhere NWU11B +077c Forward Electronics Co., Ltd + 0005 NEC Keyboard +077d Griffin Technology + 0223 IMic Audio In/Out + 0405 iMate, ADB Adapter + 0410 PowerMate + 041a PowerWave + 04aa SoundKnob + 07af iMic + 1016 AirClick + 627a Radio SHARK +077f Well Excellent & Most Corp. +0780 Sagem Monetel GmbH + 1202 ORGA 900 Smart Card Terminal Virtual Com Port + 1302 ORGA 6000 Smart Card Terminal Virtual Com Port + 1303 ORGA 6000 Smart Card Terminal USB RNDIS + df55 ORGA 900/6000 Smart Card Terminal DFU +0781 SanDisk Corp. + 0001 SDDR-05a ImageMate CompactFlash Reader + 0002 SDDR-31 ImageMate II CompactFlash Reader + 0005 SDDR-05b (CF II) ImageMate CompactFlash Reader + 0100 ImageMate SDDR-12 + 0200 SDDR-09 (SSFDC) ImageMate SmartMedia Reader [eusb] + 0400 SecureMate SD/MMC Reader + 0621 SDDR-86 Imagemate 6-in-1 Reader + 0720 Sansa C200 series in recovery mode + 0729 Sansa E200 series in recovery mode + 0810 SDDR-75 ImageMate CF-SM Reader + 0830 ImageMate CF/MMC/SD Reader + 1234 Cruzer Mini Flash Drive + 5150 SDCZ2 Cruzer Mini Flash Drive (thin) + 5151 Cruzer Micro Flash Drive + 5153 Cruzer Flash Drive + 5204 Cruzer Crossfire + 5402 U3 Cruzer Micro + 5406 Cruzer Micro U3 + 5408 Cruzer Titanium U3 + 540e Cruzer Contour Flash Drive + 5530 Cruzer + 5567 Cruzer Blade + 556b Cruzer Edge + 556c Ultra + 556d Memory Vault + 5571 Cruzer Fit + 5575 Cruzer Glide + 5576 Cruzer Facet + 5577 Cruzer Pop (8GB) + 557d Cruzer Force (64GB) + 5580 SDCZ80 Flash Drive + 5581 Ultra + 5583 Ultra Fit + 5590 Ultra Dual + 5591 Ultra Flair + 5e10 Encrypted + 6100 Ultra II SD Plus 2GB + 7100 Cruzer Mini + 7101 Pen Flash + 7102 Cruzer Mini + 7103 Cruzer Mini + 7104 Cruzer Micro Mini 256MB Flash Drive + 7105 Cruzer Mini + 7106 Cruzer Mini + 7112 Cruzer Micro 128MB Flash Drive + 7113 Cruzer Micro 256MB Flash Drive + 7114 Cruzer Mini + 7115 Cruzer Mini + 7301 Sansa e100 series (mtp) + 7302 Sansa e100 series (msc) + 7400 Sansa M200 series (mtp) + 7401 Sansa M200 series (msc) + 7420 Sansa E200 series (mtp) + 7421 Sansa E200 Series (msc) + 7422 Sansa E200 series v2 (mtp) + 7423 Sansa E200 series v2 (msc) + 7430 Sansa M200 series + 7431 Sansa M200 series V4 (msc) + 7432 Sansa Clip (mtp) + 7433 Sansa Clip (msc) + 7434 Sansa Clip V2 (mtp) + 7435 Sansa Clip V2 (msc) + 7450 Sansa C250 + 7451 Sansa C240 + 7460 Sansa Express + 7480 Sansa Connect + 7481 Sansa Connect (in recovery mode) + 74b0 Sansa View (msc) + 74b1 Sansa View (mtp) + 74c0 Sansa Fuze (mtp) + 74c1 Sansa Fuze (msc) + 74c2 Sansa Fuze V2 (mtp) + 74c3 Sansa Fuze V2 (msc) + 74d0 Sansa Clip+ (mtp) + 74d1 Sansa Clip+ (msc) + 74e5 Sansa Clip Zip + 8181 Pen Flash + 8183 Hi-Speed Mass Storage Device + 8185 SDCZ2 Cruzer Mini Flash Drive (older, thick) + 8888 Card Reader + 8889 SDDR-88 Imagemate 8-in-1 Reader + 8919 Card Reader + 8989 ImageMate 12-in-1 Reader + 9191 ImageMate CF + 9219 Card Reader + 9292 ImageMate CF Reader/Writer + 9393 ImageMate SD-MMC + 9595 ImageMate xD-SM + 9797 ImageMate MS-PRO + 9919 Card Reader + 9999 SDDR-99 5-in-1 Reader + a7c1 Storage device (SD card reader) + a7e8 SDDR-113 MicroMate SDHC Reader + b2b3 SDDR-103 MobileMate SD+ Reader + b4b5 SDDR-89 V4 ImageMate 12-in-1 Reader + b6ba CF SDDR-289 +0782 Trackerball +0783 C3PO + 0003 LTC31 SmartCard Reader + 0006 LTC31v2 + 0009 KBR36 + 0010 LTC32 +0784 Vivitar, Inc. + 0100 Vivicam 2655 + 1310 Vivicam 3305 + 1688 Vivicam 3665 + 1689 Gateway DC-M42/Labtec DC-505/Vivitar Vivicam 3705 + 2620 AOL Photocam Plus + 2888 Polaroid DC700 + 3330 Nytec ND-3200 Camera + 4300 Traveler D1 + 5260 Werlisa Sport PX 100 / JVC GC-A33 Camera + 5300 Pretec dc530 +0785 NTT-ME + 0001 MN128mini-V ISDN TA + 0003 MN128mini-J ISDN TA +0789 Logitec Corp. + 0026 LHD Device + 0033 DVD Multi-plus unit LDR-H443SU2 + 0063 LDR Device + 0064 LDR-R Device + 00b3 DVD Multi-plus unit LDR-H443U2 + 0105 LAN-TX/U1H2 10/100 Ethernet Adapter [pegasus II] + 010c Realtek RTL8187 Wireless 802.11g 54Mbps Network Adapter + 0160 LAN-GTJ/U2A + 0162 LAN-WN22/U2 Wireless LAN Adapter + 0163 LAN-WN12/U2 Wireless LAN Adapter + 0164 LAN-W150/U2M Wireless LAN Adapter + 0166 LAN-W300N/U2 Wireless LAN Adapter + 0168 LAN-W150N/U2 Wireless LAN Adapter + 0170 LAN-W300AN/U2 Wireless LAN Adapter +078b Happ Controls, Inc. + 0010 Driving UGCI + 0020 Flying UGCI + 0030 Fighting UGCI +078c GTCO/CalComp + 0090 Tablet Adapter + 0100 Tablet Adapter + 0200 Tablet Adapter + 0300 Tablet Adapter + 0400 Digitizer (Whiteboard) +078e Brincom, Inc. +0790 Pro-Image Manufacturing Co., Ltd +0791 Copartner Wire and Cable Mfg. Corp. +0792 Axis Communications AB +0793 Wha Yu Industrial Co., Ltd +0794 ABL Electronics Corp. +0795 RealChip, Inc. +0796 Certicom Corp. +0797 Grandtech Semiconductor Corp. + 6801 Flatbed Scanner + 6802 InkJet Color Printer + 8001 SmartCam + 801a Typhoon StyloCam + 801c Meade Binoculars/Camera + 8901 ScanHex SX-35a + 8909 ScanHex SX-35b + 8911 ScanHex SX-35c +0798 Optelec + 0001 Braille Voyager + 0640 BC640 + 0680 BC680 +0799 Altera + 7651 Programming Unit +079b Sagem + 0024 MSO300/MSO301 Fingerprint Sensor + 0026 MSO350/MSO351 Fingerprint Sensor & SmartCard Reader + 0027 USB-Serial Controller + 002f Mobile + 0030 Mobile Communication Device + 0042 Mobile + 0047 CBM/MSO1300 Fingerprint Sensor + 004a XG-760A 802.11bg + 004b Wi-Fi 11g adapter + 0052 MSO1350 Fingerprint Sensor & SmartCard Reader + 0056 Agfa AP1100 Photo Printer + 005d Mobile Mass Storage + 0062 XG-76NA 802.11bg + 0078 Laser Pro Monochrome MFP +079d Alfadata Computer Corp. + 0201 GamePort Adapter +07a1 Digicom S.p.A. + d952 Palladio USB V.92 Modem +07a2 National Technical Systems +07a3 Onnto Corp. +07a4 Be, Inc. +07a6 ADMtek, Inc. + 07c2 AN986A Ethernet + 0986 AN986 Pegasus Ethernet + 8266 Infineon WildCard-USB Wireless LAN Adapter + 8511 ADM8511 Pegasus II Ethernet + 8513 AN8513 Ethernet + 8515 AN8515 Ethernet +07aa Corega K.K. + 0001 Ether USB-T Ethernet [klsi] + 0004 FEther USB-TX Ethernet [pegasus] + 000c WirelessLAN USB-11 + 000d FEther USB-TXS + 0011 Wireless LAN USB-11 mini + 0012 Stick-11 802.11b Adapter + 0017 FEther USB2-TX + 0018 Wireless LAN USB-11 mini 2 + 001a ULUSB-11 Key + 001c CG-WLUSB2GT 802.11g Wireless Adapter [Intersil ISL3880] + 0020 CG-WLUSB2GTST 802.11g Wireless Adapter [Intersil ISL3887] + 002e CG-WLUSB2GPX [Ralink RT2571W] + 002f CG-WLUSB2GNL + 0031 CG-WLUSB2GS 802.11bg [Atheros AR5523] + 003c CG-WLUSB2GNL + 003f CG-WLUSB300AGN + 0041 CG-WLUSB300GNS + 0042 CG-WLUSB300GNM + 0043 CG-WLUSB300N rev A2 [Realtek RTL8192U] + 0047 CG-WLUSBNM + 0051 CG-WLUSB300NM + 7613 Stick-11 V2 802.11b Adapter + 9601 FEther USB-TXC +07ab Freecom Technologies + fc01 IDE bridge + fc02 Cable II USB-2 + fc03 USB2-IDE IDE bridge + fcd6 Freecom HD Classic + fcf6 DataBar + fcf8 Freecom Classic SL Network Drive + fcfe Hard Drive 80GB +07af Microtech + 0004 SCSI-DB25 SCSI Bridge [shuttle] + 0005 SCSI-HD50 SCSI Bridge [shuttle] + 0006 CameraMate SmartMedia and CompactFlash Card Reader [eusb/shuttle] + fc01 Freecom USB-IDE +07b0 Trust Technologies + 0001 ISDN TA + 0002 ISDN TA128 Plus + 0003 ISDN TA128 Deluxe + 0005 ISDN TA128 SE + 0006 ISDN TA 128 [HFC-S] + 0007 ISDN TA [HFC-S] + 0008 ISDN TA +07b1 IMP, Inc. +07b2 Motorola BCS, Inc. + 0100 SURFboard Voice over IP Cable Modem + 0900 SURFboard Gateway + 0950 SURFboard SBG950 Gateway + 1000 SURFboard SBG1000 Gateway + 4100 SurfBoard SB4100 Cable Modem + 4200 SurfBoard SB4200 Cable Modem + 4210 SurfBoard 4210 Cable Modem + 4220 SURFboard SB4220 Cable Modem + 4500 CG4500 Communications Gateway + 450b CG4501 Communications Gateway + 450e CG4500E Communications Gateway + 5100 SurfBoard SB5100 Cable Modem + 5101 SurfBoard SB5101 Cable Modem + 5120 SurfBoard SB5120 Cable Modem (RNDIS) + 5121 Surfboard 5121 Cable Modem + 7030 WU830G 802.11bg Wireless Adapter [Envara WiND512] +07b3 Plustek, Inc. + 0001 OpticPro 1212U Scanner + 0003 Scanner + 0010 OpticPro U12 Scanner + 0011 OpticPro U24 Scanner + 0013 OpticPro UT12 Scanner + 0014 Scanner + 0015 OpticPro U24 Scanner + 0017 OpticPro UT12/16/24 Scanner + 0204 Scanner + 0400 OpticPro 1248U Scanner + 0401 OpticPro 1248U Scanner #2 + 0403 OpticPro U16B Scanner + 0404 Scanner + 0405 A8 Namecard-s Controller + 0406 A8 Namecard-D Controller + 0410 Scanner + 0412 Scanner + 0413 OpticSlim 1200 Scanner + 0601 OpticPro ST24 Scanner + 0800 OpticPro ST48 Scanner + 0900 OpticBook 3600 Scanner + 090c OpticBook 3600 Plus Scanner + 0a06 TVcam VD100 + 0b00 SmartPhoto F50 + 0c00 OpticPro ST64 Scanner + 0c03 OpticPro ST64+ Scanner + 0c04 Optic Film 7200i scanner + 0c0c PL806 Scanner + 0c26 OpticBook 4600 Scanner + 0c2b Mobile Office D428 Scanner + 0e08 OpticBook A300 Scanner + 1300 OpticBook 3800 Scanner + 1301 OpticBook 4800 Scanner +07b4 Olympus Optical Co., Ltd + 0100 Camedia C-2100/C-3000 Ultra Zoom Camera + 0102 Camedia E-10/C-220/C-50 Camera + 0105 Camedia C-310Z/C-700/C-750UZ/C-755/C-765UZ/C-3040/C-4000/C-5050Z/D-560/C-3020Z Zoom Camera + 0109 C-370Z/C-500Z/D-535Z/X-450 + 010a MAUSB-10 xD and SmartMedia Card Reader + 0112 MAUSB-100 xD Card Reader + 0113 Mju 500 / Stylus Digital Camera (PTP) + 0114 C-350Z Camera + 0118 Mju Mini Digital/Mju Digital 500 Camera / Stylus 850 SW + 0125 Tough TG-1 Camera + 0126 VR340/D750 Digital Camera + 0184 P-S100 port + 0202 Foot Switch RS-26 + 0203 Digital Voice Recorder DW-90 + 0206 Digital Voice Recorder DS-330 + 0207 Digital Voice Recorder & Camera W-10 + 0209 Digital Voice Recorder DM-20 + 020b Digital Voice Recorder DS-4000 + 020d Digital Voice Recorder VN-240PC + 0211 Digital Voice Recorder DS-2300 + 0218 Foot Switch RS-28 + 0244 Digital Voice Recorder VN-8500PC + 024f Digital Voice Recorder DS-7000 + 0280 m:robe 100 +07b5 Mega World International, Ltd + 0017 Joystick + 0213 Thrustmaster Firestorm Digital 3 Gamepad + 0312 Gamepad + 9902 GamePad +07b6 Marubun Corp. +07b7 TIME Interconnect, Ltd +07b8 AboCom Systems Inc + 110c XX1 + 1201 IEEE 802.11b Adapter + 200c XX2 + 2573 Wireless LAN Card + 2770 802.11n/b/g Mini Wireless LAN USB2.0 Adapter + 2870 802.11n/b/g Wireless LAN USB2.0 Adapter + 3070 802.11n/b/g Mini Wireless LAN USB2.0 Adapter + 3071 802.11n/b/g Mini Wireless LAN USB2.0 Adapter + 3072 802.11n/b/g Mini Wireless LAN USB2.0 Adapter + 4000 DU-E10 Ethernet [klsi] + 4002 DU-E100 Ethernet [pegasus] + 4003 1/10/100 Ethernet Adapter + 4004 XX4 + 4007 XX5 + 400b XX6 + 400c XX7 + 401a RTL8151 + 4102 USB 1.1 10/100M Fast Ethernet Adapter + 4104 XX9 + 420a UF200 Ethernet + 5301 GW-US54ZGL 802.11bg + 6001 WUG2690 802.11bg Wireless Module [ZyDAS ZD1211+AL2230] + 8188 AboCom Systems Inc [WN2001 Prolink Wireless-N Nano Adapter] + a001 WUG2200 802.11g Wireless Adapter [Envara WiND512] + abc1 DU-E10 Ethernet [pegasus] + b000 BWU613 + b02a AboCom Bluetooth Device + b02b Bluetooth dongle + b02c BCM92045DG-Flash with trace filter + b02d BCM92045DG-Flash with trace filter + b02e BCM92045DG-Flash with trace filter + b030 BCM92045DG-Flash with trace filter + b031 BCM92045DG-Flash with trace filter + b032 BCM92045DG-Flash with trace filter + b033 BCM92045DG-Flash with trace filter + b21a WUG2400 802.11g Wireless Adapter [Texas Instruments TNETW1450] + b21b HWU54DM + b21c RT2573 + b21d RT2573 + b21e RT2573 + b21f WUG2700 + d011 MP3 Player + e001 Mass Storage Device + e002 Mass Storage Device + e003 Mass Storage Device + e004 Mass Storage Device + e005 Mass Storage Device + e006 Mass Storage Device + e007 Mass Storage Device + e008 Mass Storage Device + e009 Mass Storage Device + e00a Mass Storage Device + e4f0 Card Reader Driver + f101 DSB-560 Modem [atlas] +07bc Canon Computer Systems, Inc. +07bd Webgear, Inc. +07be Veridicom +07c0 Code Mercenaries Hard- und Software GmbH + 1113 JoyWarrior24F8 + 1116 JoyWarrior24F14 + 1121 The Claw + 1500 IO-Warrior 40 + 1501 IO-Warrior 24 + 1502 IO-Warrior 48 + 1503 IO-Warrior 28 + 1511 IO-Warrior 24 Power Vampire + 1512 IO-Warrior 24 Power Vampire +07c1 Keisokugiken + 0068 HKS-0200 USBDAQ +07c4 Datafab Systems, Inc. + 0102 USB to LS120 + 0103 USB to IDE + 1234 USB to ATAPI + a000 CompactFlash Card Reader + a001 CompactFlash & SmartMedia Card Reader [eusb] + a002 Disk Drive + a003 Datafab-based Reader + a004 USB to MMC Class Drive + a005 CompactFlash & SmartMedia Card Reader + a006 SmartMedia Card Reader + a007 Memory Stick Class Drive + a103 MDSM-B reader + a107 USB to Memory Stick (LC1) Drive + a109 LC1 CompactFlash & SmartMedia Card Reader + a10b USB to CF+MS(LC1) + a200 DF-UT-06 Hama MMC/SD Reader + a400 CompactFlash & Microdrive Reader + a600 Card Reader + a604 12-in-1 Card Reader + ad01 Mass Storage Device + ae01 Mass Storage Device + af01 Mass Storage Device + b000 USB to CF(LC1) + b001 USB to CF+PCMCIA + b004 MMC/SD Reader + b006 USB to PCMCIA + b00a USB to CF+SD Drive(LC1) + b00b USB to Memory Stick(LC1) + c010 Kingston FCR-HS2/ATA Card Reader +07c5 APG Cash Drawer + 0500 Cash Drawer +07c6 ShareWave, Inc. + 0002 Bodega Wireless Access Point + 0003 Bodega Wireless Network Adapter +07c7 Powertech Industrial Co., Ltd +07c8 B.U.G., Inc. + 0202 MN128-SOHO PAL +07c9 Allied Telesyn International + b100 AT-USB100 +07ca AVerMedia Technologies, Inc. + 0002 AVerTV PVR USB/EZMaker Pro Device + 0026 AVerTV + 0337 A867 DVB-T dongle + 0837 H837 Hybrid ATSC/QAM + 1228 MPEG-2 Capture Device (M038) + 1830 AVerTV Volar Video Capture (H830) + 3835 AVerTV Volar Green HD (A835B) + 850a AverTV Volar Black HD (A850) + 850b AverTV Red HD+ (A850T) + a309 AVerTV DVB-T (A309) + a801 AVerTV DVB-T (A800) + a815 AVerTV DVB-T Volar X (A815) + a827 AVerTV Hybrid Volar HX (A827) + a867 AVerTV DVB-T (A867) + b300 A300 DVB-T TV receiver + b800 MR800 FM Radio + e880 MPEG-2 Capture Device (E880) + e882 MPEG-2 Capture Device (E882) +07cb Kingmax Technology, Inc. +07cc Carry Computer Eng., Co., Ltd + 0000 CF Card Reader + 0001 Reader (UICSE) + 0002 Reader (UIS) + 0003 SM Card Reader + 0004 SM/CF/PCMCIA Card Reader + 0005 Reader (UISA2SE) + 0006 SM/CF/PCMCIA Card Reader + 0007 Reader (UISA6SE) + 000c SM/CF Card Reader + 000d SM/CF Card Reader + 000e Reader (UISDA) + 000f Reader (UICLIK) + 0010 Reader (UISMA) + 0012 Reader (UISC6SE-FLASH) + 0014 Litronic Fortezza Reader + 0030 Mass Storage (UISDMC12S) + 0040 Mass Storage (UISDMC13S) + 0100 Reader (UID) + 0101 Reader (UIM) + 0102 Reader (UISDMA) + 0103 Reader (UISDMC) + 0104 Reader (UISDM) + 0200 6-in-1 Card Reader + 0201 Mass Storage (UISDMC1S & UISDMC3S) + 0202 Mass Storage (UISDMC5S) + 0203 Mass Storage (UISMC5S) + 0204 Mass Storage (UIM4/5S & UIM7S) + 0205 Mass Storage (UIS4/5S & UIS7S) + 0206 Mass Storage (UISDMC10S & UISDMC11S) + 0207 Mass Storage (UPIDMA) + 0208 Mass Storage (UCFC II) + 0210 Mass Storage (UPIXXA) + 0213 Mass Storage (UPIDA) + 0214 Mass Storage (UPIMA) + 0215 Mass Storage (UPISA) + 0217 Mass Storage (UPISDMA) + 0223 Mass Storage (UCIDA) + 0224 Mass Storage (UCIMA) + 0225 Mass Storage (UIS7S) + 0227 Mass Storage (UCIDMA) + 0234 Mass Storage (UIM7S) + 0235 Mass Storage (UIS4S-S) + 0237 Velper (UISDMC4S) + 0300 6-in-1 Card Reader + 0301 6-in-1 Card Reader + 0303 Mass Storage (UID10W) + 0304 Mass Storage (UIM10W) + 0305 Mass Storage (UIS10W) + 0308 Mass Storage (UIC10W) + 0309 Mass Storage (UISC3W) + 0310 Mass Storage (UISDMA2W) + 0311 Mass Storage (UISDMC14W) + 0320 Mass Storage (UISDMC4W) + 0321 Mass Storage (UISDMC37W) + 0330 WINTERREADER Reader + 0350 9-in-1 Card Reader + 0500 Mass Storage + 0501 Mass Storage +07cd Elektor + 0001 USBuart Serial Port +07cf Casio Computer Co., Ltd + 1001 QV-8000SX/5700/3000EX Digicam; Exilim EX-M20 + 1003 Exilim EX-S500 + 1004 Exilim EX-Z120 + 1011 USB-CASIO PC CAMERA + 1116 EXILIM EX-Z19 + 1125 Exilim EX-H10 Digital Camera (mass storage mode) + 1133 Exilim EX-Z350 Digital Camera (mass storage mode) + 1225 Exilim EX-H10 Digital Camera (PictBridge mode) + 1233 Exilim EX-Z350 Digital Camera (PictBridge mode) + 2002 E-125 Cassiopeia Pocket PC + 3801 WMP-1 MP3-Watch + 4001 Label Printer KL-P1000 + 4007 CW50 Device + 4104 Cw75 Device + 4107 CW-L300 Device + 4500 LV-20 Digital Camera + 6101 fx-9750gII + 6102 fx-CP400 + 6801 PL-40R + 6802 MIDI Keyboard +07d0 Dazzle + 0001 Digital Video Creator I + 0002 Global Village VideoFX Grabber + 0003 Fusion Model DVC-50 Rev 1 (NTSC) + 0004 DVC-800 (PAL) Grabber + 0005 Fusion Video and Audio Ports + 0006 DVC 150 Loader Device + 0007 DVC 150 + 0327 Fusion Digital Media Reader + 1001 DM-FLEX DFU Adapter + 1002 DMHS2 DFU Adapter + 1102 CF Reader/Writer + 1103 SD Reader/Writer + 1104 SM Reader/Writer + 1105 MS Reader/Writer + 1106 xD/SM Reader/Writer + 1202 MultiSlot Reader/Writer + 2000 FX2 DFU Adapter + 2001 eUSB CompactFlash Reader + 4100 Kingsun SF-620 Infrared Adapter + 4101 Connectivity Cable (CA-42 clone) + 4959 Kingsun KS-959 Infrared Adapter +07d1 D-Link System + 13ec VvBus for Helium 2xx + 13ed VvBus for Helium 2xx + 13f1 DSL-302G Modem + 13f2 DSL-502G Router + 3300 DWA-130 802.11n Wireless N Adapter(rev.E) [Realtek RTL8191SU] + 3302 DWA-130 802.11n Wireless N Adapter(rev.C2) [Realtek RTL8191SU] + 3303 DWA-131 802.11n Wireless N Nano Adapter(rev.A1) [Realtek RTL8192SU] + 3304 FR-300USB 802.11bgn Wireless Adapter + 3a07 WUA-2340 RangeBooster G Adapter(rev.A) [Atheros AR5523] + 3a08 WUA-2340 RangeBooster G Adapter(rev.A) (no firmware) [Atheros AR5523] + 3a09 DWA-160 802.11abgn Xtreme N Dual Band Adapter(rev.A2) [Atheros AR9170+AR9104] + 3a0d DWA-120 802.11g Wireless 108G Adapter [Atheros AR5523] + 3a0f DWA-130 802.11n Wireless N Adapter(rev.D) [Atheros AR9170+AR9102] + 3a10 DWA-126 802.11n Wireless Adapter [Atheros AR9271] + 3b01 AirPlus G DWL-G122 Wireless Adapter(rev.D) [Marvell 88W8338+88W8010] + 3b10 DWA-142 RangeBooster N Adapter [Marvell 88W8362+88W8060] + 3b11 DWA-130 802.11n Wireless N Adapter(rev.A1) [Marvell 88W8362+88W8060] + 3c03 AirPlus G DWL-G122 Wireless Adapter(rev.C1) [Ralink RT2571W] + 3c04 WUA-1340 + 3c05 EH103 Wireless G Adapter + 3c06 DWA-111 802.11bg Wireless Adapter [Ralink RT2571W] + 3c07 DWA-110 Wireless G Adapter(rev.A1) [Ralink RT2571W] + 3c09 DWA-140 RangeBooster N Adapter(rev.B1) [Ralink RT2870] + 3c0a DWA-140 RangeBooster N Adapter(rev.B2) [Ralink RT3072] + 3c0b DWA-110 Wireless G Adapter(rev.B) [Ralink RT2870] + 3c0d DWA-125 Wireless N 150 Adapter(rev.A1) [Ralink RT3070] + 3c0e WUA-2340 RangeBooster G Adapter(rev.B) [Ralink RT2070] + 3c0f AirPlus G DWL-G122 Wireless Adapter(rev.E1) [Ralink RT2070] + 3c10 DWA-160 802.11abgn Xtreme N Dual Band Adapter(rev.A1) [Atheros AR9170+AR9104] + 3c11 DWA-160 Xtreme N Dual Band USB Adapter(rev.B) [Ralink RT2870] + 3c13 DWA-130 802.11n Wireless N Adapter(rev.B) [Ralink RT2870] + 3c15 DWA-140 RangeBooster N Adapter(rev.B3) [Ralink RT2870] + 3c16 DWA-125 Wireless N 150 Adapter(rev.A2) [Ralink RT3070] + 3e02 DWM-156 3.75G HSUPA Adapter + 5100 Remote NDIS Device + a800 DWM-152 3.75G HSUPA Adapter + f101 DBT-122 Bluetooth + fc01 DBT-120 Bluetooth Adapter +07d2 Aptio Products, Inc. +07d3 Cyberdata Corp. +07d5 Radiant Systems +07d7 GCC Technologies, Inc. +07da Arasan Chip Systems +07de Diamond Multimedia + 2820 VC500 Video Capture Dongle +07df David Electronics Co., Ltd +07e0 NCP engineering GmbH + 4742 VPN GovNet Box +07e1 Ambient Technologies, Inc. + 5201 V.90 Modem +07e2 Elmeg GmbH & Co., Ltd +07e3 Planex Communications, Inc. +07e4 Movado Enterprise Co., Ltd + 0967 SCard R/W CSR-145 + 0968 SCard R/W CSR-145 +07e5 QPS, Inc. + 05c2 IDE-to-USB2.0 PCA + 5c01 Que! CDRW +07e6 Allied Cable Corp. +07e7 Mirvo Toys, Inc. +07e8 Labsystems +07ea Iwatsu Electric Co., Ltd +07eb Double-H Technology Co., Ltd +07ec Taiyo Electric Wire & Cable Co., Ltd +07ee Torex Retail (formerly Logware) + 0002 Cash Drawer I/F +07ef STSN + 0001 Internet Access Device +07f2 Microcomputer Applications, Inc. + 0001 KEYLOK II +07f6 Circuit Assembly Corp. +07f7 Century Corp. + 0005 ScanLogic/Century Corporation uATA + 011e Century USB Disk Enclosure +07f9 Dotop Technology, Inc. +07fa DrayTek Corp. + 0778 miniVigor 128 ISDN TA + 0846 ISDN TA [HFC-S] + 0847 ISDN TA [HFC-S] + 1012 BeWAN ADSL USB ST (grey) + 1196 BWIFI-USB54AR 802.11bg + a904 BeWAN ADSL + a905 BeWAN ADSL ST +07fc Thomann + 1113 SWISSONIC EasyKeys61 Midikeyboard +07fd Mark of the Unicorn + 0000 FastLane MIDI Interface + 0001 MIDI Interface + 0002 MOTU Audio for 64 bit +07ff Unknown + 00ff Portable Hard Drive +0801 MagTek + 0001 Mini Swipe Reader (Keyboard Emulation) + 0002 Mini Swipe Reader + 0003 Magstripe Insert Reader +0802 Mako Technologies, LLC +0803 Zoom Telephonics, Inc. + 1300 V92 Faxmodem + 3095 V.92 56K Mini External Modem Model 3095 + 4310 4410a Wireless-G Adapter [Intersil ISL3887] + 4410 4410b Wireless-G Adapter [ZyDAS ZD1211B] + 5241 Cable Modem + 5551 DSL Modem + 9700 2986L FaxModem + 9800 Cable Modem + a312 Wireless-G +0809 Genicom Technology, Inc. +080a Evermuch Technology Co., Ltd +080b Cross Match Technologies + 0002 Fingerprint Scanner (After ReNumeration) + 0010 300LC Series Fingerprint Scanner (Before ReNumeration) +080c Datalogic S.p.A. + 0300 Gryphon D120 Barcode Scanner + 0400 Gryphon D120 Barcode Scanner + 0500 Gryphon D120 Barcode Scanner + 0600 Gryphon M100 Barcode Scanner +080d Teco Image Systems Co., Ltd + 0102 Hercules Scan@home 48 + 0104 3.2Slim + 0110 UMAX AstraSlim 1200 Scanner +0810 Personal Communication Systems, Inc. + 0001 Dual PSX Adaptor + 0002 Dual PCS Adaptor + 0003 PlayStation Gamepad + e001 Twin controller + e501 SNES Gamepad +0813 Mattel, Inc. + 0001 Intel Play QX3 Microscope + 0002 Dual Mode Camera Plus +0819 eLicenser + 0101 License Management and Copy Protection +081a MG Logic + 1000 Duo Pen Tablet +081b Indigita Corp. + 0600 Storage Adapter + 0601 Storage Adapter +081c Mipsys +081e AlphaSmart, Inc. + df00 Handheld +0822 Reudo Corp. + 2001 IRXpress Infrared Device +0825 GC Protronics +0826 Data Transit +0827 BroadLogic, Inc. +0828 Sato Corp. +0829 DirecTV Broadband, Inc. (Telocity) +082d Handspring + 0100 Visor + 0200 Treo + 0300 Treo 600 + 0400 Handheld + 0500 Handheld + 0600 Handheld +0830 Palm, Inc. + 0001 m500 + 0002 m505 + 0003 m515 + 0004 Handheld + 0005 Handheld + 0006 Handheld + 0010 Handheld + 0011 Handheld + 0012 Handheld + 0013 Handheld + 0014 Handheld + 0020 i705 + 0021 Handheld + 0022 Handheld + 0023 Handheld + 0024 Handheld + 0030 Handheld + 0031 Tungsten W + 0032 Handheld + 0033 Handheld + 0034 Handheld + 0040 m125 + 0041 Handheld + 0042 Handheld + 0043 Handheld + 0044 Handheld + 0050 m130 + 0051 Handheld + 0052 Handheld + 0053 Handheld + 0054 Handheld + 0060 Tungsten C/E/T/T2/T3 / Zire 71 + 0061 Lifedrive / Treo 650/680 / Tunsten E2/T5/TX / Centro / Zire 21/31/72 / Z22 + 0062 Handheld + 0063 Handheld + 0064 Handheld + 0070 Zire + 0071 Handheld + 0072 Handheld + 0080 Serial Adapter [for Palm III] + 0081 Handheld + 0082 Handheld + 00a0 Treo 800w + 0101 Pre +0832 Kouwell Electronics Corp. + 5850 Cable +0833 Sourcenext Corp. + 012e KeikaiDenwa 8 with charger + 039f KeikaiDenwa 8 +0835 Action Star Enterprise Co., Ltd +0836 TrekStor + 2836 i.Beat mood +0839 Samsung Techwin Co., Ltd + 0005 Digimax Camera + 0008 Digimax 230 Camera + 0009 Digimax 340 + 000a Digimax 410 + 000e Digimax 360 + 0010 Digimax 300 + 1003 Digimax 210SE + 1005 Digimax 220 + 1009 Digimax V4 + 1012 6500 Document Camera + 1058 S730 Camera + 1064 Digimax D830 Camera + 1542 Digimax 50 Duo + 3000 Digimax 35 MP3 +083a Accton Technology Corp. + 1046 10/100 Ethernet [pegasus] + 1060 HomeLine Adapter + 1f4d SMC8013WG Broadband Remote NDIS Device + 3046 10/100 Series Adapter + 3060 1/10/100 Adapter + 3501 2664W + 3502 WN3501D Wireless Adapter + 3503 T-Sinus 111 Wireless Adapter + 4501 T-Sinus 154data + 4502 Siemens S30853-S1016-R107 802.11g Wireless Adapter [Intersil ISL3886] + 4505 SMCWUSB-G 802.11bg + 4507 SMCWUSBT-G2 802.11g Wireless Adapter [Atheros AR5523] + 4521 Siemens S30863-S1016-R107-2 802.11g Wireless Adapter [Intersil ISL3887] + 4531 T-Com Sinus 154 data II [Intersil ISL3887] + 5046 SpeedStream 10/100 Ethernet [pegasus] + 5501 Wireless Adapter 11g + 6500 Cable Modem + 6618 802.11n Wireless Adapter + 7511 Arcadyan 802.11N Wireless Adapter + 7512 Arcadyan 802.11N Wireless Adapter + 7522 Arcadyan 802.11N Wireless Adapter + 8522 Arcadyan 802.11N Wireless Adapter + 8541 WN4501F 802.11g Wireless Adapter [Intersil ISL3887] + a512 Arcadyan 802.11N Wireless Adapter + a618 SMCWUSBS-N EZ Connect N Draft 11n Wireless Adapter [Ralink RT2870] + a701 SMCWUSBS-N3 EZ Connect N Wireless Adapter [Ralink RT3070] + b004 CPWUE001 USB/Ethernet Adapter + b522 SMCWUSBS-N2 EZ Connect N Wireless Adapter [Ralink RT2870] + bb01 BlueExpert Bluetooth Device + c003 802.11b Wireless Adapter + c501 Zoom 4410 Wireless-G [Intersil ISL3887] + c561 802.11a/g Wireless Adapter + d522 Speedport W 102 Stick IEEE 802.11n USB 2.0 Adapter + e501 ZD1211B + e503 Arcadyan WN4501 802.11b/g + e506 WUS-201 802.11bg + f501 802.11g Wireless Adapter + f502 802.11g Wireless Adapter + f522 Arcadyan WN7512 802.11n +083f Global Village + b100 TelePort V.90 Fax/Modem +0840 Argosy Research, Inc. + 0060 Storage Adapter Bridge Module +0841 Rioport.com, Inc. + 0001 Rio 500 +0844 Welland Industrial Co., Ltd +0846 NetGear, Inc. + 1001 EA101 10 Mbps 10BASE-T Ethernet [Kawasaki LSI KL5KLUSB101B] + 1002 Ethernet + 1020 FA101 Fast Ethernet USB 1.1 + 1040 FA120 Fast Ethernet USB 2.0 [Asix AX88172 / AX8817x] + 1100 Managed Switch M4100 series, M5300 series, M7100 series + 4110 MA111(v1) 802.11b Wireless [Intersil Prism 3.0] + 4200 WG121(v1) 54 Mbps Wireless [Intersil ISL3886] + 4210 WG121(v2) 54 Mbps Wireless [Intersil ISL3886] + 4220 WG111(v1) 54 Mbps Wireless [Intersil ISL3886] + 4230 MA111(v2) 802.11b Wireless [SIS SIS 162] + 4240 WG111(v1) rev 2 54 Mbps Wireless [Intersil ISL3887] + 4260 WG111v3 54 Mbps Wireless [realtek RTL8187B] + 4300 WG111U Double 108 Mbps Wireless [Atheros AR5004X / AR5005UX] + 4301 WG111U (no firmware) Double 108 Mbps Wireless [Atheros AR5004X / AR5005UX] + 5f00 WPN111 802.11g Wireless Adapter [Atheros AR5523] + 6a00 WG111v2 54 Mbps Wireless [RealTek RTL8187L] + 7100 WN121T RangeMax Next Wireless-N [Marvell TopDog] + 9000 WN111(v1) RangeMax Next Wireless [Marvell 88W8362+88W8060] + 9001 WN111(v2) RangeMax Next Wireless [Atheros AR9170+AR9101] + 9010 WNDA3100v1 802.11abgn [Atheros AR9170+AR9104] + 9011 WNDA3100v2 802.11abgn [Broadcom BCM4323] + 9012 WNDA4100 802.11abgn 3x3:3 [Ralink RT3573] + 9014 WNDA3100v3 802.11abgn 2x2:2 [MediaTek MT7632U] + 9018 WNDA3200 802.11abgn Wireless Adapter [Atheros AR7010+AR9280] + 9020 WNA3100(v1) Wireless-N 300 [Broadcom BCM43231] + 9021 WNA3100M(v1) Wireless-N 300 [Realtek RTL8192CU] + 9030 WNA1100 Wireless-N 150 [Atheros AR9271] + 9040 WNA1000 Wireless-N 150 [Atheros AR9170+AR9101] + 9041 WNA1000M 802.11bgn [Realtek RTL8188CUS] + 9042 On Networks N150MA 802.11bgn [Realtek RTL8188CUS] + 9043 WNA1000Mv2 802.11bgn [Realtek RTL8188CUS?] + 9050 A6200 802.11a/b/g/n/ac Wireless Adapter [Broadcom BCM43526] + 9051 A6200v2 802.11a/b/g/n/ac (2x2) Wireless Adapter [Realtek RTL8812AU] + 9052 A6100 AC600 DB Wireless Adapter [Realtek RTL8811AU] + a001 PA101 10 Mbps HPNA Home Phoneline RJ-1 + f001 On Networks N300MA 802.11bgn [Realtek RTL8192CU] +084d Minton Optic Industry Co., Inc. + 0001 Jenoptik JD800i + 0003 S-Cam F5/D-Link DSC-350 Digital Camera + 0011 Argus DC3500 Digital Camera + 0014 Praktica DC 32 + 0019 Praktica DPix3000 + 0025 Praktica DC 60 + 1001 ScanHex SX-35d +084e KB Gear + 0001 JamCam Camera + 1001 Jam Studio Tablet + 1002 Pablo Tablet +084f Empeg + 0001 Empeg-Car Mark I/II Player +0850 Fast Point Technologies, Inc. +0851 Macronix International Co., Ltd + 1542 SiPix Blink + 1543 Maxell WS30 Slim Digital Camera, or Pandigital PI8004W01 digital photo frame + a168 MXIC +0852 CSEM +0853 Topre Corporation + 0100 HHKB Professional +0854 ActiveWire, Inc. + 0100 I/O Board + 0101 I/O Board, rev1 +0856 B&B Electronics + ac01 uLinks USOTL4 RS422/485 Adapter +0858 Hitachi Maxell, Ltd + 3102 Bluetooth Device + ffff Maxell module with BlueCore in DFU mode +0859 Minolta Systems Laboratory, Inc. +085a Xircom + 0001 Portstation Dual Serial Port + 0003 Portstation Paraller Port + 0008 Ethernet + 0009 Ethernet + 000b Portstation Dual PS/2 Port + 0021 1 port to Serial Converter + 0022 Parallel Port + 0023 2 port to Serial Converter + 0024 Parallel Port + 0026 PortGear SCSI + 0027 1 port to Serial Converter + 0028 PortGear to SCSI Converter + 0032 PortStation SCSI Module + 003c Bluetooth Adapter + 0299 Colorvision, Inc. Monitor Spyder + 8021 1 port to Serial + 8023 2 port to Serial + 8027 PGSDB9 Serial Port +085c ColorVision, Inc. + 0100 Spyder 1 + 0200 Spyder 2 + 0300 Spyder 3 + 0400 Spyder 4 +0862 Teletrol Systems, Inc. +0863 Filanet Corp. +0864 NetGear, Inc. + 4100 MA101 802.11b Adapter + 4102 MA101 802.11b Adapter +0867 Data Translation, Inc. + 9812 ECON Data acquisition unit + 9816 DT9816 ECON data acquisition module + 9836 DT9836 data acquisition card +086a Emagic Soft- und Hardware GmbH + 0001 Unitor8 + 0002 AMT8 + 0003 MT4 +086c DeTeWe - Deutsche Telephonwerke AG & Co. + 1001 Eumex 504PC ISDN TA + 1002 Eumex 504PC (FlashLoad) + 1003 TA33 ISDN TA + 1004 TA33 (FlashLoad) + 1005 Eumex 604PC HomeNet + 1006 Eumex 604PC HomeNet (FlashLoad) + 1007 Eumex 704PC DSL + 1008 Eumex 704PC DSL (FlashLoad) + 1009 Eumex 724PC DSL + 100a Eumex 724PC DSL (FlashLoad) + 100b OpenCom 30 + 100c OpenCom 30 (FlashLoad) + 100d BeeTel Home 100 + 100e BeeTel Home 100 (FlashLoad) + 1011 USB2DECT + 1012 USB2DECT (FlashLoad) + 1013 Eumex 704PC LAN + 1014 Eumex 704PC LAN (FlashLoad) + 1019 Eumex 504 SE + 101a Eumex 504 SE (Flash-Mode) + 1021 OpenCom 40 + 1022 OpenCom 40 (FlashLoad) + 1023 OpenCom 45 + 1024 OpenCom 45 (FlashLoad) + 1025 Sinus 61 data + 1029 dect BOX + 102c Eumex 604PC HomeNet [FlashLoad] + 1030 Eumex 704PC DSL [FlashLoad] + 1032 OpenCom 40 [FlashLoad] + 1033 OpenCom 30 plus + 1034 OpenCom 30 plus (FlashLoad) + 1041 Eumex 220PC + 1042 Eumex 220PC (FlashMode) + 1055 Eumex 220 Version 2 ISDN TA + 1056 Eumex 220 Version 2 ISDN TA (Flash-Mode) + 2000 OpenCom 1000 +086e System TALKS, Inc. + 1920 SGC-X2UL +086f MEC IMEX, Inc. +0870 Metricom + 0001 Ricochet GS +0871 SanDisk, Inc. + 0001 SDDR-01 Compact Flash Reader + 0002 SDDR-31 Compact Flash Reader + 0005 SDDR-05 Compact Flash Reader +0873 Xpeed, Inc. +0874 A-Tec Subsystem, Inc. +0879 Comtrol Corp. +087c Adesso/Kbtek America, Inc. +087d Jaton Corp. + 5704 Ethernet +087e Fujitsu Computer Products of America +087f QualCore Logic Inc. +0880 APT Technologies, Inc. +0883 Recording Industry Association of America (RIAA) +0885 Boca Research, Inc. +0886 XAC Automation Corp. + 0630 Intel PC Camera CS630 +0887 Hannstar Electronics Corp. +088a TechTools + 1002 DigiView DV3100 +088b MassWorks, Inc. + 4944 MassWorks ID-75 TouchScreen +088c Swecoin AB + 2030 Ticket Printer TTP 2030 +088e iLok + 5036 Portable secure storage for software licenses +0892 DioGraphy, Inc. + 0101 Smartdio Reader/Writer +0894 TSI Incorporated + 0010 Remote NDIS Network Device +0897 Lauterbach + 0001 ICE In-Circuit Emulator + 0002 Power Debug/Power Debug II + 0004 PowerDebug + 0005 PowerDebug PRO +089c United Technologies Research Cntr. +089d Icron Technologies Corp. +089e NST Co., Ltd +089f Primex Aerospace Co. +08a5 e9, Inc. +08a6 Toshiba TEC + 0051 B-SV4 +08a8 Andrea Electronics +08a9 CWAV Inc. + 0005 USBee ZX + 0009 USBee SX + 0012 USBee AX-Standard + 0013 USBee AX-Plus + 0014 USBee AX-Pro + 0015 USBee DX +08ac Macraigor Systems LLC + 2024 usbWiggler +08ae Macally (Mace Group, Inc.) +08b0 Metrohm + 0006 814 Sample Processor + 0015 857 Titrando + 001a 852 Titrando +08b4 Sorenson Vision, Inc. +08b7 NATSU + 0001 Playstation adapter +08b8 J. Gordon Electronic Design, Inc. + 01f4 USBSIMM1 +08b9 RadioShack Corp. (Tandy) +08bb Texas Instruments + 2702 PCM2702 16-bit stereo audio DAC + 2704 PCM2704 16-bit stereo audio DAC + 2705 PCM2705 stereo audio DAC + 2706 PCM2706 stereo audio DAC + 2707 PCM2707 stereo audio DAC + 27c4 PCM2704C stereo audio DAC + 27c5 PCM2705C stereo audio DAC + 27c6 PCM2706C stereo audio DAC + 27c7 PCM2707C stereo audio DAC + 2900 PCM2900 Audio Codec + 2901 PCM2901 Audio Codec + 2902 PCM2902 Audio Codec + 2904 PCM2904 Audio Codec + 2910 PCM2912 Audio Codec + 2912 PCM2912A Audio Codec + 29b0 PCM2900B Audio CODEC + 29b2 PCM2902 Audio CODEC + 29b3 PCM2903B Audio CODEC + 29b6 PCM2906B Audio CODEC + 29c0 PCM2900C Audio CODEC + 29c2 PCM2902C Audio CODEC + 29c3 PCM2903C Audio CODEC + 29c6 PCM2906C Audio CODEC +08bd Citizen Watch Co., Ltd + 0208 CLP-521 Label Printer + 1100 X1-USB Floppy +08c3 Precise Biometrics + 0001 100 SC + 0002 100 A + 0003 100 SC BioKeyboard + 0006 100 A BioKeyboard + 0100 100 MC ISP + 0101 100 MC FingerPrint and SmartCard Reader + 0300 100 AX + 0400 100 SC + 0401 150 MC + 0402 200 MC FingerPrint and SmartCard Reader + 0404 100 SC Upgrade + 0405 150 MC Upgrade + 0406 100 MC Upgrade +08c4 Proxim, Inc. + 0100 Skyline 802.11b Wireless Adapter + 02f2 Farallon Home Phoneline Adapter +08c7 Key Nice Enterprise Co., Ltd +08c8 2Wire, Inc. +08c9 Nippon Telegraph and Telephone Corp. +08ca Aiptek International, Inc. + 0001 Tablet + 0010 Tablet + 0020 APT-6000U Tablet + 0021 APT-2 Tablet + 0022 Tablet + 0023 Tablet + 0024 Tablet + 0100 Pen Drive + 0102 DualCam + 0103 Pocket DV Digital Camera + 0104 Pocket DVII + 0105 Mega DV(Disk) + 0106 Pocket DV3100+ + 0107 Pocket DV3100 + 0109 Nisis DV4 Digital Camera + 010a Trust 738AV LCD PV Mass Storage + 0111 PenCam VGA Plus + 2008 Mini PenCam 2 + 2010 Pocket CAM 3 Mega (webcam) + 2011 Pocket CAM 3 Mega (storage) + 2016 PocketCam 2 Mega + 2018 Pencam SD 2M + 2019 Pencam SD 2M (mass storage mode) + 2020 Slim 3000F + 2022 Slim 3200 + 2024 Pocket DV3500 + 2028 Pocket Cam4M + 2040 Pocket DV4100M + 2042 Pocket DV5100M Composite Device + 2043 Pocket DV5100M (Disk) + 2060 Pocket DV5300 +08cd Jue Hsun Ind. Corp. +08ce Long Well Electronics Corp. +08cf Productivity Enhancement Products +08d1 smartBridges, Inc. + 0001 smartNIC Ethernet [catc] + 0003 smartNIC 2 PnP Ethernet +08d3 Virtual Ink +08d4 Fujitsu Siemens Computers + 0009 SCR SmartCard Reader +08d8 IXXAT Automation GmbH + 0002 USB-to-CAN compact + 0003 USB-to-CAN II + 0100 USB-to-CAN +08d9 Increment P Corp. +08dd Billionton Systems, Inc. + 0112 Wireless LAN Adapter + 0113 Wireless LAN Adapter + 0986 USB-100N Ethernet [pegasus] + 0987 USBLP-100 HomePNA Ethernet [pegasus] + 0988 USBEL-100 Ethernet [pegasus] + 1986 10/100 LAN Adapter + 2103 DVB-T TV-Tuner Card-R + 8511 USBE-100 Ethernet [pegasus2] + 90ff USB2AR Ethernet +08de ??? + 7a01 802.11b Adapter +08df Spyrus, Inc. + 0001 Rosetta Token V1 + 0002 Rosetta Token V2 + 0003 Rosetta Token V3 + 0a00 Lynks Interface +08e3 Olitec, Inc. + 0002 USB-RS232 Bridge + 0100 Interface ADSL + 0101 Interface ADSL + 0102 ADSL + 0301 RNIS ISDN TA [HFC-S] +08e4 Pioneer Corp. + 0184 DDJ-WeGO + 0185 DDJ-WeGO2 +08e5 Litronic +08e6 Gemalto (was Gemplus) + 0001 GemPC-Touch 430 + 0430 GemPC430 SmartCard Reader + 0432 GemPC432 SmartCard Reader + 0435 GemPC435 SmartCard Reader + 0437 GemPC433 SL SmartCard Reader + 1359 UA SECURE STORAGE TOKEN + 2202 Gem e-Seal Pro Token + 3437 GemPC Twin SmartCard Reader + 3438 GemPC Key SmartCard Reader + 3478 PinPad Smart Card Reader + 34ec Compact Smart Card Reader Writer + 4433 GemPC433-Swap + 5501 GemProx-PU Contactless Smart Card Reader + 5503 Prox-DU Contactless Interface + ace0 UA HYBRID TOKEN +08e7 Pan-International Wire & Cable +08e8 Integrated Memory Logic +08e9 Extended Systems, Inc. + 0100 XTNDAccess IrDA Dongle +08ea Ericsson, Inc., Blue Ridge Labs + 00c9 ADSL Modem HM120dp Loader + 00ca ADSL WAN Modem HM120dp + 00ce HM230d Virtual Bus for Helium + abba USB Driver for Bluetooth Wireless Technology + abbb Bluetooth Device in DFU State +08ec M-Systems Flash Disk Pioneers + 0001 TravelDrive 2C + 0002 TravelDrive 2C + 0005 TravelDrive 2C + 0008 TravelDrive 2C + 0010 DiskOnKey + 0011 DiskOnKey + 0012 TravelDrive 2C + 0014 TravelDrive 2C + 0015 Kingston DataTraveler ELITE + 0016 Kingston DataTraveler U3 + 0020 TravelDrive Intuix U3 2GB + 0021 TravelDrive + 0022 TravelDrive + 0023 TravelDrive + 0024 TravelDrive + 0025 TravelDrive + 0026 TravelDrive + 0027 TravelDrive + 0028 TravelDrive + 0029 TravelDrive + 0030 TravelDrive + 0822 TravelDrive 2C + 0832 Hi-Speed Mass Storage Device + 0834 M-Disk 220 + 0998 Kingston Data Traveler2.0 Disk Driver + 0999 Kingston Data Traveler2.0 Disk Driver + 1000 TravelDrive 2C + 2000 TravelDrive 2C + 2038 TravelDrive + 2039 TravelDrive + 204a TravelDrive + 204b TravelDrive +08ed MediaTek Inc. + 0002 CECT M800 memory card +08ee CCSI/Hesso +08f0 Corex Technologies + 0005 CardScan 800c +08f1 CTI Electronics Corp. +08f2 Gotop Information Inc. + 007f Super Q2 Tablet +08f5 SysTec Co., Ltd +08f6 Logic 3 International, Ltd +08f7 Vernier + 0001 LabPro + 0002 EasyTemp/Go!Temp + 0003 Go!Link + 0004 Go!Motion +08f8 Keen Top International Enterprise Co., Ltd +08f9 Wipro Technologies +08fa Caere +08fb Socket Communications +08fc Sicon Cable Technology Co., Ltd +08fd Digianswer A/S + 0001 Bluetooth Device +08ff AuthenTec, Inc. + 1600 AES1600 + 1610 AES1600 + 1660 AES1660 Fingerprint Sensor + 1680 AES1660 Fingerprint Sensor + 168f AES1660 Fingerprint Sensor + 2500 AES2501 + 2501 AES2501 + 2502 AES2501 + 2503 AES2501 + 2504 AES2501 + 2505 AES2501 + 2506 AES2501 + 2507 AES2501 + 2508 AES2501 + 2509 AES2501 + 250a AES2501 + 250b AES2501 + 250c AES2501 + 250d AES2501 + 250e AES2501 + 250f AES2501 + 2510 AES2510 + 2550 AES2550 Fingerprint Sensor + 2580 AES2501 Fingerprint Sensor + 2588 AES2501 + 2589 AES2501 + 258a AES2501 + 258b AES2501 + 258c AES2501 + 258d AES2501 + 258e AES2501 + 258f AES2501 + 2660 AES2660 Fingerprint Sensor + 2680 AES2660 Fingerprint Sensor + 268f AES2660 Fingerprint Sensor + 2810 AES2810 + 3400 AES3400 TruePrint Sensor + 3401 AES3400 Sensor + 3402 AES3400 Sensor + 3403 AES3400 Sensor + 3404 AES3400 TruePrint Sensor + 3405 AES3400 TruePrint Sensor + 3406 AES3400 TruePrint Sensor + 3407 AES3400 TruePrint Sensor + 4902 BioMV with TruePrint AES3500 + 4903 BioMV with TruePrint AES3400 + 5500 AES4000 + 5501 AES4000 TruePrint Sensor + 5503 AES4000 TruePrint Sensor + 5505 AES4000 TruePrint Sensor + 5507 AES4000 TruePrint Sensor + 55ff AES4000 TruePrint Sensor. + 5700 AES3500 Fingerprint Reader + 5701 AES3500 TruePrint Sensor + 5702 AES3500 TruePrint Sensor + 5703 AES3500 TruePrint Sensor + 5704 AES3500-BZ TruePrint Sensor + 5705 AES3500-BZ TruePrint Sensor + 5706 AES3500-BZ TruePrint Sensor + 5707 AES3500-BZ TruePrint Sensor + 5710 AES3500 TruePrint Sensor + 5711 AES3500 TruePrint Sensor + 5712 AES3500 TruePrint Sensor + 5713 AES3500 TruePrint Sensor + 5714 AES3500-BZ TruePrint Sensor + 5715 AES3500-BZ TruePrint Sensor + 5716 AES3500-BZ TruePrint Sensor + 5717 AES3500-BZ TruePrint Sensor + 5730 AES3500 TruePrint Sensor + 5731 AES3500 TruePrint Sensor + 5732 AES3500 TruePrint Sensor + 5733 AES3500 TruePrint Sensor + 5734 AES3500-BZ TruePrint Sensor + 5735 AES3500-BZ TruePrint Sensor + 5736 AES3500-BZ TruePrint Sensor + 5737 AES3500-BZ TruePrint Sensor + afe3 FingerLoc Sensor Module (Anchor) + afe4 FingerLoc Sensor Module (Anchor) + afe5 FingerLoc Sensor Module (Anchor) + afe6 FingerLoc Sensor Module (Anchor) + fffd AES2510 Sensor (USB Emulator) + ffff Sensor (Emulator) +0900 Pinnacle Systems, Inc. +0901 VST Technologies + 0001 Hard Drive Adapter (TPP) + 0002 SigmaDrive Adapter (TPP) +0906 Faraday Technology Corp. +0908 Siemens AG + 01f4 SIMATIC NET CP 5711 + 01fe SIMATIC NET PC Adapter A2 + 04b1 MediSET + 04b2 NC interface + 04b3 keyboard front panel Cockpit + 04b4 SCR_CCID + 2701 ShenZhen SANZHAI Technology Co.,Ltd Spy Pen VGA +0909 Audio-Technica Corp. +090a Trumpion Microelectronics, Inc. + 1001 T33520 Flash Card Controller + 1100 Comotron C3310 MP3 player + 1200 MP3 player + 1540 Digitex Container Flash Disk +090b Neurosmith +090c Silicon Motion, Inc. - Taiwan (formerly Feiya Technology Corp.) + 0371 Silicon Motion SM371 Camera + 0373 Silicon Motion Camera + 037a Silicon Motion Camera + 037b Silicon Motion Camera + 037c 300k Pixel Camera + 1000 Flash Drive + 1132 5-in-1 Card Reader + 337b Silicon Motion Camera + 3710 Silicon Motion Camera + 3720 Silicon Motion Camera + 37bc HP Webcam-101 Integrated Camera + 37c0 Silicon Motion Camera + 6000 SD/SDHC Card Reader (SG365 / FlexiDrive XC+) + 6200 microSD card reader + 71b3 SM731 Camera + 837b Silicon Motion Camera + 937b Silicon Motion Camera + b370 Silicon Motion SM370 Camera + b371 Silicon Motion SM371 Camera + f37d Endoscope camera +090d Multiport Computer Vertriebs GmbH +090e Shining Technology, Inc. +090f Fujitsu Devices, Inc. +0910 Alation Systems, Inc. +0911 Philips Speech Processing + 149a SpeechMike II Pro Plus LFH5276 + 2512 SpeechMike Pro +0912 Voquette, Inc. +0915 GlobeSpan, Inc. + 0001 DSL Modem + 0002 ADSL ATM Modem + 0005 LAN Modem + 2000 802.11 Adapter + 2002 802.11 Adapter + 8000 ADSL LAN Modem + 8005 DSL-302G Modem + 8101 ADSL WAN Modem + 8102 DSL-200 ADSL Modem + 8103 DSL-200 ADSL Modem + 8104 DSL-200 Modem + 8400 DSL Modem + 8401 DSL Modem + 8402 DSL Modem + 8500 DSL Modem + 8501 DSL Modem +0917 SmartDisk Corp. + 0001 eFilm Reader-11 SM/CF + 0002 eFilm Reader-11 SM + 0003 eFilm Reader-11 CF + 0200 FireFly + 0201 FireLite + 0202 STORAGE ADAPTER (FirePower) + 0204 FlashTrax Storage + 0205 STORAGE ADAPTER (CrossFire) + 0206 FireFly 20G HDD + 0207 FireLite + 020f STORAGE ADAPTER (FireLite) + da01 eFilm Reader-11 Test + ffff eFilm Reader-11 (Class/PDR) +0919 Tiger Electronics + 0100 Fast Flicks Digital Camera +091e Garmin International + 0003 GPS (various models) + 0004 iQue 3600 + 0200 Data Card Programmer (install) + 086e Forerunner 735XT + 097f Forerunner 235 + 1200 Data Card Programmer + 21a5 etrex Cx (msc) + 2236 nuvi 360 + 2271 Edge 605/705 + 2295 Colorado 300 + 22b6 eTrex Vista HCx (Mass Storage mode) + 231b Oregon 400t + 2353 Nüvi 205T + 2380 Oregon series + 23cc nüvi 1350 + 2459 GPSmap 62/78 series + 2491 Edge 800 + 2519 eTrex 30 + 2535 Edge 800 + 253c GPSmap 62sc + 255b Nuvi 2505LM + 26a1 Nuvi 55 + 47fb nuviCam +0920 Echelon Co. + 7500 Network Interface +0921 GoHubs, Inc. + 1001 GoCOM232 Serial +0922 Dymo-CoStar Corp. + 0007 LabelWriter 330 + 0009 LabelWriter 310 + 0019 LabelWriter 400 + 001a LabelWriter 400 Turbo + 0020 LabelWriter 450 + 1001 LabelManager PnP + 8004 M25 Digital Postal Scale +0923 IC Media Corp. + 010f SIIG MobileCam +0924 Xerox + 23dd DocuPrint M760 (X760_USB) + 3ce8 Phaser 3428 Printer + 3cea Phaser 3125 + 3cec Phaser 3250 + 3d5b Phaser 6115MFP TWAIN Scanner + 3d6d WorkCentre 6015N/NI + 420f WorkCentre PE220 Series + 421f M20 Scanner + 423b Printing Support + 4274 Xerox Phaser 3635MFPX + ffef WorkCenter M15 + fffb DocuPrint M750 (X750_USB) +0925 Lakeview Research + 0005 Gamtec.,Ltd SmartJoy PLUS Adapter + 03e8 Wii Classic Controller Adapter + 3881 Saleae Logic + 8101 Phidgets, Inc., 1-Motor PhidgetServo v2.0 + 8104 Phidgets, Inc., 4-Motor PhidgetServo v2.0 + 8800 WiseGroup Ltd, MP-8800 Quad Joypad + 8866 WiseGroup Ltd, MP-8866 Dual Joypad +0927 Summus, Ltd +0928 PLX Technology, Inc. (formerly Oxford Semiconductor, Ltd) + 8000 Firmware uploader + ffff Blank Oxford Device +0929 American Biometric Co. +092a Toshiba Information & Industrial Sys. And Services +092b Sena Technologies, Inc. +092f Northern Embedded Science/CAVNEX + 0004 JTAG-4 + 0005 JTAG-5 +0930 Toshiba Corp. + 0009 Gigabeat F/X (HDD audio player) + 000c Gigabeat F (mtp) + 0010 Gigabeat S (mtp) + 01bf 2.5"External Hard Disk + 0200 Integrated Bluetooth (Taiyo Yuden) + 021c Atheros AR3012 Bluetooth + 0301 PCX1100U Cable Modem (WDM) + 0302 PCX2000 Cable Modem (WDM) + 0305 Cable Modem PCX3000 + 0307 Cable Modem PCX2500 + 0308 PCX2200 Cable Modem (WDM) + 0309 PCX5000 Cable Modem (WDM) + 030b Cable Modem PCX2600 + 0501 Bluetooth Controller + 0502 Integrated Bluetooth + 0503 Bluetooth Controller + 0505 Integrated Bluetooth + 0506 Integrated Bluetooth + 0507 Bluetooth Adapter + 0508 Integrated Bluetooth HCI + 0509 BT EDR Dongle + 0706 PocketPC e740 + 0707 Pocket PC e330 Series + 0708 Pocket PC e350 Series + 0709 Pocket PC e750 Series + 070a Pocket PC e400 Series + 070b Pocket PC e800 Series + 0a07 WLM-10U1 802.11abgn Wireless Adapter [Ralink RT3572] + 0a08 WLM-20U2/GN-1080 802.11abgn Wireless Adapter [Atheros AR7010+AR9280] + 0a0b WLU5053 802.11abgn Wireless Module [Broadcom BCM43236B] + 0a13 AX88179 Gigabit Ethernet [Toshiba] + 0b05 PX1220E-1G25 External hard drive + 0b09 PX1396E-3T01 External hard drive + 0b1a STOR.E ALU 2S + 1300 Wireless Broadband (CDMA EV-DO) SM-Bus Minicard Status Port + 1301 Wireless Broadband (CDMA EV-DO) Minicard Status Port + 1302 Wireless Broadband (3G HSDPA) SM-Bus Minicard Status Port + 1303 Wireless Broadband (3G HSDPA) Minicard Status Port + 1308 Broadband (3G HSDPA) SM-Bus Minicard Diagnostics Port + 130b F3507g Mobile Broadband Module + 130c F3607gw Mobile Broadband Module + 1311 F3607gw v2 Mobile Broadband Module + 1400 Memory Stick 2GB + 642f TravelDrive + 6506 TravelDrive 2C + 6507 TravelDrive 2C + 6508 TravelDrive 2C + 6509 TravelDrive 2C + 6510 TravelDrive 2C + 6517 TravelDrive 2C + 6518 TravelDrive 2C + 6519 Kingston DataTraveler 2.0 USB Stick + 651a TravelDrive 2C + 651b TravelDrive 2C + 651c TravelDrive 2C + 651d TravelDrive 2C + 651e TravelDrive 2C + 651f TravelDrive 2C + 6520 TravelDrive 2C + 6521 TravelDrive 2C + 6522 TravelDrive 2C + 6523 TravelDrive + 6524 TravelDrive + 6525 TravelDrive + 6526 TravelDrive + 6527 TravelDrive + 6528 TravelDrive + 6529 TravelDrive + 652a TravelDrive + 652b TravelDrive + 652c TravelDrive + 652d TravelDrive + 652f TravelDrive + 6530 TravelDrive + 6531 TravelDrive + 6532 256M Stick + 6533 512M Stick + 6534 TravelDrive + 653c Kingston DataTraveler 2.0 Stick (512M) + 653d Kingston DataTraveler 2.0 Stick (1GB) + 653e Flash Memory + 6540 TransMemory Flash Memory + 6544 TransMemory-Mini / Kingston DataTraveler 2.0 Stick + 6545 Kingston DataTraveler 102/2.0 / HEMA Flash Drive 2 GB / PNY Attache 4GB Stick +0931 Harmonic Data Systems, Ltd +0932 Crescentec Corp. + 0300 VideoAdvantage + 0302 Syntek DC-112X + 0320 VideoAdvantage + 0482 USB2.0 TVBOX + 1100 DC-1100 Video Enhamcement Device + 1112 Veo Web Camera + a311 Video Enhancement Device +0933 Quantum Corp. +0934 Spirent Communications +0936 NuTesla + 000a Moebius + 000b iMoebius + 000c Rhythmedics 6 BioData Integrator + 000d Hypurius + 000e Millennius + 000f Purius + 0030 Composite Device, Mass Storage Device (Flash Drive) amd HID + 003c Rhythmedics HID Bootloader +0939 Lumberg, Inc. + 0b15 Toshiba Stor.E Alu 2 +093a Pixart Imaging, Inc. + 0007 CMOS 100K-R Rev. 1.90 + 010e Digital camera, CD302N/Elta Medi@ digi-cam/HE-501A + 010f Argus DC-1610/DC-1620/Emprex PCD3600/Philips P44417B keychain camera/Precision Mini,Model HA513A/Vivitar Vivicam 55 + 020f Bullet Line Photo Viewer + 050f Mars-Semi Pc-Camera + 2460 Q-TEC WEBCAM 100 + 2468 SoC PC-Camera + 2470 SoC PC-Camera + 2471 SoC PC-Camera + 2500 USB Optical Mouse + 2510 Optical Mouse + 2521 Optical Mouse + 2600 Typhoon Easycam USB 330K (newer)/Typhoon Easycam USB 2.0 VGA 1.3M/Sansun SN-508 + 2601 SPC 610NC Laptop Camera + 2603 PAC7312 Camera + 2608 PAC7311 Trust WB-3300p + 260e PAC7311 Gigaware VGA PC Camera:Trust WB-3350p:SIGMA cam 2350 + 260f PAC7311 SnakeCam + 2621 PAC731x Trust Webcam + 2622 Webcam Genius + 2624 Webcam +093b Plextor Corp. + 0010 Storage Adapter + 0011 PlexWriter 40/12/40U + 0041 PX-708A DVD RW + 0042 PX-712UF DVD RW + a002 ConvertX M402U XLOADER + a003 ConvertX AV100U A/V Capture Audio + a004 ConvertX TV402U XLOADER + a005 ConvertX TV100U A/V Capture + a102 ConvertX M402U A/V Capture + a104 ConvertX PX-TV402U/NA +093c Intrepid Control Systems, Inc. + 0601 ValueCAN + 0701 NeoVI Blue vehicle bus interface +093d InnoSync, Inc. +093e J.S.T. Mfg. Co., Ltd +093f Olympia Telecom Vertriebs GmbH +0940 Japan Storage Battery Co., Ltd +0941 Photobit Corp. +0942 i2Go.com, LLC +0943 HCL Technologies India Private, Ltd +0944 KORG, Inc. + 0001 PXR4 4-Track Digital Recorder + 0020 KAOSS Pad KP3 Dynamic Effect/Sampler + 0023 KAOSSILATOR PRO Dynamic Phrase Synthesizer + 010d nanoKEY MIDI keyboard + 010e nanoPAD pad controller + 010f nanoKONTROL studio controller + 0117 nanoKONTROL2 MIDI Controller + 0f03 K-Series K61P MIDI studio controller +0945 Pasco Scientific +0948 Kronauer music in digital + 0301 USB Pro (24/48) + 0302 USB Pro (24/96 playback) + 0303 USB Pro (24/96 record) + 0304 USB Pro (16/48) + 1105 USB One +094b Linkup Systems Corp. + 0001 neonode N2 +094d Cable Television Laboratories +094f Yano + 0101 U640MO-03 + 05fc METALWEAR-HDD +0951 Kingston Technology + 0008 Ethernet + 000a KNU101TX 100baseTX Ethernet + 1600 DataTraveler II Pen Drive + 1601 DataTraveler II+ Pen Drive + 1602 DataTraveler Mini + 1603 DataTraveler 1GB/2GB Pen Drive + 1606 Eee PC 701 SD Card Reader [ENE UB6225] + 1607 DataTraveler 100 + 160b DataTraveler 2.0 (2GB) + 160d DataTraveler Vault Privacy + 160e DT110P/1GB Capless + 1613 DataTraveler DT101C Flash Drive + 1616 DataTraveler Locker 4GB + 161a Dell HyperVisor internal flash drive + 1621 DataTraveler 150 (32GB) + 1624 DataTraveler G2 + 1625 DataTraveler 101 II + 162a DataTraveler 112 4GB Pen Drive + 162b DataTraveler HyperX 3.0 + 162d DataTraveler 102 + 1630 DataTraveler 200 (32GB) + 1642 DT101 G2 + 1643 DataTraveler G3 + 1653 Data Traveler 100 G2 8 GiB + 1656 DataTraveler Ultimate G2 + 1660 Data Traveller 108 + 1665 Digital DataTraveler SE9 64GB + 1666 DataTraveler 100 G3/G4/SE9 G2 + 1689 DataTraveler SE9 + 168a DataTraveler Micro + 168c DT Elite 3.0 + 16b3 HyperX Savage +0954 RPM Systems Corp. +0955 NVIDIA Corp. + 7018 T186 [Tegra Parker] + 701a U-Boot running on Tegra + 7020 L4T (Linux for Tegra) running on Tegra + 7030 T30 [Tegra 3] recovery mode + 7100 Tegra Device + 7140 T124 [Tegra K1/Logan 32-bit] + 7210 SHIELD Controller + 7721 T210 [Tegra Erista] + 7820 T20 [Tegra 2] recovery mode + b400 SHIELD (debug) + b401 SHIELD + cf05 SHIELD Tablet (debug) + cf06 SHIELD Tablet + cf07 SHIELD Tablet + cf08 SHIELD Tablet + cf09 SHIELD Tablet +0956 BSquare Corp. +0957 Agilent Technologies, Inc. + 0200 E-Video DC-350 Camera + 0202 E-Video DC-350 Camera + 0407 33220A Waveform Generator + 0518 82357B GPIB Interface + 0a07 34411A Multimeter + 1507 33210A Waveform Generator + 1745 Test and Measurement Device (IVI) + 2918 U2702A oscilloscope + fb18 LC Device +0958 CompuLink Research, Inc. +0959 Cologne Chip AG + 2bd0 Intelligent ISDN (Ver. 3.60.04) [HFC-S] +095a Portsmith + 3003 Express Ethernet +095b Medialogic Corp. +095c K-Tec Electronics +095d Polycom, Inc. + 0001 Polycom ViaVideo +0964 BITRAN +0967 Acer NeWeb Corp. + 0204 WarpLink 802.11b Adapter +0968 Catalyst Enterprises, Inc. +096e Feitian Technologies, Inc. + 0005 ePass2000 + 0120 Microcosm Ltd Dinkey + 0305 ePass2000Auto + 0309 ePass3000GM + 0401 ePass3000 + 0702 ePass3003 + 0703 ePass3003Auto + 0802 ePass2000 (G&D STARCOS SPK 2.4) + 0807 ePass2003 +0971 Gretag-Macbeth AG + 2000 i1 Pro + 2001 i1 Monitor + 2003 Eye-One display + 2005 Huey + 2007 ColorMunki Photo +0973 Schlumberger + 0001 e-gate Smart Card +0974 Datagraphix, a business unit of Anacomp +0975 OL'E Communications, Inc. +0976 Adirondack Wire & Cable +0977 Lightsurf Technologies +0978 Beckhoff GmbH +0979 Jeilin Technology Corp., Ltd + 0222 Keychain Display + 0224 JL2005A Toy Camera + 0226 JL2005A Toy Camera + 0227 JL2005B/C/D Toy Camera +097a Minds At Work LLC + 0001 Digital Wallet +097b Knudsen Engineering, Ltd +097c Marunix Co., Ltd +097d Rosun Technologies, Inc. +097e Biopac Systems Inc. + 0035 MP35 v1.0 +097f Barun Electronics Co., Ltd +0981 Oak Technology, Ltd +0984 Apricorn + 0040 SATA Wire (2.5") + 0200 Hard Drive Storage (TPP) +0985 cab Produkttechnik GmbH & Co KG + 0045 Mach4/200 Label Printer + 00a3 A3/200 or A3/300 Label Printer +0986 Matsushita Electric Works, Ltd. +098c Vitana Corp. +098d INDesign +098e Integrated Intellectual Property, Inc. +098f Kenwood TMI Corp. +0993 Gemstar eBook Group, Ltd + 0001 REB1100 eBook Reader + 0002 eBook +0996 Integrated Telecom Express, Inc. +099a Zippy Technology Corp. + 0638 Sanwa Supply Inc. Small Keyboard + 610c EL-610 Super Mini Electron luminescent Keyboard + 713a WK-713 Multimedia Keyboard + 7160 Hyper Slim Keyboard +099e Trimble Navigation, Ltd +09a3 PairGain Technologies +09a4 Contech Research, Inc. +09a5 VCON Telecommunications +09a6 Poinchips + 8001 Mass Storage Device +09a7 Data Transmission Network Corp. +09a8 Lin Shiung Enterprise Co., Ltd +09a9 Smart Card Technologies Co., Ltd +09aa Intersil Corp. + 1000 Prism GT 802.11b/g Adapter + 3642 Prism 2.x 802.11b Adapter +09ab Japan Cash Machine Co., Ltd. +09ae Tripp Lite +09b2 Franklin Electronic Publishers, Inc. + 0001 eBookman Palm Computer +09b3 Altius Solutions, Inc. +09b4 MDS Telephone Systems +09b5 Celltrix Technology Co., Ltd +09bc Grundig + 0002 MPaxx MP150 MP3 Player +09be MySmart.Com + 0001 MySmartPad +09bf Auerswald GmbH & Co. KG + 00c0 COMpact 2104 ISDN PBX + 00db COMpact 4410/2206 ISDN + 00dc COMpact 4406 DSL (PBX) + 00dd COMpact 2204 (PBX) + 00de COMpact 2104 (Rev.2 PBX) + 00e0 COMmander Business (PBX) + 00e2 COMmander Basic.2 (PBX) + 00f1 COMfort 2000 (System telephone) + 00f2 COMfort 1200 (System telephone) + 00f5 COMfortel 2500 (System telephone) + 8000 COMpact 2104 DSL (DSL modem) + 8001 COMpact 4406 DSL (DSL modem) + 8002 Analog/ISDN Converter (Line converter) + 8005 WG-640 (Automatic event dialer) +09c0 Genpix Electronics, LLC + 0136 Axon CNS, MultiClamp 700B + 0202 8PSK DVB-S tuner + 0203 Skywalker-1 DVB-S tuner + 0204 Skywalker-CW3K DVB-S tuner + 0205 Skywalker-CW3K DVB-S tuner + 0206 Skywalker-2 DVB-S tuner +09c1 Arris Interactive LLC + 1337 TOUCHSTONE DEVICE +09c2 Nisca Corp. +09c3 ActivCard, Inc. + 0007 Reader V2 + 0008 ZFG-9800-AC SmartCard Reader + 0014 ActivIdentity ActivKey SIM USB Token +09c4 ACTiSYS Corp. + 0011 ACT-IR2000U IrDA Dongle +09c5 Memory Corp. +09ca BMC Messsysteme GmbH + 5544 PIO +09cb FLIR Systems + 1001 Network Adapter + 1002 Ex-Series RNDIS interface + 1004 Ex-Series UVC interface + 1005 Ex-Series RNDIS and UVC interface + 1006 Ex-Series RNDIS and MSD interface + 1007 Ex-Series UVC and MSD interface + 1008 Serial Port + 1996 FLIR ONE Camera +09cc Workbit Corp. + 0404 BAFO USB-ATA/ATAPI Bridge Controller +09cd Psion Dacom Home Networks, Ltd + 2001 Psion WaveFinder DAB radio receiver +09ce City Electronics, Ltd +09cf Electronics Testing Center, Taiwan +09d1 NeoMagic, Inc. +09d2 Vreelin Engineering, Inc. +09d3 Com One + 0001 ISDN TA / Light Rider 128K + 000b Bluetooth Adapter class 1 [BlueLight] +09d7 NovAtel Inc. + 0100 NovAtel FlexPack GPS receiver +09d8 ELATEC + 0406 TWN4 MIFARE NFC +09d9 KRF Tech, Ltd +09da A4Tech Co., Ltd. + 0006 Optical Mouse WOP-35 / Trust 450L Optical Mouse + 000a Optical Mouse Opto 510D / OP-620D + 000e X-F710F Optical Mouse 3xFire Gaming Mouse + 0018 Trust Human Interface Device + 001a Wireless Mouse & RXM-15 Receiver + 002a Wireless Optical Mouse NB-30 + 022b Wireless Mouse (Battery Free) + 024f RF Receiver and G6-20D Wireless Optical Mouse + 0260 KV-300H Isolation Keyboard + 032b Wireless Mouse (Battery Free) + 1068 Bloody A90 Mouse + 8090 X-718BK Oscar Optical Gaming Mouse + 9033 X-718BK Optical Mouse + 9066 F3 V-Track Gaming Mouse + 9090 XL-730K / XL-750BK / XL-755BK Mice +09db Measurement Computing Corp. + 0075 MiniLab 1008 + 0076 PMD-1024 + 007a PMD-1208LS + 0081 USB-1616FS + 0082 USB-1208FS + 0088 USB-1616FS internal hub +09dc Aimex Corp. +09dd Fellowes, Inc. +09df Addonics Technologies Corp. +09e1 Intellon Corp. + 5121 MicroLink dLAN +09e5 Jo-Dan International, Inc. +09e6 Silutia, Inc. +09e7 Real 3D, Inc. +09e8 AKAI Professional M.I. Corp. + 0062 MPD16 MIDI Pad Controller Unit + 006d EWI electronic wind instrument + 0071 MPK25 MIDI Keyboard + 0076 LPK25 MIDI Keyboard +09e9 Chen-Source, Inc. +09eb IM Networks, Inc. + 4331 iRhythm Tuner Remote +09ef Xitel + 0101 MD-Port DG2 MiniDisc Interface +09f3 GoFlight, Inc. + 0018 GF-46 Multi-Mode Display Module + 0028 RP-48 Combination Pushbutton-Rotary Module + 0048 LGTII - Landing Gear and Trim Control Module + 0064 MCPPro - Airliner Mode Control Panel (Autopilot) + 0300 EFIS - Electronic Flight Information System +09f5 AresCom + 0168 Network Adapter + 0188 LAN Adapter + 0850 Adapter +09f6 RocketChips, Inc. +09f7 Edu-Science (H.K.), Ltd +09f8 SoftConnex Technologies, Inc. +09f9 Bay Associates +09fa Mtek Vision +09fb Altera + 6001 Blaster +09ff Gain Technology Corp. +0a00 Liquid Audio +0a01 ViA, Inc. +0a05 Unknown Manufacturer + 0001 Hub + 7211 hub +0a07 Ontrak Control Systems Inc. + 0064 ADU100 Data Acquisition Interface + 0078 ADU120 Data Acquisition Interface + 0082 ADU130 Data Acquisition Interface + 00c8 ADU200 Relay I/O Interface + 00d0 ADU208 Relay I/O Interface + 00da ADU218 Solid-State Relay I/O Interface +0a0b Cybex Computer Products Co. +0a0d Servergy, Inc + 2514 CTS-1000 Internal Hub +0a11 Xentec, Inc. +0a12 Cambridge Silicon Radio, Ltd + 0001 Bluetooth Dongle (HCI mode) + 0002 Frontline Test Equipment Bluetooth Device + 0003 Nanosira + 0004 Nanosira WHQL Reference Radio + 0005 Nanosira-Multimedia + 0006 Nanosira-Multimedia WHQL Reference Radio + 0007 Nanosira3-ROM + 0008 Nanosira3-ROM + 0009 Nanosira4-EDR WHQL Reference Radio + 000a Nanosira4-EDR-ROM + 000b Nanosira5-ROM + 0042 SPI Converter + 0043 Bluetooth Device + 0100 Casira with BlueCore2-External Module + 0101 Casira with BlueCore2-Flash Module + 0102 Casira with BlueCore3-Multimedia Module + 0103 Casira with BlueCore3-Flash Module + 0104 Casira with BlueCore4-External Module + 0105 Casira with BlueCore4-Multimedia Module + 1000 Bluetooth Dongle (HID proxy mode) + 1010 Bluetooth Device + 1011 Bluetooth Device + 1012 Bluetooth Device + ffff USB Bluetooth Device in DFU State +0a13 Telebyte, Inc. +0a14 Spacelabs Medical, Inc. +0a15 Scalar Corp. +0a16 Trek Technology (S) PTE, Ltd + 1111 ThumbDrive + 8888 IBM USB Memory Key + 9988 Trek2000 TD-G2 +0a17 Pentax Corp. + 0004 Optio 330 + 0006 Optio S / S4 + 0007 Optio 550 + 0009 Optio 33WR + 000a Optio 555 + 000c Optio 43WR (mass storage mode) + 000d Optio 43WR + 0015 Optio S40/S5i + 003b Optio 50 (mass storage mode) + 003d Optio S55 + 0041 Optio S5z + 0043 *ist DL + 0047 Optio S60 + 0052 Optio 60 Digital Camera + 006e K10D + 0070 K100D + 0093 K200D + 00a7 Optio E50 + 1001 EI2000 Camera powered by Digita! +0a18 Heidelberger Druckmaschinen AG +0a19 Hua Geng Technologies, Inc. +0a21 Medtronic Physio Control Corp. + 8001 MMT-7305WW [Medtronic Minimed CareLink] +0a22 Century Semiconductor USA, Inc. +0a27 Datacard Group + 0102 SP35 +0a2c AK-Modul-Bus Computer GmbH + 0008 GPIO Ports +0a34 TG3 Electronics, Inc. + 0101 TG82tp + 0110 Deck 82-key backlit keyboard +0a35 Radikal Technologies + 002a SAC - Software Assigned Controller + 008a SAC Hub +0a39 Gilat Satellite Networks, Ltd +0a3a PentaMedia Co., Ltd + 0163 KN-W510U 1.0 Wireless LAN Adapter +0a3c NTT DoCoMo, Inc. +0a3d Varo Vision +0a3f Swissonic AG +0a43 Boca Systems, Inc. +0a46 Davicom Semiconductor, Inc. + 0268 ST268 + 6688 ZT6688 Fast Ethernet Adapter + 8515 ADMtek ADM8515 NIC + 9000 DM9000E Fast Ethernet Adapter + 9601 DM9601 Fast Ethernet Adapter +0a47 Hirose Electric +0a48 I/O Interconnect + 3233 Multimedia Card Reader + 3239 Multimedia Card Reader + 3258 Dane Elec zMate SD Reader + 3259 Dane Elec zMate CF Reader + 5000 MediaGear xD-SM + 500a Mass Storage Device + 500f Mass Storage Device + 5010 Mass Storage Device + 5011 Mass Storage Device + 5014 Mass Storage Device + 5020 Mass Storage Device + 5021 Mass Storage Device + 5022 Mass Storage Device + 5023 Mass Storage Device + 5024 Mass Storage Device + 5025 Mass Storage Device +0a4a Ploytec GmbH +0a4b Fujitsu Media Devices, Ltd +0a4c Computex Co., Ltd + 15d9 OPTICAL MOUSE +0a4d Evolution Electronics, Ltd + 0064 MK-225 Driver + 0065 MK-225C Driver + 0066 MK-225C Driver + 0067 MK-425C Driver + 0078 MK-37 Driver + 0079 MK-37C Driver + 007a MK-37C Driver + 008c TerraTec MIDI MASTER + 008d MK-249C Driver + 008e MK-249C MIDI Keyboard + 008f MK-449C Driver + 0090 Keystation 49e Driver + 0091 Keystation 61es Driver + 00a0 MK-361 Driver + 00a1 MK-361C Driver + 00a2 MK-361C Driver + 00a3 MK-461C MIDI Keyboard + 00b5 Keystation Pro 88 Driver + 00d2 E-Keys Driver + 00f0 UC-16 Driver + 00f1 X-Session Driver + 00f5 UC-33e MIDI Controller +0a4e Steinberg Soft-und Hardware GmbH +0a4f Litton Systems, Inc. +0a50 Mimaki Engineering Co., Ltd +0a51 Sony Electronics, Inc. +0a52 Jebsee Electronics Co., Ltd +0a53 Portable Peripheral Co., Ltd + 1000 Scanner + 2000 Q-Scan A6 Scanner + 2001 Q-Scan A6 Scanner + 2013 Media Drive A6 Scanner + 2014 Media Drive A6 Scanner + 2015 BizCardReader 600C + 2016 BizCardReader 600C + 202a Scanshell-CSSN + 3000 Q-Scan A8 Scanner + 3002 Q-Scan A8 Reader + 3015 BizCardReader 300G + 302a LM9832 - PA570 Mini Business Card Scanner [Targus] + 5001 BizCardReader 900C +0a5a Electronics For Imaging, Inc. +0a5b EAsics NV +0a5c Broadcom Corp. + 0201 iLine10(tm) Network Adapter + 2000 Bluetooth Device + 2001 Bluetooth Device + 2009 BCM2035 Bluetooth + 200a BCM2035 Bluetooth dongle + 200f Bluetooth Controller + 201d Bluetooth Device + 201e IBM Integrated Bluetooth IV + 2020 Bluetooth dongle + 2021 BCM2035B3 Bluetooth Adapter + 2033 BCM2033 Bluetooth + 2035 BCM2035 Bluetooth + 2038 Blutonium Device + 2039 BCM2045 Bluetooth + 2045 Bluetooth Controller + 2046 Bluetooth Device + 2047 Bluetooth Device + 205e Bluetooth Device + 2100 Bluetooth 2.0+eDR dongle + 2101 BCM2045 Bluetooth + 2102 ANYCOM Blue USB-200/250 + 2110 BCM2045B (BDC-2) [Bluetooth Controller] + 2111 ANYCOM Blue USB-UHE 200/250 + 2120 2045 Bluetooth 2.0 USB-UHE Device with trace filter + 2121 BCM2210 Bluetooth + 2122 Bluetooth 2.0+EDR dongle + 2123 Bluetooth dongle + 2130 2045 Bluetooth 2.0 USB-UHE Device with trace filter + 2131 2045 Bluetooth 2.0 Device with trace filter + 2145 BCM2045B (BDC-2.1) [Bluetooth Controller] + 2148 BCM92046DG-CL1ROM Bluetooth 2.1 Adapter + 2150 BCM2046 Bluetooth Device + 2151 Bluetooth + 2154 BCM92046DG-CL1ROM Bluetooth 2.1 UHE Dongle + 216a BCM43142A0 Bluetooth + 216c BCM43142A0 Bluetooth Device + 216d BCM43142A0 Bluetooth 4.0 + 216f BCM20702A0 Bluetooth + 217d HP Bluethunder + 217f BCM2045B (BDC-2.1) + 2198 Bluetooth 3.0 Device + 219b Bluetooth 2.1 Device + 21b1 HP Bluetooth Module + 21b4 BCM2070 Bluetooth 2.1 + EDR + 21b9 BCM2070 Bluetooth 2.1 + EDR + 21ba BCM2070 Bluetooth 2.1 + EDR + 21bb BCM2070 Bluetooth 2.1 + EDR + 21bc BCM2070 Bluetooth 2.1 + EDR + 21bd BCM2070 Bluetooth 2.1 + EDR + 21d7 BCM43142 Bluetooth 4.0 + 21e1 HP Portable SoftSailing + 21e3 HP Portable Valentine + 21e6 BCM20702 Bluetooth 4.0 [ThinkPad] + 21e8 BCM20702A0 Bluetooth 4.0 + 21f1 HP Portable Bumble Bee + 22be BCM2070 Bluetooth 3.0 + HS + 4500 BCM2046B1 USB 2.0 Hub (part of BCM2046 Bluetooth) + 4502 Keyboard (Boot Interface Subclass) + 4503 Mouse (Boot Interface Subclass) + 5800 BCM5880 Secure Applications Processor + 5801 BCM5880 Secure Applications Processor with fingerprint swipe sensor + 5802 BCM5880 Secure Applications Processor with fingerprint touch sensor + 5803 BCM5880 Secure Applications Processor with secure keyboard + 5804 BCM5880 Secure Applications Processor with fingerprint swipe sensor + 6300 Pirelli Remote NDIS Device + 6410 BCM20703A1 Bluetooth 4.1 + LE + bd11 BCM4320 802.11bg Wireless Adapter + bd12 BCM4326U 802.11bg Wireless Adapter + bd13 BCM4323 802.11abgn Wireless Adapter + bd16 BCM4319 802.11bgn Wireless Adapter + bd17 BCM43236 802.11abgn Wireless Adapter + bd1d BCM43526 802.11a/b/g/n/ac (2x2) Wireless Adapter + bd1e BCM43143 802.11bgn (1x1) Wireless Adapter + bd1f BCM43242 802.11abgn Wireless Adapter + d11b Eminent EM4045 [Broadcom 4320 USB] +0a5d Diatrend Corp. +0a5f Zebra + 0009 LP2844 Printer + 0081 GK420t Label Printer + 008b HC100 wristbands Printer + 008c ZP 450 Printer + 00d1 Zebra GC420d Label Printer + 930a Printer +0a62 MPMan + 0010 MPMan MP-F40 MP3 Player +0a66 ClearCube Technology +0a67 Medeli Electronics Co., Ltd +0a68 Comaide Corp. +0a69 Chroma ate, Inc. +0a6b Green House Co., Ltd + 0001 Compact Flash R/W with MP3 player + 000f FlashDisk +0a6c Integrated Circuit Systems, Inc. +0a6d UPS Manufacturing +0a6e Benwin +0a6f Core Technology, Inc. + 0400 Xanboo +0a70 International Game Technology +0a71 VIPColor Technologies USA, Inc. + 0001 VP485 Printer +0a72 Sanwa Denshi +0a73 Mackie Designs + 0002 XD-2 [Spike] +0a7d NSTL, Inc. +0a7e Octagon Systems Corp. +0a80 Rexon Technology Corp., Ltd +0a81 Chesen Electronics Corp. + 0101 Keyboard + 0103 Keyboard + 0203 Mouse + 0205 PS/2 Keyboard+Mouse Adapter + 0701 USB Missile Launcher + ff01 Wireless Missile Launcher +0a82 Syscan + 4600 TravelScan 460/464 +0a83 NextComm, Inc. +0a84 Maui Innovative Peripherals +0a85 Idexx Labs +0a86 NITGen Co., Ltd +0a89 Aktiv + 0001 Guardant Stealth/Net + 0002 Guardant ID + 0003 Guardant Stealth 2 + 0004 Rutoken + 0005 Guardant Fidus + 0006 Guardant Stealth 3 + 0007 Guardant Stealth 2 + 0008 Guardant Stealth 3 Sign/Time + 0009 Guardant Code + 000a Guardant Sign Pro + 000b Guardant Sign Pro HID + 000c Guardant Stealth 3 Sign/Time + 000d Guardant Code HID + 000f Guardant System Firmware Update + 0020 Rutoken S + 0025 Rutoken lite + 0026 Rutoken lite HID + 002a Rutoken Mass Storage + 002b Guardant Mass Storage + 0030 Rutoken ECP + 0040 Rutoken ECP HID + 0060 Rutoken Magistra + 0061 Rutoken Magistra + 0069 Reader + 0080 Rutoken PinPad Ex + 0081 Rutoken PinPad In + 0082 Rutoken PinPad 2 +0a8d Picturetel +0a8e Japan Aviation Electronics Industry, Ltd + 2011 Filter Driver For JAE XMC R/W +0a90 Candy Technology Co., Ltd +0a91 Globlink Technology, Inc. + 3801 Targus PAKP003 Mouse +0a92 EGO SYStems, Inc. + 0011 SYS WaveTerminal U2A + 0021 GIGAPort + 0031 GIGAPortAG + 0053 AudioTrak Optoplay + 0061 Waveterminal U24 + 0071 MAYA EX7 + 0091 Maya 44 + 00b1 MAYA EX5 + 1000 MIDI Mate + 1010 RoMI/O + 1020 M4U + 1030 M8U + 1090 KeyControl49 + 10a0 KeyControl25 +0a93 C Technologies AB + 0002 C-Pen 10 + 0005 MyPen Light + 000d Input Pen + 0010 C-Pen 20 + 0a93 PayPen +0a94 Intersense +0aa3 Lava Computer Mfg., Inc. +0aa4 Develco Elektronik +0aa5 First International Digital + 0002 irock! 500 Series + 0801 MP3 Player +0aa6 Perception Digital, Ltd + 0101 Hercules Jukebox + 1501 Store 'n' Go HD Drive +0aa7 Wincor Nixdorf International GmbH + 0100 POS Keyboard, TA58P-USB + 0101 POS Keyboard, TA85P-USB + 0102 POS Keyboard, TA59-USB + 0103 POS Keyboard, TA60-USB + 0104 SNIkey Keyboard, SNIKey-KB-USB + 0200 Operator Display, BA63-USB + 0201 Operator Display, BA66-USB + 0202 Operator Display & Scanner, XiCheck-BA63 + 0203 Operator Display & Scanner, XiCheck-BA66 + 0204 Graphics Operator Display, BA63GV + 0300 POS Printer (printer class mode), TH210 + 0301 POS Printer (native mode), TH210 + 0302 POS Printer (printer class mode), TH220 + 0303 POS Printer (native mode), TH220 + 0304 POS Printer, TH230 + 0305 Lottery Printer, XiPrintPlus + 0306 POS Printer (printer class mode), TH320 + 0307 POS Printer (native mode), TH320 + 0308 POS Printer (printer class mode), TH420 + 0309 POS Printer (native mode), TH420 + 030a POS Printer, TH200B + 0400 Lottery Scanner, Xiscan S + 0401 Lottery Scanner, Xiscan 3 + 0402 Programmable Magnetic Swipe Card Reader, MSRP-USB + 0500 IDE Adapter + 0501 Hub Printer Interface + 0502 Hub SNIKey Keyboard + 4304 Banking Printer TP07 + 4305 Banking Printer TP07c + 4500 WN Central Special Electronics +0aa8 TriGem Computer, Inc. + 0060 TG 11Mbps WLAN Mini Adapter + 1001 DreamComboM4100 + 3002 InkJet Color Printer + 8001 TG_iMON + 8002 TG_KLOSS + a001 TG_X2 + a002 TGVFD_KLOSS + ffda iMON_VFD +0aa9 Baromtec Co. + f01b Medion MD 6242 MP3 Player +0aaa Japan CBM Corp. +0aab Vision Shape Europe SA +0aac iCompression, Inc. +0aad Rohde & Schwarz GmbH & Co. KG + 0003 NRP-Z21 + 000c NRP-Z11 + 0013 NRP-Z22 + 0014 NRP-Z23 + 0015 NRP-Z24 + 0016 NRP-Z51 + 0017 NRP-Z52 + 0018 NRP-Z55 + 0019 NRP-Z56 + 0021 NRP-Z91 + 0023 NRP-Z81 + 002c NRP-Z31 + 002d NRP-Z37 + 002f NRP-Z27 + 0051 NRP-Z28 + 0052 NRP-Z98 + 0062 NRP-Z92 + 0070 NRP-Z57 + 0083 NRP-Z85 + 0095 NRP-Z86 +0aae NEC infrontia Corp. (Nitsuko) +0aaf Digitalway Co., Ltd +0ab0 Arrow Strong Electronics Co., Ltd +0ab1 FEIG ELECTRONIC GmbH + 0002 OBID RFID-Reader + 0004 OBID classic-pro +0aba Ellisys + 8001 Tracker 110 Protocol Analyzer + 8002 Explorer 200 Protocol Analyzer +0abe Stereo-Link + 0101 SL1200 DAC +0abf Diolan + 3370 I2C/SPI Adapter - U2C-12 +0ac3 Sanyo Semiconductor Company Micro +0ac4 Leco Corp. +0ac5 I & C Corp. +0ac6 Singing Electrons, Inc. +0ac7 Panwest Corp. +0ac8 Z-Star Microelectronics Corp. + 0301 Web Camera + 0302 ZC0302 Webcam + 0321 Vimicro generic vc0321 Camera + 0323 Luxya WC-1200 USB 2.0 Webcam + 0328 A4Tech PK-130MG + 0336 Elecom UCAM-DLQ30 + 301b ZC0301 Webcam + 303b ZC0303 Webcam + 305b ZC0305 Webcam + 307b USB 1.1 Webcam + 332d Vega USB 2.0 Camera + 3343 Sirius USB 2.0 Camera + 3370 Traveler TV 6500 SF Dia-scanner + 3420 Venus USB2.0 Camera + c001 Sony embedded vimicro Camera + c002 Visual Communication Camera VGP-VCC1 + c302 Vega USB 2.0 Camera + c303 Saturn USB 2.0 Camera + c326 Namuga 1.3M Webcam + c33f Webcam + c429 Lenovo ThinkCentre Web Camera + c42d Lenovo IdeaCentre Web Camera +0ac9 Micro Solutions, Inc. + 0000 Backpack CD-ReWriter + 0001 BACKPACK 2 Cable + 0010 BACKPACK + 0011 Backpack 40GB Hard Drive + 0110 BACKPACK + 0111 BackPack + 1234 BACKPACK +0aca OPEN Networks Ltd + 1060 OPEN NT1 Plus II +0acc Koga Electronics Co. +0acd ID Tech + 0300 IDT1221U RS-232 Adapter + 0401 Spectrum III Hybrid Smartcard Reader + 0630 Spectrum III Mag-Only Insert Reader (SPT3-355 Series) USB-CDC + 0810 SecurePIN (IDPA-506100Y) PIN Pad + 2030 ValueMag Magnetic Stripe Reader + 3710 ViVOpay Kiosk III +0ace ZyDAS + 1201 ZD1201 802.11b + 1211 ZD1211 802.11g + 1215 ZD1211B 802.11g + 1221 ZD1221 802.11n + 1602 ZyXEL Omni FaxModem 56K + 1608 ZyXEL Omni FaxModem 56K UNO + 1611 ZyXEL Omni FaxModem 56K Plus + 2011 Virtual media for 802.11bg + 20ff Virtual media for 802.11bg + a211 ZD1211 802.11b/g Wireless Adapter + b215 802.11bg +0acf Intoto, Inc. +0ad0 Intellix Corp. +0ad1 Remotec Technology, Ltd +0ad2 Service & Quality Technology Co., Ltd +0ada Data Encryption Systems Ltd. + 0005 DK2 +0ae3 Allion Computer, Inc. +0ae4 Taito Corp. +0ae7 Neodym Systems, Inc. +0ae8 System Support Co., Ltd +0ae9 North Shore Circuit Design L.L.P. +0aea SciEssence, LLC +0aeb TTP Communications, Ltd +0aec Neodio Technologies Corp. + 2101 SmartMedia Card Reader + 2102 CompactFlash Card Reader + 2103 MMC/SD Card Reader + 2104 MemoryStick Card Reader + 2201 SmartMedia+CompactFlash Card Reader + 2202 SmartMedia+MMC/SD Card Reader + 2203 SmartMedia+MemoryStick Card Reader + 2204 CompactFlash+MMC/SD Card Reader + 2205 CompactFlash+MemoryStick Card Reader + 2206 MMC/SD+MemoryStick Card Reader + 2301 SmartMedia+CompactFlash+MMC/SD Card Reader + 2302 SmartMedia+CompactFlash+MemoryStick Card Reader + 2303 SmartMedia+MMC/SD+MemoryStick Card Reader + 2304 CompactFlash+MMC/SD+MemoryStick Card Reader + 3016 MMC/SD+Memory Stick Card Reader + 3050 ND3050 8-in-1 Card Reader + 3060 1.1 FS Card Reader + 3101 MMC/SD Card Reader + 3102 MemoryStick Card Reader + 3201 MMC/SD+MemoryStick Card Reader + 3216 HS Card Reader + 3260 7-in-1 Card Reader + 5010 ND5010 Card Reader +0af0 Option + 5000 UMTS Card + 6000 GlobeTrotter 3G datacard + 6300 GT 3G Quad UMTS/GPRS Card + 6600 GlobeTrotter 3G+ datacard + 6711 GlobeTrotter Express 7.2 v2 + 6971 Globetrotter HSDPA Modem + 7251 Globetrotter HSUPA Modem (aka iCON HSUPA E) + 7501 Globetrotter HSUPA Modem (icon 411 aka "Vodafone K3760") + 7601 Globetrotter MO40x 3G Modem (GTM 382) + 7701 Globetrotter HSUPA Modem (aka icon 451) + d055 Globetrotter GI0505 [iCON 505] +0af6 Silver I Co., Ltd +0af7 B2C2, Inc. + 0101 Digital TV USB Receiver (DVB-S/T/C / ATSC) +0af9 Hama, Inc. + 0010 USB SightCam 100 + 0011 Micro Innovations IC50C Webcam +0afa DMC Co., Ltd. + 07d2 Controller Board for Projected Capacitive Touch Screen DUS3000 +0afc Zaptronix Ltd +0afd Tateno Dennou, Inc. +0afe Cummins Engine Co. +0aff Jump Zone Network Products, Inc. +0b00 INGENICO +0b05 ASUSTek Computer, Inc. + 0001 MeMO Pad HD 7 (CD-ROM mode) + 0301 MyPal A696 GPS PDA + 1101 Mass Storage (UISDMC4S) + 1706 WL-167G v1 802.11g Adapter [Ralink RT2571] + 1707 WL-167G v1 802.11g Adapter [Ralink RT2571] + 1708 Mass Storage Device + 170b Multi card reader + 170c WL-159g 802.11bg [ZyDAS ZD1211B+AL2230] + 170d 802.11b/g Wireless Network Adapter + 1712 BT-183 Bluetooth 2.0+EDR adapter + 1715 2045 Bluetooth 2.0 Device with trace filter + 1716 Bluetooth Device + 1717 WL169gE 802.11g Adapter [Broadcom 4320 USB] + 171b A9T wireless 802.11bg + 171c 802.11b/g Wireless Network Adapter + 171f My Cinema U3000 Mini [DiBcom DiB7700P] + 1723 WL-167G v2 802.11g Adapter [Ralink RT2571W] + 1724 RT2573 + 1726 Laptop OLED Display + 172a 802.11n Network Adapter + 172b 802.11n Network Adapter + 1731 802.11n Network Adapter + 1732 802.11n Network Adapter + 1734 AF-200 + 173c BT-183 Bluetooth 2.0 + 173f My Cinema U3100 Mini + 1742 802.11n Network Adapter + 1743 Xonar U1 Audio Station + 1751 BT-253 Bluetooth Adapter + 175b Laptop OLED Display + 1760 802.11n Network Adapter + 1761 USB-N11 802.11n Network Adapter [Ralink RT2870] + 1774 Gobi Wireless Modem (QDL mode) + 1776 Gobi Wireless Modem + 1779 My Cinema U3100 Mini Plus [AF9035A] + 1784 USB-N13 802.11n Network Adapter (rev. A1) [Ralink RT3072] + 1786 USB-N10 802.11n Network Adapter [Realtek RTL8188SU] + 1788 BT-270 Bluetooth Adapter + 1791 WL-167G v3 802.11n Adapter [Realtek RTL8188SU] + 179d USB-N53 802.11abgn Network Adapter [Ralink RT3572] + 179e Eee Note EA800 (network mode) + 179f Eee Note EA800 (tablet mode) + 17a0 Xonar U3 sound card + 17a1 Eee Note EA800 (mass storage mode) + 17ab USB-N13 802.11n Network Adapter (rev. B1) [Realtek RTL8192CU] + 17ba N10 Nano 802.11n Network Adapter [Realtek RTL8192CU] + 17c7 WL-330NUL + 17c9 USB-AC53 802.11a/b/g/n/ac Wireless Adapter [Broadcom BCM43526] + 17cb Broadcom BCM20702A0 Bluetooth + 17d1 AC51 802.11a/b/g/n/ac Wireless Adapter [Mediatek MT7610U] + 17d2 USB-AC56 802.11a/b/g/n/ac Wireless Adapter [Realtek RTL8812AU] + 17d3 USB-N10 v2 802.11b/g/n Wireless Adapter [MediaTek MT7601U] + 17db USB-AC50 802.11a/b/g/n/ac (1x1) Wireless Adapter [MediaTek MT7610U] + 17e8 USB-N14 802.11b/g/n (2x2) Wireless Adapter [Ralink RT5372] + 17eb USB-AC55 802.11a/b/g/n/ac Wireless Adapter [MediaTek MT7612U] + 180a Broadcom BCM20702 Single-Chip Bluetooth 4.0 + LE + 1817 USB-AC68 802.11a/b/g/n/ac (4x4) Wireless Adapter [Realtek RTL8814AU] + 1825 Qualcomm Bluetooth 4.1 + 4c80 Transformer Pad TF300TG + 4c90 Transformer Pad Infinity TF700 + 4c91 Transformer Pad Infinity TF700 (Debug mode) + 4ca0 Transformer Pad TF701T + 4ca1 Transformer Pad TF701T (Debug mode) + 4d00 Transformer Prime TF201 + 4d01 Transformer Prime TF201 (debug mode) + 4daf Transformer Pad Infinity TF700 (Fastboot) + 5410 MeMO Pad HD 7 (MTP mode) + 5412 MeMO Pad HD 7 (PTP mode) + 550f Fonepad 7 + 6101 Cable Modem + 620a Remote NDIS Device + 7772 Zenfone GO (ZB500KL) (MTP mode) + 7773 Zenfone GO (ZB500KL) (Debug, MTP mode) + 7774 Zenfone GO (ZB500KL) (RNDIS mode) + 7775 Zenfone GO (ZB500KL) (Debug, RNDIS mode) + 7776 Zenfone GO (ZB500KL) (PTP mode) + 7777 Zenfone GO (ZB500KL) (Debug, PTP mode) + b700 Broadcom Bluetooth 2.1 +0b0b Datamax-O'Neil + 106e Datamax E-4304 +0b0c Todos AB + 0009 Todos Argos Mini II Smart Card Reader + 001e e.dentifier2 (ABN AMRO electronic banking card reader NL) + 002e C200 smartcard controller (Nordea card reader) + 003f Todos C400 smartcard controller (Handelsbanken card reader) + 0050 Argos Mini II Smart Card Reader (CCID) +0b0d ProjectLab + 0000 CenturyCD +0b0e GN Netcom + 0348 Jabra UC VOICE 550a MS + 034c Jabra UC Voice 750 MS + 0410 Jabra SPEAK 410 + 0420 Jabra SPEAK 510 + 094d GN Netcom / Jabra REVO Wireless + 1017 Jabra PRO 930 + 1022 Jabra PRO 9450, Type 9400BS (DECT Headset) + 1041 Jabra PRO 9460 + 1900 Jabra Biz 1900 + 2007 GN 2000 Stereo Corded Headset + 620c Jabra BT620s + 9330 Jabra GN9330 Headset +0b0f AVID Technology +0b10 Pcally +0b11 I Tech Solutions Co., Ltd +0b1e Electronic Warfare Assoc., Inc. (EWA) + 8007 Blackhawk USB560-BP JTAG Emulator +0b1f Insyde Software Corp. +0b20 TransDimension, Inc. +0b21 Yokogawa Electric Corp. +0b22 Japan System Development Co., Ltd +0b23 Pan-Asia Electronics Co., Ltd +0b24 Link Evolution Corp. +0b27 Ritek Corp. +0b28 Kenwood Corp. +0b2c Village Center, Inc. +0b30 PNY Technologies, Inc. + 0006 SM Media-Shuttle Card Reader +0b33 Contour Design, Inc. + 0020 ShuttleXpress + 0030 ShuttlePro v2 + 0401 RollerMouse Free 2 + 0700 RollerMouse Pro +0b37 Hitachi ULSI Systems Co., Ltd +0b38 Gear Head + 0003 Keyboard + 0010 107-Key Keyboard +0b39 Omnidirectional Control Technology, Inc. + 0001 Composite USB PS2 Converter + 0109 USB TO Ethernet + 0421 Serial + 0801 USB-Parallel Bridge + 0901 OCT To Fast Ethernet Converter + 0c03 LAN DOCK Serial Converter +0b3a IPaxess +0b3b Tekram Technology Co., Ltd + 0163 TL-WN320G 1.0 WLAN Adapter + 1601 Allnet 0193 802.11b Adapter + 1602 ZyXEL ZyAIR B200 802.11b Adapter + 1612 AIR.Mate 2@net 802.11b Adapter + 1613 802.11b Wireless LAN Adapter + 1620 Allnet Wireless Network Adapter [Envara WiND512] + 1630 QuickWLAN 802.11bg + 5630 802.11bg + 6630 ZD1211 +0b3c Olivetti Techcenter + a010 Simple_Way Printer/Scanner/Copier + c000 Olicard 100 + c700 Olicard 100 (Mass Storage mode) +0b3e Kikusui Electronics Corp. +0b41 Hal Corp. + 0011 Crossam2+USB IR commander +0b43 Play.com, Inc. + 0003 PS2 Controller Converter + 0005 GameCube Adaptor +0b47 Sportbug.com, Inc. +0b48 TechnoTrend AG + 1003 Technotrend/Hauppauge USB-Nova + 1004 TT-PCline + 1005 Technotrend/Hauppauge USB-Nova + 1006 Technotrend/Hauppauge DEC3000-s + 1007 TT-micro plus Device + 1008 Technotrend/Hauppauge DEC2000-t + 1009 Technotrend/Hauppauge DEC2540-t + 3001 DVB-S receiver + 3002 DVB-C receiver + 3003 DVB-T receiver + 3004 TT TV-Stick + 3005 TT TV-Stick (8kB EEPROM) + 3006 TT-connect S-2400 DVB-S receiver + 3007 TT-connect S2-3600 + 3008 TT-connect + 3009 TT-connect S-2400 DVB-S receiver (8kB EEPROM) + 300a TT-connect S2-3650 CI + 300b TT-connect C-3650 CI + 300c TT-connect T-3650 CI + 300d TT-connect CT-3650 CI + 300e TT-connect C-2400 + 3011 TT-connect S2-4600 + 3012 TT-connect CT2-4650 CI + 3014 TT-TVStick CT2-4400 + 3015 TT-connect CT2-4650 CI + 3017 TT-connect S2-4650 CI +0b49 ASCII Corp. + 064f Trance Vibrator +0b4b Pine Corp. Ltd. + 0100 D'music MP3 Player +0b4d Graphtec America, Inc. + 110a Graphtec CC200-20 +0b4e Musical Electronics, Ltd + 6500 MP3 Player + 8028 MP3 Player + 8920 MP3 Player +0b50 Dumpries Co., Ltd +0b51 Comfort Keyboard Co. + 0020 Comfort Keyboard +0b52 Colorado MicroDisplay, Inc. +0b54 Sinbon Electronics Co., Ltd +0b56 TYI Systems, Ltd +0b57 Beijing HanwangTechnology Co., Ltd +0b59 Lake Communications, Ltd +0b5a Corel Corp. +0b5f Green Electronics Co., Ltd +0b60 Nsine, Ltd +0b61 NEC Viewtechnology, Ltd +0b62 Orange Micro, Inc. + 000b Bluetooth Device + 0059 iBOT2 Webcam +0b63 ADLink Technology, Inc. +0b64 Wonderful Wire Cable Co., Ltd +0b65 Expert Magnetics Corp. +0b66 Cybiko Inc. + 0041 Xtreme +0b67 Fairbanks Scales + 555e SCB-R9000 +0b69 CacheVision +0b6a Maxim Integrated Products + a132 WUP-005 [Nintendo Wii U Pro Controller] +0b6f Nagano Japan Radio Co., Ltd +0b70 PortalPlayer, Inc. + 00ba iRiver H10 20GB +0b71 SHIN-EI Sangyo Co., Ltd +0b72 Embedded Wireless Technology Co., Ltd +0b73 Computone Corp. +0b75 Roland DG Corp. +0b79 Sunrise Telecom, Inc. +0b7a Zeevo, Inc. + 07d0 Bluetooth Dongle +0b7b Taiko Denki Co., Ltd +0b7c ITRAN Communications, Ltd +0b7d Astrodesign, Inc. +0b81 id3 Technologies + 0001 Biothentic II smartcard reader with fingerprint sensor + 0002 DFU-Enabled Devices (DFU) + 0012 BioPAD biometric module (DFU + CDC) + 0102 Certis V1 fingerprint reader + 0103 Certis V2 fingerprint reader + 0200 CL1356T / CL1356T5 / CL1356A smartcard readers (CCID) + 0201 CL1356T / CL1356T5 / CL1356A smartcard readers (DFU + CCID) + 0220 CL1356A FFPJP smartcard reader (CCID + HID) + 0221 CL1356A smartcard reader (DFU + CCID + HID) +0b84 Rextron Technology, Inc. +0b85 Elkat Electronics, Sdn., Bhd. +0b86 Exputer Systems, Inc. + 5100 XMC5100 Zippy Drive + 5110 XMC5110 Flash Drive + 5200 XMC5200 Zippy Drive + 5201 XMC5200 Zippy Drive + 5202 XMC5200 Zippy Drive + 5280 XMC5280 Storage Drive + fff0 ISP5200 Debugger +0b87 Plus-One I & T, Inc. +0b88 Sigma Koki Co., Ltd, Technology Center +0b89 Advanced Digital Broadcast, Ltd +0b8c SMART Technologies Inc. + 0001 Interactive Whiteboard Controller (SB6) (HID) + 00c3 Sympodium ID350 +0b95 ASIX Electronics Corp. + 1720 10/100 Ethernet + 1780 AX88178 + 1790 AX88179 Gigabit Ethernet + 7720 AX88772 + 772a AX88772A Fast Ethernet + 772b AX88772B + 7e2b AX88772B Fast Ethernet Controller +0b96 Sewon Telecom +0b97 O2 Micro, Inc. + 7732 Smart Card Reader + 7761 Oz776 1.1 Hub + 7762 Oz776 SmartCard Reader + 7772 OZ776 CCID Smartcard Reader +0b98 Playmates Toys, Inc. +0b99 Audio International, Inc. +0b9b Dipl.-Ing. Stefan Kunde + 4012 Reflex RC-controller Interface +0b9d Softprotec Co. +0b9f Chippo Technologies +0baf U.S. Robotics + 00e5 USR6000 + 00eb USR1120 802.11b Adapter + 00ec 56K Faxmodem + 00f1 SureConnect ADSL ATM Adapter + 00f2 SureConnect ADSL Loader + 00f5 SureConnect ADSL ATM Adapter + 00f6 SureConnect ADSL Loader + 00f7 SureConnect ADSL ATM Adapter + 00f8 SureConnect ADSL Loader + 00f9 SureConnect ADSL ATM Adapter + 00fa SureConnect ADSL Loader + 00fb SureConnect ADSL Ethernet/USB Router + 0111 USR5420 802.11g Adapter [Broadcom 4320 USB] + 0118 U5 802.11g Adapter + 011b Wireless MAXg Adapter [Broadcom 4320] + 0121 USR5423 802.11bg Wireless Adapter [ZyDAS ZD1211B] + 0303 USR5637 56K Faxmodem + 6112 FaxModem Model 5633 +0bb0 Concord Camera Corp. + 0100 Sound Vision Stream + 5007 3340z/Rollei DC3100 +0bb1 Infinilink Corp. +0bb2 Ambit Microsystems Corp. + 0302 U10H010 802.11b Wireless Adapter [Intersil PRISM 3] + 6098 USB Cable Modem +0bb3 Ofuji Technology +0bb4 HTC (High Tech Computer Corp.) + 0001 Android Phone via mass storage [Wiko Cink Peax 2] + 00ce mmO2 XDA GSM/GPRS Pocket PC + 00cf SPV C500 Smart Phone + 0a01 PocketPC Sync + 0a02 Himalaya GSM/GPRS Pocket PC + 0a03 PocketPC Sync + 0a04 PocketPC Sync + 0a05 PocketPC Sync + 0a06 PocketPC Sync + 0a07 Magician PocketPC SmartPhone / O2 XDA + 0a08 PocketPC Sync + 0a09 PocketPC Sync + 0a0a PocketPC Sync + 0a0b PocketPC Sync + 0a0c PocketPC Sync + 0a0d PocketPC Sync + 0a0e PocketPC Sync + 0a0f PocketPC Sync + 0a10 PocketPC Sync + 0a11 PocketPC Sync + 0a12 PocketPC Sync + 0a13 PocketPC Sync + 0a14 PocketPC Sync + 0a15 PocketPC Sync + 0a16 PocketPC Sync + 0a17 PocketPC Sync + 0a18 PocketPC Sync + 0a19 PocketPC Sync + 0a1a PocketPC Sync + 0a1b PocketPC Sync + 0a1c PocketPC Sync + 0a1d PocketPC Sync + 0a1e PocketPC Sync + 0a1f PocketPC Sync + 0a20 PocketPC Sync + 0a21 PocketPC Sync + 0a22 PocketPC Sync + 0a23 PocketPC Sync + 0a24 PocketPC Sync + 0a25 PocketPC Sync + 0a26 PocketPC Sync + 0a27 PocketPC Sync + 0a28 PocketPC Sync + 0a29 PocketPC Sync + 0a2a PocketPC Sync + 0a2b PocketPC Sync + 0a2c PocketPC Sync + 0a2d PocketPC Sync + 0a2e PocketPC Sync + 0a2f PocketPC Sync + 0a30 PocketPC Sync + 0a31 PocketPC Sync + 0a32 PocketPC Sync + 0a33 PocketPC Sync + 0a34 PocketPC Sync + 0a35 PocketPC Sync + 0a36 PocketPC Sync + 0a37 PocketPC Sync + 0a38 PocketPC Sync + 0a39 PocketPC Sync + 0a3a PocketPC Sync + 0a3b PocketPC Sync + 0a3c PocketPC Sync + 0a3d PocketPC Sync + 0a3e PocketPC Sync + 0a3f PocketPC Sync + 0a40 PocketPC Sync + 0a41 PocketPC Sync + 0a42 PocketPC Sync + 0a43 PocketPC Sync + 0a44 PocketPC Sync + 0a45 PocketPC Sync + 0a46 PocketPC Sync + 0a47 PocketPC Sync + 0a48 PocketPC Sync + 0a49 PocketPC Sync + 0a4a PocketPC Sync + 0a4b PocketPC Sync + 0a4c PocketPC Sync + 0a4d PocketPC Sync + 0a4e PocketPC Sync + 0a4f PocketPC Sync + 0a50 SmartPhone (MTP) + 0a51 SPV C400 / T-Mobile SDA GSM/GPRS Pocket PC + 0a52 SmartPhone Sync + 0a53 SmartPhone Sync + 0a54 SmartPhone Sync + 0a55 SmartPhone Sync + 0a56 SmartPhone Sync + 0a57 SmartPhone Sync + 0a58 SmartPhone Sync + 0a59 SmartPhone Sync + 0a5a SmartPhone Sync + 0a5b SmartPhone Sync + 0a5c SmartPhone Sync + 0a5d SmartPhone Sync + 0a5e SmartPhone Sync + 0a5f SmartPhone Sync + 0a60 SmartPhone Sync + 0a61 SmartPhone Sync + 0a62 SmartPhone Sync + 0a63 SmartPhone Sync + 0a64 SmartPhone Sync + 0a65 SmartPhone Sync + 0a66 SmartPhone Sync + 0a67 SmartPhone Sync + 0a68 SmartPhone Sync + 0a69 SmartPhone Sync + 0a6a SmartPhone Sync + 0a6b SmartPhone Sync + 0a6c SmartPhone Sync + 0a6d SmartPhone Sync + 0a6e SmartPhone Sync + 0a6f SmartPhone Sync + 0a70 SmartPhone Sync + 0a71 SmartPhone Sync + 0a72 SmartPhone Sync + 0a73 SmartPhone Sync + 0a74 SmartPhone Sync + 0a75 SmartPhone Sync + 0a76 SmartPhone Sync + 0a77 SmartPhone Sync + 0a78 SmartPhone Sync + 0a79 SmartPhone Sync + 0a7a SmartPhone Sync + 0a7b SmartPhone Sync + 0a7c SmartPhone Sync + 0a7d SmartPhone Sync + 0a7e SmartPhone Sync + 0a7f SmartPhone Sync + 0a80 SmartPhone Sync + 0a81 SmartPhone Sync + 0a82 SmartPhone Sync + 0a83 SmartPhone Sync + 0a84 SmartPhone Sync + 0a85 SmartPhone Sync + 0a86 SmartPhone Sync + 0a87 SmartPhone Sync + 0a88 SmartPhone Sync + 0a89 SmartPhone Sync + 0a8a SmartPhone Sync + 0a8b SmartPhone Sync + 0a8c SmartPhone Sync + 0a8d SmartPhone Sync + 0a8e SmartPhone Sync + 0a8f SmartPhone Sync + 0a90 SmartPhone Sync + 0a91 SmartPhone Sync + 0a92 SmartPhone Sync + 0a93 SmartPhone Sync + 0a94 SmartPhone Sync + 0a95 SmartPhone Sync + 0a96 SmartPhone Sync + 0a97 SmartPhone Sync + 0a98 SmartPhone Sync + 0a99 SmartPhone Sync + 0a9a SmartPhone Sync + 0a9b SmartPhone Sync + 0a9c SmartPhone Sync + 0a9d SmartPhone Sync + 0a9e SmartPhone Sync + 0a9f SmartPhone Sync + 0b03 Ozone Mobile Broadband + 0b04 Hermes / TyTN / T-Mobile MDA Vario II / O2 Xda Trion + 0b05 P3600 + 0b06 Athena / Advantage x7500 / Dopod U1000 / T-Mobile AMEO + 0b0c Elf / Touch / P3450 / T-Mobile MDA Touch / O2 Xda Nova / Dopod S1 + 0b1f Sony Ericsson XPERIA X1 + 0b2f Rhodium + 0b51 Qtek 8310 mobile phone [Tornado Noble] + 0bce Vario MDA + 0c01 Dream / ADP1 / G1 / Magic / Tattoo + 0c02 Dream / ADP1 / G1 / Magic / Tattoo (Debug) + 0c03 Android Phone [Fairphone First Edition (FP1)] + 0c13 Diamond + 0c1f Sony Ericsson XPERIA X1 + 0c5f Snap + 0c86 Sensation + 0c87 Desire (debug) + 0c8d EVO 4G (debug) + 0c91 Vision + 0c94 Vision + 0c97 Legend + 0c99 Desire (debug) + 0c9e Incredible + 0ca2 Desire HD (debug mode) + 0ca5 Android Phone [Evo Shift 4G] + 0cae T-Mobile MyTouch 4G Slide [Doubleshot] + 0de5 One (M7) + 0dea M7_UL [HTC One] + 0f25 One M8 + 0f63 Desire 610 Via MTP + 0f64 Desire 601 + 0fb4 Remote NDIS based Device + 0ff8 Desire HD (Tethering Mode) + 0ff9 Desire / Desire HD / Hero / Thunderbolt (Charge Mode) + 0ffe Desire HD (modem mode) + 0fff Android Fastboot Bootloader + 2008 Android Phone via MTP [Wiko Cink Peax 2] + 200b Android Phone via PTP [Wiko Cink Peax 2] +0bb5 Murata Manufacturing Co., Ltd +0bb6 Network Alchemy +0bb7 Joytech Computer Co., Ltd +0bb8 Hitachi Semiconductor and Devices Sales Co., Ltd +0bb9 Eiger M&C Co., Ltd +0bba ZAccess Systems +0bbb General Meters Corp. +0bbc Assistive Technology, Inc. +0bbd System Connection, Inc. +0bc0 Knilink Technology, Inc. +0bc1 Fuw Yng Electronics Co., Ltd +0bc2 Seagate RSS LLC + 0502 ST3300601CB-RK 300 GB External Hard Drive + 0503 ST3250824A [Barracuda 7200.9] + 2000 Storage Adapter V3 (TPP) + 2100 FreeAgent Go + 2200 FreeAgent Go FW + 2300 Expansion Portable + 231a Expansion Portable + 2320 USB 3.0 bridge [Portable Expansion Drive] + 2321 Expansion Portable + 2322 SRD0NF1 Expansion Portable (STEA) + 2340 FreeAgent External Hard Drive + 3000 FreeAgent Desktop + 3008 FreeAgent Desk 1TB + 3101 FreeAgent XTreme 640GB + 3312 SRD00F2 Expansion Desktop Drive (STBV) + 3320 SRD00F2 [Expansion Desktop Drive] + 3322 SRD0NF2 [Expansion Desktop Drive] + 3332 Expansion + 5020 FreeAgent GoFlex + 5021 FreeAgent GoFlex USB 2.0 + 5030 FreeAgent GoFlex Upgrade Cable STAE104 + 5031 FreeAgent GoFlex USB 3.0 + 5032 SATA cable + 5070 FreeAgent GoFlex Desk + 5071 FreeAgent GoFlex Desk + 50a1 FreeAgent GoFlex Desk + 50a5 FreeAgent GoFlex Desk USB 3.0 + 5121 FreeAgent GoFlex + 5161 FreeAgent GoFlex dock + 6126 Maxtor D3 Station 5TB + 61b6 Maxtor HX-M101TCB/GM [M3 Portable 1TB] + 61b7 Maxtor M3 Portable + a003 Backup Plus + a0a1 Backup Plus Desktop + a0a4 Backup Plus Desktop Drive + ab00 Slim Portable Drive + ab1e Backup Plus Portable Drive + ab20 Backup Plus Portable Drive + ab21 Backup Plus Slim + ab24 Backup Plus Portable Drive + ab26 Backup Plus Slim Portable Drive 1 TB + ab31 Backup Plus Desktop Drive (5TB) + ab34 Backup Plus + ab38 Backup Plus Hub +0bc3 IPWireless, Inc. + 0001 UMTS-TDD (TD-CDMA) modem +0bc4 Microcube Corp. +0bc5 JCN Co., Ltd +0bc6 ExWAY, Inc. +0bc7 X10 Wireless Technology, Inc. + 0001 ActiveHome (ACPI-compliant) + 0002 Firecracker Interface (ACPI-compliant) + 0003 VGA Video Sender (ACPI-compliant) + 0004 X10 Receiver + 0005 Wireless Transceiver (ACPI-compliant) + 0006 Wireless Transceiver (ACPI-compliant) + 0007 Wireless Transceiver (ACPI-compliant) + 0008 Wireless Transceiver (ACPI-compliant) + 0009 Wireless Transceiver (ACPI-compliant) + 000a Wireless Transceiver (ACPI-compliant) + 000b Transceiver (ACPI-compliant) + 000c Transceiver (ACPI-compliant) + 000d Transceiver (ACPI-compliant) + 000e Transceiver (ACPI-compliant) + 000f Transceiver (ACPI-compliant) +0bc8 Telmax Communications +0bc9 ECI Telecom, Ltd +0bca Startek Engineering, Inc. +0bcb Perfect Technic Enterprise Co., Ltd +0bd7 Andrew Pargeter & Associates + a021 Amptek DP4 multichannel signal analyzer +0bda Realtek Semiconductor Corp. + 0103 USB 2.0 Card Reader + 0104 Mass Storage Device + 0106 Mass Storage Device + 0107 Mass Storage Device + 0108 Mass Storage Device + 0109 microSDXC Card Reader [Hama 00091047] + 0111 RTS5111 Card Reader Controller + 0113 Mass Storage Device + 0115 Mass Storage Device (Multicard Reader) + 0116 RTS5116 Card Reader Controller + 0117 Mass Storage Device + 0118 Mass Storage Device + 0119 Storage Device (SD card reader) + 0129 RTS5129 Card Reader Controller + 0138 RTS5138 Card Reader Controller + 0139 RTS5139 Card Reader Controller + 0151 Mass Storage Device (Multicard Reader) + 0152 Mass Storage Device + 0153 3-in-1 (SD/SDHC/SDXC) Card Reader + 0156 Mass Storage Device + 0157 Mass Storage Device + 0158 USB 2.0 multicard reader + 0159 RTS5159 Card Reader Controller + 0161 Mass Storage Device + 0168 Mass Storage Device + 0169 Mass Storage Device + 0171 Mass Storage Device + 0176 Mass Storage Device + 0178 Mass Storage Device + 0179 RTL8188ETV Wireless LAN 802.11n Network Adapter + 0184 RTS5182 Card Reader + 0186 Card Reader + 0301 multicard reader + 0307 Card Reader + 0326 Card reader + 1724 RTL8723AU 802.11n WLAN Adapter + 2831 RTL2831U DVB-T + 2832 RTL2832U DVB-T + 2838 RTL2838 DVB-T + 5401 RTL 8153 USB 3.0 hub with gigabit ethernet + 570c Asus laptop camera + 5730 HP 2.0MP High Definition Webcam + 5751 Integrated Webcam + 5775 HP "Truevision HD" laptop camera + 57b3 Acer 640 × 480 laptop camera + 57da Built-In Video Camera + 58c8 Integrated Webcam HD + 8150 RTL8150 Fast Ethernet Adapter + 8151 RTL8151 Adapteon Business Mobile Networks BV + 8152 RTL8152 Fast Ethernet Adapter + 8153 RTL8153 Gigabit Ethernet Adapter + 8171 RTL8188SU 802.11n WLAN Adapter + 8172 RTL8191SU 802.11n WLAN Adapter + 8174 RTL8192SU 802.11n WLAN Adapter + 8176 RTL8188CUS 802.11n WLAN Adapter + 8178 RTL8192CU 802.11n WLAN Adapter + 8179 RTL8188EUS 802.11n Wireless Network Adapter + 817f RTL8188RU 802.11n WLAN Adapter + 8187 RTL8187 Wireless Adapter + 8189 RTL8187B Wireless 802.11g 54Mbps Network Adapter + 818b RTL8192EU 802.11b/g/n WLAN Adapter + 8192 RTL8191SU 802.11n Wireless Adapter + 8193 RTL8192DU 802.11an WLAN Adapter + 8197 RTL8187B Wireless Adapter + 8198 RTL8187B Wireless Adapter + 8199 RTL8187SU 802.11g WLAN Adapter + 8812 RTL8812AU 802.11a/b/g/n/ac 2T2R DB WLAN Adapter + 8813 RTL8814AU 802.11a/b/g/n/ac Wireless Adapter + a811 RTL8811AU 802.11a/b/g/n/ac WLAN Adapter +0bdb Ericsson Business Mobile Networks BV + 1000 BV Bluetooth Device + 1002 Bluetooth Device 1.2 + 1049 C3607w Mobile Broadband Module + 1900 F3507g Mobile Broadband Module + 1902 F3507g v2 Mobile Broadband Module + 1904 F3607gw Mobile Broadband Module + 1905 F3607gw v2 Mobile Broadband Module + 1906 F3607gw v3 Mobile Broadband Module + 1909 F3307 v2 Mobile Broadband Module + 190a F3307 Mobile Broadband Module + 190b C3607w v2 Mobile Broadband Module + 1926 H5321 gw Mobile Broadband Driver +0bdc Y Media Corp. +0bdd Orange PCS +0be2 Kanda Tsushin Kogyo Co., Ltd +0be3 TOYO Corp. +0be4 Elka International, Ltd +0be5 DOME imaging systems, Inc. +0be6 Dong Guan Humen Wonderful Wire Cable Factory +0bed MEI + 1100 CASHFLOW SC + 1101 Series 2000 Combo Acceptor +0bee LTK Industries, Ltd +0bef Way2Call Communications +0bf0 Pace Micro Technology PLC +0bf1 Intracom S.A. + 0001 netMod Driver Ver 2.4.17 (CAPI) + 0002 netMod Driver Ver 2.4 (CAPI) + 0003 netMod Driver Ver 2.4 (CAPI) +0bf2 Konexx +0bf6 Addonics Technologies, Inc. + 0103 Storage Device + 1234 Storage Device + a000 Cable 205 (TPP) + a001 Cable 205 + a002 IDE Bridge +0bf7 Sunny Giken, Inc. +0bf8 Fujitsu Siemens Computers + 1001 Fujitsu Pocket Loox 600 PDA + 1006 SmartCard Reader 2A + 1007 Connect2Air E-5400 802.11g Wireless Adapter + 1009 Connect2Air E-5400 D1700 802.11g Wireless Adapter [Intersil ISL3887] + 100c Keyboard FSC KBPC PX + 100f miniCard D2301 802.11bg Wireless Module [SiS 163U] + 1017 Keyboard KB SCR + 101f Fujitsu Full HD Pro Webcam +0bfd Kvaser AB + 0004 USBcan II + 000b Leaf Light HS + 000e Leaf SemiPro HS +0c00 FireFly Mouse Mat + 1607 Apex M500 +0c04 MOTO Development Group, Inc. +0c05 Appian Graphics +0c06 Hasbro Games, Inc. +0c07 Infinite Data Storage, Ltd +0c08 Agate + 0378 Q 16MB Storage Device +0c09 Comjet Information System + a5a5 Litto Version USB2.0 +0c0a Highpoint Technologies, Inc. +0c0b Dura Micro, Inc. (Acomdata) + 27cb 6-in-1 Flash Reader and Writer + 27d7 Multi Memory reader/writer MD-005 + 27da Multi Memory reader/writer MD-005 + 27dc Multi Memory reader/writer MD-005 + 27e7 3,5'' HDD case MD-231 + 27ee 3,5'' HDD case MD-231 + 2814 3,5'' HDD case MD-231 + 2815 3,5'' HDD case MD-231 + 281d 3,5'' HDD case MD-231 + 5fab Storage Adaptor + a109 CF/SM Reader and Writer + a10c SD/MS Reader and Writer + b001 USB 2.0 Mass Storage IDE adapter + b004 MMC/SD Reader and Writer +0c12 Zeroplus + 0005 PSX Vibration Feedback Converter + 0030 PSX Vibration Feedback Converter + 700e Logic Analyzer (LAP-C-16032) + 8801 Xbox Controller + 8802 Xbox Controller + 8809 Red Octane Ignition Xbox DDR Pad + 880a Pelican Eclipse PL-2023 + 8810 Xbox Controller + 9902 VibraX +0c15 Iris Graphics +0c16 Gyration, Inc. + 0002 RF Technology Receiver + 0003 RF Technology Receiver + 0008 RF Technology Receiver + 0080 eHome Infrared Receiver + 0081 eHome Infrared Receiver +0c17 Cyberboard A/S +0c18 SynerTek Korea, Inc. +0c19 cyberPIXIE, Inc. +0c1a Silicon Motion, Inc. +0c1b MIPS Technologies +0c1c Hang Zhou Silan Electronics Co., Ltd +0c22 Tally Printer Corp. +0c23 Lernout + Hauspie +0c24 Taiyo Yuden + 0001 Bluetooth Adaptor + 0002 Bluetooth Device2 + 0005 Bluetooth Device(BC04-External) + 000b Bluetooth Device(BC04-External) + 000c Bluetooth Adaptor + 000e Bluetooth Device(BC04-External) + 000f Bluetooth Device (V2.0+EDR) + 0010 Bluetooth Device(BC04-External) + 0012 Bluetooth Device(BC04-External) + 0018 Bluetooth Device(BC04-External) + 0019 Bluetooth Device + 0021 Bluetooth Device (V2.1+EDR) + 0c24 Bluetooth Device(SAMPLE) + ffff Bluetooth module with BlueCore in DFU mode +0c25 Sampo Corp. + 0310 Scream Cam +0c26 Prolific Technology Inc. + 0018 USB-Serial Controller [Icom Inc. OPC-478UC] +0c27 RFIDeas, Inc + 3bfa pcProx Card Reader +0c2e Metrologic Instruments + 0007 Metrologic MS7120 Barcode Scanner (IBM SurePOS mode) + 0200 MS7120 Barcode Scanner + 0204 Metrologic MS7120 Barcode Scanner (keyboard mode) + 0206 Metrologic MS4980 Barcode Scanner + 0700 Metrologic MS7120 Barcode Scanner (uni-directional serial mode) + 0720 Metrologic MS7120 Barcode Scanner (bi-directional serial mode) + 0b61 Vuquest 3310g + 0b6a Vuquest 3310 Area-Imaging Scanner + 0b81 Barcode scanner Voyager 1400g Series +0c30 Mutoh Industries Ltd + 6010 Kona 1400 Cutting Plotter +0c35 Eagletron, Inc. +0c36 E Ink Corp. +0c37 e.Digital +0c38 Der An Electric Wire & Cable Co., Ltd +0c39 IFR +0c3a Furui Precise Component (Kunshan) Co., Ltd +0c3b Komatsu, Ltd +0c3c Radius Co., Ltd +0c3d Innocom, Inc. +0c3e Nextcell, Inc. +0c44 Motorola iDEN + 0021 iDEN P2k0 Device + 0022 iDEN P2k1 Device + 03a2 iDEN Smartphone + 41d9 i1 phone +0c45 Microdia + 0011 EBUDDY + 0520 MaxTrack Wireless Mouse + 1018 Compact Flash storage memory card reader + 1020 Mass Storage Reader + 1028 Mass Storage Reader + 1030 Mass Storage Reader + 1031 Sonix Mass Storage Device + 1032 Mass Storage Reader + 1033 Sonix Mass Storage Device + 1034 Mass Storage Reader + 1035 Mass Storage Reader + 1036 Mass Storage Reader + 1037 Sonix Mass Storage Device + 1050 CF Card Reader + 1058 HDD Reader + 1060 iFlash SM-Direct Card Reader + 1061 Mass Storage Reader + 1062 Mass Storage Reader + 1063 Sonix Mass Storage Device + 1064 Mass Storage Reader + 1065 Mass Storage Reader + 1066 Mass Storage Reader + 1067 Mass Storage Reader + 1158 A56AK + 184c VoIP Phone + 6001 Genius VideoCAM NB + 6005 Sweex Mini Webcam + 6007 VideoCAM Eye + 6009 VideoCAM ExpressII + 600d TwinkleCam USB camera + 6011 PC Camera (SN9C102) + 6019 PC Camera (SN9C102) + 6024 VideoCAM ExpressII + 6025 VideoCAM ExpressII + 6028 Typhoon Easycam USB 330K (older) + 6029 Triplex i-mini PC Camera + 602a Meade ETX-105EC Camera + 602b VideoCAM NB 300 + 602c Clas Ohlson TWC-30XOP Webcam + 602d VideoCAM ExpressII + 602e VideoCAM Messenger + 6030 VideoCAM ExpressII + 603f VideoCAM ExpressII + 6040 CCD PC Camera (PC390A) + 606a CCD PC Camera (PC390A) + 607a CCD PC Camera (PC390A) + 607b Win2 PC Camera + 607c CCD PC Camera (PC390A) + 607e CCD PC Camera (PC390A) + 6080 Audio (Microphone) + 6082 VideoCAM Look + 6083 VideoCAM Look + 608c VideoCAM Look + 608e VideoCAM Look + 608f PC Camera (SN9C103 + OV7630) + 60a8 VideoCAM Look + 60aa VideoCAM Look + 60ab PC Camera + 60af VideoCAM Look + 60b0 Genius VideoCam Look + 60c0 PC Camera with Mic (SN9C105) + 60c8 Win2 PC Camera + 60cc PC Camera with Mic (SN9C105) + 60ec PC Camera with Mic (SN9C105) + 60ef Win2 PC Camera + 60fa PC Camera with Mic (SN9C105) + 60fb Composite Device + 60fc PC Camera with Mic (SN9C105) + 60fe Audio (Microphone) + 6108 Win2 PC Camera + 6122 PC Camera (SN9C110) + 6123 PC Camera (SN9C110) + 6128 PC Camera (SN9C325 + OM6802) + 612a PC Camera (SN9C325) + 612c PC Camera (SN9C110) + 612e PC Camera (SN9C110) + 612f PC Camera (SN9C110) + 6130 PC Camera (SN9C120) + 6138 Win2 PC Camera + 613a PC Camera (SN9C120) + 613b Win2 PC Camera + 613c PC Camera (SN9C120) + 613e PC Camera (SN9C120) + 6143 PC Camera (SN9C120 + SP80708) + 6240 PC Camera (SN9C201 + MI1300) + 6242 PC Camera (SN9C201 + MI1310) + 6243 PC Camera (SN9C201 + S5K4AAFX) + 6248 PC Camera (SN9C201 + OV9655) + 624b PC Camera (SN9C201 + CX1332) + 624c PC Camera (SN9C201 + MI1320) + 624e PC Camera (SN9C201 + SOI968) + 624f PC Camera (SN9C201 + OV9650) + 6251 PC Camera (SN9C201 + OV9650) + 6253 PC Camera (SN9C201 + OV9650) + 6260 PC Camera (SN9C201 + OV7670ISP) + 6262 PC Camera (SN9C201 + OM6802) + 6270 PC Camera (SN9C201 + MI0360/MT9V011 or MI0360SOC/MT9V111) U-CAM PC Camera NE878, Whitcom WHC017, ... + 627a PC Camera (SN9C201 + S5K53BEB) + 627b PC Camera (SN9C201 + OV7660) + 627c PC Camera (SN9C201 + HV7131R) + 627f PC Camera (SN9C201 + OV965x + EEPROM) + 6280 PC Camera with Microphone (SN9C202 + MI1300) + 6282 PC Camera with Microphone (SN9C202 + MI1310) + 6283 PC Camera with Microphone (SN9C202 + S5K4AAFX) + 6288 PC Camera with Microphone (SN9C202 + OV9655) + 628a PC Camera with Microphone (SN9C202 + ICM107) + 628b PC Camera with Microphone (SN9C202 + CX1332) + 628c PC Camera with Microphone (SN9C202 + MI1320) + 628e PC Camera with Microphone (SN9C202 + SOI968) + 628f PC Camera with Microphone (SN9C202 + OV9650) + 62a0 PC Camera with Microphone (SN9C202 + OV7670ISP) + 62a2 PC Camera with Microphone (SN9C202 + OM6802) + 62b0 PC Camera with Microphone (SN9C202 + MI0360/MT9V011 or MI0360SOC/MT9V111) + 62b3 PC Camera with Microphone (SN9C202 + OV9655) + 62ba PC Camera with Microphone (SN9C202 + S5K53BEB) + 62bb PC Camera with Microphone (SN9C202 + OV7660) + 62bc PC Camera with Microphone (SN9C202 + HV7131R) + 62be PC Camera with Microphone (SN9C202 + OV7663) + 62c0 Sonix USB 2.0 Camera + 62e0 MSI Starcam Racer + 6300 PC Microscope camera + 6310 Sonix USB 2.0 Camera + 6340 Camera + 6341 Defender G-Lens 2577 HD720p Camera + 63e0 Sonix Integrated Webcam + 63f1 Integrated Webcam + 63f8 Sonix Integrated Webcam + 6409 Webcam + 6413 Integrated Webcam + 6417 Integrated Webcam + 6419 Integrated Webcam + 641d 1.3 MPixel Integrated Webcam + 6433 Laptop Integrated Webcam HD (Composite Device) + 643f Dell Integrated HD Webcam + 644d 1.3 MPixel Integrated Webcam + 6480 Sonix 1.3 MP Laptop Integrated Webcam + 648b Integrated Webcam + 64bd Sony Visual Communication Camera + 64d0 Integrated Webcam + 64d2 Integrated Webcam + 651b HP Webcam + 6705 Integrated HD Webcam + 6710 Integrated Webcam + 7401 TEMPer Temperature Sensor + 7402 TEMPerHUM Temperature & Humidity Sensor + 7403 Foot Switch + 7404 Foot switch FS1-P + 8000 DC31VC + 8006 Dual Mode Camera (8006 VGA) + 800a Vivitar Vivicam3350B +0c46 WaveRider Communications, Inc. +0c4a ALGE-TIMING GmbH + 0889 Timy + 088a Timy 2 +0c4b Reiner SCT Kartensysteme GmbH + 0100 cyberJack e-com/pinpad + 0300 cyberJack pinpad(a) + 0400 cyberJack e-com(a) + 0401 cyberJack pinpad(a2) + 0500 cyberJack RFID standard dual interface smartcard reader + 0501 cyberJack RFID comfort dual interface smartcard reader + 0502 cyberJack compact + 0504 cyberJack go / go plus + 0505 cyberJack wave + 9102 cyberJack RFID basis contactless smartcard reader +0c4c Needham's Electronics + 0021 EMP-21 Universal Programmer +0c52 Sealevel Systems, Inc. + 2101 SeaLINK+232 + 2102 SeaLINK+485 + 2103 SeaLINK+232I + 2104 SeaLINK+485I + 2211 SeaPORT+2/232 (Port 1) + 2212 SeaPORT+2/485 (Port 1) + 2213 SeaPORT+2 (Port 1) + 2221 SeaPORT+2/232 (Port 2) + 2222 SeaPORT+2/485 (Port 2) + 2223 SeaPORT+2 (Port 2) + 2411 SeaPORT+4/232 (Port 1) + 2412 SeaPORT+4/485 (Port 1) + 2413 SeaPORT+4 (Port 1) + 2421 SeaPORT+4/232 (Port 2) + 2422 SeaPORT+4/485 (Port 2) + 2423 SeaPORT+4 (Port 2) + 2431 SeaPORT+4/232 (Port 3) + 2432 SeaPORT+4/485 (Port 3) + 2433 SeaPORT+4 (Port 3) + 2441 SeaPORT+4/232 (Port 4) + 2442 SeaPORT+4/485 (Port 4) + 2443 SeaPORT+4 (Port 4) + 2811 SeaLINK+8/232 (Port 1) + 2812 SeaLINK+8/485 (Port 1) + 2813 SeaLINK+8 (Port 1) + 2821 SeaLINK+8/232 (Port 2) + 2822 SeaLINK+8/485 (Port 2) + 2823 SeaLINK+8 (Port 2) + 2831 SeaLINK+8/232 (Port 3) + 2832 SeaLINK+8/485 (Port 3) + 2833 SeaLINK+8 (Port 3) + 2841 SeaLINK+8/232 (Port 4) + 2842 SeaLINK+8/485 (Port 4) + 2843 SeaLINK+8 (Port 4) + 2851 SeaLINK+8/232 (Port 5) + 2852 SeaLINK+8/485 (Port 5) + 2853 SeaLINK+8 (Port 5) + 2861 SeaLINK+8/232 (Port 6) + 2862 SeaLINK+8/485 (Port 6) + 2863 SeaLINK+8 (Port 6) + 2871 SeaLINK+8/232 (Port 7) + 2872 SeaLINK+8/485 (Port 7) + 2873 SeaLINK+8 (Port 7) + 2881 SeaLINK+8/232 (Port 8) + 2882 SeaLINK+8/485 (Port 8) + 2883 SeaLINK+8 (Port 8) + 9020 SeaLINK+422 + a02a SeaLINK+8 (Port 1+2) + a02b SeaLINK+8 (Port 3+4) + a02c SeaLINK+8 (Port 5+6) + a02d SeaLINK+8 (Port 7+8) +0c53 ViewPLUS, Inc. +0c54 Glory, Ltd +0c55 Spectrum Digital, Inc. + 0510 Spectrum Digital XDS510 JTAG Debugger + 0540 SPI540 + 5416 TMS320C5416 DSK + 6416 TMS320C6416 DDB +0c56 Billion Bright, Ltd +0c57 Imaginative Design Operation Co., Ltd +0c58 Vidar Systems Corp. +0c59 Dong Guan Shinko Wire Co., Ltd +0c5a TRS International Mfg., Inc. +0c5e Xytronix Research & Design +0c60 Apogee Electronics Corp. + 0001 MiniMe + 0002 MiniDAC + 0003 ONE + 0004 GiO + 0007 Duet + 0009 Jam + 000a Jam Bootloader + 000b MiC + 000c MiC Bootloader + 8007 Duet DFU Mode +0c62 Chant Sincere Co., Ltd +0c63 Toko, Inc. +0c64 Signality System Engineering Co., Ltd +0c65 Eminence Enterprise Co., Ltd +0c66 Rexon Electronics Corp. +0c67 Concept Telecom, Ltd +0c6a ACS + 0005 Color 320 x 240 LCD Display Terminal with Touchscreen +0c6c JETI Technische Instrumente GmbH + 04b2 Specbos 1201 +0c70 MCT Elektronikladen + 0000 USB08 Development board + 0747 Eye Movement Recorder [Visagraph]/[ReadAlyzer] +0c72 PEAK System + 000c PCAN-USB + 000d PCAN Pro +0c74 Optronic Laboratories Inc. + 0002 OL 700-30 Goniometer +0c76 JMTek, LLC. + 0001 Mass Storage Controller + 0002 Mass Storage Controller + 0003 USBdisk + 0004 Mass Storage Controller + 0005 Transcend Flash disk + 0006 Transcend JetFlash + 0007 Mass Storage Device + 1600 Ion Quick Play LP turntable + 1605 SSS Headphone Set + 1607 audio controller +0c77 Sipix Group, Ltd + 1001 SiPix Web2 + 1002 SiPix SC2100 + 1010 SiPix Snap + 1011 SiPix Blink 2 + 1015 SiPix CAMeleon +0c78 Detto Corp. +0c79 NuConnex Technologies Pte., Ltd +0c7a Wing-Span Enterprise Co., Ltd +0c86 NDA Technologies, Inc. +0c88 Kyocera Wireless Corp. + 0021 Handheld + 17da Qualcomm Kyocera CDMA Technologies MSM +0c89 Honda Tsushin Kogyo Co., Ltd +0c8a Pathway Connectivity, Inc. +0c8b Wavefly Corp. +0c8c Coactive Networks +0c8d Tempo +0c8e Cesscom Co., Ltd + 6000 Luxian Series +0c8f Applied Microsystems +0c94 Cryptera + a000 EPP 1217 +0c98 Berkshire Products, Inc. + 1140 USB PC Watchdog +0c99 Innochips Co., Ltd +0c9a Hanwool Robotics Corp. +0c9b Jobin Yvon, Inc. +0c9d SemTek + 0170 3873 Manual Insert card reader +0ca2 Zyfer +0ca3 Sega Corp. +0ca4 ST&T Instrument Corp. +0ca5 BAE Systems Canada, Inc. +0ca6 Castles Technology Co., Ltd + 0010 EZUSB PC/SC Smart Card Reader + 0050 EZ220PU Reader Controller + 1077 Bludrive Family Smart Card Reader + 107e Reader Controller + 2010 myPad110 PC/SC Smart Card Reader + 3050 EZ710 Smart Card Reader +0ca7 Information Systems Laboratories +0cad Motorola CGISS + 1007 APX Series Consolette + 1020 MOTOTRBO Series Radio (Portable) + 1030 APX Series Radio (Portable) + 1031 APX Series Radio (Mobile) + 1602 IMPRES Battery Data Reader + 9001 PowerPad Pocket PC Device +0cae Ascom Business Systems, Ltd +0caf Buslink + 2507 Hi-Speed USB-to-IDE Bridge Controller + 2515 Flash Disk Embedded Hub + 2516 Flash Disk Security Device + 2517 Flash Disk Mass Storage Device + 25c7 Hi-Speed USB-to-IDE Bridge Controller + 3a00 Hard Drive + 3a20 Mass Storage Device + 3acd Mass Storage Device +0cb0 Flying Pig Systems +0cb1 Innovonics, Inc. +0cb6 Celestix Networks, Pte., Ltd +0cb7 Singatron Enterprise Co., Ltd +0cb8 Opticis Co., Ltd +0cba Trust Electronic (Shanghai) Co., Ltd +0cbb Shanghai Darong Electronics Co., Ltd +0cbc Palmax Technology Co., Ltd + 0101 Pocket PC P6C + 0201 Personal Digital Assistant + 0301 Personal Digital Assistant P6M+ + 0401 Pocket PC +0cbd Pentel Co., Ltd (Electronics Equipment Div.) +0cbe Keryx Technologies, Inc. +0cbf Union Genius Computer Co., Ltd +0cc0 Kuon Yi Industrial Corp. +0cc1 Given Imaging, Ltd +0cc2 Timex Corp. +0cc3 Rimage Corp. +0cc4 emsys GmbH +0cc5 Sendo +0cc6 Intermagic Corp. +0cc8 Technotools Corp. +0cc9 BroadMAX Technologies, Inc. +0cca Amphenol +0ccb SKNet Co., Ltd +0ccc Domex Technology Corp. +0ccd TerraTec Electronic GmbH + 0012 PHASE 26 + 0013 PHASE 26 + 0014 PHASE 26 + 0015 Flash Update for TerraTec PHASE 26 + 0021 Cameo Grabster 200 + 0023 Mystify Claw + 0028 Aureon 5.1 MkII + 0032 MIDI HUBBLE + 0035 Miditech Play'n Roll + 0036 Cinergy 250 Audio + 0037 Cinergy 250 Audio + 0038 Cinergy T² DVB-T Receiver + 0039 Grabster AV 400 + 003b Cinergy 400 + 003c Grabster AV 250 + 0042 Cinergy Hybrid T XS + 0043 Cinergy T XS + 004e Cinergy T XS + 004f Cinergy Analog XS + 0055 Cinergy T XE (Version 1, AF9005) + 005c Cinergy T² + 0069 Cinergy T XE (Version 2, AF9015) + 006b Cinergy HT PVR (EU) + 0072 Cinergy Hybrid T + 0077 Aureon Dual USB + 0078 Cinergy T XXS + 0086 Cinergy Hybrid XE + 008e Cinergy HTC XS + 0096 Grabby + 0097 Cinergy T RC MKII + 0099 AfaTech 9015 [Cinergy T Stick Dual] + 00a5 Cinergy Hybrid Stick + 00a9 RTL2838 DVB-T COFDM Demodulator [TerraTec Cinergy T Stick Black] + 00b3 NOXON DAB/DAB+ Stick + 00e0 NOXON DAB/DAB+ Stick V2 + 0102 Cinergy S2 Stick + 0105 Cinergy S2 Box + 10a7 TerraTec G3 +0cd4 Bang Olufsen + 0101 BeolinkPC2 +0cd5 LabJack Corporation + 0003 U3 + 0009 UE9 +0cd6 Scheidt & Bachmann + 000c S&B TPU + 000e S&B BKV + 0011 Money Coin Unit +0cd7 NewChip S.r.l. +0cd8 JS Digitech, Inc. + 2007 Smart Card Reader/JSTU-9700 +0cd9 Hitachi Shin Din Cable, Ltd +0cde Z-Com + 0001 XI-750 802.11b Wireless Adapter [Atmel AT76C503A] + 0002 XI-725/726 Prism2.5 802.11b Adapter + 0003 Sagem 802.11b Dongle + 0004 Sagem 802.11b Dongle + 0005 XI-735 Prism3 802.11b Adapter + 0006 XG-300 802.11b Adapter + 0008 XG-703A 802.11g Wireless Adapter [Intersil ISL3887] + 0009 (ZD1211)IEEE 802.11b+g Adapter + 0011 ZD1211 + 0012 AR5523 + 0013 AR5523 driver (no firmware) + 0014 NB 802.11g Wireless LAN Adapter(3887A) + 0015 XG-705A 802.11g Wireless Adapter [Intersil ISL3887] + 0016 NB 802.11g Wireless LAN Adapter(3887A) + 0018 NB 802.11a/b/g Wireless LAN Adapter(3887A) + 001a 802.11bg + 001c 802.11b/g Wireless Network Adapter + 0020 AG-760A 802.11abg Wireless Adapter [ZyDAS ZD1211B] + 0022 802.11b/g/n Wireless Network Adapter + 0023 UB81 802.11bgn + 0025 802.11b/g/n USB Wireless Network Adapter + 0026 UB82 802.11abgn + 0027 Sphairon Homelink 1202 802.11n Wireless Adapter [Atheros AR9170] +0ce5 Validation Technologies International + 0003 Matrix +0ce9 Pico Technology + 1001 PicoScope3000 series PC Oscilloscope + 1007 PicoScope 2000 series PC Oscilloscope + 1008 PicoScope 5000 series PC Oscilloscope + 1009 PicoScope 4000 series PC Oscilloscope + 100e PicoScope 6000 series PC Oscilloscope + 1012 PicoScope 3000A series PC Oscilloscope + 1016 PicoScope 2000A series PC Oscilloscope + 1018 PicoScope 4000A series PC Oscilloscope + 1200 PicoScope 2000 series PC Oscilloscope + 1201 PicoScope 3000 series PC Oscilloscope + 1202 PicoScope 4000 series PC Oscilloscope + 1203 PicoScope 5000 series PC Oscilloscope + 1204 PicoScope 6000 series PC Oscilloscope + 1211 PicoScope 3000 series PC Oscilloscope + 1212 PicoScope 4000 series PC Oscilloscope +0cf1 e-Conn Electronic Co., Ltd +0cf2 ENE Technology, Inc. + 6220 SD Card Reader (SG361) + 6225 SD card reader (UB6225) + 6230 SD Card Reader (UB623X) + 6250 SD card reader (UB6250) +0cf3 Qualcomm Atheros Communications + 0001 AR5523 + 0002 AR5523 (no firmware) + 0003 AR5523 + 0004 AR5523 (no firmware) + 0005 AR5523 + 0006 AR5523 (no firmware) + 1001 Thomson TG121N [Atheros AR9001U-(2)NG] + 1002 TP-Link TL-WN821N v2 / TL-WN822N v1 802.11n [Atheros AR9170] + 1006 TP-Link TL-WN322G v3 / TL-WN422G v2 802.11g [Atheros AR9271] + 1010 3Com 3CRUSBN275 802.11abgn Wireless Adapter [Atheros AR9170] + 20ff AR7010 (no firmware) + 3000 AR3011 Bluetooth (no firmware) + 3002 AR3011 Bluetooth + 3004 AR3012 Bluetooth 4.0 + 3005 AR3011 Bluetooth + 3007 AR3012 Bluetooth 4.0 (no firmware) + 3008 Bluetooth (AR3011) + 311f AR3012 Bluetooth + 7015 TP-Link TL-WN821N v3 / TL-WN822N v2 802.11n [Atheros AR7010+AR9287] + 9170 AR9170 802.11n + 9271 AR9271 802.11n + b002 Ubiquiti WiFiStation 802.11n [Atheros AR9271] + b003 Ubiquiti WiFiStationEXT 802.11n [Atheros AR9271] + e006 Dell Wireless 1802 Bluetooth 4.0 LE +0cf4 Fomtex Corp. +0cf5 Cellink Co., Ltd +0cf6 Compucable Corp. +0cf7 ishoni Networks +0cf8 Clarisys, Inc. + 0750 Claritel-i750 - vp +0cf9 Central System Research Co., Ltd +0cfa Inviso, Inc. +0cfc Minolta-QMS, Inc. + 2301 Magicolor 2300 DL + 2350 Magicolor 2350EN/3300 + 3100 Magicolor 3100 + 7300 Magicolor 5450/5550 +0cff SAFA MEDIA Co., Ltd. + 0320 SR-380N +0d06 telos EDV Systementwicklung GmbH +0d08 UTStarcom + 0602 DV007 [serial] + 0603 DV007 [storage] +0d0b Contemporary Controls +0d0c Astron Electronics Co., Ltd +0d0d MKNet Corp. +0d0e Hybrid Networks, Inc. +0d0f Feng Shin Cable Co., Ltd +0d10 Elastic Networks + 0001 StormPort (WDM) +0d11 Maspro Denkoh Corp. +0d12 Hansol Electronics, Inc. +0d13 BMF Corp. +0d14 Array Comm, Inc. +0d15 OnStream b.v. +0d16 Hi-Touch Imaging Technologies Co., Ltd + 0001 PhotoShuttle + 0002 Photo Printer 730 series + 0004 Photo Printer 63xPL/PS + 000e P910L + 0100 Photo Printer 63xPL/PS + 0102 Photo Printer 64xPS + 0103 Photo Printer 730 series + 0104 Photo Printer 63xPL/PS + 0105 Photo Printer 64xPS + 0200 Photo Printer 64xDL +0d17 NALTEC, Inc. +0d18 coaXmedia +0d19 Hank Connection Industrial Co., Ltd +0d28 NXP + 0204 ARM mbed +0d32 Leo Hui Electric Wire & Cable Co., Ltd +0d33 AirSpeak, Inc. +0d34 Rearden Steel Technologies +0d35 Dah Kun Co., Ltd +0d3a Posiflex Technologies, Inc. + 0206 Series 3xxx Cash Drawer + 0207 Series 3xxx Cash Drawer + 0500 Magnetic Stripe Reader +0d3c Sri Cable Technology, Ltd +0d3d Tangtop Technology Co., Ltd + 0001 HID Keyboard + 0040 PS/2 Adapter +0d3e Fitcom, inc. +0d3f MTS Systems Corp. +0d40 Ascor, Inc. +0d41 Ta Yun Terminals Industrial Co., Ltd +0d42 Full Der Co., Ltd +0d46 Kobil Systems GmbH + 2012 KAAN Standard Plus (Smartcard reader) + 3003 mIDentity Light / KAAN SIM III + 3014 Smart Token + 4000 mIDentity (mass storage) + 4001 mIDentity Basic/Classic (composite device) + 4081 mIDentity Basic/Classic (installationless) +0d48 Promethean Limited + 0001 ACTIVboard + 0004 ACTIVboard + 0100 Audio +0d49 Maxtor + 3000 Drive + 3010 3000LE Drive + 3100 Hi-Speed USB-IDE Bridge Controller + 3200 Personal Storage 3200 + 5000 5000XT Drive + 5010 5000LE Drive + 5020 Mobile Hard Disk Drive + 7000 OneTouch + 7010 OneTouch + 7100 OneTouch II 300GB External Hard Disk + 7310 OneTouch 4 + 7410 Mobile Hard Disk Drive (1TB) + 7450 Basics Portable USB Device +0d4a NF Corp. +0d4b Grape Systems, Inc. +0d4c Tedas AG +0d4d Coherent, Inc. +0d4e Agere Systems Netherland BV + 047a WLAN Card + 1000 Wireless Card Model 0801 + 1001 Wireless Card Model 0802 +0d4f EADS Airbus France +0d50 Cleware GmbH + 0011 USB-Temp2 Thermometer + 0040 F4 foot switch +0d51 Volex (Asia) Pte., Ltd +0d53 HMI Co., Ltd +0d54 Holon Corp. +0d55 ASKA Technologies, Inc. +0d56 AVLAB Technology, Inc. +0d57 Solomon Microtech, Ltd +0d5c SMC Networks, Inc. + a001 SMC2662W (v1) EZ Connect 802.11b Wireless Adapter [Atmel AT76C503A] + a002 SMC2662W v2 / SMC2662W-AR / Belkin F5D6050 [Atmel at76c503a] +0d5e Myacom, Ltd + 2346 BT Digital Access adapter +0d5f CSI, Inc. +0d60 IVL Technologies, Ltd +0d61 Meilu Electronics (Shenzhen) Co., Ltd +0d62 Darfon Electronics Corp. + 0003 Smartcard Reader + 0004 Keyboard + 001b Keyboard + 001c Benq X120 Internet Keyboard Pro + 0306 M530 Mouse + 0800 Magic Wheel + 2021 AM805 Keyboard + 2026 TECOM Bluetooth Device + 2050 Mouse + 2106 Dell L20U Multimedia Keyboard + a100 Optical Mouse +0d63 Fritz Gegauf AG +0d64 DXG Technology Corp. + 0105 Dual Mode Digital Camera 1.3M + 0107 Horus MT-409 Camera + 0108 Dual Mode Digital Camera + 0202 Dual Mode Video Camera Device + 0303 DXG-305V Camera + 1001 SiPix Stylecam/UMAX AstraPix 320s + 1002 Fashion Cam 01 Dual-Mode DSC (Video Camera) + 1003 Fashion Cam Dual-Mode DSC (Controller) + 1021 D-Link DSC 350F + 1208 Dual Mode Still Camera Device + 2208 Mass Storage + 3105 Dual Mode Digital Camera Disk + 3108 Digicam Mass Storage Device + 5566 Contour Roam Model 1600 +0d65 KMJP Co., Ltd +0d66 TMT +0d67 Advanet, Inc. +0d68 Super Link Electronics Co., Ltd +0d69 NSI +0d6a Megapower International Corp. +0d6b And-Or Logic +0d70 Try Computer Co., Ltd +0d71 Hirakawa Hewtech Corp. +0d72 Winmate Communication, Inc. +0d73 Hit's Communications, Inc. +0d76 MFP Korea, Inc. +0d77 Power Sentry/Newpoint +0d78 Japan Distributor Corp. +0d7a MARX Datentechnik GmbH + 0001 CrypToken +0d7b Wellco Technology Co., Ltd +0d7c Taiwan Line Tek Electronic Co., Ltd +0d7d Phison Electronics Corp. + 0100 PS1001/1011/1006/1026 Flash Disk + 0110 Gigabyte FlexDrive + 0120 Disk Pro 64MB + 0124 GIGABYTE Disk + 0240 I/O-Magic/Transcend 6-in-1 Card Reader + 110e NEC uPD720121/130 USB-ATA/ATAPI Bridge + 1240 Apacer 6-in-1 Card Reader 2.0 + 1270 Wolverine SixPac 6000 + 1300 Flash Disk + 1320 PS2031 Flash Disk + 1400 Attache 256MB USB 2.0 Flash Drive + 1420 PS2044 Pen Drive + 1470 Vosonic X's-Drive II+ VP2160 + 1620 USB Disk Pro + 1900 USB Thumb Drive +0d7e American Computer & Digital Components + 2507 Hi-Speed USB-to-IDE Bridge Controller + 2517 Hi-Speed Mass Storage Device + 25c7 Hi-Speed USB-to-IDE Bridge Controller +0d7f Essential Reality LLC + 0100 P5 Glove glove controller +0d80 H.R. Silvine Electronics, Inc. +0d81 TechnoVision +0d83 Think Outside, Inc. +0d87 Dolby Laboratories Inc. +0d89 Oz Software +0d8a King Jim Co., Ltd + 0101 TEPRA PRO +0d8b Ascom Telecommunications, Ltd +0d8c C-Media Electronics, Inc. + 0001 Audio Device + 0002 Composite Device + 0003 Sound Device + 0005 Blue Snowball + 0006 Storm HP-USB500 5.1 Headset + 000c Audio Adapter + 000d Composite Device + 000e Audio Adapter (Planet UP-100, Genius G-Talk) + 0014 Audio Adapter (Unitek Y-247A) + 001f CM108 Audio Controller + 0102 CM106 Like Sound Device + 0103 CM102-A+/102S+ Audio Controller + 0104 CM103+ Audio Controller + 0105 CM108 Audio Controller + 0107 CM108 Audio Controller + 010f CM108 Audio Controller + 0115 CM108 Audio Controller + 0139 Multimedia Headset [Gigaware by Ignition L.P.] + 013c CM108 Audio Controller + 0201 CM6501 + 5000 Mass Storage Controller + 5200 Mass Storage Controller(0D8C,5200) + b213 USB Phone CM109 (aka CT2000,VPT1000) +0d8d Promotion & Display Technology, Ltd + 0234 V-234 Composite Device + 0550 V-550 Composite Device + 0551 V-551 Composite Device + 0552 V-552 Composite Device + 0651 V-651 Composite Device + 0652 V-652 Composite Device + 0653 V-653 Composite Device + 0654 V-654 Composite Device + 0655 V-655 Composite Device + 0656 V-656 Composite Device + 0657 V-657 Composite Device + 0658 V-658 Composite Device + 0659 V-659 Composite Device + 0660 V-660 Composite Device + 0661 V-661 Composite Device + 0662 V-662 Composite Device + 0850 V-850 Composite Device + 0851 V-851 Composite Device + 0852 V-852 Composite Device + 0901 V-901 Composite Device + 0902 V-902 Composite Device + 0903 V-903 Composite Device + 4754 Voyager DMP Composite Device + bb00 Bloomberg Composite Device + bb01 Bloomberg Composite Device + bb02 Bloomberg Composite Device + bb03 Bloomberg Composite Device + bb04 Bloomberg Composite Device + bb05 Bloomberg Composite Device + fffe Global Tuner Composite Device + ffff Voyager DMP Composite Device +0d8e Global Sun Technology, Inc. + 0163 802.11g 54 Mbps Wireless Dongle + 1621 802.11b Wireless Adapter + 3762 Cohiba 802.11g Wireless Mini adapter [Intersil ISL3887] + 3763 802.11g Wireless dongle + 7100 802.11b Adapter + 7110 WL-210 / WU210P 802.11b Wireless Adapter [Atmel AT76C503A] + 7605 TRENDnet TEW-224UB 802.11b Wireless Adapter [Atmel AT76C503A] + 7801 AR5523 + 7802 AR5523 (no firmware) + 7811 AR5523 + 7812 AR5523 (no firmware) + 7a01 PRISM25 802.11b Adapter +0d8f Pitney Bowes +0d90 Sure-Fire Electrical Corp. +0d96 Skanhex Technology, Inc. + 0000 Jenoptik JD350 video + 3300 SX330z Camera + 4100 SX410z Camera + 4102 MD 9700 Camera + 4104 Jenoptik JD-4100z3s + 410a Medion 9801/Novatech SX-410z + 5200 SX-520z Camera +0d97 Santa Barbara Instrument Group + 0001 SBIG Astronomy Camera (without firmware) + 0101 SBIG Astronomy Camera (with firmware) +0d98 Mars Semiconductor Corp. + 0300 Avaya Wireless Card + 1007 Discovery Kids Digital Camera +0d99 Trazer Technologies, Inc. +0d9a RTX AS + 0001 Bluetooth Device +0d9b Tat Shing Electrical Co. +0d9c Chee Chen Hi-Technology Co., Ltd +0d9d Sanwa Supply, Inc. +0d9e Avaya + 0300 Wireless Card +0d9f Powercom Co., Ltd + 0001 Uninterruptible Power Supply + 0002 Black Knight PRO / WOW Uninterruptible Power Supply (Cypress HID->COM RS232) + 00a2 Imperial Uninterruptible Power Supply (HID PDC) + 00a3 Smart King PRO Uninterruptible Power Supply (HID PDC) + 00a4 WOW Uninterruptible Power Supply (HID PDC) + 00a5 Vanguard Uninterruptible Power Supply (HID PDC) + 00a6 Black Knight PRO Uninterruptible Power Supply (HID PDC) +0da0 Danger Research +0da1 Suzhou Peter's Precise Industrial Co., Ltd +0da2 Land Instruments International, Ltd +0da3 Nippon Electro-Sensory Devices Corp. +0da4 Polar Electro Oy + 0001 Interface + 0008 Loop +0da7 IOGear, Inc. +0da8 softDSP Co., Ltd + 0001 SDS 200A Oscilloscope +0dab Cubig Group + 0100 DVR/CVR-M140 MP3 Player +0dad Westover Scientific +0db0 Micro Star International + 1020 PC2PC WLAN Card + 1967 Bluetooth Dongle + 3713 Primo 73 + 3801 Motorola Bluetooth 2.1+EDR Device + 3870 MS-3870 802.11bgn Wireless Module [Ralink RT3070] + 3871 MS-3871 802.11bgn Wireless Module [Ralink RT8070] + 4011 Medion Flash XL V2.0 Card Reader + 4023 Lexar Mobile Card Reader + 4600 802.11b/g Turbo Wireless Adapter + 5501 Mass Storage Device + 5502 Mass Storage Device + 5513 MP3 Player + 5515 MP3 Player + 5516 MP3 Player + 5580 Mega Sky 580 DVB-T Tuner [M902x] + 5581 Mega Sky 580 DVB-T Tuner [GL861] + 6823 UB11B/MS-6823 802.11b Wi-Fi adapter + 6826 IEEE 802.11g Wireless Network Adapter + 6855 Bluetooth Device + 6861 MSI-6861 802.11g WiFi adapter + 6865 RT2570 + 6869 RT2570 + 6874 RT2573 + 6877 RT2573 + 6881 Bluetooth Class I EDR Device + 688a Bluetooth Class I EDR Device + 6899 802.11bgn 1T1R Mini Card Wireless Adapter + 6970 MS-6970 BToes Bluetooth adapter + 697a Bluetooth Dongle + 6982 Medion Flash XL Card Reader + a861 RT2573 + a874 RT2573 + a970 Bluetooth dongle + a97a Bluetooth EDR Device + b970 Bluetooth EDR Device + b97a Bluetooth EDR Device +0db1 Wen Te Electronics Co., Ltd +0db2 Shian Hwi Plug Parts, Plastic Factory +0db3 Tekram Technology Co., Ltd +0db4 Chung Fu Chen Yeh Enterprise Corp. +0db5 Access IS + 0139 Barcode Module - CDC serial + 013a Barcode Module - Virtual Keyboard + 013b Barcode Module - HID + 0160 NFC and Smartcard Module (NSM) +0db7 ELCON Systemtechnik + 0002 Goldpfeil P-LAN +0dba Digidesign + 1000 Mbox 1 [Mbox] + 3000 Mbox 2 + b011 Eleven Rack +0dbc A&D Medical + 0003 AND Serial Cable [AND Smart Cable] +0dbe Jiuh Shiuh Precision Industry Co., Ltd +0dbf Jess-Link International + 0002 SmartDongle Security Key + 0200 HDD Storage Solution + 021b USB-2.0 IDE Adapter + 0300 Storage Adapter + 0333 Storage Adapter + 0502 FSC Storagebird XL hard disk + 0707 ZIV Drive +0dc0 G7 Solutions (formerly Great Notions) +0dc1 Tamagawa Seiki Co., Ltd +0dc3 Athena Smartcard Solutions, Inc. + 0801 ASEDrive III + 0802 ASEDrive IIIe + 1104 ASEDrive IIIe KB + 1701 ASEKey + 1702 ASEKey +0dc4 inXtron, Inc. + 0040 Mass Storage Device + 0041 Mass Storage Device + 0042 Mass Storage Device + 0101 Hi-Speed Mass Storage Device + 0209 SK-3500 S2 + 020a Oyen Digital MiniPro 2.5" hard drive enclosure +0dc5 SDK Co., Ltd +0dc6 Precision Squared Technology Corp. + 2301 Wireless Touchpad Keyboard +0dc7 First Cable Line, Inc. +0dcd NetworkFab Corp. + 0001 Remote Interface Adapter + 0002 High Bandwidth Codec +0dd0 Access Solutions + 1002 Triple Talk Speech Synthesizer +0dd1 Contek Electronics Co., Ltd +0dd2 Power Quotient International Co., Ltd + 0003 Mass Storage (P) +0dd3 MediaQ +0dd4 Custom Engineering SPA +0dd5 California Micro Devices +0dd7 Kocom Co., Ltd +0dd8 Netac Technology Co., Ltd + 1060 USB-CF-Card + e007 OnlyDisk U222 Pendrive + f607 OnlyDisk U208 1G flash drive [U-SAFE] +0dd9 HighSpeed Surfing +0dda Integrated Circuit Solution, Inc. + 0001 Multi-Card Reader 6in1 + 0002 Multi-Card Reader 7in1 + 0003 Flash Disk + 0005 Internal Multi-Card Reader 6in1 + 0008 SD single card reader + 0009 MS single card reader + 000a MS+SD Dual Card Reader + 000b SM single card reader + 0101 All-In-One Card Reader + 0102 All-In-One Card Reader + 0301 MP3 Player + 0302 Multi-Card MP3 Player + 1001 Multi-Flash Disk + 2001 Multi-Card Reader + 2002 Q018 default PID + 2003 Multi-Card Reader + 2005 Datalux DLX-1611 16in1 Card Reader + 2006 All-In-One Card Reader + 2007 USB to ATAPI bridge + 2008 All-In-One Card Reader + 2013 SD/MS Combo Card Reader + 2014 SD/MS Single Card Reader + 2023 card reader SD/MS DEMO board with ICSI brand name (MaskROM version) + 2024 card reader SD/MS DEMO board with Generic brand name (MaskROM version) + 2026 USB2.0 Card Reader + 2027 USB 2.0 Card Reader + 2315 UFD MP3 player (model 2) + 2318 UFD MP3 player (model 1) + 2321 UFD MP3 player +0ddb Tamarack, Inc. +0ddd Datelink Technology Co., Ltd +0dde Ubicom, Inc. +0de0 BD Consumer Healthcare +0de7 USBmicro + 0191 U401 Interface card + 01a5 U421 interface card + 01c3 U451 relay interface card +0dea UTECH Electronic (D.G.) Co., Ltd. +0ded Novasonics +0dee Lifetime Memory Products + 4010 Storage Adapter +0def Full Rise Electronic Co., Ltd +0df4 NET&SYS + 0201 MNG-2005 +0df6 Sitecom Europe B.V. + 0001 C-Media VOIP Device + 0004 Bluetooth 2.0 Adapter 100m + 0007 Bluetooth 2.0 Adapter 10m + 000b Bluetooth 2.0 Adapter DFU + 000d WL-168 Wireless Network Adapter 54g + 0017 WL-182 Wireless-N Network USB Card + 0019 Bluetooth 2.0 adapter 10m CN-512v2 001 + 001a Bluetooth 2.0 adapter 100m CN-521v2 001 + 002b WL-188 Wireless Network 300N USB Adapter + 002c WL-301 Wireless Network 300N USB Adapter + 002d WL-302 Wireless Network 300N USB dongle + 0036 WL-603 Wireless Adapter + 0039 WL-315 Wireless-N USB Adapter + 003b WL-321 Wireless USB Gaming Adapter 300N + 003c WL-323 Wireless-N USB Adapter + 003d WL-324 Wireless USB Adapter 300N + 003e WL-343 Wireless USB Adapter 150N X1 + 003f WL-608 Wireless USB Adapter 54g + 0040 WL-344 Wireless Adapter 300N X2 [Ralink RT3071] + 0041 WL-329 Wireless Dualband USB adapter 300N + 0042 WL-345 Wireless USB adapter 300N X3 + 0045 WL-353 Wireless USB Adapter 150N Nano + 0047 WL-352v1 Wireless USB Adapter 300N 002 + 0048 WL-349v1 Wireless Adapter 150N 002 [Ralink RT3070] + 0049 WL-356 Wireless Adapter 300N + 004a WL-358v1 Wireless Micro USB Adapter 300N X3 002 + 004b WL-349v3 Wireless Micro Adapter 150N X1 [Realtek RTL8192SU] + 004c WL-352 802.11n Adapter [Realtek RTL8191SU] + 0050 WL-349v4 Wireless Micro Adapter 150N X1 [Ralink RT3370] + 0056 LN-031 10/100/1000 Ethernet Adapter + 005d WLA-2000 v1.001 WLAN [RTL8191SU] + 0060 WLA-4000 802.11bgn [Ralink RT3072] + 0062 WLA-5000 802.11abgn [Ralink RT3572] + 006f WLA-5100 + 0072 AX88179 Gigabit Ethernet [Sitecom] + 061c LN-028 Network USB 2.0 Adapter + 214a IDE/SATA Combo Adapter [CN-330] + 21f4 44 St Bluetooth Device + 2200 Sitecom bluetooth2.0 class 2 dongle CN-512 + 2208 Sitecom bluetooth2.0 class 2 dongle CN-520 + 2209 Sitecom bluetooth2.0 class 1 dongle CN-521 + 3068 DC-104v2 ISDN Adapter [HFC-S] + 9071 WL-113 rev 1 Wireless Network USB Adapter + 9075 WL-117 Hi-Speed USB Adapter + 90ac WL-172 Wireless Network USB Adapter 54g Turbo + 9712 WL-113 rev 2 Wireless Network USB Adapter +0df7 Mobile Action Technology, Inc. + 0620 MA-620 Infrared Adapter + 0700 MA-700 Bluetooth Adapter + 0720 MA-720 Bluetooth Adapter + 0722 Bluetooth Dongle + 0730 MA-730/MA-730G Bluetooth Adapter + 0800 Data Cable + 0820 Data Cable + 0900 MA i-gotU Travel Logger GPS + 1800 Generic Card Reader + 1802 Card Reader +0dfa Toyo Communication Equipment Co., Ltd +0dfc GeneralTouch Technology Co., Ltd + 0001 Touchscreen + 0101 5-point Touch Screen +0e03 Nippon Systemware Co., Ltd +0e08 Winbest Technology Co., Ltd +0e0b Amigo Technology Inc. + 9031 802.11n Wireless USB Card + 9041 802.11n Wireless USB Card +0e0c Gesytec + 0101 LonUSB LonTalk Network Adapter +0e0d PicoQuant GmbH + 0003 PicoHarp 300 +0e0f VMware, Inc. + 0001 Device + 0002 Virtual USB Hub + 0003 Virtual Mouse + 0004 Virtual CCID + 0005 Virtual Mass Storage + 0006 Virtual Keyboard + 8001 Root Hub + 8002 Root Hub + 8003 Root Hub + f80a Smoker FX2 +0e16 JMTek, LLC +0e17 Walex Electronic, Ltd +0e1a Unisys +0e1b Crewave +0e20 Pegasus Technologies Ltd. + 0101 NoteTaker + 0200 Seiko Instruments InkLink Handwriting System +0e21 Cowon Systems, Inc. + 0300 iAudio CW200 + 0400 MP3 Player + 0500 iAudio M3 + 0510 iAudio X5, subpack USB port + 0513 iAudio X5, side USB port + 0520 iAudio M5, side USB port + 0601 iAudio G3 + 0681 iAUDIO E2 + 0700 iAudio U3 + 0751 iAudio 7 + 0760 iAUDIO U5 / iAUDIO G2 + 0800 Cowon D2 (UMS mode) + 0801 Cowon D2 (MTP mode) + 0910 iAUDIO 9 + 0920 J3 +0e22 Symbian Ltd. +0e23 Liou Yuane Enterprise Co., Ltd +0e25 VinChip Systems, Inc. +0e26 J-Phone East Co., Ltd +0e30 HeartMath LLC +0e34 Micro Computer Control Corp. +0e35 3Pea Technologies, Inc. +0e36 TiePie engineering + 0009 Handyscope HS3 + 000b Handyscope HS4 + 000f Handyscope HS4-DIFF (br) + 0010 Handyscope HS2 + 0011 TiePieSCOPE HS805 (br) + 0012 TiePieSCOPE HS805 + 0013 Handyprobe HP3 + 0014 Handyprobe HP3 + 0018 Handyprobe HP2 + 001b Handyscope HS5 + 0042 TiePieSCOPE HS801 + 00fd USB To Parallel adapter + 00fe USB To Parallel adapter +0e38 Stratitec, Inc. +0e39 Smart Modular Technologies, Inc. + 0137 Bluetooth Device +0e3a Neostar Technology Co., Ltd + 1100 CW-1100 Wireless Network Adapter +0e3b Mansella, Ltd +0e41 Line6, Inc. + 4147 TonePort GX + 414d Pod HD500 + 4156 POD HD Desktop + 4250 BassPODxt + 4252 BassPODxt Pro + 4642 BassPODxt Live + 4650 PODxt Live + 4750 GuitarPort + 5044 PODxt + 5050 PODxt Pro + 534d SeaMonkey +0e44 Sun-Riseful Technology Co., Ltd. +0e48 Julia Corp., Ltd + 0100 CardPro SmartCard Reader +0e4a Shenzhen Bao Hing Electric Wire & Cable Mfr. Co. +0e4c Radica Games, Ltd + 1097 Gamester Controller + 2390 Games Jtech Controller + 7288 funkey reader +0e50 TechnoData Interware + 0001 Matrix USB-Key + 0002 Matrixlock Dongle (HID) +0e55 Speed Dragon Multimedia, Ltd + 110a Tanic S110-SG1 + ISSC IS1002N [Slow Infra-Red (SIR) & Bluetooth 1.2 (Class 2) Adapter] + 110b MS3303H USB-to-Serial Bridge +0e56 Kingston Technology Company, Inc. + 6021 K-PEX 100 +0e5a Active Co., Ltd +0e5b Union Power Information Industrial Co., Ltd +0e5c Bitland Information Technology Co., Ltd + 6118 LCD Device + 6119 remote receive and control device + 6441 C-Media Sound Device +0e5d Neltron Industrial Co., Ltd +0e5e Conwise Technology Co., Ltd. + 6622 CW6622 +0e66 Hawking Technologies + 0001 HWUN1 Hi-Gain Wireless-300N Adapter w/ Upgradable Antenna [Ralink RT2870] + 0003 HWDN1 Hi-Gain Wireless-300N Dish Adapter [Ralink RT2870] + 0009 HWUN2 Hi-Gain Wireless-150N Adapter w/ Upgradable Antenna [Ralink RT2770] + 000b HWDN2 Hi-Gain Wireless-150N Dish Adapter [Ralink RT2770] + 0013 HWUN3 Hi-Gain Wireless-N Adapter [Ralink RT3070] + 0015 HWDN2 Rev. E Hi-Gain Wireless-150N Dish Adapter [Realtek RTL8191SU] + 0017 HAWNU1 Hi-Gain Wireless-150N Network Adapter with Range Amplifier [Ralink RT3070] + 0018 Wireless-N Network Adapter [Ralink RT2870] + 400b UF100 10/100 Network Adapter + 400c UF100 Ethernet [pegasus2] +0e67 Fossil, Inc. + 0002 Wrist PDA +0e6a Megawin Technology Co., Ltd + 0101 MA100 [USB-UART Bridge IC] + 030b Truly Ergonomic Computer Keyboard (Device Firmware Update mode) + 030c Truly Ergonomic Computer Keyboard + 6001 GEMBIRD Flexible keyboard KB-109F-B-DE + 7f5c BPF-015 Key Chain Photo Frame +0e6f Logic3 + 0003 Freebird wireless Controller + 0005 Eclipse wireless Controller + 0006 Edge wireless Controller + 0128 Wireless PS3 Controller +0e70 Tokyo Electronic Industry Co., Ltd +0e72 Hsi-Chin Electronics Co., Ltd +0e75 TVS Electronics, Ltd +0e79 Archos, Inc. + 1106 Pocket Media Assistant - PMA400 + 1204 Gmini XS 200 + 1306 504 Portable Multimedia Player + 1330 5 Tablet + 1332 5 IMT + 1416 32 IT + 1417 A43 IT + 14ad 97 Titanium HD + 150e 80 G9 + 3001 40 Titanium +0e7b On-Tech Industry Co., Ltd +0e7e Gmate, Inc. + 0001 Yopy 3000 PDA + 1001 YP3X00 PDA +0e82 Ching Tai Electric Wire & Cable Co., Ltd +0e83 Shin An Wire & Cable Co. +0e8c Well Force Electronic Co., Ltd +0e8d MediaTek Inc. + 0003 MT6227 phone + 0004 MT6227 phone + 0023 S103 + 00a5 GSM modem [Medion Surfstick Model:S4222] + 1806 Samsung SE-208 Slim Portable DVD Writer + 1836 Samsung SE-S084 Super WriteMaster Slim External DVD writer + 1956 Samsung SE-506 Portable BluRay Disc Writer + 2000 MT65xx Preloader + 3329 Qstarz BT-Q1000XT + 763e MT7630e Bluetooth Adapter +0e8f GreenAsia Inc. + 0003 MaxFire Blaze2 + 0012 Joystick/Gamepad + 0016 4 port USB 1.1 hub UH-174 + 0020 USB to PS/2 Adapter + 0021 Multimedia Keyboard Controller + 0022 multimedia keyboard controller + 0201 SmartJoy Frag Xpad/PS2 adaptor + 300a steering Wheel +0e90 WiebeTech, LLC + 0100 Storage Adapter V1 +0e91 VTech Engineering Canada, Ltd +0e92 C's Glory Enterprise Co., Ltd +0e93 eM Technics Co., Ltd +0e95 Future Technology Co., Ltd +0e96 Aplux Communications, Ltd + c001 TRUST 380 USB2 SPACEC@M +0e97 Fingerworks, Inc. + 0908 Composite HID (Keyboard and Mouse) +0e98 Advanced Analogic Technologies, Inc. +0e99 Parallel Dice Co., Ltd +0e9a TA HSING Industries, Ltd +0e9b ADTEC Corp. +0e9c Streamzap, Inc. + 0000 Streamzap Remote Control +0e9f Tamura Corp. +0ea0 Ours Technology, Inc. + 2126 7-in-1 Card Reader + 2153 SD Card Reader Key + 2168 Transcend JetFlash 2.0 / Astone USB Drive / Intellegent Stick 2.0 + 6803 OTI-6803 Flash Disk + 6808 OTI-6808 Flash Disk + 6828 OTI-6828 Flash Disk + 6858 OTi-6858 serial adapter +0ea6 Nihon Computer Co., Ltd +0ea7 MSL Enterprises Corp. +0ea8 CenDyne, Inc. +0ead Humax Co., Ltd +0eb0 NovaTech + 9020 NovaTech NV-902W + 9021 RT2573 +0eb1 WIS Technologies, Inc. + 6666 WinFast WalkieTV TV Loader + 6668 WinFast WalkieTV TV Loader + 7007 WinFast WalkieTV WDM Capture +0eb2 Y-S Electronic Co., Ltd +0eb3 Saint Technology Corp. +0eb7 Endor AG +0eb8 Mettler Toledo + 2200 Ariva Scale + f000 PS60 Scale +0ebb Thermo Fisher Scientific + 0002 FT-IR Spectrometer +0ebe VWeb Corp. +0ebf Omega Technology of Taiwan, Inc. +0ec0 LHI Technology (China) Co., Ltd +0ec1 Abit Computer Corp. +0ec2 Sweetray Industrial, Ltd +0ec3 Axell Co., Ltd +0ec4 Ballracing Developments, Ltd +0ec5 GT Information System Co., Ltd +0ec6 InnoVISION Multimedia, Ltd +0ec7 Theta Link Corp. + 1008 So., Show 301 Digital Camera +0ecd Lite-On IT Corp. + 1400 CD\RW 40X + a100 LDW-411SX DVD/CD Rewritable Drive +0ece TaiSol Electronics Co., Ltd +0ecf Phogenix Imaging, LLC +0ed1 WinMaxGroup + 6660 Flash Disk 64M-C + 6680 Flash Disk 64M-B + 7634 MP3 Player +0ed2 Kyoto Micro Computer Co., Ltd +0ed3 Wing-Tech Enterprise Co., Ltd +0ed5 Fiberbyte + e000 USB-inSync Device + f000 Fiberbyte USB-inSync Device + f201 Fiberbyte USB-inSync DAQ-2500X +0eda Noriake Itron Corp. +0edf e-MDT Co., Ltd + 2060 FID irock! 100 Series +0ee0 Shima Seiki Mfg., Ltd +0ee1 Sarotech Co., Ltd +0ee2 AMI Semiconductor, Inc. +0ee3 ComTrue Technology Corp. + 1000 Image Tank 1.5 +0ee4 Sunrich Technology, Ltd + 0690 SATA 3 Adapter +0eee Digital Stream Technology, Inc. + 8810 Mass Storage Drive +0eef D-WAV Scientific Co., Ltd + 0001 eGalax TouchScreen + 0002 Touchscreen Controller(Professional) + 7200 Touchscreen Controller + a802 eGalaxTouch EXC7920 +0ef0 Hitachi Cable, Ltd +0ef1 Aichi Micro Intelligent Corp. +0ef2 I/O Magic Corp. +0ef3 Lynn Products, Inc. +0ef4 DSI Datotech +0ef5 PointChips + 2202 Flash Disk + 2366 Flash Disk +0ef6 Yield Microelectronics Corp. +0ef7 SM Tech Co., Ltd (Tulip) +0efd Oasis Semiconductor +0efe Wem Technology, Inc. +0f03 Unitek UPS Systems + 0001 Alpha 1200Sx +0f06 Visual Frontier Enterprise Co., Ltd +0f08 CSL Wire & Plug (Shen Zhen) Co. +0f0c CAS Corp. +0f0d Hori Co., Ltd + 0011 Real Arcade Pro 3 +0f0e Energy Full Corp. +0f0f Silego Technology Inc + 0006 GreenPak Universal Dev Board (Active Mode) + 8006 GreenPak Universal Dev Board (Reset Mode) +0f11 LD Didactic GmbH + 1000 CASSY-S + 1010 Pocket-CASSY + 1020 Mobile-CASSY + 1080 Joule and Wattmeter + 1081 Digital Multimeter P + 1090 UMI P + 1100 X-Ray Apparatus + 1101 X-Ray Apparatus + 1200 VideoCom + 2000 COM3LAB + 2010 Terminal Adapter + 2020 Network Analyser + 2030 Converter Control Unit + 2040 Machine Test System +0f12 Mars Engineering Corp. +0f13 Acetek Technology Co., Ltd +0f14 Ingenico + 0012 Vital'Act 3S + 0038 XIRING Smart Card Terminal LEO V2 +0f18 Finger Lakes Instrumentation + 0002 CCD + 0006 Focuser + 0007 Filter Wheel + 000a ProLine CCD + 000b Color Filter Wheel 4 + 000c PDF2 + 000d Guider +0f19 Oracom Co., Ltd +0f1b Onset Computer Corp. +0f1c Funai Electric Co., Ltd +0f1d Iwill Corp. +0f21 IOI Technology Corp. +0f22 Senior Industries, Inc. +0f23 Leader Tech Manufacturer Co., Ltd +0f24 Flex-P Industries, Snd., Bhd. +0f2d ViPower, Inc. +0f2e Geniality Maple Technology Co., Ltd +0f2f Priva Design Services +0f30 Jess Technology Co., Ltd + 001c PS3 Guitar Controller Dongle + 0110 Dual Analog Rumble Pad + 0111 Colour Rumble Pad + 0208 Xbox & PC Gamepad +0f31 Chrysalis Development +0f32 YFC-BonEagle Electric Co., Ltd +0f37 Kokuyo Co., Ltd +0f38 Nien-Yi Industrial Corp. +0f39 TG3 Electronics + 0876 Keyboard [87 Francium Pro] + 1086 DK2108SZ Keyboard [Ducky Zero] +0f3d Airprime, Incorporated + 0112 CDMA 1xEVDO PC Card, PC 5220 +0f41 RDC Semiconductor Co., Ltd +0f42 Nital Consulting Services, Inc. +0f44 Polhemus + ef11 Patriot (firmware not loaded) + ef12 Patriot + ff11 Liberty (firmware not loaded) + ff12 Liberty +0f4b St. John Technology Co., Ltd +0f4c WorldWide Cable Opto Corp. +0f4d Microtune, Inc. + 1000 Bluetooth Dongle +0f4e Freedom Scientific +0f52 Wing Key Electrical Co., Ltd +0f53 Dongguan White Horse Cable Factory, Ltd +0f54 Kawai Musical Instruments Mfg. Co., Ltd + 0101 MP6 Stage Piano +0f55 AmbiCom, Inc. +0f5c Prairiecomm, Inc. +0f5d NewAge International, LLC + 9455 Compact Drive +0f5f Key Technology Corp. +0f60 NTK, Ltd +0f61 Varian, Inc. +0f62 Acrox Technologies Co., Ltd + 1001 Targus Mini Trackball Optical Mouse +0f63 LeapFrog Enterprises + 0010 Leapster Explorer + 0022 Leap Reader + 0500 Fly Fusion + 0600 Leap Port Turbo + 0700 POGO + 0800 Didj + 0900 TAGSchool + 0a00 Leapster 2 + 0b00 Crammer + 0c00 Tag Jr + 0d00 My Pal Scout + 0e00 Tag32 + 0f00 Tag64 + 1000 Kiwi16 + 1100 Leapster L2x + 1111 Fly Fusion + 1300 Didj UK/France (Leapster Advance) +0f68 Kobe Steel, Ltd +0f69 Dionex Corp. +0f6a Vibren Technologies, Inc. +0f6e INTELLIGENT SYSTEMS + 0100 GameBoy Color Emulator + 0201 GameBoy Advance Flash Gang Writer + 0202 GameBoy Advance Capture + 0300 Gamecube DOL Viewer + 0400 NDS Emulator + 0401 NDS UIC + 0402 NDS Writer + 0403 NDS Capture + 0404 NDS Emulator (Lite) +0f73 DFI +0f78 Guntermann & Drunck GmbH +0f7c DQ Technology, Inc. +0f7d NetBotz, Inc. +0f7e Fluke Corp. +0f88 VTech Holdings, Ltd + 3012 RT2570 + 3014 ZD1211B +0f8b Yazaki Corp. +0f8c Young Generation International Corp. +0f8d Uniwill Computer Corp. +0f8e Kingnet Technology Co., Ltd +0f8f Soma Networks +0f97 CviLux Corp. +0f98 CyberBank Corp. +0f9c Hyun Won, Inc. + 0301 M-Any Premium DAH-610 MP3/WMA Player + 0332 mobiBLU DAH-1200 MP3/Ogg Player +0f9e Lucent Technologies +0fa3 Starconn Electronic Co., Ltd +0fa4 ATL Technology +0fa5 Sotec Co., Ltd +0fa7 Epox Computer Co., Ltd +0fa8 Logic Controls, Inc. +0faf Winpoint Electronic Corp. +0fb0 Haurtian Wire & Cable Co., Ltd +0fb1 Inclose Design, Inc. +0fb2 Juan-Chern Industrial Co., Ltd +0fb6 Heber Ltd + 3fc3 Firefly X10i I/O Board (with firmware) + 3fc4 Firefly X10i I/O Board (without firmware) +0fb8 Wistron Corp. + 0002 eHome Infrared Receiver +0fb9 AACom Corp. +0fba San Shing Electronics Co., Ltd +0fbb Bitwise Systems, Inc. +0fc1 Mitac Internatinal Corp. +0fc2 Plug and Jack Industrial, Inc. +0fc5 Delcom Engineering + 1222 I/O Development Board +0fc6 Dataplus Supplies, Inc. +0fca Research In Motion, Ltd. + 0001 Blackberry Handheld + 0004 Blackberry Handheld + 0006 Blackberry Pearl + 0008 Blackberry Pearl + 8001 Blackberry Handheld + 8004 Blackberry + 8007 Blackberry Handheld + 8010 Blackberry Playbook (Connect to Windows mode) + 8011 Blackberry Playbook (Connect to Mac mode) + 8020 Blackberry Playbook (CD-Rom mode) + 8037 Blackberry PRIV +0fce Sony Ericsson Mobile Communications AB + 0076 W910i (Multimedia mode) + 00af V640i Phone [PTP Camera] + 00d4 C902 [MTP] + 00d9 C702 Phone + 0112 W995 Walkman Phone + 014e J108i Cedar (MTP mode) + 015a Xperia Pro [Media Transfer Protocol] + 0166 Xperia Mini Pro + 0167 ST15i (Xperia mini) + 0169 Xperia S + 0172 Xperia P + 0177 Xperia Ion [Mass Storage] + 0188 ST26i + 019c C6833 + 019e C6903 + 01a5 SO-04F + 01a7 D5503 + 01ba D6603 [Xperia Z3] + 01bb D5803 [Xperia Z3 Compact] (MTP mode) + 0dde Xperia Mini Pro Bootloader + 1010 WMC Modem + 10af V640i Phone [PictBridge] + 10d4 C902 Phone [PictBridge] + 2105 W715 Phone + 2137 Xperia X10 mini (USB debug) + 2138 Xperia X10 mini pro (Debug) + 2149 Xperia X8 (debug) + 214e J108i Cedar (Windows-driver mode) + 3137 Xperia X10 mini + 3138 Xperia X10 mini pro + 3149 Xperia X8 + 514f Xperia arc S [Adb-Enable Mode] + 5169 Xperia S [Adb-Enable Mode] + 5177 Xperia Ion [Debug Mode] + 518c C1605 [Xperia E dual] MTD mode + 51a7 D5503 (Xperia Z1 Compact) + 614f Xperia X12 (debug mode) + 6166 Xperia Mini Pro + 618c C1605 [Xperia E dual] MSC mode + 715a Xperia Pro [Tethering] + 7166 Xperia Mini Pro (Tethering mode) + 7177 Xperia Ion [Tethering] + 8004 9000 Phone [Mass Storage] + adde C2005 (Xperia M dual) in service mode + d008 V800-Vodafone 802SE Phone + d016 K750i Phone + d017 K608i Phone + d019 VDC EGPRS Modem + d025 520 WMC Data Modem + d028 W800i + d038 W850i Phone + d039 K800i (phone mode) + d041 K510i Phone + d042 W810i Phone + d043 V630i Phone + d046 K610i Phone + d065 W960i Phone (PC Suite) + d076 W910i (Phone mode) + d089 W580i Phone (mass storage) + d0a1 K810 + d0af V640i Phone + d0cf MD300 Mobile Broadband Modem + d0d4 C902 Phone [Modem] + d0e1 MD400 Mobile Broadband Modem + d12a U100i Yari Phone + d12e Xperia X10 + d14e J108i Cedar (modem mode) + e000 K810 (PictBridge mode) + e039 K800i (msc mode) + e042 W810i Phone + e043 V630i Phone [Mass Storage] + e075 K850i + e076 W910i (Mass storage) + e089 W580i Phone + e090 W200 Phone (Mass Storage) + e0a1 K810 (Mass Storage mode) + e0a3 W660i + e0af V640i Phone [Mass Storage] + e0d4 C902 Phone [Mass Storage] + e0ef C905 Phone [Mass Storage] + e0f3 W595 + e105 W705 + e112 W995 Phone (Mass Storage) + e12e X10i Phone + e133 Vivaz + e14e J108i Cedar (mass-storage mode) + e14f Xperia Arc/X12 + e15a Xperia Pro [Mass Storage Class] + e161 Xperia Ray + e166 Xperia Mini Pro + e167 XPERIA mini + e19b C2005 [Xperia M dual] (Mass Storage) + e1a9 D5303 + e1aa D2303 + e1ad D5103 + e1b0 D6708 + e1b5 D2004 + e1ba D6683 + e1bb SO-02G + e1bc D2203 + e1c0 SGP621 + e1c2 D2533 + e1c9 E6553 + e1cf SGP771 + f0fa MN800 / Smartwatch 2 (DFU mode) +0fcf Dynastream Innovations, Inc. + 1003 ANT Development Board + 1004 ANTUSB Stick + 1006 ANT Development Board + 1008 ANTUSB2 Stick + 1009 ANTUSB-m Stick +0fd0 Tulip Computers B.V. +0fd1 Giant Electronics Ltd. +0fd2 Seac Banche + 0001 RDS 6000 +0fd4 Tenovis GmbH & Co., KG +0fd5 Direct Access Technology, Inc. +0fd9 Elgato Systems GmbH + 0011 EyeTV Diversity + 0018 EyeTV Hybrid + 0020 EyeTV DTT Deluxe + 0021 EyeTV DTT + 002a EyeTV Sat + 002c EyeTV DTT Deluxe v2 + 0033 Video Capture + 0037 Video Capture v2 +0fda Quantec Networks GmbH + 0100 quanton flight control +0fdc Micro Plus +0fde Oregon Scientific + ca01 WMRS200 weather station + ca05 CM160 +0fe0 Osterhout Design Group + 0100 Bluetooth Mouse + 0101 Bluetooth IMU + 0200 Bluetooth Keypad +0fe2 Air Techniques +0fe4 IN-Tech Electronics, Ltd +0fe5 Greenconn (U.S.A.), Inc. +0fe6 ICS Advent + 8101 DM9601 Fast Ethernet Adapter + 811e Parallel Adapter + 9700 DM9601 Fast Ethernet Adapter +0fe9 DVICO + 4020 TViX M-6500 + 9010 FusionRemote IR receiver + db00 FusionHDTV DVB-T (MT352+LgZ201) (uninitialized) + db01 FusionHDTV DVB-T (MT352+LgZ201) (initialized) + db10 FusionHDTV DVB-T (MT352+Thomson7579) (uninitialized) + db11 FusionHDTV DVB-T (MT352+Thomson7579) (initialized) + db78 FusionHDTV DVB-T Dual Digital 4 (ZL10353+xc2028/xc3028) (initialized) +0fea United Computer Accessories +0feb CRS Electronic Co., Ltd +0fec UMC Electronics Co., Ltd +0fed Access Co., Ltd +0fee Xsido Corp. +0fef MJ Research, Inc. +0ff6 Core Valley Co., Ltd +0ff7 CHI SHING Computer Accessories Co., Ltd +0ffc Clavia DMI AB + 0021 Nord Stage 2 +0ffd EarlySense + ff00 OEM +0fff Aopen, Inc. +1000 Speed Tech Corp. + 153b TerraTec Electronic GmbH +1001 Ritronics Components (S) Pte., Ltd +1003 Sigma Corp. + 0003 SD14 + 0100 SD9/SD10 +1004 LG Electronics, Inc. + 1fae U8120 3G Cellphone + 6000 Various Mobile Phones + 6005 T5100 + 6018 GM360/GD510/GW520/KP501 + 618e Ally/Optimus One/Vortex (debug mode) + 618f Ally/Optimus One + 61c5 P880 / Charge only + 61c6 Vortex (msc) + 61cc Optimus S + 61da G2 Android Phone [tethering mode] + 61f1 Optimus Android Phone [LG Software mode] + 61f9 Optimus (Various Models) MTP Mode + 61fc Optimus 3 + 61fe Optimus Android Phone [USB tethering mode] + 627f G3 (VS985) Android Phone (MTP/Download mode) + 6300 G2/Optimus Android Phone [Charge mode] + 631c G2/Optimus Android Phone [MTP mode] + 631d Optimus Android Phone (Camera/PTP Mode) + 631e G2/Optimus Android Phone [Camera/PTP mode] + 631f Optimus Android Phone (Charge Mode) + 633a Ultimate 2 Android Phone L41C + 633e G2/G3 Android Phone [MTP/PTP/Download mode] + 6344 G2 Android Phone [tethering mode] + 6356 Optimus Android Phone [Virtual CD mode] + 6800 CDMA Modem + 7000 LG LDP-7024D(LD)USB + 91c8 P880 / USB tethering + a400 Renoir (KC910) +1005 Apacer Technology, Inc. + 1001 MP3 Player + 1004 MP3 Player + 1006 MP3 Player + b113 Handy Steno/AH123 / Handy Steno 2.0/HT203 + b223 CD-RW + 6in1 Card Reader Digital Storage / Converter +1006 iRiver, Ltd. + 3001 iHP-100 + 3002 iHP-120/140 MP3 Player + 3003 H320/H340 + 3004 H340 (mtp) +1009 Emuzed, Inc. + 000e eHome Infrared Receiver + 0013 Angel MPEG Device + 0015 Lumanate Wave PAL SECAM DVBT Device + 0016 Lumanate Wave NTSC/ATSC Combo Device +100a AV Chaseway, Ltd + 2402 MP3 Player + 2404 MP3 Player + 2405 MP3 Player + 2406 MP3 Player + a0c0 MP3 Player +100b Chou Chin Industrial Co., Ltd +100d Netopia, Inc. + 3342 Cayman 3352 DSL Modem + 3382 3380 Series Network Interface + 6072 DSL Modem + 9031 Motorola 802.11n Dualband USB Wireless Adapter + 9032 Motorola 802.11n 5G USB Wireless Adapter + cb01 Cayman 3341 Ethernet DSL Router +1010 Fukuda Denshi Co., Ltd +1011 Mobile Media Tech. + 0001 AccFast Mp3 +1012 SDKM Fibres, Wires & Cables Berhad +1013 TST-Touchless Sensor Technology AG +1014 Densitron Technologies PLC +1015 Softronics Pty., Ltd +1016 Xiamen Hung's Enterprise Co., Ltd +1017 Speedy Industrial Supplies, Pte., Ltd +1019 Elitegroup Computer Systems (ECS) + 0c55 Flash Reader, Desknote UCR-61S2B + 0f38 Infrared Receiver +1020 Labtec + 0006 Wireless Keyboard + 000a Wireless Optical Mouse + 0106 Wireless Optical Mouse +1022 Shinko Shoji Co., Ltd +1025 Hyper-Paltek + 005e USB DVB-T device + 005f USB DVB-T device + 0300 MP3 Player + 0350 MP3 Player +1026 Newly Corp. +1027 Time Domain +1028 Inovys Corp. +1029 Atlantic Coast Telesys +102a Ramos Technology Co., Ltd +102b Infotronic America, Inc. +102c Etoms Electronics Corp. + 6151 Q-Cam Sangha CIF + 6251 Q-Cam VGA +102d Winic Corp. +1031 Comax Technology, Inc. +1032 C-One Technology Corp. +1033 Nucam Corp. + 0068 3,5'' HDD case MD-231 +1038 SteelSeries ApS + 0100 Ideazon Zboard + 1361 Ideazon Sensei +1039 devolo AG + 0824 1866 802.11bg [Texas Instruments TNETW1450] + 2140 dsl+ 1100 duo +103a PSA + f000 Actia Evo XS +103d Stanton + 0100 ScratchAmp + 0101 ScratchAmp +1043 iCreate Technologies Corp. + 160f Wireless Network Adapter + 4901 AV-836 Video Capture Device + 8006 Flash Disk 32-256 MB + 8012 Flash Disk 256 MB +1044 Chu Yuen Enterprise Co., Ltd + 7001 Gigabyte U7000 DVB-T tuner + 7002 Gigabyte U8000 DVB-T tuner + 7004 Gigabyte U7100 DVB-T tuner + 7005 Gigabyte U7200 DVB-T tuner [AF9035] + 7006 Gigabyte U6000 DVB-T tuner [em2863] + 8001 GN-54G + 8002 GN-BR402W + 8003 GN-WLBM101 + 8004 GN-WLBZ101 802.11b Adapter + 8005 GN-WLBZ201 802.11b Adapter + 8006 GN-WBZB-M 802.11b Adapter + 8007 GN-WBKG + 8008 GN-WB01GS + 800a GN-WI05GS + 800b GN-WB30N 802.11n WLAN Card + 800c GN-WB31N 802.11n USB WLAN Card + 800d GN-WB32L 802.11n USB WLAN Card +1046 Winbond Electronics Corp. [hex] + 6694 Generic W6694 USB + 8901 Bluetooth Device + 9967 W9967CF/W9968CF Webcam IC +1048 Targus Group International + 2010 4-Port hub +104b Mylex / Buslogic +104c AMCO TEC International, Inc. +104d Newport Corporation + 1003 Model-52 LED Light Source Power Supply and Driver +104f WB Electronics + 0001 Infinity Phoenix + 0002 Smartmouse + 0003 FunProgrammer + 0004 Infinity Unlimited + 0006 Infinity Smart + 0007 Infinity Smart module + 0008 Infinity CryptoKey + 0009 RE-BL PlayStation 3 IR-to-Bluetooth converter +1050 Yubico.com + 0010 Yubikey (v1 or v2) + 0110 Yubikey NEO(-N) OTP + 0111 Yubikey NEO(-N) OTP+CCID + 0112 Yubikey NEO(-N) CCID + 0113 Yubikey NEO(-N) U2F + 0114 Yubikey NEO(-N) OTP+U2F + 0115 Yubikey NEO(-N) U2F+CCID + 0116 Yubikey NEO(-N) OTP+U2F+CCID + 0120 Yubikey Touch U2F Security Key + 0200 Gnubby U2F + 0211 Gnubby + 0401 Yubikey 4 OTP + 0402 Yubikey 4 U2F + 0403 Yubikey 4 OTP+U2F + 0404 Yubikey 4 CCID + 0405 Yubikey 4 OTP+CCID + 0406 Yubikey 4 U2F+CCID + 0407 Yubikey 4 OTP+U2F+CCID + 0410 Yubikey plus OTP+U2F +1053 Immanuel Electronics Co., Ltd +1054 BMS International Beheer N.V. + 5004 DSL 7420 Loader + 5005 DSL 7420 LAN Modem +1055 Complex Micro Interconnection Co., Ltd +1056 Hsin Chen Ent Co., Ltd +1057 ON Semiconductor +1058 Western Digital Technologies, Inc. + 0200 FireWire USB Combo + 0400 External HDD + 0500 hub + 0701 WD Passport (WDXMS) + 0702 WD Passport (WDXMS) + 0704 My Passport Essential (WDME) + 0705 My Passport Elite (WDML) + 070a My Passport Essential (WDBAAA), My Passport for Mac (WDBAAB), My Passport Essential SE (WDBABM), My Passport SE for Mac (WDBABW) + 070b My Passport Elite (WDBAAC) + 070c My Passport Studio (WDBAAE) + 071a My Passport Essential (WDBAAA) + 071d My Passport Studio (WDBALG) + 0730 My Passport Essential (WDBACY) + 0732 My Passport Essential SE (WDBGYS) + 0740 My Passport Essential (WDBACY) + 0741 My Passport Ultra + 0742 My Passport Essential SE (WDBGYS) + 0748 My Passport (WDBKXH, WDBY8L) + 07a8 My Passport (WDBBEP), My Passport for Mac (WDBLUZ) + 07ae My Passport Edge for Mac (WDBJBH) + 07ba PiDrive (WDLB) + 0810 My Passport Ultra (WDBZFP) + 0816 My Passport Air (WDBBLW) + 0820 My Passport Ultra (WDBMWV, WDBZFP) + 0822 My Passport Ultra (WDBBUZ) + 0824 My Passport Slim (WDBPDZ) + 0830 My Passport Ultra (WDBZFP) + 0837 My Passport Ultra (WDBBKD) + 0900 MyBook Essential External HDD + 0901 My Book Essential Edition (Green Ring) (WDG1U) + 0902 My Book Pro Edition (WDG1T) + 0903 My Book Premium Edition + 0905 My Book Pro Edition II (WD10000C033-001) + 0910 My Book Essential Edition (Green Ring) (WDG1U) + 1001 Elements Desktop (WDE1U) + 1003 WD Elements Desktop (WDE1UBK) + 1010 Elements Portable (WDBAAR) + 1021 Elements Desktop (WDBAAU) + 1023 Elements SE Portable (WDBABV) + 1042 Elements SE Portable (WDBPCK) + 1048 Elements Portable (WDBU6Y) + 1078 Elements Portable (WDBUZG) + 107c Elements Desktop (WDBWLG) + 10a2 Elements SE Portable (WDBPCK) + 10a8 Elements Portable (WDBUZG) + 10b8 Elements Portable (WDBU6Y, WDBUZG) + 1100 My Book Essential Edition 2.0 (WDH1U) + 1102 My Book Home Edition (WDH1CS) + 1103 My Book Studio + 1104 My Book Mirror Edition (WDH2U) + 1105 My Book Studio II + 1110 My Book Essential (WDBAAF), My Book for Mac (WDBAAG) + 1111 My Book Elite (WDBAAH) + 1112 My Book Studio (WDBAAJ), My Book Studio LX (WDBACH) + 1123 My Book 3.0 (WDBABP) + 1130 My Book Essential (WDBACW) + 1140 My Book Essential (WDBACW) + 1230 My Book (WDBFJK) + 1235 My Book (WDBFJK0040HBK) + 2599 My Passport Ultra (WD40NMZW) + 259d My Passport Ultra (WDBBKD) + 259f My Passport Ultra (WD10JMVW) + 25a1 Elements / My Passport (WD20NMVW) + 25a2 Elements 25A2 + 25a3 Elements Desktop (WDBWLG) + 25e2 My Passport (WD40NMZW) + 30a0 SATA adapter cable +1059 Giesecke & Devrient GmbH + 000b StarSign Bio Token 3.0 +105b Foxconn International, Inc. + e065 BCM43142A0 Bluetooth module +105c Hong Ji Electric Wire & Cable (Dongguan) Co., Ltd +105d Delkin Devices, Inc. +105e Valence Semiconductor Design, Ltd +105f Chin Shong Enterprise Co., Ltd +1060 Easthome Industrial Co., Ltd +1063 Motorola Electronics Taiwan, Ltd [hex] + 1555 MC141555 Hub + 4100 SB4100 USB Cable Modem +1065 CCYU Technology + 0020 USB-DVR2 Dev Board + 2136 EasyDisk ED1064 +1068 Micropi Elettronica + 0001 CPUSB - V 1.8 - software-rights management key +106a Loyal Legend, Ltd +106c Curitel Communications, Inc. + 1101 CDMA 2000 1xRTT USB modem (HX-550C) + 1102 Packet Service + 1103 Packet Service Diagnostic Serial Port (WDM) + 1104 Packet Service Diagnostic Serial Port (WDM) + 1105 Composite Device + 1106 Packet Service Diagnostic Serial Port (WDM) + 1301 Composite Device + 1302 Packet Service Diagnostic Serial Port (WDM) + 1303 Packet Service + 1304 Packet Service + 1401 Composite Device + 1402 Packet Service + 1403 Packet Service Diagnostic Serial Port (WDM) + 1501 Packet Service + 1502 Packet Service Diagnostic Serial Port (WDM) + 1503 Packet Service + 1601 Packet Service + 1602 Packet Service Diagnostic Serial Port (WDM) + 1603 Packet Service + 2101 AudioVox 8900 Cell Phone + 2102 Packet Service + 2103 Packet Service Diagnostic Serial Port (WDM) + 2301 Packet Service + 2302 Packet Service Diagnostic Serial Port (WDM) + 2303 Packet Service + 2401 Packet Service Diagnostic Serial Port (WDM) + 2402 Packet Service + 2403 Packet Service Diagnostic Serial Port (WDM) + 2501 Packet Service + 2502 Packet Service Diagnostic Serial Port (WDM) + 2503 Packet Service + 2601 Packet Service + 2602 Packet Service Diagnostic Serial Port (WDM) + 2603 Packet Service + 3701 Broadband Wireless modem + 3702 Pantech PX-500 + 3714 PANTECH USB MODEM [UM175] + 3716 UMW190 Modem + 3721 Option Beemo (GI0801) LTE surfstick + 3b14 Option Beemo (GI0801) LTE surfstick + 3eb4 Packet Service Diagnostic Serial Port (WDM) + 4101 Packet Service Diagnostic Serial Port (WDM) + 4102 Packet Service + 4301 Composite Device + 4302 Packet Service Diagnostic Serial Port (WDM) + 4401 Composite Device + 4402 Packet Service + 4501 Packet Service + 4502 Packet Service Diagnostic Serial Port (WDM) + 4601 Composite Device + 4602 Packet Service Diagnostic Serial Port (WDM) + 5101 Packet Service + 5102 Packet Service Diagnostic Serial Port (WDM) + 5301 Packet Service Diagnostic Serial Port (WDM) + 5302 Packet Service + 5401 Packet Service + 5402 Packet Service Diagnostic Serial Port (WDM) + 5501 Packet Service Diagnostic Serial Port (WDM) + 5502 Packet Service + 5601 Packet Service Diagnostic Serial Port (WDM) + 5602 Packet Service + 7101 Composite Device + 7102 Packet Service + a000 Packet Service + a001 Packet Service Diagnostic Serial Port (WDM) + c100 Packet Service + c200 Packet Service + c500 Packet Service Diagnostic Serial Port (WDM) + e200 Packet Service +106d San Chieh Manufacturing, Ltd +106e ConectL +106f Money Controls + 0009 CT10x Coin Transaction + 000a CR10x Coin Recycler + 000c Xchange +1076 GCT Semiconductor, Inc. + 0031 Bluetooth Device + 0032 Bluetooth Device + 8002 LU150 LTE Modem [Yota LU150] +107b Gateway, Inc. + 3009 eHome Infrared Transceiver + 55b2 WBU-110 802.11b Wireless Adapter [Intersil PRISM 3] + 55f2 WGU-210 802.11g Adapter [Intersil ISL3886] +107d Arlec Australia, Ltd +107e Midoriya Electric Co., Ltd +107f KidzMouse, Inc. +1082 Shin-Etsukaken Co., Ltd +1083 Canon Electronics, Inc. + 160c CR-55 + 160f DR-1210C + 1614 DR-4010C + 1617 DR-2510C + 1618 DR-X10C + 161a CR-25 + 161b DR-2010C Scanner + 161d DR-3010C + 1620 DR-7090C + 1622 DR-9050C + 1623 DR-7550C + 1624 DR-6050C + 1626 DR-6010C + 162c P-150 Scanner + 1638 DR-6030C + 1639 CR-135i + 163e DR-M160 + 163f DR-M140 + 1640 DR-C125 + 1641 DR-P215 + 1648 FSU-201 + 164a DR-C130 + 164b DR-P208 + 164f DR-G1130 + 1650 DR-G1100 + 1651 DR-C120 + 1654 DR-F120 + 1657 DR-M1060 + 1658 DR-C225 + 1659 DR-P215II + 165d DR-P208II +1084 Pantech Co., Ltd +108a Chloride Power Protection +108b Grand-tek Technology Co., Ltd + 0005 HID Keyboard/Mouse PS/2 Translator +108c Robert Bosch GmbH +108e Lotes Co., Ltd. +1091 Numerik Jena + 8101 Absoflex +1099 Surface Optics Corp. +109a DATASOFT Systems GmbH +109b Hisense + 9118 Medion P4013 Mobile +109f eSOL Co., Ltd + 3163 Trigem Mobile SmartDisplay84 + 3164 Trigem Mobile SmartDisplay121 +10a0 Hirotech, Inc. +10a3 Mitsubishi Materials Corp. +10a9 SK Teletech Co., Ltd + 1102 Sky Love Actually IM-U460K + 1104 Sky Vega IM-A650S + 1105 VEGA Android composite + 1106 VEGA Android composite + 1107 VEGA Android composite + 1108 VEGA Android composite + 1109 VEGA Android composite + 6021 SIRIUS alpha + 6031 Pantech Android composite + 6032 Pantech Android composite + 6033 Pantech Android composite + 6034 Pantech Android composite + 6035 Pantech Android composite + 6036 Pantech Android composite + 6037 Pantech Android composite + 6050 Pantech Android composite + 6051 Pantech Android composite + 6052 Pantech Android composite + 6053 Pantech Android composite + 6054 Pantech Android composite + 6055 Pantech Android composite + 6056 Pantech Android composite + 6057 Pantech Android composite + 6058 Pantech Android composite + 6059 Pantech Android composite + 6080 MHS291LVW LTE Modem [Verizon Jetpack 4G LTE Mobile Hotspot MHS291L] (Zero CD Mode) + 6085 MHS291LVW LTE Modem [Verizon Jetpack 4G LTE Mobile Hotspot MHS291L] (Modem Mode) + 7031 Pantech Android composite + 7032 Pantech Android composite + 7033 Pantech Android composite + 7034 Pantech Android composite + 7035 Pantech Android composite + 7036 Pantech Android composite + 7037 Pantech Android composite +10aa Cables To Go +10ab USI Co., Ltd + 1002 Bluetooth Device + 1003 BC02-EXT in DFU + 1005 Bluetooth Adptr + 1006 BC04-EXT in DFU + 10c5 Sony-Ericsson / Samsung DataCable +10ac Honeywell, Inc. +10ae Princeton Technology Corp. +10af Liebert Corp. + 0000 UPS + 0001 PowerSure PSA UPS + 0002 PowerSure PST UPS + 0003 PowerSure PSP UPS + 0004 PowerSure PSI UPS + 0005 UPStation GXT 2U UPS + 0006 UPStation GXT UPS + 0007 Nfinity Power Systems UPS + 0008 PowerSure Interactive UPS +10b5 Comodo (PLX?) + 9060 Test Board +10b8 DiBcom + 0bb8 DVB-T reference design (MOD300) (cold) + 0bb9 DVB-T reference design (MOD300) (warm) + 0bc6 DVB-T reference design (MOD3000P) (cold) + 0bc7 DVB-T reference design (MOD3000P) (warm) +10bb TM Technology, Inc. +10bc Dinging Technology Co., Ltd +10bd TMT Technology, Inc. + 1427 Ethernet +10bf SmartHome + 0001 SmartHome PowerLinc +10c3 Universal Laser Systems, Inc. + 00a4 ULS PLS Series Laser Engraver Firmware Loader + 00a5 ULS Print Support +10c4 Cygnal Integrated Products, Inc. + 0002 F32x USBXpress Device + 0003 CommandIR + 800a SPORTident + 800b AES + 8030 K4JRG Ham Radio devices + 8044 USB Debug Adapter + 804e Software Bisque Paramount ME + 80a9 CP210x to UART Bridge Controller + 80c4 Infrared Thermometer Adapter + 80ca ATM2400 Sensor Device + 813f tams EasyControl + 8149 West Mountain Radio Computerized Battery Analyzer + 814a West Mountain Radio RIGblaster P&P + 814b West Mountain Radio RIGtalk + 818a Silicon Labs FM Radio Reference Design + 81e8 Zephyr BioHarness + 834b Infrared Online Sensor Adapter + 834e Infrared Sensor Adapter + 8460 Sangoma Wanpipe VoiceTime + 8461 Sangoma U100 + 8470 Juniper Networks BX Series System Console + 8477 Balluff RFID Reader + 8496 SiLabs Cypress FW downloader + 8497 SiLabs Cypress EVB + 84fb Infrared Blackbody Adapter + 8508 RS485 Adapter + 8605 dilitronics ESoLUX solar lighting controller + 8660 Netronics CANdoISO + 86bc C8051F34x AudioDelay [AD-340] + 8789 C8051F34x Extender & EDID MGR [EMX-DVI] + 87be C8051F34x HDMI Audio Extractor [EMX-HD-AUD] + 8863 C8051F34x Bootloader + 8897 C8051F38x HDMI Splitter [UHBX] + 88c9 AES HID device + 8918 C8051F38x HDMI Audio Extractor [VSA-HA-DP] + 8973 C8051F38x HDMI Extender [UHBX-8X] + 89c6 SPORTident HID device + 89e1 C8051F38x HDMI Extender [UHBX-SW3-WP] + ea60 CP2102/CP2109 UART Bridge Controller [CP210x family] + ea61 CP210x UART Bridge + ea70 CP210x UART Bridge + ea80 CP210x UART Bridge + eac9 EFM8UB1 Bootloader + eaca EFM8UB2 Bootloader +10c5 Sanei Electric, Inc. + 819a FM Radio +10c6 Intec, Inc. +10cb Eratech +10cc GBM Connector Co., Ltd + 1101 MP3 Player +10cd Kycon, Inc. +10ce Silicon Labs + 0007 Shinko/Sinfonia CHC-S1245 + 000e Shinko/Sinfonia CHC-S2145 + 0019 Shinko/Sinfonia CHC-S6145 + 001d Shinko/Sinfonia CHC-S6245 + 001e Ciaat Brava 21 + ea6a MobiData EDGE USB Modem +10cf Velleman Components, Inc. + 2011 R-Engine MPEG2 encoder/decoder + 5500 8055 Experiment Interface Board (address=0) + 5501 8055 Experiment Interface Board (address=1) + 5502 8055 Experiment Interface Board (address=2) + 5503 8055 Experiment Interface Board (address=3) +10d1 Hottinger Baldwin Measurement + 0101 USB-Module for Spider8, CP32 + 0202 CP22 - Communication Processor + 0301 CP42 - Communication Processor +10d2 RayComposer - R. Adams + 5243 RayComposer +10d4 Man Boon Manufactory, Ltd +10d5 Uni Class Technology Co., Ltd + 0004 PS/2 Converter + 5552 KVM Human Interface Composite Device (Keyboard/Mouse ports) + 55a2 2Port KVMSwitcher +10d6 Actions Semiconductor Co., Ltd + 0c02 BioniQ 1001 Tablet + 1000 MP3 Player + 1100 MPMan MP-Ki 128 MP3 Player/Recorder + 1101 D-Wave 2GB MP4 Player / AK1025 MP3/MP4 Player + 2200 Acer MP-120 MP3 player + 8888 ADFU Device + ff51 ADFU Device + ff61 MP4 Player + ff66 Craig 2GB MP3/Video Player +10de Authenex, Inc. +10df In-Win Development, Inc. + 0500 iAPP CR-e500 Card reader +10e0 Post-Op Video, Inc. +10e1 CablePlus, Ltd +10e2 Nada Electronics, Ltd +10ec Vast Technologies, Inc. +10f0 Nexio Co., Ltd + 2002 iNexio Touchscreen controller +10f1 Importek + 1a08 Internal Webcam + 1a1e Laptop Integrated Webcam 1.3M + 1a2a Laptop Integrated Webcam + 1a2e HP Truevision HD Integrated Webcam +10f5 Turtle Beach + 0200 Audio Advantage Roadie +10fb Pictos Technologies, Inc. +10fd Anubis Electronics, Ltd + 7e50 FlyCam Usb 100 + 804d Typhoon Webshot II Webcam [zc0301] + 8050 FlyCAM-USB 300 XP2 + de00 WinFast WalkieTV WDM Capture Driver. +10fe Thrane & Thrane + 000c TT-3750 BGAN-XL Radio Module +1100 VirTouch, Ltd + 0001 VTPlayer VTP-1 Braille Mouse +1101 EasyPass Industrial Co., Ltd + 0001 FSK Electronics Super GSM Reader +1108 Brightcom Technologies, Ltd +110a Moxa Technologies Co., Ltd. + 1250 UPort 1250 2-Port RS-232/422/485 + 1251 UPort 1250I 2-Port RS-232/422/485 with Isolation + 1410 UPort 1410 4-Port RS-232 + 1450 UPort 1450 4-Port RS-232/422/485 + 1451 UPort 1450I 4-Port RS-232/422/485 with Isolation + 1613 UPort 1610-16 16-Port RS-232 + 1618 UPort 1610-8 8-Port RS-232 + 1653 UPort 1650-16 16-Port RS-232/422/485 + 1658 UPort 1650-8 8-Port RS-232/422/485 +1110 Analog Devices Canada, Ltd (Allied Telesyn) + 5c01 Huawei MT-882 Remote NDIS Network Device + 6489 ADSL ETH/USB RTR + 9000 ADSL LAN Adapter + 9001 ADSL Loader + 900f AT-AR215 DSL Modem + 9010 AT-AR215 DSL Modem + 9021 ADSL WAN Adapter + 9022 ADSL Loader + 9023 ADSL WAN Adapter + 9024 ADSL Loader + 9031 ADSL LAN Adapter + 9032 ADSL Loader +1111 Pandora International Ltd. + 8888 Evolution Device +1112 YM ELECTRIC CO., Ltd +1113 Medion AG + a0a2 Active Sync device +111e VSO Electric Co., Ltd +112a RedRat + 0001 RedRat3 IR Transceiver + 0005 RedRat3II IR Transceiver +112e Master Hill Electric Wire and Cable Co., Ltd +112f Cellon International, Inc. +1130 Tenx Technology, Inc. + 0001 BlyncLight + 0002 iBuddy + 0202 Rocket Launcher + 6604 MCE IR-Receiver + 660c Foot Pedal/Thermometer + 6626 Key + 6806 Keychain photo frame + c301 Digital Photo viewer [Wallet Pix] + f211 TP6911 Audio Headset +1131 Integrated System Solution Corp. + 1001 KY-BT100 Bluetooth Adapter + 1002 Bluetooth Device + 1003 Bluetooth Device + 1004 Bluetooth Device +1132 Toshiba Corp., Digital Media Equipment [hex] + 4331 PDR-M4/M5/M70 Digital Camera + 4332 PDR-M60 Digital Camera + 4333 PDR-M2300/PDR-M700 + 4334 PDR-M65 + 4335 PDR-M61 + 4337 PDR-M11 + 4338 PDR-M25 +1136 CTS Electronincs + 3131 CTS LS515 +113c Arin Tech Co., Ltd +113d Mapower Electronics Co., Ltd +113f Integrated Biometrics, LLC + 1020 Watson Two-Finger Roll Scanner + 1100 Columbo Single-Finger Scanner +1141 V One Multimedia, Pte., Ltd +1142 CyberScan Technologies, Inc. + 0709 Cyberview High Speed Scanner +1145 Japan Radio Company + 0001 AirH PHONE AH-J3001V/J3002V +1146 Shimane SANYO Electric Co., Ltd. +1147 Ever Great Electric Wire and Cable Co., Ltd +114b Sphairon Access Systems GmbH + 0110 Turbolink UB801R WLAN Adapter + 0150 Turbolink UB801RE Wireless 802.11g 54Mbps Network Adapter [RTL8187] +114c Tinius Olsen Testing Machine Co., Inc. +114d Alpha Imaging Technology Corp. +114f Wavecom + 1234 Fastrack Xtend FXT001 Modem +115b Salix Technology Co., Ltd. +1162 Secugen Corp. +1163 DeLorme Publishing, Inc. + 0100 Earthmate GPS (orig) + 0200 Earthmate GPS (LT-20, LT-40) + 2020 Earthmate GPS (PN-40) +1164 YUAN High-Tech Development Co., Ltd + 0300 ELSAVISION 460D + 0601 Analog TV Tuner + 0900 TigerBird BMP837 USB2.0 WDM Encoder + 0bc7 Digital TV Tuner + 521b MC521A mini Card ATSC Tuner + 6601 Digital TV Tuner Card [RTL2832U] +1165 Telson Electronics Co., Ltd +1166 Bantam Interactive Technologies +1167 Salient Systems Corp. +1168 BizConn International Corp. +116e Gigastorage Corp. +116f Silicon 10 Technology Corp. + 0005 Flash Card Reader + c108 Flash Card Reader + c109 Flash Card Reader +1175 Shengyih Steel Mold Co., Ltd +117d Santa Electronic, Inc. +117e JNC, Inc. +1182 Venture Corp., Ltd +1183 Compaq Computer Corp. [hex] (Digital Dream ??) + 0001 DigitalDream l'espion XS + 19c7 ISDN TA + 4008 56k FaxModem + 504a PJB-100 Personal Jukebox +1184 Kyocera Elco Corp. +1188 Bloomberg L.P. +1189 Acer Communications & Multimedia + 0893 EP-1427X-2 Ethernet Adapter [Acer] +118f You Yang Technology Co., Ltd +1190 Tripace +1191 Loyalty Founder Enterprise Co., Ltd +1196 Yankee Robotics, LLC + 0010 Trifid Camera without code + 0011 Trifid Camera +1197 Technoimagia Co., Ltd +1198 StarShine Technology Corp. +1199 Sierra Wireless, Inc. + 0019 AC595U + 0021 AC597E + 0024 MC5727 CDMA modem + 0110 Composite Device + 0112 CDMA 1xEVDO PC Card, AirCard 580 + 0120 AC595U + 0218 MC5720 Wireless Modem + 6467 MP Series Network Adapter + 6468 MP Series Network Adapter + 6469 MP Series Network Adapter + 6802 MC8755 Device + 6803 MC8765 Device + 6804 MC8755 Device + 6805 MC8765 Device + 6812 MC8775 Device + 6820 AC875 Device + 6832 MC8780 Device + 6833 MC8781 Device + 683a MC8785 Device + 683c Mobile Broadband 3G/UMTS (MC8790 Device) + 6850 AirCard 880 Device + 6851 AirCard 881 Device + 6852 AirCard 880E Device + 6853 AirCard 881E Device + 6854 AirCard 885 Device + 6856 ATT "USB Connect 881" + 6870 MC8780 Device + 6871 MC8781 Device + 6893 MC8777 Device + 68a3 MC8700 Modem + 68aa 4G LTE adapter + 9000 Gobi 2000 Wireless Modem (QDL mode) + 9001 Gobi 2000 Wireless Modem + 9002 Gobi 2000 Wireless Modem + 9003 Gobi 2000 Wireless Modem + 9004 Gobi 2000 Wireless Modem + 9005 Gobi 2000 Wireless Modem + 9006 Gobi 2000 Wireless Modem + 9007 Gobi 2000 Wireless Modem + 9008 Gobi 2000 Wireless Modem + 9009 Gobi 2000 Wireless Modem + 900a Gobi 2000 Wireless Modem + 9013 Sierra Wireless Gobi 3000 Modem device (MC8355) + 9055 Gobi 9x15 Multimode 3G/4G LTE Modem (NAT mode) + 9057 Gobi 9x15 Multimode 3G/4G LTE Modem (IP passthrough mode) +119a ZHAN QI Technology Co., Ltd +119b ruwido austria GmbH + 0400 Infrared Keyboard V2.01 +11a0 Chipcon AS + eb11 CC2400EB 2.0 ZigBee Sniffer +11a3 Technovas Co., Ltd + 8031 MP3 Player + 8032 MP3 Player +11aa GlobalMedia Group, LLC + 1518 iREZ K2 +11ab Exito Electronics Co., Ltd +11ac Nike + 6565 FuelBand +11b0 ATECH FLASH TECHNOLOGY + 6208 PRO-28U +11be R&D International NV + f0a0 Martin Maxxyz DMX +11c0 Betop + 5506 Gamepad +11c5 Inmax + 0521 IMT-0521 Smartcard Reader +11ca VeriFone Inc + 0207 PIN Pad VX 810 + 0220 PIN Pad VX 805 +11db Topfield Co., Ltd. + 1000 PVR + 1100 PVR +11e6 K.I. Technology Co. Ltd. +11f5 Siemens AG + 0001 SX1 + 0003 Mobile phone USB cable + 0004 X75 + 0005 SXG75/EF81 + 0008 UMTS/HSDPA Data Card + 0101 RCU Connect +11f6 Prolific + 2001 Willcom WSIM +11f7 Alcatel (?) + 02df Serial cable (v2) for TD-10 Mobile Phone +1203 TSC Auto ID Technology Co., Ltd + 0140 TTP-245C +1209 InterBiometrics + 1001 USB Hub + 1002 USB Relais + 1003 IBSecureCam-P + 1004 IBSecureCam-O + 1005 IBSecureCam-N + 1006 Mini IO-Board + 1ab5 Arachnid Labs Tsunami + 2000 Zygmunt Krynicki Lantern Brightness Sensor + 2048 Housedillon.com MRF49XA Transciever + 2222 LabConnect Signalgenerator + 2300 Keyboardio Keyboardio Model 01 Bootloader + 2301 Keyboardio Keyboardio Model 01 + 2327 K.T.E.C.Bootloader Device + 2328 K.T.E.C. Keyboard Device + 2337 /Dev or SlashDev /Net + 3000 lloyd3000 + 3333 LabConnect Digitalnetzteil + 5222 telavivmakers attami + 53c0 SatoshiLabs TREZOR Bootloader + 53c1 SatoshiLabs TREZOR + 5a22 ikari_01 sd2snes + 7530 Refflion - IoT Board - Bootloader + 7531 Refflion - IoT Board - Sketch + 7bd0 pokey9000 Tiny Bit Dingus + abd0 tibounise ADB converter + aced Open Lighting Project - Ja Rule Device + acee Open Lighting Project - Ja Rule Bootloader + beef Modal MC-USB + c0f5 unethi PERswitch + ca1c KnightOS Hub + ca1d KnightOS MTP Device + cafe ii iigadget + dada Rebel Technology OWL + dead chaosfield.at AVR-Ruler + fa11 moonglow OpenXHC + feed ProgramGyar AVR-IR Sender +120e Hudson Soft Co., Ltd +120f Magellan + 524e RoadMate 1475T + 5260 Triton Handheld GPS Receiver (300/400/500/1500/2000) +1210 DigiTech + 0016 RP500 Guitar Multi-Effects Processor + 001b RP155 Guitar Multi-Effects Processor + 001c RP255 Guitar Multi-Effects Processor +121e Jungsoft Co., Ltd + 3403 Muzio JM250 Audio Player +1220 TC Electronic + 000a Hall of Fame Reverb + 002a Polytune + 0032 Ditto X2 Looper + 0039 Alter Ego X4 Vintage Echo +1221 Unknown manufacturer + 3234 Disk (Thumb drive) +1223 SKYCABLE ENTERPRISE. CO., LTD. +1228 Datapaq Limited + 0012 Q18 Data Logger + 0015 TPaq21/MPaq21 Datalogger + 584c XL2 Logger +1230 Chipidea-Microelectronica, S.A. +1233 Denver Electronics + 5677 FUSB200 mp3 player +1234 Brain Actuated Technologies + 0000 Neural Impulse Actuator Prototype 1.0 [NIA] + 4321 Human Interface Device + ed02 Emotiv EPOC Developer Headset Wireless Dongle +1235 Focusrite-Novation + 0001 ReMOTE Audio/XStation First Edition + 0002 Speedio + 0003 RemoteSL + ZeroSL + 0004 ReMOTE LE + 0005 XIOSynth [First Edition] + 0006 XStation + 0007 XIOSynth + 0008 ReMOTE SL Compact + 0009 nIO + 000a Nocturn + 000b ReMOTE SL MkII + 000c ZeRO MkII + 000e Launchpad + 0010 Saffire 6 + 0011 Ultranova + 0012 Nocturn Keyboard + 0013 VRM Box + 0014 VRM Box Audio Class (2-out) + 0015 Dicer + 0016 Ultranova + 0018 Twitch + 0019 Impulse 25 + 001a Impulse 49 + 001b Impulse 61 + 4661 ReMOTE25 + 8000 Scarlett 18i6 + 8002 Scarlett 8i6 + 8006 Focusrite Scarlett 2i2 + 8008 Saffire 6 + 800a Scarlett 2i4 + 800c Scarlett 18i20 + 800e iTrack Solo + 8010 Forte + 8012 Scarlett 6i6 + 8014 Scarlett 18i8 + 8016 Focusrite Scarlett 2i2 + 8203 Focusrite Scarlett 6i6 + 8204 Scarlett 18i8 2nd Gen +1241 Belkin + 0504 Wireless Trackball Keyboard + 1111 Mouse + 1122 Typhoon Stream Optical Mouse USB+PS/2 + 1155 Memorex Optical ScrollPro Mouse SE MX4600 + 1166 MI-2150 Trust Mouse + 1177 Mouse [HT82M21A] + 1503 Keyboard + 1603 Keyboard + f767 Keyboard +124a AirVast + 168b PRISM3 WLAN Adapter + 4017 PC-Chips 802.11b Adapter + 4023 WM168g 802.11bg Wireless Adapter [Intersil ISL3886] + 4025 IOGear GWU513 v2 802.11bg Wireless Adapter [Intersil ISL3887] +124b Nyko (Honey Bee) + 4d01 Airflo EX Joystick +124c MXI - Memory Experts International, Inc. + 3200 Stealth MXP 1GB +125c Apogee Inc. + 0010 Alta series CCD +125f A-DATA Technology Co., Ltd. + 312a Superior S102 + 312b Superior S102 Pro + a15a DashDrive Durable HD710 portable HDD various size + a22a DashDrive Elite HE720 500GB + a91a Portable HDD CH91 + c08a C008 Flash Drive + c81a Flash drive + c93a 4GB Pen Drive + c96a C906 Flash Drive + cb10 Dash Drive UV100 + cb20 DashDrive UV110 +1260 Standard Microsystems Corp. + ee22 SMC2862W-G v3 EZ Connect 802.11g Adapter [Intersil ISL3887] +1264 Covidien Energy-based Devices +1266 Pirelli Broadband Solutions + 6302 Fastweb DRG A226M ADSL Router +1267 Logic3 / SpectraVideo plc + 0103 G-720 Keyboard + 0201 Mouse + 0210 LG Optical Mouse 3D-310 + a001 JP260 PC Game Pad + c002 Wireless Optical Mouse +126c Aristocrat Technologies +126d Bel Stewart +126e Strobe Data, Inc. +126f TwinMOS + 0163 Storage device (2gB thumb drive) + 1325 Mobile Disk + 2168 Mobile Disk III + a006 G240 802.11bg +1274 Ensoniq +1275 Xaxero Marine Software Engineering, Ltd. + 0002 WeatherFax 2000 Demodulator + 0080 SkyEye Weather Satellite Receiver +1278 Starlight Xpress + 0105 SXV-M5 + 0107 SXV-M7 + 0109 SXV-M9 + 0110 SXVF-H16 + 0115 SXVF-H5 + 0119 SXV-H9 + 0135 SXVF-H35 + 0136 SXVF-H36 + 0200 SXV interface for paraller MX cameras + 0305 SXV-M5C + 0307 SXV-M7C + 0319 SXV-H9C + 0325 SXV-M25C + 0326 SXVR-M26C + 0507 Lodestar autoguider + 0517 CoStar +1283 zebris Medical GmbH + 0100 USB-RS232 Adaptor + 0110 CMS20 + 0111 CMS 10 + 0112 CMS 05 + 0114 ARCUS digma PC-Interface + 0115 SAM Axioquick recorder + 0116 SAM Axioquick recorder + 0120 emed-X + 0121 emed-AT + 0130 PDM + 0150 CMS10GI (Golf) +1286 Marvell Semiconductor, Inc. + 00bc Marvell JTAG Probe + 1fab 88W8338 [Libertas] 802.11g + 2001 88W8388 802.11a/b/g WLAN + 2006 88W8362 802.11n WLAN + 203c K30326 802.11bgn Wireless Module [Marvell 88W8786U] + 8001 BLOB boot loader firmware +1291 Qualcomm Flarion Technologies, Inc. / Leadtek Research, Inc. + 0010 FDM 2xxx Flash-OFDM modem + 0011 LR7F06/LR7F14 Flash-OFDM modem +1292 Innomedia + 0258 Creative Labs VoIP Blaster + 4154 Retro Link Atari cable +1293 Belkin Components [hex] + 0002 F5U002 Parallel Port [uss720] + 2101 104-key keyboard +1294 RISO KAGAKU CORP. + 1320 Webmail Notifier +1297 DekTec + 020f DTU-215 Multi-Standard Modulator +129b CyberTAN Technology + 160b Siemens S30853-S1031-R351 802.11g Wireless Adapter [Atheros AR5523] + 160c Siemens S30853-S1038-R351 802.11g Wireless Adapter [Atheros AR5523] + 1666 TG54USB 802.11bg + 1667 802.11bg + 1828 Gigaset USB Adapter 300 +12a7 Trendchip Technologies Corp. +12ab Honey Bee Electronic International Ltd. +12b8 Zhejiang Xinya Electronic Technology Co., Ltd. +12b9 E28 +12ba Licensed by Sony Computer Entertainment America + 0032 Wireless Stereo Headset + 0042 Wireless Stereo Headset + 00ff Rocksmith Guitar Adapter + 0100 RedOctane Guitar for PlayStation(R)3 + 0120 RedOctane Drum Kit for PlayStation(R)3 + 0200 Harmonix Guitar for PlayStation(R)3 + 0210 Harmonix Drum Kit for PlayStation(R)3 +12bd Gembird + d012 JPD Shockforce gamepad + d015 Generic 4-button NES USB Controller +12c4 Autocue Group Ltd + 0006 Teleprompter Two-button Hand Control (v1) + 0008 Teleprompter Foot Control (v1) +12cf DEXIN + 0170 Tt eSPORTS BLACK Gaming mouse + 600b Cougar 600M Gaming Mouse +12d1 Huawei Technologies Co., Ltd. + 1001 E161/E169/E620/E800 HSDPA Modem + 1003 E220 HSDPA Modem / E230/E270/E870 HSDPA/HSUPA Modem + 1004 E220 (bis) + 1009 U120 + 1010 ETS2252+ CDMA Fixed Wireless Terminal + 1021 U8520 + 1035 U8120 + 1037 Ideos + 1038 Ideos (debug mode) + 1039 Ideos (tethering mode) + 1052 MT7-L09 + 1404 EM770W miniPCI WCDMA Modem + 1406 E1750 + 140b EC1260 Wireless Data Modem HSD USB Card + 140c E180v + 1412 EC168c + 1436 Broadband stick + 1446 HSPA modem + 1465 K3765 HSPA + 14ac E815 + 14c3 K5005 Vodafone LTE/UMTS/GSM Modem/Networkcard + 14c8 K5005 Vodafone LTE/UMTS/GSM MOdem/Networkcard + 14c9 K3770 3G Modem + 14cf K3772 + 14d1 K3770 3G Modem (Mass Storage Mode) + 14db E353/E3131 + 14dc E33372 LTE/UMTS/GSM HiLink Modem/Networkcard + 14f1 Gobi 3000 HSPA+ Modem + 14fe Modem (Mass Storage Mode) + 1501 Pulse + 1505 E398 LTE/UMTS/GSM Modem/Networkcard + 1506 Modem/Networkcard + 150a E398 LTE/UMTS/GSM Modem/Networkcard + 1520 K3765 HSPA + 1521 K4505 HSPA+ + 155a R205 Mobile WiFi (CD-ROM mode) + 1575 K5150 LTE modem + 15bb ME936 LTE/HSDPA+ 4G modem + 15c1 ME906s LTE M.2 Module + 15ca E3131 3G/UMTS/HSPA+ Modem (Mass Storage Mode) + 1805 AT&T Go Phone U2800A phone + 1c05 Broadband stick (modem on) + 1c0b E173s 3G broadband stick (modem off) + 1c20 R205 Mobile WiFi (Charging) + 1d50 ET302s TD-SCDMA/TD-HSDPA Mobile Broadband + 1f01 E353/E3131 (Mass storage mode) + 1f16 K5150 LTE modem (Mass Storage Mode) + 380b WiMAX USB modem(s) +12d2 LINE TECH INDUSTRIAL CO., LTD. +12d6 EMS Dr. Thomas Wuensche + 0444 CPC-USB/ARM7 + 0888 CPC-USB/M16C +12d7 BETTER WIRE FACTORY CO., LTD. +12d8 Araneus Information Systems Oy + 0001 Alea I True Random Number Generator +12e6 Waldorf Music GmbH + 0013 Blofeld +12ef Tapwave, Inc. + 0100 Tapwave Handheld [Tapwave Zodiac] +12f2 ViewPlus Technologies, Inc. + 000a Braille embosser [SpotDot Emprint] +12f5 Dynamic System Electronics Corp. +12f7 Memorex Products, Inc. + 1a00 TD Classic 003B + 1e23 TravelDrive 2007 Flash Drive +12fd AIN Comm. Technology Co., Ltd + 1001 AWU2000b 802.11b Stick +12ff Fascinating Electronics, Inc. + 0101 Advanced RC Servo Controller +1307 Transcend Information, Inc. + 0163 256MB/512MB/1GB Flash Drive + 0165 2GB/4GB/8GB Flash Drive + 0190 Ut190 8 GB Flash Drive with MicroSD reader + 0310 SD/MicroSD CardReader [hama]/IT1327E [Basic Line flash drive] + 0330 63-in-1 Multi-Card Reader/Writer + 0361 CR-75: 51-in-1 Card Reader/Writer [Sakar] + 1169 TS2GJF210 JetFlash 210 2GB + 1171 Fingerprint Reader +1308 Shuttle, Inc. + 0003 VFD Module + c001 eHome Infrared Transceiver +1310 Roper + 0001 Class 1 Bluetooth Dongle +1312 ICS Electronics +1313 ThorLabs + 0010 LC1 Linear Camera (Jungo) + 0011 SP1 Spectrometer (Jungo) + 0012 SP2 Spectrometer (Jungo) + 0110 LC1 Linear Camera (VISA) + 0111 SP1 Spectrometer (VISA) + 0112 SP2 Spectrometer (VISA) + 8001 TXP-Series Slot (TXP5001, TXP5004) + 8012 BC106 Camera Beam Profiler + 8013 WFS10 Wavefront Sensor + 8017 BC206 Camera Beam Profiler + 8019 BP2 Multi Slit Beam Profiler + 8020 PM300 Optical Power Meter + 8021 PM300E Optical Power and Energy Meter + 8022 PM320E Optical Power and Energy Meter + 8030 ER100 Extinction Ratio Meter + 8070 PM100D + 8072 PM100USB Power and Energy Meter Interface + 8078 PM100D Compact Power and Energy Meter Console + 8080 CCS100 - Compact Spectrometer +131d Natural Point + 0155 TrackIR 3 Pro Head Tracker + 0156 TrackIR 4 Pro Head Tracker + 0158 TrackIR 5 Pro Head Tracker +1325 ams AG + 4002 I2C Dongle +132a Envara Inc. + 1502 WiND 802.11abg / 802.11bg WLAN +132b Konica Minolta + 0000 Dimage A2 Camera + 0001 Minolta DiMAGE A2 (ptp) + 0003 Dimage Xg Camera + 0006 Dimage Z2 Camera + 0007 Minolta DiMAGE Z2 (PictBridge mode) + 0008 Dimage X21 Camera + 000a Dimage Scan Dual IV AF-3200 (2891) + 000b Dimage Z10 Camera + 000d Dimage X50 Camera [storage?] + 000f Dimage X50 Camera [p2p?] + 0010 Dimage G600 Camera + 0012 Dimage Scan Elite 5400 II (2892) + 0013 Dimage X31 Camera + 0015 Dimage G530 Camera + 0017 Dimage Z3 Camera + 0018 Minolta DiMAGE Z3 (PictBridge mode) + 0019 Dimage A200 Camera + 0021 Dimage Z5 Camera + 0022 Minolta DiMAGE Z5 (PictBridge mode) + 002c Dynax 5D camera + 2001 Magicolor 2400w + 2004 Magicolor 5430DL + 2005 Magicolor 2430 DL + 2029 Magicolor 5440DL + 2030 PagePro 1350E(N) + 2033 PagePro 1400W + 2043 Magicolor 2530DL + 2045 Magicolor 2500W + 2049 Magicolor 2490MF +133e Kemper Digital GmbH + 0815 Virus TI Desktop +1342 Mobility + 0200 EasiDock 200 Hub + 0201 EasiDock 200 Keyboard and Mouse Port + 0202 EasiDock 200 Serial Port + 0203 EasiDock 200 Printer Port + 0204 Ethernet + 0304 EasiDock Ethernet +1343 Citizen Systems + 0002 CW-01 + 0003 CX / DNP DS40 + 0004 CX-W / DNP DS80 / Mitsubishi CP3800 + 0005 CY / DNP DSRX1 + 0006 CW-02 + 0007 DNP DS80DX + 0008 CX2 / DNP DS620 +1345 Sino Lite Technology Corp. + 001c Xbox Controller Hub + 6006 Defender Wireless Controller +1347 Moravian Instruments + 0400 G2CCD USB 1.1 obsolete + 0401 G2CCD-S with Sony ICX285 CCD + 0402 G2CCD2 + 0403 G2/G3CCD-I KAI CCD + 0404 G2/G3/G4 CCD-F KAF CCD + 0405 Gx CCD-I CCD + 0406 Gx CCD-F CCD + 0410 G1-0400 CCD + 0411 G1-0800 CCD + 0412 G1-0300 CCD + 0413 G1-2000 CCD + 0414 G1-1400 CCD + 0415 G1-1200 CCD + 04b0 Gx CCD-B CCD + 04b1 Gx CCD-BI CCD +1348 Katsuragawa Electric Co., Ltd. +134c PanJit International Inc. + 0001 Touch Panel Controller + 0002 Touch Panel Controller + 0003 Touch Panel Controller + 0004 Touch Panel Controller +134e Digby's Bitpile, Inc. DBA D Bit +1357 P&E Microcomputer Systems + 0089 OpenSDA - CDC Serial Port + 0503 USB-ML-12 HCS08/HCS12 Multilink + 0504 DEMOJM +135f Control Development Inc. + 0110 Linear Spectrograph + 0111 Spectrograph - Renumerated + 0200 Linear Spectrograph + 0201 Spectrograph - Renumerated + 0240 MPP Spectrograph +1366 SEGGER + 0101 J-Link PLUS +136b STEC +136e Andor Technology Ltd. + 0012 iXon Ultra CCD + 0014 Zyla 5.5 sCMOS camera +1370 Swissbit + 0323 Swissmemory cirrusWHITE + 6828 Victorinox Flash Drive +1371 CNet Technology Inc. + 0001 CNUSB-611AR Wireless Adapter-G [AT76C503] + 0002 CNUSB-611AR Wireless Adapter-G [AT76C503] (FiberLine WL-240U) + 0013 CNUSB-611 Wireless Adapter [AT76C505] + 0014 CNUSB-611 Wireless Adapter [AT76C505] (FiberLine WL-240U) + 5743 CNUSB-611 (D) Wireless Adapter [AT76C503] + 9022 CWD-854 [RT2573] + 9032 CWD-854 rev F + 9401 CWD-854 Wireless 802.11g 54Mbps Network Adapter [RTL8187] +1376 Vimtron Electronics Co., Ltd. +1377 Sennheiser electronic GmbH & Co. KG + 4000 HDVD800 +137b SCAPS GmbH + 0002 SCAPS USC-2 Scanner Controller +1385 Netgear, Inc + 4250 WG111T + 4251 WG111T (no firmware) + 5f00 WPN111 RangeMax(TM) Wireless USB 2.0 Adapter + 5f01 WPN111 (no firmware) + 5f02 WPN111 (no firmware) + 6e00 WPNT121 802.11g 240Mbps Wireless Adapter [Airgo AGN300] +138a Validity Sensors, Inc. + 0001 VFS101 Fingerprint Reader + 0005 VFS301 Fingerprint Reader + 0007 VFS451 Fingerprint Reader + 0008 VFS300 Fingerprint Reader + 0010 VFS Fingerprint sensor + 0011 VFS5011 Fingerprint Reader + 0015 VFS 5011 fingerprint sensor + 0017 VFS 5011 fingerprint sensor + 0018 Fingerprint scanner + 003c VFS471 Fingerprint Reader + 003d VFS491 + 003f VFS495 Fingerprint Reader + 0050 Swipe Fingerprint Sensor + 0090 VFS7500 Touch Fingerprint Sensor + 0091 VFS7552 Touch Fingerprint Sensor +138e Jungo LTD + 9000 Raisonance S.A. STM32 ARM evaluation board / RLink dongle +1390 TOMTOM B.V. + 0001 GO 520 T/GO 630/ONE XL (v9) + 5454 Blue & Me 2 + 7474 GPS Sport Watch [Runner, Multi-Sport] + a001 Bandit Action Camera Batt-Stick +1391 IdealTEK, Inc. + 1000 URTC-1000 +1395 Sennheiser Communications + 0025 Headset [PC 8] + 0046 PXC 550 + 3556 USB Headset +1397 BEHRINGER International GmbH + 00bc BCF2000 +1398 Q-tec + 2103 USB 2.0 Storage Device +13ad Baltech + 9999 Card reader +13b0 PerkinElmer Optoelectronics + 000a Alesis Photon X25 MIDI Controller +13b1 Linksys + 000a WUSB54G v2 802.11g Adapter [Intersil ISL3887] + 000b WUSB11 v4.0 802.11b Adapter [ALi M4301] + 000c WUSB54AG 802.11a/g Adapter [Intersil ISL3887] + 000d WUSB54G v4 802.11g Adapter [Ralink RT2500USB] + 000e WUSB54GS v1 802.11g Adapter [Broadcom 4320 USB] + 0011 WUSB54GP v4.0 802.11g Adapter [Ralink RT2500USB] + 0014 WUSB54GS v2 802.11g Adapter [Broadcom 4320 USB] + 0018 USB200M 10/100 Ethernet Adapter + 001a HU200TS Wireless Adapter + 001e WUSBF54G 802.11bg + 0020 WUSB54GC v1 802.11g Adapter [Ralink RT73] + 0022 WUSB54GX4 802.11g 240Mbps Wireless Adapter [Airgo AGN300] + 0023 WUSB54GR + 0024 WUSBF54G v1.1 802.11bg + 0026 WUSB54GSC v1 802.11g Adapter [Broadcom 4320 USB] + 0028 WUSB200 802.11g Adapter [Ralink RT2671] + 0029 WUSB300N 802.11bgn Wireless Adapter [Marvell 88W8362+88W8060] + 002f AE1000 v1 802.11n [Ralink RT3572] + 0031 AM10 v1 802.11n [Ralink RT3072] + 0039 AE1200 802.11bgn Wireless Adapter [Broadcom BCM43235] + 003a AE2500 802.11abgn Wireless Adapter [Broadcom BCM43236] + 003b AE3000 802.11abgn (3x3) Wireless Adapter [Ralink RT3573] + 003e AE6000 802.11a/b/g/n/ac Wireless Adapter [MediaTek MT7610U] + 003f WUSB6300 802.11a/b/g/n/ac Wireless Adapter [Realtek RTL8812AU] + 0041 Gigabit Ethernet Adapter + 0042 WUSB6100M 802.11a/b/g/n/ac Wireless Adapter + 13b1 WUSB200: Wireless-G Business Network Adapter with Rangebooster +13b2 Alesis + 0030 Multimix 8 +13b3 Nippon Dics Co., Ltd. +13ba PCPlay + 0001 Konig Electronic CMP-KEYPAD12 Numeric Keypad + 0017 PS/2 Keyboard+Mouse Adapter + 0018 Barcode PCP-BCG4209 +13be Ricoh Printing Systems, Ltd. +13ca JyeTai Precision Industrial Co., Ltd. +13cf Wisair Ltd. + 1200 Olidata Wireless Multimedia Adapter +13d0 Techsan Electronics Co., Ltd. + 2282 TechniSat DVB-PC TV Star 2 +13d1 A-Max Technology Macao Commercial Offshore Co. Ltd. + 7019 MD 82288 + abe6 Wireless 802.11g 54Mbps Network Adapter [RTL8187] +13d2 Shark Multimedia + 0400 Pocket Ethernet [klsi] +13d3 IMC Networks + 3201 VisionDTV USB-Ter/HAMA USB DVB-T device cold + 3202 VisionDTV USB-Ter/HAMA USB DVB-T device warm + 3203 DTV-DVB UDST7020BDA DVB-S Box(DVBS for MCE2005) + 3204 DTV-DVB UDST7020BDA DVB-S Box(DVBS for MCE2005) + 3205 DNTV Live! Tiny USB2 BDA (No Remote) + 3206 DNTV Live! Tiny USB2 BDA (No Remote) + 3207 DTV-DVB UDST7020BDA DVB-S Box(DVBS for MCE2005) + 3208 DTV-DVB UDST7020BDA DVB-S Box(DVBS for MCE2005) + 3209 DTV-DVB UDST7022BDA DVB-S Box(Without HID) + 3211 DTV-DVB Hybrid Analog/Capture / Pinnacle PCTV 310e + 3212 DTV-DVB UDTT704C - DVBT/NTSC/PAL Driver(PCM4) + 3213 DTV-DVB UDTT704D - DVBT/NTSC/PAL Driver (PCM4) + 3214 DTV-DVB UDTT704F -(MiniCard) DVBT/NTSC/PAL Driver(Without HID) + 3215 DTV-DVB UDAT7240 - ATSC/NTSC/PAL Driver(PCM4) + 3216 DTV-DVB UDTT 7047-USB 2.0 DVB-T Driver + 3217 Digital-TV Receiver. + 3219 DTV-DVB UDTT7049 - DVB-T Driver(Without HID) + 3220 DTV-DVB UDTT 7047M-USB 2.0 DVB-T Driver + 3223 DNTV Live! Tiny USB2 BDA (No Remote) + 3224 DNTV Live! Tiny USB2 BDA (No Remote) + 3226 DigitalNow TinyTwin DVB-T Receiver + 3234 DVB-T FTA Half Minicard [RTL2832U] + 3236 DTV-DVB UDTT 7047A-USB 2.0 DVB-T Driver + 3237 DTV-DVB UDTT 704J - dual DVB-T Driver + 3239 DTV-DVB UDTT704D - DVBT/NTSC/PAL Driver(Without HID) + 3240 DTV-DVB UDXTTM6010 - A/D Driver(Without HID) + 3241 DTV-DVB UDXTTM6010 - A/D Driver(Without HID) + 3242 DTV-DVB UDAT7240LP - ATSC/NTSC/PAL Driver(Without HID) + 3243 DTV-DVB UDXTTM6010 - A/D Driver(Without HID) + 3244 DTV-DVB UDTT 7047Z-USB 2.0 DVB-T Driver + 3247 AW-NU222 802.11bgn Wireless Module [Ralink RT2770+RT2720] + 3249 Internal Bluetooth + 3250 Broadcom Bluetooth 2.1 + 3262 802.11 n/g/b Wireless LAN USB Adapter + 3273 802.11 n/g/b Wireless LAN USB Mini-Card + 3274 DVB-T Dongle [RTL2832U] + 3282 DVB-T + GPS Minicard [RTL2832U] + 3284 Wireless LAN USB Mini-Card + 3304 Asus Integrated Bluetooth module [AR3011] + 3306 Mediao 802.11n WLAN [Realtek RTL8191SU] + 3315 Bluetooth module + 3327 AW-NU137 802.11bgn Wireless Module [Atheros AR9271] + 3362 Atheros AR3012 Bluetooth 4.0 Adapter + 3375 Atheros AR3012 Bluetooth 4.0 Adapter + 3392 Azurewave 43228+20702 + 3394 Bluetooth + 3474 Atheros AR3012 Bluetooth + 5070 Webcam + 5111 Integrated Webcam + 5115 Integrated Webcam + 5116 Integrated Webcam + 5122 2M Integrated Webcam + 5126 PC Cam + 5130 Integrated Webcam + 5134 Integrated Webcam + 5702 UVC VGA Webcam + 5710 UVC VGA Webcam + 5716 UVC VGA Webcam + 7020 DTV-DVB UDST7020BDA DVB-S Box(DVBS for MCE2005) + 7022 DTV-DVB UDST7022BDA DVB-S Box(Without HID) +13d7 Guidance Software, Inc. + 0001 T5 PATA forensic bridge + 000c T8-R2 forensic bridge +13dc ALEREON, INC. +13dd i.Tech Dynamic Limited +13e1 Kaibo Wire & Cable (Shenzhen) Co., Ltd. +13e5 Rane + 0001 SL-1 + 0003 TTM 57SL +13e6 TechnoScope Co., Ltd. +13ea Hengstler + 0001 C-56 Thermal Printer +13ec Zydacron + 0006 HID Remote Control +13ee MosArt + 0001 Optical Mouse + 0003 Optical Mouse +13fd Initio Corporation + 0840 INIC-1618L SATA + 0841 Samsung SE-T084M DVD-RW + 0940 ASUS SBW-06D2X-U + 1040 INIC-1511L PATA Bridge + 1340 Hi-Speed USB to SATA Bridge + 160f RocketFish SATA Bridge [INIC-1611] + 1640 INIC-1610L SATA Bridge + 1669 INIC-1609PN + 1840 INIC-1608 SATA bridge + 1e40 INIC-1610P SATA bridge + 2040 Samsung Writemaster external DVD writer + 3940 external DVD burner ECD819-SU3 + 3e40 ZALMAN ZM-VE350 +13fe Kingston Technology Company Inc. + 1a00 512MB/1GB Flash Drive + 1a23 512MB Flash Drive + 1d00 DataTraveler 2.0 1GB/4GB Flash Drive / Patriot Xporter 4GB Flash Drive + 1e00 Flash Drive 2 GB [ICIDU 2 GB] + 1e50 U3 Smart Drive + 1f00 Kingston DataTraveler / Patriot Xporter + 1f23 PS2232 flash drive controller + 2240 microSD card reader + 3100 2/4 GB stick + 3123 Verbatim STORE N GO 4GB + 3600 flash drive (4GB, EMTEC) + 3800 Rage XT Flash Drive + 3e00 Flash Drive + 4100 Flash drive + 5000 USB flash drive (32 GB SHARKOON Accelerate) + 5100 Flash Drive + 5200 DataTraveler R3.0 +1400 Axxion Group Corp. +1402 Bowe Bell & Howell +1403 Sitronix + 0001 Digital Photo Frame + 0003 Digital Photo Frame (DPF-1104) +1409 IDS Imaging Development Systems GmbH + 1000 generic (firmware not loaded yet) + 1485 uEye UI1485 +140e Telechips, Inc. + b011 TCC780X-based player (USB Boot mode) + b021 TCC77X-based players (USB Boot mode) +1410 Novatel Wireless + 1110 Merlin S620 + 1120 Merlin EX720 + 1130 Merlin S720 + 1400 Merlin U730/U740 (Vodafone) + 1410 Merlin U740 (non-Vodafone) + 1430 Merlin XU870 + 1450 Merlin X950D + 2110 Ovation U720/MCD3000 + 2410 Expedite EU740 + 2420 Expedite EU850D/EU860D/EU870D + 4100 U727 + 4400 Ovation MC930D/MC950D + 9010 Expedite E362 + a001 Gobi Wireless Modem + a008 Gobi Wireless Modem (QDL mode) + b001 Ovation MC551 +1415 Nam Tai E&E Products Ltd. or OmniVision Technologies, Inc. + 0000 Sony SingStar USBMIC + 0020 Sony Wireless SingStar + 2000 Sony Playstation Eye +1419 ABILITY ENTERPRISE CO., LTD. +1421 Sensor Technology + 0605 Sentech Camera +1424 Posnet Polska S.A. + 1001 Temo + 1002 Thermal + 1003 Neo + 1004 Combo DF + 1005 Thermal-A + 1006 Thermal FV + 1007 Bingo HS + 1008 Thermal HS FV + 1009 Thermal FV EJ + 100a Thermal HD + 100b Thermal + 100c Neo + 100d Ergo + 100e Trio + 1010 Thermal HS FV EJ + 1011 Neo EJ + 1012 Thermal-A + 1013 Thermal-A EJ + 1014 Mobile + 1015 Temo HS + 1016 Mobile HS + 1017 TH230+ FV EJ + 1018 4610-1NR FV EJ +1429 Vega Technologies Industrial (Austria) Co. +142a Thales E-Transactions + 0003 Artema Hybrid + 0005 Artema Modular + 0043 medCompact +142b Arbiter Systems, Inc. + 03a5 933A Portable Power Sentinel +1430 RedOctane + 0150 wireless receiver for skylanders wii + 4734 Guitar Hero4 hub + 474b Guitar Hero MIDI interface +1431 Pertech Resources, Inc. +1435 Wistron NeWeb + 0427 UR054g 802.11g Wireless Adapter [Intersil ISL3887] + 0711 UR055G 802.11bg + 0804 AR9170+AR9104 802.11abgn Wireless Adapter + 0826 AR5523 + 0827 AR5523 (no firmware) + 0828 AR5523 + 0829 AR5523 (no firmware) +1436 Denali Software, Inc. +143c Altek Corporation +1443 Digilent + 0007 Development board JTAG +1446 X.J.GROUP + 6a73 Stamps.com Model 510 5LB Scale + 6a78 DYMO Endicia 75lb Digital Scale +1451 Force Dimension + 0301 haptic device + 0302 haptic device + 0400 haptic device + 0401 delta.x haptic device + 0402 omega.x haptic device + 0403 sigma.x haptic device + 0404 haptic controller + 0405 dedicated haptic device + 0406 dedicated haptic device + 0407 dedicated haptic device + 0408 dedicated haptic device +1452 Dai Nippon Printing, Inc + 8b01 DS620 +1453 Radio Shack + 4026 26-183 Serial Cable +1456 Extending Wire & Cable Co., Ltd. +1457 First International Computer, Inc. + 5117 OpenMoko Neo1973 kernel usbnet (g_ether, CDC Ethernet) mode + 5118 OpenMoko Neo1973 Debug board (V2+) + 5119 OpenMoko Neo1973 u-boot cdc_acm serial port + 511a HXD8 u-boot usbtty CDC ACM Mode + 511b SMDK2440 u-boot usbtty CDC ACM mode + 511c SMDK2443 u-boot usbtty CDC ACM mode + 511d QT2410 u-boot usbtty CDC ACM mode + 5120 OpenMoko Neo1973 u-boot usbtty generic serial + 5121 OpenMoko Neo1973 kernel mass storage (g_storage) mode + 5122 OpenMoko Neo1973 / Neo Freerunner kernel cdc_ether USB network + 5123 OpenMoko Neo1973 internal USB CSR4 module + 5124 OpenMoko Neo1973 Bluetooth Device ID service +145f Trust + 0106 K56 V92 Modem + 013d PC Camera (SN9C201 + OV7660) + 013f Megapixel Auto Focus Webcam + 0142 WB-6250X Webcam + 015a WB-8300X 2MP Webcam + 0161 15901 802.11bg Wireless Adapter [Realtek RTL8187L] + 0167 Widescreen 3MP Webcam + 0176 Isla Keyboard +1460 Tatung Co. + 9150 eHome Infrared Transceiver +1461 Staccato Communications +1462 Micro Star International + 5512 MegaStick-1 Flash Stick + 8807 DIGIVOX mini III [af9015] +1472 Huawei-3Com + 0007 Aolynk WUB300g [ZyDAS ZD1211] + 0009 Aolynk WUB320g +147a Formosa Industrial Computing, Inc. + e015 eHome Infrared Receiver + e016 eHome Infrared Receiver + e017 eHome Infrared Receiver + e018 eHome Infrared Receiver + e02c Infrared Receiver + e03a eHome Infrared Receiver + e03c eHome Infrared Receiver + e03d 2 Channel Audio + e03e Infrared Receiver [IR605A/Q] +147e Upek + 1000 Biometric Touchchip/Touchstrip Fingerprint Sensor + 1001 TCS5B Fingerprint sensor + 1002 Biometric Touchchip/Touchstrip Fingerprint Sensor + 2016 Biometric Touchchip/Touchstrip Fingerprint Sensor + 2020 TouchChip Fingerprint Coprocessor (WBF advanced mode) + 3000 TCS1C EIM/Cypress Fingerprint sensor + 3001 TCS1C EIM/STM32 Fingerprint sensor +147f Hama GmbH & Co., KG +1482 Vaillant + 1005 VRD PC-Interface +1484 Elsa AG [hex] + 1746 Ecomo 19H99 Monitor + 7616 Elsa Hub +1485 Silicom + 0001 U2E + 0002 Psion Gold Port Ethernet +1487 DSP Group, Ltd. +148e EVATRONIX SA +148f Ralink Technology, Corp. + 1000 Motorola BC4 Bluetooth 3.0+HS Adapter + 1706 RT2500USB Wireless Adapter + 2070 RT2070 Wireless Adapter + 2570 RT2570 Wireless Adapter + 2573 RT2501/RT2573 Wireless Adapter + 2671 RT2601/RT2671 Wireless Adapter + 2770 RT2770 Wireless Adapter + 2870 RT2870 Wireless Adapter + 3070 RT2870/RT3070 Wireless Adapter + 3071 RT3071 Wireless Adapter + 3072 RT3072 Wireless Adapter + 3370 RT3370 Wireless Adapter + 3572 RT3572 Wireless Adapter + 3573 RT3573 Wireless Adapter + 5370 RT5370 Wireless Adapter + 5372 RT5372 Wireless Adapter + 5572 RT5572 Wireless Adapter + 7601 MT7601U Wireless Adapter + 760b MT7601U Wireless Adapter + 761a MT7610U ("Archer T2U" 2.4G+5G WLAN Adapter + 9020 RT2500USB Wireless Adapter + 9021 RT2501USB Wireless Adapter +1491 Futronic Technology Co. Ltd. + 0020 FS81 Fingerprint Scanner Module + 0088 Fingerprint Scanner Model FS88 +1493 Suunto + 0010 Bluebird [Ambit] + 0019 Duck [Ambit2] + 001a Colibri [Ambit2 S] + 001b Emu [Ambit3 Peak] + 001c Finch [Ambit3 Sport] + 001d Greentit [Ambit2 R] +1497 Panstrong Company Ltd. +1498 Microtek International Inc. + a090 DVB-T Tuner +149a Imagination Technologies + 2107 DBX1 DSP core +14aa WideView Technology Inc. + 0001 Avermedia AverTV DVBT USB1.1 (cold) + 0002 Avermedia AverTV DVBT USB1.1 (warm) + 0201 AVermedia/Yakumo/Hama/Typhoon DVB-T USB2.0 (cold) + 0221 WT-220U DVB-T dongle + 022b WT-220U DVB-T dongle + 0301 AVermedia/Yakumo/Hama/Typhoon DVB-T USB2.0 (warm) +14ad CTK Corporation +14ae Printronix Inc. +14af ATP Electronics Inc. +14b0 StarTech.com Ltd. +14b2 Ralink Technology, Corp. + 3a93 Topcom 802.11bg Wireless Adapter [Atheros AR5523] + 3a95 Toshiba WUS-G06G-JT 802.11bg Wireless Adapter [Atheros AR5523] + 3a98 Airlink101 AWLL4130 802.11bg Wireless Adapter [Atheros AR5523] + 3c02 Conceptronic C54RU v2 802.11bg Wireless Adapter [Ralink RT2571] + 3c05 rt2570 802.11g WLAN + 3c06 Conceptronic C300RU v1 802.11bgn Wireless Adapter [Ralink RT2870] + 3c07 802.11n adapter + 3c09 802.11n adapter + 3c22 Conceptronic C54RU v3 802.11bg Wireless Adapter [Ralink RT2571W] + 3c23 Airlink101 AWLL6080 802.11bgn Wireless Adapter [Ralink RT2870] + 3c24 NEC NP01LM 802.11abg Wireless Adapter [Ralink RT2571W] + 3c25 DrayTek Vigor N61 802.11bgn Wireless Adapter [Ralink RT2870] + 3c27 Airlink101 AWLL6070 802.11bgn Wireless Adapter [Ralink RT2770] + 3c28 Conceptronic C300RU v2 802.11bgn Wireless Adapter [Ralink RT2770] + 3c2b NEC NP02LM 802.11bgn Wireless Adapter [Ralink RT3072] + 3c2c Keebox W150NU 802.11bgn Wireless Adapter [Ralink RT3070] +14c0 Rockwell Automation, Inc. +14c2 Gemlight Computer, Ltd + 0250 Storage Adapter V2 + 0350 Storage Adapter V2 +14c8 Zytronic + 0005 Touchscreen Controller +14cd Super Top + 1212 microSD card reader (SY-T18) + 121c microSD card reader + 121f microSD CardReader SY-T18 + 123a SD/MMC/RS-MMC Card Reader + 125c SD card reader + 127b SDXC Reader + 6116 M6116 SATA Bridge + 6600 M110E PATA bridge + 6700 Card Reader + 6900 Card Reader + 8123 SD MMC Reader + 8125 SD MMC Reader + 8601 4-Port hub + 8608 Hub [Super Top] +14d8 JAMER INDUSTRIES CO., LTD. +14dd Raritan Computer, Inc. + 1007 D2CIM-VUSB KVM connector +14e0 WiNRADiO Communications + 0501 WR-G528e 'CHEETAH' +14e1 Dialogue Technology Corp. + 5000 PenMount 5000 Touch Controller +14e5 SAIN Information & Communications Co., Ltd. +14ea Planex Communications + ab10 GW-US54GZ + ab11 GU-1000T + ab13 GW-US54Mini 802.11bg +14ed Shure Inc. + 29b6 X2u Adapter +14f7 TechniSat Digital GmbH + 0001 SkyStar 2 HD CI + 0002 SkyStar 2 HD CI + 0003 CableStar Combo HD CI + 0004 AirStar TeleStick 2 + 0500 DVB-PC TV Star HD +1500 Ellisys +1501 Pine-Tum Enterprise Co., Ltd. +1509 First International Computer, Inc. + 0a01 LI-3100 Area Meter + 0a02 LI-7000 CO2/H2O Gas Analyzer + 0a03 C-DiGit Blot Scanner + 9242 eHome Infrared Transceiver +1513 medMobile + 0444 medMobile +1514 Actel + 2003 FlashPro3 Programmer + 2004 FlashPro3 Programmer + 2005 FlashPro3 Programmer +1516 CompUSA + 1603 Flash Drive + 8628 Pen Drive +1518 Cheshire Engineering Corp. + 0001 HDReye High Dynamic Range Camera + 0002 HDReye (before firmware loads) +1519 Comneon + 0020 HSIC Device +151f Opal Kelly Incorporated + 0020 XEM3001v1 + 0021 XEM3001v2 + 0022 XEM3010 + 0023 XEM3005 + 0028 XEM3050 + 002b XEM5010 + 002c XEM6001 + 002d XEM6010-LX45 + 002e XEM6010-LX150 + 0030 XEM6006-LX16 + 0033 XEM6002-LX9 + 0034 XEM7001-A15 + 0036 XEM7010-A50 + 0037 XEM7010-A200 + 0120 ZEM4310 + 0121 XEM6310-LX45 + 0122 XEM6310-LX150 + 0123 XEM6310MT-LX45T + 0125 XEM7350-K70T + 0126 XEM7350-K160T + 0127 XEM7350-K410T + 0128 XEM6310MT-LX150T + 0129 ZEM5305-A2 + 012b XEM7360-K160T + 012c XEM7360-K410T + 012d ZEM5310-A4 + 0130 XEM7310-A75 + 0131 XEM7310-A200 +1520 Bitwire Corp. +1524 ENE Technology Inc + 6680 UTS 6680 +1527 Silicon Portals + 0200 YAP Phone (no firmware) + 0201 YAP Phone +1529 UBIQUAM Co., Ltd. + 3100 CDMA 1xRTT USB Modem (U-100/105/200/300/520) +152a Thesycon Systemsoftware & Consulting GmbH + 8350 NET Gmbh iCube Camera + 8400 INI DVS128 + 840d INI DAViS + 841a INI DAViS FX3 +152b MIR Srl + 0001 spirobank II + 0002 spirolab III + 0003 MiniSpir + 0004 Oxi + 0005 spiros II + 0006 smiths spirobank II + 0007 smiths spirobank G-USB + 0008 smiths MiniSpir + 0009 spirobank G-USB + 000a smiths Oxi + 000b smiths spirolab III + 000c chorus III + 000d spirolab III Bw + 000e spirolab III + 000f easySpiro + 0010 Spirotel converter + 0011 spirobank + 0012 spiro3 Zimmer + 0013 spirotel serial + 0014 spirotel II + 0015 spirodoc +152d JMicron Technology Corp. / JMicron USA Technology Corp. + 0539 JMS539/567 SuperSpeed SATA II/III 3.0G/6.0G Bridge + 0551 JMS551 SuperSpeed two ports SATA 3Gb/s bridge + 0561 JMS551 - Sharkoon SATA QuickPort Duo + 0567 JMS567 SATA 6Gb/s bridge + 0578 JMS567 SATA 6Gb/s bridge + 0770 Alienware Integrated Webcam + 1561 JMS561U two ports SATA 6Gb/s bridge + 2329 JM20329 SATA Bridge + 2335 ATA/ATAPI Bridge + 2336 Hard Disk Drive + 2337 ATA/ATAPI Bridge + 2338 JM20337 Hi-Speed USB to SATA & PATA Combo Bridge + 2339 JM20339 SATA Bridge + 2352 ATA/ATAPI Bridge + 2509 JMS539, JMS551 SATA 3Gb/s bridge + 2551 JMS551 SATA 3Gb/s bridge + 2561 CEB-2235S-U3 external RAID box + 2566 JMS566 SATA 3Gb/s bridge + 2590 JMS567 SATA 6Gb/s bridge + 3562 JMS567 SATA 6Gb/s bridge + 3569 JMS566 SATA 3Gb/s bridge +152e LG (HLDS) + 2507 PL-2507 IDE Controller + e001 GSA-5120D DVD-RW +1532 Razer USA, Ltd + 0001 RZ01-020300 Optical Mouse [Diamondback] + 0003 Krait Mouse + 0007 DeathAdder Mouse + 0013 Orochi mouse + 0015 Naga Mouse + 0016 DeathAdder Mouse + 0017 RZ01-0035 Laser Gaming Mouse [Imperator] + 001c RZ01-0036 Optical Gaming Mouse [Abyssus] + 0024 Mamba + 002e RZ01-0058 Gaming Mouse [Naga] + 002f Imperator 2012 + 0036 RZ01-0075, Gaming Mouse [Naga Hex] + 0042 Abyssus 2014 + 0043 DeathAdder Chroma + 0044 Mamba Chroma (Wired) + 0045 Mamba Chroma (Wireless) + 0046 Mamba 2015 Tournament Edition [RZ01-01370100-R3] + 0048 Orochi (Wired) + 0101 Copperhead Mouse + 0102 Tarantula Keyboard + 0109 Lycosa Keyboard + 010d BlackWidow Ultimate 2012 + 0113 RZ07-0074 Gaming Keypad [Orbweaver] + 0118 RZ03-0080, Gaming Keyboard [Deathstalker] + 011a BlackWidow Ultimate 2013 + 011b BlackWidow Classic + 0203 BlackWidow Chroma + 0205 Blade Stealth + 0208 Tartarus + 0209 BlackWidow Tournament Edition Chroma + 0214 BlackWidow Ultimate 2016 + 0216 BlackWidow X Chroma + 021a BlackWidow X Tournament Edition Chroma + 0220 Blade Stealth (2016) + 0300 RZ06-0063 Motion Sensing Controllers [Hydra] + 0c00 Firefly +153b TerraTec Electronic GmbH + 1181 Cinergy S2 PCIe Dual Port 1 + 1182 Cinergy S2 PCIe Dual Port 2 +1546 U-Blox AG + 01a4 Antaris 4 + 01a5 [u-blox 5] + 01a6 [u-blox 6] + 01a7 [u-blox 7] + 01a8 [u-blox 8] + 1102 LISA-U2 +1547 SG Intec Ltd & Co KG + 1000 SG-Lock[U2] +154a Celectronic GmbH + 8180 CARD STAR/medic2 +154b PNY + 0010 USB 2.0 Flash Drive + 0048 Flash Drive + 004d 8 GB Flash Drive + 0053 Flash Drive + 0057 32GB Micro Slide Attache Flash Drive + 005b Flash Drive + 0062 Flash Drive + 007a Classic Attache Flash Drive + 6545 FD Device + fa05 Flash Drive +154d ConnectCounty Holdings Berhad +154e D&M Holdings, Inc. (Denon/Marantz) + 3000 Marantz RC9001 Remote Control +154f SNBC CO., Ltd +1554 Prolink Microsystems Corp. + 5010 PV-D231U(RN)-F [PixelView PlayTV SBTVD Full-Seg] +1557 OQO + 0002 model 01 WiFi interface + 0003 model 01 Bluetooth interface + 0a80 Gobi Wireless Modem (QDL mode) + 7720 model 01+ Ethernet + 8150 model 01 Ethernet interface +1568 Sunf Pu Technology Co., Ltd +156f Quantum Corporation +1570 ALLTOP TECHNOLOGY CO., LTD. +157b Ketron SRL +157e TRENDnet + 3006 TEW-444UB EU [TRENDnet] + 3007 TEW-444UB EU (no firmware) + 300a TEW-429UB 802.11bg + 300b TEW-429UB 802.11bg + 300c TEW-429UF A1 802.11bg Wireless Adapter [ZyDAS ZD1211B] + 300d TEW-429UB C1 802.11bg + 300e SMC SMCWUSB-N 802.11bgn 2x2:2 Wireless Adapter [Ralink RT2870] + 3012 TEW-604UB 802.11bg Wireless Adapter [Atheros AR5523] + 3013 TEW-645UB 802.11bgn 1x2:2 Wireless Adapter [Ralink RT2770] + 3204 Allnet ALL0298 v2 802.11bg + 3205 Allnet ALL0283 [AR5523] + 3206 Allnet ALL0283 [AR5523](no firmware) + 3207 TEW-509UB A1 802.11abg Wireless Adapter [ZyDAS ZD1211] + 3208 TEW-509UB 1.1R 802.11abg Wireless Adapter +1582 Fiberline + 6003 WL-430U 802.11bg +1587 SMA Technologie AG +158d Oakley Inc. +158e JDS Uniphase Corporation (JDSU) + 0820 SmartPocket Class Device +1598 Kunshan Guoji Electronics Co., Ltd. +15a2 Freescale Semiconductor, Inc. + 0038 9S08JS Bootloader + 003b USB2CAN Application for ColdFire DEMOJM board + 0042 OSBDM - Debug Port + 004f i.MX28 SystemOnChip in RecoveryMode + 0052 i.MX50 SystemOnChip in RecoveryMode + 0054 i.MX 6Dual/6Quad SystemOnChip in RecoveryMode + 0061 i.MX 6Solo/6DualLite SystemOnChip in RecoveryMode +15a4 Afatech Technologies, Inc. + 1000 AF9015/AF9035 DVB-T stick + 1001 AF9015/AF9035 DVB-T stick + 1336 SDHC/MicroSD/MMC/MS/M2/CF/XD Flash Card Reader + 9015 AF9015 DVB-T USB2.0 stick + 9016 AF9015 DVB-T USB2.0 stick +15a8 Teams Power Limited +15a9 Gemtek + 0002 SparkLAN WL-682 802.11bg Wireless Adapter [Intersil ISL3887] + 0004 WUBR-177G [Ralink RT2571W] + 0006 Wireless 11n USB Adapter + 0010 802.11n USB Wireless Card + 0012 WUBR-208N 802.11abgn Wireless Adapter [Ralink RT2870] + 002d WLTUBA-107 [Yota 4G LTE] +15aa Gearway Electronics (Dong Guan) Co., Ltd. +15ad VMware Inc. +15ba Olimex Ltd. + 0003 OpenOCD JTAG + 0004 OpenOCD JTAG TINY + 002a ARM-USB-TINY-H JTAG interface + 002b ARM-USB-OCD-H JTAG+RS232 +15c0 XL Imaging + 0001 2M pixel Microscope Camera + 0002 3M pixel Microscope Camera + 0003 1.3M pixel Microscope Camera (mono) + 0004 1.3M pixel Microscope Camera (colour) + 0005 3M pixel Microscope Camera (Mk 2) + 0006 2M pixel Microscope Camera (with capture button) + 0007 3M pixel Microscope Camera (with capture button) + 0008 1.3M pixel Microscope Camera (colour, with capture button) + 0009 1.3M pixel Microscope Camera (colour, with capture button) + 000a 2M pixel Microscope Camera (Mk 2) + 0010 1.3M pixel "Tinycam" + 0101 3M pixel Microscope Camera +15c2 SoundGraph Inc. + 0036 LC16M VFD Display/IR Receiver + 0038 GD01 MX LCD Display/IR Receiver + 0042 Antec Veris Multimedia Station E-Z IR Receiver + ffda iMON PAD Remote Controller + ffdc iMON PAD Remote Controller +15c5 Advance Multimedia Internet Technology Inc. (AMIT) + 0008 WL532U 802.11g Adapter +15c6 Laboratoires MXM + 1000 DigistimSP (cold) + 1001 DigistimSP (warm) + 1002 DigimapSP USB (cold) + 1003 DigimapSP USB (warm) + 1004 DigistimSP (cold) + 1005 DigistimSP (warm) + 1100 Odyssee (cold) + 1101 Odyssee (warm) + 1200 Digispy +15c8 KTF Technologies + 3201 EVER EV-W100/EV-W250 +15c9 D-Box Technologies +15ca Textech International Ltd. + 00c3 Mini Optical Mouse + 0101 MIDI Interface cable + 1806 MIDI Interface cable +15d5 Coulomb Electronics Ltd. +15d9 Trust International B.V. + 0a33 Optical Mouse + 0a37 Mouse + 0a41 MI-2540D [Optical mouse] + 0a4c USB+PS/2 Optical Mouse + 0a4d Optical Mouse + 0a4f Optical Mouse +15dc Hynix Semiconductor Inc. +15e0 Seong Ji Industrial Co., Ltd. +15e1 RSA + 2007 RSA SecurID (R) Authenticator +15e4 Numark + 0024 Mixtrack + 0140 ION VCR 2 PC / Video 2 PC +15e8 SohoWare + 9100 NUB100 Ethernet [pegasus] + 9110 10/100 USB Ethernet +15e9 Pacific Digital Corp. + 04ce MemoryFrame MF-570 + 1968 MemoryFrame MF-570 + 1969 Digital Frame +15ec Belcarra Technologies Corp. +15f4 HanfTek + 0001 HanfTek UMT-010 USB2.0 DVB-T (cold) + 0025 HanfTek UMT-010 USB2.0 DVB-T (warm) + 0135 Astrometa T2hybrid +1604 Tascam + 8000 US-428 Audio/Midi Controller (without fw) + 8001 US-428 Audio/Midi Controller + 8004 US-224 Audio/Midi Controller (without fw) + 8005 US-224 Audio/Midi Controller + 8006 US-122 Audio/Midi Interface (without fw) + 8007 US-122 Audio/Midi Interface +1605 ACCES I/O Products, Inc. + 0001 DIO-32 (No Firmware Yet) +1606 Umax + 0002 Astra 1236U Scanner + 0010 Astra 1220U + 0030 Astra 1600U/2000U + 0050 Scanner + 0060 Astra 3400/3450 + 0070 Astra 4400/4450 + 0130 Astra 2100U + 0160 Astra 5400U + 0170 Uniscan D50 + 0230 Astra 2200/2200SU + 0350 Astra 4800/4850 Scanner + 1030 Astra 4000U + 1220 Genesys Logic Scanner Controller NT5.0 + 2010 AstraCam Digital Camera + 2020 AstraCam 1000 + 2030 AstraCam 1800 Digital Camera +1608 Inside Out Networks [hex] + 0001 EdgePort/4 Serial Port + 0002 Edgeport/8 + 0003 Rapidport/4 + 0004 Edgeport/4 + 0005 Edgeport/2 + 0006 Edgeport/4i + 0007 Edgeport/2i + 0008 Edgeport/8 + 000c Edgeport/421 + 000d Edgeport/21 + 000e Edgeport/4 + 000f Edgeport/8 + 0010 Edgeport/2 + 0011 Edgeport/4 + 0012 Edgeport/416 + 0014 Edgeport/8i + 0018 Edgeport/412 + 0019 Edgeport/412 + 001a Edgeport/2+2i + 0101 Edgeport/4 + 0105 Edgeport/2 + 0106 Edgeport/4i + 0107 Edgeport/2i + 010c Edgeport/421 + 010d Edgeport/21 + 0110 Edgeport/2 + 0111 Edgeport/4 + 0112 Edgeport/416 + 0114 Edgeport/8i + 0201 Edgeport/4 + 0203 Rapidport/4 + 0204 Edgeport/4 + 0205 Edgeport/2 + 0206 Edgeport/4i + 0207 Edgeport/2i + 020c Edgeport/421 + 020d Edgeport/21 + 020e Edgeport/4 + 020f Edgeport/8 + 0210 Edgeport/2 + 0211 Edgeport/4 + 0212 Edgeport/416 + 0214 Edgeport/8i + 0215 Edgeport/1 + 0216 EPOS/44 + 0217 Edgeport/42 + 021a Edgeport/2+2i + 021b Edgeport/2c + 021c Edgeport/221c + 021d Edgeport/22c + 021e Edgeport/21c + 021f Edgeport/62 + 0240 Edgeport/1 + 0241 Edgeport/1i + 0242 Edgeport/4s + 0243 Edgeport/8s + 0244 Edgeport/8 + 0245 Edgeport/22c + 0301 Watchport/P + 0302 Watchport/M + 0303 Watchport/W + 0304 Watchport/T + 0305 Watchport/H + 0306 Watchport/E + 0307 Watchport/L + 0308 Watchport/R + 0309 Watchport/A + 030a Watchport/D + 030b Watchport/D + 030c Power Management Port + 030e Power Management Port + 030f Watchport/G + 0310 Watchport/Tc + 0311 Watchport/Hc + 1403 MultiTech Systems MT4X56 Modem + 1a17 Agilent Technologies (E6473) +160a VIA Technologies, Inc. + 3184 VIA VNT-6656 [WiFi 802.11b/g USB Dongle] +160e INRO + 0001 E2USBKey +1614 Amoi Electronics + 0404 WMA9109 UMTS Phone + 0600 Vodafone VDA GPS / Toschiba Protege G710 + 0804 WP-S1 Phone +1617 Sony Corp. + 2002 NVX-P1 Personal Navigation System +1619 L & K Precision Technology Co., Ltd. +161c Digitech Systems + 0002 DTC-02U [Digi Touch Controller] +1621 Wionics Research +1628 Stonestreet One, Inc. +162a Airgo Networks Inc. +162f WiQuest Communications, Inc. +1630 2Wire, Inc. + 0005 802.11g Wireless Adapter [Intersil ISL3886] + 0011 PC Port 10 Mps Adapter + ff81 802.11b Wireless Adapter [Lucent/Agere Hermes I] +1631 Good Way Technology + 6200 GWUSB2E + c019 RT2573 +1645 Entrega [hex] + 0001 1S Serial Port + 0002 2S Serial Port + 0003 1S25 Serial Port + 0004 4S Serial Port + 0005 E45 Ethernet [klsi] + 0006 Parallel Port + 0007 U1-SC25 SCSI + 0008 Ethernet + 0016 Bi-directional to Parallel Printer Converter + 0080 1 port to Serial Converter + 0081 1 port to Serial Converter + 0093 1S9 Serial Port + 8000 EZ-USB + 8001 1 port to Serial + 8002 2x Serial Port + 8003 1 port to Serial + 8004 2U4S serial/usb hub + 8005 Ethernet + 8080 1 port to Serial + 8081 1 port to Serial + 8093 PortGear Serial Port +1649 SofTec Microsystems + 0102 uDART In-Circuit Debugger + 0200 SpYder USBSPYDER08 +164a ChipX +164c Matrix Vision GmbH + 0101 mvBlueFOX camera (no firmware) + 0103 mvBlueFOX camera + 0201 mvBlueLYNX-X intelligent camera (bootloader) + 0203 mvBlueLYNX-X intelligent camera +1657 Struck Innovative Systeme GmbH + 3150 SIS3150 USB2.0 to VME interface +165b Frontier Design Group + 8101 Tranzport Control Surface + fad1 Alphatrack Control Surface +165c Kondo Kagaku + 0002 Serial Adapter + 0006 FT232 [ICS adapter HS] + 0008 FT232 [Dual adapter HS] +1660 Creatix Polymedia GmbH +1667 GIGA-TMS INC. + 0005 PCR330A RFID Reader (125 kHz, keyboard emulation) +1668 Actiontec Electronics, Inc. [hex] + 0009 Gateway + 0333 Modem + 0358 InternetPhoneWizard + 0405 Gateway + 0408 Prism2.5 802.11b Adapter + 0413 Gateway + 0421 Prism2.5 802.11b Adapter + 0441 IBM Integrated Bluetooth II + 0500 BTM200B BlueTooth Adapter + 1050 802UIG-1 802.11g Wireless Mini Adapter [Intersil ISL3887] + 1200 802AIN Wireless N Network Adapter [Atheros AR9170+AR9101] + 1441 IBM Integrated Bluetooth II + 2441 BMDC-2 IBM Bluetooth III w.56k + 3441 IBM Integrated Bluetooth III + 6010 Gateway + 6097 802.11b Wireless Adapter + 6106 802UI3(B) 802.11b Wireless Adapter [Intersil PRISM 3] + 7605 UAT1 Wireless Ethernet Adapter +1669 PiKRON Ltd. [hex] + 1001 uLan2USB Converter - PS1 protocol +166a Clipsal + 0101 C-Bus Multi-room Audio Matrix Switcher + 0201 C-Bus Pascal Automation Controller + 0301 C-Bus Wireless PC Interface + 0303 C-Bus interface + 0304 C-Bus Black and White Touchscreen + 0305 C-Bus Spectrum Colour Touchscreen + 0401 C-Bus Architectural Dimmer +1677 China Huada Integrated Circuit Design (Group) Co., Ltd. (CIDC Group) + 0103 Token +1679 Total Phase + 2001 Beagle Protocol Analyzer + 2002 Cheetah SPI Host Adapter +1680 Golden Bridge Electech Inc. + a332 DVB-T Dongle [RTL2832U] +1681 Prevo Technologies, Inc. + 0001 Tuner's Dashboard + 0002 DocuBrain(R) Tubachron + 0003 DocuBrain(R) I2C + 0004 DocuBrain(R) WWVB Receiver + 0005 DocuBrain(R) WWVB Transmitter +1682 Maxwise Production Enterprise Ltd. +1684 Godspeed Computer Corp. +1685 Delock + 0200 Infrared adapter +1686 ZOOM Corporation + 0045 H4 Digital Recorder +1687 Kingmax Digital Inc. + 5289 FlashDisk + 6211 FlashDisk + 6213 FlashDisk +1688 Saab AB +1689 Razer USA, Ltd + fd00 Onza Tournament Edition controller +168c Atheros Communications + 0001 AR5523 + 0002 AR5523 (no firmware) +1690 Askey Computer Corp. [hex] + 0001 Arcaze Gamepad + 0101 Creative Modem Blaster DE5670 + 0102 V1456 VQE-R2 Modem [conexant] + 0103 1456 VQE-R3 Modem [conexant] + 0104 HCF V90 Data Fax RTAD Modem + 0107 HCF V.90 Data,Fax,RTAD Modem + 0109 MagicXpress V.90 Pocket Modem [conexant] + 0203 Voyager ADSL Modem Loader + 0204 Voyager ADSL Modem + 0205 DSL Modem + 0206 GlobeSpan ADSL WAN Modem + 0208 DSL Modem + 0209 Voyager 100 ADSL Modem + 0211 Globespan Virata ADSL LAN Modem + 0212 DSL Modem + 0213 HM121d DSL Modem + 0214 HM121d DSL Modem + 0215 Voyager 105 ADSL Modem + 0701 WLAN + 0710 SMCWUSBT-G + 0711 SMCWUSBT-G (no firmware) + 0712 AR5523 + 0713 AR5523 (no firmware) + 0715 Name: Voyager 1055 Laptop 802.11g Adapter [Broadcom 4320] + 0722 RT2573 + 0726 Wi-Fi Wireless LAN Adapter + 0740 802.11n Wireless LAN Card + 0901 Voyager 205 ADSL Router + 2000 naturaSign Pad Standard + 2001 naturaSign Pad Standard + fe12 Bootloader +1696 Hitachi Video and Information System, Inc. +1697 VTec Test, Inc. +16a5 Shenzhen Zhengerya Cable Co., Ltd. +16a6 Unigraf + 3000 VTG-3xxx Video Test Generator family + 4000 VTG-4xxx Video Test Generator family + 5000 VTG-5xxx Video Test Generator family + 5001 VTG-5xxx Special (update) mode of VTG-5xxx family +16ab Global Sun Technology + 7801 AR5523 + 7802 AR5523 (no firmware) + 7811 AR5523 + 7812 AR5523 (no firmware) +16ac Dongguan ChingLung Wire & Cable Co., Ltd. +16b4 iStation + 0801 U43 +16b5 Persentec, Inc. + 0002 Otto driving companion +16c0 Van Ooijen Technische Informatica + 03e8 free for internal lab use 1000 + 03e9 free for internal lab use 1001 + 03ea free for internal lab use 1002 + 03eb free for internal lab use 1003 + 03ec free for internal lab use 1004 + 03ed free for internal lab use 1005 + 03ee free for internal lab use 1006 + 03ef free for internal lab use 1007 + 03f0 free for internal lab use 1008 + 03f1 free for internal lab use 1009 + 0477 Teensy Rebootor + 0478 Teensy Halfkay Bootloader + 0479 Teensy Debug + 047a Teensy Serial + 047b Teensy Serial+Debug + 047c Teensy Keyboard + 047d Teensy Keyboard+Debug + 047e Teensy Mouse + 047f Teensy Mouse+Debug + 0480 Teensy RawHID + 0481 Teensy RawHID+Debug + 0482 Teensyduino Keyboard+Mouse+Joystick + 0483 Teensyduino Serial + 0484 Teensyduino Disk + 0485 Teensyduino MIDI + 0486 Teensyduino RawHID + 0487 Teensyduino Serial+Keyboard+Mouse+Joystick + 0488 Teensyduino Flight Sim Controls + 05dc shared ID for use with libusb + 05dd BlackcatUSB2 + 05df HID device except mice, keyboards, and joysticks + 05e1 Free shared USB VID/PID pair for CDC devices + 05e4 Free shared USB VID/PID pair for MIDI devices + 06b4 USB2LPT with 2 interfaces + 06b5 USB2LPT with 3 interfaces (native, HID, printer) + 074e DSP-Weuffen USB-HPI-Programmer + 074f DSP-Weuffen USB2-HPI-Programmer + 0762 Osmocom SIMtrace + 076b OpenPCD 13.56MHz RFID Reader + 076c OpenPICC 13.56MHz RFID Simulator (native) + 08ac OpenBeacon USB stick + 08ca Alpermann+Velte Universal Display + 08cb Alpermann+Velte Studio Clock + 08cc Alpermann+Velte SAM7S MT Boot Loader + 08cd Alpermann+Velte SAM7X MT Boot Loader + 0a32 jbmedia Light-Manager Pro + 27d8 libusb-bound devices + 27d9 HID device except mice, keyboards, and joysticks + 27da Mouse + 27db Keyboard + 27dc Joystick + 27dd CDC-ACM class devices (modems) + 27de MIDI class devices + 294a Eye Movement Recorder [Visagraph] + 294b Eye Movement Recorder [ReadAlyzer] +16ca Wireless Cables, Inc. + 1502 Bluetooth Dongle +16cc silex technology, Inc. +16d0 MCS + 0436 Xylanta Ltd, XSP Device + 0498 Braintechnology USB-LPS + 0504 RETRO Innovations ZoomFloppy + 054b GrauTec ReelBox OLED Display (external) + 05be EasyLogic Board + 06cc Trinamic TMCM-3110 + 06f9 Gabotronics Xminilab + 0753 Digistump DigiSpark + 075c AB-1.x UAC1 [Audio Widget] + 075d AB-1.x UAC2 [Audio Widget] + 080a S2E1 Interface + 0870 Kaufmann Automotive GmbH, RKS+CAN Interface + 0b03 AIS Receiver [dAISy] + 0bd4 codesrc SCSI2SD +16d1 Suprema Inc. + 0401 SUP-SFR400(A) BioMini Fingerprint Reader +16d3 Frontline Test Equipment, Inc. +16d5 AnyDATA Corporation + 6202 CDMA/UMTS/GPRS modem + 6501 CDMA 2000 1xRTT/EV-DO Modem + 6502 CDMA/UMTS/GPRS modem + 6603 ADU-890WH modem +16d6 JABLOCOM s.r.o. + 8000 GDP-04 desktop phone + 8001 EYE-02 + 8003 GDP-04 modem + 8004 Bootloader + 8005 GDP-04i + 8007 BTP-06 modem +16d8 CMOTECH Co., Ltd. + 5141 CMOTECH CDMA Technologies modem + 5533 CCU-550 CDMA EV-DO modem + 5543 CDMA 2000 1xRTT/1xEVDO modem + 6280 CMOTECH CDMA Technologies modem + 6803 CNU-680 CDMA EV-DO modem + 8001 Gobi 2000 Wireless Modem (QDL mode) + 8002 Gobi 2000 Wireless Modem +16dc Wiener, Plein & Baus + 0001 CC + 000b VM + 0010 PL512 Power Supply System + 0011 MARATON Power Supply System + 0012 MPOD Multi Channel Power Supply System + 0015 CML Control, Measurement and Data Logging System +16de Telemecanique +16df King Billion Electronics Co., Ltd. +16f0 GN ReSound A/S + 0001 Speedlink Programming Interface + 0003 Airlink Wireless Programming Interface +16f5 Futurelogic Inc. +1706 BlueView Technologies, Inc. +1707 ARTIMI +170b Swissonic + 0011 MIDI-USB 1x1 +170d Avnera +1711 Leica Microsystems + 0101 DFC-365FX camera + 3020 IC80 HD Camera +1724 Meyer Instruments (MIS) + 0115 PAXcam5 +1725 Vitesse Semiconductor +1726 Axesstel, Inc. + 1000 wireless modem + 2000 wireless modem + 3000 wireless modem +172f Waltop International Corp. + 0022 Tablet + 0024 Tablet + 0025 Tablet + 0026 Tablet + 0031 Slim Tablet 12.1" + 0032 Slim Tablet 5.8" + 0034 Slim Tablet 12.1" + 0038 Genius G-Pen F509 + 0500 Media Tablet 14.1" + 0501 Media Tablet 10.6" + 0502 Sirius Battery Free Tablet +1733 Cellink Technology Co., Ltd + 0101 RF Wireless Optical Mouse OP-701 +1736 CANON IMAGING SYSTEM TECHNOLOGIES INC. +1737 Linksys + 0039 USB1000 Gigabit Notebook Adapter + 0070 WUSB100 v1 RangePlus Wireless Network Adapter [Ralink RT2870] + 0071 WUSB600N v1 Dual-Band Wireless-N Network Adapter [Ralink RT2870] + 0073 WUSB54GC v2 802.11g Adapter [Realtek RTL8187B] + 0075 WUSB54GSC v2 802.11g Adapter [Broadcom 4326U] + 0077 WUSB54GC v3 802.11g Adapter [Ralink RT2070L] + 0078 WUSB100 v2 RangePlus Wireless Network Adapter [Ralink RT3070] + 0079 WUSB600N v2 Dual-Band Wireless-N Network Adapter [Ralink RT3572] +173a Roche + 2198 Accu-Chek Mobile + 21ca ACCU-CHEK Mobile Model U1 +173d QSENN + 0002 GP-K7000 keyboard +1740 Senao + 0100 EUB1200AC AC1200 DB Wireless Adapter [Realtek RTL8812AU] + 0600 EUB600v1 802.11abgn Wireless Adapter [Ralink RT3572] + 0605 LevelOne WUA-0605 N_Max Wireless USB Adapter + 0615 LevelOne WUA-0615 N_Max Wireless USB Adapter + 1000 NUB-350 802.11g Wireless Adapter [Intersil ISL3887] + 2000 NUB-8301 802.11bg + 3701 EUB-3701 EXT 802.11g Wireless Adapter [Ralink RT2571W] + 9603 RTL8188S WLAN Adapter + 9701 EnGenius 802.11n Wireless USB Adapter + 9702 EnGenius 802.11n Wireless USB Adapter + 9703 EnGenius 802.11n Wireless USB Adapter + 9705 EnGenius 802.11n Wireless USB Adapter + 9706 EUB9706 802.11n Wireless Adapter [Ralink RT3072] + 9801 EUB9801 802.11abgn Wireless Adapter [Ralink RT3572] +1743 General Atomics +1748 MQP Electronics + 0101 Packet-Master USB12 +174c ASMedia Technology Inc. + 07d1 Transcend ESD400 Portable SSD (USB 3.0) + 1153 ASM1153 SATA 3Gb/s bridge + 2074 ASM1074 High-Speed hub + 3074 ASM1074 SuperSpeed hub + 5106 ASM1051 SATA 3Gb/s bridge + 5136 ASM1053 SATA 3Gb/s bridge + 51d6 ASM1051W SATA 3Gb/s bridge + 55aa Name: ASM1051E SATA 6Gb/s bridge, ASM1053E SATA 6Gb/s bridge, ASM1153 SATA 3Gb/s bridge, ASM1153E SATA 6Gb/s bridge +174f Syntek + 1105 SM-MS/Pro-MMC-XD Card Reader + 110b HP Webcam + 1403 Integrated Webcam + 1404 USB Camera device, 1.3 MPixel Web Cam + 5212 USB 2.0 UVC PC Camera + 5a11 PC Camera + 5a31 Sonix USB 2.0 Camera + 5a35 Sonix 1.3MPixel USB 2.0 Camera + 6a31 Web Cam - Asus A8J, F3S, F5R, VX2S, V1S + 6a33 Web Cam - Asus F3SA, F9J, F9S + 6a51 2.0MPixel Web Cam - Asus Z96J, Z96S, S96S + 6a54 Web Cam + 6d51 2.0Mpixel Web Cam - Eurocom D900C + 8a12 Syntek 0.3MPixel USB 2.0 UVC PC Camera + 8a33 Syntek USB 2.0 UVC PC Camera + a311 1.3MPixel Web Cam - Asus A3A, A6J, A6K, A6M, A6R, A6T, A6V, A7T, A7sv, A7U + a312 1.3MPixel Web Cam + a821 Web Cam - Packard Bell BU45, PB Easynote MX66-208W + aa11 Web Cam +1753 GERTEC Telecomunicacoes Ltda. + c901 PPC900 Pinpad Terminal +1756 ENENSYS Technologies + 0006 DiviPitch +1759 LucidPort Technology, Inc. +1761 ASUSTek Computer, Inc. (wrong ID) + 0b05 802.11n Network Adapter (wrong ID - swapped vendor and device) +1772 System Level Solutions, Inc. +1776 Arowana + 501c 300K CMOS Camera +177f Sweex + 0004 MM004V5 Photo Key Chain (Digital Photo Frame) 1.5" + 0153 LW153 802.11n Adapter [ralink rt3070] + 0154 LW154 802.11bgn (1x1:1) Wireless Adapter [Realtek RTL8188SU] + 0313 LW313 802.11n Adapter [ralink rt2770 + rt2720] +1781 Multiple Vendors + 083e MetaGeek Wi-Spy + 083f MetaGeek Wi-Spy 2.4x + 0938 Iguanaworks USB IR Transceiver + 0a96 raphnet.net usb_game12 + 0a97 raphnet.net SNES mouse adapter + 0a98 raphnet.net USBTenki + 0a99 raphnet.net NES + 0a9a raphnet.net Gamecube/N64 controller + 0a9b raphnet.net DB9Joy + 0a9c raphnet.net Intellivision + 0a9d raphnet.net 4nes4snes + 0a9e raphnet.net Megadrive multitap + 0a9f raphnet.net MultiDB9joy + 0c30 Telldus TellStick + 0c31 Telldus TellStick Duo + 0c9f USBtiny + 1eef OpenAPC SecuKey + 1ef0 E1701 Modular Controller Card + 1ef1 E1701 Modular Controller Card +1782 Spreadtrum Communications Inc. +1784 TopSeed Technology Corp. + 0001 eHome Infrared Transceiver + 0004 RF Combo Device + 0006 eHome Infrared Transceiver + 0007 eHome Infrared Transceiver + 0008 eHome Infrared Transceiver + 000a eHome Infrared Transceiver + 0011 eHome Infrared Transceiver +1787 ATI AIB +1788 ShenZhen Litkconn Technology Co., Ltd. +1796 Printrex, Inc. +1797 JALCO CO., LTD. +1799 Thales Norway A/S + 7051 Belkin F5D7051 802.11g Adapter v1000 [Broadcom 4320] + 8051 Belkin F5D8051 v2 802.11bgn Wireless Adapter [Marvell 88W8362] +179d Ricavision International, Inc. + 0010 Internal Infrared Transceiver +17a0 Samson Technologies Corp. + 0001 C01U condenser microphone + 0002 Q1U dynamic microphone + 0100 C03U multi-pattern microphone + 0101 UB1 boundary microphone + 0120 Meteorite condenser microphone + 0200 StudioDock monitors (internal hub) + 0201 StudioDock monitors (audio) + 0210 StudioGT monitors + 0301 Q2U handheld microphone with XLR + 0302 GoMic compact condenser microphone + 0303 C01U Pro condenser microphone + 0304 Q2U handheld mic with XLR + 0305 GoMic compact condenser mic + 0310 Meteor condenser microphone +17a4 Concept2 + 0001 Performance Monitor 3 + 0002 Performance Monitor 4 +17a5 Advanced Connection Technology Inc. +17a7 MICOMSOFT CO., LTD. +17a8 Kamstrup A/S + 0001 Optical Eye/3-wire + 0005 M-Bus Master MultiPort 250D +17b3 Grey Innovation + 0004 Linux-USB Midi Gadget +17b5 Lunatone + 0010 MFT Sensor +17ba SAURIS GmbH + 0001 SAU510-USB [no firmware] + 0510 SAU510-USB and SAU510-USB plus JTAG Emulators + 0511 SAU510-USB Iso Plus JTAG Emulator + 0520 SAU510-USB Nano JTAG Emulator + 1511 Onboard Emulator on SAUModule development kit +17c3 Singim International Corp. +17cc Native Instruments + 041c Audio 2 DJ + 0808 Maschine Controller + 0815 Audio Kontrol 1 + 0839 Audio 4 DJ + 0d8d Guitarrig Mobile + 1915 Session I/O + 1940 RigKontrol3 + 1969 RigKontrol2 + 1978 Audio 8 DJ + 2280 Medion MDPNA1500 in card reader mode + 2305 Traktor Kontrol X1 + 4711 Kore Controller + 4712 Kore Controller 2 + baff Traktor Kontrol S4 +17cf Hip Hing Cable & Plug Mfy. Ltd. +17d0 Sanford L.P. +17d3 Korea Techtron Co., Ltd. +17e9 DisplayLink + 0051 USB VGA Adaptor + 030b HP T100 + 0377 Plugable UD-160-A (M) + 0378 Plugable UGA-2K-A + 0379 Plugable UGA-125 + 037a Plugable UGA-165 + 037b Plugable USB-VGA-165 + 037c Plugable DC-125 + 037d Plugable USB2-HDMI-165 + 410a HDMI Adapter + 430a HP Port Replicator (Composite Device) + 4312 S2340T +17eb Cornice, Inc. +17ef Lenovo + 1000 Hub + 1003 Integrated Smart Card Reader + 1004 Integrated Webcam + 1008 Hub + 100a ThinkPad Mini Dock Plus Series 3 + 304b AX88179 Gigabit Ethernet [ThinkPad OneLink GigaLAN] + 3815 ChipsBnk 2GB USB Stick + 4802 Lenovo Vc0323+MI1310_SOC Camera + 4807 UVC Camera + 480c Integrated Webcam + 480d Integrated Webcam [R5U877] + 480e Integrated Webcam [R5U877] + 480f Integrated Webcam [R5U877] + 4810 Integrated Webcam [R5U877] + 4811 Integrated Webcam [R5U877] + 4812 Integrated Webcam [R5U877] + 4813 Integrated Webcam [R5U877] + 4814 Integrated Webcam [R5U877] + 4815 Integrated Webcam [R5U877] + 4816 Integrated Webcam + 481c Integrated Webcam + 481d Integrated Webcam + 6004 ISD-V4 Tablet Pen + 6007 Smartcard Keyboard + 6009 ThinkPad Keyboard with TrackPoint + 6014 Mini Wireless Keyboard N5901 + 6025 ThinkPad Travel Mouse + 7203 Ethernet adapter [U2L 100P-Y1] + 7423 IdeaPad A1 Tablet + 7435 A789 (Mass Storage mode, with debug) + 743a A789 (Mass Storage mode) + 7497 A789 (MTP mode) + 7498 A789 (MTP mode, with debug) + 749a A789 (PTP mode) + 749b A789 (PTP mode, with debug) +17f4 WaveSense + aaaa Jazz Blood Glucose Meter +17f5 K.K. Rocky +17f6 Unicomp, Inc + 0709 Model M Keyboard +1809 Advantech + 4604 USB-4604 + 4761 USB-4761 Portable Data Acquisition Module +1822 Twinhan + 3201 VisionDTV USB-Ter/HAMA USB DVB-T device cold + 3202 VisionDTV USB-Ter/HAMA USB DVB-T device warm +1831 Gwo Jinn Industries Co., Ltd. +1832 Huizhou Shenghua Industrial Co., Ltd. +183d VIVOphone + 0010 VoiceKey +1843 Vaisala +1849 ASRock Incorporation +1852 GYROCOM C&C Co., LTD + 7922 Audiotrak DR.DAC2 DX [GYROCOM C&C] +1854 Memory Devices Ltd. +185b Compro + 3020 K100 Infrared Receiver + 3082 K100 Infrared Receiver v2 + d000 Compro Videomate DVB-U2000 - DVB-T USB cold + d001 Compro Videomate DVB-U2000 - DVB-T USB warm +1861 Tech Technology Industrial Company +1862 Teridian Semiconductor Corp. +1870 Nexio Co., Ltd + 0001 iNexio Touchscreen controller +1871 Aveo Technology Corp. + 0101 UVC camera (Bresser microscope) + 0141 Camera + 0d01 USB2.0 Camera +1873 Navilock + ee93 EasyLogger +187c Alienware Corporation + 0511 AlienFX Mobile lighting + 0600 Dual Compatible Game Pad +187f Siano Mobile Silicon + 0010 Stallar Board + 0100 Stallar Board + 0200 Nova A + 0201 Nova B + 0202 Nice + 0300 Vega + 0301 VeNice +1892 Vast Technologies, Inc. +1894 Topseed + 5632 Atek Tote Remote + 5641 TSAM-004 Presentation Remote +1897 Evertop Wire Cable Co. +189f 3Shape A/S + 0002 Legato2 3D Scanner +18a4 CSSN + 0001 Snapshell IDR +18a5 Verbatim, Ltd + 0214 Portable Hard Drive + 0216 External Hard Drive + 0218 External Hard Drive + 0224 Store 'n' Go Micro Plus + 0227 Pocket Hard Drive + 022b Portable Hard Drive (Store'n'Go) + 0237 Portable Harddrive + 0243 Flash Drive (Store'n'Go) + 0302 Flash Drive + 0304 Store 'n' Go + 4123 Store N Go +18b1 Petalynx + 0037 Maxter Remote Control +18b4 e3C Technologies + 1001 DUTV007 + 1002 EC168 (v5) based USB DVB-T receiver + 1689 DUTV009 + fffa EC168 (v2) based USB DVB-T receiver + fffb EC168 (v3) based USB DVB-T receiver +18b6 Mikkon Technology Limited +18b7 Zotek Electronic Co., Ltd. +18c5 AMIT Technology, Inc. + 0002 CG-WLUSB2GO + 0008 CG-WLUSB2GNR Corega Wireless USB Adapter + 0012 CG-WLUSB10 Corega Wireless USB Adapter +18cd Ecamm + cafe Pico iMage +18d1 Google Inc. + 0001 Onda V972 (storage access) + 0003 Android-powered device using AllWinner Technology SoC + 0006 Onda V972 MTP + 0008 Onda V972 PTP (camera) + 0d02 Celkon A88 + 2d00 Android-powered device in accessory mode + 2d01 Android-powered device in accessory mode with ADB support + 4e11 Nexus One + 4e12 Nexus One (debug) + 4e13 Nexus One (tether) + 4e20 Nexus S (fastboot) + 4e21 Nexus S + 4e22 Nexus S (debug) + 4e24 Nexus S (tether) + 4e30 Galaxy Nexus (fastboot) + 4e40 Nexus 7 (fastboot) + 4e41 Nexus 7 (MTP) + 4e42 Nexus 7 (debug) + 4e43 Nexus 7 (PTP) + 4e44 Nexus 7 2012 (PTP) + 4ee0 Nexus 4 (bootloader) + 4ee1 Nexus Device (MTP) + 4ee2 Nexus Device (debug) + 4ee3 Nexus 4/5/7/10 (tether) + 4ee4 Nexus 4/5/7/10 (debug + tether) + 4ee5 Nexus 4 (PTP) + 4ee6 Nexus 4/5 (PTP + debug) + 7102 Toshiba Thrive tablet + b004 Pandigital / B&N Novel 9" tablet + d001 Nexus 4 (fastboot) + d002 Nexus 4 (debug) + d109 LG G2x MTP + d10a LG G2x MTP (debug) +18d5 Starline International Group Limited +18d9 Kaba + 01a0 B-Net 91 07 +18dc LKC Technologies, Inc. +18dd Planon System Solutions Inc. + 1000 DocuPen RC800 +18e3 Fitipower Integrated Technology Inc + 7102 Multi Card Reader (Internal) + 9101 All-in-1 Card Reader + 9102 Multi Card Reader + 9512 Webcam +18e8 Qcom + 6144 LR802UA 802.11b Wireless Adapter [ALi M4301AU] + 6196 RT2573 + 6229 RT2573 + 6232 Wireless 802.11g 54Mbps Network Adapter [RTL8187] +18ea Matrox Graphics, Inc. + 0002 DualHead2Go [Analog Edition] + 0004 TripleHead2Go [Digital Edition] +18ec Arkmicro Technologies Inc. + 3118 USB to IrDA adapter [ARK3116T] + 3188 ARK3188 UVC Webcam + 3299 Webcam Carrefour + 3366 Bresser Biolux NV +18f8 [Maxxter] + 0f99 Optical gaming mouse +18fb Scriptel Corporation + 01c0 ST1501-STN + 01c1 ST1526-STN + 01c2 ST1501-PYJ + 01c3 ST1501B-PYJ + 01c4 ST1501-PUN + 01c5 ST1401-STN + 01c7 ST1526-PYJ + 01c8 ST1501-ECA + 01c9 ST1476-STN + 01cb ST1571-STN + 0200 ST1500 + 0201 ST1550 + 0202 ST1525 + 0204 ST1400 + 0206 ST1475 + 0207 ST1570 +18fd FineArch Inc. +1901 GE Healthcare + 0015 Nemo Tracker +1908 GEMBIRD + 1320 PhotoFrame PF-15-1 +190d Motorola GSG +1914 Alco Digital Devices Limited +1915 Nordic Semiconductor ASA + 000c Wireless Desktop nRF24L01 CX-1766 + 2233 Linksys WUSB11 v2.8 802.11b Adapter [Atmel AT76C505] + 2234 Linksys WUSB54G v1 OEM 802.11g Adapter [Intersil ISL3886] + 2235 Linksys WUSB54GP v1 OEM 802.11g Adapter [Intersil ISL3886] + 2236 Linksys WUSB11 v3.0 802.11b Adapter [Intersil PRISM 3] +191c Innovative Technology LTD + 4104 Banknote validator NV-150 +1923 FitLinxx + 0002 Personal SyncPoint +1926 NextWindow + 0003 1900 HID Touchscreen + 0006 1950 HID Touchscreen + 0064 1950 HID Touchscreen + 0065 1950 HID Touchscreen + 0066 1950 HID Touchscreen + 0067 1950 HID Touchscreen + 0068 1950 HID Touchscreen + 0069 1950 HID Touchscreen + 0071 1950 HID Touchscreen + 0072 1950 HID Touchscreen + 0073 1950 HID Touchscreen + 0074 1950 HID Touchscreen + 0075 1950 HID Touchscreen + 0076 1950 HID Touchscreen + 0077 1950 HID Touchscreen + 0078 1950 HID Touchscreen + 0079 1950 HID Touchscreen + 007a 1950 HID Touchscreen + 007e 1950 HID Touchscreen + 007f 1950 HID Touchscreen + 0080 1950 HID Touchscreen + 0081 1950 HID Touchscreen + 0082 1950 HID Touchscreen + 0083 1950 HID Touchscreen + 0084 1950 HID Touchscreen + 0085 1950 HID Touchscreen + 0086 1950 HID Touchscreen + 0087 1950 HID Touchscreen + 0dc2 HID Touchscreen +192f Avago Technologies, Pte. + 0000 Mouse + 0416 ADNS-5700 Optical Mouse Controller (3-button) + 0616 ADNS-5700 Optical Mouse Controller (5-button) +1930 Shenzhen Xianhe Technology Co., Ltd. +1931 Ningbo Broad Telecommunication Co., Ltd. +1934 Feature Integration Technology Inc. (Fintek) + 0602 F71610 or F71612 Consumer Infrared Receiver/Transceiver + 0702 Integrated Consumer Infrared Receiver/Transceiver + 5168 F71610A or F71612A Consumer Infrared Receiver/Transceiver +1938 Meinberg Funkuhren GmbH & Co. KG + 0501 TCR51USB IRIG Time Code Reader +1941 Dream Link + 8021 WH1080 Weather Station / USB Missile Launcher +1943 Sensoray Co., Inc. + 2250 Model 2250 MPEG and JPEG Capture Card + 2253 Model 2253 Audio/Video Codec Card + 2255 Model 2255 4 Channel Capture Card + 2257 Model 2257 4 Channel Capture Card + a250 Model 2250 MPEG and JPEG Capture Card (cold) + a253 Model 2253 Audio/Video Codec Card (cold) +1949 Lab126, Inc. + 0002 Amazon Kindle + 0004 Amazon Kindle 3/4/Paperwhite + 0006 Kindle Fire + 0008 Amazon Kindle Fire HD 8.9" +194f PreSonus Audio Electronics, Inc. + 0101 AudioBox 22 VSL + 0102 AudioBox 44 VSL + 0103 AudioBox 1818 VSL + 0301 AudioBox +1951 Hyperstone AG +1953 Ironkey Inc. + 0202 S200 2GB Rev. 1 +1954 Radiient Technologies +195d Itron Technology iONE + 7002 Libra-Q11 IR remote + 7006 Libra-Q26 / 1.0 Remote + 7777 Scorpius wireless keyboard + 7779 Scorpius-P20MT +1965 Uniden Corporation + 0016 HomePatrol-1 +1967 CASIO HITACHI Mobile Communications Co., Ltd. +196b Wispro Technology Inc. +1970 Dane-Elec Corp. USA + 0000 Z Mate 16GB +1975 Dongguan Guneetal Wire & Cable Co., Ltd. +1976 Chipsbrand Microelectronics (HK) Co., Ltd. + 6025 Flash Drive 512 MB +1977 T-Logic + 0111 TL203 MP3 Player and Voice Recorder +197d Leuze electronic + 0222 BCL 508i +1989 Nuconn Technology Corp. +198f Beceem Communications Inc. + 0210 BCS200 WiMAX Adapter + 0220 BCSM250 WiMAX Adapter +1990 Acron Precision Industrial Co., Ltd. +1995 Trillium Technology Pty. Ltd. + 3202 REC-ADPT-USB (recorder) + 3203 REC-A-ADPT-USB (recorder) +1996 PixeLINK + 3010 Camera Release 4 + 3011 OEM Camera + 3012 e-ImageData Corp. ScanPro +199b MicroStrain, Inc. + 3065 3DM-GX3-25 Orientation Sensor +199e The Imaging Source Europe GmbH + 8101 DFx 21BU04 Camera +199f Benica Corporation +19a8 Biforst Technology Inc. +19ab Bodelin + 1000 ProScope HR +19af S Life + 6611 Celestia VoIP Phone +19b2 Batronix + 0010 BX32 Batupo + 0011 BX32P Barlino + 0012 BX40 Bagero + 0013 BX48 Batego +19b4 Celestron + 0002 SkyScout Personal Planetarium + 0101 Handheld Digital Microscope 44302 +19b5 B & W Group +19b6 Infotech Logistic, LLC +19b9 Data Robotics + 8d20 Drobo Elite +19c2 Futuba + 6a11 MDM166A Fluorescent Display +19ca Mindtribe + 0001 Sandio 3D HID Mouse +19cf Parrot SA +19d2 ZTE WCDMA Technologies MSM + 0001 CDMA Wireless Modem + 0002 MF632/ONDA ET502HS/MT505UP + 0007 TU25 WiMAX Adapter [Beceem BCS200] + 0031 MF110/MF627/MF636 + 0063 K3565-Z HSDPA + 0064 MF627 AU + 0083 MF190 + 0103 MF112 + 0104 K4505-Z + 0146 MF 195E (HSPA+ Modem) + 0167 MF820 4G LTE + 0172 AX226 WIMAX MODEM (After Modeswitch) + 0325 LTE4G O2 ZTE MF821D LTE/UMTS/GSM Modem/Networkcard + 0326 LTE4G O2 ZTE MF821D LTE/UMTS/GSM Modem/Networkcard + 1008 K3570-Z + 1010 K3571-Z + 1017 K5006-Z vodafone LTE/UMTS/GSM Modem/Networkcard + 1018 K5006-Z vodafone LTE/UMTS/GSM Modem/Networkcard + 1203 MF691 [ T-Mobile webConnect Rocket 2.0] + 1217 MF652 + 1218 MF652 + 2000 MF627/MF628/MF628+/MF636+ HSDPA/HSUPA + fff2 Gobi Wireless Modem (QDL mode) + fff3 Gobi Wireless Modem +19db KFI Printers + 02f1 NAUT324C +19e1 WeiDuan Electronic Accessory (S.Z.) Co., Ltd. +19e8 Industrial Technology Research Institute +19ef Pak Heng Technology (Shenzhen) Co., Ltd. +19f7 RODE Microphones + 0001 Podcaster +19fa Gampaq Co.Ltd + 0703 Steering Wheel +19ff Dynex + 0102 1.3MP Webcam + 0201 Rocketfish Wireless 2.4G Laser Mouse + 0238 DX-WRM1401 Mouse +1a08 Bellwood International, Inc. +1a0a USB-IF non-workshop + badd USB OTG Compliance test device +1a12 KES Co., Ltd. +1a1d Veho + 0407 Mimi WiFi speakers +1a25 Amphenol East Asia Ltd. +1a2a Seagate Branded Solutions +1a2c China Resource Semico Co., Ltd + 0021 Keyboard + 0024 Multimedia Keyboard +1a32 Quanta Microsystems, Inc. + 0304 802.11n Wireless LAN Card +1a34 ACRUX + 0802 Gamepad +1a36 Biwin Technology Ltd. +1a40 Terminus Technology Inc. + 0101 Hub + 0201 FE 2.1 7-port Hub +1a41 Action Electronics Co., Ltd. +1a44 VASCO Data Security International + 0001 Digipass 905 SmartCard Reader +1a4a Silicon Image +1a4b SafeBoot International B.V. +1a5a Tandberg Data +1a61 Abbott Diabetes Care + 3410 CoPilot System Cable +1a6a Spansion Inc. +1a6d SamYoung Electronics Co., Ltd +1a6e Global Unichip Corp. +1a6f Sagem Orga GmbH +1a72 Physik Instrumente + 1008 E-861 PiezoWalk NEXACT Controller +1a79 Bayer Health Care LLC + 6002 Contour + 7410 Contour Next +1a7b Lumberg Connect GmbH & Co. KG +1a7c Evoluent + 0068 VerticalMouse 3 + 0168 VerticalMouse 3 Wireless + 0191 VerticalMouse 4 +1a81 Holtek Semiconductor, Inc. + 2203 Laser Gaming mouse + 2204 Optical Mouse + 2205 Laser Mouse +1a86 QinHeng Electronics + 5512 CH341 in EPP/MEM/I2C mode, EPP/I2C adapter + 5523 CH341 in serial mode, usb to serial port converter + 5584 CH341 in parallel mode, usb to printer port converter + 7523 HL-340 USB-Serial adapter + 752d CH345 MIDI adapter + 7584 CH340S + e008 HID-based serial adapater +1a89 Dynalith Systems Co., Ltd. +1a8b SGS Taiwan Ltd. +1a8d BandRich, Inc. + 1002 BandLuxe 3.5G HSDPA Adapter + 1009 BandLuxe 3.5G HSPA Adapter + 100d 4G LTE adapter +1a98 Leica Camera AG +1aa4 Data Drive Thru, Inc. +1aa5 UBeacon Technologies, Inc. +1aa6 eFortune Technology Corp. +1aad KeeTouch + 0001 Touchscreen +1ab1 Rigol Technologies + 0588 DS1000 SERIES +1acb Salcomp Plc +1acc Midiplus Co, Ltd. + 0103 AudioLink plus 4x4 2.9.28 +1ad1 Desay Wire Co., Ltd. +1ad4 APS + 0002 KM290-HRS +1adb SEL C662 Serial Cable +1ae4 ic-design Reinhard Gottinger GmbH +1ae7 X-TENSIONS + 0381 VS-DVB-T 380U (af9015 based) + 2001 SpeedLink Snappy Mic webcam (SL-6825-SBK) + 9003 SpeedLink Vicious And Devine Laplace webcam, white (VD-1504-SWT) + 9004 SpeedLink Vicious And Devine Laplace webcam, black (VD-1504-SBK) +1aed High Top Precision Electronic Co., Ltd. +1aef Conntech Electronic (Suzhou) Corporation +1af1 Connect One Ltd. +1afe A. Eberle GmbH & Co. KG + 0001 PQ Box 100 +1b04 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 +1b0e BLUTRONICS S.r.l. + 1078 BLUDRIVE II CCID + 1079 BLUDRIVE II CCID + 1080 WRITECHIP II CCID +1b1c Corsair + 0890 Flash Padlock + 0a00 SP2500 Speakers + 0a60 Vengeance K60 Keyboard + 0c04 Link Cooling Node + 1a01 Flash Voyager GT + 1a03 Voyager 3.0 + 1a09 Voyager GT 3.0 + 1a0a Survivor Stealth Flash Drive + 1a0b Flash Voyager LS + 1a15 Voyager Slider Flash Drive + 1a90 Flash Voyager GT + 1ab1 Voyager + 1b04 Raptor K50 Keyboard + 1b07 Vengeance K65 Gaming Keyboard + 1b08 Vengeance K95 Keyboard + 1b09 Vengeance K70R keyboard + 1b11 K95 RGB Mechanical Gaming Keyboard + 1b13 Vengeance K70RGB keyboard + 1c00 Controller for Corsair Link + 1c0c RM850i Power Supply +1b1f eQ-3 Entwicklung GmbH + c00f HM-CFG-USB/HM-CFG-USB-2 [HomeMatic Configuration adapter] +1b20 MStar Semiconductor, Inc. +1b22 WiLinx Corp. +1b26 Cellex Power Products, Inc. +1b27 Current Electronics Inc. +1b28 NAVIsis Inc. +1b32 Ugobe Life Forms, Inc. + 0064 Pleo robotic dinosaur +1b36 ViXS Systems, Inc. +1b3b iPassion Technology Inc. + 2933 PC Camera/Webcam controller + 2935 PC Camera/Webcam controller + 2936 PC Camera/Webcam controller + 2937 PC Camera/Webcam controller + 2938 PC Camera/Webcam controller + 2939 PC Camera/Webcam controller + 2950 PC Camera/Webcam controller + 2951 PC Camera/Webcam controller + 2952 PC Camera/Webcam controller + 2953 PC Camera/Webcam controller + 2955 PC Camera/Webcam controller + 2956 PC Camera/Webcam controller + 2957 PC Camera/Webcam controller + 2958 PC Camera/Webcam controller + 2959 PC Camera/Webcam controller + 2960 PC Camera/Webcam controller + 2961 PC Camera/Webcam controller + 2962 PC Camera/Webcam controller + 2963 PC Camera/Webcam controller + 2965 PC Camera/Webcam controller + 2966 PC Camera/Webcam controller + 2967 PC Camera/Webcam controller + 2968 PC Camera/Webcam controller + 2969 PC Camera/Webcam controller +1b3f Generalplus Technology Inc. + 0c52 808 Camera #9 (mass storage mode) + 2002 808 Camera #9 (web-cam mode) +1b47 Energizer Holdings, Inc. + 0001 CHUSB Duo Charger (NiMH AA/AAA USB smart charger) +1b48 Plastron Precision Co., Ltd. +1b52 ARH Inc. + 2101 FXMC Neural Network Controller + 2102 FXMC Neural Network Controller V2 + 2103 FXMC Neural Network Controller V3 + 4101 Passport Reader CLR device + 4201 Passport Reader PRM device + 4202 Passport Reader PRM extension device + 4203 Passport Reader PRM DSP device + 4204 Passport Reader PRMC device + 4205 Passport Reader CSHR device + 4206 Passport Reader PRMC V2 device + 4301 Passport Reader MRZ device + 4302 Passport Reader MRZ DSP device + 4303 Passport Reader CSLR device + 4401 Card Reader + 4501 Passport Reader RFID device + 4502 Passport Reader RFID AIG device + 6101 Neural Network Controller + 6202 Fingerprint Reader device + 6203 Fingerprint Scanner device + 8101 Camera V1 + 8102 Recovery / Camera V2 + 8103 Camera V3 +1b59 K.S. Terminals Inc. +1b5a Chao Zhou Kai Yuan Electric Co., Ltd. +1b65 The Hong Kong Standards and Testing Centre Ltd. +1b71 Fushicai + 3002 USBTV007 Video Grabber [EasyCAP] +1b72 ATERGI TECHNOLOGY CO., LTD. +1b73 Fresco Logic + 1000 xHC1 Controller +1b75 Ovislink Corp. + 3072 AirLive WN-360USB adapter + 8171 WN-370USB 802.11bgn Wireless Adapter [Realtek RTL8188SU] + 8187 AirLive WL-1600USB 802.11g Adapter [Realtek RTL8187L] + 9170 AirLive X.USB 802.11abgn [Atheros AR9170+AR9104] + a200 AirLive WN-200USB wireless 11b/g/n dongle +1b76 Legend Silicon Corp. +1b80 Afatech + c810 MC810 [af9015] + d393 DVB-T receiver [RTL2832U] + d396 UB396-T [RTL2832U] + d397 DVB-T receiver [RTL2832U] + d398 DVB-T receiver [RTL2832U] + d700 FM Radio SnapMusic Mobile 700 (FM700) + e297 Conceptronic DVB-T CTVDIGRCU V3.0 + e383 DVB-T UB383-T [af9015] + e385 DVB-T UB385-T [af9015] + e386 DVB-T UB385-T [af9015] + e399 DVB-T KWorld PlusTV 399U [af9015] + e39a DVB-T395U [af9015] + e39b DVB-T395U [af9015] + e401 Sveon STV22 DVB-T [af9015] + e409 IT9137FN Dual DVB-T [KWorld UB499-2T] +1b86 Dongguan Guanshang Electronics Co., Ltd. +1b88 ShenMing Electron (Dong Guan) Co., Ltd. +1b8c Altium Limited +1b8d e-MOVE Technology Co., Ltd. +1b8e Amlogic, Inc. +1b8f MA LABS, Inc. +1b96 N-Trig + 0001 Duosense Transparent Electromagnetic Digitizer +1b98 YMax Communications Corp. +1b99 Shenzhen Yuanchuan Electronic +1ba1 JINQ CHERN ENTERPRISE CO., LTD. +1ba2 Lite Metals & Plastic (Shenzhen) Co., Ltd. +1ba4 Ember Corporation + 0001 InSight USB Link +1ba6 Abilis Systems +1ba8 China Telecommunication Technology Labs +1bad Harmonix Music + 0002 Guitar for Xbox 360 + 0003 Drum Kit for Xbox 360 +1bae Vuzix Corporation + 0002 VR920 Immersive Eyewear +1bbb T & A Mobile Phones + 011e Alcatel One Touch L100V / Telekom Speedstick LTE II + f017 Alcatel One Touch L100V / Telekom Speedstick LTE II +1bc4 Ford Motor Co. +1bc5 AVIXE Technology (China) Ltd. +1bc7 Telit Wireless Solutions + 0020 HE863 + 0021 HE910 + 0023 HE910-D ECM + 1003 UC864-E + 1004 UC864-G + 1005 CC864-DUAL + 1006 CC864-SINGLE + 1010 DE910-DUAL + 1011 CE910-DUAL + 1200 LE920 +1bce Contac Cable Industrial Limited +1bcf Sunplus Innovation Technology Inc. + 0005 Optical Mouse + 0007 Optical Mouse + 053a Targa Silvercrest OMC807-C optische Funkmaus + 05c5 SPRF2413A [2.4GHz Wireless Keyboard/Mouse Receiver] + 05cf Micro keyboard & mouse receiver + 0c31 SPIF30x Serial-ATA bridge + 2880 Dell HD Webcam + 2885 ASUS Webcam + 2888 HP Universal Camera + 28a2 Dell Integrated Webcam + 28a6 DELL XPS Integrated Webcam + 28ae Laptop Integrated Webcam HD + 28bd Dell Integrated HD Webcam + 2985 Laptop Integrated Webcam HD + 2b83 Laptop Integrated Webcam FHD +1bd0 Hangzhou Riyue Electronic Co., Ltd. +1bd5 BG Systems, Inc. +1bde P-TWO INDUSTRIES, INC. +1bef Shenzhen Tongyuan Network-Communication Cables Co., Ltd +1bf0 RealVision Inc. +1bf5 Extranet Systems Inc. +1bf6 Orient Semiconductor Electronics, Ltd. +1bfd TouchPack + 1268 Touch Screen + 1368 Touch Screen + 1568 Capacitive Touch Screen + 1668 IR Touch Screen + 1688 Resistive Touch Screen + 2968 Touch Screen + 5968 Touch Screen + 6968 Touch Screen +1c02 Kreton Corporation +1c04 QNAP System Inc. +1c0c Ionics EMS, Inc. + 0102 Plug Computer +1c0d Relm Wireless +1c10 Lanterra Industrial Co., Ltd. +1c13 ALECTRONIC LIMITED +1c1a Datel Electronics Ltd. +1c1b Volkswagen of America, Inc. +1c1f Goldvish S.A. +1c20 Fuji Electric Device Technology Co., Ltd. +1c21 ADDMM LLC +1c22 ZHONGSHAN CHIANG YU ELECTRIC CO., LTD. +1c26 Shanghai Haiying Electronics Co., Ltd. +1c27 HuiYang D & S Cable Co., Ltd. +1c29 Elster GmbH + 0001 ExMFE5 Simulator + 10fc enCore device +1c31 LS Cable Ltd. +1c34 SpringCard + 7241 Prox'N'Roll RFID Scanner +1c37 Authorizer Technologies, Inc. +1c3d NONIN MEDICAL INC. +1c3e Wep Peripherals +1c40 EZPrototypes + 0533 TiltStick + 0534 i2c-tiny-usb interface + 0535 glcd2usb interface + 0536 Swiss ColorPAL +1c49 Cherng Weei Technology Corp. +1c4f SiGma Micro + 0002 Keyboard TRACER Gamma Ivory + 0003 HID controller + 000e Genius KB-120 Keyboard + 0026 Keyboard + 3000 Micro USB Web Camera + 3002 WebCam SiGma Micro +1c6b Philips & Lite-ON Digital Solutions Corporation + a222 DVD Writer Slimtype eTAU108 +1c6c Skydigital Inc. +1c73 AMT + 861f Anysee E30 USB 2.0 DVB-T Receiver +1c77 Kaetat Industrial Co., Ltd. +1c78 Datascope Corp. +1c79 Unigen Corporation +1c7a LighTuning Technology Inc. + 0801 Fingerprint Reader +1c7b LUXSHARE PRECISION INDUSTRY (SHENZHEN) CO., LTD. +1c83 Schomaecker GmbH + 0001 RS150 V2 +1c87 2N TELEKOMUNIKACE a.s. +1c88 Somagic, Inc. + 0007 SMI Grabber (EasyCAP DC60+ clone) (no firmware) [SMI-2021CBE] + 003c SMI Grabber (EasyCAP DC60+ clone) [SMI-2021CBE] +1c89 HONGKONG WEIDIDA ELECTRON LIMITED +1c8e ASTRON INTERNATIONAL CORP. +1c98 ALPINE ELECTRONICS, INC. +1c9e OMEGA TECHNOLOGY + 6061 WL-72B 3.5G MODEM +1ca0 ACCARIO Inc. +1ca1 Symwave + 18ab SATA bridge +1cac Kinstone + a332 C8 Webcam + b288 C18 Webcam +1cb3 Aces Electronic Co., Ltd. +1cb4 OPEX CORPORATION +1cb6 IdeaCom Technology Inc. + 6681 IDC6681 +1cbe Luminary Micro Inc. + 00fd In-Circuit Debug Interface + 00ff Stellaris ROM DFU Bootloader + 0166 CANAL USB2CAN +1cbf FORTAT SKYMARK INDUSTRIAL COMPANY +1cc0 PlantSense +1cca NextWave Broadband Inc. +1ccd Bodatong Technology (Shenzhen) Co., Ltd. +1cd4 adp corporation +1cd5 Firecomms Ltd. +1cd6 Antonio Precise Products Manufactory Ltd. +1cde Telecommunications Technology Association (TTA) +1cdf WonTen Technology Co., Ltd. +1ce0 EDIMAX TECHNOLOGY CO., LTD. +1ce1 Amphenol KAE +1cf1 Dresden Elektronik + 0001 Sensor Terminal Board + 0004 Wireless Handheld Terminal + 0017 deRFusbSniffer 2.4 GHz + 0018 deRFusb24E001 + 0019 deRFusb14E001 + 001a deRFusb23E00 + 001b deRFusb13E00 + 001c deRFnode + 001d deRFnode / gateway + 0022 deUSB level shifter + 0023 deRFusbSniffer Sub-GHz + 0025 deRFusb23E06 + 0027 deRFusb13E06 +1cfc ANDES TECHNOLOGY CORPORATION +1cfd Flextronics Digital Design Japan, LTD. +1d03 iCON + 0028 iCreativ MIDI Controller +1d07 Solid-Motion +1d08 NINGBO HENTEK DRAGON ELECTRONICS CO., LTD. +1d09 TechFaith Wireless Technology Limited + 1026 HSUPA Modem FLYING-LARK46-VER0.07 [Flying Angel] +1d0a Johnson Controls, Inc. The Automotive Business Unit +1d0b HAN HUA CABLE & WIRE TECHNOLOGY (J.X.) CO., LTD. +1d0f Sonix Technology Co., Ltd. +1d14 ALPHA-SAT TECHNOLOGY LIMITED +1d17 C-Thru Music Ltd. + 0001 AXiS-49 Harmonic Table MIDI Keyboard +1d19 Dexatek Technology Ltd. + 1101 DK DVB-T Dongle + 1102 DK mini DVB-T Dongle + 1103 DK 5217 DVB-T Dongle + 6105 Video grabber + 8202 DK DVBC/T DONGLE +1d1f Diostech Co., Ltd. +1d20 SAMTACK INC. +1d27 ASUS +1d34 Dream Cheeky + 0001 Dream Cheeky Fidget + 0004 Dream Cheeky Webmail Notifier + 0008 Dream Cheeky button + 000a Dream Cheeky Mailbox Friends Alert + 000d Dream Cheeky Big Red Button + 0013 Dream Cheeky LED Message Board +1d45 Touch + 1d45 Foxlink Optical touch sensor +1d4d PEGATRON CORPORATION + 0002 Ralink RT2770/2720 802.11b/g/n Wireless LAN Mini-USB Device + 000c Ralink RT3070 802.11b/g/n Wireless Lan USB Device + 000e Ralink RT3070 802.11b/g/n Wireless Lan USB Device +1d50 OpenMoko, Inc. + 1db5 IDBG (DFU) + 1db6 IDBG + 5117 Neo1973/FreeRunner kernel usbnet (g_ether, CDC Ethernet) mode + 5118 Neo1973/FreeRunner Debug board (V2+) + 5119 Neo1973/FreeRunner u-boot cdc_acm serial port + 511a HXD8 u-boot usbtty CDC ACM Mode + 511b SMDK2440 u-boot usbtty CDC ACM mode + 511c SMDK2443 u-boot usbtty CDC ACM mode + 511d QT2410 u-boot usbtty CDC ACM mode + 5120 Neo1973/FreeRunner u-boot usbtty generic serial + 5121 Neo1973/FreeRunner kernel mass storage (g_storage) mode + 5122 Neo1973/FreeRunner kernel cdc_ether USB network + 5123 Neo1973/FreeRunner internal USB CSR4 module + 5124 Neo1973/FreeRunner Bluetooth Device ID service + 5300 Rockbox + 6000 Ubertooth Zero + 6001 Ubertooth Zero (DFU) + 6002 Ubertooth One + 6003 Ubertooth One (DFU) + 6004 LeoLipo + 6005 LED Flower S + 6006 LED Cube + 6007 LED Flower + 6008 Kisbee 802.15.4 transceiver + 6009 Adjacent Reality Tracker + 600a AVR Programmer + 600b Hypna Go Go + 600c CatNip LPC1343 development board + 600d Enhanced RoboBrrd Brain board + 600e OpenRISC Ordb2a-ep4ce22 development board + 600f Paparazzi Lisa/M (DFU) + 6010 OpenPipe: OSHW Bagpipes MIDI controller + 6011 LeoLipo (DFU) + 6012 Universal C64 Cartridge + 6013 DiscFerret magnetic disc analyser (bootloader) + 6014 DiscFerret magnetic disc analyser + 6015 Smoothieboard + 6016 phInterface + 6017 Black Magic Debug Probe (DFU) + 6018 Black Magic Debug Probe (Application) + 6019 4pi 5 axis motion controller + 601a Paparazzi Lisa/M + 601b IST-2 chronograph for bullet speeds + 601c EPOSMote II + 601e 5x5 STM32 prototyping board + 601f uNSF + 6020 Toad3 + 6021 AlphaSphere + 6022 LightPack + 6023 Pixelkit + 6024 Illucia + 6025 Keyglove (HID) + 6027 Key64 Keyboard + 6028 Teensy 2.0 Development Board [ErgoDox Keyboard] + 602a Marlin 2.0 (Mass Storage) + 602b FPGALink + 602c 5nes5snes (5x8) + 602d 5nes5snes (4x12) + 602e Flexibity + 602f K-copter + 6030 USB-oscope + 6031 Handmade GSM GPS tracker + 6033 frobiac / adnw keyboard + 6034 Tiflomag Ergo 2 + 6035 FreeLaserTag Gun + 6036 FreeLaserTag Big Brother + 6037 FreeLaserTag Node + 6038 Monaka + 6039 eXtreme Feedback Device + 603a TiLDA + 603b Raspiface + 603c Paparazzi (bootloader) + 603d Paparazzi (Serial) + 603e Paparazzi (Mass Storage) + 603f airGuitar + 6040 moco + 6041 AlphaSphere (bootloader) + 6042 Dspace robot controller + 6043 pc-power + 6044 open-usb-can (DFU) + 6045 open-usb-can + 6046 mimus-weigand + 6047 RfCat Chronos Dongle + 6048 RfCat Dons Dongle + 6049 RfCat Chronos bootloader + 604a RfCat Dons bootloader + 604b HackRF Jawbreaker Software-Defined Radio + 604c Makibox A6 + 604d Paella Pulse height analyzer + 604e Miniscope v2b + 604f Miniscope v2c + 6050 GoodFET + 6051 pinocc.io + 6052 APB Team Robotic Development Board + 6053 Darkgame Controller + 6054 Satlab/AAUSAT3 BlueBox + 6056 The Glitch + 605b RfCat YARD Stick One + 605c YARD Stick One bootloader + 605d Funky Sensor v2 + 605e Blinkiverse Analog LED Fader + 605f Small DIP package Cypress FX2 + 6060 Data logger using the Cypress FX2 + 6061 Power Manager + 6063 CPC FPGA + 6064 CPC FPGA (DFU) + 6065 CPC FPGA (Serial) + 6066 Nuand BladeRF + 6067 Orbotron 9000 (Serial) + 6068 Orbotron 9000 (HID) + 6069 xser (DFU) + 606a xser (legacy) + 606b S08-245, urJtag compatible firmware for S08JS + 606c Blinkytape full-color light tape + 606d TinyG open source motion controller + 606e Reefangel Evolution 1.0 + 6070 Open Pinball Project + 6071 The Glitch HID + 6072 The Glitch Disk + 6073 The Glitch Serial + 6074 The Glitch MIDI + 6075 The Glitch RawHID + 6076 Vultureprog BIOS chip programmer + 6077 PaintDuino + 6078 DTplug + 607a Fadecandy + 607b RCDongle for IR remote control + 607c OpenVizsla USB sniffer/analyzer + 607d Spark Core Arduino-compatible board with WiFi + 607f Spark Core Arduino-compatible board with WiFi (bootloader) + 6080 arcin arcade controller + 6081 BladeRF (bootloader) + 6082 Facecandy (DFU) + 6083 LightUp (bootloader) + 6084 arcin arcade controller (DFU) + 6085 IRKit for controlloing home electronics from iOS devices + 6086 OneRNG entropy device + 6088 picp PIC16F145x based PIC16F145x programmer + 6089 Great Scott Gadgets HackRF One SDR + 608a BLEduino + 608b Loctronix ASR-2300 SDR/motion sensing module + 608c Fx2lafw + 608d Fx2lafw + 608e Fx2lafw + 608f Fx2lafw + 6090 Fx2lafw + 6091 Fx2lafw + 6092 Fx2lafw + 6093 Fx2lafw + 6094 Fx2lafw + 6095 Fx2lafw + 6096 LightUp (sketch) + 6097 Tessel JavaScript enabled Microcontroller with built-in WiFi + 6098 RFIDler + 6099 RASDR Radio Astronomy SDR Rx Interface + 609a RASDR Radio Astronomy SDR Tx Interface + 609b RASDR Radio Astronomy SDR (bootloader) + 609c antiAFK keyboard + 609d PIC16F145x bootloader + 609e Clyde Lamp by Fabule (bootloader) + 609f Clyde Lamp by Fabule (sketch) + 60a0 Smoothiepanel robotic control interface + 60a1 Airspy + 60a2 barebox (DFU) + 60a3 keyboard (bootloader) + 60a4 Papilio Duo (AVR) + 60a5 Papilio Duo (FPGA) + 60a6 HydraBus/HydraNFC (bootloader) + 60a7 HydraBus/HydraNFC + 60a8 reserved + 60a9 Blinky Light Controller (DFU) + 60aa Blinky Light Controller + 60ab AllPixel + 60ac OpenBLT generic microcontroller (bootloader) + 60b0 Waterott Arduino based Clock (caterina bootloader) + 60b1 Drinkbot (processing) + 60b2 Drinkbot (OTG-tablet support) + 60b3 calc.pw password generator device (standard) + 60b4 calc.pw password generator device (enhanced) + 60b5 TimVideos' HDMI2USB (FX2) - Unconfigured device + 60b6 TimVideos' HDMI2USB (FX2) - Firmware load/upgrade + 60b7 TimVideos' HDMI2USB (FX2) - HDMI/DVI Capture Device + 60b8 TimVideos' HDMI2USB (Soft+UTMI) - Unconfigured device + 60b9 TimVideos' HDMI2USB (Soft+UTMI) - Firmware upgrade + 60ba TimVideos' HDMI2USB (Soft+UTMI) - HDMI/DVI Capture Device + 60bc Simple CC25xx programmer / serial board + 60bd Open Source control interface for multimedia applications + 60be Pixelmatix Aurora (bootloader) + 60bf Pixelmatix Aurora + 60c1 BrewBit Model-T pOSHW temperature controller for homebrewers (bootloader) + 60c2 BrewBit Model-T pOSHW temperature controller for homebrewers + 60c3 X Antenna Tracker arduino board + 60c6 USBtrng hardware random number generator + 60c7 Zubax GNSS positioning module for light UAV systems + 60c8 Xlink data transfer and control system for Commodore C64 + 60c9 random number generator + 60ca FinalKey password manager + 60cb PteroDAQ Data Acquisition on FRDM-KL25Z and future boards + 60cc LamDiNao + 60de Cryptech.is random number generator + 60df Numato Opsis HDMI2USB board (unconfigured) + 60e0 Numato Opsis HDMI2USB board (JTAG Programming Mode) + 60e1 Numato Opsis HDMI2USB board (User Mode) + 60e2 Osmocom SIMtrace 2 (DFU) + 60e3 Osmocom SIMtrace 2 + 60e4 3D printed racing game - (Catalina CDC bootloader) + 60e5 3D printed racing game + 60e6 replacement for GoodFET/FaceDancer - GreatFet + 60e7 replacement for GoodFET/FaceDancer - GreatFet target + 60e8 Alpen Clack keyboard + 60e9 keyman64 keyboard itercepter + 60ea Wiggleport FPGA-based I/O board + 60ec Duet 3D Printer Controller + 60f0 UDAD-T1 data aquisition device (boot) + 60f1 UDAD-T1 data aquisition device + 60f2 UDAD-T2 data aquisition device (boot) + 60f3 UDAD-T2 data aquisition device + 60f4 Uniti ARC motor controller + 60f5 EightByEight Blinky Badge (DFU) + 60f6 EightByEight Blinky Badge + 60f7 cardio NFC/RFID card reader (bootloader) + 60f8 cardio NFC/RFID card reader + 60fc OnlyKey Two-factor Authentication and Password Solution + 6100 overlay64 video overlay module + 6104 ScopeFun open source instrumentation + 6108 Myriad-RF LimeSDR + 610c Magic Keys (boot) + 610d Magic Keys + 8085 Box0 (box0-v5) + cc15 rad1o badge for CCC congress 2015 +1d57 Xenta + 0005 Wireless Receiver (Keyboard and Mouse) + 0006 Wireless Receiver (RC Laser Pointer) + 000c Optical Mouse + 2400 Wireless Mouse Receiver + 32da 2.4GHz Receiver (Keyboard and Mouse) + 83d0 Click-mouse! + ac01 Wireless Receiver (Keyboard and Mouse) + ad02 SE340D PC Remote Control + af01 AUVIO Universal Remote Receiver for PlayStation 3 +1d5b Smartronix, Inc. +1d5c Fresco Logic + 2000 FL2000/FL2000DX VGA/DVI/HDMI Adapter +1d6b Linux Foundation + 0001 1.1 root hub + 0002 2.0 root hub + 0003 3.0 root hub + 0100 PTP Gadget + 0101 Audio Gadget + 0102 EEM Gadget + 0103 NCM (Ethernet) Gadget + 0104 Multifunction Composite Gadget + 0105 FunctionFS Gadget + 0200 Qemu Audio Device +1d90 Citizen + 201e PPU-700 +1d9d Sigma Sport + 1010 Docking Station Topline 2009 + 1011 Docking Station Topline 2012 +1de1 Actions Microelectronics Co. + 1101 Generic Display Device (Mass storage mode) + c101 Generic Display Device +1e0e Qualcomm / Option + f000 iCON 210 UMTS Surfstick +1e10 Point Grey Research, Inc. + 2004 Sony 1.3MP 1/3" ICX445 IIDC video camera [Chameleon] +1e17 Mirion Technologies Dosimetry Services Division + 0001 instadose dosimeter +1e1d Lumension Security + 0165 Secure Pen drive +1e1f INVIA +1e29 Festo AG & Co. KG + 0101 CPX Adapter + 0102 CPX Adapter >=HW10.09 [CP2102] + 0401 iL3-TP [AT90USB646] + 0402 FTDI232 [EasyPort] + 0403 FTDI232 [EasyPort Mini] + 0404 FTDI232 [Netzteil-GL] + 0405 FTDI232 [MotorPrüfstand] + 0406 STM32F103 [EasyKit] + 0407 LPC2378 [Robotino] + 0408 LPC2378 [Robotino-Arm] + 0409 LPC2378 [Robotino-Arm Bootloader] + 040a LPC2378 [Robotino Bootloader] + 040b LPC2378 [Robotino XT] + 040c LPC2378 [Robotino XT Bootloader] + 040d LPC2378 [Robotino 3] + 040e LPC2378 [Robotino 3 Bootloader] + 0501 CP2102 [CMSP] + 0601 CMMP-AS +1e3d Chipsbank Microelectronics Co., Ltd + 2093 CBM209x Flash Drive (OEM) + 4082 CBM4082 SD Card Reader +1e41 Cleverscope + 0001 CS328A PC Oscilloscope +1e4e Cubeternet + 0100 WebCam + 0102 GL-UPC822 UVC WebCam +1e54 TypeMatrix + 2030 2030 USB Keyboard +1e68 TrekStor GmbH & Co. KG + 001b DataStation maxi g.u + 0050 DataStation maxi light +1e71 NZXT + 0001 Avatar Optical Mouse +1e74 Coby Electronics Corporation + 2211 MP300 + 2647 2 GB 2 Go Video MP3 Player [MP601-2G] + 2659 Coby 4GB Go Video MP3 Player [MP620-4G] + 4641 A8705 MP3/Video Player + 6511 MP705-8G MP3 player + 6512 MP705-4G + 7111 MP957 Music and Video Player +1e7d ROCCAT + 2c24 Pyra Mouse (wired) + 2ced Kone Mouse + 2cf6 Pyra Mouse (wireless) + 2d50 Kova+ Mouse + 2d51 Kone+ Mouse + 30d4 Arvo Keyboard +1ea7 SHARKOON Technologies GmbH + 0066 [Mediatrack Edge Mini Keyboard] + 2007 SHARK ZONE K30 Illuminated Gaming Keyboard +1ebb NuCORE Technology, Inc. +1eda AirTies Wireless Networks + 2012 Air2210 54 Mbps Wireless Adapter + 2210 Air2210 54 Mbps Wireless Adapter + 2310 Air2310 150 Mbps Wireless Adapter + 2410 Air2410 300 Mbps Wireless Adapter +1edb Blackmagic design + bd3b Intensity Shuttle +1ee8 ONDA COMMUNICATION S.p.a. + 0014 MT833UP +1ef6 EADS Deutschland GmbH + 2233 Cassidian NH90 STTE + 5064 FDR Interface + 5523 Cassidian SSDC Adapter II + 5545 Cassidian SSDC Adapter III + 5648 RIU CSMU/BSD + 564a Cassidian RIU CSMU/BSD Simulator +1f28 Cal-Comp + 0020 CDMA USB Modem A600 + 0021 CD INSTALLER USB Device +1f3a Onda (unverified) + efe8 V972 tablet in flashing mode +1f44 The Neat Company + 0001 NM-1000 scanner +1f48 H-TRONIC GmbH + 0627 Data capturing system + 0628 Data capturing and control module +1f4d G-Tek Electronics Group + b803 Lifeview LV5TDLX DVB-T [RTL2832U] + d220 Geniatech T220 DVB-T2 TV Stick +1f6f Aliph + 0023 Jawbone Jambox + 8000 Jawbone Jambox - Updating +1f75 Innostor Technology Corporation + 0888 IS888 SATA Storage Controller + 0902 IS902 UFD controller +1f82 TANDBERG + 0001 PrecisionHD Camera +1f84 Alere, Inc. +1f87 Stantum + 0002 Multi-touch HID Controller +1f9b Ubiquiti Networks, Inc. + 0241 AirView2-EXT +1fab Samsung Opto-Electroncs Co., Ltd. + 104d ES65 +1fbd Delphin Technology AG + 0001 Expert Key - Data aquisition system +1fc9 NXP Semiconductors + 0003 LPC1343 + 010b PR533 + 012b i.MX 8M Dual/8M QuadLite/8M Quad Serial Downloader +1fde ILX Lightwave Corporation + 0001 UART Bridge +1fe7 Vertex Wireless Co., Ltd. + 1000 VW100 series CDMA EV-DO Rev.A modem +1ff7 CVT Electronics.Co.,Ltd + 0013 CVTouch Screen (HID) + 001a Human Interface Device +1fff Ideofy Inc. +2001 D-Link Corp. + 0001 DWL-120 WIRELESS ADAPTER + 0201 DHN-120 10Mb Home Phoneline Adapter + 1a00 DUB-E100 Fast Ethernet Adapter(rev.A) [ASIX AX88172] + 1a02 DUB-E100 Fast Ethernet Adapter(rev.C1) [ASIX AX88772] + 200c 10/100 Ethernet + 3200 DWL-120 802.11b Wireless Adapter(rev.E1) [Atmel at76c503a] + 3301 DWA-130 802.11n Wireless N Adapter(rev.C1) [Realtek RTL8192U] + 3306 DWL-G122 Wireless Adapter(rev.F1) [Realtek RTL8188SU] + 3308 DWA-121 802.11n Wireless N 150 Pico Adapter [Realtek RTL8188CUS] + 3309 DWA-135 802.11n Wireless N Adapter(rev.A1) [Realtek RTL8192CU] + 330a DWA-133 802.11n Wireless N Adapter [Realtek RTL8192CU] + 3500 Elitegroup Computer Systems WLAN card WL-162 + 3700 DWL-122 802.11b [Intersil Prism 3] + 3701 DWL-G120 Spinnaker 802.11g [Intersil ISL3886] + 3702 DWL-120 802.11b Wireless Adapter(rev.F) [Intersil ISL3871] + 3703 AirPlus G DWL-G122 Wireless Adapter(rev.A1) [Intersil ISL3880] + 3704 AirPlus G DWL-G122 Wireless Adapter(rev.A2) [Intersil ISL3887] + 3705 AirPlus G DWL-G120 Wireless Adapter(rev.C) [Intersil ISL3887] + 3761 IEEE 802.11g USB2.0 Wireless Network Adapter-PN + 3a00 DWL-AG132 [Atheros AR5523] + 3a01 DWL-AG132 (no firmware) [Atheros AR5523] + 3a02 DWL-G132 [Atheros AR5523] + 3a03 DWL-G132 (no firmware) [Atheros AR5523] + 3a04 DWL-AG122 [Atheros AR5523] + 3a05 DWL-AG122 (no firmware) [Atheros AR5523] + 3a80 AirPlus Xtreme G DWL-G132 Wireless Adapter + 3a81 predator Bootloader Download + 3a82 AirPremier AG DWL-AG132 Wireless Adapter + 3a83 predator Bootloader Download + 3b00 AirPlus DWL-120+ Wireless Adapter [Texas Instruments ACX100USB] + 3b01 WLAN Boot Device + 3c00 AirPlus G DWL-G122 Wireless Adapter(rev.B1) [Ralink RT2571] + 3c01 AirPlus AG DWL-AG122 Wireless Adapter + 3c02 AirPlus G DWL-G122 Wireless Adapter + 3c05 DUB-E100 Fast Ethernet Adapter(rev.B1) [ASIX AX88772] + 3c15 DWA-140 RangeBooster N Adapter(rev.B3) [Ralink RT5372] + 3c17 DWA-123 Wireless N 150 Adapter(rev.A1) [Ralink RT3370] + 3c19 DWA-125 Wireless N 150 Adapter(rev.A3) [Ralink RT5370] + 3c1a DWA-160 802.11abgn Xtreme N Dual Band Adapter(rev.B2) [Ralink RT5572] + 3c1b DWA-127 Wireless N 150 High-Gain Adapter(rev.A1) [Ralink RT3070] + 4000 DSB-650C Ethernet [klsi] + 4001 DSB-650TX Ethernet [pegasus] + 4002 DSB-650TX Ethernet [pegasus] + 4003 DSB-650TX-PNA Ethernet [pegasus] + 400b 10/100 Ethernet + 4102 10/100 Ethernet + 5100 DSL-200 ADSL ATM Modem + 5102 DSL-200 ADSL Loader + 5b00 Remote NDIS Network Device + 9414 Cable Modem + 9b00 Broadband Cable Modem Remote NDIS Device + abc1 DSB-650 Ethernet [pegasus] + f013 DLink 7 port USB2.0 Hub + f103 DUB-H7 7-port USB 2.0 hub + f10d Accent Communications Modem + f110 DUB-AV300 A/V Capture + f111 DBT-122 Bluetooth adapter + f112 DUB-T210 Audio Device + f116 Formosa 2 + f117 Formosa 3 + f118 Formosa 4 +2002 DAP Technologies +2003 detectomat + ea61 dc3500 +200c Reloop + 100b Play audio soundcard +2013 PCTV Systems + 0245 PCTV 73ESE + 0246 PCTV 74E + 0248 PCTV 282E + 024f nanoStick T2 290e +2019 PLANEX + 3220 GW-US11S WLAN [Atmel AT76C503A] + 4901 GW-USSuper300 802.11bgn Wireless Adapter [Realtek RTL8191SU] + 4903 GW-USFang300 802.11abgn Wireless Adapter [Realtek RTL8192DU] + 4904 GW-USUltra300 802.11abgn Wireless Adapter [Realtek RTL8192DU] + 5303 GW-US54GXS 802.11bg + 5304 GWUS300 802.11n + ab01 GW-US54HP + ab24 GW-US300MiniS + ab25 GW-USMini2N 802.11n Wireless Adapter [Ralink RT2870] + ab28 GW-USNano + ab29 GW-USMicro300 + ab2a GW-USNano2 802.11n Wireless Adapter [Realtek RTL8188CUS] + ab2b GW-USEco300 802.11bgn Wireless Adapter [Realtek RTL8192CU] + ab2c GW-USDual300 802.11abgn Wireless Adapter [Realtek RTL8192DU] + ab50 GW-US54Mini2 + c002 GW-US54SG + c007 GW-US54GZL + ed02 GW-USMM + ed06 GW-US300MiniW 802.11bgn Wireless Adapter + ed10 GW-US300Mini2 + ed14 GW-USMicroN + ed16 GW-USMicroN2W 802.11bgn Wireless Adapter [Realtek RTL8188SU] + ed17 GW-USValue-EZ 802.11n Wireless Adapter [Realtek RTL8188CUS] + ed18 GW-USHyper300 / GW-USH300N 802.11bgn Wireless Adapter [Realtek RTL8191SU] +203d Encore Electronics Inc. + 1480 ENUWI-N3 [802.11n Wireless N150 Adapter] +2040 Hauppauge + 0c80 Windham + 0c90 Windham + 1700 CataMount + 1800 Okemo A + 1801 Okemo B + 2000 Tiger Minicard + 2009 Tiger Minicard R2 + 200a Tiger Minicard + 2010 Tiger Minicard + 2011 WinTV MiniCard [Dell Digital TV Receiver] + 2019 Tiger Minicard + 2400 WinTV PVR USB2 (Model 24019) + 4700 WinTV Nova-S-USB2 + 4902 HD PVR + 4903 HS PVR + 4982 HD PVR + 5500 Windham + 5510 Windham + 5520 Windham + 5530 Windham + 5580 Windham + 5590 Windham + 6500 WinTV HVR-900 + 6502 WinTV HVR-900 + 6503 WinTV HVR-930 + 6513 WinTV HVR-980 + 7050 Nova-T Stick + 7060 Nova-T Stick 2 + 7070 Nova-T Stick 3 + 7240 WinTV HVR-850 + 8400 WinTV Nova-T-500 + 9300 WinTV NOVA-T USB2 (cold) + 9301 WinTV NOVA-T USB2 (warm) + 9941 WinTV Nova-T-500 + 9950 WinTV Nova-T-500 + b910 Windham + b980 Windham + b990 Windham + c000 Windham + c010 Windham +2047 Texas Instruments + 0200 MSP430 USB HID Bootstrap Loader + 0855 Invensense Embedded MotionApp HID Sensor + 0964 Inventio Software MSP430 +2058 Nano River Technology + 2058 ViperBoard I2C, SPI, GPIO interface +2077 Taicang T&W Electronics Co. Ltd + 9002 W1M100 HSPA/WCDMA Module +2080 Barnes & Noble + 0001 nook + 0002 NOOKcolor + 0003 NOOK Simple Touch + 0004 NOOK Tablet +2086 SIMPASS +2087 Cando + 0a01 Multi Touch Panel + 0a02 Multi Touch Panel + 0b03 Multi Touch Panel +20a0 Clay Logic + 4123 IKALOGIC SCANALOGIC 2 + 414a MDE SPI Interface + 415a OpenPilot + 415b CopterControl + 415c PipXtreme +20b1 XMOS Ltd + 10ad XUSB Loader + f7d1 XTAG2 - JTAG Adapter +20b3 Hanvon + 0a18 10.1 Touch screen overlay +20b7 Qi Hardware + 0713 Milkymist JTAG/serial + 1540 ben-wpan, AT86RF230-based + 1db5 IDBG in DFU mode + 1db6 IDBG in normal mode + c25b C2 Dongle + cb72 ben-wpan, cntr +20ce Minicircuits + 0012 RF Sythesizer 250-4200MHz model SSG-4000LH + 0021 RF Switch Matrix + 0022 I/O Controller +20df Simtec Electronics + 0001 Entropy Key [UDEKEY01] +20f1 NET New Electronic Technology GmbH + 0101 iCube3 Camera +20f4 TRENDnet + 648b TEW-648UBM 802.11n 150Mbps Micro Wireless N Adapter [Realtek RTL8188CUS] +20f7 XIMEA + 3001 MQ or MD camera + 3002 MU camera + 3021 MJ camera + 30b3 MQ in U3V mode or MC camera + a003 MU camera +2100 RT Systems + 9e52 Yaesu VX-7 + 9e54 CT29B Radio Cable + 9e57 RTS01 Radio Cable + 9e5d K4Y Radio Cable + 9e5f FT232RL [RTS05 Serial Cable] +2101 ActionStar + 0201 SIIG 4-to-2 Printer Switch +2109 VIA Labs, Inc. + 0700 VL700 SATA 3Gb/s bridge + 0701 VL701 SATA 3Gb/s bridge + 0810 VL81x Hub + 0811 Hub + 0812 VL812 Hub + 2811 Hub + 2812 VL812 Hub + 3431 Hub + 8110 Hub +2113 Softkinetic + 0137 DepthSense 311 (3D) + 0145 DepthSense 325 + 8000 DepthSense 311 (Color) +2149 Advanced Silicon S.A. + 211b Touchscreen Controller + 2703 TS58xxA/TC56xxA [CoolTouch] +2162 Creative (?) + 2031 Network Blaster Wireless Adapter + 500c DE5771 Modem Blaster + 8001 Broadxent BritePort DSL Bridge 8010U +2184 GW Instek + 0005 GDS-3000 Oscilloscope + 0006 GDS-3000 Oscilloscope + 0011 AFG Function Generator (CDC) +21a1 Emotiv Systems Pty. Ltd. + 0001 EPOC Consumer Headset Wireless Dongle +21d6 Agecodagis SARL + 0002 Seismic recorder [Tellus] +2207 Fuzhou Rockchip Electronics Company + 0010 GoClever Tab R83 + 0011 SmartTab + 281a RK2818 in Mask ROM mode + 290a RK2918 in Mask ROM mode + 292a RK2928 in Mask ROM mode + 292c RK3026 in Mask ROM mode + 300a RK3066 in Mask ROM mode + 300b RK3168 in Mask ROM mode + 301a RK3036 in Mask ROM mode + 310a RK3066B in Mask ROM mode + 310b RK3188 in Mask ROM mode + 310c RK3126/RK3128 in Mask ROM mode + 310d RK3126 in Mask ROM mode + 320a RK3288 in Mask ROM mode + 320b RK3228/RK3229 in Mask ROM mode + 320c RK3328 in Mask ROM mode + 330a RK3368 in Mask ROM mode + 330c RK3399 in Mask ROM mode +2222 MacAlly + 0004 iWebKey Keyboard + 2520 Mini Tablet + 4050 AirStick joystick +2227 SAMWOO Enterprise + 3105 SKYDATA SKD-U100 +2232 Silicon Motion + 1005 WebCam SCB-0385N + 1028 WebCam SC-03FFL11939N + 1029 WebCam SC-13HDL11939N + 1037 WebCam SC-03FFM12339N +2233 RadioShack Corporation + 6323 USB Electronic Scale +2237 Kobo Inc. + 4161 eReader White +225d Morpho + 0001 FINGER VP Multimodal Biometric Sensor + 0008 CBM-E3 Fingerprint Sensor + 0009 CBM Fingerprint Sensor [CBM-V3] + 000a MSO1300-E3 Fingerprint Sensor + 000b MSO1300 Fingerprint Sensor [MSO1300-V3] + 000c MSO1350-E3 Fingerprint Sensor & SmartCard Reader + 000d MSO1350 Fingerprint Sensor & SmartCard Reader [MSO1350-V3] + 000e MorphoAccess SIGMA Biometric Access Control Terminal +228d 8D Technologies inc. + 0001 Terminal Bike Key Reader +22a6 Pie Digital, Inc. + ffff PieKey "beta" 4GB model 4E4F41482E4F5247 (SM3251Q BB) +22b8 Motorola PCS + 0001 Wally 2.2 chipset + 0002 Wally 2.4 chipset + 0005 V.60c/V.60i GSM Phone + 0830 2386C-HT820 + 0833 2386C-HT820 [Flash Mode] + 0850 Bluetooth Device + 1001 Patriot 1.0 (GSM) chipset + 1002 Patriot 2.0 chipset + 1005 T280e GSM/GPRS Phone + 1101 Patriot 1.0 (TDMA) chipset + 1801 Rainbow chipset flash + 2035 Bluetooth Device + 2805 GSM Modem + 2821 T720 GSM Phone + 2822 V.120e GSM Phone + 2823 Flash Interface + 2a01 MSM6050 chipset + 2a02 CDMA modem + 2a03 MSM6050 chipset flash + 2a21 V710 GSM Phone (P2K) + 2a22 V710 GSM Phone (AT) + 2a23 MSM6100 chipset flash + 2a41 MSM6300 chipset + 2a42 Usb Modem + 2a43 MSM6300 chipset flash + 2a61 E815 GSM Phone (P2K) + 2a62 E815 GSM Phone (AT) + 2a63 MSM6500 chipset flash + 2a81 MSM6025 chipset + 2a83 MSM6025 chipset flash + 2ac1 MSM6100 chipset + 2ac3 MSM6100 chipset flash + 2d78 XT300[SPICE] + 3001 A835/E1000 GSM Phone (P2K) + 3002 A835/E1000 GSM Phone (AT) + 3801 C350L/C450 (P2K) + 3802 C330/C350L/C450/EZX GSM Phone (AT) + 3803 Neptune LT chipset flash + 4001 OMAP 1.0 chipset + 4002 A920/A925 UMTS Phone + 4003 OMAP 1.0 chipset flash + 4008 OMAP 1.0 chipset RDL + 41d6 Droid X (Windows media mode) + 41d9 Droid/Milestone + 41db Droid/Milestone (Debug mode) + 41de Droid X (PC mode) + 4204 MPx200 Smartphone + 4214 MPc GSM + 4224 MPx220 Smartphone + 4234 MPc CDMA + 4244 MPx100 Smartphone + 4285 Droid X (Mass storage) + 4801 Neptune LTS chipset + 4803 Neptune LTS chipset flash + 4810 Triplet GSM Phone (storage) + 4901 Triplet GSM Phone (P2K) + 4902 Triplet GSM Phone (AT) + 4903 Neptune LTE chipset flash + 4a01 Neptune LTX chipset + 4a03 Neptune LTX chipset flash + 4a32 L6-imode Phone + 5801 Neptune ULS chipset + 5803 Neptune ULS chipset flash + 5901 Neptune VLT chipset + 5903 Neptune VLT chipset flash + 6001 Dalhart EZX + 6003 Dalhart flash + 6004 EZX GSM Phone (CDC Net) + 6006 MOTOROKR E6 + 6008 Dalhart RDL + 6009 EZX GSM Phone (P2K) + 600a Dalhart EZX config 17 + 600b Dalhart EZX config 18 + 600c EZX GSM Phone (USBLAN) + 6021 JUIX chipset + 6023 JUIX chipset flash + 6026 Flash RAM Downloader/miniOS + 6027 USBLAN + 604c EZX GSM Phone (Storage) + 6101 Talon integrated chipset + 6401 Argon chipset + 6403 Argon chipset flash + 6415 ROKR Z6 (MTP mode) + 6604 Washington CDMA Phone + 6631 CDC Modem + 7001 Q Smartphone + fe01 StarTAC III MS900 +22b9 eTurboTouch Technology, Inc. + 0006 Touch Screen +22ba Technology Innovation Holdings, Ltd +2304 Pinnacle Systems, Inc. + 0109 Studio PCTV USB (SECAM) + 0110 Studio PCTV USB (PAL) + 0111 Miro PCTV USB + 0112 Studio PCTV USB (NTSC) with FM radio + 0201 Systems MovieBox Device + 0204 MovieBox USB_B + 0205 DVC 150B + 0206 Systems MovieBox Deluxe Device + 0207 Dazzle DVC90 Video Device + 0208 Studio PCTV USB2 + 020e PCTV 200e + 020f PCTV 400e BDA Device + 0210 Studio PCTV USB (PAL) with FM radio + 0212 Studio PCTV USB (NTSC) + 0213 500-USB Device + 0214 Studio PCTV USB (PAL) with FM radio + 0216 PCTV 60e + 0219 PCTV 260e + 021a Dazzle DVC100 Audio Device + 021b Dazzle DVC130/DVC170 + 021d Dazzle DVC130 + 021e Dazzle DVC170 + 021f PCTV Sat HDTV Pro BDA Device + 0222 PCTV Sat Pro BDA Device + 0223 DazzleTV Sat BDA Device + 0225 Remote Kit Infrared Transceiver + 0226 PCTV 330e + 0227 PCTV for Mac, HD Stick + 0228 PCTV DVB-T Flash Stick + 0229 PCTV Dual DVB-T 2001e + 022a PCTV 160e + 022b PCTV 71e [Afatech AF9015] + 0232 PCTV 170e + 0236 PCTV 72e [DiBcom DiB7000PC] + 0237 PCTV 73e [DiBcom DiB7000PC] + 023a PCTV 801e + 023b PCTV 801e SE + 023d PCTV 340e + 023e PCTV 340e SE + 0300 Studio Linx Video input cable (NTSC) + 0301 Studio Linx Video input cable (PAL) + 0302 Dazzle DVC120 + 0419 PCTV Bungee USB (PAL) with FM radio + 061d PCTV Deluxe (NTSC) Device + 061e PCTV Deluxe (PAL) Device +2318 Shining Technologies, Inc. [hex] + 0011 CitiDISK Jr. IDE Enclosure +2341 Arduino SA + 0001 Uno (CDC ACM) + 0010 Mega 2560 (CDC ACM) + 003b Serial Adapter (CDC ACM) + 003f Mega ADK (CDC ACM) + 0042 Mega 2560 R3 (CDC ACM) + 0043 Uno R3 (CDC ACM) + 0044 Mega ADK R3 (CDC ACM) + 0045 Serial R3 (CDC ACM) + 8036 Leonardo (CDC ACM, HID) +2357 TP-Link + 0100 TL-WN8200ND [Realtek RTL8192CU] + 0101 RTL8812AU Archer T4U 802.11ac + 0103 Archer T4UH wireless Realtek 8812AU + 0105 Archer T1U 802.11a/n/ac Wireless Adapter [MediaTek MT7610U] + 0107 TL-WN821N Version 5 RTL8192EU + 0108 TL-WN822N Version 4 RTL8192EU + 0109 TL WN823N RTL8192EU + 010c TL-WN722N v2 + 010e TL-WN722N v2 + 0200 MA 180 Zero CD + 0201 HSUPA Modem MA180 +2373 Pumatronix Ltda + 0001 5 MegaPixel Digital Still Camera [DSC5M] +2375 Digit@lway, Inc. + 0001 Digital Audio Player +2406 SANHO Digital Electronics Co., Ltd. + 6688 PD7X Portable Storage +2443 Aessent Technology Ltd + 00dc aes220 FPGA Mini-Module +2478 Tripp-Lite + 2008 U209-000-R Serial Port +248a Maxxter + 8366 Wireless Optical Mouse ACT-MUSW-002 +249c M2Tech s.r.l. +24e1 Paratronic + 3001 Adp-usb + 3005 Radius +2516 Cooler Master Co., Ltd. + 0003 Storm Xornet + 0004 Storm QuickFire Rapid Mechanical Keyboard + 0006 Storm Recon + 0007 Storm Sentinel Advance II + 0009 Storm Quick Fire PRO + 0011 Storm Quick Fire TK + 0017 CM Storm Quick Fire Stealth + 0020 QuickFire Rapid-i Keyboard + 0027 CM Storm Coolermaster Novatouch TKL + 002d Alcor mouse + 0047 MasterKeys Pro L + 9494 Sirus Headset +2548 Pulse-Eight + 1001 CEC Adapter + 1002 CEC Adapter +2632 TwinMOS + 3209 7-in-1 Card Reader +2639 Xsens + 0001 MTi-10 IMU + 0002 MTi-20 VRU + 0003 MTi-30 AHRS + 0011 MTi-100 IMU + 0012 MTi-200 VRU + 0013 MTi-300 AHRS + 0017 MTi-G 7xx GNSS/INS + 0100 Body Pack + 0101 Awinda Station + 0102 Awinda Dongle + 0103 Sync Station + 0200 MTw + d00d Wireless Receiver +2650 Electronics For Imaging, Inc. [hex] +2659 Sundtek + 1101 TNT DVB-T/DAB/DAB+/FM + 1201 FM Transmitter/Receiver + 1202 MediaTV Analog/FM/DVB-T + 1203 MediaTV Analog/FM/DVB-T MiniPCIe + 1204 MediaTV Analog/FM/ATSC + 1205 SkyTV Ultimate V + 1206 MediaTV DVB-T MiniPCIe + 1207 Sundtek HD Capture + 1208 Sundtek SkyTV Ultimate III + 1209 MediaTV Analog/FM/ATSC MiniPCIe + 1210 MediaTV Pro III (EU) + 1211 MediaTV Pro III (US) + 1212 MediaTV Pro III MiniPCIe (EU) + 1213 MediaTV Pro III MiniPCIe (US) +2676 Basler AG + ba02 ace +2730 Citizen + 200f CT-S310 Label printer +2735 DigitalWay + 0003 MPIO HS100 + 1001 MPIO FY200 + 1002 MPIO FL100 + 1003 MPIO FD100 + 1004 MPIO HD200 + 1005 MPIO HD300 + 1006 MPIO FG100 + 1007 MPIO FG130 + 1008 MPIO FY300 + 1009 MPIO FY400 + 100a MPIO FL300 + 100b MPIO HS200 + 100c MPIO FL350 + 100d MPIO FY500 + 100e MPIO FY500 + 100f MPIO FY600 + 1012 MPIO FL400 + 1013 MPIO HD400 + 1014 MPIO HD400 + 1016 MPIO FY700 + 1017 MPIO FY700 + 1018 MPIO FY800 + 1019 MPIO FY800 + 101a MPIO FY900 + 101b MPIO FY900 + 102b MPIO FL500 + 102c MPIO FL500 + 103f MPIO FY570 + 1040 MPIO FY570 + 1041 MPIO FY670 + 1042 MPIO FY670 + 1043 HCT HMD-180A + 1044 HCT HMD-180A +273f Hughski Limited + 1000 ColorHug bootloader + 1001 ColorHug + 1002 ColorHug+ + 1003 ColorHug+ Bootloader + 1004 ColorHug2 + 1005 ColorHug2 bootloader +2770 NHJ, Ltd + 0a01 ScanJet 4600 series + 905c Che-Ez Snap SNAP-U/Digigr8/Soundstar TDC-35 + 9060 A130 + 9120 Che-ez! Snap / iClick Tiny VGA Digital Camera + 9130 TCG 501 + 913c Argus DC-1730 + 9150 Mini Cam + 9153 iClick 5X + 915d Cyberpix S-210S / Little Tikes My Real Digital Camera + 930b CCD Webcam(PC370R) + 930c CCD Webcam(PC370R) +27b8 ThingM + 01ed blink(1) +2821 ASUSTek Computer Inc. + 0161 WL-161 802.11b Wireless Adapter [SiS 162U] + 160f WL-160g 802.11g Wireless Adapter [Envara WiND512] + 3300 WL-140 / Hawking HWU36D 802.11b Wireless Adapter [Intersil PRISM 3] +2899 Toptronic Industrial Co., Ltd + 012c Camera Device +289b Dracal/Raphnet technologies + 0001 Gamecube/N64 controller v2.2 + 0002 2nes2snes + 0003 4nes4snes + 0004 Gamecube/N64 controller v2.3 + 0005 Saturn (Joystick mode) + 0006 Saturn (Mouse mode) + 0007 Famicom controller + 0008 Dreamcast (Joystick mode) + 0009 Dreamcast (Mouse mode) + 000a Dreamcast (Keyboard mode) + 000b Gamecube/N64 controller v2.9 (Keyboard mode) + 000c Gamecube/N64 controller v2.9 (Joystick mode) + 0100 Dual-relay board + 0500 Energy meter + 0502 Precision barometer +28de Valve Software + 1102 Wired Controller + 1142 Wireless Steam Controller + 2000 Lighthouse FPGA RX + 2101 Watchman Dongle +2931 Jolla Oy + 0a01 Jolla Phone MTP + 0a02 Jolla Phone Developer + 0a05 Jolla PC connection + 0afe Jolla charging only +2939 Zaber Technologies Inc. + 4959 A-MCB2 + 495a X-MCB1 + 495b X-MCB2 +2a03 dog hunter AG + 0001 Linino ONE (bootloader) + 0036 Arduino Leonardo (bootloader) + 0037 Arduino Micro (bootloader) + 0038 Arduino Robot Control (bootloader) + 0039 Arduino Robot Motor (bootloader) + 003a Arduino Micro ADK rev3 (bootloader) + 003b Arduino Serial + 003c Arduino Explora (bootloader) + 003d Arduino Due (usb2serial) + 003e Arduino Due + 0041 Arduino Yun (bootloader) + 0042 Arduino Mega 2560 Rev3 + 0043 Arduino Uno Rev3 + 004d Arduino Zero Pro (bootloader) + 8001 Linino ONE (CDC ACM) + 8036 Arduino Leonardo (CDC ACM) + 8037 Arduino Micro (CDC ACM) + 8038 Arduino Robot Control (CDC ACM) + 8039 Arduino Robot Motor (CDC ACM) + 803a Arduino Micro ADK rev3 (CDC ACM) + 803c Arduino Explora (CDC ACM) + 8041 Arduino Yun (CDC ACM) + 804d Arduino Zero Pro (CDC ACM) +2a37 RTD Embedded Technologies, Inc. + 5110 UPS35110/UPS25110 +2a45 Meizu Corp. + 0001 MX Phone (BICR) + 0c02 MX Phone (MTP & ADB) + 0c03 MX Phone (BICR & ADB) + 2008 MX Phone (MTP) + 200a MX Phone (MTP & ACM & ADB) + 200b MX Phone (PTP) + 200c MX Phone (PTP & ADB) + 2012 MX Phone (MTP & ACM) +2b24 KeepKey LLC + 0001 Bitcoin hardware wallet +2c02 Planex Communications + 14ea GW-US11H WLAN +2c1a Dolphin Peripherals + 0000 Wireless Optical Mouse +2c7c Quectel Wireless Solutions Co., Ltd. + 0121 EC21 LTE modem + 0125 EC25 LTE modem + 0191 EG91 LTE modem + 0195 EG95 LTE modem + 0296 BG96 CAT-M1/NB-IoT modem + 0306 EG06/EP06/EM06 LTE-A modem + 0435 AG35 LTE modem +2dcf Dialog Semiconductor + c952 Audio Class 2.0 Devices +2fb2 Fujitsu, Ltd +3016 Boundary Devices, LLC + 0001 Nitrogen Bootloader +3125 Eagletron + 0001 TrackerPod Camera Stand +3136 Navini Networks +3176 Whanam Electronics Co., Ltd +3195 Link Instruments + f190 MSO-19 + f280 MSO-28 + f281 MSO-28 +3275 VidzMedia Pte Ltd + 4fb1 MonsterTV P2H +3333 InLine + 3333 2 port KVM switch model 60652K +3334 AEI + 1701 Fast Ethernet +3340 Yakumo + 043a Mio A701 DigiWalker PPCPhone + 0e3a Pocket PC 300 GPS SL / Typhoon MyGuide 3500 + a0a3 deltaX 5 BT (D) PDA +3344 Leaguer Microelectronics (LME) + 3744 OEM PC Remote +3504 Micro Star + f110 Security Key +3538 Power Quotient International Co., Ltd + 0001 Travel Flash + 0015 Mass Storge Device + 0022 Hi-Speed Mass Storage Device + 0042 Cool Drive U339 Flash Disk + 0054 Flash Drive (2GB) +3579 DIVA + 6901 Media Reader +357d Sharkoon + 7788 QuickPort XT +3636 InVibro +3838 WEM + 0001 5-in-1 Card Reader +3923 National Instruments Corp. + 12c0 DAQPad-6020E + 12d0 DAQPad-6507 + 12e0 NI 4350 + 12f0 NI 5102 + 1750 DAQPad-6508 + 17b0 USB-ISA-Bridge + 1820 DAQPad-6020E (68 pin I/O) + 1830 DAQPad-6020E (BNC) + 1f00 DAQPad-6024E + 1f10 DAQPad-6024E + 1f20 DAQPad-6025E + 1f30 DAQPad-6025E + 1f40 DAQPad-6036E + 1f50 DAQPad-6036E + 2f80 DAQPad-6052E + 2f90 DAQPad-6052E + 702b GPIB-USB-B + 703c USB-485 RS485 Cable + 709b GPIB-USB-HS + 7254 NI MIO (data acquisition card) firmware updater + 729e USB-6251 (OEM) data acquisition card +40bb I-O Data + 0a09 USB2.0-SCSI Bridge USB2-SC +4101 i-rocks + 1301 IR-2510 usb phone +4102 iRiver, Ltd. + 1001 iFP-100 series mp3 player + 1003 iFP-300 series mp3 player + 1005 iFP-500 series mp3 player + 1007 iFP-700 series mp3/ogg vorbis player + 1008 iFP-800 series mp3/ogg vorbis player + 100a iFP-1000 series mp3/ogg vorbis player + 1014 T20 series mp3/ogg vorbis player (ums firmware) + 1019 T30 + 1034 T60 + 1040 M1Player + 1041 E100 (ums) + 1101 iFP-100 series mp3 player (ums firmware) + 1103 iFP-300 series mp3 player (ums firmware) + 1105 iFP-500 series mp3 player (ums firmware) + 1113 T10 (alternate) + 1117 T10 + 1119 T30 series mp3/ogg/wma player + 1141 E100 (mtp) + 2002 H10 6GB + 2101 H10 20GB (mtp) + 2102 H10 5GB (mtp) + 2105 H10 5/6GB (mtp) +413c Dell Computer Corp. + 0000 DRAC 5 Virtual Keyboard and Mouse + 0001 DRAC 5 Virtual Media + 0058 Port Replicator + 1001 Keyboard Hub + 1002 Keyboard Hub + 1003 Keyboard Hub + 1005 Multimedia Pro Keyboard Hub + 2001 Keyboard HID Support + 2002 SK-8125 Keyboard + 2003 Keyboard + 2005 RT7D50 Keyboard + 2010 Keyboard + 2011 Multimedia Pro Keyboard + 2100 SK-3106 Keyboard + 2101 SmartCard Reader Keyboard + 2105 Model L100 Keyboard + 2106 Dell QuietKey Keyboard + 2500 DRAC4 Remote Access Card + 2513 internal USB Hub of E-Port Replicator + 3010 Optical Wheel Mouse + 3012 Optical Wheel Mouse + 3016 Optical 5-Button Wheel Mouse + 3200 Mouse + 4001 Axim X5 + 4002 Axim X3 + 4003 Axim X30 + 4004 Axim Sync + 4005 Axim Sync + 4006 Axim Sync + 4007 Axim Sync + 4008 Axim Sync + 4009 Axim Sync + 4011 Axim X51v + 5103 AIO Printer A940 + 5105 AIO Printer A920 + 5107 AIO Printer A960 + 5109 Photo AIO Printer 922 + 5110 Photo AIO Printer 962 + 5111 Photo AIO Printer 942 + 5112 Photo AIO Printer 924 + 5113 Photo AIO Printer 944 + 5114 Photo AIO Printer 964 + 5115 Photo AIO Printer 926 + 5116 AIO Printer 946 + 5117 Photo AIO Printer 966 + 5118 AIO 810 + 5124 Laser MFP 1815 + 5128 Photo AIO 928 + 5200 Laser Printer + 5202 Printing Support + 5203 Printing Support + 5210 Printing Support + 5211 1110 Laser Printer + 5220 Laser MFP 1600n + 5225 Printing Support + 5226 Printing Support + 5300 Laser Printer + 5400 Laser Printer + 5401 Laser Printer + 5513 WLA3310 Wireless Adapter [Intersil ISL3887] + 5601 Laser Printer 3100cn + 5602 Laser Printer 3000cn + 5631 Laser Printer 5100cn + 5905 Printing Support + 8000 BC02 Bluetooth Adapter + 8010 TrueMobile Bluetooth Module in + 8100 TrueMobile 1180 802.11b Adapter [Intersil PRISM 3] + 8102 TrueMobile 1300 802.11g Wireless Adapter [Intersil ISL3880] + 8103 Wireless 350 Bluetooth + 8104 Wireless 1450 Dual-band (802.11a/b/g) Adapter [Intersil ISL3887] + 8105 U2 in HID - Driver + 8106 Wireless 350 Bluetooth Internal Card in + 8110 Wireless 3xx Bluetooth Internal Card + 8111 Wireless 3xx Bluetooth Internal Card in + 8114 Wireless 5700 Mobile Broadband (CDMA EV-DO) Minicard Modem + 8115 Wireless 5500 Mobile Broadband (3G HSDPA) Minicard Modem + 8116 Wireless 5505 Mobile Broadband (3G HSDPA) Minicard Modem + 8117 Wireless 5700 Mobile Broadband (CDMA EV-DO) Expresscard Modem + 8118 Wireless 5510 Mobile Broadband (3G HSDPA) Expresscard Status Port + 8120 Bluetooth adapter + 8121 Eastfold in HID + 8122 Eastfold in DFU + 8123 eHome Infrared Receiver + 8124 eHome Infrared Receiver + 8126 Wireless 355 Bluetooth + 8127 Wireless 355 Module with Bluetooth 2.0 + EDR Technology. + 8128 Wireless 5700-Sprint Mobile Broadband (CDMA EV-DO) Mini-Card Status Port + 8129 Wireless 5700-Telus Mobile Broadband (CDMA EV-DO) Mini-Card Status Port + 8131 Wireless 360 Bluetooth 2.0 + EDR module. + 8133 Wireless 5720 VZW Mobile Broadband (EVDO Rev-A) Minicard GPS Port + 8134 Wireless 5720 Sprint Mobile Broadband (EVDO Rev-A) Minicard Status Port + 8135 Wireless 5720 TELUS Mobile Broadband (EVDO Rev-A) Minicard Diagnostics Port + 8136 Wireless 5520 Cingular Mobile Broadband (3G HSDPA) Minicard Diagnostics Port + 8137 Wireless 5520 Voda L Mobile Broadband (3G HSDPA) Minicard Status Port + 8138 Wireless 5520 Voda I Mobile Broadband (3G HSDPA) Minicard EAP-SIM Port + 8140 Wireless 360 Bluetooth + 8142 Mobile 360 in DFU + 8147 F3507g Mobile Broadband Module + 8156 Wireless 370 Bluetooth Mini-card + 8157 Integrated Keyboard + 8158 Integrated Touchpad / Trackstick + 8160 Wireless 365 Bluetooth + 8161 Integrated Keyboard + 8162 Integrated Touchpad [Synaptics] + 8171 Gobi Wireless Modem (QDL mode) + 8172 Gobi Wireless Modem + 8183 F3607gw Mobile Broadband Module + 8184 F3607gw v2 Mobile Broadband Module + 8185 Gobi 2000 Wireless Modem (QDL mode) + 8186 Gobi 2000 Wireless Modem + 8187 DW375 Bluetooth Module + 8501 Bluetooth Adapter + 9500 USB CP210x UART Bridge Controller [DW700] + a001 Hub + a005 Internal 2.0 Hub + a700 Hub (in 1905FP LCD Monitor) +4146 USBest Technology + 9281 Iomega Micro Mini 128MB Flash Drive + ba01 Intuix Flash Drive +4168 Targus + 1010 Wireless Compact Laser Mouse +4242 USB Design by Example + 4201 Buttons and Lights HID device + 4220 Echo 1 Camera +4255 GoPro + 1000 9FF2 [Digital Photo Display] + 2000 HD2-14 [Hero 2 Camera] +4317 Broadcom Corp. + 0700 U.S. Robotics USR5426 802.11g Adapter + 0701 U.S. Robotics USR5425 Wireless MAXg Adapter + 0711 Belkin F5D7051 v3000 802.11g + 0720 Dynex DX-BUSB +4348 WinChipHead + 5523 USB->RS 232 adapter with Prolifec PL 2303 chipset + 5537 13.56Mhz RFID Card Reader and Writer + 5584 CH34x printer adapter cable +4572 Shuttle, Inc. + 4572 Shuttle PN31 Remote +4586 Panram + 1026 Crystal Bar Flash Drive +4670 EMS Production + 9394 Game Cube USB Memory Adaptor 64M +4752 Miditech + 0011 Midistart-2 +4757 GW Instek + 2009 PEL-2000 Series Electronic Load (CDC) + 2010 PEL-2000 Series Electronic Load (CDC) +4766 Aceeca + 0001 MEZ1000 RDA +4855 Memorex + 7288 Ultra Traveldrive 160G 2.5" HDD +4971 SimpleTech + cb01 SP-U25/120G + ce17 1TB SimpleDrive II USB External Hard Drive +4d46 Musical Fidelity + 0001 V-Link + 0002 V-DAC II +5032 Grandtec + 0bb8 Grandtec USB1.1 DVB-T (cold) + 0bb9 Grandtec USB1.1 DVB-T (warm) + 0fa0 Grandtec USB1.1 DVB-T (cold) + 0fa1 Grandtec USB1.1 DVB-T (warm) +5041 Linksys (?) + 2234 WUSB54G v1 802.11g Adapter [Intersil ISL3886] + 2235 WUSB54GP v1 802.11g Adapter [Intersil ISL3886] +50c2 Averatec (?) + 4013 WLAN Adapter +5173 Sweex + 1809 ZD1211 +5219 I-Tetra + 1001 Cetus CDC Device +5345 Owon + 1234 PDS6062T Oscilloscope +534c SatoshiLabs + 0001 Bitcoin Wallet [TREZOR] +5354 Meyer Instruments (MIS) + 0017 PAXcam2 +544d Transmeta Corp. +5543 UC-Logic Technology Corp. + 0002 SuperPen WP3325U Tablet + 0003 Tablet WP4030U + 0004 Tablet WP5540U + 0005 Tablet WP8060U + 0041 Genius PenSketch 6x8 Tablet + 0042 Tablet PF1209 + 0064 Aiptek HyperPen 10000U +5555 Epiphan Systems Inc. + 1110 VGA2USB + 1120 KVM2USB + 2222 DVI2USB + 3333 VGA2USB Pro + 3337 KVM2USB Pro + 3340 VGA2USB LR + 3344 KVM2USB LR + 3411 DVI2USB Solo + 3422 DVI2USB Duo +55aa OnSpec Electronic, Inc. + 0015 Hard Drive + 0102 SuperDisk + 0103 IDE Hard Drive + 0201 DDI to Reader-19 + 1234 ATAPI Bridge + a103 Sandisk SDDR-55 SmartMedia Card Reader + b000 USB to CompactFlash Card Reader + b004 OnSpec MMC/SD Reader/Writer + b00b USB to Memory Stick Card Reader + b00c USB to SmartMedia Card Reader + b012 Mitsumi FA402M 8-in-2 Card Reader + b200 Compact Flash Reader + b204 MMC/ SD Reader + b207 Memory Stick Reader +5654 Gotview + ca42 MasterHD 3 +5656 Uni-Trend Group Limited + 0832 UT2000/UT3000 Digital Storage Oscilloscope +595a IRTOUCHSYSTEMS Co. Ltd. + 0001 Touchscreen +5986 Acer, Inc + 0100 Orbicam + 0101 USB2.0 Camera + 0102 Crystal Eye Webcam + 01a6 Lenovo Integrated Webcam + 01a7 Lenovo Integrated Webcam + 01a9 Lenovo Integrated Webcam + 0200 OrbiCam + 0203 BisonCam NB Pro 1300 + 0241 BisonCam, NB Pro + 02d0 Lenovo Integrated Webcam [R5U877] + 03d0 Lenovo Integrated Webcam [R5U877] +59e3 Nonolith Labs +5a57 Zinwell + 0260 RT2570 + 0280 802.11a/b/g/n USB Wireless LAN Card + 0282 802.11b/g/n USB Wireless LAN Card + 0283 802.11b/g/n USB Wireless LAN Card + 0284 802.11a/b/g/n USB Wireless LAN Card + 0290 ZW-N290 802.11n [Realtek RTL8192SU] + 5257 Metronic 495257 wifi 802.11ng +6000 Beholder International Ltd. + dec0 TV Wander + dec1 TV Voyage +601a Ingenic Semiconductor Ltd. + 4740 XBurst Jz4740 boot mode +6189 Sitecom + 182d USB 2.0 Ethernet + 2068 USB to serial cable (v2) +6244 LightingSoft AG + 0101 Intelligent Usb Dmx Interface SIUDI5A + 0201 Intelligent Usb Dmx Interface SIUDI5C + 0300 Intelligent Usb Dmx Interface SIUDI6 Firmware download + 0301 Intelligent Usb Dmx Interface SIUDI6C + 0302 Intelligent Usb Dmx Interface SIUDI6A + 0303 Intelligent Usb Dmx Interface SIUDI6D + 0400 Touch Sensitive Intelligent Control Keypad STICK1A + 0401 Touch Sensitive Intelligent Control Keypad STICK1A + 0410 Intelligent Usb Dmx Interface SIUDI7 Firmware Download + 0411 Intelligent Usb Dmx Interface SIUDI7A + 0420 Intelligent Usb Dmx Interface SIUDI8A Firmware Download + 0421 Intelligent Usb Dmx Interface SIUDI8A + 0430 Intelligent Usb Dmx Interface SIUDI8C Firmware Download + 0431 Intelligent Usb Dmx Interface SIUDI8C + 0440 Intelligent Usb Dmx Interface SIUDI9A Firmware Download + 0441 Intelligent Usb Dmx Interface SIUDI9A + 0450 Intelligent Usb Dmx Interface SIUDI9C Firmware Download + 0451 Intelligent Usb Dmx Interface SIUDI9C + 0460 Touch Sensitive Intelligent Control Keypad STICK2 Firmware download + 0461 Touch Sensitive Intelligent Control Keypad STICK2 + 0470 Touch Sensitive Intelligent Control Keypad STICK1B Firmware download + 0471 Touch Sensitive Intelligent Control Keypad STICK1B + 0480 Touch Sensitive Intelligent Control Keypad STICK3 Firmware download + 0481 Touch Sensitive Intelligent Control Keypad STICK3 + 0490 Intelligent Usb Dmx Interface SIUDI9D Firmware Download + 0491 Intelligent Usb Dmx Interface SIUDI9D + 0500 Touch Sensitive Intelligent Control Keypad STICK2B Firmware download + 0501 Touch Sensitive Intelligent Control Keypad STICK2B +6253 TwinHan Technology Co., Ltd + 0100 Ir reciver f. remote control +636c CoreLogic, Inc. +6472 Unknown (Sony?) + 01c8 PlayStation Portable [Mass Storage] +6547 Arkmicro Technologies Inc. + 0232 ARK3116 Serial +6615 IRTOUCHSYSTEMS Co. Ltd. + 0001 Touchscreen +6666 Prototype product Vendor ID + 0667 WiseGroup Smart Joy PSX, PS-PC Smart JoyPad + 2667 JCOP BlueZ Smartcard reader + 8802 SmartJoy Dual Plus PS2 converter + 8804 WiseGroup SuperJoy Box 5 +6677 WiseGroup, Ltd. + 8802 SmartJoy Dual Plus PS2 converter + 8811 Deluxe Dance Mat +6891 3Com + a727 3CRUSB10075 802.11bg [ZyDAS ZD1211] +695c Opera1 + 3829 Opera1 DVB-S (warm state) +6993 Yealink Network Technology Co., Ltd. + b001 VoIP Phone +6a75 Shanghai Jujo Electronics Co., Ltd +7104 CME (Central Music Co.) + 2202 UF5/UF6/UF7/UF8 MIDI Master Keyboard +726c StackFoundry LLC + 2149 EntropyKing Random Number Generator +734c TBS Technologies China + 5920 Q-Box II DVB-S2 HD + 5928 Q-Box II DVB-S2 HD +7373 Beijing STONE Technology Co. Ltd. + 5740 Intelligent TFT-LCD Module +7392 Edimax Technology Co., Ltd + 7711 EW-7711UTn nLite Wireless Adapter [Ralink RT2870] + 7717 EW-7717UN 802.11n Wireless Adapter [Ralink RT2870] + 7718 EW-7718UN 802.11n Wireless Adapter [Ralink RT2870] + 7722 EW-7722UTn 802.11n Wireless Adapter [Ralink RT307x] + 7811 EW-7811Un 802.11n Wireless Adapter [Realtek RTL8188CUS] +8086 Intel Corp. + 0001 AnyPoint (TM) Home Network 1.6 Mbps Wireless Adapter + 0044 CPU DRAM Controller + 0046 HD Graphics + 0100 Personal Audio Player 3000 + 0101 Personal Audio Player 3000 + 0110 Easy PC Camera + 0120 PC Camera CS120 + 0180 WiMAX Connection 2400m + 0181 WiMAX Connection 2400m + 0182 WiMAX Connection 2400m + 0186 WiMAX Connection 2400m + 0188 WiMAX Connection 2400m + 0200 AnyPoint(TM) Wireless II Network 11Mbps Adapter [Atmel AT76C503A] + 0431 Intel Pro Video PC Camera + 0510 Digital Movie Creator + 0630 Pocket PC Camera + 0780 CS780 Microphone Input + 07d3 BLOB boot loader firmware + 0dad Cherry MiniatureCard Keyboard + 1010 AnyPoint(TM) Home Network 10 Mbps Phoneline Adapter + 110a Bluetooth Controller from (Ericsson P4A) + 110b Bluetooth Controller from (Intel/CSR) + 1110 PRO/Wireless LAN Module + 1111 PRO/Wireless 2011B 802.11b Adapter [Intersil PRISM 2.5] + 1134 Hollister Mobile Monitor + 1139 In-Target Probe (ITP) + 1234 Prototype Reader/Writer + 1403 WiMAX Connection 2400m + 1405 WiMAX Connection 2400m + 1406 WiMAX Connection 2400m + 2448 82801 PCI Bridge + 3100 PRO/DSL 3220 Modem - WAN + 3101 PRO/DSL 3220 Modem + 3240 AnyPoint® 3240 Modem - WAN + 3241 AnyPoint® 3240 Modem + 8602 Miniature Card Slot + 9303 Intel 8x930Hx Hub + 9500 CE 9500 DVB-T + 9890 82930 Test Board + beef SCM Miniature Card Reader/Writer + c013 Wireless HID Station + f001 XScale PXA27x Bulverde flash + f1a5 Z-U130 [Value Solid State Drive] +8087 Intel Corp. + 0020 Integrated Rate Matching Hub + 0024 Integrated Rate Matching Hub +80ee VirtualBox + 0021 USB Tablet +8282 Keio + 3201 Retro Adapter + 3301 Retro Adapter Mouse +8341 EGO Systems, Inc. + 2000 Flashdisk +8564 Transcend Information, Inc. + 1000 JetFlash + 4000 RDF8 +8644 Intenso GmbG + 8003 Micro Line + 800b Micro Line (4GB) +8e06 CH Products, Inc. + f700 DT225 Trackball +9016 Sitecom + 182d WL-022 802.11b Adapter +9022 TeVii Technology Ltd. + d630 DVB-S S630 + d650 DVB-S2 S650 + d660 DVB-S2 S660 +9148 GeoLab, Ltd +# All of GeoLab's devices share the same ID 0004. + 0004 R3 Compatible Device +9710 MosChip Semiconductor + 7703 MCS7703 Serial Port Adapter + 7705 MCS7705 Parallel port adapter + 7715 MCS7715 Parallel and serial port adapter + 7717 MCS7717 3-port hub with serial and parallel adapter + 7720 MCS7720 Dual serial port adapter + 7730 MCS7730 10/100 Mbps Ethernet adapter + 7780 MCS7780 4Mbps Fast IrDA Adapter + 7830 MCS7830 10/100 Mbps Ethernet adapter + 7832 MCS7832 10/100 Mbps Ethernet adapter + 7840 MCS7820/MCS7840 2/4 port serial adapter +9849 Bestmedia CD Recordable GmbH & Co. KG + 0701 Platinum MyDrive HP +9999 Odeon + 0001 JAF Mobile Phone Flasher Interface +99fa Grandtec + 8988 V.cap Camera Device +9ac4 J. Westhues + 4b8f ProxMark-3 RFID Instrument +9e88 Marvell Semiconductor, Inc. + 9e8f Plug Computer Basic [SheevaPlug] +a128 AnMo Electronics Corp. / Dino-Lite (?) + 0610 Dino-Lite Digital Microscope (SN9C201 + HV7131R) + 0611 Dino-Lite Digital Microscope (SN9C201 + HV7131R) + 0612 Dino-Lite Digital Microscope (SN9C120 + HV7131R) + 0613 Dino-Lite Digital Microscope (SN9C201 + HV7131R) + 0614 Dino-Lite Digital Microscope (SN9C201 + MI1310/MT9M111) + 0615 Dino-Lite Digital Microscope (SN9C201 + MI1310/MT9M111) + 0616 Dino-Lite Digital Microscope (SN9C120 + HV7131R) + 0617 Dino-Lite Digital Microscope (SN9C201 + MI1310/MT9M111) + 0618 Dino-Lite Digital Microscope (SN9C201 + HV7131R) +a168 AnMo Electronics Corporation + 0610 Dino-Lite Digital Microscope + 0611 Dino-Lite Digital Microscope + 0613 Dino-Lite Digital Microscope + 0614 Dino-Lite Pro Digital Microscope + 0615 Dino-Lite Pro Digital Microscope + 0617 Dino-Lite Pro Digital Microscope + 0618 Dino-Lite Digital Microscope +a600 Asix + e110 OK1ZIA Davac 4.x +a727 3Com + 6893 3CRUSB20075 OfficeConnect Wireless 108Mbps 11g Adapter [Atheros AR5523] + 6895 AR5523 + 6897 AR5523 +aaaa MXT + 8815 microSD CardReader +abcd Unknown + cdee Petcam +b58e Blue Microphones + 9e84 Yeti Stereo Microphone +c216 Card Device Expert Co., LTD + 0180 MSR90 MagStripe reader +c251 Keil Software, Inc. + 2710 ULink +cace CACE Technologies Inc. + 0002 AirPCAP Classic 802.11 packet capture adapter + 0300 AirPcap NX [Atheros AR9001U-(2)NG] +cd12 SMART TECHNOLOGY INDUSTRIAL LTD. +d208 Ultimarc + 0310 Mini-PAC Arcade Control Interface +d209 Ultimarc + 0301 I-PAC Arcade Control Interface + 0501 Ultra-Stik Ultimarc Ultra-Stik Player 1 +d904 LogiLink + 0003 Laser Mouse (ID0009A) +e4e4 Xorcom Ltd. + 1130 Astribank series + 1131 Astribank series + 1132 Astribank series + 1140 Astribank series + 1141 Astribank series + 1142 Astribank series + 1150 Astribank series + 1151 Astribank series + 1152 Astribank series + 1160 Astribank 2 series + 1161 Astribank 2 series + 1162 Astribank 2 series +eb03 MakingThings + 0920 Make Controller Kit +eb1a eMPIA Technology, Inc. + 17de KWorld V-Stream XPERT DTV - DVB-T USB cold + 17df KWorld V-Stream XPERT DTV - DVB-T USB warm + 2571 M035 Compact Web Cam + 2710 SilverCrest Webcam + 2750 ECS Elitegroup G220 integrated Webcam + 2761 EeePC 701 integrated Webcam + 2776 Combined audio and video input device + 2800 Terratec Cinergy 200 + 2801 GrabBeeX+ Video Encoder + 2863 Video Grabber + 2870 Pinnacle PCTV Stick + 2881 EM2881 Video Controller + 50a3 Gadmei UTV380 TV Box + 50a6 Gadmei UTV330 TV Box + e355 KWorld DVB-T 355U Digital TV Dongle +eb2a KWorld +ef18 SMART TECHNOLOGY INDUSTRIAL LTD. +f003 Hewlett Packard + 6002 PhotoSmart C500 +f182 Leap Motion + 0003 Controller +f4ec Atten Electronics / Siglent Technologies + ee38 Digital Storage Oscilloscope +f4ed Shenzhen Siglent Co., Ltd. + ee37 SDG1010 Waveform Generator + ee3a SDG1010 Waveform Generator (TMC mode) +f766 Hama + 0001 PC-Gamepad "Greystorm" +fc08 Conrad Electronic SE + 0101 MIDI Cable UA0037 +ffee FNK Tech + 0100 Card Reader Controller RTS5101/RTS5111/RTS5116 + +# List of known device classes, subclasses and protocols + +# Syntax: +# C class class_name +# subclass subclass_name <-- single tab +# protocol protocol_name <-- two tabs + +C 00 (Defined at Interface level) +C 01 Audio + 01 Control Device + 02 Streaming + 03 MIDI Streaming +C 02 Communications + 01 Direct Line + 02 Abstract (modem) + 00 None + 01 AT-commands (v.25ter) + 02 AT-commands (PCCA101) + 03 AT-commands (PCCA101 + wakeup) + 04 AT-commands (GSM) + 05 AT-commands (3G) + 06 AT-commands (CDMA) + fe Defined by command set descriptor + ff Vendor Specific (MSFT RNDIS?) + 03 Telephone + 04 Multi-Channel + 05 CAPI Control + 06 Ethernet Networking + 07 ATM Networking + 08 Wireless Handset Control + 09 Device Management + 0a Mobile Direct Line + 0b OBEX + 0c Ethernet Emulation + 07 Ethernet Emulation (EEM) +C 03 Human Interface Device + 00 No Subclass + 00 None + 01 Keyboard + 02 Mouse + 01 Boot Interface Subclass + 00 None + 01 Keyboard + 02 Mouse +C 05 Physical Interface Device +C 06 Imaging + 01 Still Image Capture + 01 Picture Transfer Protocol (PIMA 15470) +C 07 Printer + 01 Printer + 00 Reserved/Undefined + 01 Unidirectional + 02 Bidirectional + 03 IEEE 1284.4 compatible bidirectional + ff Vendor Specific +C 08 Mass Storage + 01 RBC (typically Flash) + 00 Control/Bulk/Interrupt + 01 Control/Bulk + 50 Bulk-Only + 02 SFF-8020i, MMC-2 (ATAPI) + 03 QIC-157 + 04 Floppy (UFI) + 00 Control/Bulk/Interrupt + 01 Control/Bulk + 50 Bulk-Only + 05 SFF-8070i + 06 SCSI + 00 Control/Bulk/Interrupt + 01 Control/Bulk + 50 Bulk-Only +C 09 Hub + 00 Unused + 00 Full speed (or root) hub + 01 Single TT + 02 TT per port +C 0a CDC Data + 00 Unused + 30 I.430 ISDN BRI + 31 HDLC + 32 Transparent + 50 Q.921M + 51 Q.921 + 52 Q.921TM + 90 V.42bis + 91 Q.932 EuroISDN + 92 V.120 V.24 rate ISDN + 93 CAPI 2.0 + fd Host Based Driver + fe CDC PUF + ff Vendor specific +C 0b Chip/SmartCard +C 0d Content Security +C 0e Video + 00 Undefined + 01 Video Control + 02 Video Streaming + 03 Video Interface Collection +C 58 Xbox + 42 Controller +C dc Diagnostic + 01 Reprogrammable Diagnostics + 01 USB2 Compliance +C e0 Wireless + 01 Radio Frequency + 01 Bluetooth + 02 Ultra WideBand Radio Control + 03 RNDIS + 02 Wireless USB Wire Adapter + 01 Host Wire Adapter Control/Data Streaming + 02 Device Wire Adapter Control/Data Streaming + 03 Device Wire Adapter Isochronous Streaming +C ef Miscellaneous Device + 01 ? + 01 Microsoft ActiveSync + 02 Palm Sync + 02 ? + 01 Interface Association + 02 Wire Adapter Multifunction Peripheral + 03 ? + 01 Cable Based Association + 05 USB3 Vision +C fe Application Specific Interface + 01 Device Firmware Update + 02 IRDA Bridge + 03 Test and Measurement + 01 TMC + 02 USB488 +C ff Vendor Specific Class + ff Vendor Specific Subclass + ff Vendor Specific Protocol + +# List of Audio Class Terminal Types + +# Syntax: +# AT terminal_type terminal_type_name + +AT 0100 USB Undefined +AT 0101 USB Streaming +AT 01ff USB Vendor Specific +AT 0200 Input Undefined +AT 0201 Microphone +AT 0202 Desktop Microphone +AT 0203 Personal Microphone +AT 0204 Omni-directional Microphone +AT 0205 Microphone Array +AT 0206 Processing Microphone Array +AT 0300 Output Undefined +AT 0301 Speaker +AT 0302 Headphones +AT 0303 Head Mounted Display Audio +AT 0304 Desktop Speaker +AT 0305 Room Speaker +AT 0306 Communication Speaker +AT 0307 Low Frequency Effects Speaker +AT 0400 Bidirectional Undefined +AT 0401 Handset +AT 0402 Headset +AT 0403 Speakerphone, no echo reduction +AT 0404 Echo-suppressing speakerphone +AT 0405 Echo-canceling speakerphone +AT 0500 Telephony Undefined +AT 0501 Phone line +AT 0502 Telephone +AT 0503 Down Line Phone +AT 0600 External Undefined +AT 0601 Analog Connector +AT 0602 Digital Audio Interface +AT 0603 Line Connector +AT 0604 Legacy Audio Connector +AT 0605 SPDIF interface +AT 0606 1394 DA stream +AT 0607 1394 DV stream soundtrack +AT 0700 Embedded Undefined +AT 0701 Level Calibration Noise Source +AT 0702 Equalization Noise +AT 0703 CD Player +AT 0704 DAT +AT 0705 DCC +AT 0706 MiniDisc +AT 0707 Analog Tape +AT 0708 Phonograph +AT 0709 VCR Audio +AT 070a Video Disc Audio +AT 070b DVD Audio +AT 070c TV Tuner Audio +AT 070d Satellite Receiver Audio +AT 070e Cable Tuner Audio +AT 070f DSS Audio +AT 0710 Radio Receiver +AT 0711 Radio Transmitter +AT 0712 Multitrack Recorder +AT 0713 Synthesizer + +# List of HID Descriptor Types + +# Syntax: +# HID descriptor_type descriptor_type_name + +HID 21 HID +HID 22 Report +HID 23 Physical + +# List of HID Descriptor Item Types +# Note: 2 bits LSB encode data length following + +# Syntax: +# R item_type item_type_name + +R 04 Usage Page +R 08 Usage +R 14 Logical Minimum +R 18 Usage Minimum +R 24 Logical Maximum +R 28 Usage Maximum +R 34 Physical Minimum +R 38 Designator Index +R 44 Physical Maximum +R 48 Designator Minimum +R 54 Unit Exponent +R 58 Designator Maximum +R 64 Unit +R 74 Report Size +R 78 String Index +R 80 Input +R 84 Report ID +R 88 String Minimum +R 90 Output +R 94 Report Count +R 98 String Maximum +R a0 Collection +R a4 Push +R a8 Delimiter +R b0 Feature +R b4 Pop +R c0 End Collection + +# List of Physical Descriptor Bias Types + +# Syntax: +# BIAS item_type item_type_name + +BIAS 0 Not Applicable +BIAS 1 Right Hand +BIAS 2 Left Hand +BIAS 3 Both Hands +BIAS 4 Either Hand + +# List of Physical Descriptor Item Types + +# Syntax: +# PHY item_type item_type_name + +PHY 00 None +PHY 01 Hand +PHY 02 Eyeball +PHY 03 Eyebrow +PHY 04 Eyelid +PHY 05 Ear +PHY 06 Nose +PHY 07 Mouth +PHY 08 Upper Lip +PHY 09 Lower Lip +PHY 0a Jaw +PHY 0b Neck +PHY 0c Upper Arm +PHY 0d Elbow +PHY 0e Forearm +PHY 0f Wrist +PHY 10 Palm +PHY 11 Thumb +PHY 12 Index Finger +PHY 13 Middle Finger +PHY 14 Ring Finger +PHY 15 Little Finger +PHY 16 Head +PHY 17 Shoulder +PHY 18 Hip +PHY 19 Waist +PHY 1a Thigh +PHY 1b Knee +PHY 1c calf +PHY 1d Ankle +PHY 1e Foot +PHY 1f Heel +PHY 20 Ball of Foot +PHY 21 Big Toe +PHY 22 Second Toe +PHY 23 Third Toe +PHY 24 Fourth Toe +PHY 25 Fifth Toe +PHY 26 Brow +PHY 27 Cheek + +# List of HID Usages + +# Syntax: +# HUT hi _usage_page hid_usage_page_name +# hid_usage hid_usage_name + +HUT 00 Undefined +HUT 01 Generic Desktop Controls + 000 Undefined + 001 Pointer + 002 Mouse + 004 Joystick + 005 Gamepad + 006 Keyboard + 007 Keypad + 008 Multi-Axis Controller + 030 Direction-X + 031 Direction-Y + 032 Direction-Z + 033 Rotate-X + 034 Rotate-Y + 035 Rotate-Z + 036 Slider + 037 Dial + 038 Wheel + 039 Hat Switch + 03a Counted Buffer + 03b Byte Count + 03c Motion Wakeup + 03d Start + 03e Select + 040 Vector-X + 041 Vector-Y + 042 Vector-Z + 043 Vector-X relative Body + 044 Vector-Y relative Body + 045 Vector-Z relative Body + 046 Vector + 080 System Control + 081 System Power Down + 082 System Sleep + 083 System Wake Up + 084 System Context Menu + 085 System Main Menu + 086 System App Menu + 087 System Menu Help + 088 System Menu Exit + 089 System Menu Select + 08a System Menu Right + 08b System Menu Left + 08c System Menu Up + 08d System Menu Down + 090 Direction Pad Up + 091 Direction Pad Down + 092 Direction Pad Right + 093 Direction Pad Left +HUT 02 Simulation Controls + 000 Undefined + 001 Flight Simulation Device + 002 Automobile Simulation Device + 003 Tank Simulation Device + 004 Spaceship Simulation Device + 005 Submarine Simulation Device + 006 Sailing Simulation Device + 007 Motorcycle Simulation Device + 008 Sports Simulation Device + 009 Airplane Simualtion Device + 00a Helicopter Simulation Device + 00b Magic Carpet Simulation Device + 00c Bicycle Simulation Device + 020 Flight Control Stick + 021 Flight Stick + 022 Cyclic Control + 023 Cyclic Trim + 024 Flight Yoke + 025 Track Control + 0b0 Aileron + 0b1 Aileron Trim + 0b2 Anti-Torque Control + 0b3 Autopilot Enable + 0b4 Chaff Release + 0b5 Collective Control + 0b6 Dive Break + 0b7 Electronic Countermeasures + 0b8 Elevator + 0b9 Elevator Trim + 0ba Rudder + 0bb Throttle + 0bc Flight COmmunications + 0bd Flare Release + 0be Landing Gear + 0bf Toe Break + 0c0 Trigger + 0c1 Weapon Arm + 0c2 Weapons Select + 0c3 Wing Flaps + 0c4 Accelerator + 0c5 Brake + 0c6 Clutch + 0c7 Shifter + 0c8 Steering + 0c9 Turret Direction + 0ca Barrel Elevation + 0cb Drive Plane + 0cc Ballast + 0cd Bicylce Crank + 0ce Handle Bars + 0cf Front Brake + 0d0 Rear Brake +HUT 03 VR Controls + 000 Unidentified + 001 Belt + 002 Body Suit + 003 Flexor + 004 Glove + 005 Head Tracker + 006 Head Mounted Display + 007 Hand Tracker + 008 Oculometer + 009 Vest + 00a Animatronic Device + 020 Stereo Enable + 021 Display Enable +HUT 04 Sport Controls + 000 Unidentified + 001 Baseball Bat + 002 Golf Club + 003 Rowing Machine + 004 Treadmill + 030 Oar + 031 Slope + 032 Rate + 033 Stick Speed + 034 Stick Face Angle + 035 Stick Heel/Toe + 036 Stick Follow Through + 038 Stick Type + 039 Stick Height + 047 Stick Temp + 050 Putter + 051 1 Iron + 052 2 Iron + 053 3 Iron + 054 4 Iron + 055 5 Iron + 056 6 Iron + 057 7 Iron + 058 8 Iron + 059 9 Iron + 05a 10 Iron + 05b 11 Iron + 05c Sand Wedge + 05d Loft Wedge + 05e Power Wedge + 05f 1 Wood + 060 3 Wood + 061 5 Wood + 062 7 Wood + 063 9 Wood +HUT 05 Game Controls + 000 Undefined + 001 3D Game Controller + 002 Pinball Device + 003 Gun Device + 020 Point Of View + 021 Turn Right/Left + 022 Pitch Right/Left + 023 Roll Forward/Backward + 024 Move Right/Left + 025 Move Forward/Backward + 026 Move Up/Down + 027 Lean Right/Left + 028 Lean Forward/Backward + 029 Height of POV + 02a Flipper + 02b Secondary Flipper + 02c Bump + 02d New Game + 02e Shoot Ball + 02f Player + 030 Gun Bolt + 031 Gun Clip + 032 Gun Selector + 033 Gun Single Shot + 034 Gun Burst + 035 Gun Automatic + 036 Gun Safety + 037 Gamepad Fire/Jump + 038 Gamepad Fun + 039 Gamepad Trigger +HUT 07 Keyboard + 000 No Event + 001 Keyboard ErrorRollOver + 002 Keyboard POSTfail + 003 Keyboard Error Undefined + 004 A + 005 B + 006 C + 007 D + 008 E + 009 F + 00a G + 00b H + 00c I + 00d J + 00e K + 00f L + 010 M + 011 N + 012 O + 013 P + 014 Q + 015 R + 016 S + 017 T + 018 U + 019 V + 01a W + 01b X + 01c Y + 01d Z + 01e 1 and ! (One and Exclamation) + 01f 2 and @ (2 and at) + 020 3 and # (3 and Hash) + 021 4 and $ (4 and Dollar Sign) + 022 5 and % (5 and Percent Sign) + 023 6 and ^ (6 and circumflex) + 024 7 and & (Seven and Ampersand) + 025 8 and * (Eight and asterisk) + 026 9 and ( (Nine and Parenthesis Left) + 027 0 and ) (Zero and Parenthesis Right) + 028 Return (Enter) + 029 Escape + 02a Delete (Backspace) + 02b Tab + 02c Space Bar + 02d - and _ (Minus and underscore) + 02e = and + (Equal and Plus) + 02f [ and { (Bracket and Braces Left) + 030 ] and } (Bracket and Braces Right) + 031 \ and | (Backslash and Bar) + 032 # and ~ (Hash and Tilde, Non-US Keyboard near right shift) + 033 ; and : (Semicolon and Colon) + 034 and " (Accent Acute and Double Quotes) + 035 ` and ~ (Accent Grace and Tilde) + 036 , and < (Comma and Less) + 037 . and > (Period and Greater) + 038 / and ? (Slash and Question Mark) + 039 Caps Lock + 03a F1 + 03b F2 + 03c F3 + 03d F4 + 03e F5 + 03f F6 + 040 F7 + 041 F8 + 042 F9 + 043 F10 + 044 F11 + 045 F12 + 046 Print Screen + 047 Scroll Lock + 048 Pause + 049 Insert + 04a Home + 04b Page Up + 04c Delete Forward (without Changing Position) + 04d End + 04e Page Down + 04f Right Arrow + 050 Left Arrow + 051 Down Arrow + 052 Up Arrow + 053 Num Lock and Clear + 054 Keypad / (Division Sign) + 055 Keypad * (Multiplication Sign) + 056 Keypad - (Subtraction Sign) + 057 Keypad + (Addition Sign) + 058 Keypad Enter + 059 Keypad 1 and END + 05a Keypad 2 and Down Arrow + 05b Keypad 3 and Page Down + 05c Keypad 4 and Left Arrow + 05d Keypad 5 (Tactilei Raised) + 05f Keypad 6 and Right Arrow + 060 Keypad 7 and Home + 061 Keypad 8 and Up Arrow + 062 Keypad 8 and Page Up + 063 Keypad . (decimal delimiter) and Delete + 064 \ and | (Backslash and Bar, UK and Non-US Keyboard near left shift) + 065 Keyboard Application (Windows Key for Win95 or Compose) + 066 Power (not a key) + 067 Keypad = (Equal Sign) + 068 F13 + 069 F14 + 06a F15 + 06b F16 + 06c F17 + 06d F18 + 06e F19 + 06f F20 + 070 F21 + 071 F22 + 072 F23 + 073 F24 + 074 Execute + 075 Help + 076 Menu + 077 Select + 078 Stop + 079 Again + 07a Undo + 07b Cut + 07c Copy + 07d Paste + 07e Find + 07f Mute + 080 Volume Up + 081 Volume Down + 082 Locking Caps Lock + 083 Locking Num Lock + 084 Locking Scroll Lock + 085 Keypad Comma + 086 Keypad Equal Sign (AS/400) + 087 International 1 (PC98) + 088 International 2 (PC98) + 089 International 3 (PC98) + 08a International 4 (PC98) + 08b International 5 (PC98) + 08c International 6 (PC98) + 08d International 7 (Toggle Single/Double Byte Mode) + 08e International 8 + 08f International 9 + 090 LANG 1 (Hangul/English Toggle, Korea) + 091 LANG 2 (Hanja Conversion, Korea) + 092 LANG 3 (Katakana, Japan) + 093 LANG 4 (Hiragana, Japan) + 094 LANG 5 (Zenkaku/Hankaku, Japan) + 095 LANG 6 + 096 LANG 7 + 097 LANG 8 + 098 LANG 9 + 099 Alternate Erase + 09a SysReq/Attention + 09b Cancel + 09c Clear + 09d Prior + 09e Return + 09f Separator + 0a0 Out + 0a1 Open + 0a2 Clear/Again + 0a3 CrSel/Props + 0a4 ExSel + 0e0 Control Left + 0e1 Shift Left + 0e2 Alt Left + 0e3 GUI Left + 0e4 Control Right + 0e5 Shift Right + 0e6 Alt Rigth + 0e7 GUI Right +HUT 08 LEDs + 000 Undefined + 001 NumLock + 002 CapsLock + 003 Scroll Lock + 004 Compose + 005 Kana + 006 Power + 007 Shift + 008 Do not disturb + 009 Mute + 00a Tone Enabke + 00b High Cut Filter + 00c Low Cut Filter + 00d Equalizer Enable + 00e Sound Field ON + 00f Surround On + 010 Repeat + 011 Stereo + 012 Sampling Rate Detect + 013 Spinning + 014 CAV + 015 CLV + 016 Recording Format Detect + 017 Off-Hook + 018 Ring + 019 Message Waiting + 01a Data Mode + 01b Battery Operation + 01c Battery OK + 01d Battery Low + 01e Speaker + 01f Head Set + 020 Hold + 021 Microphone + 022 Coverage + 023 Night Mode + 024 Send Calls + 025 Call Pickup + 026 Conference + 027 Stand-by + 028 Camera On + 029 Camera Off + 02a On-Line + 02b Off-Line + 02c Busy + 02d Ready + 02e Paper-Out + 02f Paper-Jam + 030 Remote + 031 Forward + 032 Reverse + 033 Stop + 034 Rewind + 035 Fast Forward + 036 Play + 037 Pause + 038 Record + 039 Error + 03a Usage Selected Indicator + 03b Usage In Use Indicator + 03c Usage Multi Indicator + 03d Indicator On + 03e Indicator Flash + 03f Indicator Slow Blink + 040 Indicator Fast Blink + 041 Indicator Off + 042 Flash On Time + 043 Slow Blink On Time + 044 Slow Blink Off Time + 045 Fast Blink On Time + 046 Fast Blink Off Time + 047 Usage Color Indicator + 048 Indicator Red + 049 Indicator Green + 04a Indicator Amber + 04b Generic Indicator + 04c System Suspend + 04d External Power Connected +HUT 09 Buttons + 000 No Button Pressed + 001 Button 1 (Primary) + 002 Button 2 (Secondary) + 003 Button 3 (Tertiary) + 004 Button 4 + 005 Button 5 +HUT 0a Ordinal + 001 Instance 1 + 002 Instance 2 + 003 Instance 3 +HUT 0b Telephony + 000 Unassigned + 001 Phone + 002 Answering Machine + 003 Message Controls + 004 Handset + 005 Headset + 006 Telephony Key Pad + 007 Programmable Button + 020 Hook Switch + 021 Flash + 022 Feature + 023 Hold + 024 Redial + 025 Transfer + 026 Drop + 027 Park + 028 Forward Calls + 029 Alternate Function + 02a Line + 02b Speaker Phone + 02c Conference + 02d Ring Enable + 02e Ring Select + 02f Phone Mute + 030 Caller ID + 050 Speed Dial + 051 Store Number + 052 Recall Number + 053 Phone Directory + 070 Voice Mail + 071 Screen Calls + 072 Do Not Disturb + 073 Message + 074 Answer On/Offf + 090 Inside Dial Tone + 091 Outside Dial Tone + 092 Inside Ring Tone + 093 Outside Ring Tone + 094 Priority Ring Tone + 095 Inside Ringback + 096 Priority Ringback + 097 Line Busy Tone + 098 Recorder Tone + 099 Call Waiting Tone + 09a Confirmation Tone 1 + 09b Confirmation Tone 2 + 09c Tones Off + 09d Outside Ringback + 0b0 Key 1 + 0b1 Key 2 + 0b3 Key 3 + 0b4 Key 4 + 0b5 Key 5 + 0b6 Key 6 + 0b7 Key 7 + 0b8 Key 8 + 0b9 Key 9 + 0ba Key Star + 0bb Key Pound + 0bc Key A + 0bd Key B + 0be Key C + 0bf Key D +HUT 0c Consumer + 000 Unassigned + 001 Consumer Control + 002 Numeric Key Pad + 003 Programmable Buttons + 020 +10 + 021 +100 + 022 AM/PM + 030 Power + 031 Reset + 032 Sleep + 033 Sleep After + 034 Sleep Mode + 035 Illumination + 036 Function Buttons + 040 Menu + 041 Menu Pick + 042 Menu Up + 043 Menu Down + 044 Menu Left + 045 Menu Right + 046 Menu Escape + 047 Menu Value Increase + 048 Menu Value Decrease + 060 Data on Screen + 061 Closed Caption + 062 Closed Caption Select + 063 VCR/TV + 064 Broadcast Mode + 065 Snapshot + 066 Still + 080 Selection + 081 Assign Selection + 082 Mode Step + 083 Recall Last + 084 Enter Channel + 085 Order Movie + 086 Channel + 087 Media Selection + 088 Media Select Computer + 089 Media Select TV + 08a Media Select WWW + 08b Media Select DVD + 08c Media Select Telephone + 08d Media Select Program Guide + 08e Media Select Video Phone + 08f Media Select Games + 090 Media Select Messages + 091 Media Select CD + 092 Media Select VCR + 093 Media Select Tuner + 094 Quit + 095 Help + 096 Media Select Tape + 097 Media Select Cable + 098 Media Select Satellite + 099 Media Select Security + 09a Media Select Home + 09b Media Select Call + 09c Channel Increment + 09d Channel Decrement + 09e Media Select SAP + 0a0 VCR Plus + 0a1 Once + 0a2 Daily + 0a3 Weekly + 0a4 Monthly + 0b0 Play + 0b1 Pause + 0b2 Record + 0b3 Fast Forward + 0b4 Rewind + 0b5 Scan Next Track + 0b6 Scan Previous Track + 0b7 Stop + 0b8 Eject + 0b9 Random Play + 0ba Select Disc + 0bb Enter Disc + 0bc Repeat + 0bd Tracking + 0be Track Normal + 0bf Slow Tracking + 0c0 Frame Forward + 0c1 Frame Back + 0c2 Mark + 0c3 Clear Mark + 0c4 Repeat from Mark + 0c5 Return to Mark + 0c6 Search Mark Forward + 0c7 Search Mark Backward + 0c8 Counter Reset + 0c9 Show Counter + 0ca Tracking Increment + 0cb Tracking Decrement + 0cc Stop/Eject + 0cd Play/Pause + 0ce Play/Skip + 0e0 Volume + 0e1 Balance + 0e2 Mute + 0e3 Bass + 0e4 Treble + 0e5 Bass Boost + 0e6 Surround Mode + 0e7 Loudness + 0e8 MPX + 0e9 Volume Increment + 0ea Volume Decrement + 0f0 Speed Select + 0f1 Playback Speed + 0f2 Standard Play + 0f3 Long Play + 0f4 Extended Play + 0f5 Slow + 100 Fan Enable + 101 Fan Speed + 102 Light Enable + 103 Light Illumination Level + 104 Climate Control Enable + 105 Room Temperature + 106 Security Enable + 107 Fire Alarm + 108 Police Alarm + 150 Balance Right + 151 Balance Left + 152 Bass Increment + 153 Bass Decrement + 154 Treble Increment + 155 Treble Decrement + 160 Speaker System + 161 Channel Left + 162 Channel Right + 163 Channel Center + 164 Channel Front + 165 Channel Center Front + 166 Channel Side + 167 Channel Surround + 168 Channel Low Frequency Enhancement + 169 Channel Top + 16a Channel Unknown + 170 Sub-Channel + 171 Sub-Channel Increment + 172 Sub-Channel Decrement + 173 Alternative Audio Increment + 174 Alternative Audio Decrement + 180 Application Launch Buttons + 181 AL Launch Button Configuration Tool + 182 AL Launch Button Configuration + 183 AL Consumer Control Configuration + 184 AL Word Processor + 185 AL Text Editor + 186 AL Spreadsheet + 187 AL Graphics Editor + 188 AL Presentation App + 189 AL Database App + 18a AL Email Reader + 18b AL Newsreader + 18c AL Voicemail + 18d AL Contacts/Address Book + 18e AL Calendar/Schedule + 18f AL Task/Project Manager + 190 AL Log/Jounal/Timecard + 191 AL Checkbook/Finance + 192 AL Calculator + 193 AL A/V Capture/Playback + 194 AL Local Machine Browser + 195 AL LAN/Wan Browser + 196 AL Internet Browser + 197 AL Remote Networking/ISP Connect + 198 AL Network Conference + 199 AL Network Chat + 19a AL Telephony/Dialer + 19b AL Logon + 19c AL Logoff + 19d AL Logon/Logoff + 19e AL Terminal Local/Screensaver + 19f AL Control Panel + 1a0 AL Command Line Processor/Run + 1a1 AL Process/Task Manager + 1a2 AL Select Task/Application + 1a3 AL Next Task/Application + 1a4 AL Previous Task/Application + 1a5 AL Preemptive Halt Task/Application + 200 Generic GUI Application Controls + 201 AC New + 202 AC Open + 203 AC CLose + 204 AC Exit + 205 AC Maximize + 206 AC Minimize + 207 AC Save + 208 AC Print + 209 AC Properties + 21a AC Undo + 21b AC Copy + 21c AC Cut + 21d AC Paste + 21e AC Select All + 21f AC Find + 220 AC Find and Replace + 221 AC Search + 222 AC Go To + 223 AC Home + 224 AC Back + 225 AC Forward + 226 AC Stop + 227 AC Refresh + 228 AC Previous Link + 229 AC Next Link + 22b AC History + 22c AC Subscriptions + 22d AC Zoom In + 22e AC Zoom Out + 22f AC Zoom + 230 AC Full Screen View + 231 AC Normal View + 232 AC View Toggle + 233 AC Scroll Up + 234 AC Scroll Down + 235 AC Scroll + 236 AC Pan Left + 237 AC Pan Right + 238 AC Pan + 239 AC New Window + 23a AC Tile Horizontally + 23b AC Tile Vertically + 23c AC Format +HUT 0d Digitizer + 000 Undefined + 001 Digitizer + 002 Pen + 003 Light Pen + 004 Touch Screen + 005 Touch Pad + 006 White Board + 007 Coordinate Measuring Machine + 008 3D Digitizer + 009 Stereo Plotter + 00a Articulated Arm + 00b Armature + 00c Multiple Point Digitizer + 00d Free Space Wand + 020 Stylus + 021 Puck + 022 Finger + 030 Tip Pressure + 031 Barrel Pressure + 032 In Range + 033 Touch + 034 Untouch + 035 Tap + 036 Quality + 037 Data Valid + 038 Transducer Index + 039 Tablet Function Keys + 03a Program Change Keys + 03b Battery Strength + 03c Invert + 03d X Tilt + 03e Y Tilt + 03f Azimuth + 040 Altitude + 041 Twist + 042 Tip Switch + 043 Secondary Tip Switch + 044 Barrel Switch + 045 Eraser + 046 Tablet Pick + 047 Confidence + 048 Width + 049 Height + 051 Contact ID + 052 Input Mode + 053 Device Index + 054 Contact Count + 055 Maximum Contact Number +HUT 0f PID Page + 000 Undefined + 001 Physical Interface Device + 020 Normal + 021 Set Effect Report + 022 Effect Block Index + 023 Parameter Block Offset + 024 ROM Flag + 025 Effect Type + 026 ET Constant Force + 027 ET Ramp + 028 ET Custom Force Data + 030 ET Square + 031 ET Sine + 032 ET Triangle + 033 ET Sawtooth Up + 034 ET Sawtooth Down + 040 ET Spring + 041 ET Damper + 042 ET Inertia + 043 ET Friction + 050 Duration + 051 Sample Period + 052 Gain + 053 Trigger Button + 054 Trigger Repeat Interval + 055 Axes Enable + 056 Direction Enable + 057 Direction + 058 Type Specific Block Offset + 059 Block Type + 05A Set Envelope Report + 05B Attack Level + 05C Attack Time + 05D Fade Level + 05E Fade Time + 05F Set Condition Report + 060 CP Offset + 061 Positive Coefficient + 062 Negative Coefficient + 063 Positive Saturation + 064 Negative Saturation + 065 Dead Band + 066 Download Force Sample + 067 Isoch Custom Force Enable + 068 Custom Force Data Report + 069 Custom Force Data + 06A Custom Force Vendor Defined Data + 06B Set Custom Force Report + 06C Custom Force Data Offset + 06D Sample Count + 06E Set Periodic Report + 06F Offset + 070 Magnitude + 071 Phase + 072 Period + 073 Set Constant Force Report + 074 Set Ramp Force Report + 075 Ramp Start + 076 Ramp End + 077 Effect Operation Report + 078 Effect Operation + 079 Op Effect Start + 07A Op Effect Start Solo + 07B Op Effect Stop + 07C Loop Count + 07D Device Gain Report + 07E Device Gain + 07F PID Pool Report + 080 RAM Pool Size + 081 ROM Pool Size + 082 ROM Effect Block Count + 083 Simultaneous Effects Max + 084 Pool Alignment + 085 PID Pool Move Report + 086 Move Source + 087 Move Destination + 088 Move Length + 089 PID Block Load Report + 08B Block Load Status + 08C Block Load Success + 08D Block Load Full + 08E Block Load Error + 08F Block Handle + 090 PID Block Free Report + 091 Type Specific Block Handle + 092 PID State Report + 094 Effect Playing + 095 PID Device Control Report + 096 PID Device Control + 097 DC Enable Actuators + 098 DC Disable Actuators + 099 DC Stop All Effects + 09A DC Device Reset + 09B DC Device Pause + 09C DC Device Continue + 09F Device Paused + 0A0 Actuators Enabled + 0A4 Safety Switch + 0A5 Actuator Override Switch + 0A6 Actuator Power + 0A7 Start Delay + 0A8 Parameter Block Size + 0A9 Device Managed Pool + 0AA Shared Parameter Blocks + 0AB Create New Effect Report + 0AC RAM Pool Available +HUT 10 Unicode +HUT 14 Alphanumeric Display + 000 Undefined + 001 Alphanumeric Display + 020 Display Attributes Report + 021 ASCII Character Set + 022 Data Read Back + 023 Font Read Back + 024 Display Control Report + 025 Clear Display + 026 Display Enable + 027 Screen Saver Delay + 028 Screen Saver Enable + 029 Vertical Scroll + 02a Horizontal Scroll + 02b Character Report + 02c Display Data + 02d Display Status + 02e Stat Not Ready + 02f Stat Ready + 030 Err Not a loadable Character + 031 Err Font Data Cannot Be Read + 032 Cursur Position Report + 033 Row + 034 Column + 035 Rows + 036 Columns + 037 Cursor Pixel Positioning + 038 Cursor Mode + 039 Cursor Enable + 03a Cursor Blink + 03b Font Report + 03c Font Data + 03d Character Width + 03e Character Height + 03f Character Spacing Horizontal + 040 Character Spacing Vertical + 041 Unicode Character Set +HUT 80 USB Monitor + 001 Monitor Control + 002 EDID Information + 003 VDIF Information + 004 VESA Version +HUT 81 USB Monitor Enumerated Values +HUT 82 Monitor VESA Virtual Controls + 001 Degauss + 010 Brightness + 012 Contrast + 016 Red Video Gain + 018 Green Video Gain + 01a Blue Video Gain + 01c Focus + 020 Horizontal Position + 022 Horizontal Size + 024 Horizontal Pincushion + 026 Horizontal Pincushion Balance + 028 Horizontal Misconvergence + 02a Horizontal Linearity + 02c Horizontal Linearity Balance + 030 Vertical Position + 032 Vertical Size + 034 Vertical Pincushion + 036 Vertical Pincushion Balance + 038 Vertical Misconvergence + 03a Vertical Linearity + 03c Vertical Linearity Balance + 040 Parallelogram Balance (Key Distortion) + 042 Trapezoidal Distortion (Key) + 044 Tilt (Rotation) + 046 Top Corner Distortion Control + 048 Top Corner Distortion Balance + 04a Bottom Corner Distortion Control + 04c Bottom Corner Distortion Balance + 056 Horizontal Moire + 058 Vertical Moire + 05e Input Level Select + 060 Input Source Select + 06c Red Video Black Level + 06e Green Video Black Level + 070 Blue Video Black Level + 0a2 Auto Size Center + 0a4 Polarity Horizontal Sychronization + 0a6 Polarity Vertical Synchronization + 0aa Screen Orientation + 0ac Horizontal Frequency in Hz + 0ae Vertical Frequency in 0.1 Hz + 0b0 Settings + 0ca On Screen Display (OSD) + 0d4 Stereo Mode +HUT 84 Power Device Page + 000 Undefined + 001 iName + 002 Present Status + 003 Changed Status + 004 UPS + 005 Power Supply + 010 Battery System + 011 Battery System ID + 012 Battery + 013 Battery ID + 014 Charger + 015 Charger ID + 016 Power Converter + 017 Power Converter ID + 018 Outlet System + 019 Outlet System ID + 01a Input + 01b Input ID + 01c Output + 01d Output ID + 01e Flow + 01f Flow ID + 020 Outlet + 021 Outlet ID + 022 Gang + 023 Gang ID + 024 Power Summary + 025 Power Summary ID + 030 Voltage + 031 Current + 032 Frequency + 033 Apparent Power + 034 Active Power + 035 Percent Load + 036 Temperature + 037 Humidity + 038 Bad Count + 040 Config Voltage + 041 Config Current + 042 Config Frequency + 043 Config Apparent Power + 044 Config Active Power + 045 Config Percent Load + 046 Config Temperature + 047 Config Humidity + 050 Switch On Control + 051 Switch Off Control + 052 Toggle Control + 053 Low Voltage Transfer + 054 High Voltage Transfer + 055 Delay Before Reboot + 056 Delay Before Startup + 057 Delay Before Shutdown + 058 Test + 059 Module Reset + 05a Audible Alarm Control + 060 Present + 061 Good + 062 Internal Failure + 063 Voltage out of range + 064 Frequency out of range + 065 Overload + 066 Over Charged + 067 Over Temperature + 068 Shutdown Requested + 069 Shutdown Imminent + 06a Reserved + 06b Switch On/Off + 06c Switchable + 06d Used + 06e Boost + 06f Buck + 070 Initialized + 071 Tested + 072 Awaiting Power + 073 Communication Lost + 0fd iManufacturer + 0fe iProduct + 0ff iSerialNumber +HUT 85 Battery System Page + 000 Undefined + 001 SMB Battery Mode + 002 SMB Battery Status + 003 SMB Alarm Warning + 004 SMB Charger Mode + 005 SMB Charger Status + 006 SMB Charger Spec Info + 007 SMB Selector State + 008 SMB Selector Presets + 009 SMB Selector Info + 010 Optional Mfg. Function 1 + 011 Optional Mfg. Function 2 + 012 Optional Mfg. Function 3 + 013 Optional Mfg. Function 4 + 014 Optional Mfg. Function 5 + 015 Connection to SMBus + 016 Output Connection + 017 Charger Connection + 018 Battery Insertion + 019 Use Next + 01a OK to use + 01b Battery Supported + 01c SelectorRevision + 01d Charging Indicator + 028 Manufacturer Access + 029 Remaining Capacity Limit + 02a Remaining Time Limit + 02b At Rate + 02c Capacity Mode + 02d Broadcast To Charger + 02e Primary Battery + 02f Charge Controller + 040 Terminate Charge + 041 Terminate Discharge + 042 Below Remaining Capacity Limit + 043 Remaining Time Limit Expired + 044 Charging + 045 Discharging + 046 Fully Charged + 047 Fully Discharged + 048 Conditioning Flag + 049 At Rate OK + 04a SMB Error Code + 04b Need Replacement + 060 At Rate Time To Full + 061 At Rate Time To Empty + 062 Average Current + 063 Max Error + 064 Relative State Of Charge + 065 Absolute State Of Charge + 066 Remaining Capacity + 067 Full Charge Capacity + 068 Run Time To Empty + 069 Average Time To Empty + 06a Average Time To Full + 06b Cycle Count + 080 Batt. Pack Model Level + 081 Internal Charge Controller + 082 Primary Battery Support + 083 Design Capacity + 084 Specification Info + 085 Manufacturer Date + 086 Serial Number + 087 iManufacturerName + 088 iDeviceName + 089 iDeviceChemistry + 08a Manufacturer Data + 08b Rechargeable + 08c Warning Capacity Limit + 08d Capacity Granularity 1 + 08e Capacity Granularity 2 + 08f iOEMInformation + 0c0 Inhibit Charge + 0c1 Enable Polling + 0c2 Reset To Zero + 0d0 AC Present + 0d1 Battery Present + 0d2 Power Fail + 0d3 Alarm Inhibited + 0d4 Thermistor Under Range + 0d5 Thermistor Hot + 0d6 Thermistor Cold + 0d7 Thermistor Over Range + 0d8 Voltage Out Of Range + 0d9 Current Out Of Range + 0da Current Not Regulated + 0db Voltage Not Regulated + 0dc Master Mode + 0f0 Charger Selector Support + 0f1 Charger Spec + 0f2 Level 2 + 0f3 Level 3 +HUT 86 Power Pages +HUT 87 Power Pages +HUT 8c Bar Code Scanner Page (POS) +HUT 8d Scale Page (POS) +HUT 90 Camera Control Page +HUT 91 Arcade Control Page +HUT f0 Cash Device + 0f1 Cash Drawer + 0f2 Cash Drawer Number + 0f3 Cash Drawer Set + 0f4 Cash Drawer Status +HUT ff Vendor Specific + +# List of Languages + +# Syntax: +# L language_id language_name +# dialect_id dialect_name + +L 0001 Arabic + 01 Saudi Arabia + 02 Iraq + 03 Egypt + 04 Libya + 05 Algeria + 06 Morocco + 07 Tunesia + 08 Oman + 09 Yemen + 0a Syria + 0b Jordan + 0c Lebanon + 0d Kuwait + 0e U.A.E + 0f Bahrain + 10 Qatar +L 0002 Bulgarian +L 0003 Catalan +L 0004 Chinese + 01 Traditional + 02 Simplified + 03 Hongkong SAR, PRC + 04 Singapore + 05 Macau SAR +L 0005 Czech +L 0006 Danish +L 0007 German + 01 German + 02 Swiss + 03 Austrian + 04 Luxembourg + 05 Liechtenstein +L 0008 Greek +L 0009 English + 01 US + 02 UK + 03 Australian + 04 Canadian + 05 New Zealand + 06 Ireland + 07 South Africa + 08 Jamaica + 09 Carribean + 0a Belize + 0b Trinidad + 0c Zimbabwe + 0d Philippines +L 000a Spanish + 01 Castilian + 02 Mexican + 03 Modern + 04 Guatemala + 05 Costa Rica + 06 Panama + 07 Dominican Republic + 08 Venzuela + 09 Colombia + 0a Peru + 0b Argentina + 0c Ecuador + 0d Chile + 0e Uruguay + 0f Paraguay + 10 Bolivia + 11 El Salvador + 12 Honduras + 13 Nicaragua + 14 Puerto Rico +L 000b Finnish +L 000c French + 01 French + 02 Belgian + 03 Canadian + 04 Swiss + 05 Luxembourg + 06 Monaco +L 000d Hebrew +L 000e Hungarian +L 000f Idelandic +L 0010 Italian + 01 Italian + 02 Swiss +L 0011 Japanese +L 0012 Korean + 01 Korean +L 0013 Dutch + 01 Dutch + 02 Belgian +L 0014 Norwegian + 01 Bokmal + 02 Nynorsk +L 0015 Polish +L 0016 Portuguese + 01 Portuguese + 02 Brazilian +L 0017 forgotten +L 0018 Romanian +L 0019 Russian +L 001a Serbian + 01 Croatian + 02 Latin + 03 Cyrillic +L 001b Slovak +L 001c Albanian +L 001d Swedish + 01 Swedish + 02 Finland +L 001e Thai +L 001f Turkish +L 0020 Urdu + 01 Pakistan + 02 India +L 0021 Indonesian +L 0022 Ukrainian +L 0023 Belarusian +L 0024 Slovenian +L 0025 Estonian +L 0026 Latvian +L 0027 Lithuanian + 01 Lithuanian +L 0028 forgotten +L 0029 Farsi +L 002a Vietnamese +L 002b Armenian +L 002c Azeri + 01 Cyrillic + 02 Latin +L 002d Basque +L 002e forgotten +L 002f Macedonian +L 0036 Afrikaans +L 0037 Georgian +L 0038 Faeroese +L 0039 Hindi +L 003e Malay + 01 Malaysia + 02 Brunei Darassalam +L 003f Kazak +L 0041 Awahili +L 0043 Uzbek + 01 Latin + 02 Cyrillic +L 0044 Tatar +L 0045 Bengali +L 0046 Punjabi +L 0047 Gujarati +L 0048 Oriya +L 0049 Tamil +L 004a Telugu +L 004b Kannada +L 004c Malayalam +L 004d Assamese +L 004e Marathi +L 004f Sanskrit +L 0057 Konkani +L 0058 Manipuri +L 0059 Sindhi +L 0060 Kashmiri + 02 India +L 0061 Nepali + 02 India + +# HID Descriptor bCountryCode +# HID Specification 1.11 (2001-06-27) page 23 +# +# Syntax: +# HCC country_code keymap_type + +HCC 00 Not supported +HCC 01 Arabic +HCC 02 Belgian +HCC 03 Canadian-Bilingual +HCC 04 Canadian-French +HCC 05 Czech Republic +HCC 06 Danish +HCC 07 Finnish +HCC 08 French +HCC 09 German +HCC 10 Greek +HCC 11 Hebrew +HCC 12 Hungary +HCC 13 International (ISO) +HCC 14 Italian +HCC 15 Japan (Katakana) +HCC 16 Korean +HCC 17 Latin American +HCC 18 Netherlands/Dutch +HCC 19 Norwegian +HCC 20 Persian (Farsi) +HCC 21 Poland +HCC 22 Portuguese +HCC 23 Russia +HCC 24 Slovakia +HCC 25 Spanish +HCC 26 Swedish +HCC 27 Swiss/French +HCC 28 Swiss/German +HCC 29 Switzerland +HCC 30 Taiwan +HCC 31 Turkish-Q +HCC 32 UK +HCC 33 US +HCC 34 Yugoslavia +HCC 35 Turkish-F + +# List of Video Class Terminal Types + +# Syntax: +# VT terminal_type terminal_type_name + +VT 0100 USB Vendor Specific +VT 0101 USB Streaming +VT 0200 Input Vendor Specific +VT 0201 Camera Sensor +VT 0202 Sequential Media +VT 0300 Output Vendor Specific +VT 0301 Generic Display +VT 0302 Sequential Media +VT 0400 External Vendor Specific +VT 0401 Composite Video +VT 0402 S-Video +VT 0403 Component Video diff --git a/data/vendor.ids b/data/vendor.ids new file mode 100644 index 00000000..cd3dc9e3 --- /dev/null +++ b/data/vendor.ids @@ -0,0 +1,1353 @@ +# +# Vendor Name and URL +# +# Syntax: +# name +# name_short +# url +# url_support +# wikipedia [language:]
[#section] +# note +# ansi_color n[;n][...] +# +# ... +# +# +# +# match rules: +# match_string - match a word, ignore case +# match_string_case - match a word, consider case +# match_string_exact - entire string must match exactly +# match_string_prefix - prefix of a word, ignore case +# match_string_prefix_case - prefix of a word, consider case +# match_string_suffix - suffix of a word, ignore case +# match_string_suffix_case - suffix of a word, consider case +# match_string_num_prefix - prefix next character must be a digit, ignore case +# match_string_num_prefix_case - prefix next character must be a digit, consider case +# +# Except for the newline, trailing whitespace is included in the string. +# Match strings must be unique. Name does not need to be unique. +# + +name 3Com + url www.3com.com + wikipedia 3Com + ansi_color 0;97;40 + match_string 3Com + +name A4tech + url www.a4tech.com + wikipedia A4Tech + ansi_color 0;33;40 + match_string A4Tech + +name AboCom Systems + url www.abocom.com.tw + match_string AboCom Systems + match_string AboCom + +name Acer + name_short acer + url www.acer.com + ansi_color 0;32;107 + match_string Acer + note EDID vendor: ACR + match_string_exact ACR + +name ADATA Technology + name_short ADATA + ansi_color 0;34;47 + match_string_case ADATA + +# PCI Vendor 1002 (used for GPUs) +name Advanced Micro Devices (formerly ATI) + name_short AMD/ATI + url www.amd.com + wikipedia ATI Technologies + ansi_color 0;97;41 + match_string ATI Technologies + match_string Advanced Micro Devices, Inc. [AMD/ATI] + match_string_case AMD/ATI + match_string_case ATI + +name Advanced Micro Devices + name_short AMD + url www.amd.com + wikipedia Advanced Micro Devices + ansi_color 0;97;41 + note x86 processor vendor ID + match_string AMDisbetter! + match_string AuthenticAMD + +# PCI Vendor 1022 +name Advanced Micro Devices + name_short AMD + url www.amd.com + wikipedia Advanced Micro Devices + ansi_color 0;97;41 + match_string Advanced Micro Devices + match_string_case AMD + +name Alcor Life Extension Foundation +# Makes devices? + name_short Alcor + url www.alcor.org + match_string ALCOR + +name Allwinner Technology + name_short AllWinner + url www.allwinnertech.com + wikipedia Allwinner Technology + ansi_color 0;97;44 + match_string AllWinner + +name American Megatrends + name_short AMI + url www.ami.com + ansi_color 0;31;47 + match_string American Megatrends + +name Amlogic + name_short AMLogic + url www.amlogic.com + wikipedia Amlogic + ansi_color 0;94;107 + match_string Amlogic + +name Angelbird Technologies + name_short Angelbird + url www.angelbird.com + ansi_color 0;97;100 + match_string Angelbird + +name AOC International + name_short AOC + url www.aoc.com + wikipedia AOC International + ansi_color 0;97;44 + match_string_case AOC + note formerly Admiral Overseas Corporation + match_string Admiral Overseas Corporation + match_string Admiral + +name Apacer Technology + name_short Apacer + match_string Apacer + +name Apple Computer + name_short Apple + url www.apple.com + ansi_color 0;97;100 + match_string Apple + note EDID vendor: APP + match_string_exact APP + +name Applied Micro Circuits + name_short APM + wikipedia Applied Micro Circuits Corporation + match_string Applied Micro Circuits + match_string AppliedMicro + match_string_case APM + match_string_case AMCC + +name Arch Linux + name_short Arch + url www.archlinux.org + ansi_color 0;36;107 + match_string arch linux + +name Arm Holdings +# styled lower-case "arm" + name_short arm + url arm.com + ansi_color 0;36;107 + match_string ARM + +name ASMedia Technology + name_short ASMedia + url www.asmedia.com.tw + ansi_color 0;30;46 + match_string_case ASMedia + +name ASRock + url www.asrock.com + ansi_color 0;32;107 + match_string ASRock + +name ASUSTeK Computer + name_short ASUS + url www.asus.com + wikipedia Asus + ansi_color 0;30;47 + match_string ASUSTek + match_string ASUS + +name AU Optronics Corporation + name_short AUO + url www.auo.com + wikipedia AU Optronics + ansi_color 0;34;107 + match_string AU Optronics + match_string_case AUO + +name AVerMedia Technologies + name_short AVerMedia + url www.aver.com + match_string Avermedia + +name Award Software International + name_short Award + url www.award-bios.com + ansi_color 0;93;44 + match_string Award + +name BenQ (formerly Acer Peripherals) + name_short BenQ/acer + url www.benq.com + ansi_color 0;35;107 + match_string Acer Peripherals + match_string Acer Peripherals Inc. (now BenQ Corp.) + +name BenQ + url www.benq.com + ansi_color 0;35;107 + match_string BENQ + +name Biostar Microtech International + name_short BIOSTAR + url www.biostar.tw + ansi_color 0;31;40 + match_string Biostar + +name Bright Micron Technology + name_short BMT + match_string Bright Micron + +name Broadcom Corporation + name_short Broadcom + url www.broadcom.com + ansi_color 0;30;41 + match_string Broadcom + +name Brother Industries + name_short Brother + url www.brother.com + wikipedia Brother Industries + ansi_color 0;34;107 + match_string Brother + +name C-guys + url www.c-guys.net + match_string C-guys + +name C-Media Electronics + name_short C-Media + url www.cmedia.com.tw + match_string C-Media + +name Cambridge Silicon Radio + name_short CSR + url www.csr.com + wikipedia Cambridge Silicon Radio + ansi_color 0;34;107 + match_string Cambridge Silicon Radio + +name Canon + url www.canon.com + ansi_color 0;31;107 + match_string Canon + +name Canonical + url www.canonical.com + ansi_color 0;97;45 + match_string canonical + +name CDEmu + url cdemu.sourceforge.io + match_string CDEmu + +name Chengdu Haiguang Integrated Circuit Design + name_short Hygon + ansi_color 0;97;104 + match_string Hygon + match_string Higon + note x86 processor vendor ID + match_string HygonGenuine + +name Chicony + url www.chicony.com.tw + wikipedia Chicony Electronics + ansi_color 0;36;107 + match_string Chicony + +name Cirrus Logic + url www.cirrus.com + match_string Cirrus Logic + +name Coreboot Project + name_short Coreboot + url www.coreboot.org + match_string coreboot + +name Corsair Components + name_short Corsair + url www.corsair.com + wikipedia Corsair Components + ansi_color 0;30;43 + match_string Corsair + match_string_num_prefix Force MP + match_string_num_prefix Force LE + +name Creative Labs + url www.creative.com + wikipedia Creative Technology + ansi_color 0;30;107 + match_string Creative Labs + match_string Creative Technology + +name Crucial (Micron) + name_short Crucial + url www.crucial.com + ansi_color 0;37;44 + match_string Crucial + match_string Micron/Crucial + +name Cypress Semiconductor + name_short Cypress + url infineon.com + wikipedia Cypress Semiconductor + ansi_color 0;36;107 + match_string Cypress + +name D-Link + url www.dlink.com.tw + ansi_color 0;97;44 + match_string D-Link + +name Debian + url www.debian.org + ansi_color 0;31;107 + match_string debian + +name Dell Computer + name_short Dell + url www.dell.com + ansi_color 0;97;44 + match_string Dell +# Dell PowerEdge/PowerVault controller SCSI vendor + match_string PE/PV + note EDID vendor: DEL + match_string_exact DEL + +name Digital Equipment Corporation + name_short DEC + note Dead; various parts to Intel, Compaq, HP + match_string_case DEC + match_string Digital Equipment + match_string_exact Digital + +name DMP Electronics + note x86 processor vendor ID + match_string Vortex86 SoC + +# Company defunct, now brand name of Chinese company +name Eastman Kodak Company + name_short Kodak + wikipedia Kodak + ansi_color 0;31;43 + match_string Kodak + +name Elitegroup Computer Systems + name_short ECS + ansi_color 0;36;41 + match_string_case ECS + +name Embest Technology + name_short Embest + url www.embest-tech.com + ansi_color 0;96;44 + match_string Embest + +name eMPIA Technology + url www.empiatech.com.tw + match_string_case eMPIA + +name Ericsson-LG + wikipedia Ericsson-LG + ansi_color 0;97;43 + match_string Ericsson-LG + match_string LG-Ericsson + +name EVGA + url www.evga.com + ansi_color 0;34;107 + match_string EVGA + +name ExcelStor Technology + url www.excelstor.com + match_string ExcelStor + +name Faraday Technology + name_short Faraday + url www.faraday-tech.com + wikipedia Faraday Technology + match_string Faraday Technology + match_string Faraday + +name Fujitsu + name_short FUJITSU + url www.fujitsu.com + ansi_color 0;31;107 + match_string FUJITSU + name_short Fujitsu/Siemens + match_string Fujitsu Siemens + +name Fuzhou Rockchip Electronics + name_short Rockchip + url www.rock-chips.com + ansi_color 0;34;43 + match_string Rockchip + +name G.Skill International Enterprise + name_short G.Skill + url www.gskill.com + wikipedia G.Skill + ansi_color 0;31;107 + match_string G.Skill + match_string G-Skill + match_string G Skill + +name GCT Semiconductor + name_short GCT + url www.gctsemi.com + match_string GCT Semiconductor + match_string_case GCT + +name Genius + url www.genius.ru + match_string Genius + +name Gigabyte Technology + name_short Gigabyte + url www.gigabyte.com.tw + ansi_color 0;94;47 + match_string Giga-byte + match_string Gigabyte + +# NOT Globalsat Group +name Globalsat Technology + match_string Globalsat Technology + +name Google + url www.google.com + ansi_color 0;34;107 + match_string Google + +name Harman International + name_short Harman + url www.harman.com + ansi_color 0;34;107 + match_string Harman International + match_string Harman + +name Harmony Semiconductor + name_short Harmony + match_string Harmony + +name Hewlett-Packard + name_short HP + url www.hp.com + ansi_color 0;97;46 + match_string Hewlett-Packard + match_string_case HP + note EDID vendor: HWP + match_string_exact HWP + note SCSI vendor: hp + match_string_exact hp + +name Hitachi Global Storage Technologies + name_short HGST + url hgst.com + ansi_color 0;97;40 + match_string HGST a Western Digital Company + match_string Hitachi Global Storage + match_string_case HGST + +name Hitachi-LG Data Storage + name_short HLDS + url http://hlds.co.kr + wikipedia Hitachi-LG Data Storage + ansi_color 0;97;105 + match_string_case HL-DT-ST + match_string_case HLDS + match_string_case H-L Data Storage + match_string Hitachi-LG + match_string Hitachi LG + match_string LG (HLDS) + +name Hitachi + name_short HITACHI + url www.hitachi.com + ansi_color 0;30;47 + match_string Hitachi + note EDID vendor: HTC + match_string_exact HTC + +name Holtek Semiconductor + name_short Holtek + url www.holtek.com + ansi_color 0;34;107 + match_string Holtek + +name Hoodman Corporation + name_short Hoodman + url www.hoodmanusa.com + ansi_color 0;30;43 + match_string Hoodman + +name HT Micron + match_string HT Micron + +# JEDEC mfgr [0][64] +name Infineon Technologies + name_short infineon + url www.infineon.com + wikipedia Infineon Technologies + ansi_color 0;34;107 + match_string Infineon + match_string Infineon (former Siemens) + +name Insyde Software + name_short Insyde + url www.insyde.com + ansi_color 0;30;42 + match_string Insyde + +name Intel Corporation + name_short Intel + url www.intel.com + wikipedia Intel Corporation + ansi_color 0;97;44 + match_string Intel + +name Intel Corporation + name_short Intel + url www.intel.com + url_support ark.intel.com + ansi_color 0;97;44 + note x86 processor vendor ID + match_string GenuineIntel + +name Intellitech + match_string Intellitech + +name International Business Machines Corporation + name_short IBM + url www.ibm.com + ansi_color 0;94;107 + match_string International Business Machines + match_string_case IBM + +name JMicron Technology + name_short JMicron + url www.jmicron.com + wikipedia JMicron + ansi_color 0;34;107 + match_string JMicron Technology + match_string JMicron USA Technology + match_string JMicron + +name KDE + url www.kde.org + wikipedia KDE + ansi_color 0;97;104 + match_string_case KDE + +name Kingston Technology + name_short Kingston + url www.kingston.com + ansi_color 0;31;40 + match_string Kingston + +name Koninklijke Philips + name_short PHILIPS + url www.philips.com + match_string Philips + ansi_color 0;30;107 + match_string Philips + note EDID vendor: PHL + match_string_exact PHL + +name KVM + url www.linux-kvm.org + match_string KVMKVMKVM + +name KYE Systems + name_short KYE + url www.genius-kye.com + match_string_case KYE + +name Lenovo Group + name_short Lenovo + url www.lenovo.com + url_support support.lenovo.com + wikipedia Lenovo + ansi_color 0;97;41 + match_string lenovo + note EDID vendor: LEN + match_string_exact LEN + +name Lexmark + url www.lexmark.com + match_string Lexmark + +name LG Display + name_short LG Display + url www.lgdisplay.com + ansi_color 0;97;41 + match_string LG Display + match_string LG.Philips + note EDID vendor: LGD + match_string_exact LGD + +name LG Electronics (formerly Goldstar) + name_short LG (Goldstar) + url www.lge.com + ansi_color 0;97;41 + match_string Goldstar + +name LG Electronics + name_short LG + url www.lge.com + ansi_color 0;97;41 + match_string LG Electronics [Lucky Goldstar Co. Ltd] + match_string Lucky Goldstar + match_string Lucky-Goldstar + match_string LG Semi + match_string_case LG + +name LIG Nex1 + wikipedia LIG Nex1 + match_string LIG Nex1 + match_string LG Innotek + match_string NEX1 Future + +name Linaro + url linaro.org + wikipedia Linaro + ansi_color 0;32;107 + match_string Linaro + +name Linux Foundation + name_short Linux + ansi_color 0;33;40 + match_string Linux Foundation + match_string Linux + +name LITE-ON + url www.liteonit.com + ansi_color 0;97;104 + match_string_case LITE-ON + +name Logitech International + name_short logitech + ansi_color 0;30;107 + url www.logitech.com + match_string Logitech + +name Longsys (formerly Micron Lexar) + name_short longsys/Lexar + url lexar.com + wikipedia Lexar + ansi_color 0;31;40 + match_string Lexar + +name Longsys + name_short longsys + url longsys.com + ansi_color 0;31;107 + match_string Longsys + +name Magewell + url www.magewell.com + ansi_color 0;34;107 + match_string Magewell + +name Marvell (formerly Cavium) + name_short Marvell (Cavium) + url cavium.com + wikipedia Cavium + ansi_color 0;97;41 + match_string Cavium + +name Marvell Technology Group + name_short Marvell + url www.marvell.com + wikipedia Marvell Technology Group + ansi_color 0;97;41 + match_string Marvell + +name Maxtor + url www.maxtor.com + match_string Maxtor + +name AO MCST + name_short MCST + url www.mcst.ru + url_support www.mcst.ru/support + ansi_color 0;34;107 + match_string EL2S4 + match_string MBE1C-PC + match_string MONOCUB + match_string E8C-SWTX + match_string_prefix MBE8C-PC + match_string Elbrus-MCST + +name AO MCST + name_short Information: + url www.mcst.ru/elbrus-4c + match_string Elbrus-4C + url www.mcst.ru/elbrus-1c-plus + match_string Elbrus-1C+ + url www.mcst.ru/elbrus-2c-plus + match_string Elbrus-2C+ + url www.mcst.ru/elbrus-8c + match_string Elbrus-8C + url www.mcst.ru/elbrus-8sv + match_string Elbrus-8CB + url www.mcst.ru/elbrus-12c + match_string Elbrus-12C + url www.mcst.ru/elbrus-16c + match_string Elbrus-16C + url www.mcst.ru/elbrus-2c3 + match_string Elbrus-2C3 + +name MediaTek + url www.mediatek.com + wikipedia MediaTek + ansi_color 0;97;43 + match_string MediaTek + +name Memorex Products + name_short Memorex + url www.memorex.com + match_string Memorex + +name Micro-Star International + name_short MSI + url www.msi.com + url_support www.msi.com/support + ansi_color 0;97;40 + match_string Micro-Star Int'l Co.,Ltd. + match_string Micro Star + match_string_case MSI + +name Microchip Technology (formerly Standard Microsystems) + name_short SMC + ansi_color 0;37;40 + match_string Standard Microsystems + +name Micron Technology + name_short Micron + url www.micron.com + ansi_color 0;34;47 + match_string Micron + +name Microsoft Hyper-V + url www.microsoft.com + match_string Microsoft Hv + +name Microsoft + url www.microsoft.com + ansi_color 0;97;40 + match_string Microsoft + +name Murata Manufacturing (formerly SyChip Electronic Technology) + name_short Murata (SyChip) + ansi_color 0;31;107 + match_string SyChip + +name Murata Manufacturing + name_short Murata + url www.murata.com + wikipedia Murata Manufacturing + ansi_color 0;31;107 + match_string Murata + +name National Semiconductor + name_short NSC + note x86 processor vendor ID + match_string Geode by NSC + +name NEC Corporation + name_short NEC + url www.nec.com + ansi_color 0;94;107 + note EDID vendor: NEC + match_string_case NEC + +name NexGen + note x86 processor vendor ID + match_string NexGenDriven + +name nVidia Corporation + name_short nVidia + url www.nvidia.com + wikipedia Nvidia + ansi_color 0;97;42 + match_string nVidia + +name NXP Semiconductors + name_short NXP + url www.nxp.com + match_string_case NXP + +name Oculus VR + name_short Oculus + url www.oculus.com + ansi_color 0;97;100 + wikipedia Oculus VR + match_string Oculus VR + match_string Oculus + +name Oracle Corporation (formerly InnoTek Systemberatung) + name_short Oracle (InnoTek) + url www.virtualbox.org/wiki/innotek + url_support www.virtualbox.org + ansi_color 0;97;41 + match_string InnoTek + match_string VirtualBox + match_string_case VBOX + +name Oracle Corporation (formerly Sun Microsystems) + name_short Oracle (Sun) + url www.oracle.com + wikipedia Sun Microsystems + ansi_color 0;97;41 + match_string Sun Microsystems + match_string Oracle Corporation (former Sun Microsystems) + +name Oracle Corporation + name_short Oracle + url www.oracle.com + ansi_color 0;97;41 + match_string Oracle + +name Ours Technology + url www.oti.com.tw + match_string_case OTi + +name Panasonic Industry Company +# AKA: Matsushita Electric Industrial + name_short Panasonic + url www.panasonic.com + ansi_color 0;30;107 + match_string Panasonic + match_string Matsushita + match_string MATSHITA + note EDID vendor: MEI + match_string_exact MEI + +name Parallels + url www.parallels.com + match_string lrpepyh vr + +name Patriot Memory + name_short Patriot + url www.patriotmemory.com + wikipedia Patriot Memory + ansi_color 0;97;44 + match_string Patriot Memory + +name Phison Electronics Corporation + name_short Phison + url www.phison.com + wikipedia Phison + ansi_color 0;33;44 + match_string Phison + +name Phoenix Technologies + name_short Phoenix + url www.phoenix.com + ansi_color 0;31;47 + match_string Phoenix + +name Pioneer + url www.pioneer-eur.com + match_string Pioneer + note EDID vendor: PIO + match_string_exact PIO + +name Planar + name_short PLANAR + url www.planar.com + ansi_color 0;91;40 + match_string Planar + +name Plextor + url www.plextor.be + match_string Plextor + +name PNY Technologies + name_short PNY + url www.pny.com + wikipedia PNY Technologies + ansi_color 0;97;100 + match_string_case PNY + +name Qualcomm (formerly Atheros) + name_short Qualcomm (Atheros) + url www.qualcomm.com + wikipedia Qualcomm Atheros + ansi_color 0;94;47 + match_string Qualcomm Atheros + match_string Atheros + +name Qualcomm Incorporated + name_short Qualcomm + url www.qualcomm.com + ansi_color 0;94;47 + match_string Qualcomm + +name Quantum + url www.quantum.com + match_string QUANTUM + +name RaidSonic Technology + name_short RaidSonic + url www.raidsonic.de + ansi_color 0;31;107 + match_string ICY BOX + +name Ralink Technology + name_short Ralink + url www.ralinktech.com + ansi_color 0;36;107 + match_string RaLink + +name Raspberry Pi Foundation + name_short Raspberry Pi + url www.raspberrypi.org + ansi_color 0;97;42 + match_string RaspberryPi + match_string Raspberry Pi + +name Raspbian + url www.raspberrypi.org/downloads/raspbian/ + ansi_color 0;97;101 + match_string raspbian + +name Realtek Semiconductor + name_short Realtek + url www.realtek.com.tw + ansi_color 0;34;107 + match_string Realtek + +name Red Hat + url www.redhat.com + ansi_color 0;31;40 + match_string Red Hat + match_string RedHat + +name Renesas Electronics + name_short Renesas + url www.renesas.com + wikipedia Renesas Electronics + ansi_color 0;97;44 + match_string Renesas + +name Ricoh + url www.ricoh.com + wikipedia Ricoh + ansi_color 0;91;107 + match_string Ricoh + +name Rise Technology + name_short Rise + note x86 processor vendor ID + match_string RiseRiseRise + +name S3 Graphics + name_short VIA/S3 + url www.s3graphics.com + url_support www.s3graphics.com/en/drivers + ansi_color 0;30;103 + match_string S3 Graphics + match_string_case VIA/S3 + +name Sabrent + url www.sabrent.com + wikipedia Sabrent + ansi_color 0;30;44 + match_string Sabrent + match_string Arkview + +name Samsung + url www.samsung.com + ansi_color 0;47;30 + match_string Samsung + note EDID vendor: SAM + match_string_exact SAM + +name SanDisk + url www.sandisk.com + ansi_color 0;31;40 + match_string SanDisk + +name Sanyo Electric + name_short SANYO + url www.sanyo.com + match_string SANYO + +name Sapphire Technology + name_short SAPPHIRE + url www.sapphiretech.com + ansi_color 0;30;107 + match_string sapphire tech + match_string sapphire technology + +name Seagate Technology + name_short SEAGATE + url www.seagate.com + ansi_color 0;92;100 + match_string Seagate + match_string_num_prefix_case ST + +name Seiko Epson Corporation + name_short EPSON + url epson.com + wikipedia Seiko Epson + ansi_color 0;34;107 + match_string Seiko Epson + match_string Epson + match_string Seiko + +name Sharp Corporation + name_short SHARP + ansi_color 0;31;107 + match_string Sharp + note EDID vendor: SHP + match_string_exact SHP + +name Siano Mobile Silicon + match_string Siano Mobile Silicon + +name Siemens AG + name_short Siemens + url www.siemens.com + match_string Siemens + +name Silicon Image + url www.siliconimage.com + match_string Silicon Image + match_string Silicon Integrated Image + +name Silicon Integrated Systems Corporation + name_short SIS + url www.sis.com + match_string Silicon Integrated Systems + match_string_case SIS + +name Silicon Integrated Systems + name_short SIS + note x86 processor vendor ID + match_string SiS SiS SiS + +name Silicon Power + name_short SP + url www.silicon-power.com + wikipedia Silicon Power + ansi_color 0;97;40 + match_string Silicon Power + +name SK Hynix + name_short SK hynix + url www.skhynix.com + wikipedia SK Hynix + ansi_color 0;31;43 + match_string Hynix + match_string Hyundai + +name Slackware + url www.slackware.com + ansi_color 0;30;107 + match_string Slackware + +name Socket Mobile + url www.socketmobile.com + match_string Socket Communications + match_string Socket Mobile + match_string Socket + +name Sony Mobile + name_short SONY + url www.sony.com + ansi_color 0;30;107 + match_string Sony Mobile + name_short SONY/Ericsson + match_string Sony Ericsson + +name Sony + name_short SONY + url www.sony.com + ansi_color 0;30;107 + match_string Sony +# match_string_case CDU + note EDID vendor: SNY + match_string_exact SNY + +name Spectec Computer + name_short Spectec + url spectec.com.tw + match_string Spectec + +name SSK Corporation (Shenzhen) + name_short SSK飚王 + url www.ssk.cn + ansi_color 0;91;107 + match_string SSK (Shenzhen) + match_string_case SSK + +name ST-Ericsson + wikipedia ST-Ericsson + ansi_color 0;97;43 + match_string ST-Ericsson + match_string ST Ericsson + match_string STEricsson + +name STMicroelectronics + name_short ST + url www.st.com + ansi_color 0;97;104 + match_string STMicroelectronics + match_string ST Micro + +name Suprema + url www.supremainc.com + ansi_color 0;31;107 + match_string suprema + +name Synaptics (formerly Brooktree) + name_short Synaptics (Brooktree) + url www.synaptics.com + match_string Brooktree + +name Synaptics (formerly Conexant Systems) + name_short Synaptics (Conexant) + url www.synaptics.com + match_string Conexant + +name Synaptics + url www.synaptics.com + match_string Synaptics + +name Synopsys + url www.synopsys.com + ansi_color 0;35;107 + match_string Synopsys + +name TDK-Micronas + url www.micronas.com + match_string Micronas + +name TEAC Corporation + name_short TEAC + url www.teac.com + ansi_color 0;34;107 + match_string_case TEAC + +name Telefonaktiebolaget LM Ericsson + name_short Ericsson + url ericsson.com + wikipedia Ericsson + ansi_color 0;94;107 + match_string Ericsson + +name Texas Instruments + name_short TI + url ti.com + wikipedia Texas Instruments + ansi_color 0;97;40 + match_string Texas Instruments + match_string_case TI + +name Toshiba Corporation +# styled in all-caps + name_short TOSHIBA + url www.toshiba.com + ansi_color 0;91;47 + match_string Toshiba + note EDID vendor: TSB + match_string_exact TSB + +name Toshiba Samsung Storage Technology + name_short TSST + url www.tsst.co.kr + wikipedia Toshiba Samsung Storage Technology + ansi_color 0;34;107 + match_string Toshiba Samsung Storage + match_string TSSTcorp + match_string_case TSST + +# JEDEC mfgr [1][78] +name Transcend Information + name_short Transcend + url transcend-info.com + ansi_color 0;31;47 + match_string Transcend Information + # More likely this one is T. Information than T. Technology + match_string Transcend + +# JEDEC mfgr [7][105] +name Transcend Technology + name_short Transcend + match_string Transcend Technology + +name Transmeta Corporation + name_short Transmeta + note x86 processor vendor ID + match_string TransmetaCPU + match_string GenuineTMx86 + +name Ubuntu + url www.ubuntu.com + url_support www.ubuntu.com/support/community-support + ansi_color 0;97;45 + match_string ubuntu + +name Union Memory (Shenzhen) + name_short Union Memory + url unionmem.com + ansi_color 0;35;107 + match_string Union Memory (Shenzhen) + +name United Microelectronics Corporation + name_short UMC + note x86 processor vendor ID + match_string UMC UMC UMC + +name Valve Corporation + name_short VALVE + url valvesoftware.com + wikipedia Valve Corporation + ansi_color 0;97;41 + match_string Valve Corporation + match_string Valve + +name VIA (formerly Centaur Technology) + name_short VIA (Centaur) + url www.via.tw + ansi_color 0;36;107 + note x86 processor vendor ID + match_string CentaurHauls + +name VIA (formerly Cyrix) + name_short VIA (Cyrix) + url www.via.tw + ansi_color 0;36;107 + note x86 processor vendor ID + match_string CyrixInstead + +name VIA Technologies + name_short VIA + url www.via.com.tw + ansi_color 0;36;107 + match_string_case VIA + +name VIA Technologies + name_short VIA + url www.via.tw + ansi_color 0;36;107 + note x86 processor vendor ID + match_string VIA VIA VIA + +name Victor Company of Japan + name_short JVC + url www.victor.co.jp + ansi_color 0;91;107 + match_string_case JVC + match_string Victor + +name ViewSonic Corporation + name_short ViewSonic + url www.viewsonic.com + ansi_color 0;35;103 + match_string ViewSonic + note EDID vendor: VSC + match_string_exact VSC + +name Vimicro + url www.vimicro.com + match_string Vimicro + +name Vizio + name_short VIZIO + ansi_color 0;30;107 + match_string Vizio + note EDID vendor: VIZ + match_string_exact VIZ + +name VMware + url www.vmware.com + wikipedia VMware + ansi_color 0;90;47 + match_string VMware + note x86 VM vendor string + match_string VMwareVMware + +name Western Digital + name_short WD + url www.westerndigital.com + wikipedia Western Digital + ansi_color 0;37;40 +# ansi_color 0;97;44 + match_string Western Digital + match_string_case WDC + match_string_num_prefix_case WD + +# Company defunct, now brand name of Chinese company +name Westinghouse Electronics + name_short W + wikipedia Westinghouse Electronics + ansi_color 0;97;44 + match_string Westinghouse + +name Winbond Electronics Corporation + name_short Winbond + url www.winbond.com + wikipedia Winbond + ansi_color 0;31;107 + match_string Winbond + +name X.Org Foundation + name_short X.Org + url www.x.org + wikipedia X.Org Foundation + ansi_color 0;30;43 + match_string X.Org + +name Xen HVM + url www.xenproject.org + match_string XenVMMXenVMM + +name XFX Pine Group + name_short XFX + url www.xfxforce.com + wikipedia XFX + ansi_color 0;30;42 + match_string_case XFX + +name Yamaha Corporation + name_short Yamaha + url www.yamaha.com + wikipedia Yamaha Corporation + ansi_color 0;35;107 + match_string Yamaha + +name ZOTAC International + name_short ZOTAC + url www.zotac.com + url_support www.zotac.com/support/ + ansi_color 0;90;43 + match_string ZOTAC + diff --git a/deps/sysobj_early/data/sort_vendors.pl b/deps/sysobj_early/data/sort_vendors.pl new file mode 100644 index 00000000..6ed69e58 --- /dev/null +++ b/deps/sysobj_early/data/sort_vendors.pl @@ -0,0 +1,43 @@ +#!/usr/bin/perl + +# Usage: +# sort_vendors.pl +# Output goes to stdout. + +use utf8; +use strict; +#use File::Slurp::Unicode qw(read_file); +sub read_file { + my $file = shift; + return do { + local $/ = undef; + open my $fh, "<", $file || die "Could not open $file: $!"; + <$fh>; + }; +} + +my $file = shift; +die "Invalid file: $file" unless (-f $file && -r $file); +my $raw = read_file($file); +$raw =~ s/^\n*|\n*$//g; + +my $c = 0; +my @coms = (); +my %vendors = (); +SEC: foreach my $s (split(/\n{2,}/, $raw)) { + my @lines = split(/\n/, $s); + foreach my $l (@lines) { + if ($l =~ /^name\s+(.*)/) { + $vendors{"$1_$c"} = $s; + $c++; + next SEC; + } + } + push @coms, $s; +} +foreach (@coms) { + print "$_\n\n"; +} +foreach (sort { lc $a cmp lc $b } keys %vendors) { + print "$vendors{$_}\n\n"; +} diff --git a/deps/sysobj_early/gui/uri_handler.c b/deps/sysobj_early/gui/uri_handler.c new file mode 100644 index 00000000..de9f64a7 --- /dev/null +++ b/deps/sysobj_early/gui/uri_handler.c @@ -0,0 +1,53 @@ +/* + * sysobj - https://github.com/bp0/verbose-spork + * Copyright (C) 2018 Burt P. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +#include +#include "uri_handler.h" + +//compatibility +#ifndef G_SPAWN_DEFAULT +#define G_SPAWN_DEFAULT 0 +#endif + +static uri_handler uri_func = NULL; + +void uri_set_function(uri_handler f) { + uri_func = f; +} + +gboolean uri_open(const gchar *uri) { + gboolean ret = FALSE; + if (uri_func) + ret = uri_func(uri); + if (ret) return TRUE; + + return uri_open_default(uri); +} + +gboolean uri_open_default(const gchar *uri) { + gchar *argv[] = { "/usr/bin/xdg-open", (gchar*)uri, NULL }; + GError *err = NULL; + g_spawn_async(NULL, argv, NULL, G_SPAWN_DEFAULT, NULL, NULL, NULL, &err ); + if (err) { + fprintf(stderr, "Error opening URI %s: %s\n", uri, err->message); + g_error_free(err); + } + return TRUE; +} diff --git a/deps/sysobj_early/gui/uri_handler.h b/deps/sysobj_early/gui/uri_handler.h new file mode 100644 index 00000000..8d7892c5 --- /dev/null +++ b/deps/sysobj_early/gui/uri_handler.h @@ -0,0 +1,32 @@ +/* + * sysobj - https://github.com/bp0/verbose-spork + * Copyright (C) 2018 Burt P. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +#ifndef URI_HANDLER_H +#define URI_HANDLER_H + +#include + +typedef gboolean (*uri_handler)(const gchar *uri); + +void uri_set_function(uri_handler f); +gboolean uri_open(const gchar *uri); +gboolean uri_open_default(const gchar *uri); /* uses xdg-open */ + +#endif diff --git a/deps/sysobj_early/include/appf.h b/deps/sysobj_early/include/appf.h new file mode 100644 index 00000000..b99f9373 --- /dev/null +++ b/deps/sysobj_early/include/appf.h @@ -0,0 +1,40 @@ +/* + * sysobj - https://github.com/bp0/verbose-spork + * Copyright (C) 2018 Burt P. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +#ifndef _APPF_H_ +#define _APPF_H_ + +/* Appends a formatted element to a string, adding an optional + * separator string if the string is not empty. + * The string is created if str is null. + * ex: ret = appf(ret, "; ", "%s = %d", name, value); */ +char *appf(char *str, const char *sep, const char *fmt, ...) + __attribute__ ((format (printf, 3, 4))); + +/* Same as above except that str is untouched. + * ex: ret = appf(keeper, "; ", "%s = %d", name, value); */ +char *appfdup(const char *str, const char *sep, const char *fmt, ...) + __attribute__ ((format (printf, 3, 4))); + +/* for convenience */ +#define appfsp(str, fmt, ...) appf(str, " ", fmt, __VA_ARGS__) +#define appfnl(str, fmt, ...) appf(str, "\n", fmt, __VA_ARGS__) + +#endif diff --git a/deps/sysobj_early/include/auto_free.h b/deps/sysobj_early/include/auto_free.h new file mode 100644 index 00000000..bddaa321 --- /dev/null +++ b/deps/sysobj_early/include/auto_free.h @@ -0,0 +1,67 @@ +/* + * sysobj - https://github.com/bp0/verbose-spork + * Copyright (C) 2018 Burt P. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +#ifndef _AUTO_FREE_H_ +#define _AUTO_FREE_H_ + +#include + +/* DEBUG_AUTO_FREE messages level: + * 0 - none + * 1 - some + * 2 - much + */ +#ifndef DEBUG_AUTO_FREE +#define DEBUG_AUTO_FREE 0 +#endif +/* the period between free_auto_free()s in the main loop */ +#define AF_SECONDS 11 +/* the minimum time between auto_free(p) and free(p) */ +#define AF_DELAY_SECONDS 10 + +#define AF_USE_SYSOBJ 0 + +#if (DEBUG_AUTO_FREE > 0) +#define auto_free(p) auto_free_ex_(p, (GDestroyNotify)g_free, __FILE__, __LINE__, __FUNCTION__) +#define auto_free_ex(p, f) auto_free_ex_(p, f, __FILE__, __LINE__, __FUNCTION__) +#define auto_free_on_exit(p) auto_free_on_exit_ex_(p, (GDestroyNotify)g_free, __FILE__, __LINE__, __FUNCTION__) +#define auto_free_on_exit_ex(p, f) auto_free_on_exit_ex_(p, f, __FILE__, __LINE__, __FUNCTION__) +#else +#define auto_free(p) auto_free_ex_(p, (GDestroyNotify)g_free, NULL, 0, NULL) +#define auto_free_ex(p, f) auto_free_ex_(p, f, NULL, 0, NULL) +#define auto_free_on_exit(p) auto_free_on_exit_ex_(p, (GDestroyNotify)g_free, NULL, 0, NULL) +#define auto_free_on_exit_ex(p, f) auto_free_on_exit_ex_(p, f, NULL, 0, NULL) +#endif +gpointer auto_free_ex_(gpointer p, GDestroyNotify f, const char *file, int line, const char *func); +gpointer auto_free_on_exit_ex_(gpointer p, GDestroyNotify f, const char *file, int line, const char *func); + +/* free all the auto_free marked items in the + * current thread with age > AF_DELAY_SECONDS */ +void free_auto_free(); + +/* call at thread termination: + * free all the auto_free marked items in the + * current thread regardless of age */ +void free_auto_free_thread_final(); + +/* call at program termination */ +void free_auto_free_final(); + +#endif diff --git a/deps/sysobj_early/include/cpubits.h b/deps/sysobj_early/include/cpubits.h new file mode 100644 index 00000000..2d8fe8a6 --- /dev/null +++ b/deps/sysobj_early/include/cpubits.h @@ -0,0 +1,39 @@ +/* + * rpiz - https://github.com/bp0/rpiz + * Copyright (C) 2017 Burt P. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +#ifndef _CPUBITS_H_ +#define _CPUBITS_H_ + +#include + +typedef uint32_t cpubits; +uint32_t cpubits_count(cpubits *b); +int cpubits_min(cpubits *b); +int cpubits_max(cpubits *b); +int cpubits_next(cpubits *b, int start, int end); +cpubits *cpubits_from_str(char *str); +char *cpubits_to_str(cpubits *bits, char *str, int max_len); + +#define CPUBITS_SIZE 4096 /* bytes, multiple of sizeof(uint32_t) */ +#define CPUBIT_SET(BITS, BIT) ((BITS)[(BIT)/32] |= (1 << (BIT)%32)) +#define CPUBIT_GET(BITS, BIT) (((BITS)[(BIT)/32] & (1 << (BIT)%32)) >> (BIT)%32) +#define CPUBITS_CLEAR(BITS) memset((BITS), 0, CPUBITS_SIZE) + +#endif diff --git a/deps/sysobj_early/include/format_early.h b/deps/sysobj_early/include/format_early.h new file mode 100644 index 00000000..e5524e26 --- /dev/null +++ b/deps/sysobj_early/include/format_early.h @@ -0,0 +1,47 @@ +/* + * sysobj - https://github.com/bp0/verbose-spork + * Copyright (C) 2018 Burt P. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +#ifndef _FORMAT_EARLY_H_ +#define _FORMAT_EARLY_H_ + +#include +#include +#include "appf.h" +#include "util_sysobj.h" +#include "vendor.h" + +enum { + FMT_OPT_NONE = 0, + FMT_OPT_ATERM = 1<<16, /* ANSI color terminal */ + FMT_OPT_PANGO = 1<<17, /* pango markup for gtk */ + FMT_OPT_HTML = 1<<18, /* html */ +}; + +gchar *safe_ansi_color(gchar *ansi_color, gboolean free_in); /* verify the ansi color */ +const gchar *color_lookup(int ansi_color); /* ansi_color to html color */ +/* wrap the input str with color based on fmt_opts (none,term,html,pango) */ +gchar *format_with_ansi_color(const gchar *str, const gchar *ansi_color, int fmt_opts); + +void tag_vendor(gchar **str, guint offset, const gchar *vendor_str, const char *ansi_color, int fmt_opts); +gchar *vendor_match_tag(const gchar *vendor_str, int fmt_opts); + +gchar *vendor_list_ribbon(const vendor_list vl_in, int fmt_opts); + +#endif diff --git a/deps/sysobj_early/include/gg_slist.h b/deps/sysobj_early/include/gg_slist.h new file mode 100644 index 00000000..255465ee --- /dev/null +++ b/deps/sysobj_early/include/gg_slist.h @@ -0,0 +1,30 @@ +/* + * sysobj - https://github.com/bp0/verbose-spork + * Copyright (C) 2018 Burt P. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +#ifndef _GG_SLIST_H_ +#define _GG_SLIST_H_ + +#include + +GSList *gg_slist_remove_null(GSList *sl); +GSList *gg_slist_remove_duplicates(GSList *sl); /* by pointer */ +GSList *gg_slist_remove_duplicates_custom(GSList *sl, GCompareFunc func); + +#endif diff --git a/deps/sysobj_early/include/nice_name.h b/deps/sysobj_early/include/nice_name.h new file mode 100644 index 00000000..80031c91 --- /dev/null +++ b/deps/sysobj_early/include/nice_name.h @@ -0,0 +1,32 @@ +/* + * sysobj - https://github.com/bp0/verbose-spork + * Copyright (C) 2018 Burt P. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +#ifndef _NICE_NAME_H_ +#define _NICE_NAME_H_ + +/* cleaned in-place */ +void nice_name_x86_cpuid_model_string(char *cpuid_model_string); + +/* Intel Graphics may have very long names, + * like "Intel Corporation Seventh Generation Something Core Something Something Integrated Graphics Processor Revision Ninety-four" + * cleaned in-place */ +void nice_name_intel_gpu_device(char *pci_ids_device_string); + +#endif diff --git a/deps/sysobj_early/include/strstr_word.h b/deps/sysobj_early/include/strstr_word.h new file mode 100644 index 00000000..f17e78ff --- /dev/null +++ b/deps/sysobj_early/include/strstr_word.h @@ -0,0 +1,35 @@ +/* + * sysobj - https://github.com/bp0/verbose-spork + * Copyright (C) 2018 Burt P. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +#ifndef __STRSTR_WORD_H__ +#define __STRSTR_WORD_H__ + +/* versions of strstr() and strcasestr() where the match must be preceded and + * succeded by a non-alpha-numeric character. */ +char *strstr_word(const char *haystack, const char *needle); +char *strcasestr_word(const char *haystack, const char *needle); + +/* word boundary at start only (prefix), or end only (suffix) */ +char *strstr_word_prefix(const char *haystack, const char *needle); +char *strcasestr_word_prefix(const char *haystack, const char *needle); +char *strstr_word_suffix(const char *haystack, const char *needle); +char *strcasestr_word_suffix(const char *haystack, const char *needle); + +#endif diff --git a/deps/sysobj_early/include/util_edid.h b/deps/sysobj_early/include/util_edid.h new file mode 100644 index 00000000..5bb4b932 --- /dev/null +++ b/deps/sysobj_early/include/util_edid.h @@ -0,0 +1,268 @@ +/* + * sysobj - https://github.com/bp0/verbose-spork + * Copyright (C) 2018 Burt P. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +#ifndef __UTIL_EDID_H__ +#define __UTIL_EDID_H__ + +#define _GNU_SOURCE +#include /* for *int*_t types */ +#include + +typedef struct _edid edid; + +typedef struct { + edid *e; + uint32_t offset; +} edid_addy; + +/* OUI is stored in EDID as 24-bit little-endian, + * but lookup file from IEEE expects big-endian. + * .oui_str is .oui rendered into big-endian for + * easy lookup. */ +typedef struct { + union { + char pnp[7]; /* only needs 3+null */ + char oui_str[7]; /* needs 6+null */ + }; + uint32_t oui; + uint8_t type; /* enum VEN_TYPE_* */ +} edid_ven; + +typedef struct { + char *str; + uint16_t len; + uint8_t is_product_name; + uint8_t is_serial; +} DisplayIDString; + +typedef struct { + uint8_t version; + uint8_t extension_length; + uint8_t primary_use_case; + uint8_t extension_count; + uint16_t blocks; + uint8_t checksum_ok; +} DisplayIDMeta; + +typedef struct { + edid_addy addy; + union { + uint8_t tag; + uint8_t type; + }; + uint8_t revision; + uint8_t len; + uint8_t bounds_ok; + + /* for vendor specific block */ + edid_ven ven; +} DisplayIDBlock; + +typedef struct { + edid_addy addy; + uint8_t interface; + uint8_t supports_hdcp; + uint8_t exists; +} DIExtData; + +/* order by rising priority */ +enum { + OUTSRC_INVALID = -1, + OUTSRC_EDID = 0, + OUTSRC_ETB, + OUTSRC_STD, + OUTSRC_DTD, + OUTSRC_CEA_DTD, + OUTSRC_SVD, + + OUTSRC_DID_TYPE_I, + OUTSRC_DID_TYPE_VI, + OUTSRC_DID_TYPE_VII, +}; + +typedef struct { + float horiz_cm, vert_cm; + float diag_cm, diag_in; + int horiz_blanking, vert_blanking; + int horiz_pixels, vert_lines, vert_pixels; + float vert_freq_hz; + uint8_t is_interlaced; + uint8_t is_preferred; + int stereo_mode; + uint64_t pixel_clock_khz; + int src; /* enum OUTSRC_* */ + uint64_t pixels; /* h*v: easier to compare */ + char class_inch[12]; +} edid_output; + +struct edid_std { + uint8_t *ptr; + edid_output out; +}; + +struct edid_dtd { + edid_addy addy; + uint8_t cea_ext; /* in a CEA block vs one of the regular EDID descriptors */ + edid_output out; + uint8_t bounds_ok; +}; + +struct edid_svd { + uint8_t v; + uint8_t is_native; + edid_output out; +}; + +struct edid_sad { + uint8_t v[3]; + uint8_t format, channels, freq_bits; + int depth_bits; /* format 1 */ + int max_kbps; /* formats 2-8 */ +}; + +struct edid_cea_block { + edid_addy addy; + int type, len; + uint8_t bounds_ok; + + /* for vendor specific block */ + edid_ven ven; +}; + +struct edid_descriptor { + edid_addy addy; + uint8_t type; + char text[14]; +}; + +struct edid_manf_date { + uint8_t week; + uint8_t is_model_year; /* ignore week */ + uint16_t year; + int std; /* enum STD_* */ +}; + +enum { + VEN_TYPE_INVALID = 0, + VEN_TYPE_PNP, + VEN_TYPE_OUI, +}; + +enum { + STD_EDID = 0, + STD_EEDID = 1, + STD_EIACEA861 = 2, + STD_DISPLAYID = 3, + STD_DISPLAYID20 = 4, +}; + +typedef struct _edid { + union { + void* data; + uint8_t* u8; + uint16_t* u16; + }; + unsigned int len; + + /* enum STD_* */ + int std; + + uint8_t ver_major, ver_minor; + uint8_t checksum_ok; /* first 128-byte block only */ + uint8_t ext_blocks, ext_blocks_ok, ext_blocks_fail; + uint8_t *ext_ok; + + int etb_count; + edid_output etbs[24]; + + int std_count; + struct edid_std stds[8]; + + int dtd_count; + struct edid_dtd *dtds; + + int cea_block_count; + struct edid_cea_block *cea_blocks; + + int svd_count; + struct edid_svd *svds; + + int sad_count; + struct edid_sad *sads; + + edid_ven ven; + struct edid_descriptor d[4]; + /* point into d[].text */ + char *name; + char *serial; + char *ut1; + char *ut2; + + uint8_t a_or_d; /* 0 = analog, 1 = digital */ + uint8_t interface; /* digital interface */ + uint8_t bpc; /* digital bpc */ + uint16_t product; + uint32_t n_serial; + struct edid_manf_date dom; + edid_output img; + edid_output img_svd; + edid_output img_max; + uint32_t speaker_alloc_bits; + + DIExtData di; + + DisplayIDMeta did; + int did_block_count; + DisplayIDBlock *did_blocks; + int did_string_count; + DisplayIDString *did_strings; + + int didt_count; + edid_output *didts; + + GString *msg_log; +} edid; +edid *edid_new(const char *data, unsigned int len); +edid *edid_new_from_hex(const char *hex_string); +edid *edid_new_from_file(const char *path); +void edid_free(edid *e); +char *edid_dump_hex(edid *e, int tabs, int breaks); + +const char *edid_standard(int std); +const char *edid_output_src(int src); +const char *edid_interface(int type); +const char *edid_di_interface(int type); +const char *edid_descriptor_type(int type); +const char *edid_ext_block_type(int type); +const char *edid_cea_block_type(int type); +const char *edid_cea_audio_type(int type); + +char *edid_output_describe(edid_output *out); +char *edid_base_descriptor_describe(struct edid_descriptor *d); +char *edid_dtd_describe(struct edid_dtd *dtd, int dump_bytes); +char *edid_cea_block_describe(struct edid_cea_block *blk); +char *edid_cea_audio_describe(struct edid_sad *sad); +char *edid_cea_speaker_allocation_describe(int bitfield, int short_version); +const char *edid_did_block_type(int type); +char *edid_did_block_describe(DisplayIDBlock *blk); + +char *edid_dump2(edid *e); + +#endif diff --git a/deps/sysobj_early/include/util_ids.h b/deps/sysobj_early/include/util_ids.h new file mode 100644 index 00000000..c5dccfe7 --- /dev/null +++ b/deps/sysobj_early/include/util_ids.h @@ -0,0 +1,76 @@ +/* + * sysobj - https://github.com/bp0/verbose-spork + * Copyright (C) 2018 Burt P. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +#ifndef _UTIL_IDS_H_ +#define _UTIL_IDS_H_ + +#include + +#define IDS_LOOKUP_BUFF_SIZE 220 +#define IDS_LOOKUP_MAX_DEPTH 4 + +/* may be static, all results[] are NULL or point into _strs */ +typedef struct { + gchar *results[IDS_LOOKUP_MAX_DEPTH+1]; /* last always NULL */ + gchar _strs[IDS_LOOKUP_BUFF_SIZE*IDS_LOOKUP_MAX_DEPTH]; +} ids_query_result; +#define ids_query_result_new() g_new0(ids_query_result, 1) +#define ids_query_result_free(s) g_free(s); +void ids_query_result_cpy(ids_query_result *dest, ids_query_result *src); + +/* Given a qpath "/X/Y/Z", find names as: + * X ->result[0] + * \tY ->result[1] + * \t\tZ ->result[2] + * + * Works with: + * - pci.ids "// " or "C //" + * ... need to query "" separately + * - arm.ids "/" + * - sdio.ids "/", "C " + * - sdcard.ids "OEMID ", "MANFID " + * - usb.ids "/", "C " etc. + * - edid.ids "<3letter_vendor>" + */ +long scan_ids_file(const gchar *file, const gchar *qpath, ids_query_result *result, long start_offset); + +typedef struct { + gchar *qpath; + ids_query_result result; +} ids_query; + +ids_query *ids_query_new(const gchar *qpath); +void ids_query_free(ids_query *s); +typedef GSList* ids_query_list; + +/* query_list is a GSList of ids_query* */ +long scan_ids_file_list(const gchar *file, ids_query_list query_list, long start_offset); +/* after scan_ids_file_list(), count hits */ +int query_list_count_found(ids_query_list query_list); + +/* returns GSList of ids_query* */ +typedef gchar* (*split_loc_function)(const char *line); +ids_query_list ids_file_all_get_all(const gchar *file, split_loc_function split_loc_func); + +/* debugging */ +void ids_trace_start(); +void ids_trace_stop(); + +#endif diff --git a/deps/sysobj_early/include/util_sysobj.h b/deps/sysobj_early/include/util_sysobj.h new file mode 100644 index 00000000..1bff3d5a --- /dev/null +++ b/deps/sysobj_early/include/util_sysobj.h @@ -0,0 +1,53 @@ +/* + * sysobj - https://github.com/bp0/verbose-spork + * Copyright (C) 2018 Burt P. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +#ifndef _UTIL_SYSOBJ_H_ +#define _UTIL_SYSOBJ_H_ + +#include +#include "appf.h" + +/* string eq */ +#define SEQ(s1, s2) (g_strcmp0((s1), (s2)) == 0) + +/* handy for static halp */ +#define BULLET "\u2022" +#define REFLINK(URI) "" URI "" +#define REFLINKT(TEXT, URI) "" TEXT "" + +gboolean util_have_root(); +void util_null_trailing_slash(gchar *str); /* in-place */ +void util_compress_space(gchar *str); /* in-place, multiple whitespace replaced by one space */ +void util_strstrip_double_quotes_dumb(gchar *str); /* in-place, strips any double-quotes from the start and end of str */ +gchar *util_build_fn(const gchar *base, const gchar *name); /* returns "[/]" */ +gchar *util_canonicalize_path(const gchar *path); /* resolve . and .., but not symlinks */ +gchar *util_normalize_path(const gchar *path, const gchar *relto); /* resolve . and .., and symlinks */ +gsize util_count_lines(const gchar *str); /* doesn't count empty last line */ +gchar *util_escape_markup(gchar *v, gboolean replacing); +int util_get_did(gchar *str, const gchar *lbl); /* ("cpu6", "cpu") -> 6, returns -1 if error */ +int util_maybe_num(gchar *str); /* returns the guessed base, 0 for not num */ +gchar *util_find_line_value(gchar *data, gchar *key, gchar delim); +gchar *util_strchomp_float(gchar* str_float); /* in-place, must use , or . for decimal sep */ +gchar *util_safe_name(const gchar *name, gboolean lower_case); /* make a string into a name nice and safe for file name */ + +/* to quiet -Wunused-parameter nagging. */ +#define PARAM_NOT_UNUSED(p) (void)p + +#endif diff --git a/deps/sysobj_early/src/appf.c b/deps/sysobj_early/src/appf.c new file mode 100644 index 00000000..8e6991e3 --- /dev/null +++ b/deps/sysobj_early/src/appf.c @@ -0,0 +1,63 @@ +/* + * sysobj - https://github.com/bp0/verbose-spork + * Copyright (C) 2018 Burt P. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +#define _GNU_SOURCE /* for vasprintf() */ +#include +#include +#include +#include +#include "appf.h" + +char *appf(char *str, const char *sep, const char *fmt, ...) { + char *buf = NULL; + int inlen, seplen, len; + va_list args; + va_start(args, fmt); + len = vasprintf(&buf, fmt, args); + va_end(args); + if (len < 0) return str; + if (!str) return buf; + inlen = strlen(str); + seplen = (inlen && sep) ? strlen(sep) : 0; + str = realloc(str, inlen + seplen + len + 1); + if (seplen) strcpy(str + inlen, sep); + strcpy(str + inlen + seplen, buf); + free(buf); + return str; +} + +char *appfdup(const char *str, const char *sep, const char *fmt, ...) { + char *buf = NULL, *ret = NULL; + int inlen, seplen, len; + va_list args; + va_start(args, fmt); + len = vasprintf(&buf, fmt, args); + va_end(args); + if (len < 0) return NULL; + if (!str) return buf; + inlen = strlen(str); + seplen = (inlen && sep) ? strlen(sep) : 0; + ret = malloc(inlen + seplen + len + 1); + strcpy(ret, str); + if (seplen) strcpy(ret + inlen, sep); + strcpy(ret + inlen + seplen, buf); + free(buf); + return ret; +} diff --git a/deps/sysobj_early/src/auto_free.c b/deps/sysobj_early/src/auto_free.c new file mode 100644 index 00000000..9a10e27a --- /dev/null +++ b/deps/sysobj_early/src/auto_free.c @@ -0,0 +1,219 @@ +/* + * sysobj - https://github.com/bp0/verbose-spork + * Copyright (C) 2018 Burt P. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +#include "auto_free.h" +#if (AF_USE_SYSOBJ) +#include "sysobj.h" +#else +#include +#define sysobj_elapsed() af_elapsed() +#define sysobj_stats af_stats +static struct { + double auto_free_next; + unsigned long long + auto_freed, + auto_free_len; +} af_stats; +#endif + +//Compatibility +#ifndef G_SOURCE_REMOVE + #define G_SOURCE_REMOVE FALSE +#endif + +#ifndef G_SOURCE_CONTINUE + #define G_SOURCE_CONTINUE TRUE +#endif + + +static GMutex *free_lock = NULL; +static GSList *free_list = NULL; +static gboolean free_final = FALSE; +static GTimer *auto_free_timer = NULL; +static guint free_event_source = 0; +#define af_elapsed() (auto_free_timer ? g_timer_elapsed(auto_free_timer, NULL) : 0) + +#define auto_free_msg(msg, ...) fprintf (stderr, "[%s] " msg "\n", __FUNCTION__, ##__VA_ARGS__) /**/ + +typedef struct { + gpointer ptr; + GThread *thread; + GDestroyNotify f_free; + double stamp; + + const char *file; + int line; + const char *func; +} auto_free_item; + +gboolean free_auto_free_sf(gpointer trash) { + (void)trash; + if (free_final) { + free_event_source = 0; + return G_SOURCE_REMOVE; + } + free_auto_free(); + sysobj_stats.auto_free_next = sysobj_elapsed() + AF_SECONDS; + return G_SOURCE_CONTINUE; +} + +gpointer auto_free_ex_(gpointer p, GDestroyNotify f, const char *file, int line, const char *func) { + if (!p) return p; + + /* an auto_free() after free_auto_free_final()? + * Changed mind, I guess, just go with it. */ + if (free_final) + free_final = FALSE; + + if (!auto_free_timer) { + auto_free_timer = g_timer_new(); + g_timer_start(auto_free_timer); + } + + if (!free_event_source) { + /* if there is a main loop, then this will call + * free_auto_free() in idle time every AF_SECONDS seconds. + * If there is no main loop, then free_auto_free() + * will be called at sysobj_cleanup() and when exiting + * threads, as in sysobj_foreach(). */ + free_event_source = g_timeout_add_seconds(AF_SECONDS, (GSourceFunc)free_auto_free_sf, NULL); + sysobj_stats.auto_free_next = sysobj_elapsed() + AF_SECONDS; + } + + auto_free_item *z = g_new0(auto_free_item, 1); + z->ptr = p; + z->f_free = f; + z->thread = g_thread_self(); + z->file = file; + z->line = line; + z->func = func; + z->stamp = af_elapsed(); +#if GLIB_CHECK_VERSION(2,32,0) + if(free_lock==NULL) {free_lock=g_new(GMutex,1);g_mutex_init(free_lock);} +#else + if(free_lock==NULL) free_lock=g_mutex_new(); +#endif + g_mutex_lock(free_lock); + free_list = g_slist_prepend(free_list, z); + sysobj_stats.auto_free_len++; + g_mutex_unlock(free_lock); + return p; +} + +gpointer auto_free_on_exit_ex_(gpointer p, GDestroyNotify f, const char *file, int line, const char *func) { + if (!p) return p; + + auto_free_item *z = g_new0(auto_free_item, 1); + z->ptr = p; + z->f_free = f; + z->thread = g_thread_self(); + z->file = file; + z->line = line; + z->func = func; + z->stamp = -1.0; +#if GLIB_CHECK_VERSION(2,32,0) + if(free_lock==NULL) g_mutex_init(free_lock); +#else + if(free_lock==NULL) free_lock=g_mutex_new(); +#endif + g_mutex_lock(free_lock); + free_list = g_slist_prepend(free_list, z); + sysobj_stats.auto_free_len++; + g_mutex_unlock(free_lock); + return p; +} + +static struct { GDestroyNotify fptr; char *name; } + free_function_tab[] = { + { (GDestroyNotify) g_free, "g_free" }, +#if (AF_USE_SYSOBJ) + { (GDestroyNotify) sysobj_free, "sysobj_free" }, + { (GDestroyNotify) class_free, "class_free" }, + { (GDestroyNotify) sysobj_filter_free, "sysobj_filter_free" }, + { (GDestroyNotify) sysobj_virt_free, "sysobj_virt_free" }, +#endif + { NULL, "(null)" }, +}; + +static void free_auto_free_ex(gboolean thread_final) { + GThread *this_thread = g_thread_self(); + GSList *l = NULL, *n = NULL; + long long unsigned fc = 0; + double now = af_elapsed(); + + if (!free_list) return; + +#if GLIB_CHECK_VERSION(2,32,0) + if(free_lock==NULL) {free_lock=g_new(GMutex,1);g_mutex_init(free_lock);} +#else + if(free_lock==NULL) free_lock=g_mutex_new(); +#endif + g_mutex_lock(free_lock); + if (DEBUG_AUTO_FREE) + auto_free_msg("%llu total items in queue, but will free from thread %p only... ", sysobj_stats.auto_free_len, this_thread); + for(l = free_list; l; l = n) { + auto_free_item *z = (auto_free_item*)l->data; + n = l->next; + if (!free_final && z->stamp < 0) continue; + double age = now - z->stamp; + if (free_final || (z->thread == this_thread && (thread_final || age > AF_DELAY_SECONDS) ) ) { + if (DEBUG_AUTO_FREE == 2) { + char fptr[128] = "", *fname; + for(int i = 0; i < (int)G_N_ELEMENTS(free_function_tab); i++) + if (z->f_free == free_function_tab[i].fptr) + fname = free_function_tab[i].name; + if (!fname) { + snprintf(fname, 127, "%p", z->f_free); + fname = fptr; + } + if (z->file || z->func) + auto_free_msg("free: %s(%p) age:%lfs from %s:%d %s()", fname, z->ptr, age, z->file, z->line, z->func); + else + auto_free_msg("free: %s(%p) age:%lfs", fname, z->ptr, age); + } + + z->f_free(z->ptr); + g_free(z); + free_list = g_slist_delete_link(free_list, l); + fc++; + } + } + if (DEBUG_AUTO_FREE) + auto_free_msg("... freed %llu (from thread %p)", fc, this_thread); + sysobj_stats.auto_freed += fc; + sysobj_stats.auto_free_len -= fc; + g_mutex_unlock(free_lock); +} + +void free_auto_free_thread_final() { + free_auto_free_ex(TRUE); +} + +void free_auto_free_final() { + free_final = TRUE; + free_auto_free_ex(TRUE); + if (auto_free_timer) + g_timer_destroy(auto_free_timer); + auto_free_timer = NULL; +} + +void free_auto_free() { + free_auto_free_ex(FALSE); +} diff --git a/deps/sysobj_early/src/cpubits.c b/deps/sysobj_early/src/cpubits.c new file mode 100644 index 00000000..fe8ba207 --- /dev/null +++ b/deps/sysobj_early/src/cpubits.c @@ -0,0 +1,132 @@ +/* + * rpiz - https://github.com/bp0/rpiz + * Copyright (C) 2017 Burt P. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +#define _GNU_SOURCE +#include +#include +#include +#include "cpubits.h" + +uint32_t cpubits_count(cpubits *b) { + static const uint32_t max = CPUBITS_SIZE * 8; + uint32_t count = 0, i = 0; + while (i < max) { + count += CPUBIT_GET(b, i); + i++; + } + return count; +} + +int cpubits_min(cpubits *b) { + int i = 0; + while (i < CPUBITS_SIZE * 8) { + if (CPUBIT_GET(b, i)) + return i; + i++; + } + return -1; +} + +int cpubits_max(cpubits *b) { + int i = CPUBITS_SIZE * 8 - 1; + while (i >= 0) { + if (CPUBIT_GET(b, i)) + return i; + i--; + } + return i; +} + +int cpubits_next(cpubits *b, int start, int end) { + start++; /* not including the start bit */ + if (start >= 0) { + int i = start; + if (end == -1) + end = CPUBITS_SIZE * 8; + while (i < end) { + if (CPUBIT_GET(b, i)) + return i; + i++; + } + } + return -1; +} + +cpubits *cpubits_from_str(char *str) { + char *v, *nv, *hy; + int r0, r1; + cpubits *newbits = malloc(CPUBITS_SIZE); + if (newbits) { + memset(newbits, 0, CPUBITS_SIZE); + if (str != NULL) { + v = (char*)str; + while ( *v != 0 ) { + nv = strchr(v, ','); /* strchrnul() */ + if (nv == NULL) nv = strchr(v, 0); /* equivalent */ + hy = strchr(v, '-'); + if (hy && hy < nv) { + r0 = strtol(v, NULL, 0); + r1 = strtol(hy + 1, NULL, 0); + } else { + r0 = r1 = strtol(v, NULL, 0); + } + for (; r0 <= r1; r0++) { + CPUBIT_SET(newbits, r0); + } + v = (*nv == ',') ? nv + 1 : nv; + } + } + } + return newbits; +} + +char *cpubits_to_str(cpubits *bits, char *str, int max_len) { + static const uint32_t max = CPUBITS_SIZE * 8; + uint32_t i = 1, seq_start = 0, seq_last = 0, seq = 0, l = 0; + char buffer[65536] = ""; + if (CPUBIT_GET(bits, 0)) { + seq = 1; + strcpy(buffer, "0"); + } + while (i < max) { + if (CPUBIT_GET(bits, i) ) { + seq_last = i; + if (!seq) { + seq = 1; + seq_start = i; + l = strlen(buffer); + sprintf(buffer + l, "%s%d", l ? "," : "", i); + } + } else { + if (seq && seq_last != seq_start) { + l = strlen(buffer); + sprintf(buffer + l, "-%d", seq_last); + } + seq = 0; + } + i++; + } + if (str == NULL) + return strdup(buffer); + else { + strncpy(str, buffer, max_len); + return str; + } +} diff --git a/deps/sysobj_early/src/format_early.c b/deps/sysobj_early/src/format_early.c new file mode 100644 index 00000000..0220cd8d --- /dev/null +++ b/deps/sysobj_early/src/format_early.c @@ -0,0 +1,160 @@ +/* + * sysobj - https://github.com/bp0/verbose-spork + * Copyright (C) 2018 Burt P. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +#include "format_early.h" +#include +#include + +#define ANSI_COLOR_RESET "\x1b[0m" + +const gchar *color_lookup(int ansi_color) { + static struct { int ansi; const gchar *html; } tab[] = { + { 30, "#010101" }, { 31, "#de382b" }, { 32, "#39b54a" }, { 33, "#ffc706" }, + { 34, "#006fb8" }, { 35, "#762671" }, { 36, "#2cb5e9" }, { 37, "#cccccc" }, + { 90, "#808080" }, { 91, "#ff0000" }, { 92, "#00ff00" }, { 93, "#ffff00" }, + { 94, "#0000ff" }, { 95, "#ff00ff" }, { 96, "#00ffff" }, { 97, "#ffffff" }, + { 40, "#010101" }, { 41, "#de382b" }, { 42, "#39b54a" }, { 43, "#ffc706" }, + { 44, "#006fb8" }, { 45, "#762671" }, { 46, "#2cb5e9" }, { 47, "#cccccc" }, + { 100, "#808080" }, { 101, "#ff0000" }, { 102, "#00ff00" }, { 103, "#ffff00" }, + { 104, "#0000ff" }, { 105, "#ff00ff" }, { 106, "#00ffff" }, { 107, "#ffffff" }, + }; + for (int i = 0; i<(int)G_N_ELEMENTS(tab); i++) + if (tab[i].ansi == ansi_color) + return tab[i].html; + return NULL; +} + +gchar *safe_ansi_color(gchar *ansi_color, gboolean free_in) { + if (!ansi_color) return NULL; + gchar *ret = NULL; + gchar **codes = g_strsplit(ansi_color, ";", -1); + if (free_in) + g_free(ansi_color); + int len = g_strv_length(codes); + for(int i = 0; i < len; i++) { + int c = atoi(codes[i]); + if (c == 0 || c == 1 + || ( c >= 30 && c <= 37) + || ( c >= 40 && c <= 47) + || ( c >= 90 && c <= 97) + || ( c >= 100 && c <= 107) ) { + ret = appf(ret, ";", "%s", codes[i]); + } + } + g_strfreev(codes); + return ret; +} + +gchar *format_with_ansi_color(const gchar *str, const gchar *ansi_color, int fmt_opts) { + gchar *ret = NULL; + + gchar *safe_color = g_strdup(ansi_color); + util_strstrip_double_quotes_dumb(safe_color); + + if (fmt_opts & FMT_OPT_ATERM) { + safe_color = safe_ansi_color(safe_color, TRUE); + ret = g_strdup_printf("\x1b[%sm%s" ANSI_COLOR_RESET, safe_color, str); + goto format_with_ansi_color_end; + } + + if (fmt_opts & FMT_OPT_PANGO || fmt_opts & FMT_OPT_HTML) { + int fgc = 37, bgc = 40; + gchar **codes = g_strsplit(safe_color, ";", -1); + int len = g_strv_length(codes); + for(int i = 0; i < len; i++) { + int c = atoi(codes[i]); + if ( (c >= 30 && c <= 37) + || ( c >= 90 && c <= 97 ) ) { + fgc = c; + } + if ( (c >= 40 && c <= 47) + || ( c >= 100 && c <= 107) ) { + bgc = c; + } + } + g_strfreev(codes); + const gchar *html_color_fg = color_lookup(fgc); + const gchar *html_color_bg = color_lookup(bgc); + if (fmt_opts & FMT_OPT_PANGO) + ret = g_strdup_printf(" %s ", html_color_bg, html_color_fg, str); + else if (fmt_opts & FMT_OPT_HTML) + ret = g_strdup_printf(" %s ", html_color_bg, html_color_fg, str); + } + +format_with_ansi_color_end: + g_free(safe_color); + if (!ret) + ret = g_strdup(str); + return ret; +} + +void tag_vendor(gchar **str, guint offset, const gchar *vendor_str, const char *ansi_color, int fmt_opts) { + if (!str || !*str) return; + if (!vendor_str || !ansi_color) return; + gchar *work = *str, *new = NULL; + if (g_str_has_prefix(work + offset, vendor_str) + || strncasecmp(work + offset, vendor_str, strlen(vendor_str)) == 0) { + gchar *cvs = format_with_ansi_color(vendor_str, ansi_color, fmt_opts); + *(work+offset) = 0; + new = g_strdup_printf("%s%s%s", work, cvs, work + offset + strlen(vendor_str) ); + g_free(work); + *str = new; + g_free(cvs); + } +} + +gchar *vendor_match_tag(const gchar *vendor_str, int fmt_opts) { + const Vendor *v = vendor_match(vendor_str, NULL); + if (v) { + gchar *ven_tag = v->name_short ? g_strdup(v->name_short) : g_strdup(v->name); + tag_vendor(&ven_tag, 0, ven_tag, v->ansi_color, fmt_opts); + return ven_tag; + } + return NULL; +} + +gchar *vendor_list_ribbon(const vendor_list vl_in, int fmt_opts) { + gchar *ret = NULL; + vendor_list vl = g_slist_copy(vl_in); /* shallow is fine */ + vl = vendor_list_remove_duplicates(vl); + if (vl) { + GSList *l = vl, *n = l ? l->next : NULL; + /* replace each vendor with the vendor tag */ + for(; l; l = n) { + n = l->next; + const Vendor *v = l->data; + if (!v) { + vl = g_slist_delete_link(vl, l); + continue; + } + gchar *ven_tag = v->name_short ? g_strdup(v->name_short) : g_strdup(v->name); + if(ven_tag) { + tag_vendor(&ven_tag, 0, ven_tag, v->ansi_color, fmt_opts); + l->data = ven_tag; + } + } + /* vl is now a regular GSList of formatted vendor tag strings */ + vl = gg_slist_remove_duplicates_custom(vl, (GCompareFunc)g_strcmp0); + for(l = vl; l; l = l->next) + ret = appfsp(ret, "%s", (gchar*)l->data); + } + g_slist_free_full(vl, g_free); + return ret; +} diff --git a/deps/sysobj_early/src/gg_slist.c b/deps/sysobj_early/src/gg_slist.c new file mode 100644 index 00000000..595dbc46 --- /dev/null +++ b/deps/sysobj_early/src/gg_slist.c @@ -0,0 +1,49 @@ +/* + * sysobj - https://github.com/bp0/verbose-spork + * Copyright (C) 2018 Burt P. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +#include + +GSList *gg_slist_remove_duplicates(GSList *sl) { + for (GSList *l = sl; l; l = l->next) { + GSList *d = NULL; + while(d = g_slist_find(l->next, l->data) ) + sl = g_slist_delete_link(sl, d); + } + return sl; +} + +GSList *gg_slist_remove_duplicates_custom(GSList *sl, GCompareFunc func) { + for (GSList *l = sl; l; l = l->next) { + GSList *d = NULL; + while(d = g_slist_find_custom(l->next, l->data, func) ) + sl = g_slist_delete_link(sl, d); + } + return sl; +} + +GSList *gg_slist_remove_null(GSList *sl) { + GSList *n = sl ? sl->next : NULL; + for (GSList *l = sl; l; l = n) { + n = l->next; + if (l->data == NULL) + sl = g_slist_delete_link(sl, l); + } + return sl; +} diff --git a/deps/sysobj_early/src/nice_name.c b/deps/sysobj_early/src/nice_name.c new file mode 100644 index 00000000..e5e15a46 --- /dev/null +++ b/deps/sysobj_early/src/nice_name.c @@ -0,0 +1,203 @@ +/* + * sysobj - https://github.com/bp0/verbose-spork + * Copyright (C) 2018 Burt P. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +#define _GNU_SOURCE +#include +#include + +#include "nice_name.h" +#include "util_sysobj.h" + +/* export */ +/* replaces the extra chars with spaces, then when done with a series of + * str_shorten()s, use util_compress_space() to squeeze. */ +gboolean str_shorten(gchar *str, const gchar *find, const gchar *replace) { + if (!str || !find || !replace) return FALSE; + long unsigned lf = strlen(find); + long unsigned lr = strlen(replace); + gchar *p = strstr(str, find); + if (p) { + if (lr > lf) lr = lf; + gchar *buff = g_strnfill(lf, ' '); + strncpy(buff, replace, lr); + strncpy(p, buff, lf); + g_free(buff); + return TRUE; + } + return FALSE; +} + +gboolean str_shorten_anycase(gchar *str, const gchar *find, const gchar *replace) { + if (!str || !find || !replace) return FALSE; + long unsigned lf = strlen(find); + long unsigned lr = strlen(replace); + gchar *p = strcasestr(str, find); + if (p) { + if (lr > lf) lr = lf; + gchar *buff = g_strnfill(lf, ' '); + strncpy(buff, replace, lr); + strncpy(p, buff, lf); + g_free(buff); + return TRUE; + } + return FALSE; +} + +void nice_name_x86_cpuid_model_string(char *cpuid_model_string) { + static gboolean move_vendor_to_front = TRUE; + static gboolean remove_long_core_count = TRUE; + static gboolean remove_amd_compute_cores = TRUE; + static gboolean remove_amd_xn_ncore_redundancy = TRUE; + static gboolean remove_processor_cpu_apu_etc = TRUE; + static gboolean remove_mhz_ghz = TRUE; + static gboolean remove_radeon = TRUE; + + if (!cpuid_model_string) return; + g_strstrip(cpuid_model_string); + + while(str_shorten(cpuid_model_string, "Genuine Intel", "Intel")) {}; + while(str_shorten_anycase(cpuid_model_string, "(R)", "")) {}; + while(str_shorten_anycase(cpuid_model_string, "(TM)", "")) {}; + while(str_shorten_anycase(cpuid_model_string, "(C)", "")) {}; + while(str_shorten(cpuid_model_string, "@", "")) {}; + + if (move_vendor_to_front) { + /* vendor not at the beginning, try to move there. + * ex: Mobile AMD Sempron(tm) Processor 3600+ + * ex: Dual Core AMD Opteron(tm) Processor 165 */ + char *intel = strstr(cpuid_model_string, "Intel "); + char *amd = strstr(cpuid_model_string, "AMD "); + if (amd || intel) { + if (amd && !intel) { + if (amd != cpuid_model_string) { + int l = amd - cpuid_model_string; + memmove(cpuid_model_string+4, cpuid_model_string, l); + memcpy(cpuid_model_string, "AMD ", 4); + } + } else if (intel && !amd) { + int l = intel - cpuid_model_string; + memmove(cpuid_model_string+6, cpuid_model_string, l); + memcpy(cpuid_model_string, "Intel ", 6); + } + } + } + + if (g_str_has_prefix(cpuid_model_string, "AMD")) { + while(str_shorten(cpuid_model_string, "Mobile Technology", "Mobile")) {}; + + if (remove_radeon) { + char *radeon = strcasestr(cpuid_model_string, "with Radeon"); + if (!radeon) + radeon = strcasestr(cpuid_model_string, "Radeon"); + if (radeon) *radeon = 0; + } + + if (remove_amd_compute_cores) { + if (strcasestr(cpuid_model_string, " COMPUTE CORES ")) { + /* ex: AMD FX-9800P RADEON R7, 12 COMPUTE CORES 4C+8G */ + char *comma = strchr(cpuid_model_string, ','); + if (comma) *comma = 0; + } + } + + if (remove_amd_xn_ncore_redundancy) { + /* remove Xn n-core redundancy */ + if (strstr(cpuid_model_string, "X2")) { + str_shorten(cpuid_model_string, "Dual Core", ""); + str_shorten(cpuid_model_string, "Dual-Core", ""); + } + if (strstr(cpuid_model_string, "X3")) + str_shorten(cpuid_model_string, "Triple-Core", ""); + if (strstr(cpuid_model_string, "X4")) + str_shorten(cpuid_model_string, "Quad-Core", ""); + } + } + + if (g_str_has_prefix(cpuid_model_string, "Cyrix")) { + /* ex: Cyrix MediaGXtm MMXtm Enhanced */ + while(str_shorten(cpuid_model_string, "tm ", "")) {}; + } + + if (remove_processor_cpu_apu_etc) { + while(str_shorten(cpuid_model_string, " CPU", "")) {}; + while(str_shorten(cpuid_model_string, " APU", "")) {}; + while(str_shorten_anycase(cpuid_model_string, " Integrated Processor", "")) {}; + while(str_shorten_anycase(cpuid_model_string, " Processor", "")) {}; + } else { + while(str_shorten(cpuid_model_string, " processor", " Processor")) {}; + } + + if (remove_mhz_ghz) { + /* 1400MHz, 1.6+ GHz, etc */ + char *u = NULL; + while((u = strcasestr(cpuid_model_string, "GHz")) + || (u = strcasestr(cpuid_model_string, "MHz")) ) { + if (u[3] == '+') u[3] = ' '; + strncpy(u, " ", 3); + while(isspace(*u)) {u--;} + while (isdigit(*u) || *u == '.' || *u == '+') + { *u = ' '; u--;} + } + } + + if (remove_long_core_count) { + /* note: "Intel Core 2 Duo" and "Intel Core 2 Quad" + * are the marketing names, don't remove those. */ + static char *count_strings[] = { + "Dual", "Triple", "Quad", "Six", + "Eight", "Octal", "Twelve", "Sixteen", + "8", "16", "24", "32", "48", "56", "64", + }; + char buffer[] = "Enough room for the longest... -Core"; + char *dash = strchr(buffer, '-'); + char *m = NULL; + + unsigned int i = 0; + for(; i < G_N_ELEMENTS(count_strings); i++) { + int l = strlen(count_strings[i]); + m = dash-l; + memcpy(m, count_strings[i], l); + *dash = '-'; + while(str_shorten_anycase(cpuid_model_string, m, "")) {}; + *dash = ' '; + while(str_shorten_anycase(cpuid_model_string, m, "")) {}; + } + } + + /* finalize */ + util_compress_space(cpuid_model_string); + g_strstrip(cpuid_model_string); +} + +/* Intel Graphics may have very long names, + * like "Intel Corporation Seventh Generation Something Core Something Something Integrated Graphics Processor Revision Ninety-four" */ +void nice_name_intel_gpu_device(char *pci_ids_device_string) { + while(str_shorten_anycase(pci_ids_device_string, "(R)", "")) {}; /* Intel(R) -> Intel */ + str_shorten(pci_ids_device_string, "Graphics Controller", "Graphics"); + str_shorten(pci_ids_device_string, "Graphics Device", "Graphics"); + str_shorten(pci_ids_device_string, "Generation", "Gen"); + str_shorten(pci_ids_device_string, "Core Processor", "Core"); + str_shorten(pci_ids_device_string, "Atom Processor", "Atom"); + str_shorten(pci_ids_device_string, "Xeon Processor", "Xeon"); + str_shorten(pci_ids_device_string, "Celeron Processor", "Celeron"); + str_shorten(pci_ids_device_string, "Pentium Processor", "Pentium"); + util_compress_space(pci_ids_device_string); + g_strstrip(pci_ids_device_string); +} diff --git a/deps/sysobj_early/src/strstr_word.c b/deps/sysobj_early/src/strstr_word.c new file mode 100644 index 00000000..0b51e4ac --- /dev/null +++ b/deps/sysobj_early/src/strstr_word.c @@ -0,0 +1,80 @@ +/* + * sysobj - https://github.com/bp0/verbose-spork + * Copyright (C) 2018 Burt P. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +/* versions of strstr() and strcasestr() where the match must be preceded and + * succeded by a non-alpha-numeric character. */ + +#define _GNU_SOURCE +#include +#include + +static char *_strstr(const char *haystack, const char *needle, int anycase) { + return anycase + ? strcasestr(haystack, needle) + : strstr(haystack, needle); +} + +static char *_strstr_word(const char *haystack, const char *needle, + int anycase, int prefix_ok, int suffix_ok) { + + if (!haystack || !needle) + return NULL; + + char *c; + const char *p = haystack; + size_t l = strlen(needle); + while((c = _strstr(p, needle, anycase))) { + const char *before = (c == haystack) ? NULL : c-1; + const char *after = c + l; + int ok = 1, wbs = 1, wbe = 1; + if (isalnum(*after)) wbe = 0; + if (before && isalnum(*before)) wbs = 0; + if (!wbe && !prefix_ok) ok = 0; + if (!wbs && !suffix_ok) ok = 0; + if (!(wbs || wbe)) ok = 0; + if (ok) return c; + p++; + } + return NULL; +} + +char *strstr_word(const char *haystack, const char *needle) { + return _strstr_word(haystack, needle, 0, 0, 0); +} + +char *strcasestr_word(const char *haystack, const char *needle) { + return _strstr_word(haystack, needle, 1, 0, 0); +} + +char *strstr_word_prefix(const char *haystack, const char *needle) { + return _strstr_word(haystack, needle, 0, 1, 0); +} + +char *strcasestr_word_prefix(const char *haystack, const char *needle) { + return _strstr_word(haystack, needle, 1, 1, 0); +} + +char *strstr_word_suffix(const char *haystack, const char *needle) { + return _strstr_word(haystack, needle, 0, 0, 1); +} + +char *strcasestr_word_suffix(const char *haystack, const char *needle) { + return _strstr_word(haystack, needle, 1, 0, 1); +} diff --git a/deps/sysobj_early/src/util_edid.c b/deps/sysobj_early/src/util_edid.c new file mode 100644 index 00000000..06c5534e --- /dev/null +++ b/deps/sysobj_early/src/util_edid.c @@ -0,0 +1,1470 @@ +/* + * sysobj - https://github.com/bp0/verbose-spork + * Copyright (C) 2018 Burt P. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +#define _GNU_SOURCE +#include +#include +#include +#include +#include +#include +#include "gettext.h" +#include "util_edid.h" +#include "util_sysobj.h" + +#include "util_edid_svd_table.c" + +// TODO: find a better fix, I've seen a few EDID strings with bogus chars +#if !GLIB_CHECK_VERSION(2,52,0) +__attribute__ ((weak)) +gchar *g_utf8_make_valid(const gchar *s, const gssize l) { + if (l < 0) + return g_strdup(s); + else + return g_strndup(s, (gsize)l); +} +#endif + +#define NOMASK (~0U) +#define BFMASK(LSB, MASK) (MASK << LSB) + +#define DPTR(ADDY) (uint8_t*)(&((ADDY).e->u8[(ADDY).offset])) +#define OFMT "@%03d" /* for addy.offset */ + +#define EDID_MSG_STDERR 0 +#define edid_msg(e, msg, ...) {\ + if (EDID_MSG_STDERR) fprintf (stderr, ">[%s;L%d] " msg "\n", __FUNCTION__, __LINE__, ##__VA_ARGS__); \ + g_string_append_printf(e->msg_log, "[%s;L%d] " msg "\n", __FUNCTION__, __LINE__, ##__VA_ARGS__); } + +static int str_make_printable(char *str) { + int rc = 0; + char *p; + for(p = str; *p; p++) { + if (!isprint(*p)) { + *p = '.'; + rc++; + } + } + return rc; +} + +static inline +uint32_t bf_value(uint32_t value, uint32_t mask) { + uint32_t result = value & mask; + if (result) + while(!(mask & 1)) { + result >>= 1; + mask >>= 1; + } + return result; +} + +static inline +uint8_t bounds_check(edid *e, uint32_t offset) { + if (!e) return 0; + if (offset > e->len) return 0; + return 1; +} + +static inline +char *rstr(edid *e, uint32_t offset, uint32_t len) { + if (!bounds_check(e, offset+len)) return NULL; + char *raw = malloc(len+1), *ret = NULL; + strncpy(raw, (char*)&e->u8[offset], len); + raw[len] = 0; + ret = g_utf8_make_valid(raw, len); + g_free(raw); + return ret; +} + +static inline +char *rstr_strip(edid *e, uint32_t offset, uint32_t len) { + if (!bounds_check(e, offset+len)) return NULL; + char *raw = malloc(len+1), *ret = NULL; + strncpy(raw, (char*)&e->u8[offset], len); + raw[len] = 0; + ret = g_strstrip(g_utf8_make_valid(raw, len)); + g_free(raw); + return ret; +} + +static inline +uint32_t r8(edid *e, uint32_t offset, uint32_t mask) { + if (!bounds_check(e, offset)) return 0; + return bf_value(e->u8[offset], mask); +} + +static inline +uint32_t r16le(edid *e, uint32_t offset, uint32_t mask) { + if (!bounds_check(e, offset+1)) return 0; + uint32_t v = (e->u8[offset+1] << 8) + e->u8[offset]; + return bf_value(v, mask); +} + +static inline +uint32_t r16be(edid *e, uint32_t offset, uint32_t mask) { + if (!bounds_check(e, offset+1)) return 0; + uint32_t v = (e->u8[offset] << 8) + e->u8[offset+1]; + return bf_value(v, mask); +} + +static inline +uint32_t r24le(edid *e, uint32_t offset, uint32_t mask) { + if (!bounds_check(e, offset+2)) return 0; + uint32_t v = (e->u8[offset+2] << 16) + (e->u8[offset+1] << 8) + e->u8[offset]; + return bf_value(v, mask); +} + +static inline +uint32_t r24be(edid *e, uint32_t offset, uint32_t mask) { + if (!bounds_check(e, offset+2)) return 0; + uint32_t v = (e->u8[offset] << 16) + (e->u8[offset+1] << 8) + e->u8[offset+2]; + return bf_value(v, mask); +} + +static inline +uint32_t r32le(edid *e, uint32_t offset, uint32_t mask) { + if (!bounds_check(e, offset+3)) return 0; + uint32_t v = (e->u8[offset+3] << 24) + (e->u8[offset+2] << 16) + + (e->u8[offset+1] << 8) + e->u8[offset]; + return bf_value(v, mask); +} + +static inline +uint32_t r32be(edid *e, uint32_t offset, uint32_t mask) { + if (!bounds_check(e, offset+3)) return 0; + uint32_t v = (e->u8[offset] << 24) + (e->u8[offset+1] << 16) + + (e->u8[offset+2] << 8) + e->u8[offset+3]; + return bf_value(v, mask); +} + +static inline +int rpnpcpy(edid_ven *dest, edid *e, uint32_t offset) { + uint32_t pnp = r16be(e, offset, NOMASK); + edid_ven ret = {.type = VEN_TYPE_INVALID}; + if (pnp) { + ret.type = VEN_TYPE_PNP; + ret.pnp[2] = 64 + (pnp & 0x1f); + ret.pnp[1] = 64 + ((pnp >> 5) & 0x1f); + ret.pnp[0] = 64 + ((pnp >> 10) & 0x1f); + *dest = ret; + return 1; + } + return 0; +} + +static inline +int rouicpy(edid_ven *dest, edid *e, uint32_t offset) { + edid_ven ret = {.type = VEN_TYPE_OUI}; + ret.oui = r24le(e, offset, NOMASK); + sprintf(ret.oui_str, "%02x%02x%02x", + (ret.oui >> 16) & 0xff, + (ret.oui >> 8) & 0xff, + ret.oui & 0xff ); + if (ret.oui) { + *dest = ret; + return 1; + } + return 0; +} + +static int _block_check_n(const void *bytes, int len) { + if (!bytes) return 0; + uint8_t sum = 0; + uint8_t *data = (uint8_t*)bytes; + int i; + for(i=0; iu8, len); +} + +static int block_check(edid *e, uint32_t offset) { + if (!bounds_check(e, offset+128)) return 0; + return _block_check_n(e->u8, 128); +} + +static char *hex_bytes(uint8_t *bytes, int count) { + char *buffer = malloc(count*3+1), *p = buffer; + memset(buffer, 0, count*3+1); + int i; + for(i = 0; i < count; i++) { + sprintf(p, "%02x ", (unsigned int)bytes[i]); + p += 3; + } + return buffer; +} + +#define OUTPUT_CPY_SIZE(DEST, SRC) \ + (DEST).horiz_cm = (SRC).horiz_cm; \ + (DEST).vert_cm = (SRC).vert_cm; \ + (DEST).diag_cm = (SRC).diag_cm; \ + (DEST).diag_in = (SRC).diag_in; \ + edid_output_fill(&(DEST)); + +static void edid_output_fill(edid_output *out) { + out->diag_cm = + sqrt( (out->horiz_cm * out->horiz_cm) + + (out->vert_cm * out->vert_cm) ); + out->diag_in = out->diag_cm / 2.54; + + if (out->is_interlaced) { + if (out->vert_lines) + out->vert_pixels = out->vert_lines * 2; + else + out->vert_lines = out->vert_pixels / 2; + } else { + if (out->vert_lines) + out->vert_pixels = out->vert_lines; + else + out->vert_lines = out->vert_pixels; + } + + if (!out->vert_freq_hz && out->pixel_clock_khz) { + uint64_t h = out->horiz_pixels + out->horiz_blanking; + uint64_t v = out->vert_lines + out->vert_blanking; + if (h && v) { + uint64_t work = out->pixel_clock_khz * 1000; + work /= (h*v); + out->vert_freq_hz = work; + } + } + + out->pixels = out->horiz_pixels; + out->pixels *= out->vert_pixels; + + if (out->diag_in) { + static const char *inlbl = "\u2033"; /* double prime */ + sprintf(out->class_inch, "%0.1f%s", out->diag_in, inlbl); + util_strchomp_float(out->class_inch); + } +} + +static void cea_block_decode(struct edid_cea_block *blk) { + if (!blk) return; + if (!blk->bounds_ok) + blk->bounds_ok = + bounds_check(blk->addy.e, blk->addy.offset + 1 + blk->len); + if (!blk->bounds_ok) return; + + edid *e = blk->addy.e; + static uint32_t h = 1; /* header size */ + uint32_t a = blk->addy.offset; /* start of block, includes header */ + uint8_t *ptr = DPTR(blk->addy); + int i; + switch(blk->type) { + case 0x1: /* SADS */ + for(i = h; i <= blk->len; i+=3) { + struct edid_sad *sad = &e->sads[e->sad_count]; + sad->v[0] = ptr[i]; + sad->v[1] = ptr[i+1]; + sad->v[2] = ptr[i+2]; + sad->format = bf_value(sad->v[0], 0x78); + sad->channels = 1 + bf_value(sad->v[0], 0x07); + sad->freq_bits = sad->v[1]; + if (sad->format == 1) { + sad->depth_bits = sad->v[2]; + } else if (sad->format >= 2 + && sad->format <= 8) { + sad->max_kbps = 8 * sad->v[2]; + } + e->sad_count++; + } + break; + case 0x4: /* Speaker allocation */ + e->speaker_alloc_bits = ptr[h]; + break; + case 0x2: /* SVDs */ + for(i = h; i <= blk->len; i++) + e->svds[e->svd_count++].v = ptr[i]; + break; + case 0x3: /* Vendor-specific */ + rouicpy(&blk->ven, e, a+h); + // TODO: + break; + default: + break; + } +} + +static void did_block_decode(DisplayIDBlock *blk) { + if (!blk) return; + + //printf("did_block_decode: %s\n", hex_bytes(DPTR(blk->addy), blk->len+3)); + + if (!blk->bounds_ok) + blk->bounds_ok = + bounds_check(blk->addy.e, blk->addy.offset + 3 + blk->len); + if (!blk->bounds_ok) return; + + edid *e = blk->addy.e; + static uint32_t h = 3; /* header size */ + uint32_t a = blk->addy.offset; /* start of block, includes header */ + uint8_t *u8 = DPTR(blk->addy); + int b = h; + edid_ven ven;// = {}; + edid_output out;// = {}; + memset(&ven,0,sizeof(edid_ven)); + memset(&out,0,sizeof(edid_output)); + if (blk) { + switch(blk->type) { + case 0: /* Product ID (1.x) */ + /* UNTESTED */ + if (rpnpcpy(&ven, e, a+h) ) + e->ven = ven; + if (u8[12] || u8[13]) { + e->dom.week = u8[12]; + e->dom.year = u8[13] + 2000; + e->dom.is_model_year = (e->dom.week == 255); + e->dom.std = STD_DISPLAYID; + } + e->did_strings[e->did_string_count].is_product_name = 1; + e->did_strings[e->did_string_count].len = blk->len; + e->did_strings[e->did_string_count].str = rstr_strip(e, a+h+12, u8[b+11]); + e->name = e->did_strings[e->did_string_count].str; + e->did_string_count++; + break; + case 0x20: /* Product ID */ + /* UNTESTED */ + if (rouicpy(&ven, e, a+h) ) + e->ven = ven; + if (u8[12] || u8[13]) { + e->dom.week = u8[12]; + e->dom.year = u8[13] + 2000; + e->dom.is_model_year = (e->dom.week == 255); + e->dom.std = STD_DISPLAYID20; + } + e->did_strings[e->did_string_count].is_product_name = 1; + e->did_strings[e->did_string_count].len = blk->len; + e->did_strings[e->did_string_count].str = rstr_strip(e, a+h+12, u8[b+11]); + e->name = e->did_strings[e->did_string_count].str; + e->did_string_count++; + break; + case 0x0a: /* Serial Number (ASCII String) */ + e->did_strings[e->did_string_count].is_serial = 1; + e->did_strings[e->did_string_count].len = blk->len; + e->did_strings[e->did_string_count].str = rstr_strip(e, a+h, blk->len); + e->serial = e->did_strings[e->did_string_count].str; + e->did_string_count++; + break; + case 0x0b: /* General Purpose ASCII String */ + e->did_strings[e->did_string_count].len = blk->len; + e->did_strings[e->did_string_count].str = rstr(e, a+h, blk->len); + e->did_string_count++; + break; + case 0x03: /* Type I Detailed timings */ + out.pixel_clock_khz = 10 * r24le(e, a+h, NOMASK); + out.horiz_pixels = 1 + (u8[b+5] << 8) + u8[b+4]; + out.horiz_blanking = (u8[b+7] << 8) + u8[b+6]; + out.vert_lines = 1 + (u8[b+13] << 8) + u8[b+12]; + out.vert_blanking = (u8[b+15] << 8) + u8[b+14]; + out.is_interlaced = bf_value(u8[b+3], BFMASK(4, 0x1)); + out.stereo_mode = bf_value(u8[b+3], BFMASK(5, 0x3)); + out.is_preferred = bf_value(u8[b+3], BFMASK(7, 0x1)); + out.src = OUTSRC_DID_TYPE_I; + edid_output_fill(&out); + e->didts[e->didt_count++] = out; + break; + case 0x13: /* Type VI Detailed timings (super 0x03) */ + /* UNTESTED */ + out.pixel_clock_khz = (u8[b+2] << 16) & 0xa0; + out.pixel_clock_khz += u8[b+1] << 8; + out.pixel_clock_khz += u8[b]; + out.horiz_pixels = ((u8[b+5] << 8) + u8[b+3]) & 0x7fff; + out.vert_lines = ((u8[b+6] << 8) + u8[b+5]) & 0x7fff; + // TODO: blanking... + out.is_interlaced = (u8[b+13] >> 7) & 0x1; + out.stereo_mode = (u8[b+13] >> 5) & 0x2; + out.src = OUTSRC_DID_TYPE_VI; + edid_output_fill(&out); + e->didts[e->didt_count++] = out; + break; + case 0x22: /* Type VII Detailed timings (super 0x13) */ + /* UNTESTED */ + out.pixel_clock_khz = u8[b+2] << 16; + out.pixel_clock_khz += u8[b+1] << 8; + out.pixel_clock_khz += u8[b]; + out.horiz_pixels = (u8[b+5] << 8) + u8[b+4]; + out.horiz_blanking = (u8[b+7] << 8) + u8[b+6]; + out.vert_lines = (u8[b+13] << 8) + u8[b+12]; + out.vert_blanking = (u8[b+15] << 8) + u8[b+14]; + out.is_interlaced = (u8[b+3] >> 4) & 0x1; + out.stereo_mode = (u8[b+3] >> 5) & 0x2; + out.is_preferred = (u8[b+3] >> 7) & 0x1; + out.src = OUTSRC_DID_TYPE_VII; + edid_output_fill(&out); + e->didts[e->didt_count++] = out; + break; + case 0x7e: /* vendor specific data */ + case 0x7f: /* vendor specific data */ + rouicpy(&blk->ven, e, a+h); + // TODO: + break; + case 0x81: /* CTA DisplayID, ... Embedded CEA Blocks */ + while(b < blk->len) { + int db_type = (u8[b] & 0xe0) >> 5; + int db_size = u8[b] & 0x1f; + e->cea_blocks[e->cea_block_count].addy.e = blk->addy.e; + e->cea_blocks[e->cea_block_count].addy.offset = blk->addy.offset + b; + e->cea_blocks[e->cea_block_count].type = db_type; + e->cea_blocks[e->cea_block_count].len = db_size; + cea_block_decode(&e->cea_blocks[e->cea_block_count]); + e->cea_block_count++; + b += db_size + 1; + } + break; + default: + break; + } + } +} + +static edid_output edid_output_from_svd(uint8_t index) { + int i; + if (index >= 128 && index <= 192) index &= 0x7f; /* "native" flag for 0-64 */ + for(i = 0; i < (int)G_N_ELEMENTS(cea_standard_timings); i++) { + if (cea_standard_timings[i].index == index) { + edid_output out;// = {}; + memset(&out,0,sizeof(edid_output)); + out.horiz_pixels = cea_standard_timings[i].horiz_active; + out.vert_lines = cea_standard_timings[i].vert_active; + if (strchr(cea_standard_timings[i].short_name, 'i')) + out.is_interlaced = 1; + out.pixel_clock_khz = cea_standard_timings[i].pixel_clock_mhz * 1000; + out.vert_freq_hz = cea_standard_timings[i].vert_freq_hz; + out.src = OUTSRC_SVD; + edid_output_fill(&out); + return out; + } + } + return (edid_output){.src = OUTSRC_INVALID}; +} + +edid *edid_new(const char *data, unsigned int len) { + if (len < 128) return NULL; + + int i; + edid *e = malloc(sizeof(edid)); + memset(e, 0, sizeof(edid)); + e->data = malloc(len); + memcpy(e->data, data, len); + e->len = len; + e->ver_major = e->u8[18]; + e->ver_minor = e->u8[19]; + + e->msg_log = g_string_new(NULL); + +#define RESERVE_COUNT 300 + e->dtds = malloc(sizeof(struct edid_dtd) * RESERVE_COUNT); + e->cea_blocks = malloc(sizeof(struct edid_cea_block) * RESERVE_COUNT); + e->svds = malloc(sizeof(struct edid_svd) * RESERVE_COUNT); + e->sads = malloc(sizeof(struct edid_sad) * RESERVE_COUNT); + e->did_blocks = malloc(sizeof(DisplayIDBlock) * RESERVE_COUNT); + e->didts = malloc(sizeof(edid_output) * RESERVE_COUNT); + e->did_strings = malloc(sizeof(edid_output) * RESERVE_COUNT); + memset(e->dtds, 0, sizeof(struct edid_dtd) * RESERVE_COUNT); + memset(e->cea_blocks, 0, sizeof(struct edid_cea_block) * RESERVE_COUNT); + memset(e->svds, 0, sizeof(struct edid_svd) * RESERVE_COUNT); + memset(e->sads, 0, sizeof(struct edid_sad) * RESERVE_COUNT); + memset(e->did_blocks, 0, sizeof(DisplayIDBlock) * RESERVE_COUNT); + memset(e->didts, 0, sizeof(edid_output) * RESERVE_COUNT); + memset(e->did_strings, 0, sizeof(edid_output) * RESERVE_COUNT); + + /* base product information */ + rpnpcpy(&e->ven, e, 8); /* bytes 8-9 */ + e->product = r16le(e, 10, NOMASK); /* bytes 10-11 */ + e->n_serial = r32le(e, 12, NOMASK); /* bytes 12-15 */ + e->dom.week = e->u8[16]; /* byte 16 */ + e->dom.year = e->u8[17] + 1990; /* byte 17 */ + e->dom.is_model_year = (e->dom.week == 255); + e->dom.std = STD_EDID; + + e->a_or_d = (e->u8[20] & 0x80) ? 1 : 0; + if (e->a_or_d == 1) { + /* digital */ + switch((e->u8[20] >> 4) & 0x7) { + case 0x1: e->bpc = 6; break; + case 0x2: e->bpc = 8; break; + case 0x3: e->bpc = 10; break; + case 0x4: e->bpc = 12; break; + case 0x5: e->bpc = 14; break; + case 0x6: e->bpc = 16; break; + } + e->interface = e->u8[20] & 0xf; + } + + if (e->u8[21] && e->u8[22]) { + e->img.horiz_cm = e->u8[21]; + e->img.vert_cm = e->u8[22]; + edid_output_fill(&e->img); + e->img_max = e->img; + } + + /* established timing bitmap */ +#define ETB_CHECK(BYT, BIT, HP, VP, RF, IL) \ + if (e->u8[BYT] & (1<etbs[e->etb_count] = e->img; \ + e->etbs[e->etb_count].horiz_pixels = HP; \ + e->etbs[e->etb_count].vert_pixels = VP; \ + e->etbs[e->etb_count].vert_freq_hz = RF; \ + e->etbs[e->etb_count].is_interlaced = IL;\ + e->etbs[e->etb_count].src = OUTSRC_ETB; \ + edid_output_fill(&e->etbs[e->etb_count]);\ + e->etb_count++; }; + ETB_CHECK(35, 7, 720, 400, 70, 0); //(VGA) + ETB_CHECK(35, 6, 720, 400, 88, 0); //(XGA) + ETB_CHECK(35, 5, 640, 480, 60, 0); //(VGA) + ETB_CHECK(35, 4, 640, 480, 67, 0); //(Apple Macintosh II) + ETB_CHECK(35, 3, 640, 480, 72, 0); + ETB_CHECK(35, 2, 640, 480, 75, 0); + ETB_CHECK(35, 1, 800, 600, 56, 0); + ETB_CHECK(35, 0, 800, 600, 60, 0); + ETB_CHECK(36, 7, 800, 600, 72, 0); + ETB_CHECK(36, 6, 800, 600, 75, 0); + ETB_CHECK(36, 5, 832, 624, 75, 0); //(Apple Macintosh II) + ETB_CHECK(36, 4, 1024, 768, 87, 1); //(1024×768i) + ETB_CHECK(36, 3, 1024, 768, 60, 0); + ETB_CHECK(36, 2, 1024, 768, 70, 0); + ETB_CHECK(36, 1, 1024, 768, 75, 0); + ETB_CHECK(36, 0, 1280, 1024, 75, 0); + ETB_CHECK(37, 7, 1152, 870, 75, 0); //(Apple Macintosh II) + + /* standard timings */ + for(i = 38; i < 53; i+=2) { + /* 0101 is unused */ + if (e->u8[i] == 0x01 && e->u8[i+1] == 0x01) + continue; + /* 00.. is invalid/"reserved" */ + if (e->u8[i] == 0x00) + continue; + double xres = (e->u8[i] + 31) * 8; + double yres = 0; + int iar = (e->u8[i+1] >> 6) & 0x3; + int vf = (e->u8[i+1] & 0x3f) + 60; + switch(iar) { + case 0: /* 16:10 (v<1.3 1:1) */ + if (e->ver_major == 1 && e->ver_minor < 3) + yres = xres; + else + yres = xres*10/16; + break; + case 0x1: /* 4:3 */ + yres = xres*4/3; + break; + case 0x2: /* 5:4 */ + yres = xres*4/5; + break; + case 0x3: /* 16:9 */ + yres = xres*9/16; + break; + } + e->stds[e->std_count].ptr = &e->u8[i]; + e->stds[e->std_count].out = e->img; /* inherit */ + e->stds[e->std_count].out.horiz_pixels = xres; + e->stds[e->std_count].out.vert_pixels = yres; + e->stds[e->std_count].out.vert_freq_hz = vf; + e->stds[e->std_count].out.src = OUTSRC_STD; + edid_output_fill(&e->stds[e->std_count].out); + e->std_count++; + } + + uint16_t dh, dl; +#define CHECK_DESCRIPTOR(INDEX, OFFSET) \ + e->d[INDEX].addy.e = e; \ + e->d[INDEX].addy.offset = OFFSET; \ + if (e->u8[OFFSET] == 0) { \ + dh = be16toh(e->u16[OFFSET/2]); \ + dl = be16toh(e->u16[OFFSET/2+1]); \ + e->d[INDEX].type = (dh << 16) + dl; \ + switch(e->d[INDEX].type) { \ + case 0xfc: case 0xff: case 0xfe: \ + strncpy(e->d[INDEX].text, (char*)e->u8+OFFSET+5, 13); \ + } \ + } else e->dtds[e->dtd_count++].addy = e->d[INDEX].addy; + + CHECK_DESCRIPTOR(0, 54); + CHECK_DESCRIPTOR(1, 72); + CHECK_DESCRIPTOR(2, 90); + CHECK_DESCRIPTOR(3, 108); + + e->checksum_ok = block_check(e, 0); /* first 128-byte block only */ + if (len > 128) { + /* check extension blocks */ + int blocks = len / 128; + blocks--; + e->ext_blocks = blocks; + e->ext_ok = malloc(sizeof(uint8_t) * blocks); + for(; blocks; blocks--) { + uint32_t offset = blocks * 128; + uint8_t *u8 = e->u8 + offset; + int r = block_check(e, offset); + e->ext_ok[blocks-1] = r; + if (r) e->ext_blocks_ok++; + else e->ext_blocks_fail++; + + if (u8[0] == 0x40) { + /* DI-EXT */ + e->di.exists = 1; + e->di.addy.e = e; + e->di.addy.offset = offset; + + e->di.interface = r8(e, offset + 2, NOMASK); + e->di.supports_hdcp = r8(e, offset + 3, 0x8); + } + + if (u8[0] == 0x70) { + /* DisplayID */ + e->did.version = u8[1]; + if (e->did.version >= 0x20) + e->std = MAX(e->std, STD_DISPLAYID20); + else e->std = MAX(e->std, STD_DISPLAYID); + e->did.extension_length = u8[2]; + e->did.primary_use_case = u8[3]; + e->did.extension_count = u8[4]; + e->did.checksum_ok = block_check_n(e, offset, e->did.extension_length + 5); + int db_end = u8[2] + 5; + int b = 5; + while(b < db_end) { + if (r24le(e, offset + b, NOMASK) == 0) break; + int db_type = u8[b]; + int db_revision = u8[b+1] & 0x7; + int db_size = u8[b+2]; + e->did_blocks[e->did_block_count].addy.e = e; + e->did_blocks[e->did_block_count].addy.offset = offset + b; + e->did_blocks[e->did_block_count].type = db_type; + e->did_blocks[e->did_block_count].revision = db_revision; + e->did_blocks[e->did_block_count].len = db_size; + did_block_decode(&e->did_blocks[e->did_block_count]); + e->did_block_count++; + e->did.blocks++; + b += db_size + 3; + } + if (b > db_end) + edid_msg(e, "DID block overrun [in ext " OFMT "], expect to end at +%d, but last ends at +%d" , offset, db_end-1, b-1); + //printf("DID: v:%02x el:%d uc:%d ec:%d, blocks:%d ok:%d\n", + // e->did.version, e->did.extension_length, + // e->did.primary_use_case, e->did.extension_count, + // e->did.blocks, e->checksum_ok); + } + + if (u8[0] == 0x02) { + e->std = MAX(e->std, STD_EIACEA861); + /* CEA extension */ + int db_end = u8[2]; + if (db_end) { + int b = 4; + while(b < db_end) { + int db_type = (u8[b] & 0xe0) >> 5; + int db_size = u8[b] & 0x1f; + e->cea_blocks[e->cea_block_count].addy.e = e; + e->cea_blocks[e->cea_block_count].addy.offset = offset + b; + e->cea_blocks[e->cea_block_count].type = db_type; + e->cea_blocks[e->cea_block_count].len = db_size; + cea_block_decode(&e->cea_blocks[e->cea_block_count]); + e->cea_block_count++; + b += db_size + 1; + } + if (b > db_end) { + b = db_end; + edid_msg(e, "CEA block overrun [in ext " OFMT "], expect to end at +%d, but last ends at +%d" , offset, db_end-1, b-1); + } + /* DTDs */ + while(b < 127) { + if (u8[b]) { + e->dtds[e->dtd_count].addy.e = e; + e->dtds[e->dtd_count].addy.offset = offset + b; + e->dtds[e->dtd_count].cea_ext = 1; + e->dtd_count++; + } + b += 18; + } + } + } + } + } + if (e->ext_blocks_ok) { + e->std = MAX(e->std, STD_EEDID); + } + + /* strings */ + for(i = 0; i < 4; i++) { + g_strstrip(e->d[i].text); + str_make_printable(e->d[i].text); + switch(e->d[i].type) { + case 0xfc: + e->name = e->d[i].text; + break; + case 0xff: + e->serial = e->d[i].text; + break; + case 0xfe: + if (e->ut1) + e->ut2 = e->d[i].text; + else + e->ut1 = e->d[i].text; + break; + } + } + + /* quirks */ + if (!e->name) { + if (SEQ(e->ut1, "LG Display") && e->ut2) + /* LG may use "uspecified text" for name and model */ + e->name = e->ut2; + else if (SEQ(e->ut1, "AUO") && e->ut2) + /* Same with AUO */ + e->name = e->ut2; + else { + if (e->ut1) e->name = e->ut1; + if (e->ut2 && !e->serial) e->serial = e->ut2; + } + } + if (!e->interface && e->di.interface) { + if (e->di.interface >= 1 + && e->di.interface <= 5) + e->interface = 1; /* DVI */ + } + + /* largest in ETB */ + for (i = 0; i < e->etb_count; i++) { + if (e->etbs[i].pixels > e->img.pixels) + e->img = e->etbs[i]; + if (e->etbs[i].pixels > e->img_max.pixels) + e->img_max = e->etbs[i]; + } + + /* largest in STDs */ + for (i = 0; i < e->std_count; i++) { + if (e->stds[i].out.pixels > e->img.pixels) + e->img = e->stds[i].out; + if (e->stds[i].out.pixels > e->img_max.pixels) + e->img_max = e->stds[i].out; + } + + /* dtds */ + for(i = 0; i < e->dtd_count; i++) { + edid_addy a = e->dtds[i].addy; + if (!e->dtds[i].bounds_ok) + e->dtds[i].bounds_ok = bounds_check(a.e, a.offset + 18); + if (!e->dtds[i].bounds_ok) { + printf("bounds fail\n"); + exit(0); + } + uint8_t *u8 = DPTR(a); + edid_output *out = &e->dtds[i].out; + if (e->dtds[i].cea_ext) out->src = OUTSRC_CEA_DTD; + else out->src = OUTSRC_DTD; + out->pixel_clock_khz = 10 * r16le(a.e, a.offset, NOMASK); + out->horiz_pixels = + ((u8[4] & 0xf0) << 4) + u8[2]; + out->vert_lines = + ((u8[7] & 0xf0) << 4) + u8[5]; + + out->horiz_blanking = + ((u8[4] & 0x0f) << 8) + u8[3]; + out->vert_blanking = + ((u8[7] & 0x0f) << 8) + u8[6]; + + out->horiz_cm = + ((u8[14] & 0xf0) << 4) + u8[12]; + out->horiz_cm /= 10; + out->vert_cm = + ((u8[14] & 0x0f) << 8) + u8[13]; + out->vert_cm /= 10; + out->is_interlaced = (u8[17] & 0x80) >> 7; + out->stereo_mode = (u8[17] & 0x60) >> 4; + out->stereo_mode += u8[17] & 0x01; + edid_output_fill(out); + } + + if (e->dtd_count) { + /* first DTD is "preferred" */ + e->img_max = e->dtds[0].out; + } + + /* svds */ + for(i = 0; i < e->svd_count; i++) { + e->svds[i].out = edid_output_from_svd(e->svds[i].v); + if (e->svds[i].out.src == OUTSRC_INVALID) + continue; + + if (e->svds[i].v >= 128 && + e->svds[i].v <= 192) { + e->svds[i].is_native = 1; + + edid_output tmp = e->img_max; + /* native res is max real res, right? */ + e->img_max = e->svds[i].out; + e->img_max.is_preferred = 1; + OUTPUT_CPY_SIZE(e->img_max, tmp); + } + if (e->svds[i].out.pixels > e->img_svd.pixels + || e->svds[i].is_native) { + e->img_svd = e->svds[i].out; + if (e->svds[i].is_native) + e->img_svd.is_preferred = 1; + OUTPUT_CPY_SIZE(e->img_svd, e->img_max); + } + } + /* remove invalid SVDs */ + int d = 0; + for(i = 0; i < e->svd_count; i++) { + if (d != i) + e->svds[d].out = e->svds[i].out; + if (e->svds[i].out.src != OUTSRC_INVALID) + d++; + } + e->svd_count -= (i-d); + + /* didts */ + for(i = 0; i < e->didt_count; i++) { + int pref = e->didts[i].is_preferred; + int max_pref = e->img_max.is_preferred; + int bigger = (e->didts[i].pixels > e->img_max.pixels); + int better = (e->didts[i].src > e->img_max.src); + if ((bigger && !max_pref) + || (pref && !max_pref) + || (better)) { + edid_output tmp = e->img_max; + e->img_max = e->didts[i]; + OUTPUT_CPY_SIZE(e->img_max, tmp); + } + } + + if (!e->speaker_alloc_bits && e->sad_count) { + /* make an assumption */ + if (e->sads[0].channels == 2) + e->speaker_alloc_bits = 0x1; + } + + /* squeeze lists */ +#define SQUEEZE(C, L) \ + if (!e->C) { free(e->L); e->L = NULL; } \ + else { e->L = realloc(e->L, sizeof(e->L[0]) * (e->C)); } + + SQUEEZE(dtd_count, dtds); + SQUEEZE(cea_block_count, cea_blocks); + SQUEEZE(svd_count, svds); + SQUEEZE(sad_count, sads); + SQUEEZE(did_block_count, did_blocks); + SQUEEZE(didt_count, didts); + SQUEEZE(did_string_count, did_strings); + return e; +} + +void edid_free(edid *e) { + int i; + if (e) { + g_free(e->ext_ok); + g_free(e->cea_blocks); + g_free(e->dtds); + g_free(e->svds); + g_free(e->sads); + g_free(e->did_blocks); + g_free(e->didts); + for(i = 0; i < e->did_string_count; i++) + g_free(e->did_strings[i].str); + g_free(e->did_strings); + g_free(e->data); + g_string_free(e->msg_log, TRUE); + g_free(e); + } +} + +edid *edid_new_from_hex(const char *hex_string) { + int blen = strlen(hex_string) / 2; + uint8_t *buffer = malloc(blen), *n = buffer; + memset(buffer, 0, blen); + int len = 0; + + const char *p = hex_string; + char byte[3] = ".."; + + while(p && *p) { + if (isxdigit(p[0]) && isxdigit(p[1])) { + byte[0] = p[0]; + byte[1] = p[1]; + *n = strtol(byte, NULL, 16); + n++; + len++; + p += 2; + } else + p++; + } + + edid *e = edid_new((char*)buffer, len); + free(buffer); + return e; +} + +edid *edid_new_from_file(const char *path) { + char *bin = NULL; + gsize len = 0; + if (g_file_get_contents(path, &bin, &len, NULL) ) { + edid *ret = edid_new(bin, len); + g_free(bin); + return ret; + } + return NULL; +} + +char *edid_dump_hex(edid *e, int tabs, int breaks) { + if (!e) return NULL; + int lines = 1 + (e->len / 16); + int blen = lines * 35 + 1; + unsigned int pc = 0; + char *ret = malloc(blen); + memset(ret, 0, blen); + uint8_t *u8 = e->u8; + char *p = ret; + for(; lines; lines--) { + int i, d = MIN(16, (e->len - pc)); + if (!d) break; + for(i = 0; i < tabs; i++) + sprintf(p++, "\t"); + for(i = d; i; i--) { + sprintf(p, "%02x", (unsigned int)*u8); + p+=2; + u8++; + pc++; + if (pc == e->len) { + if (breaks) sprintf(p++, "\n"); + goto edid_dump_hex_done; + } + } + if (breaks) sprintf(p++, "\n"); + } +edid_dump_hex_done: + return ret; +} + +const char *edid_standard(int std) { + switch(std) { + case STD_EDID: return N_("VESA EDID"); + case STD_EEDID: return N_("VESA E-EDID"); + case STD_EIACEA861: return N_("EIA/CEA-861"); + case STD_DISPLAYID: return N_("VESA DisplayID"); + case STD_DISPLAYID20: return N_("VESA DisplayID 2.0"); + }; + return N_("unknown"); +} + +const char *edid_output_src(int src) { + switch(src) { + case OUTSRC_EDID: return N_("VESA EDID"); + case OUTSRC_ETB: return N_("VESA EDID ETB"); + case OUTSRC_STD: return N_("VESA EDID STD"); + case OUTSRC_DTD: return N_("VESA EDID DTD"); + case OUTSRC_CEA_DTD: return N_("EIA/CEA-861 DTD"); + case OUTSRC_SVD: return N_("EIA/CEA-861 SVD"); + case OUTSRC_DID_TYPE_I: return N_("DisplayID Type I"); + case OUTSRC_DID_TYPE_VI: return N_("DisplayID Type VI"); + case OUTSRC_DID_TYPE_VII: return N_("DisplayID Type VII"); + }; + return N_("unknown"); +} + +const char *edid_interface(int type) { + switch(type) { + case 0: return N_("undefined"); + case 0x1: return N_("DVI"); + case 0x2: return N_("HDMIa"); + case 0x3: return N_("HDMIb"); + case 0x4: return N_("MDDI"); + case 0x5: return N_("DisplayPort"); + }; + return N_("unknown"); +} + +const char *edid_di_interface(int type) { + switch(type) { + case 0: return N_("Analog"); + case 0x1: return N_("DVI"); + case 0x2: return N_("DVI - Single Link"); + case 0x3: return N_("DVI - Dual Link (Hi-Resolution)"); + case 0x4: return N_("DVI - Dual Link (Hi-Color)"); + case 0x5: return N_("DVI for Consumer Electronics"); + case 0x6: return N_("PnD"); + case 0x7: return N_("DFP"); + case 0x8: return N_("OpenLDI - Single Link"); + case 0x9: return N_("OpenLDI - Dual Link"); + case 0xa: return N_("OpenLDI for Consumer Electronics"); + }; + return N_("unknown"); +} + +const char *edid_cea_audio_type(int type) { + switch(type) { + case 0: case 15: return N_("reserved"); + case 1: return N_("LPCM"); + case 2: return N_("AC-3"); + case 3: return N_("MPEG1 (layers 1 and 2)"); + case 4: return N_("MPEG1 layer 3"); + case 5: return N_("MPEG2"); + case 6: return N_("AAC"); + case 7: return N_("DTS"); + case 8: return N_("ATRAC"); + case 9: return N_("DSD"); + case 10: return N_("DD+"); + case 11: return N_("DTS-HD"); + case 12: return N_("MLP/Dolby TrueHD"); + case 13: return N_("DST Audio"); + case 14: return N_("WMA Pro"); + } + return N_("unknown type"); +} + +const char *edid_cea_block_type(int type) { + switch(type) { + case 0x01: + return N_("audio"); + case 0x02: + return N_("video"); + case 0x03: + return N_("vendor specific"); + case 0x04: + return N_("speaker allocation"); + } + return N_("unknown type"); +} + +const char *edid_did_block_type(int type) { + switch(type) { + /* 1.x */ + case 0x00: return N_("Product Identification (1.x)"); + case 0x01: return N_("Display Parameters (1.x)"); + case 0x02: return N_("Color Characteristics (1.x)"); + case 0x03: return N_("Type I Timing - Detailed (1.x)"); + case 0x04: return N_("Type II Timing - Detailed (1.x)"); + case 0x05: return N_("Type III Timing - Short (1.x)"); + case 0x06: return N_("Type IV Timing - DMT ID Code (1.x)"); + case 0x07: return N_("VESA Timing Standard (1.x)"); + case 0x08: return N_("CEA Timing Standard (1.x)"); + case 0x09: return N_("Video Timing Range (1.x)"); + case 0x0A: return N_("Product Serial Number (1.x)"); + case 0x0B: return N_("General Purpose ASCII String (1.x)"); + case 0x0C: return N_("Display Device Data (1.x)"); + case 0x0D: return N_("Interface Power Sequencing (1.x)"); + case 0x0E: return N_("Transfer Characteristics (1.x)"); + case 0x0F: return N_("Display Interface Data (1.x)"); + case 0x10: return N_("Stereo Display Interface (1.x)"); + case 0x11: return N_("Type V Timing - Short (1.x)"); + case 0x12: return N_("Tiled Display Topology (1.x)"); + case 0x13: return N_("Type VI Timing - Detailed (1.x)"); + case 0x7F: return N_("Vendor specific (1.x)"); + /* 2.x */ + case 0x20: return N_("Product Identification"); + case 0x21: return N_("Display Parameters"); + case 0x22: return N_("Type VII - Detailed Timing"); + case 0x23: return N_("Type VIII - Enumerated Timing Code"); + case 0x24: return N_("Type IX - Formula-based Timing"); + case 0x25: return N_("Dynamic Video Timing Range Limits"); + case 0x26: return N_("Display Interface Features"); + case 0x27: return N_("Stereo Display Interface"); + case 0x28: return N_("Tiled Display Topology"); + case 0x29: return N_("ContainerID"); + case 0x7E: return N_("Vendor specific"); + case 0x81: return N_("CTA DisplayID"); + } + return N_("unknown type"); +} + +const char *edid_ext_block_type(int type) { + switch(type) { + case 0x00: + return N_("timing extension"); + case 0x02: + return N_("EIA/CEA-861 extension (CEA-EXT)"); + case 0x10: + return N_("Video Timing Block extension (VTB-EXT)"); + case 0x20: + return N_("EDID 2.0 extension"); + case 0x40: + return N_("Display Information extension (DI-EXT)"); + case 0x50: + return N_("Localized String extension (LS-EXT)"); + case 0x60: + return N_("Digital Packet Video Link extension (DPVL-EXT)"); + case 0x70: + return N_("DisplayID"); + case 0xa7: + case 0xaf: + case 0xbf: + return N_("display transfer characteristics data block"); + case 0xf0: + return N_("extension block map"); + case 0xff: + return N_("manufacturer-defined extension/display device data block"); + } + return N_("unknown block type"); +} + +const char *edid_descriptor_type(int type) { + switch(type) { + case 0xff: + return N_("display serial number"); + case 0xfe: + return N_("unspecified text"); + case 0xfd: + return N_("display range limits"); + case 0xfc: + return N_("display name"); + case 0xfb: + return N_("additional white point"); + case 0xfa: + return N_("additional standard timing identifiers"); + case 0xf9: + return N_("Display Color Management"); + case 0xf8: + return N_("CVT 3-byte timing codes"); + case 0xf7: + return N_("additional standard timing"); + case 0x10: + return N_("dummy"); + } + if (type && type < 0x0f) + return N_("manufacturer reserved descriptor"); + return N_("detailed timing descriptor"); +} + +char *edid_cea_audio_describe(struct edid_sad *sad) { + if (!sad) return NULL; + + if (!sad->format) + return g_strdup_printf("format:([%x] %s)", + sad->format, _(edid_cea_audio_type(sad->format)) ); + + gchar *ret = NULL; + gchar *tmp[3] = {NULL,NULL,NULL}; +#define appfreq(b, f) if (sad->freq_bits & (1 << b)) tmp[0] = appf(tmp[0], ", ", "%d", f); +#define appdepth(b, d) if (sad->depth_bits & (1 << b)) tmp[1] = appf(tmp[1], ", ", "%d%s", d, _("-bit")); + appfreq(0, 32); + appfreq(1, 44); + appfreq(2, 48); + appfreq(3, 88); + appfreq(4, 96); + appfreq(5, 176); + appfreq(6, 192); + + if (sad->format == 1) { + appdepth(0, 16); + appdepth(1, 20); + appdepth(2, 24); + tmp[2] = g_strdup_printf("depths: %s", tmp[1]); + } else if (sad->format >= 2 + && sad->format <= 8 ) { + tmp[2] = g_strdup_printf("max_bitrate: %d %s", sad->max_kbps, _("kbps")); + } else + tmp[2] = g_strdup(""); + + ret = g_strdup_printf("format:([%x] %s) channels:%d rates:%s %s %s", + sad->format, _(edid_cea_audio_type(sad->format)), + sad->channels, tmp[0], _("kHz"), + tmp[2]); + g_free(tmp[0]); + g_free(tmp[1]); + g_free(tmp[2]); + return ret; +} + +char *edid_cea_speaker_allocation_describe(int bitfield, int short_version) { + gchar *spk_list = NULL; +#define appspk(b, sv, fv) if (bitfield & (1 << b)) \ + spk_list = appf(spk_list, short_version ? ", " : "\n", "%s", short_version ? sv : fv); + + appspk(0, "FL+FR", _("Front left and right")); + appspk(1, "LFE", _("Low-frequency effects")); + appspk(2, "FC", _("Front center")); + appspk(3, "RL+RR", _("Rear left and right")); + appspk(4, "RC", _("Rear center")); + appspk(5, "???", _("")); + appspk(6, "???", _("")); + + return spk_list; +} + +char *edid_cea_block_describe(struct edid_cea_block *blk) { + gchar *ret = NULL; + if (blk) { + char *hb = hex_bytes(DPTR(blk->addy), blk->len+1); + switch(blk->type) { + case 0x1: /* SAD list */ + ret = g_strdup_printf("([%x] %s) sads:%d", + blk->type, _(edid_cea_block_type(blk->type)), + blk->len/3); + break; + case 0x2: /* SVD list */ + ret = g_strdup_printf("([%x] %s) svds:%d", + blk->type, _(edid_cea_block_type(blk->type)), + blk->len); + break; + case 0x4: /* speaker allocation */ + ret = g_strdup_printf("([%x] %s) len:%d", + blk->type, _(edid_cea_block_type(blk->type)), + blk->len); + break; + case 0x3: /* vendor specific */ + ret = g_strdup_printf("([%x] %s) len:%d (OUI:%s) -- %s", + blk->type, _(edid_cea_block_type(blk->type)), + blk->len, blk->ven.oui_str, + hb); + break; + default: + ret = g_strdup_printf("([%x] %s) len:%d -- %s", + blk->type, _(edid_cea_block_type(blk->type)), + blk->len, + hb); + break; + } + free(hb); + } + return ret; +} + +char *edid_base_descriptor_describe(struct edid_descriptor *d) { + gchar *ret = NULL; + if (d) { + char *hb = hex_bytes(DPTR(d->addy), 18); + char *txt = NULL; + switch(d->type) { + case 0: /* DTD */ + txt = "{...}"; /* displayed elsewhere */ + break; + case 0x10: /* dummy */ + txt = ""; + break; + default: + txt = (*d->text) ? d->text : hb; + break; + }; + ret = g_strdup_printf("([%02x] %s) %s", + d->type, _(edid_descriptor_type(d->type)), + txt); + free(hb); + } + return ret; +} + +char *edid_did_block_describe(DisplayIDBlock *blk) { + if (!blk) return NULL; + + gchar *ret = NULL; + edid *e = blk->addy.e; + uint32_t a = blk->addy.offset + 3; + char *str = NULL; + + //printf("edid_did_block_describe: ((%d)) t:%02x a{%p, %d}...\n", blk->addy.e->did.extension_count, blk->type, blk->addy.e, blk->addy.offset); + char *hb = hex_bytes(DPTR(blk->addy), blk->len+3); + switch(blk->type) { + case 0x0a: /* Product Serial ASCII string */ + str = rstr_strip(e, a, blk->len); + ret = g_strdup_printf("([%02x:r%02x] %s) len:%d \"%s\"", + blk->type, blk->revision, _(edid_did_block_type(blk->type)), + blk->len, + str); + break; + case 0x0b: /* ASCII string */ + str = rstr(e, a, blk->len); + ret = g_strdup_printf("([%02x:r%02x] %s) len:%d \"%s\"", + blk->type, blk->revision, _(edid_did_block_type(blk->type)), + blk->len, + str); + break; + default: + ret = g_strdup_printf("([%02x:r%02x] %s) len:%d -- %s", + blk->type, blk->revision, _(edid_did_block_type(blk->type)), + blk->len, + hb); + break; + } + free(hb); + + return ret; +} + +char *edid_output_describe(edid_output *out) { + gchar *ret = NULL; + if (out) { + ret = g_strdup_printf("%dx%d@%.0f%s", + out->horiz_pixels, out->vert_pixels, out->vert_freq_hz, _("Hz") ); + if (out->diag_cm) + ret = appfsp(ret, "%0.1fx%0.1f%s (%0.1f\")", + out->horiz_cm, out->vert_cm, _("cm"), out->diag_in ); + ret = appfsp(ret, "%s", out->is_interlaced ? "interlaced" : "progressive"); + ret = appfsp(ret, "%s", out->stereo_mode ? "stereo" : "normal"); + } + return ret; +} + +char *edid_dtd_describe(struct edid_dtd *dtd, int dump_bytes) { + gchar *ret = NULL; + if (dtd) { + edid_output *out = &dtd->out; + char *hb = hex_bytes(DPTR(dtd->addy), 18); + ret = g_strdup_printf("%dx%d@%.0f%s, %0.1fx%0.1f%s (%0.1f\") %s %s (%s)%s%s", + out->horiz_pixels, out->vert_lines, out->vert_freq_hz, _("Hz"), + out->horiz_cm, out->vert_cm, _("cm"), out->diag_in, + out->is_interlaced ? "interlaced" : "progressive", + out->stereo_mode ? "stereo" : "normal", + _(edid_output_src(out->src)), + dump_bytes ? " -- " : "", + dump_bytes ? hb : ""); + free(hb); + } + return ret; +} + +char *edid_manf_date_describe(struct edid_manf_date dom) { + if (!dom.year) return g_strdup("unspecified"); + if (dom.is_model_year) + return g_strdup_printf(_("model year %d"), dom.year); + if (dom.week && dom.week <= 53) + return g_strdup_printf(_("week %d of %d"), dom.week, dom.year); + return g_strdup_printf("%d", dom.year); +} + +char *edid_dump2(edid *e) { + char *ret = NULL; + int i; + if (!e) return NULL; + + ret = appfnl(ret, "edid version: %d.%d (%d bytes)", e->ver_major, e->ver_minor, e->len); + if (e->std) + ret = appfnl(ret, "extended to: %s", _(edid_standard(e->std)) ); + + ret = appfnl(ret, "mfg: %s, model: [%04x-%08x] %u-%u", e->ven.pnp, e->product, e->n_serial, e->product, e->n_serial); + char *dom_desc = edid_manf_date_describe(e->dom); + ret = appfnl(ret, "date: %s", dom_desc); + g_free(dom_desc); + + if (e->name) + ret = appfnl(ret, "product: %s", e->name); + if (e->serial) + ret = appfnl(ret, "serial: %s", e->serial); + + ret = appfnl(ret, "type: %s", e->a_or_d ? "digital" : "analog"); + if (e->bpc) + ret = appfnl(ret, "bits per color channel: %d", e->bpc); + if (e->interface) + ret = appfnl(ret, "interface: %s", _(edid_interface(e->interface))); + if (e->di.exists) { + ret = appfnl(ret, "interface_ext: %s", _(edid_di_interface(e->di.interface))); + ret = appfnl(ret, "hdcp: %s", e->di.supports_hdcp ? "supported" : "no"); + } + + char *desc = edid_output_describe(&e->img); + char *desc_svd = edid_output_describe(&e->img_svd); + char *desc_max = edid_output_describe(&e->img_max); + ret = appfnl(ret, "base(%s): %s", _(edid_output_src(e->img.src)), desc); + if (e->svd_count) + ret = appfnl(ret, "svd(%s): %s", _(edid_output_src(e->img_svd.src)), desc_svd); + ret = appfnl(ret, "max(%s): %s", _(edid_output_src(e->img_max.src)), desc_max); + g_free(desc); + g_free(desc_svd); + g_free(desc_max); + + if (e->speaker_alloc_bits) { + char *desc = edid_cea_speaker_allocation_describe(e->speaker_alloc_bits, 1); + ret = appfnl(ret, "speakers: %s", desc); + g_free(desc); + } + + for(i = 0; i < e->etb_count; i++) { + char *desc = edid_output_describe(&e->etbs[i]); + ret = appfnl(ret, "etb[%d]: %s", i, desc); + g_free(desc); + } + + for(i = 0; i < e->std_count; i++) { + char *desc = edid_output_describe(&e->stds[i].out); + ret = appfnl(ret, "std[%d]: %s", i, desc); + g_free(desc); + } + + ret = appfnl(ret, "checksum %s", e->checksum_ok ? "ok" : "failed!"); + if (e->ext_blocks_ok || e->ext_blocks_fail) + ret = appf(ret, "", ", extension blocks: %d of %d ok", e->ext_blocks_ok, e->ext_blocks_ok + e->ext_blocks_fail); + + for(i = 0; i < 4; i++) { + char *desc = edid_base_descriptor_describe(&e->d[i]); + ret = appfnl(ret, "descriptor[%d] %s", i, desc); + g_free(desc); + } + + for(i = 0; i < e->ext_blocks; i++) { + int type = e->u8[(i+1)*128]; + int version = e->u8[(i+1)*128 + 1]; + ret = appfnl(ret, "ext[%d] ([%02x:v%02x] %s) %s", i, + type, version, _(edid_ext_block_type(type)), + e->ext_ok[i] ? "ok" : "fail" + ); + } + + for(i = 0; i < e->dtd_count; i++) { + char *desc = edid_dtd_describe(&e->dtds[i], 0); + ret = appfnl(ret, "dtd[%d] %s", i, desc); + free(desc); + } + + for(i = 0; i < e->cea_block_count; i++) { + char *desc = edid_cea_block_describe(&e->cea_blocks[i]); + ret = appfnl(ret, "cea_block[%d] %s", i, desc); + free(desc); + } + + for(i = 0; i < e->svd_count; i++) { + char *desc = edid_output_describe(&e->svds[i].out); + ret = appfnl(ret, "svd[%d] [%02x] %s", i, e->svds[i].v, desc); + free(desc); + } + + for(i = 0; i < e->sad_count; i++) { + char *desc = edid_cea_audio_describe(&e->sads[i]); + ret = appfnl(ret, "sad[%d] [%02x%02x%02x] %s", i, + e->sads[i].v[0], e->sads[i].v[1], e->sads[i].v[2], + desc); + free(desc); + } + + for(i = 0; i < e->did_block_count; i++) { + char *desc = edid_did_block_describe(&e->did_blocks[i]); + ret = appfnl(ret, "did_block[%d] %s", i, desc); + free(desc); + } + + for(i = 0; i < e->didt_count; i++) { + char *desc = edid_output_describe(&e->didts[i]); + ret = appfnl(ret, "did_timing[%d]: %s", i, desc); + g_free(desc); + } + + for(i = 0; i < e->did_string_count; i++) { + ret = appfnl(ret, "did_string[%d]: %s", i, e->did_strings[i].str); + } + + ret = appfnl(ret, "parse messages:\n%s---", e->msg_log->str); + + return ret; +} + diff --git a/deps/sysobj_early/src/util_edid_svd_table.c b/deps/sysobj_early/src/util_edid_svd_table.c new file mode 100644 index 00000000..4833c77d --- /dev/null +++ b/deps/sysobj_early/src/util_edid_svd_table.c @@ -0,0 +1,164 @@ + +struct { + int index; + const char *short_name; + const char *disp_ratio, *pixel_ratio; + float pixel_clock_mhz, vert_freq_hz, horiz_freq_khz; + float horiz_active, vert_active, horiz_total, vert_total; + float field_rate_hz; +} cea_standard_timings[] = { +{ 1, "DMT0659", "4:3", "1:1", 25.175, 59.94, 31.469, 640, 480, 800, 525, 60 }, +{ 2, "480p", "4:3", "8:9", 27.0, 59.94, 31.469, 720, 480, 858, 525, 60 }, +{ 3, "480pH", "16:9", "32:37", 27.0, 59.94, 31.469, 720, 480, 858, 525, 60 }, +{ 4, "720p", "16:9", "1:1", 74.25, 60, 45.0, 1280, 720, 1650, 750, 60 }, +{ 5, "1080i", "16:9", "1:1", 74.25, 60, 33.75, 1920, 540, 2200, 562.5, 60 }, +{ 6, "480i", "4:3", "8:9", 27.0, 59.94, 15.734, 1440, 240, 1716, 262.5, 60 }, +{ 7, "480iH", "16:9", "32:37", 27.0, 59.94, 15.734, 1440, 240, 1716, 262.5, 60 }, +{ 8, "240p", "4:3", "4:9", 27.0, 59.826, 15.734, 1440, 240, 1716, 262.5, 60 }, +{ 9, "240pH", "16:9", "16:27", 27.0, 59.826, 15.734, 1440, 240, 1716, 262.5, 60 }, +{ 10, "480i4x", "4:3", "2:9-20:9", 54.0, 59.94, 15.734, 2880, 240, 3432, 262.5, 60 }, +{ 11, "480i4xH", "16:9", "8:27-80:27", 54.0, 59.94, 15.734, 2880, 240, 3432, 262.5, 60 }, +{ 12, "240p4x", "4:3", "1:9-10:9", 54.0, 60, 15.734, 2880, 240, 3432, 262.5, 60 }, +{ 13, "240p4xH", "16:9", "4:27-40:37", 54.0, 60, 15.734, 2880, 240, 3432, 262.5, 60 }, +{ 14, "480p2x", "4:3", "4:9 or 8:9", 54.0, 59.94, 31.469, 1440, 480, 1716, 525, 60 }, +{ 15, "480p2xH", "16:9", "16:27 or 32:37", 54.0, 59.94, 31.469, 1440, 480, 1716, 525, 60 }, +{ 16, "1080p", "16:9", "1:1", 148.5, 60, 67.5, 1920, 1080, 2200, 1125, 60 }, +{ 17, "576p", "4:3", "16:15", 27.0, 50, 31.25, 720, 576, 864, 625, 50 }, +{ 18, "576pH", "16:9", "64:45", 27.0, 50, 31.25, 720, 576, 864, 625, 50 }, +{ 19, "720p50", "16:9", "1:1", 74.25, 50, 37.5, 1280, 720, 1980, 750, 50 }, +{ 20, "1080i25", "16:9", "1:1", 74.25, 50, 28.125, 1920, 540, 2640, 562.5, 50 }, +{ 21, "576i", "4:3", "16:15", 27.0, 50, 15.625, 1440, 288, 1728, 312.5, 50 }, +{ 22, "576iH", "16:9", "64:45", 27.0, 50, 15.625, 1440, 288, 1728, 312.5, 50 }, +{ 23, "288p", "4:3", "8:15", 27.0, 50, 15.625, 1440, 288, 1728, 313, 50 }, +{ 24, "288pH", "16:9", "32:45", 27.0, 50, 15.625, 1440, 288, 1728, 313, 50 }, +{ 25, "576i4x", "4:3", "2:15-20:15", 54.0, 50, 15.625, 2880, 288, 3456, 312.5, 50 }, +{ 26, "576i4xH", "16:9", "16:45-160:45", 54.0, 50, 15.625, 2880, 288, 3456, 312.5, 50 }, +{ 27, "288p4x", "4:3", "1:15-10:15", 54.0, 50, 15.625, 2880, 288, 3456, 313, 50 }, +{ 28, "288p4xH", "16:9", "8:45-80:45", 54.0, 50, 15.625, 2880, 288, 3456, 313, 50 }, +{ 29, "576p2x", "4:3", "8:15 or 16:15", 54.0, 50, 31.25, 1440, 576, 1728, 625, 50 }, +{ 30, "576p2xH", "16:9", "32:45 or 64:45", 54.0, 50, 31.25, 1440, 576, 1728, 625, 50 }, +{ 31, "1080p50", "16:9", "1:1", 148.5, 50, 56.25, 1920, 1080, 2640, 1125, 50 }, +{ 32, "1080p24", "16:9", "1:1", 74.25, 23.98, 27.0, 1920, 1080, 2750, 1125, 0 }, +{ 33, "1080p25", "16:9", "1:1", 74.25, 25, 28.125, 1920, 1080, 2640, 1125, 0 }, +{ 34, "1080p30", "16:9", "1:1", 74.25, 29.97, 33.75, 1920, 1080, 2500, 1125, 0 }, +{ 35, "480p4x", "4:3", "2:9, 4:9 or 8:9", 108.0, 59.94, 31.469, 2880, 240, 3432, 262.5, 60 }, +{ 36, "480p4xH", "16:9", "8:27, 16:27 or 32:27", 108.0, 59.94, 31.469, 2880, 240, 3432, 262.5, 60 }, +{ 37, "576p4x", "4:3", "4:15, 8:15, or 16:15", 108.0, 50, 31.25, 2880, 576, 3456, 625, 50 }, +{ 38, "576p4xH", "16:9", "16:45, 32:45 or 64:45", 108.0, 50, 31.25, 2880, 576, 3456, 625, 50 }, +{ 39, "1080i25", "16:9", "1:1", 72.0, 50, 31.25, 1920, 540, 2304, 625, 50 }, +{ 40, "1080i50", "16:9", "1:1", 148.5, 100, 56.25, 1920, 540, 2640, 562.5, 100 }, +{ 41, "720p100", "16:9", "1:1", 148.5, 100, 45.0, 1280, 720, 1980, 750, 100 }, +{ 42, "576p100", "4:3", "16:15", 54.0, 100, 62.5, 720, 576, 864, 625, 100 }, +{ 43, "576p100H", "16:9", "64:45", 54.0, 100, 62.5, 720, 576, 864, 625, 100 }, +{ 44, "576i50", "4:3", "16:15", 54.0, 100, 31.25, 1440, 576, 1728, 625, 100 }, +{ 45, "576i50H", "16:9", "64:45", 54.0, 100, 31.25, 1440, 576, 1728, 625, 100 }, +{ 46, "1080i60", "16:9", "1:1", 148.5, 119.88, 67.5, 1920, 540, 2200, 562.5, 120 }, +{ 47, "720p120", "16:9", "1:1", 148.5, 119.88, 90.0, 1280, 720, 1650, 750, 120 }, +{ 48, "480p119", "4:3", "8:9", 54.0, 119.88, 62.937, 720, 576, 858, 525, 120 }, +{ 49, "480p119H", "16:9", "32:37", 54.0, 119.88, 62.937, 720, 576, 858, 525, 120 }, +{ 50, "480i59", "4:3", "16:15", 54.0, 119.88, 31.469, 1440, 576, 1716, 525, 120 }, +{ 51, "480i59H", "16:9", "64:45", 54.0, 119.88, 31.469, 1440, 576, 1716, 525, 120 }, +{ 52, "576p200", "4:3", "16:15", 108.0, 200, 125.0, 720, 576, 864, 625, 200 }, +{ 53, "576p200H", "16:9", "64:45", 108.0, 200, 125.0, 720, 576, 864, 625, 200 }, +{ 54, "576i100", "4:3", "16:15", 108.0, 200, 62.5, 1440, 288, 1728, 312.5, 200 }, +{ 55, "576i100H", "16:9", "64:45", 108.0, 200, 62.5, 1440, 288, 1728, 312.5, 200 }, +{ 56, "480p239", "4:3", "8:9", 108.0, 239.76, 125.874, 720, 480, 858, 525, 240 }, +{ 57, "480p239H", "16:9", "32:37", 108.0, 239.76, 125.874, 720, 480, 858, 525, 240 }, +{ 58, "480i119", "4:3", "8:9", 108.0, 239.76, 62.937, 1440, 240, 1716, 262.5, 240 }, +{ 59, "480i119H", "16:9", "32:37", 108.0, 239.76, 62.937, 1440, 240, 1716, 262.5, 240 }, +{ 60, "720p24", "16:9", "1:1", 59.4, 23.98, 18.0, 1280, 720, 3300, 750, 0 }, +{ 61, "720p25", "16:9", "1:1", 74.25, 25, 18.75, 1280, 720, 3960, 750, 0 }, +{ 62, "720p30", "16:9", "1:1", 74.25, 29.97, 22.5, 1280, 720, 3300, 750, 0 }, +{ 63, "1080p120", "16:9", "1:1", 297.0, 119.88, 135.0, 1920, 1080, 2200, 1125, 120 }, +{ 64, "1080p100", "16:9", "1:1", 297.0, 100, 112.5, 1920, 1080, 2640, 1125, 100 }, +{ 65, "720p24", "64:27", "4:3", 59.4, 23.98, 18.0, 1280, 720, 3300, 750, 0 }, +{ 66, "720p25", "64:27", "4:3", 74.25, 25, 18.75, 1280, 720, 3960, 750, 0 }, +{ 67, "720p30", "64:27", "4:3", 74.25, 29.97, 22.5, 1280, 720, 3300, 750, 0 }, +{ 68, "720p50", "64:27", "4:3", 74.25, 50, 37.5, 1280, 720, 1980, 750, 50 }, +{ 69, "720p", "64:27", "4:3", 74.25, 60, 45.0, 1650, 750, 1650, 750, 60 }, +{ 70, "720p100", "64:27", "4:3", 148.5, 100, 75.0, 1280, 720, 1980, 750, 100 }, +{ 71, "720p120", "64:27", "4:3", 148.5, 119.88, 90.0, 1280, 720, 1650, 750, 120 }, +{ 72, "1080p24", "64:27", "4:3", 74.25, 23.98, 27.0, 1920, 1080, 2750, 1125, 0 }, +{ 73, "1080p25", "64:27", "4:3", 74.25, 25, 28.125, 1920, 1080, 2640, 1125, 0 }, +{ 74, "1080p30", "64:27", "4:3", 74.25, 29.97, 33.75, 1920, 1080, 2500, 1125, 0 }, +{ 75, "1080p50", "64:27", "4:3", 148.5, 50, 56.25, 1920, 1080, 2640, 1125, 50 }, +{ 76, "1080p", "64:27", "4:3", 148.5, 60, 67.5, 1920, 1080, 2200, 1125, 60 }, +{ 77, "1080p100", "64:27", "4:3", 297.0, 100, 112.5, 1920, 1080, 2640, 1125, 100 }, +{ 78, "1080p120", "64:27", "4:3", 297.0, 119.88, 135.0, 1920, 1080, 2200, 1125, 120 }, +{ 79, "720p2x24", "64:27", "64:63", 59.4, 23.98, 18.0, 1680, 720, 3300, 750, 0 }, +{ 80, "720p2x25", "64:27", "64:63", 59.4, 25, 18.75, 1680, 720, 3168, 750, 0 }, +{ 81, "720p2x30", "64:27", "64:63", 59.4, 29.97, 22.5, 1680, 720, 2640, 750, 0 }, +{ 82, "720p2x50", "64:27", "64:63", 82.5, 50, 37.5, 1680, 720, 2200, 750, 50 }, +{ 83, "720p2x", "64:27", "64:63", 99.0, 60, 45.0, 1680, 720, 2200, 750, 60 }, +{ 84, "720p2x100", "64:27", "64:63", 165.0, 100, 82.5, 1680, 720, 2000, 825, 100 }, +{ 85, "720p2x120", "64:27", "64:63", 198.0, 119.88, 99.0, 1680, 720, 2000, 825, 120 }, +{ 86, "1080p2x24", "64:27", "1:1", 99.0, 23.98, 26.4, 2560, 1080, 3750, 1100, 0 }, +{ 87, "1080p2x25", "64:27", "1:1", 90.0, 25, 28.125, 2560, 1080, 3200, 1125, 0 }, +{ 88, "1080p2x30", "64:27", "1:1", 118.8, 29.97, 33.75, 2560, 1080, 3520, 1125, 0 }, +{ 89, "1080p2x50", "64:27", "1:1", 185.625, 50, 56.25, 2560, 1080, 3000, 1125, 50 }, +{ 90, "1080p2x", "64:27", "1:1", 198.0, 60, 66.0, 2560, 1080, 3000, 1100, 60 }, +{ 91, "1080p2x100", "64:27", "1:1", 371.25, 100, 125.0, 2560, 1080, 2970, 1250, 100 }, +{ 92, "1080p2x120", "64:27", "1:1", 495.0, 119.88, 150.0, 2560, 1080, 3300, 1250, 120 }, +{ 93, "2160p24", "16:9", "1:1", 297.0, 23.98, 54.0, 3840, 2160, 5500, 2250, 0 }, +{ 94, "2160p25", "16:9", "1:1", 297.0, 25, 56.25, 3840, 2160, 5280, 2250, 0 }, +{ 95, "2160p30", "16:9", "1:1", 297.0, 29.97, 67.5, 3840, 2160, 4400, 2250, 0 }, +{ 96, "2160p50", "16:9", "1:1", 594.0, 50, 112.5, 3840, 2160, 5280, 2250, 50 }, +{ 97, "2160p60", "16:9", "1:1", 594.0, 60, 135.0, 3840, 2160, 4400, 2250, 60 }, +{ 98, "2160p24", "256:135", "1:1", 297.0, 23.98, 67.5, 4096, 2160, 5500, 2250, 0 }, +{ 99, "2160p25", "256:135", "1:1", 297.0, 25, 112.5, 4096, 2160, 5280, 2250, 0 }, +{ 100, "2160p30", "256:135", "1:1", 297.0, 29.97, 135.0, 4096, 2160, 4400, 2250, 0 }, +{ 101, "2160p50", "256:135", "1:1", 594.0, 50, 112.5, 4096, 2160, 5280, 2250, 50 }, +{ 102, "2160p", "256:135", "1:1", 594.0, 60, 135.0, 4096, 2160, 4400, 2250, 60 }, +{ 103, "2160p24", "64:27", "4:3", 297.0, 23.98, 67.5, 3840, 2160, 5500, 2250, 0 }, +{ 104, "2160p25", "64:27", "4:3", 297.0, 25, 112.5, 3840, 2160, 5280, 2250, 0 }, +{ 105, "2160p30", "64:27", "4:3", 297.0, 29.97, 135.0, 3840, 2160, 4400, 2250, 0 }, +{ 106, "2160p50", "64:27", "4:3", 594.0, 50, 112.5, 3840, 2160, 5280, 2250, 50 }, +{ 107, "2160p", "64:27", "4:3", 594.0, 60, 135.0, 3840, 2160, 4400, 2250, 60 }, +{ 108, "720p48", "16:9", "1:1", 90.0, 47.96, 36.0, 1280, 720, 2500, 750, 0 }, +{ 109, "720p48", "64:27", "4:3", 90.0, 47.96, 36.0, 1280, 720, 2500, 750, 0 }, +{ 110, "720p2x48", "64:27", "64:63", 99.0, 47.96, 36.0, 1680, 720, 2750, 825, 0 }, +{ 111, "1080p48", "16:9", "1:1", 148.5, 47.96, 54.0, 1920, 1080, 2750, 1125, 0 }, +{ 112, "1080p48", "64:27", "4:3", 148.5, 47.96, 54.0, 1920, 1080, 2750, 1125, 0 }, +{ 113, "1080p2x48", "64:27", "1:1", 198.0, 47.96, 52.8, 2560, 1080, 3750, 1100, 0 }, +{ 114, "2160p48", "16:9", "1:1", 594.0, 47.96, 108.0, 3840, 2160, 5500, 2250, 0 }, +{ 115, "2160p48", "256:135", "1:1", 594.0, 47.96, 108.0, 4096, 2160, 5500, 2250, 0 }, +{ 116, "2160p48", "64:27", "4:3", 594.0, 47.96, 108.0, 3840, 2160, 5500, 2250, 0 }, +{ 117, "2160p100", "16:9", "1:1", 1188.0, 100, 225.0, 3840, 2160, 5280, 2250, 100 }, +{ 118, "2160p120", "16:9", "1:1", 1188.0, 119.88, 270.0, 3840, 2160, 4400, 2250, 120 }, +{ 119, "2160p100", "64:27", "4:3", 1188.0, 100, 225.0, 3840, 2160, 5280, 2250, 100 }, +{ 120, "2160p120", "64:27", "4:3", 1188.0, 119.88, 270.0, 3840, 2160, 4400, 2250, 120 }, +{ 121, "2160p2x24", "64:27", "1:1", 396.0, 23.98, 52.8, 5120, 2160, 7500, 2200, 0 }, +{ 122, "2160p2x25", "64:27", "1:1", 396.0, 25, 55.0, 5120, 2160, 7200, 2200, 0 }, +{ 123, "2160p2x30", "64:27", "1:1", 396.0, 29.97, 66.0, 5120, 2160, 6000, 2200, 0 }, +{ 124, "2160p2x48", "64:27", "1:1", 742.5, 47.96, 118.8, 5120, 2160, 6250, 2450, 0 }, +{ 125, "2160p2x50", "64:27", "1:1", 742.5, 50, 112.5, 5120, 2160, 6600, 2250, 50 }, +{ 126, "2160p2x", "64:27", "1:1", 742.5, 60, 135.0, 5120, 2160, 5500, 2250, 60 }, +{ 127, "2160p2x100", "64:27", "1:1", 1485.0, 100, 225.0, 5120, 2160, 6600, 2250, 100 }, +{ 193, "2160p2x120", "64:27", "1:1", 1485.0, 119.88, 270.0, 5120, 2160, 5500, 2250, 120 }, +{ 194, "4320p24", "16:9", "1:1", 1188.0, 23.98, 108.0, 7680, 4320, 11000, 4500, 0 }, +{ 195, "4320p25", "16:9", "1:1", 1188.0, 25, 110.0, 7680, 4320, 10800, 4400, 0 }, +{ 196, "4320p30", "16:9", "1:1", 1188.0, 29.97, 132.0, 7680, 4320, 9000, 4400, 0 }, +{ 197, "4320p48", "16:9", "1:1", 2376.0, 47.96, 216.0, 7680, 4320, 11000, 4500, 0 }, +{ 198, "4320p50", "16:9", "1:1", 2376.0, 50, 220.0, 7680, 4320, 10800, 4400, 50 }, +{ 199, "4320p", "16:9", "1:1", 2376.0, 60, 264.0, 7680, 4320, 9000, 4400, 60 }, +{ 200, "4320p100", "16:9", "1:1", 4752.0, 100, 450.0, 7680, 4320, 10560, 4500, 100 }, +{ 201, "4320p120", "16:9", "1:1", 4752.0, 119.88, 540.0, 7680, 4320, 8800, 4500, 120 }, +{ 202, "4320p24", "64:27", "4:3", 1188.0, 23.98, 108.0, 7680, 4320, 11000, 4500, 0 }, +{ 203, "4320p25", "64:27", "4:3", 1188.0, 25, 110.0, 7680, 4320, 10800, 4400, 0 }, +{ 204, "4320p30", "64:27", "4:3", 1188.0, 29.97, 132.0, 7680, 4320, 9000, 4400, 0 }, +{ 205, "4320p48", "64:27", "4:3", 2376.0, 47.96, 216.0, 7680, 4320, 11000, 4500, 0 }, +{ 206, "4320p50", "64:27", "4:3", 2376.0, 50, 220.0, 7680, 4320, 10800, 4400, 50 }, +{ 207, "4320p", "64:27", "4:3", 2376.0, 60, 264.0, 7680, 4320, 9000, 4400, 60 }, +{ 208, "4320p100", "64:27", "4:3", 4752.0, 100, 450.0, 7680, 4320, 10560, 4500, 100 }, +{ 209, "4320p120", "64:27", "4:3", 4752.0, 119.88, 540.0, 7680, 4320, 8800, 4500, 120 }, +{ 210, "4320p2x24", "64:27", "1:1", 1485.0, 23.98, 118.8, 10240, 4320, 12500, 4950, 0 }, +{ 211, "4320p2x25", "64:27", "1:1", 1485.0, 25, 110.0, 10240, 4320, 13500, 4400, 0 }, +{ 212, "4320p2x30", "64:27", "1:1", 1485.0, 29.97, 135.0, 10240, 4320, 11000, 4500, 0 }, +{ 213, "4320p2x48", "64:27", "1:1", 2970.0, 47.96, 237.6, 10240, 4320, 12500, 4950, 0 }, +{ 214, "4320p2x50", "64:27", "1:1", 2970.0, 50, 220.0, 10240, 4320, 13500, 4400, 50 }, +{ 215, "4320p2x", "64:27", "1:1", 2970.0, 60, 270.0, 10240, 4320, 11000, 4400, 60 }, +{ 216, "4320p2x100", "64:27", "1:1", 5940.0, 100, 450.0, 10240, 4320, 13200, 4500, 100 }, +{ 217, "4320p2x120", "64:27", "1:1", 5940.0, 119.88, 540.0, 10240, 4320, 11000, 4500, 120 }, +{ 218, "2160p100", "256:135", "1:1", 1188.0, 100, 225.0, 4096, 2160, 5280, 2250, 100 }, +{ 219, "2160p120", "256:135", "1:1", 1188.0, 119.88, 270.0, 4096, 2160, 4400, 2250, 120 }, +}; diff --git a/deps/sysobj_early/src/util_ids.c b/deps/sysobj_early/src/util_ids.c new file mode 100644 index 00000000..197b1ed3 --- /dev/null +++ b/deps/sysobj_early/src/util_ids.c @@ -0,0 +1,316 @@ +/* + * sysobj - https://github.com/bp0/verbose-spork + * Copyright (C) 2018 Burt P. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +#include "util_ids.h" +#include +#include +#include +#include + +#define ids_msg(msg, ...) fprintf (stderr, "[%s] " msg "\n", __FUNCTION__, ##__VA_ARGS__) /**/ +static int ids_tracing = 0; +void ids_trace_start() { ids_tracing = 1; } +void ids_trace_stop() { ids_tracing = 0; } + +ids_query *ids_query_new(const gchar *qpath) { + ids_query *s = g_new0(ids_query, 1); + s->qpath = qpath ? g_strdup(qpath) : NULL; + return s; +} + +void ids_query_free(ids_query *s) { + if (s) g_free(s->qpath); + g_free(s); +} + +void ids_query_result_cpy(ids_query_result *dest, ids_query_result *src) { + if (!dest || !src) return; + memcpy(dest, src, sizeof(ids_query_result)); + for(int i = 0; dest->results[i]; i++) + dest->results[i] = dest->_strs + (src->results[i] - src->_strs); +} + +/* c001 < C 01 */ +//TODO: compare more than the first char +static int ids_cmp(const char *s1, const char *s2) { + int cmp = (s2 ? 1 : 0) - (s1 ? 1 : 0); + if (cmp == 0 && isalpha(*s1) && isalpha(*s2)) + cmp = (islower(*s2) ? 1 : 0) - (islower(*s1) ? 1 : 0); + if (cmp == 0) + return g_strcmp0(s1, s2); + else + return cmp; +} + +static void ids_query_result_set_str(ids_query_result *ret, int tabs, gchar *p) { + if (!p) { + ret->results[tabs] = p; + } else { + if (tabs == 0) { + ret->results[tabs] = ret->_strs; + strncpy(ret->results[tabs], p, IDS_LOOKUP_BUFF_SIZE-1); + } else { + ret->results[tabs] = ret->results[tabs-1] + strlen(ret->results[tabs-1]) + 1; + strncpy(ret->results[tabs], p, IDS_LOOKUP_BUFF_SIZE-1); + } + } + /* all following strings become invalid */ + while(tabs < IDS_LOOKUP_MAX_DEPTH) + ret->results[++tabs] = NULL; +} + +/* Given a qpath "/X/Y/Z", find names as: + * X ->result[0] + * \tY ->result[1] + * \t\tZ ->result[2] + * + * Works with: + * - pci.ids "// " or "C //" + * - arm.ids "/" + * - sdio.ids "/", "C " + * - usb.ids "/", "C " etc + * - edid.ids "<3letter_vendor>" + */ +long scan_ids_file(const gchar *file, const gchar *qpath, ids_query_result *result, long start_offset) { + gchar **qparts = NULL; + gchar buff[IDS_LOOKUP_BUFF_SIZE] = ""; + ids_query_result ret;// = {}; + gchar *p = NULL; + + FILE *fd; + int tabs; + int qdepth; + int qpartlen[IDS_LOOKUP_MAX_DEPTH]; + long last_root_fpos = -1, fpos, line = -1; + + memset(&ret,0,sizeof(ids_query_result)); + + if (!qpath) + return -1; + + fd = fopen(file, "r"); + if (!fd) { + ids_msg("file could not be read: %s", file); + return -1; + } + + qparts = g_strsplit(qpath, "/", -1); + qdepth = g_strv_length(qparts); + if (qdepth > IDS_LOOKUP_MAX_DEPTH) { + ids_msg("qdepth (%d) > ids_max_depth (%d) for %s", qdepth, IDS_LOOKUP_MAX_DEPTH, qpath); + qdepth = IDS_LOOKUP_MAX_DEPTH; + } + for(int i = 0; i < qdepth; i++) + qpartlen[i] = strlen(qparts[i]); + + if (start_offset > 0) + fseek(fd, start_offset, SEEK_SET); + + for (fpos = ftell(fd); fgets(buff, IDS_LOOKUP_BUFF_SIZE, fd); fpos = ftell(fd)) { + p = strchr(buff, '\n'); + if (!p) + ids_msg("line longer than IDS_LOOKUP_BUFF_SIZE (%d), file: %s, offset: %ld", IDS_LOOKUP_BUFF_SIZE, file, fpos); + line++; + + /* line ends at comment */ + p = strchr(buff, '#'); + if (p) *p = 0; + /* trim trailing white space */ + if (!p) p = buff + strlen(buff); + p--; + while(p > buff && isspace((unsigned char)*p)) p--; + *(p+1) = 0; + p = buff; + + if (buff[0] == 0) continue; /* empty line */ + if (buff[0] == '\n') continue; /* empty line */ + + /* scan for fields */ + tabs = 0; + while(*p == '\t') { tabs++; p++; } + + if (tabs >= qdepth) continue; /* too deep */ + if (tabs != 0 && !ret.results[tabs-1]) + continue; /* not looking at this depth, yet */ + if (ret.results[tabs]) + goto ids_lookup_done; /* answered at this level */ + + if (ids_tracing) ids_msg("[%s] looking at (%d) %s...", file, tabs, p); + + if (g_str_has_prefix(p, qparts[tabs]) + && isspace(*(p + qpartlen[tabs])) ) { + /* found */ + p += qpartlen[tabs]; + while(isspace((unsigned char)*p)) p++; /* ffwd */ + + if (tabs == 0) last_root_fpos = fpos; + ids_query_result_set_str(&ret, tabs, p); + + if (ids_tracing) { + int i = 0; + for(; i < IDS_LOOKUP_MAX_DEPTH; i++) { + if (!qparts[i]) break; + ids_msg(" ...[%d]: %s\t--> %s", i, qparts[i], ret.results[i]); + } + } + continue; + } + + if (ids_cmp(p, qparts[tabs]) == 1) { + if (ids_tracing) + ids_msg("will not be found qparts[tabs] = %s, p = %s", qparts[tabs], p); + goto ids_lookup_done; /* will not be found */ + } + + } /* for each line */ + +ids_lookup_done: + if (ids_tracing) + ids_msg("bailed at line %ld...", line); + fclose(fd); + + if (result) { + ids_query_result_cpy(result, &ret); + return last_root_fpos; + } + return last_root_fpos; +} + +static gint _ids_query_list_cmp(const ids_query *ql1, const ids_query *ql2) { + return g_strcmp0(ql1->qpath, ql2->qpath); +} + +long scan_ids_file_list(const gchar *file, ids_query_list query_list, long start_offset) { + GSList *tmp = g_slist_copy(query_list); + tmp = g_slist_sort(tmp, (GCompareFunc)_ids_query_list_cmp); + + long offset = start_offset; + for (GSList *l = query_list; l; l = l->next) { + ids_query *q = l->data; + offset = scan_ids_file(file, q->qpath, &(q->result), offset); + if (offset == -1) + break; + } + g_slist_free(tmp); + return offset; +} + +int query_list_count_found(ids_query_list query_list) { + long count = 0; + for (GSList *l = query_list; l; l = l->next) { + ids_query *q = l->data; + if (q->result.results[0]) count++; + } + return count; +} + +static gchar *split_loc_default(const char *line) { + return g_utf8_strchr(line, -1, ' '); +} + +GSList *ids_file_all_get_all(const gchar *file, split_loc_function split_loc_func) { + GSList *ret = NULL; + gchar buff[IDS_LOOKUP_BUFF_SIZE] = ""; + gchar *p = NULL, *name = NULL; + + FILE *fd; + int tabs = 0, tabs_last = 0; + long fpos, line = -1; + + fd = fopen(file, "r"); + if (!fd) { + ids_msg("file could not be read: %s", file); + return ret; + } + + ids_query_result *working = g_new0(ids_query_result, 1); + gchar **qparts = g_new0(gchar*, IDS_LOOKUP_MAX_DEPTH + 1); + for(tabs = IDS_LOOKUP_MAX_DEPTH-1; tabs>=0; tabs--) + qparts[tabs] = g_malloc0(IDS_LOOKUP_BUFF_SIZE); + tabs = 0; + + if (!split_loc_func) split_loc_func = split_loc_default; + + for (fpos = ftell(fd); fgets(buff, IDS_LOOKUP_BUFF_SIZE, fd); fpos = ftell(fd)) { + p = strchr(buff, '\n'); + if (!p) + ids_msg("line longer than IDS_LOOKUP_BUFF_SIZE (%d), file: %s, offset: %ld", IDS_LOOKUP_BUFF_SIZE, file, fpos); + line++; + + /* line ends at comment */ + p = strchr(buff, '#'); + if (p) *p = 0; + /* trim trailing white space */ + if (!p) p = buff + strlen(buff); + p--; + while(p > buff && isspace((unsigned char)*p)) p--; + *(p+1) = 0; + p = buff; + + if (buff[0] == 0) continue; /* empty line */ + if (buff[0] == '\n') continue; /* empty line */ + + /* scan for fields */ + tabs = 0; + while(*p == '\t') { tabs++; p++; } + + if (tabs >= IDS_LOOKUP_MAX_DEPTH) continue; /* too deep */ + if (tabs > tabs_last + 1) { + /* jump too big, there's a qpath part that is "" */ + ids_msg("jump too big from depth %d to %d, file: %s, offset: %ld", tabs_last, tabs, file, fpos); + continue; + } + + name = split_loc_func(p); + if (!name) { + ids_msg("expected name/value split not found, file: %s, offset: %ld", file, fpos); + continue; + } + *name = 0; name++; /* split ptr is the first char of split string */ + g_strstrip(p); + g_strstrip(name); + + // now p = id, name = name + // ids_msg("p: %s -- name: %s", p, name); + + strncpy(qparts[tabs], p, IDS_LOOKUP_BUFF_SIZE-1); + ids_query_result_set_str(working, tabs, name); + if (tabs < tabs_last) + for(;tabs_last > tabs; tabs_last--) { + qparts[tabs_last][0] = 0; + working->results[tabs_last] = NULL; + } + + ids_query *found = ids_query_new(NULL); + ids_query_result_cpy(&found->result, working); + found->qpath = g_strjoinv("/", qparts); + p = found->qpath + strlen(found->qpath) - 1; + while(*p == '/') { *p = 0; p--; } + ret = g_slist_append(ret, found); + + tabs_last = tabs; + } /* for each line */ + + fclose(fd); + g_strfreev(qparts); + ids_query_result_free(working); + + return ret; +} diff --git a/deps/sysobj_early/src/util_sysobj.c b/deps/sysobj_early/src/util_sysobj.c new file mode 100644 index 00000000..94f71944 --- /dev/null +++ b/deps/sysobj_early/src/util_sysobj.c @@ -0,0 +1,303 @@ +/* + * sysobj - https://github.com/bp0/verbose-spork + * Copyright (C) 2018 Burt P. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +#define _GNU_SOURCE +#include +#include +#include /* for realpath() */ +#include /* for getuid() */ +#include /* for isxdigit(), etc. */ + +#include "util_sysobj.h" + +gchar *util_build_fn(const gchar *base, const gchar *name) { + gchar *ret = NULL; + gboolean slash = TRUE; + + if (!base) return NULL; + if (base[strlen(base)-1] == '/') + slash = FALSE; + + if (name) { + if (*name == '/') slash = FALSE; + ret = g_strdup_printf("%s%s%s", base, slash ? "/" : "", name); + } else + ret = g_strdup(base); + + util_null_trailing_slash(ret); + return ret; +} + +gboolean util_have_root() { + return (getuid() == 0) ? TRUE : FALSE; +} + +void util_compress_space(gchar *str) { + gchar *p = str, *t = str; + if (str && *str) { + int n = 0; + while(*p) { + if (isspace(*p) ) { + if (!n) + *t++ = ' '; + n++; + } else { + n = 0; + if (t != p) + *t = *p; + t++; + } + p++; + } + } + if (t != p) + *t = 0; +} + +void util_null_trailing_slash(gchar *str) { + if (str && *str) { + if (str[strlen(str)-1] == '/' ) + str[strlen(str)-1] = 0; + } +} + +gsize util_count_lines(const gchar *str) { + gchar **lines = NULL; + gsize count = 0; + + if (str) { + lines = g_strsplit(str, "\n", 0); + count = g_strv_length(lines); + if (count && *lines[count-1] == 0) { + /* if the last line is empty, don't count it */ + count--; + } + g_strfreev(lines); + } + + return count; +} + +int util_get_did(gchar *str, const gchar *lbl) { + int id = -2; + gchar tmpfmt[128] = ""; + gchar tmpchk[128] = ""; + sprintf(tmpfmt, "%s%s", lbl, "%d"); + if ( sscanf(str, tmpfmt, &id)==1 ) { + sprintf(tmpchk, tmpfmt, id); + if ( SEQ(str, tmpchk) ) + return id; + } + return -1; +} + +gchar *util_escape_markup(gchar *v, gboolean replacing) { + gchar *clean, *tmp; + gchar **vl; + if (v == NULL) return NULL; + + vl = g_strsplit(v, "&", -1); + if (g_strv_length(vl) > 1) + clean = g_strjoinv("&", vl); + else + clean = g_strdup(v); + g_strfreev(vl); + + vl = g_strsplit(clean, "<", -1); + if (g_strv_length(vl) > 1) { + tmp = g_strjoinv("<", vl); + g_free(clean); + clean = tmp; + } + g_strfreev(vl); + + vl = g_strsplit(clean, ">", -1); + if (g_strv_length(vl) > 1) { + tmp = g_strjoinv(">", vl); + g_free(clean); + clean = tmp; + } + g_strfreev(vl); + + if (replacing) + g_free((gpointer)v); + return clean; +} + +void util_strstrip_double_quotes_dumb(gchar *str) { + if (!str) return; + g_strstrip(str); + gchar *front = str, *back = str + strlen(str) - 1; + if (back <= front) return; + while(*front == '"') { *front = 'X'; front++; } + while(*back == '"') { *back = 0; back--; } + int nl = strlen(front); + memmove(str, front, nl); + str[nl] = 0; +} + +/* "194.110 MHz" -> "194.11 MHz" + * "5,0 golden rings" -> "5 golden rings" */ +gchar *util_strchomp_float(gchar* str_float) { + if (!str_float) return NULL; + char *dot = strchr(str_float, '.'); + char *comma = strchr(str_float, ','); + char *p = NULL, *dec = NULL, *src = NULL, *target = NULL; + if (!dot && !comma) return str_float; + if (dot > comma) + dec = dot; + else + dec = comma; + p = dec + 1; + while(isdigit(*p)) p++; + target = src = p; + p--; + while(*p == '0') { target = p; p--; }; + if (target == dec + 1) + target = dec; + if (target != src) + memmove(target, src, strlen(src)+1); + return str_float; +} + +/* resolve . and .., but not symlinks */ +gchar *util_normalize_path(const gchar *path, const gchar *relto) { + gchar *resolved = NULL; +#if GLIB_CHECK_VERSION(2, 58, 0) + resolved = g_canonicalize_filename(path, relto); +#else + /* burt's hack version */ + gchar *frt = relto ? g_strdup(relto) : NULL; + util_null_trailing_slash(frt); + gchar *fpath = frt + ? g_strdup_printf("%s%s%s", frt, (*path == '/') ? "" : "/", path) + : g_strdup(path); + g_free(frt); + + /* note: **parts will own all the part strings throughout */ + gchar **parts = g_strsplit(fpath, "/", -1); + gsize i, pn = g_strv_length(parts); + GList *lparts = NULL, *l = NULL, *n = NULL, *p = NULL; + for (i = 0; i < pn; i++) + lparts = g_list_append(lparts, parts[i]); + + i = 0; + gchar *part = NULL; + l = lparts; + while(l) { + n = l->next; p = l->prev; + part = l->data; + + if (SEQ(part, ".") ) + lparts = g_list_delete_link(lparts, l); + + if (SEQ(part, "..") ) { + if (p) + lparts = g_list_delete_link(lparts, p); + lparts = g_list_delete_link(lparts, l); + } + + l = n; + } + + resolved = g_strdup(""); + l = lparts; + while(l) { + resolved = g_strdup_printf("%s%s/", resolved, (gchar*)l->data ); + l = l->next; + } + g_list_free(lparts); + util_null_trailing_slash(resolved); + g_free(fpath); + + g_strfreev(parts); +#endif + + return resolved; +} + +/* resolve . and .. and symlinks */ +gchar *util_canonicalize_path(const gchar *path) { + char *resolved = realpath(path, NULL); + gchar *ret = g_strdup(resolved); /* free with g_free() instead of free() */ + free(resolved); + return ret; +} + +int util_maybe_num(gchar *str) { + int r = 10, i = 0, l = (str) ? strlen(str) : 0; + if (!l || l > 32) return 0; + gchar *chk = g_strdup(str); + g_strstrip(chk); + l = strlen(chk); + if (l > 2 && !strncmp(chk, "0x", 2)) { + i = 2; r = 16; + } + for (; i < l; i++) { + if (isxdigit(chk[i])) { + if (!isdigit(chk[i])) + r = 16; + } else { + r = 0; + break; + } + } + g_free(chk); + return r; +} + +gchar *util_safe_name(const gchar *name, gboolean lower_case) { + if (!name) return NULL; + const gchar *p = name; + gchar *buff = g_new0(gchar, strlen(name) + 1); + gchar *t = buff; + while(*p) { + gboolean ok = g_ascii_isalnum(*p); + if (*p == '.' || *p == '-') ok = TRUE; + if (*p == '/') ok = FALSE; + *t = ok ? *p : '_'; + t++; + p = g_utf8_next_char(p); + } + gchar *ret = lower_case ? g_ascii_strdown(buff, -1) : g_strdup(buff); + g_free(buff); + return ret; +} + +gchar *util_find_line_value(gchar *data, gchar *key, gchar delim) { + gchar *ret = NULL; + gchar **lines = g_strsplit(data, "\n", -1); + gsize line_count = g_strv_length(lines); + gsize i = 0; + for (i = 0; i < line_count; i++) { + gchar *line = lines[i]; + gchar *value = g_utf8_strchr(line, -1, delim); + if (!value) continue; + *value = 0; + value = g_strstrip(value+1); + gchar *lkey = g_strstrip(line); + + if (SEQ(lkey, key) ) { + ret = g_strdup(value); + } + } + g_strfreev(lines); + return ret; +} diff --git a/deps/uber-graph/README b/deps/uber-graph/README new file mode 100644 index 00000000..e9a95ab1 --- /dev/null +++ b/deps/uber-graph/README @@ -0,0 +1,39 @@ +This is Christian Hergert's "Uber-Graph" +after commit d31c8014d8cc9f293dfecfcb4bd6a7bf4d61c0be. +https://gitlab.gnome.org/chergert/uber-graph +File headers give LGPL2 as the license. + +Original README follows: + +Some of this code is good. Some of this code is very bad. It is a prototype, +nothing more, nothing less. + +Particularly bad/nasty/unreadable code is in main.c. It is also Linux specific. + +UberGraph - A realtime graph similar to that found in Gnome System Monitor. + However, it is much faster and smoother. It runs at a higher + framerate with less X bandwidth. + + It uses multiple pixmaps on the server-side and shifts data between + them to lower the X bandwidth. New data is rendered and clipped so + that the transfer is small. If frame movement is < 1 pixel, the + framerate is dynamically reduced. + +UberHeatMap - This is going to eventually be similar to UberGraph but as a + heat map. It's not very far yet, however. + +GRing - A small circular buffer meant for values in the realtime graphs. This + is most definitely not meant to be used as a byte buffer, so don't use + it as such. + + Example: + + GRing *ring = g_ring_sized_new(sizeof(gdouble), 60, NULL); + + or + + static void free_array_func (gpointer data) { + GArray **ar = data; + g_array_unref(*ar); + } + GRing *ring = g_ring_sized_new(sizeof(GArray*), 60, free_array_func); diff --git a/deps/uber-graph/g-ring.c b/deps/uber-graph/g-ring.c new file mode 100644 index 00000000..b014bf74 --- /dev/null +++ b/deps/uber-graph/g-ring.c @@ -0,0 +1,227 @@ +/* g-ring.c + * + * Copyright (C) 2010 Christian Hergert + * + * This file is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This file is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include + +#include "g-ring.h" + +#ifndef g_malloc0_n +#define g_malloc0_n(x,y) g_malloc0((gsize)x * y) +#endif + +#define get_element(r,i) ((r)->data + ((r)->elt_size * i)) + +typedef struct _GRingImpl GRingImpl; + +struct _GRingImpl +{ + guint8 *data; /* Pointer to real data. */ + guint len; /* Length of data allocation. */ + guint pos; /* Position in ring. */ + guint elt_size; /* Size of each element. */ + gboolean looped; /* Have we wrapped around at least once. */ + GDestroyNotify destroy; /* Destroy element callback. */ + volatile gint ref_count; /* Reference count. */ +}; + +/** + * g_ring_sized_new: + * @element_size: (in): The size per element. + * @reserved_size: (in): The number of elements to allocate. + * @element_destroy: (in): Notification called when removing an element. + * + * Creates a new instance of #GRing with the given number of elements. + * + * Returns: A new #GRing. + * Side effects: None. + */ +GRing* +g_ring_sized_new (guint element_size, + guint reserved_size, + GDestroyNotify element_destroy) +{ + GRingImpl *ring_impl; + + ring_impl = g_slice_new0(GRingImpl); + ring_impl->elt_size = element_size; + ring_impl->len = reserved_size; + ring_impl->data = g_malloc0_n(reserved_size, element_size); + ring_impl->destroy = element_destroy; + ring_impl->ref_count = 1; + + return (GRing *)ring_impl; +} + +/** + * g_ring_append_vals: + * @ring: (in): A #GRing. + * @data: (in): A pointer to the array of values. + * @len: (in): The number of values. + * + * Appends @len values located at @data. + * + * Returns: None. + * Side effects: None. + */ +void +g_ring_append_vals (GRing *ring, + gconstpointer data, + guint len) +{ + GRingImpl *ring_impl = (GRingImpl *)ring; + gpointer idx; + gint x; + guint i; + + g_return_if_fail(ring_impl != NULL); + + for (i = 0; i < len; i++) { + x = (int)ring->pos - i; + if (x < 0) x += ring->len; + idx = ring->data + (ring_impl->elt_size * x); + if (ring_impl->destroy && ring_impl->looped == TRUE) { + ring_impl->destroy(idx); + } + memcpy(idx, data, ring_impl->elt_size); + ring->pos++; + if (ring->pos >= ring->len) { + ring_impl->looped = TRUE; + } + ring->pos %= ring->len; + data += ring_impl->elt_size; + } +} + +/** + * g_ring_foreach: + * @ring: (in): A #GRing. + * @func: (in): A #GFunc to call for each element. + * @user_data: (in): user data for @func. + * + * Calls @func for every item in the #GRing starting from the most recently + * inserted element to the least recently inserted. + * + * Returns: None. + * Side effects: None. + */ +void +g_ring_foreach (GRing *ring, + GFunc func, + gpointer user_data) +{ + GRingImpl *ring_impl = (GRingImpl *)ring; + gint i; + + g_return_if_fail(ring_impl != NULL); + g_return_if_fail(func != NULL); + + for (i = ring_impl->pos - 1; i >= 0; i--) { + func(get_element(ring_impl, i), user_data); + } + for (i = ring->len - 1; i >= (int)ring_impl->pos; i--) { + func(get_element(ring_impl, i), user_data); + } +} + +/** + * g_ring_destroy: + * @ring: (in): A #GRing. + * + * Cleans up after a #GRing that is no longer in use. + * + * Returns: None. + * Side effects: None. + */ +void +g_ring_destroy (GRing *ring) +{ + GRingImpl *ring_impl = (GRingImpl *)ring; + + g_return_if_fail(ring != NULL); + g_return_if_fail(ring_impl->ref_count == 0); + + g_free(ring_impl->data); + g_slice_free(GRingImpl, ring_impl); +} + +/** + * g_ring_ref: + * @ring: (in): A #GRing. + * + * Atomically increments the reference count of @ring by one. + * + * Returns: The @ring pointer. + * Side effects: None. + */ +GRing* +g_ring_ref (GRing *ring) +{ + GRingImpl *ring_impl = (GRingImpl *)ring; + + g_return_val_if_fail(ring != NULL, NULL); + g_return_val_if_fail(ring_impl->ref_count > 0, NULL); + + g_atomic_int_inc(&ring_impl->ref_count); + return ring; +} + +/** + * g_ring_unref: + * @ring: (in): A #GRing. + * + * Atomically decrements the reference count of @ring by one. When the + * reference count reaches zero, the structure is freed. + * + * Returns: None. + * Side effects: None. + */ +void +g_ring_unref (GRing *ring) +{ + GRingImpl *ring_impl = (GRingImpl *)ring; + + g_return_if_fail(ring != NULL); + g_return_if_fail(ring_impl->ref_count > 0); + + if (g_atomic_int_dec_and_test(&ring_impl->ref_count)) { + g_ring_destroy(ring); + } +} + +/** + * g_ring_get_type: + * + * Retrieves the #GType identifier for #GRing. + * + * Returns: The #GType for #GRing. + * Side effects: The type is registered on first call. + */ +GType +g_ring_get_type (void) +{ + static gsize initialized = FALSE; + static GType type_id = 0; + + if (g_once_init_enter(&initialized)) { + type_id = g_boxed_type_register_static("GRing", + (GBoxedCopyFunc)g_ring_ref, + (GBoxedFreeFunc)g_ring_unref); + g_once_init_leave(&initialized, TRUE); + } + return type_id; +} diff --git a/deps/uber-graph/g-ring.h b/deps/uber-graph/g-ring.h new file mode 100644 index 00000000..a4943878 --- /dev/null +++ b/deps/uber-graph/g-ring.h @@ -0,0 +1,84 @@ +/* g-ring.h + * + * Copyright (C) 2010 Christian Hergert + * + * This file is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This file is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#ifndef __G_RING_H__ +#define __G_RING_H__ + +#include + +G_BEGIN_DECLS + +/** + * g_ring_append_val: + * @ring: A #GRing. + * @val: A value to append to the #GRing. + * + * Appends a value to the ring buffer. @val must be a variable as it is + * referenced to. + * + * Returns: None. + * Side effects: None. + */ +#define g_ring_append_val(ring, val) g_ring_append_vals(ring, &(val), 1) + +/** + * g_ring_get_index: + * @ring: A #GRing. + * @type: The type to extract. + * @i: The index within the #GRing relative to the current position. + * + * Retrieves the value at the given index from the #GRing. The value + * is cast to @type. You may retrieve a pointer to the value within the + * array by using &. + * + * [[ + * gdouble *v = &g_ring_get_index(ring, gdouble, 0); + * gdouble v = g_ring_get_index(ring, gdouble, 0); + * ]] + * + * Returns: The value at the given index. + * Side effects: None. + */ +#define g_ring_get_index(ring, type, i) \ + (((type*)(ring)->data)[(((gint)(ring)->pos - 1 - (i)) >= 0) ? \ + ((ring)->pos - 1 - (i)) : \ + ((ring)->len + ((ring)->pos - 1 - (i)))]) + +typedef struct +{ + guint8 *data; + guint len; + guint pos; +} GRing; + +GType g_ring_get_type (void) G_GNUC_CONST; +GRing* g_ring_sized_new (guint element_size, + guint reserved_size, + GDestroyNotify element_destroy); +void g_ring_append_vals (GRing *ring, + gconstpointer data, + guint len); +void g_ring_foreach (GRing *ring, + GFunc func, + gpointer user_data); +GRing* g_ring_ref (GRing *ring); +void g_ring_unref (GRing *ring); + +G_END_DECLS + +#endif /* __G_RING_H__ */ diff --git a/deps/uber-graph/uber-frame-source.c b/deps/uber-graph/uber-frame-source.c new file mode 100644 index 00000000..3de4d537 --- /dev/null +++ b/deps/uber-graph/uber-frame-source.c @@ -0,0 +1,177 @@ +/* + * Clutter. + * + * An OpenGL based 'interactive canvas' library. + * + * Authored By Neil Roberts + * + * Copyright (C) 2008 OpenedHand + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library. If not, see . + * + * + */ + +/* Modified by Christian Hergert for use in Uber Graph. */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include "uber-frame-source.h" +#include "uber-timeout-interval.h" + +typedef struct _UberFrameSource UberFrameSource; + +struct _UberFrameSource +{ + GSource source; + + UberTimeoutInterval timeout; +}; + +static gboolean uber_frame_source_prepare (GSource *source, + gint *timeout); +static gboolean uber_frame_source_check (GSource *source); +static gboolean uber_frame_source_dispatch (GSource *source, + GSourceFunc callback, + gpointer user_data); + +static GSourceFuncs uber_frame_source_funcs = +{ + uber_frame_source_prepare, + uber_frame_source_check, + uber_frame_source_dispatch, + NULL +}; + +/** + * uber_frame_source_add_full: + * @priority: the priority of the frame source. Typically this will be in the + * range between %G_PRIORITY_DEFAULT and %G_PRIORITY_HIGH. + * @fps: the number of times per second to call the function + * @func: function to call + * @data: data to pass to the function + * @notify: function to call when the timeout source is removed + * + * Sets a function to be called at regular intervals with the given + * priority. The function is called repeatedly until it returns + * %FALSE, at which point the timeout is automatically destroyed and + * the function will not be called again. The @notify function is + * called when the timeout is destroyed. The first call to the + * function will be at the end of the first @interval. + * + * This function is similar to g_timeout_add_full() except that it + * will try to compensate for delays. For example, if @func takes half + * the interval time to execute then the function will be called again + * half the interval time after it finished. In contrast + * g_timeout_add_full() would not fire until a full interval after the + * function completes so the delay between calls would be 1.0 / @fps * + * 1.5. This function does not however try to invoke the function + * multiple times to catch up missing frames if @func takes more than + * @interval ms to execute. + * + * Return value: the ID (greater than 0) of the event source. + * + * Since: 0.8 + */ +guint +uber_frame_source_add_full (gint priority, + guint fps, + GSourceFunc func, + gpointer data, + GDestroyNotify notify) +{ + guint ret; + GSource *source = g_source_new (&uber_frame_source_funcs, + sizeof (UberFrameSource)); + UberFrameSource *frame_source = (UberFrameSource *) source; + + _uber_timeout_interval_init (&frame_source->timeout, fps); + + if (priority != G_PRIORITY_DEFAULT) + g_source_set_priority (source, priority); + +#if GLIB_CHECK_VERSION (2, 25, 8) + g_source_set_name (source, "Uber frame timeout"); +#endif + + g_source_set_callback (source, func, data, notify); + + ret = g_source_attach (source, NULL); + + g_source_unref (source); + + return ret; +} + +/** + * uber_frame_source_add: + * @fps: the number of times per second to call the function + * @func: function to call + * @data: data to pass to the function + * + * Simple wrapper around uber_frame_source_add_full(). + * + * Return value: the ID (greater than 0) of the event source. + * + * Since: 0.8 + */ +guint +uber_frame_source_add (guint fps, + GSourceFunc func, + gpointer data) +{ + return uber_frame_source_add_full (G_PRIORITY_DEFAULT, + fps, func, data, NULL); +} + +static gboolean +uber_frame_source_prepare (GSource *source, + gint *delay) +{ + UberFrameSource *frame_source = (UberFrameSource *) source; + gint64 current_time; + +#if GLIB_CHECK_VERSION (2, 27, 3) + current_time = g_source_get_time (source) / 1000; +#else + { + GTimeVal source_time; + g_source_get_current_time (source, &source_time); + current_time = source_time.tv_sec * 1000 + source_time.tv_usec / 1000; + } +#endif + + return _uber_timeout_interval_prepare (current_time, + &frame_source->timeout, + delay); +} + +static gboolean +uber_frame_source_check (GSource *source) +{ + return uber_frame_source_prepare (source, NULL); +} + +static gboolean +uber_frame_source_dispatch (GSource *source, + GSourceFunc callback, + gpointer user_data) +{ + UberFrameSource *frame_source = (UberFrameSource *) source; + + return _uber_timeout_interval_dispatch (&frame_source->timeout, + callback, user_data); +} diff --git a/deps/uber-graph/uber-frame-source.h b/deps/uber-graph/uber-frame-source.h new file mode 100644 index 00000000..8976beaa --- /dev/null +++ b/deps/uber-graph/uber-frame-source.h @@ -0,0 +1,43 @@ +/* + * Clutter. + * + * An OpenGL based 'interactive canvas' library. + * + * Authored By Matthew Allum + * + * Copyright (C) 2008 OpenedHand + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library. If not, see . + */ + +#ifndef __UBER_FRAME_SOURCE_H__ +#define __UBER_FRAME_SOURCE_H__ + +#include + +G_BEGIN_DECLS + +guint uber_frame_source_add (guint fps, + GSourceFunc func, + gpointer data); + +guint uber_frame_source_add_full (gint priority, + guint fps, + GSourceFunc func, + gpointer data, + GDestroyNotify notify); + +G_END_DECLS + +#endif /* __UBER_FRAME_SOURCE_H__ */ diff --git a/deps/uber-graph/uber-graph.c b/deps/uber-graph/uber-graph.c new file mode 100644 index 00000000..9118f263 --- /dev/null +++ b/deps/uber-graph/uber-graph.c @@ -0,0 +1,2166 @@ +/* uber-graph.c + * + * Copyright (C) 2010 Christian Hergert + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include +#include +#include +#include + +#include "uber-graph.h" +#include "uber-scale.h" +#include "uber-frame-source.h" + +#define WIDGET_CLASS (GTK_WIDGET_CLASS(uber_graph_parent_class)) +#define RECT_RIGHT(r) ((r).x + (r).width) +#define RECT_BOTTOM(r) ((r).y + (r).height) +#define UNSET_SURFACE(p) \ + G_STMT_START { \ + if (p) { \ + cairo_surface_destroy (p); \ + p = NULL; \ + } \ + } G_STMT_END +#define CLEAR_CAIRO(c, a) \ + G_STMT_START { \ + cairo_save(c); \ + cairo_rectangle(c, 0, 0, a.width, a.height); \ + cairo_set_operator(c, CAIRO_OPERATOR_CLEAR); \ + cairo_fill(c); \ + cairo_restore(c); \ + } G_STMT_END + +/** + * SECTION:uber-graph.h + * @title: UberGraph + * @short_description: Graphing of realtime data. + * + * #UberGraph is an abstract base class for building realtime graphs. It + * handles scrolling the graph based on the required time intervals and tries + * to render as little data as possible. + * + * Subclasses are responsible for acquiring data when #UberGraph notifies them + * of their next data sample. Additionally, there are two rendering methods. + * UberGraph::render is a render of the full scene. UberGraph::render_fast is + * a rendering of just a new data sample. Ideally, UberGraph::render_fast is + * going to be called. + * + * #UberGraph uses a #cairo_surface_t as a ring buffer to store the contents of the + * graph. Upon destructive changes to the widget such as allocation changed + * or a new #GtkStyle set, a full rendering of the graph will be required. + */ + + +struct _UberGraphPrivate +{ + cairo_surface_t *fg_surface; + cairo_surface_t *bg_surface; + + GdkRectangle content_rect; /* Content area rectangle. */ + GdkRectangle nonvis_rect; /* Non-visible drawing area larger than + * content rect. Used to draw over larger + * area so we can scroll and not fall out + * of view. + */ + UberGraphFormat format; /* Data type format. */ + gboolean paused; /* Is the graph paused. */ + gboolean have_rgba; /* Do we support 32-bit RGBA colormaps. */ + gint x_slots; /* Number of data points on x axis. */ + gint fps; /* Desired frames per second. */ + gint fps_real; /* Milleseconds between FPS callbacks. */ + gfloat fps_each; /* How far to move in each FPS tick. */ + guint fps_handler; /* Timeout for moving the content. */ + gfloat dps; /* Desired data points per second. */ + gint dps_slot; /* Which slot in the surface buffer. */ + gfloat dps_each; /* How many pixels between data points. */ + GTimeVal dps_tv; /* Timeval of last data point. */ + guint dps_handler; /* Timeout for getting new data. */ + guint dps_downscale; /* Count since last downscale. */ + gboolean fg_dirty; /* Does the foreground need to be redrawn. */ + gboolean bg_dirty; /* Does the background need to be redrawn. */ + guint tick_len; /* How long should axis-ticks be. */ + gboolean show_xlines; /* Show X axis lines. */ + gboolean show_xlabels; /* Show X axis labels. */ + gboolean show_ylines; /* Show Y axis lines. */ + gboolean full_draw; /* Do we need to redraw all foreground content. + * If false, draws will try to only add new + * content to the back buffer. + */ + GtkWidget *labels; /* Container for graph labels. */ + GtkWidget *align; /* Alignment for labels. */ + gint fps_count; /* Track actual FPS. */ +}; + +G_DEFINE_ABSTRACT_TYPE_WITH_PRIVATE(UberGraph, uber_graph, GTK_TYPE_DRAWING_AREA) + +static gboolean show_fps = FALSE; + +enum +{ + PROP_0, + PROP_FORMAT, +}; + +/** + * uber_graph_new: + * + * Creates a new instance of #UberGraph. + * + * Returns: the newly created instance of #UberGraph. + * Side effects: None. + */ +GtkWidget* +uber_graph_new (void) +{ + UberGraph *graph; + + graph = g_object_new(UBER_TYPE_GRAPH, NULL); + return GTK_WIDGET(graph); +} + +/** + * uber_graph_fps_timeout: + * @graph: A #UberGraph. + * + * XXX + * + * Returns: %TRUE always. + * Side effects: None. + */ +static gboolean +uber_graph_fps_timeout (UberGraph *graph) /* IN */ +{ + UberGraphPrivate *priv; + + g_return_val_if_fail(UBER_IS_GRAPH(graph), FALSE); + + priv = graph->priv; + gtk_widget_queue_draw_area(GTK_WIDGET(graph), + priv->content_rect.x, + priv->content_rect.y, + priv->content_rect.width, + priv->content_rect.height); + return TRUE; +} + +/** + * uber_graph_get_content_area: + * @graph: A #UberGraph. + * + * Retrieves the content area of the graph. + * + * Returns: None. + * Side effects: None. + */ +void +uber_graph_get_content_area (UberGraph *graph, /* IN */ + GdkRectangle *rect) /* OUT */ +{ + UberGraphPrivate *priv; + + g_return_if_fail(UBER_IS_GRAPH(graph)); + g_return_if_fail(rect != NULL); + + priv = graph->priv; + *rect = priv->content_rect; +} + +/** + * uber_graph_get_show_xlines: + * @graph: A #UberGraph. + * + * Retrieves if the X grid lines should be shown. + * + * Returns: None. + * Side effects: None. + */ +gboolean +uber_graph_get_show_xlines (UberGraph *graph) /* IN */ +{ + UberGraphPrivate *priv; + + g_return_val_if_fail(UBER_IS_GRAPH(graph), FALSE); + + priv = graph->priv; + return priv->show_xlines; +} + +/** + * uber_graph_set_show_xlines: + * @graph: A #UberGraph. + * @show_xlines: Show x lines. + * + * Sets if the x lines should be shown. + * + * Returns: None. + * Side effects: None. + */ +void +uber_graph_set_show_xlines (UberGraph *graph, /* IN */ + gboolean show_xlines) /* IN */ +{ + UberGraphPrivate *priv; + + g_return_if_fail(UBER_IS_GRAPH(graph)); + + priv = graph->priv; + priv->show_xlines = show_xlines; + priv->bg_dirty = TRUE; + gtk_widget_queue_draw(GTK_WIDGET(graph)); +} + +/** + * uber_graph_get_show_ylines: + * @graph: A #UberGraph. + * + * Retrieves if the X grid lines should be shown. + * + * Returns: None. + * Side effects: None. + */ +gboolean +uber_graph_get_show_ylines (UberGraph *graph) /* IN */ +{ + UberGraphPrivate *priv; + + g_return_val_if_fail(UBER_IS_GRAPH(graph), FALSE); + + priv = graph->priv; + return priv->show_ylines; +} + +/** + * uber_graph_set_show_ylines: + * @graph: A #UberGraph. + * @show_ylines: Show x lines. + * + * Sets if the x lines should be shown. + * + * Returns: None. + * Side effects: None. + */ +void +uber_graph_set_show_ylines (UberGraph *graph, /* IN */ + gboolean show_ylines) /* IN */ +{ + UberGraphPrivate *priv; + + g_return_if_fail(UBER_IS_GRAPH(graph)); + + priv = graph->priv; + priv->show_ylines = show_ylines; + priv->bg_dirty = TRUE; + gtk_widget_queue_draw(GTK_WIDGET(graph)); +} + +/** + * uber_graph_get_labels: + * @graph: A #UberGraph. + * + * XXX + * + * Returns: None. + * Side effects: None. + */ +GtkWidget* +uber_graph_get_labels (UberGraph *graph) /* IN */ +{ + UberGraphPrivate *priv; + + g_return_val_if_fail(UBER_IS_GRAPH(graph), NULL); + + priv = graph->priv; + return priv->align; +} + +/** + * uber_graph_scale_changed: + * @graph: A #UberGraph. + * + * XXX + * + * Returns: None. + * Side effects: None. + */ +void +uber_graph_scale_changed (UberGraph *graph) /* IN */ +{ + UberGraphPrivate *priv; + GtkAllocation alloc; + GdkRectangle rect; + + g_return_if_fail(UBER_IS_GRAPH(graph)); + + priv = graph->priv; + if (!priv->paused) { + priv->fg_dirty = TRUE; + priv->bg_dirty = TRUE; + priv->full_draw = TRUE; + gtk_widget_get_allocation(GTK_WIDGET(graph), &alloc); + rect.x = 0; + rect.y = 0; + rect.width = alloc.width; + rect.height = alloc.height; + gdk_window_invalidate_rect(gtk_widget_get_window(GTK_WIDGET(graph)), + &rect, TRUE); + } +} + +/** + * uber_graph_get_next_data: + * @graph: A #UberGraph. + * + * XXX + * + * Returns: None. + * Side effects: None. + */ +static inline gboolean +uber_graph_get_next_data (UberGraph *graph) /* IN */ +{ + UberGraphPrivate *priv; + gboolean ret = TRUE; + + g_return_val_if_fail(UBER_IS_GRAPH(graph), FALSE); + + /* + * Get the current time for this data point. This is used to calculate + * the proper offset in the FPS callback. + */ + priv = graph->priv; + g_get_current_time(&priv->dps_tv); + /* + * Notify the subclass to retrieve the data point. + */ + if (UBER_GRAPH_GET_CLASS(graph)->get_next_data) { + ret = UBER_GRAPH_GET_CLASS(graph)->get_next_data(graph); + } + return ret; +} + +/** + * uber_graph_init_texture: + * @graph: A #UberGraph. + * + * XXX + * + * Returns: None. + * Side effects: None. + */ +static void +uber_graph_init_texture (UberGraph *graph) /* IN */ +{ + UberGraphPrivate *priv; + GtkAllocation alloc; + GdkWindow *window; + cairo_t *cr; + gint width; + + g_return_if_fail(UBER_IS_GRAPH(graph)); + + priv = graph->priv; + gtk_widget_get_allocation(GTK_WIDGET(graph), &alloc); + window = gtk_widget_get_window(GTK_WIDGET(graph)); + /* + * Get drawable to base surface upon. + */ + if (!window) { + g_critical("%s() called before GdkWindow is allocated.", G_STRFUNC); + return; + } + /* + * Initialize foreground and background surface. + */ + width = MAX(priv->nonvis_rect.x + priv->nonvis_rect.width, alloc.width); + priv->fg_surface = gdk_window_create_similar_surface(window, CAIRO_CONTENT_COLOR_ALPHA, width, alloc.height); + /* + * Clear foreground contents. + */ + cr = cairo_create(priv->fg_surface); + CLEAR_CAIRO(cr, alloc); + cairo_destroy(cr); +} + +/** + * uber_graph_init_bg: + * @graph: A #UberGraph. + * + * XXX + * + * Returns: None. + * Side effects: None. + */ +static void +uber_graph_init_bg (UberGraph *graph) /* IN */ +{ + UberGraphPrivate *priv; + GtkAllocation alloc; + GdkWindow *window; + cairo_t *cr; + + g_return_if_fail(UBER_IS_GRAPH(graph)); + + priv = graph->priv; + gtk_widget_get_allocation(GTK_WIDGET(graph), &alloc); + window = gtk_widget_get_window(GTK_WIDGET(graph)); + /* + * Get drawable for surface. + */ + if (!window) { + g_critical("%s() called before GdkWindow is allocated.", G_STRFUNC); + return; + } + /* + * Create the server-side surface. + */ + priv->bg_surface = gdk_window_create_similar_surface(window, CAIRO_CONTENT_COLOR_ALPHA, alloc.width, alloc.height); + /* + * Clear background contents. + */ + cr = cairo_create(priv->bg_surface); + CLEAR_CAIRO(cr, alloc); + cairo_destroy(cr); +} + +/** + * uber_graph_calculate_rects: + * @graph: A #UberGraph. + * + * XXX + * + * Returns: None. + * Side effects: None. + */ +static void +uber_graph_calculate_rects (UberGraph *graph) /* IN */ +{ + UberGraphPrivate *priv; + GtkAllocation alloc; + PangoLayout *layout; + PangoFontDescription *font_desc; + GdkWindow *window; + gint pango_width; + gint pango_height; + cairo_t *cr; + + g_return_if_fail(UBER_IS_GRAPH(graph)); + + priv = graph->priv; + gtk_widget_get_allocation(GTK_WIDGET(graph), &alloc); + window = gtk_widget_get_window(GTK_WIDGET(graph)); + /* + * We can't calculate rectangles before we have a GdkWindow. + */ + if (!window) { + return; + } + /* + * Determine the pixels required for labels. + */ + cr = gdk_cairo_create(window); + layout = pango_cairo_create_layout(cr); + font_desc = pango_font_description_new(); + pango_font_description_set_family_static(font_desc, "Monospace"); + pango_font_description_set_size(font_desc, 6 * PANGO_SCALE); + pango_layout_set_font_description(layout, font_desc); + pango_layout_set_text(layout, "XXXXXXXXXX", -1); + pango_layout_get_pixel_size(layout, &pango_width, &pango_height); + pango_font_description_free(font_desc); + g_object_unref(layout); + cairo_destroy(cr); + /* + * Calculate content area rectangle. + */ + priv->content_rect.x = priv->tick_len + pango_width + 1.5; + priv->content_rect.y = (pango_height / 2.) + 1.5; + priv->content_rect.width = alloc.width - priv->content_rect.x - 3.0; + priv->content_rect.height = alloc.height - priv->tick_len - pango_height + - (pango_height / 2.) - 3.0; + if (!priv->show_xlabels) { + priv->content_rect.height += pango_height; + } + /* + * Adjust label offset. + */ + /* + * Calculate FPS/DPS adjustments. + */ + priv->dps_each = ceil((gfloat)priv->content_rect.width + / (gfloat)(priv->x_slots - 1)); + priv->fps_each = priv->dps_each + / ((gfloat)priv->fps / (gfloat)priv->dps); + /* + * XXX: Small hack to make things a bit smoother at small scales. + */ + if (priv->fps_each < .5) { + priv->fps_each = 1; + priv->fps_real = (1000. / priv->dps_each) / 2.; + } else { + priv->fps_real = 1000. / priv->fps; + } + /* + * Update FPS callback. + */ + if (priv->fps_handler) { + g_source_remove(priv->fps_handler); + priv->fps_handler = uber_frame_source_add(priv->fps, + (GSourceFunc)uber_graph_fps_timeout, + graph); + } + /* + * Calculate the non-visible area that drawing should happen within. + */ + priv->nonvis_rect = priv->content_rect; + priv->nonvis_rect.width = priv->dps_each * priv->x_slots; + /* + * Update positioning for label alignment. + */ + gtk_widget_set_margin_top(GTK_WIDGET(priv->align), 6); + gtk_widget_set_margin_bottom(GTK_WIDGET(priv->align), 6); + gtk_widget_set_margin_start(GTK_WIDGET(priv->align), priv->content_rect.x); + gtk_widget_set_margin_end(GTK_WIDGET(priv->align), 0); +} + +/** + * uber_graph_get_show_xlabels: + * @graph: A #UberGraph. + * + * Retrieves if the X grid labels should be shown. + * + * Returns: None. + * Side effects: None. + */ +gboolean +uber_graph_get_show_xlabels (UberGraph *graph) /* IN */ +{ + UberGraphPrivate *priv; + + g_return_val_if_fail(UBER_IS_GRAPH(graph), FALSE); + + priv = graph->priv; + return priv->show_xlabels; +} + +/** + * uber_graph_set_show_xlabels: + * @graph: A #UberGraph. + * @show_xlabels: Show x labels. + * + * Sets if the x labels should be shown. + * + * Returns: None. + * Side effects: None. + */ +void +uber_graph_set_show_xlabels (UberGraph *graph, /* IN */ + gboolean show_xlabels) /* IN */ +{ + UberGraphPrivate *priv; + + g_return_if_fail(UBER_IS_GRAPH(graph)); + + priv = graph->priv; + priv->show_xlabels = show_xlabels; + priv->bg_dirty = TRUE; + uber_graph_calculate_rects(graph); + gtk_widget_queue_draw(GTK_WIDGET(graph)); +} + +/** + * uber_graph_dps_timeout: + * @graph: A #UberGraph. + * + * XXX + * + * Returns: %TRUE always. + * Side effects: None. + */ +static gboolean +uber_graph_dps_timeout (UberGraph *graph) /* IN */ +{ + UberGraphPrivate *priv; + + g_return_val_if_fail(UBER_IS_GRAPH(graph), FALSE); + + priv = graph->priv; + if (!uber_graph_get_next_data(graph)) { + /* + * XXX: How should we handle failed data retrieval. + */ + } + if (G_UNLIKELY(show_fps)) { + g_print("UberGraph[%p] %02d FPS\n", graph, priv->fps_count); + priv->fps_count = 0; + } + /* + * Make sure the content is re-rendered. + */ + if (!priv->paused) { + priv->fg_dirty = TRUE; + /* + * We do not queue a draw here since the next FPS callback will happen + * when it is the right time to show the frame. + */ + } + /* + * Try to downscale the graph. We do this whether or not we are paused + * as redrawing is deferred if we are in a paused state. + */ + priv->dps_downscale++; + if (priv->dps_downscale >= 5) { + if (UBER_GRAPH_GET_CLASS(graph)->downscale) { + if (UBER_GRAPH_GET_CLASS(graph)->downscale(graph)) { + if (!priv->paused) { + uber_graph_redraw(graph); + } + } + } + priv->dps_downscale = 0; + } + return TRUE; +} + +/** + * uber_graph_register_dps_handler: + * @graph: A #UberGraph. + * + * XXX + * + * Returns: None. + * Side effects: None. + */ +static void +uber_graph_register_dps_handler (UberGraph *graph) /* IN */ +{ + UberGraphPrivate *priv; + guint dps_freq; + gboolean do_now = TRUE; + + g_return_if_fail(UBER_IS_GRAPH(graph)); + + priv = graph->priv; + if (priv->dps_handler) { + g_source_remove(priv->dps_handler); + do_now = FALSE; + } + /* + * Calculate the update frequency. + */ + dps_freq = 1000 / priv->dps; + /* + * Install the data handler. + */ + priv->dps_handler = g_timeout_add(dps_freq, + (GSourceFunc)uber_graph_dps_timeout, + graph); + /* + * Call immediately. + */ + if (do_now) { + uber_graph_dps_timeout(graph); + } +} + +/** + * uber_graph_register_fps_handler: + * @graph: A #UberGraph. + * + * XXX + * + * Returns: None. + * Side effects: None. + */ +static void +uber_graph_register_fps_handler (UberGraph *graph) /* IN */ +{ + UberGraphPrivate *priv; + + g_return_if_fail(UBER_IS_GRAPH(graph)); + + priv = graph->priv; + /* + * Remove any existing FPS handler. + */ + if (priv->fps_handler) { + g_source_remove(priv->fps_handler); + } + /* + * Install the FPS timeout. + */ + priv->fps_handler = uber_frame_source_add(priv->fps, + (GSourceFunc)uber_graph_fps_timeout, + graph); +} + +/** + * uber_graph_set_dps: + * @graph: A #UberGraph. + * + * XXX + * + * Returns: None. + * Side effects: None. + */ +void +uber_graph_set_dps (UberGraph *graph, /* IN */ + gfloat dps) /* IN */ +{ + UberGraphPrivate *priv; + + g_return_if_fail(UBER_IS_GRAPH(graph)); + + priv = graph->priv; + priv->dps = dps; + /* + * TODO: Does this belong somewhere else? + */ + if (UBER_GRAPH_GET_CLASS(graph)->set_stride) { + UBER_GRAPH_GET_CLASS(graph)->set_stride(graph, priv->x_slots); + } + /* + * Recalculate frame rates and timeouts. + */ + uber_graph_calculate_rects(graph); + uber_graph_register_dps_handler(graph); + uber_graph_register_fps_handler(graph); +} + +/** + * uber_graph_set_fps: + * @graph: A #UberGraph. + * + * XXX + * + * Returns: None. + * Side effects: None. + */ +void +uber_graph_set_fps (UberGraph *graph, /* IN */ + guint fps) /* IN */ +{ + UberGraphPrivate *priv; + + g_return_if_fail(UBER_IS_GRAPH(graph)); + + priv = graph->priv; + priv->fps = fps; + uber_graph_register_fps_handler(graph); +} + +/** + * uber_graph_realize: + * @widget: A #GtkWidget. + * + * XXX + * + * Returns: None. + * Side effects: None. + */ +static void +uber_graph_realize (GtkWidget *widget) /* IN */ +{ + UberGraph *graph; + UberGraphPrivate *priv; + + g_return_if_fail(UBER_IS_GRAPH(widget)); + + graph = UBER_GRAPH(widget); + priv = graph->priv; + WIDGET_CLASS->realize(widget); + /* + * Calculate new layout based on allocation. + */ + uber_graph_calculate_rects(graph); + /* + * Re-initialize textures for updated sizes. + */ + UNSET_SURFACE(priv->bg_surface); + UNSET_SURFACE(priv->fg_surface); + uber_graph_init_bg(graph); + uber_graph_init_texture(graph); + /* + * Notify subclass of current data stride (points per graph). + */ + if (UBER_GRAPH_GET_CLASS(widget)->set_stride) { + UBER_GRAPH_GET_CLASS(widget)->set_stride(UBER_GRAPH(widget), + priv->x_slots); + } + /* + * Install the data collector. + */ + uber_graph_register_dps_handler(graph); +} + +/** + * uber_graph_unrealize: + * @widget: A #GtkWidget. + * + * XXX + * + * Returns: None. + * Side effects: None. + */ +static void +uber_graph_unrealize (GtkWidget *widget) /* IN */ +{ + UberGraph *graph; + UberGraphPrivate *priv; + + g_return_if_fail(UBER_IS_GRAPH(widget)); + + graph = UBER_GRAPH(widget); + priv = graph->priv; + /* + * Unregister any data acquisition handlers. + */ + if (priv->dps_handler) { + g_source_remove(priv->dps_handler); + priv->dps_handler = 0; + } + /* + * Destroy textures. + */ + UNSET_SURFACE(priv->bg_surface); + UNSET_SURFACE(priv->fg_surface); +} + +/** + * uber_graph_screen_changed: + * @widget: A #GtkWidget. + * + * XXX + * + * Returns: None. + * Side effects: None. + */ +static void +uber_graph_screen_changed (GtkWidget *widget, /* IN */ + GdkScreen *old_screen) /* IN */ +{ + UberGraphPrivate *priv; + GdkScreen *screen; + GdkVisual *visual; + + g_return_if_fail(UBER_IS_GRAPH(widget)); + + screen = gtk_widget_get_screen (GTK_WIDGET (widget)); + visual = gdk_screen_get_rgba_visual (screen); + + priv = UBER_GRAPH(widget)->priv; + /* + * Check if we have RGBA colormaps available. + */ + priv->have_rgba = visual != NULL; +} + +/** + * uber_graph_show: + * @widget: A #GtkWidget. + * + * XXX + * + * Returns: None. + * Side effects: None. + */ +static void +uber_graph_show (GtkWidget *widget) /* IN */ +{ + g_return_if_fail(UBER_IS_GRAPH(widget)); + + WIDGET_CLASS->show(widget); + /* + * Only run the FPS timeout when we are visible. + */ + uber_graph_register_fps_handler(UBER_GRAPH(widget)); +} + +/** + * uber_graph_hide: + * @widget: A #GtkWIdget. + * + * XXX + * + * Returns: None. + * Side effects: None. + */ +static void +uber_graph_hide (GtkWidget *widget) /* IN */ +{ + UberGraphPrivate *priv; + + g_return_if_fail(UBER_IS_GRAPH(widget)); + + priv = UBER_GRAPH(widget)->priv; + /* + * Disable the FPS timeout when we are not visible. + */ + if (priv->fps_handler) { + g_source_remove(priv->fps_handler); + priv->fps_handler = 0; + } +} + +static inline void +uber_graph_get_pixmap_rect (UberGraph *graph, /* IN */ + GdkRectangle *rect) /* OUT */ +{ + UberGraphPrivate *priv; + GtkAllocation alloc; + + g_return_if_fail(UBER_IS_GRAPH(graph)); + + priv = graph->priv; + gtk_widget_get_allocation(GTK_WIDGET(graph), &alloc); + rect->x = 0; + rect->y = 0; + rect->width = MAX(alloc.width, + priv->nonvis_rect.x + priv->nonvis_rect.width); + rect->height = alloc.height; +} + +/** + * uber_graph_render_fg: + * @graph: A #UberGraph. + * + * XXX + * + * Returns: None. + * Side effects: None. + */ +static void +uber_graph_render_fg (UberGraph *graph) /* IN */ +{ + UberGraphPrivate *priv; + GtkAllocation alloc; + GdkRectangle rect; + cairo_t *cr; + gfloat each; + gfloat x_epoch; + + g_return_if_fail(UBER_IS_GRAPH(graph)); + + /* + * Acquire resources. + */ + priv = graph->priv; + gtk_widget_get_allocation(GTK_WIDGET(graph), &alloc); + uber_graph_get_pixmap_rect(graph, &rect); + cr = cairo_create(priv->fg_surface); + /* + * Render to texture if needed. + */ + if (priv->fg_dirty) { + /* + * Caclulate relative positionings for use in renderers. + */ + each = priv->content_rect.width / (gfloat)(priv->x_slots - 1); + x_epoch = RECT_RIGHT(priv->nonvis_rect); + /* + * If we are in a fast draw, lets copy the content from the other + * buffer at the next offset. + */ + if (!priv->full_draw && UBER_GRAPH_GET_CLASS(graph)->render_fast) { + /* + * Determine next rendering slot. + */ + rect.x = priv->content_rect.x + + (priv->dps_each * priv->dps_slot); + rect.width = priv->dps_each; + rect.y = priv->content_rect.y; + rect.height = priv->content_rect.height; + priv->dps_slot = (priv->dps_slot + 1) % priv->x_slots; + x_epoch = RECT_RIGHT(rect); + /* + * Clear content area. + */ + cairo_save(cr); + cairo_set_operator(cr, CAIRO_OPERATOR_CLEAR); + gdk_cairo_rectangle(cr, &rect); + cairo_fill(cr); + cairo_restore(cr); + +#if 0 + /* + * XXX: Draw line helper for debugging. + */ + cairo_save(cr); + cairo_set_source_rgb(cr, .3, .3, .3); + cairo_rectangle(cr, + rect.x, + rect.y + (rect.height / (gfloat)priv->x_slots * priv->dps_slot), + rect.width, + rect.height / priv->x_slots); + cairo_fill(cr); + cairo_restore(cr); +#endif + + /* + * Render new content clipped. + */ + cairo_save(cr); + cairo_reset_clip(cr); + gdk_cairo_rectangle(cr, &rect); + cairo_clip(cr); + /* + * Determine area for this draw. + */ + UBER_GRAPH_GET_CLASS(graph)->render_fast(graph, + cr, + &rect, + x_epoch, + each + .5); + cairo_restore(cr); + } else { + /* + * Clear content area. + */ + cairo_save(cr); + cairo_set_operator(cr, CAIRO_OPERATOR_CLEAR); + gdk_cairo_rectangle(cr, &rect); + cairo_fill(cr); + cairo_restore(cr); + /* + * Draw the entire foreground. + */ + if (UBER_GRAPH_GET_CLASS(graph)->render) { + priv->dps_slot = 0; + cairo_save(cr); + gdk_cairo_rectangle(cr, &priv->nonvis_rect); + cairo_clip(cr); + UBER_GRAPH_GET_CLASS(graph)->render(graph, + cr, + &priv->nonvis_rect, + x_epoch, + each); + cairo_restore(cr); + } + } + } + /* + * Foreground is no longer dirty. + */ + priv->fg_dirty = FALSE; + priv->full_draw = FALSE; + /* + * Cleanup. + */ + cairo_destroy(cr); +} + +/** + * uber_graph_redraw: + * @graph: A #UberGraph. + * + * XXX + * + * Returns: None. + * Side effects: None. + */ +void +uber_graph_redraw (UberGraph *graph) /* IN */ +{ + UberGraphPrivate *priv; + + g_return_if_fail(UBER_IS_GRAPH(graph)); + + priv = graph->priv; + priv->fg_dirty = TRUE; + priv->bg_dirty = TRUE; + priv->full_draw = TRUE; + gtk_widget_queue_draw(GTK_WIDGET(graph)); +} + +/** + * uber_graph_get_yrange: + * @graph: A #UberGraph. + * + * XXX + * + * Returns: None. + * Side effects: None. + */ +static inline void +uber_graph_get_yrange (UberGraph *graph, /* IN */ + UberRange *range) /* OUT */ +{ + g_return_if_fail(UBER_IS_GRAPH(graph)); + g_return_if_fail(range != NULL); + + memset(range, 0, sizeof(*range)); + if (UBER_GRAPH_GET_CLASS(graph)->get_yrange) { + UBER_GRAPH_GET_CLASS(graph)->get_yrange(graph, range); + } +} + +/** + * uber_graph_set_format: + * @graph: A UberGraph. + * + * XXX + * + * Returns: None. + * Side effects: None. + */ +void +uber_graph_set_format (UberGraph *graph, /* IN */ + UberGraphFormat format) /* IN */ +{ + UberGraphPrivate *priv; + + g_return_if_fail(UBER_IS_GRAPH(graph)); + + priv = graph->priv; + priv->format = format; + priv->bg_dirty = TRUE; + gtk_widget_queue_draw(GTK_WIDGET(graph)); +} + +static void +uber_graph_render_x_axis (UberGraph *graph, /* IN */ + cairo_t *cr) /* IN */ +{ + UberGraphPrivate *priv; + const gdouble dashes[] = { 1.0, 2.0 }; + PangoFontDescription *fd; + PangoLayout *pl; + GtkStyleContext *style; + GdkRGBA fg_color; + gfloat each; + gfloat x; + gfloat y; + gfloat h; + gchar text[16] = { 0 }; + gint count; + gint wi; + gint hi; + gint i; + + g_return_if_fail(UBER_IS_GRAPH(graph)); + + priv = graph->priv; + style = gtk_widget_get_style_context(GTK_WIDGET(graph)); + gtk_style_context_get_color(style, GTK_STATE_FLAG_NORMAL, &fg_color); + + count = priv->x_slots / 10; + each = priv->content_rect.width / (gfloat)count; + /* + * Draw ticks. + */ + cairo_save(cr); + pl = pango_cairo_create_layout(cr); + fd = pango_font_description_new(); + pango_font_description_set_family_static(fd, "Monospace"); + pango_font_description_set_size(fd, 6 * PANGO_SCALE); + pango_layout_set_font_description(pl, fd); + gdk_cairo_set_source_rgba(cr, &fg_color); + cairo_set_line_width(cr, 1.0); + cairo_set_dash(cr, dashes, G_N_ELEMENTS(dashes), 0); + for (i = 0; i <= count; i++) { + x = RECT_RIGHT(priv->content_rect) - (gint)(i * each) + .5; + if (priv->show_xlines && (i != 0 && i != count)) { + y = priv->content_rect.y; + h = priv->content_rect.height + priv->tick_len; + } else { + y = priv->content_rect.y + priv->content_rect.height; + h = priv->tick_len; + } + if (i != 0 && i != count) { + cairo_move_to(cr, x, y); + cairo_line_to(cr, x, y + h); + cairo_stroke(cr); + } + /* + * Render the label. + */ + if (priv->show_xlabels) { + g_snprintf(text, sizeof(text), "%d", i * 10); + pango_layout_set_text(pl, text, -1); + pango_layout_get_pixel_size(pl, &wi, &hi); + if (i != 0 && i != count) { + cairo_move_to(cr, x - (wi / 2), y + h); + } else if (i == 0) { + cairo_move_to(cr, + RECT_RIGHT(priv->content_rect) - (wi / 2), + RECT_BOTTOM(priv->content_rect) + priv->tick_len); + } else if (i == count) { + cairo_move_to(cr, + priv->content_rect.x - (wi / 2), + RECT_BOTTOM(priv->content_rect) + priv->tick_len); + } + pango_cairo_show_layout(cr, pl); + } + } + g_object_unref(pl); + pango_font_description_free(fd); + cairo_restore(cr); +} + +static void G_GNUC_PRINTF(6, 7) +uber_graph_render_y_line (UberGraph *graph, /* IN */ + cairo_t *cr, /* IN */ + gint y, /* IN */ + gboolean tick_only, /* IN */ + gboolean no_label, /* IN */ + const gchar *format, /* IN */ + ...) /* IN */ +{ + UberGraphPrivate *priv; + const gdouble dashes[] = { 1.0, 2.0 }; + PangoFontDescription *fd; + PangoLayout *pl; + GtkStyleContext *style; + GdkRGBA fg_color; + va_list args; + gchar *text; + gint width; + gint height; + gfloat real_y = y + .5; + + g_return_if_fail(UBER_IS_GRAPH(graph)); + g_return_if_fail(cr != NULL); + g_return_if_fail(format != NULL); + + priv = graph->priv; + style = gtk_widget_get_style_context(GTK_WIDGET(graph)); + gtk_style_context_get_color(style, GTK_STATE_FLAG_NORMAL, &fg_color); + /* + * Draw grid line. + */ + cairo_save(cr); + cairo_set_dash(cr, dashes, G_N_ELEMENTS(dashes), 0); + cairo_set_line_width(cr, 1.0); + gdk_cairo_set_source_rgba(cr, &fg_color); + cairo_move_to(cr, priv->content_rect.x - priv->tick_len, real_y); + if (tick_only) { + cairo_line_to(cr, priv->content_rect.x, real_y); + } else { + cairo_line_to(cr, RECT_RIGHT(priv->content_rect), real_y); + } + cairo_stroke(cr); + cairo_restore(cr); + /* + * Show label. + */ + if (!no_label) { + cairo_save(cr); + gdk_cairo_set_source_rgba(cr, &fg_color); + /* + * Format text. + */ + va_start(args, format); + text = g_strdup_vprintf(format, args); + va_end(args); + /* + * Render pango layout. + */ + pl = pango_cairo_create_layout(cr); + fd = pango_font_description_new(); + pango_font_description_set_family_static(fd, "Monospace"); + pango_font_description_set_size(fd, 6 * PANGO_SCALE); + pango_layout_set_font_description(pl, fd); + pango_layout_set_text(pl, text, -1); + pango_layout_get_pixel_size(pl, &width, &height); + cairo_move_to(cr, priv->content_rect.x - priv->tick_len - width - 3, + real_y - height / 2); + pango_cairo_show_layout(cr, pl); + /* + * Cleanup resources. + */ + g_free(text); + pango_font_description_free(fd); + g_object_unref(pl); + cairo_restore(cr); + } +} + +static void +uber_graph_render_y_axis_percent (UberGraph *graph, /* IN */ + cairo_t *cr, /* IN */ + UberRange *range, /* IN */ + UberRange *pixel_range, /* IN */ + gint n_lines) /* IN */ +{ + static const gchar format[] = "%0.0f %%"; + UberGraphPrivate *priv; + gdouble value; + gdouble y; + gint i; + + g_return_if_fail(UBER_IS_GRAPH(graph)); + g_return_if_fail(range != NULL); + g_return_if_fail(pixel_range != NULL); + g_return_if_fail(n_lines >= 0); + g_return_if_fail(n_lines < 6); + + priv = graph->priv; + /* + * Render top and bottom lines. + */ + uber_graph_render_y_line(graph, cr, + priv->content_rect.y - 1, + TRUE, FALSE, format, 100.); + uber_graph_render_y_line(graph, cr, + RECT_BOTTOM(priv->content_rect), + TRUE, FALSE, format, 0.); + /* + * Render lines between the edges. + */ + for (i = 1; i < n_lines; i++) { + value = (n_lines - i) / (gfloat)n_lines; + y = pixel_range->end - (pixel_range->range * value); + value *= 100.; + uber_graph_render_y_line(graph, cr, y, + !priv->show_ylines, FALSE, + format, value); + } +} + +/** + * uber_graph_render_y_axis_direct: + * @graph: A #UberGraph. + * + * XXX + * + * Returns: None. + * Side effects: None. + */ +static void +uber_graph_render_y_axis_direct (UberGraph *graph, /* IN */ + cairo_t *cr, /* IN */ + UberRange *range, /* IN */ + UberRange *pixel_range, /* IN */ + gint n_lines, /* IN */ + gboolean kibi) /* IN */ +{ + static const gchar format[] = "%0.1f%s"; + const gchar *modifier = ""; + UberGraphPrivate *priv; + gdouble value; + gdouble y; + gint i; + + g_return_if_fail(UBER_IS_GRAPH(graph)); + +#define CONDENSE(v) \ +G_STMT_START { \ + if (kibi) { \ + if ((v) >= 1073741824.) { \ + (v) /= 1073741824.; \ + modifier = " Gi"; \ + } else if ((v) >= 1048576.) { \ + (v) /= 1048576.; \ + modifier = " Mi"; \ + } else if ((v) >= 1024.) { \ + (v) /= 1024.; \ + modifier = " Ki"; \ + } else { \ + modifier = ""; \ + } \ + } else { \ + if ((v) >= 1000000000.) { \ + (v) /= 1000000000.; \ + modifier = " G"; \ + } else if ((v) >= 1000000.) { \ + (v) /= 1000000.; \ + modifier = " M"; \ + } else if ((v) >= 1000.) { \ + (v) /= 1000.; \ + modifier = " K"; \ + } else { \ + modifier = ""; \ + } \ + } \ +} G_STMT_END + + priv = graph->priv; + /* + * Render top and bottom lines. + */ + value = range->end; + CONDENSE(value); + uber_graph_render_y_line(graph, cr, + priv->content_rect.y - 1, + TRUE, FALSE, format, value, modifier); + value = range->begin; + CONDENSE(value); + uber_graph_render_y_line(graph, cr, + RECT_BOTTOM(priv->content_rect), + TRUE, FALSE, format, value, modifier); + /* + * Render lines between the edges. + */ + for (i = 1; i < n_lines; i++) { + y = value = range->range / (gfloat)(n_lines) * (gfloat)i; + /* + * TODO: Use proper scale. + */ + uber_scale_linear(range, pixel_range, &y, NULL); + if (y == 0 || y == pixel_range->begin || y == pixel_range->end) { + continue; + } + y = pixel_range->end - y; + CONDENSE(value); + uber_graph_render_y_line(graph, cr, y, + !priv->show_ylines, + (range->begin == range->end), + format, value, modifier); + } +} + +/** + * uber_graph_render_y_axis: + * @graph: A #UberGraph. + * + * Render the Y axis grid lines and labels. + * + * Returns: None. + * Side effects: None. + */ +static void +uber_graph_render_y_axis (UberGraph *graph, /* IN */ + cairo_t *cr) /* IN */ +{ + UberGraphPrivate *priv; + UberRange pixel_range; + UberRange range; + gint n_lines; + + g_return_if_fail(UBER_IS_GRAPH(graph)); + + priv = graph->priv; + /* + * Calculate ranges. + */ + uber_graph_get_yrange(graph, &range); + pixel_range.begin = priv->content_rect.y; + pixel_range.end = priv->content_rect.y + priv->content_rect.height; + pixel_range.range = pixel_range.end - pixel_range.begin; + /* + * Render grid lines for given format. + */ + n_lines = MIN(priv->content_rect.height / 25, 5); + switch (priv->format) { + case UBER_GRAPH_FORMAT_PERCENT: + uber_graph_render_y_axis_percent(graph, cr, &range, &pixel_range, + n_lines); + break; + case UBER_GRAPH_FORMAT_DIRECT: + uber_graph_render_y_axis_direct(graph, cr, &range, &pixel_range, + n_lines, FALSE); + break; + case UBER_GRAPH_FORMAT_DIRECT1024: + uber_graph_render_y_axis_direct(graph, cr, &range, &pixel_range, + n_lines, TRUE); + break; + default: + g_assert_not_reached(); + } +} + +/** + * uber_graph_render_bg: + * @graph: A #UberGraph. + * + * XXX + * + * Returns: None. + * Side effects: None. + */ +static void +uber_graph_render_bg (UberGraph *graph) /* IN */ +{ + const gdouble dashes[] = { 1.0, 2.0 }; + UberGraphPrivate *priv; + GtkAllocation alloc; + GtkStyleContext *style; + GdkRGBA fg_color; + GdkRGBA light_color; + cairo_t *cr; + + g_return_if_fail(UBER_IS_GRAPH(graph)); + + /* + * Acquire resources. + */ + priv = graph->priv; + gtk_widget_get_allocation(GTK_WIDGET(graph), &alloc); + style = gtk_widget_get_style_context(GTK_WIDGET(graph)); + gtk_style_context_get_color(style, GTK_STATE_FLAG_NORMAL, &fg_color); + gtk_style_context_get_color(style, GTK_STATE_FLAG_SELECTED, &light_color); + cr = cairo_create(priv->bg_surface); + /* + * Ensure valid resources. + */ + g_assert(style); + g_assert(priv->bg_surface); + /* + * Clear entire background. Hopefully this looks okay for RGBA themes + * that are translucent. + */ + cairo_save(cr); + cairo_set_operator(cr, CAIRO_OPERATOR_CLEAR); + cairo_rectangle(cr, 0, 0, alloc.width, alloc.height); + cairo_fill(cr); + cairo_restore(cr); + /* + * Paint the content area background. + */ + cairo_save(cr); + gdk_cairo_set_source_rgba(cr, &light_color); + gdk_cairo_rectangle(cr, &priv->content_rect); + cairo_fill(cr); + cairo_restore(cr); + /* + * Stroke the border around the content area. + */ + cairo_save(cr); + gdk_cairo_set_source_rgba(cr, &fg_color); + cairo_set_line_width(cr, 1.0); + cairo_set_dash(cr, dashes, G_N_ELEMENTS(dashes), 0); + cairo_set_antialias(cr, CAIRO_ANTIALIAS_NONE); + cairo_rectangle(cr, + priv->content_rect.x - .5, + priv->content_rect.y - .5, + priv->content_rect.width + 1.0, + priv->content_rect.height + 1.0); + cairo_stroke(cr); + cairo_restore(cr); + /* + * Render the axis ticks. + */ + uber_graph_render_y_axis(graph, cr); + uber_graph_render_x_axis(graph, cr); + /* + * Background is no longer dirty. + */ + priv->bg_dirty = FALSE; + /* + * Cleanup. + */ + cairo_destroy(cr); +} + +static inline void +g_time_val_subtract (GTimeVal *a, /* IN */ + GTimeVal *b, /* IN */ + GTimeVal *c) /* OUT */ +{ + g_return_if_fail(a != NULL); + g_return_if_fail(b != NULL); + g_return_if_fail(c != NULL); + + c->tv_sec = a->tv_sec - b->tv_sec; + c->tv_usec = a->tv_usec - b->tv_usec; + if (c->tv_usec < 0) { + c->tv_usec += G_USEC_PER_SEC; + c->tv_sec -= 1; + } +} + +/** + * uber_graph_get_fps_offset: + * @graph: A #UberGraph. + * + * Calculates the number of pixels that the foreground should be rendered + * from the origin. + * + * Returns: The pixel offset to render the foreground. + * Side effects: None. + */ +static gfloat +uber_graph_get_fps_offset (UberGraph *graph) /* IN */ +{ + UberGraphPrivate *priv; + GTimeVal rel = { 0 }; + GTimeVal tv; + gfloat f; + + g_return_val_if_fail(UBER_IS_GRAPH(graph), 0.); + + priv = graph->priv; + g_get_current_time(&tv); + g_time_val_subtract(&tv, &priv->dps_tv, &rel); + f = ((rel.tv_sec * 1000) + (rel.tv_usec / 1000)) + / (1000. / priv->dps) /* MSec Per Data Point */ + * priv->dps_each; /* Pixels Per Data Point */ + return MIN(f, (priv->dps_each - priv->fps_each)); +} + +/** + * uber_graph_draw: + * @widget: A #GtkWidget. + * + * XXX + * + * Returns: %FALSE always. + * Side effects: None. + */ +static gboolean +uber_graph_draw (GtkWidget *widget, /* IN */ + cairo_t *cr) /* IN */ +{ + UberGraphPrivate *priv; + GtkAllocation alloc; +// cairo_t *cr; + gfloat offset; + gint x; + + g_return_val_if_fail(UBER_IS_GRAPH(widget), FALSE); + + priv = UBER_GRAPH(widget)->priv; + gtk_widget_get_allocation(widget, &alloc); + priv->fps_count++; + /* + * Ensure that the texture is initialized. + */ + g_assert(priv->fg_surface); + g_assert(priv->bg_surface); + /* + * Clear window background. + */ +#if 0 + gdk_window_clear_area(expose->window, + expose->area.x, + expose->area.y, + expose->area.width, + expose->area.height); + /* + * Allocate resources. + */ + cr = gdk_cairo_create(expose->window); + /* + * Clip to exposure area. + */ + gdk_cairo_rectangle(cr, &expose->area); + cairo_clip(cr); +#endif + /* + * Render background or foreground if needed. + */ + if (priv->bg_dirty) { + uber_graph_render_bg(UBER_GRAPH(widget)); + } + if (priv->fg_dirty) { + uber_graph_render_fg(UBER_GRAPH(widget)); + } + /* + * Paint the background to the exposure area. + */ + cairo_save(cr); + cairo_set_source_surface(cr, priv->bg_surface, 0, 0); + cairo_rectangle(cr, 0, 0, alloc.width, alloc.height); + cairo_fill(cr); + cairo_restore(cr); + /* + * Draw the foreground. + */ + offset = uber_graph_get_fps_offset(UBER_GRAPH(widget)); + if (priv->have_rgba) { + cairo_save(cr); + /* + * Clip exposure to the content area. + */ + cairo_reset_clip(cr); + gdk_cairo_rectangle(cr, &priv->content_rect); + cairo_clip(cr); + /* + * Data in the fg surface is a ring bufer. Render the first portion + * at its given offset. + */ + x = ((priv->x_slots - priv->dps_slot) * priv->dps_each) - offset; + cairo_set_source_surface(cr, priv->fg_surface, (gint)x, 0); + gdk_cairo_rectangle(cr, &priv->content_rect); + cairo_fill(cr); + /* + * Render the second part of the ring surface buffer. + */ + x = (priv->dps_each * -priv->dps_slot) - offset; + cairo_set_source_surface(cr, priv->fg_surface, (gint)x, 0); + gdk_cairo_rectangle(cr, &priv->content_rect); + cairo_fill(cr); + /* + * Cleanup. + */ + cairo_restore(cr); + } else { + /* + * TODO: Use XOR command for fallback. + */ + g_warn_if_reached(); + } + /* + * Cleanup resources. + */ + //cairo_destroy(cr); + return FALSE; +} + +/** + * uber_graph_style_set: + * @widget: A #GtkWidget. + * + * XXX + * + * Returns: None. + * Side effects: None. + */ +static void +uber_graph_style_set (GtkWidget *widget, /* IN */ + GtkStyle *old_style) /* IN */ +{ + UberGraphPrivate *priv; + + g_return_if_fail(UBER_IS_GRAPH(widget)); + + priv = UBER_GRAPH(widget)->priv; + WIDGET_CLASS->style_set(widget, old_style); + priv->fg_dirty = TRUE; + priv->bg_dirty = TRUE; + gtk_widget_queue_draw(widget); +} + +/** + * uber_graph_size_allocate: + * @widget: A #GtkWidget. + * + * XXX + * + * Returns: None. + * Side effects: None. + */ +static void +uber_graph_size_allocate (GtkWidget *widget, /* IN */ + GtkAllocation *alloc) /* IN */ +{ + UberGraph *graph; + UberGraphPrivate *priv; + + g_return_if_fail(UBER_IS_GRAPH(widget)); + + graph = UBER_GRAPH(widget); + priv = graph->priv; + WIDGET_CLASS->size_allocate(widget, alloc); + /* + * If there is no window yet, we can defer setup. + */ + if (!gtk_widget_get_window(widget)) { + return; + } + /* + * Recalculate rectangles. + */ + uber_graph_calculate_rects(graph); + /* + * Recreate server side surface. + */ + UNSET_SURFACE(priv->bg_surface); + UNSET_SURFACE(priv->fg_surface); + uber_graph_init_bg(graph); + uber_graph_init_texture(graph); + /* + * Mark foreground and background as dirty. + */ + priv->fg_dirty = TRUE; + priv->bg_dirty = TRUE; + priv->full_draw = TRUE; + gtk_widget_queue_draw(widget); +} + +static void +uber_graph_size_request (GtkWidget *widget, /* IN */ + GtkRequisition *req) /* OUT */ +{ + g_return_if_fail(req != NULL); + + req->width = 150; + req->height = 50; +} + +static void +uber_graph_get_preferred_width (GtkWidget *widget, /* IN */ + gint *minimal_width, + gint *natural_width) +{ + GtkRequisition requisition; + uber_graph_size_request(widget, &requisition); + *minimal_width = * natural_width = requisition.width; +} + +static void +uber_graph_get_preferred_height (GtkWidget *widget, /* IN */ + gint *minimal_height, + gint *natural_height) +{ + GtkRequisition requisition; + uber_graph_size_request(widget, &requisition); + *minimal_height = * natural_height = requisition.height; +} + +/** + * uber_graph_add_label: + * @graph: A #UberGraph. + * + * XXX + * + * Returns: None. + * Side effects: None. + */ +void +uber_graph_add_label (UberGraph *graph, /* IN */ + UberLabel *label) /* IN */ +{ + UberGraphPrivate *priv; + + g_return_if_fail(UBER_IS_GRAPH(graph)); + g_return_if_fail(UBER_IS_LABEL(label)); + + priv = graph->priv; + gtk_box_pack_start(GTK_BOX(priv->labels), GTK_WIDGET(label), + TRUE, TRUE, 0); + gtk_widget_show(GTK_WIDGET(label)); +} + +/** + * uber_graph_take_screenshot: + * @graph: A #UberGraph. + * + * XXX + * + * Returns: None. + * Side effects: None. + */ +static void +uber_graph_take_screenshot (UberGraph *graph) /* IN */ +{ + GtkWidget *widget; + GtkWidget *dialog; + GtkAllocation alloc; + const gchar *filename; + cairo_status_t status; + cairo_surface_t *surface; + cairo_t *cr; + + g_return_if_fail(UBER_IS_GRAPH(graph)); + + widget = GTK_WIDGET(graph); + gtk_widget_get_allocation(widget, &alloc); + + /* + * Create save dialog and ask user for filename. + */ + dialog = gtk_file_chooser_dialog_new(_("Save As"), + GTK_WINDOW(gtk_widget_get_toplevel(widget)), + GTK_FILE_CHOOSER_ACTION_SAVE, + _("_Cancel"), GTK_RESPONSE_CANCEL, + _("_Save"), GTK_RESPONSE_ACCEPT, + NULL); + if (GTK_RESPONSE_ACCEPT == gtk_dialog_run(GTK_DIALOG(dialog))) { + /* + * Create surface and cairo context. + */ + surface = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, + alloc.width, alloc.height); + cr = cairo_create(surface); + cairo_rectangle(cr, 0, 0, alloc.width, alloc.height); + cairo_clip(cr); + + /* Paint to the image surface instead of the screen */ + uber_graph_draw(widget, cr); + + /* + * Save surface to png. + */ + filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog)); + status = cairo_surface_write_to_png(surface, filename); + if (status != CAIRO_STATUS_SUCCESS) { + g_critical("Failed to save pixmap to file."); + goto cleanup; + } + /* + * Cleanup resources. + */ + cleanup: + cairo_destroy(cr); + cairo_surface_destroy(surface); + } + gtk_widget_destroy(dialog); +} + +/** + * uber_graph_toggle_paused: + * @graph: A #UberGraph. + * + * XXX + * + * Returns: None. + * Side effects: None. + */ +static void +uber_graph_toggle_paused (UberGraph *graph) /* IN */ +{ + UberGraphPrivate *priv; + + g_return_if_fail(UBER_IS_GRAPH(graph)); + + priv = graph->priv; + priv->paused = !priv->paused; + if (priv->fps_handler) { + g_source_remove(priv->fps_handler); + priv->fps_handler = 0; + } else { + if (!priv->paused) { + uber_graph_redraw(graph); + } + uber_graph_register_fps_handler(graph); + } +} + +/** + * uber_graph_button_press: + * @widget: A #GtkWidget. + * + * XXX + * + * Returns: None. + * Side effects: None. + */ +static gboolean +uber_graph_button_press_event (GtkWidget *widget, /* IN */ + GdkEventButton *button) /* IN */ +{ + g_return_val_if_fail(UBER_IS_GRAPH(widget), FALSE); + + switch (button->button) { + case 2: /* Middle Click */ + if (button->state & GDK_CONTROL_MASK) { + uber_graph_take_screenshot(UBER_GRAPH(widget)); + } else { + uber_graph_toggle_paused(UBER_GRAPH(widget)); + } + break; + default: + break; + } + return FALSE; +} + +/** + * uber_graph_finalize: + * @object: A #UberGraph. + * + * Finalizer for a #UberGraph instance. Frees any resources held by + * the instance. + * + * Returns: None. + * Side effects: None. + */ +static void +uber_graph_finalize (GObject *object) /* IN */ +{ + G_OBJECT_CLASS(uber_graph_parent_class)->finalize(object); +} + +/** + * uber_graph_dispose: + * @object: A #GObject. + * + * Dispose callback for @object. This method releases references held + * by the #GObject instance. + * + * Returns: None. + * Side effects: Plenty. + */ +static void +uber_graph_dispose (GObject *object) /* IN */ +{ + UberGraph *graph; + UberGraphPrivate *priv; + + graph = UBER_GRAPH(object); + priv = graph->priv; + /* + * Stop any timeout handlers. + */ + if (priv->fps_handler) { + g_source_remove(priv->fps_handler); + } + if (priv->dps_handler) { + g_source_remove(priv->dps_handler); + } + /* + * Destroy textures. + */ + UNSET_SURFACE(priv->bg_surface); + UNSET_SURFACE(priv->fg_surface); + /* + * Call base class. + */ + G_OBJECT_CLASS(uber_graph_parent_class)->dispose(object); +} + +/** + * uber_graph_set_property: + * @object: (in): A #GObject. + * @prop_id: (in): The property identifier. + * @value: (out): The given property. + * @pspec: (in): A #ParamSpec. + * + * Get a given #GObject property. + */ +static void +uber_graph_get_property (GObject *object, /* IN */ + guint prop_id, /* IN */ + GValue *value, /* OUT */ + GParamSpec *pspec) /* IN */ +{ + UberGraph *graph = UBER_GRAPH(object); + + switch (prop_id) { + case PROP_FORMAT: + g_value_set_uint(value, graph->priv->format); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); + } +} + +/** + * uber_graph_set_property: + * @object: (in): A #GObject. + * @prop_id: (in): The property identifier. + * @value: (in): The given property. + * @pspec: (in): A #ParamSpec. + * + * Set a given #GObject property. + */ +static void +uber_graph_set_property (GObject *object, + guint prop_id, + const GValue *value, + GParamSpec *pspec) +{ + UberGraph *graph = UBER_GRAPH(object); + + switch (prop_id) { + case PROP_FORMAT: + uber_graph_set_format(graph, g_value_get_uint(value)); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); + } +} + +/** + * uber_graph_class_init: + * @klass: A #UberGraphClass. + * + * Initializes the #UberGraphClass and prepares the vtable. + * + * Returns: None. + * Side effects: None. + */ +static void +uber_graph_class_init (UberGraphClass *klass) /* IN */ +{ + GObjectClass *object_class; + GtkWidgetClass *widget_class; + + object_class = G_OBJECT_CLASS(klass); + object_class->dispose = uber_graph_dispose; + object_class->finalize = uber_graph_finalize; + object_class->get_property = uber_graph_get_property; + object_class->set_property = uber_graph_set_property; + + widget_class = GTK_WIDGET_CLASS(klass); + widget_class->draw = uber_graph_draw; + widget_class->hide = uber_graph_hide; + widget_class->realize = uber_graph_realize; + widget_class->screen_changed = uber_graph_screen_changed; + widget_class->show = uber_graph_show; + widget_class->size_allocate = uber_graph_size_allocate; + widget_class->style_set = uber_graph_style_set; + widget_class->unrealize = uber_graph_unrealize; + widget_class->get_preferred_width = uber_graph_get_preferred_width; + widget_class->get_preferred_height = uber_graph_get_preferred_height; + widget_class->button_press_event = uber_graph_button_press_event; + + show_fps = !!g_getenv("UBER_SHOW_FPS"); + + /* + * FIXME: Use enum. + */ + g_object_class_install_property(object_class, + PROP_FORMAT, + g_param_spec_uint("format", + "format", + "format", + 0, + UBER_GRAPH_FORMAT_PERCENT, + 0, + G_PARAM_READWRITE)); +} + +/** + * uber_graph_init: + * @graph: A #UberGraph. + * + * Initializes the newly created #UberGraph instance. + * + * Returns: None. + * Side effects: None. + */ +static void +uber_graph_init (UberGraph *graph) /* IN */ +{ + UberGraphPrivate *priv; + + /* + * Store pointer to private data allocation. + */ + graph->priv = uber_graph_get_instance_private(graph); + + priv = graph->priv; + /* + * Enable required events. + */ + gtk_widget_set_events(GTK_WIDGET(graph), GDK_BUTTON_PRESS_MASK); + /* + * Prepare default values. + */ + priv->tick_len = 10; + priv->fps = 20; + priv->fps_real = 1000. / priv->fps; + priv->dps = 1.; + priv->x_slots = 60; + priv->fg_dirty = TRUE; + priv->bg_dirty = TRUE; + priv->full_draw = TRUE; + priv->show_xlines = TRUE; + priv->show_ylines = TRUE; + /* + * TODO: Support labels in a grid. + */ + priv->labels = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 3); + gtk_box_set_homogeneous (GTK_BOX(priv->labels), TRUE); + priv->align = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); + gtk_container_add(GTK_CONTAINER(priv->align), priv->labels); + gtk_widget_show(priv->labels); +} diff --git a/deps/uber-graph/uber-graph.h b/deps/uber-graph/uber-graph.h new file mode 100644 index 00000000..2c452d25 --- /dev/null +++ b/deps/uber-graph/uber-graph.h @@ -0,0 +1,104 @@ +/* uber-graph.h + * + * Copyright (C) 2010 Christian Hergert + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#ifndef __UBER_GRAPH_H__ +#define __UBER_GRAPH_H__ + +#include + +#include "uber-range.h" +#include "uber-label.h" + +G_BEGIN_DECLS + +#define UBER_TYPE_GRAPH (uber_graph_get_type()) +#define UBER_GRAPH(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), UBER_TYPE_GRAPH, UberGraph)) +#define UBER_GRAPH_CONST(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), UBER_TYPE_GRAPH, UberGraph const)) +#define UBER_GRAPH_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), UBER_TYPE_GRAPH, UberGraphClass)) +#define UBER_IS_GRAPH(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), UBER_TYPE_GRAPH)) +#define UBER_IS_GRAPH_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), UBER_TYPE_GRAPH)) +#define UBER_GRAPH_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), UBER_TYPE_GRAPH, UberGraphClass)) + +typedef enum +{ + UBER_GRAPH_FORMAT_DIRECT, + UBER_GRAPH_FORMAT_DIRECT1024, + UBER_GRAPH_FORMAT_PERCENT, +} UberGraphFormat; + +typedef struct _UberGraph UberGraph; +typedef struct _UberGraphClass UberGraphClass; +typedef struct _UberGraphPrivate UberGraphPrivate; + +struct _UberGraph +{ + GtkDrawingArea parent; + + /*< private >*/ + UberGraphPrivate *priv; +}; + +struct _UberGraphClass +{ + GtkDrawingAreaClass parent_class; + + gboolean (*downscale) (UberGraph *graph); + gboolean (*get_next_data) (UberGraph *graph); + void (*get_yrange) (UberGraph *graph, + UberRange *range); + void (*render) (UberGraph *graph, + cairo_t *cairo, + GdkRectangle *content_area, + guint epoch, + gfloat each); + void (*render_fast) (UberGraph *graph, + cairo_t *cairo, + GdkRectangle *content_area, + guint epoch, + gfloat each); + void (*set_stride) (UberGraph *graph, + guint stride); +}; + +GType uber_graph_get_type (void) G_GNUC_CONST; +void uber_graph_set_dps (UberGraph *graph, + gfloat dps); +void uber_graph_set_fps (UberGraph *graph, + guint fps); +void uber_graph_redraw (UberGraph *graph); +void uber_graph_set_format (UberGraph *graph, + UberGraphFormat format); +GtkWidget* uber_graph_get_labels (UberGraph *graph); +void uber_graph_get_content_area (UberGraph *graph, + GdkRectangle *rect); +void uber_graph_add_label (UberGraph *graph, + UberLabel *label); +gboolean uber_graph_get_show_xlines (UberGraph *graph); +void uber_graph_set_show_xlines (UberGraph *graph, + gboolean show_xlines); +gboolean uber_graph_get_show_xlabels (UberGraph *graph); +void uber_graph_set_show_xlabels (UberGraph *graph, + gboolean show_xlabels); +gboolean uber_graph_get_show_ylines (UberGraph *graph); +void uber_graph_set_show_ylines (UberGraph *graph, + gboolean show_ylines); +void uber_graph_scale_changed (UberGraph *graph); + +G_END_DECLS + +#endif /* __UBER_GRAPH_H__ */ diff --git a/deps/uber-graph/uber-heat-map.c b/deps/uber-graph/uber-heat-map.c new file mode 100644 index 00000000..6c2caa3b --- /dev/null +++ b/deps/uber-graph/uber-heat-map.c @@ -0,0 +1,347 @@ +/* uber-heat-map.c + * + * Copyright (C) 2010 Christian Hergert + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include + +#include "uber-heat-map.h" +#include "g-ring.h" + +/** + * SECTION:uber-heat-map.h + * @title: UberHeatMap + * @short_description: + * + * Section overview. + */ + +struct _UberHeatMapPrivate +{ + GRing *raw_data; + gboolean fg_color_set; + GdkRGBA fg_color; + UberHeatMapFunc func; + GDestroyNotify func_destroy; + gpointer func_user_data; +}; + +G_DEFINE_TYPE_WITH_PRIVATE(UberHeatMap, uber_heat_map, UBER_TYPE_GRAPH) + + +/** + * uber_heat_map_new: + * + * Creates a new instance of #UberHeatMap. + * + * Returns: the newly created instance of #UberHeatMap. + * Side effects: None. + */ +GtkWidget* +uber_heat_map_new (void) +{ + UberHeatMap *map; + + map = g_object_new(UBER_TYPE_HEAT_MAP, NULL); + return GTK_WIDGET(map); +} + +/** + * uber_heat_map_destroy_array: + * @array: A #GArray. + * + * XXX + * + * Returns: None. + * Side effects: None. + */ +static void +uber_heat_map_destroy_array (gpointer data) /* IN */ +{ + GArray **ar = data; + + if (ar) { + g_array_unref(*ar); + } +} + +/** + * uber_heat_map_set_stride: + * @graph: A #UberGraph. + * + * XXX + * + * Returns: None. + * Side effects: None. + */ +static void +uber_heat_map_set_stride (UberGraph *graph, /* IN */ + guint stride) /* IN */ +{ + UberHeatMapPrivate *priv; + + g_return_if_fail(UBER_IS_HEAT_MAP(graph)); + + priv = UBER_HEAT_MAP(graph)->priv; + if (priv->raw_data) { + g_ring_unref(priv->raw_data); + } + priv->raw_data = g_ring_sized_new(sizeof(GArray*), stride, + uber_heat_map_destroy_array); +} + +/** + * uber_heat_map_set_data_func: + * @map: A #UberHeatMap. + * + * XXX + * + * Returns: None. + * Side effects: None. + */ +void +uber_heat_map_set_data_func (UberHeatMap *map, /* IN */ + UberHeatMapFunc func, /* IN */ + gpointer user_data, /* IN */ + GDestroyNotify destroy) /* IN */ +{ + UberHeatMapPrivate *priv; + + g_return_if_fail(UBER_IS_HEAT_MAP(map)); + + priv = map->priv; + if (priv->func_destroy) { + priv->func_destroy(priv->func_user_data); + } + priv->func = func; + priv->func_destroy = destroy; + priv->func_user_data = user_data; +} + +/** + * uber_heat_map_render: + * @graph: A #UberGraph. + * + * XXX + * + * Returns: None. + * Side effects: None. + */ +static void +uber_heat_map_render (UberGraph *graph, /* IN */ + cairo_t *cr, /* IN */ + GdkRectangle *area, /* IN */ + guint epoch, /* IN */ + gfloat each) /* IN */ +{ +#if 0 + UberGraphPrivate *priv; + cairo_pattern_t *cp; + + g_return_if_fail(UBER_IS_HEAT_MAP(graph)); + + priv = graph->priv; + /* + * XXX: Temporarily draw a nice little gradient to test sliding. + */ + cp = cairo_pattern_create_linear(0, 0, area->width, 0); + cairo_pattern_add_color_stop_rgb(cp, 0, .1, .1, .1); + cairo_pattern_add_color_stop_rgb(cp, .2, .3, .3, .5); + cairo_pattern_add_color_stop_rgb(cp, .4, .2, .7, .4); + cairo_pattern_add_color_stop_rgb(cp, .7, .6, .2, .1); + cairo_pattern_add_color_stop_rgb(cp, .8, .6, .8, .1); + cairo_pattern_add_color_stop_rgb(cp, 1., .3, .8, .5); + gdk_cairo_rectangle(cr, area); + cairo_set_source(cr, cp); + cairo_fill(cr); + cairo_pattern_destroy(cp); +#endif +} + +/** + * uber_heat_map_render_fast: + * @graph: A #UberGraph. + * + * XXX + * + * Returns: None. + * Side effects: None. + */ +static void +uber_heat_map_render_fast (UberGraph *graph, /* IN */ + cairo_t *cr, /* IN */ + GdkRectangle *area, /* IN */ + guint epoch, /* IN */ + gfloat each) /* IN */ +{ + UberHeatMapPrivate *priv; + GtkStyleContext *style; + GdkRGBA color; + gfloat height; + gint i; + + g_return_if_fail(UBER_IS_HEAT_MAP(graph)); + + priv = UBER_HEAT_MAP(graph)->priv; + color = priv->fg_color; + if (!priv->fg_color_set) { + style = gtk_widget_get_style_context(GTK_WIDGET(graph)); + gtk_style_context_get_color(style, GTK_STATE_FLAG_SELECTED, &color); + } + /* + * XXX: Temporarily draw nice little squares. + */ + #define COUNT 10 + height = area->height / (gfloat)COUNT; + for (i = 0; i < COUNT; i++) { + cairo_rectangle(cr, + area->x + area->width - each, + area->y + (i * height), + each, + height); + cairo_set_source_rgba(cr, + color.red, + color.green, + color.blue, + g_random_double_range(0., 1.)); + cairo_set_antialias(cr, CAIRO_ANTIALIAS_NONE); + cairo_fill(cr); + } +} + +/** + * uber_heat_map_get_next_data: + * @graph: A #UberGraph. + * + * Retrieve the next data point for the graph. + * + * Returns: None. + * Side effects: None. + */ +static gboolean +uber_heat_map_get_next_data (UberGraph *graph) /* IN */ +{ + UberHeatMapPrivate *priv; + GArray *array = NULL; + + g_return_val_if_fail(UBER_IS_HEAT_MAP(graph), FALSE); + + priv = UBER_HEAT_MAP(graph)->priv; + if (!priv->func) { + return FALSE; + } + /* + * Retrieve the next data point. + */ + if (!priv->func(UBER_HEAT_MAP(graph), &array, priv->func_user_data)) { + return FALSE; + } + /* + * Store data points. + */ + g_ring_append_val(priv->raw_data, array); +// for (int i = 0; i < array->len; i++) { +// g_print("==> %f\n", g_array_index(array, gdouble, i)); +// } + return TRUE; +} + +/** + * uber_heat_map_set_fg_color: + * @map: A #UberHeatMap. + * + * XXX + * + * Returns: None. + * Side effects: None. + */ +void +uber_heat_map_set_fg_color (UberHeatMap *map, /* IN */ + const GdkRGBA *color) /* IN */ +{ + UberHeatMapPrivate *priv; + + g_return_if_fail(UBER_IS_HEAT_MAP(map)); + + priv = map->priv; + if (!color) { + priv->fg_color_set = FALSE; + memset(&priv->fg_color, 0, sizeof(priv->fg_color)); + } else { + priv->fg_color = *color; + priv->fg_color_set = TRUE; + } +} + +/** + * uber_heat_map_finalize: + * @object: A #UberHeatMap. + * + * Finalizer for a #UberHeatMap instance. Frees any resources held by + * the instance. + * + * Returns: None. + * Side effects: None. + */ +static void +uber_heat_map_finalize (GObject *object) /* IN */ +{ + G_OBJECT_CLASS(uber_heat_map_parent_class)->finalize(object); +} + +/** + * uber_heat_map_class_init: + * @klass: A #UberHeatMapClass. + * + * Initializes the #UberHeatMapClass and prepares the vtable. + * + * Returns: None. + * Side effects: None. + */ +static void +uber_heat_map_class_init (UberHeatMapClass *klass) /* IN */ +{ + GObjectClass *object_class; + UberGraphClass *graph_class; + + object_class = G_OBJECT_CLASS(klass); + object_class->finalize = uber_heat_map_finalize; + + graph_class = UBER_GRAPH_CLASS(klass); + graph_class->render = uber_heat_map_render; + graph_class->render_fast = uber_heat_map_render_fast; + graph_class->set_stride = uber_heat_map_set_stride; + graph_class->get_next_data = uber_heat_map_get_next_data; +} + +/** + * uber_heat_map_init: + * @map: A #UberHeatMap. + * + * Initializes the newly created #UberHeatMap instance. + * + * Returns: None. + * Side effects: None. + */ +static void +uber_heat_map_init (UberHeatMap *map) /* IN */ +{ + map->priv = uber_heat_map_get_instance_private(map); +} diff --git a/deps/uber-graph/uber-heat-map.h b/deps/uber-graph/uber-heat-map.h new file mode 100644 index 00000000..fb1bd2bd --- /dev/null +++ b/deps/uber-graph/uber-heat-map.h @@ -0,0 +1,66 @@ +/* uber-heat-map.h + * + * Copyright (C) 2010 Christian Hergert + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#ifndef __UBER_HEAT_MAP_H__ +#define __UBER_HEAT_MAP_H__ + +#include "uber-graph.h" + +G_BEGIN_DECLS + +#define UBER_TYPE_HEAT_MAP (uber_heat_map_get_type()) +#define UBER_HEAT_MAP(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), UBER_TYPE_HEAT_MAP, UberHeatMap)) +#define UBER_HEAT_MAP_CONST(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), UBER_TYPE_HEAT_MAP, UberHeatMap const)) +#define UBER_HEAT_MAP_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), UBER_TYPE_HEAT_MAP, UberHeatMapClass)) +#define UBER_IS_HEAT_MAP(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), UBER_TYPE_HEAT_MAP)) +#define UBER_IS_HEAT_MAP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), UBER_TYPE_HEAT_MAP)) +#define UBER_HEAT_MAP_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), UBER_TYPE_HEAT_MAP, UberHeatMapClass)) + +typedef struct _UberHeatMap UberHeatMap; +typedef struct _UberHeatMapClass UberHeatMapClass; +typedef struct _UberHeatMapPrivate UberHeatMapPrivate; + +typedef gboolean (*UberHeatMapFunc) (UberHeatMap *map, + GArray **values, + gpointer user_data); + +struct _UberHeatMap +{ + UberGraph parent; + + /*< private >*/ + UberHeatMapPrivate *priv; +}; + +struct _UberHeatMapClass +{ + UberGraphClass parent_class; +}; + +GType uber_heat_map_get_type (void) G_GNUC_CONST; +GtkWidget* uber_heat_map_new (void); +void uber_heat_map_set_fg_color (UberHeatMap *map, + const GdkRGBA *color); +void uber_heat_map_set_data_func (UberHeatMap *map, + UberHeatMapFunc func, + gpointer user_data, + GDestroyNotify destroy); + +G_END_DECLS + +#endif /* __UBER_HEAT_MAP_H__ */ diff --git a/deps/uber-graph/uber-label.c b/deps/uber-graph/uber-label.c new file mode 100644 index 00000000..abc865fc --- /dev/null +++ b/deps/uber-graph/uber-label.c @@ -0,0 +1,395 @@ +/* uber-label.c + * + * Copyright (C) 2010 Christian Hergert + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include + +#include "uber-label.h" + +/** + * SECTION:uber-label.h + * @title: UberLabel + * @short_description: + * + * Section overview. + */ + + +struct _UberLabelPrivate +{ + GtkWidget *hbox; + GtkWidget *block; + GtkWidget *label; + GdkRGBA color; + gboolean in_block; +}; + +G_DEFINE_TYPE_WITH_PRIVATE(UberLabel, uber_label, GTK_TYPE_WIDGET) + +enum +{ + COLOR_CHANGED, + LAST_SIGNAL +}; + +enum +{ + PROP_0, + PROP_COLOR, + PROP_TEXT, +}; + +static guint signals[LAST_SIGNAL] = { 0 }; + +/** + * uber_label_new: + * + * Creates a new instance of #UberLabel. + * + * Returns: the newly created instance of #UberLabel. + * Side effects: None. + */ +GtkWidget* +uber_label_new (void) +{ + UberLabel *label; + + label = g_object_new(UBER_TYPE_LABEL, NULL); + return GTK_WIDGET(label); +} + +/** + * uber_label_set_text: + * @label: A #UberLabel. + * @text: The label text. + * + * Sets the text for the label. + * + * Returns: None. + * Side effects: None. + */ +void +uber_label_set_text (UberLabel *label, /* IN */ + const gchar *text) /* IN */ +{ + UberLabelPrivate *priv; + + g_return_if_fail(UBER_IS_LABEL(label)); + + priv = label->priv; + gtk_label_set_text(GTK_LABEL(priv->label), text); +} + +/** + * uber_label_set_color: + * @label: A #UberLabel. + * @color: A #GdkRGBA. + * + * Sets the color of the label. + * + * Returns: None. + * Side effects: None. + */ +void +uber_label_set_color (UberLabel *label, /* IN */ + const GdkRGBA *color) /* IN */ +{ + UberLabelPrivate *priv; + + g_return_if_fail(UBER_IS_LABEL(label)); + + priv = label->priv; + priv->color = *color; +} + +static void +uber_label_block_draw (GtkWidget *block, /* IN */ + cairo_t *cr, /* IN */ + UberLabel *label) /* IN */ +{ + UberLabelPrivate *priv; + GtkAllocation alloc; + + g_return_if_fail(UBER_IS_LABEL(label)); + + priv = label->priv; + gtk_widget_get_allocation(block, &alloc); + /* + * Draw background. + */ + gdk_cairo_set_source_rgba(cr, &priv->color); + cairo_rectangle(cr, .5, .5, alloc.width - 1., alloc.height - 1.); + cairo_fill_preserve(cr); + /* + * Add highlight if mouse is in the block. + */ + if (priv->in_block) { + cairo_set_source_rgba(cr, 1., 1., 1., .3); + cairo_fill_preserve(cr); + } + /* + * Stroke the edge of the block. + */ + cairo_set_line_width(cr, 1.0); + cairo_set_source_rgba(cr, 0., 0., 0., .5); + cairo_stroke(cr); + /* + * Stroke the highlight of the block. + */ + cairo_rectangle(cr, 1.5, 1.5, alloc.width - 3., alloc.height - 3.); + cairo_set_source_rgba(cr, 1., 1., 1., .5); + cairo_stroke(cr); +} + +/** + * uber_label_block_enter_notify_event: + * @label: A #UberLabel. + * + * Tracks the mouse entering the block widget. + * + * Returns: %FALSE to allow further callbacks. + * Side effects: None. + */ +static gboolean +uber_label_block_enter_notify_event (GtkWidget *widget, /* IN */ + GdkEventCrossing *event, /* IN */ + UberLabel *label) /* IN */ +{ + UberLabelPrivate *priv; + + priv = label->priv; + priv->in_block = TRUE; + gtk_widget_queue_draw(widget); + return FALSE; +} + +/** + * uber_label_block_leave_notify_event: + * @label: A #UberLabel. + * + * Tracks the mouse leaving the block widget. + * + * Returns: %FALSE to allow further callbacks. + * Side effects: None. + */ +static gboolean +uber_label_block_leave_notify_event (GtkWidget *widget, /* IN */ + GdkEventCrossing *event, /* IN */ + UberLabel *label) /* IN */ +{ + UberLabelPrivate *priv; + + priv = label->priv; + priv->in_block = FALSE; + gtk_widget_queue_draw(widget); + return FALSE; +} + +/** + * uber_label_block_button_press_event: + * @widget: A #GtkWidget. + * @event: A #GdkEventButton. + * @label: An #UberLabel. + * + * Callback to handle a button press event within the colored block. + * + * Returns: %FALSE always to allow further signal emission. + * Side effects: None. + */ +static gboolean +uber_label_block_button_press_event (GtkWidget *widget, /* IN */ + GdkEventButton *event, /* IN */ + UberLabel *label) /* IN */ +{ + UberLabelPrivate *priv; + GtkWidget *dialog; + + g_return_val_if_fail(UBER_IS_LABEL(label), FALSE); + + priv = label->priv; + dialog = gtk_color_chooser_dialog_new("", GTK_WINDOW(gtk_widget_get_toplevel(widget))); + gtk_color_chooser_set_use_alpha(GTK_COLOR_CHOOSER(dialog), TRUE); + gtk_color_chooser_set_rgba( + GTK_COLOR_CHOOSER(dialog), + &priv->color); + if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_OK) { + gtk_color_chooser_get_rgba( + GTK_COLOR_CHOOSER(dialog), + &priv->color); + gtk_widget_queue_draw(widget); + g_signal_emit(label, signals[COLOR_CHANGED], + 0, &priv->color); + } + gtk_widget_destroy(dialog); + return FALSE; +} + +/** + * uber_label_set_property: + * @object: (in): A #GObject. + * @prop_id: (in): The property identifier. + * @value: (in): The given property. + * @pspec: (in): A #ParamSpec. + * + * Set a given #GObject property. + */ +static void +uber_label_set_property (GObject *object, + guint prop_id, + const GValue *value, + GParamSpec *pspec) +{ + UberLabel *label = UBER_LABEL(object); + + switch (prop_id) { + case PROP_COLOR: + uber_label_set_color(label, g_value_get_boxed(value)); + break; + case PROP_TEXT: + uber_label_set_text(label, g_value_get_string(value)); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); + } +} + +/** + * uber_label_finalize: + * @object: A #UberLabel. + * + * Finalizer for a #UberLabel instance. Frees any resources held by + * the instance. + * + * Returns: None. + * Side effects: None. + */ +static void +uber_label_finalize (GObject *object) /* IN */ +{ + G_OBJECT_CLASS(uber_label_parent_class)->finalize(object); +} + +/** + * uber_label_class_init: + * @klass: A #UberLabelClass. + * + * Initializes the #UberLabelClass and prepares the vtable. + * + * Returns: None. + * Side effects: None. + */ +static void +uber_label_class_init (UberLabelClass *klass) /* IN */ +{ + GObjectClass *object_class; + + object_class = G_OBJECT_CLASS(klass); + object_class->finalize = uber_label_finalize; + object_class->set_property = uber_label_set_property; + + g_object_class_install_property(object_class, + PROP_COLOR, + g_param_spec_boxed("color", + "color", + "color", + GDK_TYPE_RGBA, + G_PARAM_WRITABLE)); + + g_object_class_install_property(object_class, + PROP_TEXT, + g_param_spec_string("text", + "text", + "text", + NULL, + G_PARAM_WRITABLE)); + + /** + * UberLabel::color-changed: + * @label: An #UberLabel. + * @color: A #GdkRGBA. + * + * Signal emitted when the color is changed. + */ + signals[COLOR_CHANGED] = g_signal_new("color-changed", + UBER_TYPE_LABEL, + G_SIGNAL_RUN_FIRST, + 0, + NULL, + NULL, + g_cclosure_marshal_VOID__POINTER, + G_TYPE_NONE, + 1, + G_TYPE_POINTER); +} + +/** + * uber_label_init: + * @label: A #UberLabel. + * + * Initializes the newly created #UberLabel instance. + * + * Returns: None. + * Side effects: None. + */ +static void +uber_label_init (UberLabel *label) /* IN */ +{ + UberLabelPrivate *priv; + + label->priv = uber_label_get_instance_private(label); + + priv = label->priv; + priv->hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 6); + priv->block = gtk_drawing_area_new(); + priv->label = gtk_label_new(NULL); + gdk_rgba_parse(&priv->color, "#cc0000"); + gtk_widget_set_halign(GTK_WIDGET(priv->label), GTK_ALIGN_START); + gtk_widget_set_valign(GTK_WIDGET(priv->label), GTK_ALIGN_CENTER); + gtk_widget_set_size_request(priv->block, 32, 17); + gtk_container_add(GTK_CONTAINER(label), priv->hbox); + gtk_box_pack_start(GTK_BOX(priv->hbox), priv->block, FALSE, TRUE, 0); + gtk_box_pack_start(GTK_BOX(priv->hbox), priv->label, TRUE, TRUE, 0); + gtk_widget_add_events(priv->block, + GDK_ENTER_NOTIFY_MASK | + GDK_LEAVE_NOTIFY_MASK | + GDK_BUTTON_PRESS_MASK); + g_signal_connect(priv->block, + "draw", + G_CALLBACK(uber_label_block_draw), + label); + g_signal_connect(priv->block, + "enter-notify-event", + G_CALLBACK(uber_label_block_enter_notify_event), + label); + g_signal_connect(priv->block, + "leave-notify-event", + G_CALLBACK(uber_label_block_leave_notify_event), + label); + g_signal_connect(priv->block, + "button-press-event", + G_CALLBACK(uber_label_block_button_press_event), + label); + gtk_widget_set_tooltip_text(GTK_WIDGET(priv->block), + _("Click to select color")); + gtk_widget_show(priv->hbox); + gtk_widget_show(priv->block); + gtk_widget_show(priv->label); +} diff --git a/deps/uber-graph/uber-label.h b/deps/uber-graph/uber-label.h new file mode 100644 index 00000000..8c4c74f5 --- /dev/null +++ b/deps/uber-graph/uber-label.h @@ -0,0 +1,60 @@ +/* uber-label.h + * + * Copyright (C) 2010 Christian Hergert + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#ifndef __UBER_LABEL_H__ +#define __UBER_LABEL_H__ + +#include + +G_BEGIN_DECLS + +#define UBER_TYPE_LABEL (uber_label_get_type()) +#define UBER_LABEL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), UBER_TYPE_LABEL, UberLabel)) +#define UBER_LABEL_CONST(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), UBER_TYPE_LABEL, UberLabel const)) +#define UBER_LABEL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), UBER_TYPE_LABEL, UberLabelClass)) +#define UBER_IS_LABEL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), UBER_TYPE_LABEL)) +#define UBER_IS_LABEL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), UBER_TYPE_LABEL)) +#define UBER_LABEL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), UBER_TYPE_LABEL, UberLabelClass)) + +typedef struct _UberLabel UberLabel; +typedef struct _UberLabelClass UberLabelClass; +typedef struct _UberLabelPrivate UberLabelPrivate; + +struct _UberLabel +{ + GtkAlignment parent; + + /*< private >*/ + UberLabelPrivate *priv; +}; + +struct _UberLabelClass +{ + GtkAlignmentClass parent_class; +}; + +GType uber_label_get_type (void) G_GNUC_CONST; +GtkWidget* uber_label_new (void); +void uber_label_set_color (UberLabel *label, + const GdkRGBA *color); +void uber_label_set_text (UberLabel *label, + const gchar *text); + +G_END_DECLS + +#endif /* __UBER_LABEL_H__ */ diff --git a/deps/uber-graph/uber-line-graph.c b/deps/uber-graph/uber-line-graph.c new file mode 100644 index 00000000..776f5363 --- /dev/null +++ b/deps/uber-graph/uber-line-graph.c @@ -0,0 +1,1028 @@ +/* uber-line-graph.c + * + * Copyright (C) 2010 Christian Hergert + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include +#include + +#include "uber-line-graph.h" +#include "uber-range.h" +#include "uber-scale.h" +#include "g-ring.h" + +#define RECT_BOTTOM(r) ((r).y + (r).height) +#define RECT_RIGHT(r) ((r).x + (r).width) +#define SCALE_FACTOR (0.2) + +/** + * SECTION:uber-line-graph.h + * @title: UberLineGraph + * @short_description: + * + * Section overview. + */ + + +typedef struct +{ + GRing *raw_data; + GdkRGBA color; + gdouble width; + gdouble *dashes; + gint num_dashes; + gdouble dash_offset; + UberLabel *label; + guint label_id; +} LineInfo; + +struct _UberLineGraphPrivate +{ + GArray *lines; + cairo_antialias_t antialias; + guint stride; + gboolean autoscale; + UberRange range; + UberScale scale; + gpointer scale_data; + GDestroyNotify scale_notify; + UberLineGraphFunc func; + gpointer func_data; + GDestroyNotify func_notify; +}; + +G_DEFINE_TYPE_WITH_PRIVATE(UberLineGraph, uber_line_graph, UBER_TYPE_GRAPH) + + +enum +{ + PROP_0, + PROP_AUTOSCALE, + PROP_RANGE, +}; + +/** + * uber_line_graph_init_ring: + * @ring: A #GRing. + * + * Initialize the #GRing to default values (UBER_LINE_GRAPH_NO_VALUE). + * + * Returns: None. + * Side effects: None. + */ +static inline void +uber_line_graph_init_ring (GRing *ring) /* IN */ +{ + gdouble val = UBER_LINE_GRAPH_NO_VALUE; + guint i; + + g_return_if_fail(ring != NULL); + + for (i = 0; i < ring->len; i++) { + g_ring_append_val(ring, val); + } +} + +/** + * uber_line_graph_new: + * + * Creates a new instance of #UberLineGraph. + * + * Returns: the newly created instance of #UberLineGraph. + * Side effects: None. + */ +GtkWidget* +uber_line_graph_new (void) +{ + UberLineGraph *graph; + + graph = g_object_new(UBER_TYPE_LINE_GRAPH, NULL); + return GTK_WIDGET(graph); +} + +/** + * uber_line_graph_color: + * @graph: A #UberLineGraph. + * + * XXX + * + * Returns: None. + * Side effects: None. + */ +static void +uber_line_graph_color_changed (UberLabel *label, /* IN */ + GdkRGBA *color, /* IN */ + UberLineGraph *graph) /* IN */ +{ + UberLineGraphPrivate *priv; + LineInfo *info; + guint i; + + g_return_if_fail(UBER_IS_LINE_GRAPH(graph)); + g_return_if_fail(color != NULL); + + priv = graph->priv; + for (i = 0; i < priv->lines->len; i++) { + info = &g_array_index(priv->lines, LineInfo, i); + if (info->label == label) { + info->color = *color; + } + } + uber_graph_redraw(UBER_GRAPH(graph)); +} + +void +uber_line_graph_bind_label (UberLineGraph *graph, /* IN */ + guint line, /* IN */ + UberLabel *label) /* IN */ +{ + UberLineGraphPrivate *priv; + LineInfo *info; + + g_return_if_fail(UBER_IS_LINE_GRAPH(graph)); + g_return_if_fail(UBER_IS_LABEL(label)); + g_return_if_fail(line > 0); + g_return_if_fail(line <= graph->priv->lines->len); + + priv = graph->priv; + info = &g_array_index(priv->lines, LineInfo, line - 1); + if (info->label_id) { + g_signal_handler_disconnect(info->label, info->label_id); + } + info->label = label; + info->label_id = g_signal_connect(label, + "color-changed", + G_CALLBACK(uber_line_graph_color_changed), + graph); +} + +/** + * uber_line_graph_set_autoscale: + * @graph: A #UberLineGraph. + * @autoscale: Should we autoscale. + * + * Sets if we should autoscale the range of the graph when a new input + * value is outside the visible range. + * + * Returns: None. + * Side effects: None. + */ +void +uber_line_graph_set_autoscale (UberLineGraph *graph, /* IN */ + gboolean autoscale) /* IN */ +{ + UberLineGraphPrivate *priv; + + g_return_if_fail(UBER_IS_LINE_GRAPH(graph)); + + priv = graph->priv; + priv->autoscale = autoscale; +} + +/** + * uber_line_graph_get_autoscale: + * @graph: A #UberLineGraph. + * + * XXX + * + * Returns: None. + * Side effects: None. + */ +gboolean +uber_line_graph_get_autoscale (UberLineGraph *graph) /* IN */ +{ + g_return_val_if_fail(UBER_IS_LINE_GRAPH(graph), FALSE); + return graph->priv->autoscale; +} + +/** + * uber_line_graph_add_line: + * @graph: A #UberLineGraph. + * @color: A #GdkRGBA for the line or %NULL. + * + * Adds a new line to the graph. If color is %NULL, the next value + * in the default color list will be used. + * + * See uber_line_graph_remove_line(). + * + * Returns: The line identifier. + * Side effects: None. + */ +gint +uber_line_graph_add_line (UberLineGraph *graph, /* IN */ + const GdkRGBA *color, /* IN */ + UberLabel *label) /* IN */ +{ + UberLineGraphPrivate *priv; + LineInfo info = { 0 }; + + g_return_val_if_fail(UBER_IS_LINE_GRAPH(graph), 0); + + priv = graph->priv; + info.width = 1.0; + /* + * Retrieve the lines color. + */ + if (color) { + info.color = *color; + } else { + gdk_rgba_parse(&info.color, "#729fcf"); + } + /* + * Allocate buffers for data points. + */ + info.raw_data = g_ring_sized_new(sizeof(gdouble), priv->stride, NULL); + uber_line_graph_init_ring(info.raw_data); + /* + * Store the newly crated line. + */ + g_array_append_val(priv->lines, info); + /* + * Mark the graph for full redraw. + */ + uber_graph_redraw(UBER_GRAPH(graph)); + /* + * Attach label. + */ + if (label) { + uber_line_graph_bind_label(graph, priv->lines->len, label); + uber_graph_add_label(UBER_GRAPH(graph), label); + uber_label_set_color(label, &info.color); + } + /* + * Line indexes start from 1. + */ + return priv->lines->len; +} + +/** + * uber_line_graph_set_antialias: + * @graph: A #UberLineGraph. + * + * XXX + * + * Returns: None. + * Side effects: None. + */ +void +uber_line_graph_set_antialias (UberLineGraph *graph, /* IN */ + cairo_antialias_t antialias) /* IN */ +{ + UberLineGraphPrivate *priv; + + g_return_if_fail(UBER_IS_LINE_GRAPH(graph)); + + priv = graph->priv; + priv->antialias = antialias; + uber_graph_redraw(UBER_GRAPH(graph)); +} + +/** + * uber_line_graph_get_antialias: + * @graph: A #UberLineGraph. + * + * Retrieves the antialias mode for the graph. + * + * Returns: A cairo_antialias_t. + * Side effects: None. + */ +cairo_antialias_t +uber_line_graph_get_antialias (UberLineGraph *graph) /* IN */ +{ + g_return_val_if_fail(UBER_IS_LINE_GRAPH(graph), 0); + + return graph->priv->antialias; +} + +/** + * uber_line_graph_get_next_data: + * @graph: A #UberGraph. + * + * XXX + * + * Returns: None. + * Side effects: None. + */ +static gboolean +uber_line_graph_get_next_data (UberGraph *graph) /* IN */ +{ + UberLineGraphPrivate *priv; + gboolean scale_changed = FALSE; + gboolean ret = FALSE; + LineInfo *line; + gdouble val; + guint i; + + g_return_val_if_fail(UBER_IS_LINE_GRAPH(graph), FALSE); + + priv = UBER_LINE_GRAPH(graph)->priv; + /* + * Retrieve the next data point. + */ + if (priv->func) { + for (i = 0; i < priv->lines->len; i++) { + line = &g_array_index(priv->lines, LineInfo, i); + val = priv->func(UBER_LINE_GRAPH(graph), i + 1, priv->func_data); + g_ring_append_val(line->raw_data, val); + if (priv->autoscale) { + if (val < priv->range.begin) { + priv->range.begin = val - (val * SCALE_FACTOR); + priv->range.range = priv->range.end - priv->range.begin; + scale_changed = TRUE; + } else if (val > priv->range.end) { + priv->range.end = val + (val * SCALE_FACTOR); + priv->range.range = priv->range.end - priv->range.begin; + scale_changed = TRUE; + } + } + } + } + if (scale_changed) { + uber_graph_scale_changed(graph); + } + return ret; +} + +/** + * uber_line_graph_set_data_func: + * @graph: A #UberLineGraph. + * + * XXX + * + * Returns: None. + * Side effects: None. + */ +void +uber_line_graph_set_data_func (UberLineGraph *graph, /* IN */ + UberLineGraphFunc func, /* IN */ + gpointer user_data, /* IN */ + GDestroyNotify notify) /* IN */ +{ + UberLineGraphPrivate *priv; + + g_return_if_fail(UBER_IS_LINE_GRAPH(graph)); + + priv = graph->priv; + /* + * Free existing data func if neccessary. + */ + if (priv->func_notify) { + priv->func_notify(priv->func_data); + } + /* + * Store data func. + */ + priv->func = func; + priv->func_data = user_data; + priv->func_notify = notify; +} + +/** + * uber_line_graph_stylize_line: + * @graph: A #UberLineGraph. + * + * XXX + * + * Returns: None. + * Side effects: None. + */ +static void +uber_line_graph_stylize_line (UberLineGraph *graph, /* IN */ + LineInfo *info, /* IN */ + cairo_t *cr) /* IN */ +{ + UberLineGraphPrivate *priv; + + g_return_if_fail(UBER_IS_LINE_GRAPH(graph)); + g_return_if_fail(info != NULL); + + priv = graph->priv; + if (info->dashes) { + cairo_set_dash(cr, info->dashes, info->num_dashes, info->dash_offset); + } else { + cairo_set_dash(cr, NULL, 0, 0); + } + cairo_set_line_cap(cr, CAIRO_LINE_CAP_ROUND); + cairo_set_line_join(cr, CAIRO_LINE_JOIN_ROUND); + cairo_set_line_width(cr, info->width); + cairo_set_antialias(cr, priv->antialias); + cairo_set_source_rgba(cr, + info->color.red, + info->color.green, + info->color.blue, + info->color.alpha); +} + +/** + * uber_line_graph_render: + * @graph: A #UberGraph. + * @cr: A #cairo_t context. + * @area: Full area to render contents within. + * @line: The line to render. + * + * Render a particular line to the graph. + * + * Returns: None. + * Side effects: None. + */ +static void +uber_line_graph_render_line (UberLineGraph *graph, /* IN */ + cairo_t *cr, /* IN */ + GdkRectangle *area, /* IN */ + LineInfo *line, /* IN */ + guint epoch, /* IN */ + gfloat each) /* IN */ +{ + UberLineGraphPrivate *priv; + UberRange pixel_range; + GdkRectangle vis; + guint x; + guint last_x; + gdouble y; + gdouble last_y; + gdouble val; + guint i; + + g_return_if_fail(UBER_IS_LINE_GRAPH(graph)); + + priv = graph->priv; + uber_graph_get_content_area(UBER_GRAPH(graph), &vis); + pixel_range.begin = area->y + 1; + pixel_range.end = area->y + area->height; + pixel_range.range = pixel_range.end - pixel_range.begin; + /* + * Prepare cairo settings. + */ + uber_line_graph_stylize_line(graph, line, cr); + /* + * Force a new path. + */ + cairo_new_path(cr); + /* + * Draw the line contents as bezier curves. + */ + for (i = 0; i < line->raw_data->len; i++) { + /* + * Retrieve data point. + */ + val = g_ring_get_index(line->raw_data, gdouble, (int)i); + /* + * Once we get to UBER_LINE_GRAPH_NO_VALUE, we must be at the end of the data + * sequence. This may not always be true in the future. + */ + if (val == UBER_LINE_GRAPH_NO_VALUE) { + break; + } + /* + * Translate value to coordinate system. + */ + if (!priv->scale(&priv->range, &pixel_range, &val, priv->scale_data)) { + break; + } + /* + * Calculate X/Y coordinate. + */ + y = (gint)(RECT_BOTTOM(*area) - val) - .5; + x = epoch - (each * i); + if (i == 0) { + /* + * Just move to the right position on first entry. + */ + cairo_move_to(cr, x, y); + goto next; + } else { + /* + * Draw curve to data point using the last X/Y positions as + * control points. + */ + cairo_curve_to(cr, + last_x - (each / 2.), + last_y, + last_x - (each / 2.), + y, x, y); + } + next: + last_y = y; + last_x = x; + } + /* + * Stroke the line content. + */ + cairo_stroke(cr); +} + +/** + * uber_line_graph_render: + * @graph: A #UberGraph. + * + * Render the entire contents of the graph. + * + * Returns: None. + * Side effects: None. + */ +static void +uber_line_graph_render (UberGraph *graph, /* IN */ + cairo_t *cr, /* IN */ + GdkRectangle *rect, /* IN */ + guint epoch, /* IN */ + gfloat each) /* IN */ +{ + UberLineGraphPrivate *priv; + LineInfo *line; + guint i; + + g_return_if_fail(UBER_IS_LINE_GRAPH(graph)); + + priv = UBER_LINE_GRAPH(graph)->priv; + /* + * Render each line to the graph. + */ + for (i = 0; i < priv->lines->len; i++) { + line = &g_array_index(priv->lines, LineInfo, i); + uber_line_graph_render_line(UBER_LINE_GRAPH(graph), cr, rect, + line, epoch, each); + } +} + +/** + * uber_line_graph_render_fast: + * @graph: A #UberGraph. + * + * XXX + * + * Returns: None. + * Side effects: None. + */ +static void +uber_line_graph_render_fast (UberGraph *graph, /* IN */ + cairo_t *cr, /* IN */ + GdkRectangle *rect, /* IN */ + guint epoch, /* IN */ + gfloat each) /* IN */ +{ + UberLineGraphPrivate *priv; + UberRange pixel_range; + LineInfo *line; + gdouble last_y; + gdouble y; + guint i; + + g_return_if_fail(UBER_IS_LINE_GRAPH(graph)); + g_return_if_fail(cr != NULL); + g_return_if_fail(rect != NULL); + + priv = UBER_LINE_GRAPH(graph)->priv; + pixel_range.begin = rect->y + 1; + pixel_range.end = rect->y + rect->height; + pixel_range.range = pixel_range.end - pixel_range.begin; + /* + * Render most recent data point for each line. + */ + for (i = 0; i < priv->lines->len; i++) { + line = &g_array_index(priv->lines, LineInfo, i); + uber_line_graph_stylize_line(UBER_LINE_GRAPH(graph), line, cr); + /* + * Calculate positions. + */ + y = g_ring_get_index(line->raw_data, gdouble, 0); + last_y = g_ring_get_index(line->raw_data, gdouble, 1); + /* + * Don't try to draw before we have real values. + */ + if ((isnan(y) || isinf(y)) || (isnan(last_y) || isinf(last_y))) { + continue; + } + /* + * Translate to coordinate scale. + */ + if (!priv->scale(&priv->range, &pixel_range, &y, priv->scale_data) || + !priv->scale(&priv->range, &pixel_range, &last_y, priv->scale_data)) { + continue; + } + /* + * Translate position from bottom right corner. + */ + y = (gint)(RECT_BOTTOM(*rect) - y) - .5; + last_y = (gint)(RECT_BOTTOM(*rect) - last_y) - .5; + /* + * Convert relative position to fixed from bottom pixel. + */ + cairo_new_path(cr); + cairo_move_to(cr, epoch, y); + cairo_curve_to(cr, + epoch - (each / 2.), + y, + epoch - (each / 2.), + last_y, + epoch - each, + last_y); + cairo_stroke(cr); + } +} + +/** + * uber_line_graph_set_stride: + * @graph: A #UberGraph. + * @stride: The number of data points within the graph. + * + * XXX + * + * Returns: None. + * Side effects: None. + */ +static void +uber_line_graph_set_stride (UberGraph *graph, /* IN */ + guint stride) /* IN */ +{ + UberLineGraphPrivate *priv; + LineInfo *line; + guint i; + + g_return_if_fail(UBER_IS_LINE_GRAPH(graph)); + + priv = UBER_LINE_GRAPH(graph)->priv; + priv->stride = stride; + /* + * TODO: Support changing stride after lines have been added. + */ + if (priv->lines->len) { + for (i = 0; i < priv->lines->len; i++) { + line = &g_array_index(priv->lines, LineInfo, i); + g_ring_unref(line->raw_data); + line->raw_data = g_ring_sized_new(sizeof(gdouble), + priv->stride, NULL); + uber_line_graph_init_ring(line->raw_data); + } + return; + } +} + +/** + * uber_line_graph_get_range: + * @graph: (in): A #UberLineGraph. + * + * XXX + * + * Returns: An #UberRange which should not be modified or freed. + * Side effects: None. + */ +const UberRange* +uber_line_graph_get_range (UberLineGraph *graph) /* IN */ +{ + g_return_val_if_fail(UBER_IS_LINE_GRAPH(graph), NULL); + return &graph->priv->range; +} + +/** + * uber_line_graph_set_range: + * @graph: A #UberLineGraph. + * + * XXX + * + * Returns: None. + * Side effects: None. + */ +void +uber_line_graph_set_range (UberLineGraph *graph, /* IN */ + const UberRange *range) /* IN */ +{ + UberLineGraphPrivate *priv; + + g_return_if_fail(UBER_IS_LINE_GRAPH(graph)); + g_return_if_fail(range != NULL); + + priv = graph->priv; + priv->range = *range; +} + +/** + * uber_line_graph_get_yrange: + * @graph: A #UberGraph. + * + * XXX + * + * Returns: None. + * Side effects: None. + */ +static void +uber_line_graph_get_yrange (UberGraph *graph, /* IN */ + UberRange *range) /* OUT */ +{ + UberLineGraphPrivate *priv; + + g_return_if_fail(UBER_IS_LINE_GRAPH(graph)); + g_return_if_fail(range != NULL); + + priv = UBER_LINE_GRAPH(graph)->priv; + *range = priv->range; +} + +/** + * uber_line_graph_set_line_dash: + * @graph: A #UberLineGraph. + * + * XXX + * + * Returns: None. + * Side effects: None. + */ +void +uber_line_graph_set_line_dash (UberLineGraph *graph, /* IN */ + guint line, /* IN */ + const gdouble *dashes, /* IN */ + gint num_dashes, /* IN */ + gdouble offset) /* IN */ +{ + UberLineGraphPrivate *priv; + LineInfo *info; + + g_return_if_fail(UBER_IS_LINE_GRAPH(graph)); + g_return_if_fail(dashes != NULL); + g_return_if_fail(num_dashes > 0); + g_return_if_fail(line > 0); + g_return_if_fail(line <= graph->priv->lines->len); + + priv = graph->priv; + info = &g_array_index(priv->lines, LineInfo, line - 1); + if (info->dashes) { + g_free(info->dashes); + info->dashes = NULL; + info->num_dashes = 0; + info->dash_offset = 0; + } + if (dashes) { + info->dashes = g_new0(gdouble, num_dashes); + memcpy(info->dashes, dashes, sizeof(gdouble) * num_dashes); + info->num_dashes = num_dashes; + info->dash_offset = offset; + } +} + +/** + * uber_line_graph_set_line_width: + * @graph: A #UberLineGraph. + * + * XXX + * + * Returns: None. + * Side effects: None. + */ +void +uber_line_graph_set_line_width (UberLineGraph *graph, /* IN */ + gint line, /* IN */ + gdouble width) /* IN */ +{ + LineInfo *info; + + g_return_if_fail(UBER_IS_LINE_GRAPH(graph)); + g_return_if_fail(line > 0); + g_return_if_fail(line <= (int)graph->priv->lines->len); + + info = &g_array_index(graph->priv->lines, LineInfo, line - 1); + info->width = width; + uber_graph_redraw(UBER_GRAPH(graph)); +} + +/** + * uber_line_graph_downscale: + * @graph: A #UberGraph. + * + * XXX + * + * Returns: None. + * Side effects: None. + */ +static gboolean +uber_line_graph_downscale (UberGraph *graph) /* IN */ +{ + UberLineGraphPrivate *priv; + gboolean ret = FALSE; + gdouble val = 0; + gdouble cur; + LineInfo *line; + guint i; + guint j; + + g_return_val_if_fail(UBER_IS_LINE_GRAPH(graph), FALSE); + + priv = UBER_LINE_GRAPH(graph)->priv; + /* + * If we are set to autoscale, ignore request. + */ + if (!priv->autoscale) { + return FALSE; + } + /* + * Determine the largest value available. + */ + for (i = 0; i < priv->lines->len; i++) { + line = &g_array_index(priv->lines, LineInfo, i); + for (j = 0; j < line->raw_data->len; j++) { + cur = g_ring_get_index(line->raw_data, gdouble, (int)j); + val = (cur > val) ? cur : val; + } + } + /* + * Downscale if we can. + */ + if (val != priv->range.begin) { + if ((val * (1. + SCALE_FACTOR)) < priv->range.end) { + priv->range.end = val * (1. + SCALE_FACTOR); + priv->range.range = priv->range.end - priv->range.begin; + ret = TRUE; + } + } + return ret; +} + +/** + * uber_line_graph_finalize: + * @object: A #UberLineGraph. + * + * Finalizer for a #UberLineGraph instance. Frees any resources held by + * the instance. + * + * Returns: None. + * Side effects: None. + */ +static void +uber_line_graph_finalize (GObject *object) /* IN */ +{ + UberLineGraphPrivate *priv; + LineInfo *line; + guint i; + + priv = UBER_LINE_GRAPH(object)->priv; + /* + * Clean up after cached values. + */ + for (i = 0; i < priv->lines->len; i++) { + line = &g_array_index(priv->lines, LineInfo, i); + g_ring_unref(line->raw_data); + g_free(line->dashes); + } + G_OBJECT_CLASS(uber_line_graph_parent_class)->finalize(object); +} + +/** + * uber_line_graph_set_property: + * @object: (in): A #GObject. + * @prop_id: (in): The property identifier. + * @value: (out): The given property. + * @pspec: (in): A #ParamSpec. + * + * Get a given #GObject property. + */ +static void +uber_line_graph_get_property (GObject *object, /* IN */ + guint prop_id, /* IN */ + GValue *value, /* OUT */ + GParamSpec *pspec) /* IN */ +{ + UberLineGraph *graph = UBER_LINE_GRAPH(object); + + switch (prop_id) { + case PROP_AUTOSCALE: + g_value_set_boolean(value, uber_line_graph_get_autoscale(graph)); + break; + case PROP_RANGE: + g_value_set_boxed(value, uber_line_graph_get_range(graph)); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); + } +} + +/** + * uber_line_graph_set_property: + * @object: (in): A #GObject. + * @prop_id: (in): The property identifier. + * @value: (in): The given property. + * @pspec: (in): A #ParamSpec. + * + * Set a given #GObject property. + */ +static void +uber_line_graph_set_property (GObject *object, /* IN */ + guint prop_id, /* IN */ + const GValue *value, /* IN */ + GParamSpec *pspec) /* IN */ +{ + UberLineGraph *graph = UBER_LINE_GRAPH(object); + + switch (prop_id) { + case PROP_AUTOSCALE: + uber_line_graph_set_autoscale(graph, g_value_get_boolean(value)); + break; + case PROP_RANGE: + uber_line_graph_set_range(graph, g_value_get_boxed(value)); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); + } +} + +/** + * uber_line_graph_class_init: + * @klass: A #UberLineGraphClass. + * + * Initializes the #UberLineGraphClass and prepares the vtable. + * + * Returns: None. + * Side effects: None. + */ +static void +uber_line_graph_class_init (UberLineGraphClass *klass) /* IN */ +{ + GObjectClass *object_class; + UberGraphClass *graph_class; + + object_class = G_OBJECT_CLASS(klass); + object_class->finalize = uber_line_graph_finalize; + object_class->get_property = uber_line_graph_get_property; + object_class->set_property = uber_line_graph_set_property; + + graph_class = UBER_GRAPH_CLASS(klass); + graph_class->downscale = uber_line_graph_downscale; + graph_class->get_next_data = uber_line_graph_get_next_data; + graph_class->get_yrange = uber_line_graph_get_yrange; + graph_class->render = uber_line_graph_render; + graph_class->render_fast = uber_line_graph_render_fast; + graph_class->set_stride = uber_line_graph_set_stride; + + g_object_class_install_property(object_class, + PROP_AUTOSCALE, + g_param_spec_boolean("autoscale", + "autoscale", + "autoscale", + FALSE, + G_PARAM_READWRITE)); + + g_object_class_install_property(object_class, + PROP_RANGE, + g_param_spec_boxed("range", + "range", + "range", + UBER_TYPE_RANGE, + G_PARAM_READWRITE)); +} + +/** + * uber_line_graph_init: + * @graph: A #UberLineGraph. + * + * Initializes the newly created #UberLineGraph instance. + * + * Returns: None. + * Side effects: None. + */ +static void +uber_line_graph_init (UberLineGraph *graph) /* IN */ +{ + UberLineGraphPrivate *priv; + + /* + * Keep pointer to private data. + */ + graph->priv = uber_line_graph_get_instance_private(graph); + + priv = graph->priv; + /* + * Initialize defaults. + */ + priv->stride = 60; + priv->antialias = CAIRO_ANTIALIAS_DEFAULT; + priv->lines = g_array_sized_new(FALSE, FALSE, sizeof(LineInfo), 2); + priv->scale = uber_scale_linear; + priv->autoscale = TRUE; +} + +void +uber_line_graph_clear (UberLineGraph *graph) /* IN */ +{ + UberLineGraphPrivate *priv = graph->priv; + LineInfo *line; + guint i; + + for (i = 0; i < priv->lines->len; i++) { + line = &g_array_index(priv->lines, LineInfo, i); + uber_line_graph_init_ring(line->raw_data); + } +} diff --git a/deps/uber-graph/uber-line-graph.h b/deps/uber-graph/uber-line-graph.h new file mode 100644 index 00000000..22a01681 --- /dev/null +++ b/deps/uber-graph/uber-line-graph.h @@ -0,0 +1,100 @@ +/* uber-line-graph.h + * + * Copyright (C) 2010 Christian Hergert + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#ifndef __UBER_LINE_GRAPH_H__ +#define __UBER_LINE_GRAPH_H__ + +#include + +#include "uber-graph.h" +#include "uber-range.h" +#include "uber-label.h" + +G_BEGIN_DECLS + +#define UBER_TYPE_LINE_GRAPH (uber_line_graph_get_type()) +#define UBER_LINE_GRAPH(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), UBER_TYPE_LINE_GRAPH, UberLineGraph)) +#define UBER_LINE_GRAPH_CONST(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), UBER_TYPE_LINE_GRAPH, UberLineGraph const)) +#define UBER_LINE_GRAPH_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), UBER_TYPE_LINE_GRAPH, UberLineGraphClass)) +#define UBER_IS_LINE_GRAPH(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), UBER_TYPE_LINE_GRAPH)) +#define UBER_IS_LINE_GRAPH_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), UBER_TYPE_LINE_GRAPH)) +#define UBER_LINE_GRAPH_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), UBER_TYPE_LINE_GRAPH, UberLineGraphClass)) + +#define UBER_LINE_GRAPH_NO_VALUE (NAN) + +typedef struct _UberLineGraph UberLineGraph; +typedef struct _UberLineGraphClass UberLineGraphClass; +typedef struct _UberLineGraphPrivate UberLineGraphPrivate; + +/** + * UberLineGraphFunc: + * @graph: A #UberLineGraph. + * @user_data: User data supplied to uber_line_graph_set_data_func(). + * + * Callback prototype for retrieving the next data point in the graph. + * + * Returns: a value if successful, otherwise %UBER_LINE_GRAPH_NO_VALUE + * Side effects: Implementation dependent. + */ +typedef gdouble (*UberLineGraphFunc) (UberLineGraph *graph, + guint line, + gpointer user_data); + +struct _UberLineGraph +{ + UberGraph parent; + + /*< private >*/ + UberLineGraphPrivate *priv; +}; + +struct _UberLineGraphClass +{ + UberGraphClass parent_class; +}; + +gint uber_line_graph_add_line (UberLineGraph *graph, + const GdkRGBA *color, + UberLabel *label); +cairo_antialias_t uber_line_graph_get_antialias (UberLineGraph *graph); +GType uber_line_graph_get_type (void) G_GNUC_CONST; +GtkWidget* uber_line_graph_new (void); +void uber_line_graph_set_antialias (UberLineGraph *graph, + cairo_antialias_t antialias); +void uber_line_graph_set_data_func (UberLineGraph *graph, + UberLineGraphFunc func, + gpointer user_data, + GDestroyNotify notify); +gboolean uber_line_graph_get_autoscale (UberLineGraph *graph); +void uber_line_graph_set_autoscale (UberLineGraph *graph, + gboolean autoscale); +const UberRange* uber_line_graph_get_range (UberLineGraph *graph); +void uber_line_graph_set_range (UberLineGraph *graph, + const UberRange *range); +void uber_line_graph_set_line_dash (UberLineGraph *graph, + guint line, + const gdouble *dashes, + gint num_dashes, + gdouble offset); +void uber_line_graph_set_line_width (UberLineGraph *graph, + gint line, + gdouble width); +void uber_line_graph_clear (UberLineGraph *graph); +G_END_DECLS + +#endif /* __UBER_LINE_GRAPH_H__ */ diff --git a/deps/uber-graph/uber-range.c b/deps/uber-graph/uber-range.c new file mode 100644 index 00000000..e8afc0de --- /dev/null +++ b/deps/uber-graph/uber-range.c @@ -0,0 +1,64 @@ +/* uber-range.c + * + * Copyright (C) 2010 Christian Hergert + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include + +#include "uber-range.h" + +UberRange* +uber_range_copy (UberRange *src) +{ + UberRange *dst = g_new0(UberRange, 1); + memcpy(dst, src, sizeof(UberRange)); + return dst; +} + +void +uber_range_free (UberRange *range) +{ + g_free(range); +} + +UberRange* +uber_range_new (gdouble begin, + gdouble end) +{ + UberRange *range; + + range = g_new0(UberRange, 1); + range->begin = begin; + range->end = end; + range->range = range->end - range->begin; + return range; +} + +GType +uber_range_get_type (void) +{ + static gsize initialized = FALSE; + GType type_id = 0; + + if (G_UNLIKELY(g_once_init_enter(&initialized))) { + type_id = g_boxed_type_register_static("UberRange", + (GBoxedCopyFunc)uber_range_copy, + (GBoxedFreeFunc)uber_range_free); + g_once_init_leave(&initialized, TRUE); + } + + return type_id; +} diff --git a/deps/uber-graph/uber-range.h b/deps/uber-graph/uber-range.h new file mode 100644 index 00000000..166a1313 --- /dev/null +++ b/deps/uber-graph/uber-range.h @@ -0,0 +1,50 @@ +/* uber-range.h + * + * Copyright (C) 2010 Christian Hergert + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#ifndef __UBER_RANGE_H__ +#define __UBER_RANGE_H__ + +#include + +G_BEGIN_DECLS + +#define UBER_TYPE_RANGE (uber_range_get_type()) + +/** + * UberRange: + * + * #UberRange is a structure that encapsulates the range of a particular + * scale. It contains the beginning value, ending value, and a pre-calculated + * range between the values. + */ +typedef struct +{ + gdouble begin; + gdouble end; + gdouble range; +} UberRange; + +GType uber_range_get_type (void) G_GNUC_CONST; +void uber_range_free (UberRange *range); +UberRange* uber_range_copy (UberRange *range); +UberRange* uber_range_new (gdouble begin, + gdouble end); + +G_END_DECLS + +#endif /* __UBER_RANGE_H__ */ diff --git a/deps/uber-graph/uber-scale.c b/deps/uber-graph/uber-scale.c new file mode 100644 index 00000000..ead9f988 --- /dev/null +++ b/deps/uber-graph/uber-scale.c @@ -0,0 +1,54 @@ +/* uber-scale.c + * + * Copyright (C) 2010 Christian Hergert + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include "uber-scale.h" + +/** + * uber_scale_linear: + * @range: An #UberRange. + * @pixel_range: An #UberRange. + * @value: A pointer to the value to translate. + * @user_data: user data for scale. + * + * An #UberScale function to translate a value to the coordinate system in + * a linear fashion. + * + * Returns: %TRUE if successful; otherwise %FALSE. + * Side effects: None. + */ +gboolean +uber_scale_linear (const UberRange *range, /* IN */ + const UberRange *pixel_range, /* IN */ + gdouble *value, /* IN/OUT */ + gpointer user_data) /* IN */ +{ + #define A (range->range) + #define B (pixel_range->range) + #define C (*value) + if (*value != 0.) { + *value = C * B / A; + } + #undef A + #undef B + #undef C + return TRUE; +} diff --git a/deps/uber-graph/uber-scale.h b/deps/uber-graph/uber-scale.h new file mode 100644 index 00000000..5101275b --- /dev/null +++ b/deps/uber-graph/uber-scale.h @@ -0,0 +1,38 @@ +/* uber-scale.h + * + * Copyright (C) 2010 Christian Hergert + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#ifndef __UBER_SCALE_H__ +#define __UBER_SCALE_H__ + +#include "uber-range.h" + +G_BEGIN_DECLS + +typedef gboolean (*UberScale) (const UberRange *range, + const UberRange *pixel_range, + gdouble *value, + gpointer user_data); + +gboolean uber_scale_linear (const UberRange *range, + const UberRange *pixel_range, + gdouble *value, + gpointer user_data); + +G_END_DECLS + +#endif /* __UBER_SCALE_H__ */ diff --git a/deps/uber-graph/uber-scatter.c b/deps/uber-graph/uber-scatter.c new file mode 100644 index 00000000..56c7b00d --- /dev/null +++ b/deps/uber-graph/uber-scatter.c @@ -0,0 +1,421 @@ +/* uber-scatter.c + * + * Copyright (C) 2010 Christian Hergert + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include +#include + +#include "uber-scatter.h" +#include "uber-scale.h" +#include "uber-range.h" +#include "g-ring.h" + +#define RADIUS 3 + +/** + * SECTION:uber-scatter.h + * @title: UberScatter + * @short_description: + * + * Section overview. + */ + + +struct _UberScatterPrivate +{ + GRing *raw_data; + UberRange range; + guint stride; + GdkRGBA fg_color; + gboolean fg_color_set; + UberScatterFunc func; + gpointer func_user_data; + GDestroyNotify func_destroy; +}; + +G_DEFINE_TYPE_WITH_PRIVATE(UberScatter, uber_scatter, UBER_TYPE_GRAPH) + +/** + * uber_scatter_new: + * + * Creates a new instance of #UberScatter. + * + * Returns: the newly created instance of #UberScatter. + * Side effects: None. + */ +GtkWidget* +uber_scatter_new (void) +{ + UberScatter *scatter; + + scatter = g_object_new(UBER_TYPE_SCATTER, NULL); + return GTK_WIDGET(scatter); +} + +/** + * uber_scatter_set_data_func: + * @scatter: A #UberScatter. + * + * XXX + * + * Returns: None. + * Side effects: None. + */ +void +uber_scatter_set_data_func (UberScatter *scatter, /* IN */ + UberScatterFunc func, /* IN */ + gpointer user_data, /* IN */ + GDestroyNotify destroy) /* IN */ +{ + UberScatterPrivate *priv; + + g_return_if_fail(UBER_IS_SCATTER(scatter)); + g_return_if_fail(func != NULL); + + priv = scatter->priv; + /* + * Cleanup previous data func if necessary. + */ + if (priv->func_destroy) { + priv->func_destroy(priv->func_user_data); + } + priv->func = func; + priv->func_destroy = destroy; + priv->func_user_data = user_data; +} + +/** + * uber_scatter_destroy_array: + * @array: A #GArray. + * + * XXX + * + * Returns: None. + * Side effects: None. + */ +static void +uber_scatter_destroy_array (gpointer data) /* IN */ +{ + GArray **ar = data; + + if (ar) { + g_array_unref(*ar); + } +} + +/** + * uber_scatter_set_stride: + * @graph: A #UberGraph. + * + * XXX + * + * Returns: None. + * Side effects: None. + */ +static void +uber_scatter_set_stride (UberGraph *graph, /* IN */ + guint stride) /* IN */ +{ + UberScatterPrivate *priv; + + g_return_if_fail(UBER_IS_SCATTER(graph)); + + priv = UBER_SCATTER(graph)->priv; + if (priv->stride == stride) { + return; + } + priv->stride = stride; + if (priv->raw_data) { + g_ring_unref(priv->raw_data); + } + priv->raw_data = g_ring_sized_new(sizeof(GArray*), stride, + uber_scatter_destroy_array); +} + +/** + * uber_scatter_render: + * @graph: A #UberGraph. + * + * XXX + * + * Returns: None. + * Side effects: None. + */ +static void +uber_scatter_render (UberGraph *graph, /* IN */ + cairo_t *cr, /* IN */ + GdkRectangle *area, /* IN */ + guint epoch, /* IN */ + gfloat each) /* IN */ +{ + UberScatterPrivate *priv; + UberRange pixel_range; + GtkStyleContext *style; + GdkRGBA color; + GArray *ar; + gdouble x; + gdouble y; + guint i; + guint j; + + g_return_if_fail(UBER_IS_SCATTER(graph)); + + priv = UBER_SCATTER(graph)->priv; + color = priv->fg_color; + if (!priv->fg_color_set) { + style = gtk_widget_get_style_context(GTK_WIDGET(graph)); + gtk_style_context_get_color(style, GTK_STATE_FLAG_SELECTED, &color); + } + /* + * Calculate ranges. + */ + pixel_range.begin = area->y + (RADIUS / 2.); + pixel_range.end = area->y + area->height - RADIUS; + pixel_range.range = pixel_range.end - pixel_range.begin; + /* + * Retrieve the current data set. + */ + for (i = 0; i < priv->raw_data->len; i++) { + if (!(ar = g_ring_get_index(priv->raw_data, GArray*, (int)i))) { + continue; + } + x = epoch - (i * each) - (each / 2.); + for (j = 0; j < ar->len; j++) { + y = g_array_index(ar, gdouble, j); +// g_debug("Raw ==> %f", y); + uber_scale_linear(&priv->range, &pixel_range, &y, NULL); + /* + * Shadow. + */ + cairo_arc(cr, x + .5, y + .5, RADIUS, 0, 2 * M_PI); + cairo_set_source_rgb(cr, .1, .1, .1); + cairo_fill(cr); + /* + * Foreground. + */ + cairo_arc(cr, x, y, RADIUS, 0, 2 * M_PI); + cairo_set_source_rgb(cr, + color.red, + color.green, + color.blue); + cairo_fill(cr); + } + } +} + +/** + * uber_scatter_render_fast: + * @graph: A #UberGraph. + * + * XXX + * + * Returns: None. + * Side effects: None. + */ +static void +uber_scatter_render_fast (UberGraph *graph, /* IN */ + cairo_t *cr, /* IN */ + GdkRectangle *area, /* IN */ + guint epoch, /* IN */ + gfloat each) /* IN */ +{ + UberScatterPrivate *priv; + UberRange pixel_range; + GtkStyleContext *style; + GdkRGBA color; + GArray *ar; + gdouble x; + gdouble y; + guint i; + + g_return_if_fail(UBER_IS_SCATTER(graph)); + + priv = UBER_SCATTER(graph)->priv; + color = priv->fg_color; + if (!priv->fg_color_set) { + style = gtk_widget_get_style_context(GTK_WIDGET(graph)); + gtk_style_context_get_color(style, GTK_STATE_FLAG_SELECTED, &color); + } + /* + * Calculate ranges. + */ + pixel_range.begin = area->y + (RADIUS / 2.); + pixel_range.end = area->y + area->height - RADIUS; + pixel_range.range = pixel_range.end - pixel_range.begin; + /* + * Retrieve the current data set. + */ + ar = g_ring_get_index(priv->raw_data, GArray*, 0); + if (!ar) { + return; + } + /* + * Calculate X position (Center of this chunk). + */ + x = epoch - (each / 2.); + /* + * Draw scatter dots. + */ + for (i = 0; i < ar->len; i++) { + /* + * Scale the value to our graph coordinates. + */ + y = g_array_index(ar, gdouble, i); + /* + * XXX: Support multiple scales. + */ + uber_scale_linear(&priv->range, &pixel_range, &y, NULL); + /* + * Shadow. + */ + cairo_arc(cr, x + .5, y + .5, RADIUS, 0, 2 * M_PI); + cairo_set_source_rgb(cr, .1, .1, .1); + cairo_fill(cr); + /* + * Foreground. + */ + cairo_arc(cr, x, y, RADIUS, 0, 2 * M_PI); + cairo_set_source_rgb(cr, + color.red, + color.green, + color.blue); + cairo_fill(cr); + } +} + +/** + * uber_scatter_get_next_data: + * @graph: A #UberGraph. + * + * Retrieve the next data point for the graph. + * + * Returns: None. + * Side effects: None. + */ +static gboolean +uber_scatter_get_next_data (UberGraph *graph) /* IN */ +{ + UberScatterPrivate *priv; + GArray *array = NULL; + + g_return_val_if_fail(UBER_IS_SCATTER(graph), FALSE); + + priv = UBER_SCATTER(graph)->priv; + if (priv->func) { + if (!priv->func(UBER_SCATTER(graph), &array, priv->func_user_data)) { + array = NULL; + } + g_ring_append_val(priv->raw_data, array); + return TRUE; + } + return FALSE; +} + +/** + * uber_scatter_set_fg_color: + * @scatter: A #UberScatter. + * + * XXX + * + * Returns: None. + * Side effects: None. + */ +void +uber_scatter_set_fg_color (UberScatter *scatter, /* IN */ + const GdkRGBA *color) /* IN */ +{ + UberScatterPrivate *priv; + + g_return_if_fail(UBER_IS_SCATTER(scatter)); + + priv = scatter->priv; + if (color) { + priv->fg_color = *color; + priv->fg_color_set = TRUE; + } else { + memset(&priv->fg_color, 0, sizeof(priv->fg_color)); + priv->fg_color_set = FALSE; + } +} + +/** + * uber_scatter_finalize: + * @object: A #UberScatter. + * + * Finalizer for a #UberScatter instance. Frees any resources held by + * the instance. + * + * Returns: None. + * Side effects: None. + */ +static void +uber_scatter_finalize (GObject *object) /* IN */ +{ + G_OBJECT_CLASS(uber_scatter_parent_class)->finalize(object); +} + +/** + * uber_scatter_class_init: + * @klass: A #UberScatterClass. + * + * Initializes the #UberScatterClass and prepares the vtable. + * + * Returns: None. + * Side effects: None. + */ +static void +uber_scatter_class_init (UberScatterClass *klass) /* IN */ +{ + GObjectClass *object_class; + UberGraphClass *graph_class; + + object_class = G_OBJECT_CLASS(klass); + object_class->finalize = uber_scatter_finalize; + + graph_class = UBER_GRAPH_CLASS(klass); + graph_class->render = uber_scatter_render; + graph_class->render_fast = uber_scatter_render_fast; + graph_class->set_stride = uber_scatter_set_stride; + graph_class->get_next_data = uber_scatter_get_next_data; +} + +/** + * uber_scatter_init: + * @scatter: A #UberScatter. + * + * Initializes the newly created #UberScatter instance. + * + * Returns: None. + * Side effects: None. + */ +static void +uber_scatter_init (UberScatter *scatter) /* IN */ +{ + UberScatterPrivate *priv; + + scatter->priv = uber_scatter_get_instance_private(scatter); + + priv = scatter->priv; + + priv->range.begin = 0.; + priv->range.end = 15000.; + priv->range.range = priv->range.end - priv->range.begin; +} diff --git a/deps/uber-graph/uber-scatter.h b/deps/uber-graph/uber-scatter.h new file mode 100644 index 00000000..ef111456 --- /dev/null +++ b/deps/uber-graph/uber-scatter.h @@ -0,0 +1,66 @@ +/* uber-scatter.h + * + * Copyright (C) 2010 Christian Hergert + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#ifndef __UBER_SCATTER_H__ +#define __UBER_SCATTER_H__ + +#include "uber-graph.h" + +G_BEGIN_DECLS + +#define UBER_TYPE_SCATTER (uber_scatter_get_type()) +#define UBER_SCATTER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), UBER_TYPE_SCATTER, UberScatter)) +#define UBER_SCATTER_CONST(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), UBER_TYPE_SCATTER, UberScatter const)) +#define UBER_SCATTER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), UBER_TYPE_SCATTER, UberScatterClass)) +#define UBER_IS_SCATTER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), UBER_TYPE_SCATTER)) +#define UBER_IS_SCATTER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), UBER_TYPE_SCATTER)) +#define UBER_SCATTER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), UBER_TYPE_SCATTER, UberScatterClass)) + +typedef struct _UberScatter UberScatter; +typedef struct _UberScatterClass UberScatterClass; +typedef struct _UberScatterPrivate UberScatterPrivate; + +typedef gboolean (*UberScatterFunc) (UberScatter *scatter, + GArray **values, + gpointer user_data); + +struct _UberScatter +{ + UberGraph parent; + + /*< private >*/ + UberScatterPrivate *priv; +}; + +struct _UberScatterClass +{ + UberGraphClass parent_class; +}; + +GType uber_scatter_get_type (void) G_GNUC_CONST; +GtkWidget* uber_scatter_new (void); +void uber_scatter_set_fg_color (UberScatter *scatter, + const GdkRGBA *color); +void uber_scatter_set_data_func (UberScatter *scatter, + UberScatterFunc func, + gpointer user_data, + GDestroyNotify destroy); + +G_END_DECLS + +#endif /* __UBER_SCATTER_H__ */ diff --git a/deps/uber-graph/uber-timeout-interval.c b/deps/uber-graph/uber-timeout-interval.c new file mode 100644 index 00000000..baabbcca --- /dev/null +++ b/deps/uber-graph/uber-timeout-interval.c @@ -0,0 +1,140 @@ +/* + * Clutter. + * + * An OpenGL based 'interactive canvas' library. + * + * Authored By Neil Roberts + * + * Copyright (C) 2009 Intel Corporation. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library. If not, see . + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +/* This file contains the common code to check whether an interval has + expired used in uber-frame-source and uber-timeout-pool. */ + +#include "uber-timeout-interval.h" + +void +_uber_timeout_interval_init (UberTimeoutInterval *interval, + guint fps) +{ +#if GLIB_CHECK_VERSION (2, 27, 3) + interval->start_time = g_get_monotonic_time () / 1000; +#else + { + GTimeVal start_time; + g_get_current_time (&start_time); + interval->start_time = start_time.tv_sec * 1000 + + start_time.tv_usec / 1000; + } +#endif + + interval->fps = fps; + interval->frame_count = 0; +} + +static gint64 +_uber_timeout_interval_get_ticks (gint64 current_time, + UberTimeoutInterval *interval) +{ + return MAX (current_time - interval->start_time, 0); +} + +gboolean +_uber_timeout_interval_prepare (gint64 current_time, + UberTimeoutInterval *interval, + gint *delay) +{ + guint elapsed_time, new_frame_num; + + elapsed_time = _uber_timeout_interval_get_ticks (current_time, interval); + new_frame_num = elapsed_time * interval->fps / 1000; + + /* If time has gone backwards or the time since the last frame is + greater than the two frames worth then reset the time and do a + frame now */ + if (new_frame_num < interval->frame_count || + new_frame_num - interval->frame_count > 2) + { + /* Get the frame time rounded up to the nearest ms */ + guint frame_time = (1000 + interval->fps - 1) / interval->fps; + + /* Reset the start time */ + interval->start_time = current_time; + + /* Move the start time as if one whole frame has elapsed */ + interval->start_time -= frame_time; + + interval->frame_count = 0; + + if (delay) + *delay = 0; + + return TRUE; + } + else if (new_frame_num > interval->frame_count) + { + if (delay) + *delay = 0; + + return TRUE; + } + else + { + if (delay) + *delay = ((interval->frame_count + 1) * 1000 / interval->fps + - elapsed_time); + + return FALSE; + } +} + +gboolean +_uber_timeout_interval_dispatch (UberTimeoutInterval *interval, + GSourceFunc callback, + gpointer user_data) +{ + if ((* callback) (user_data)) + { + interval->frame_count++; + + return TRUE; + } + + return FALSE; +} + +gint +_uber_timeout_interval_compare_expiration (const UberTimeoutInterval *a, + const UberTimeoutInterval *b) +{ + guint a_delay = 1000 / a->fps; + guint b_delay = 1000 / b->fps; + gint64 b_difference; + gint comparison; + + b_difference = a->start_time - b->start_time; + + comparison = ((gint) (((gint64)a->frame_count + 1) * a_delay) + - (gint) (((gint64)b->frame_count + 1) * b_delay + b_difference)); + + return (comparison < 0 ? -1 + : comparison > 0 ? 1 + : 0); +} diff --git a/deps/uber-graph/uber-timeout-interval.h b/deps/uber-graph/uber-timeout-interval.h new file mode 100644 index 00000000..c1b8b892 --- /dev/null +++ b/deps/uber-graph/uber-timeout-interval.h @@ -0,0 +1,56 @@ +/* + * Clutter. + * + * An OpenGL based 'interactive canvas' library. + * + * Authored By Neil Roberts + * + * Copyright (C) 2009 Intel Corporation. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library. If not, see . + */ + +#ifndef __UBER_TIMEOUT_INTERVAL_H__ +#define __UBER_TIMEOUT_INTERVAL_H__ + +#include + +G_BEGIN_DECLS + +typedef struct _UberTimeoutInterval UberTimeoutInterval; + +struct _UberTimeoutInterval +{ + gint64 start_time; + guint frame_count, fps; +}; + +void _uber_timeout_interval_init (UberTimeoutInterval *interval, + guint fps); + +gboolean _uber_timeout_interval_prepare (gint64 current_time, + UberTimeoutInterval *interval, + gint *delay); + +gboolean _uber_timeout_interval_dispatch (UberTimeoutInterval *interval, + GSourceFunc callback, + gpointer user_data); + +gint _uber_timeout_interval_compare_expiration + (const UberTimeoutInterval *a, + const UberTimeoutInterval *b); + +G_END_DECLS + +#endif /* __UBER_TIMEOUT_INTERVAL_H__ */ diff --git a/deps/uber-graph/uber-window.c b/deps/uber-graph/uber-window.c new file mode 100644 index 00000000..989f3374 --- /dev/null +++ b/deps/uber-graph/uber-window.c @@ -0,0 +1,330 @@ +/* uber-window.c + * + * Copyright (C) 2010 Christian Hergert + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include "uber-window.h" + +/** + * SECTION:uber-window.h + * @title: UberWindow + * @short_description: + * + * Section overview. + */ + + +struct _UberWindowPrivate +{ + gint graph_count; + GList *graphs; + GtkWidget *notebook; + GtkWidget *table; +}; +G_DEFINE_TYPE_WITH_PRIVATE(UberWindow, uber_window, GTK_TYPE_WINDOW) + +/** + * uber_window_new: + * + * Creates a new instance of #UberWindow. + * + * Returns: the newly created instance of #UberWindow. + * Side effects: None. + */ +GtkWidget* +uber_window_new (void) +{ + UberWindow *window; + + window = g_object_new(UBER_TYPE_WINDOW, NULL); + return GTK_WIDGET(window); +} + +/** + * uber_window_show_labels: + * @window: A #UberWindow. + * + * XXX + * + * Returns: None. + * Side effects: None. + */ +void +uber_window_show_labels (UberWindow *window, /* IN */ + UberGraph *graph) /* IN */ +{ + UberWindowPrivate *priv; + GtkWidget *labels; + GtkWidget *align; + GList *list; + gboolean show; + + g_return_if_fail(UBER_IS_WINDOW(window)); + g_return_if_fail(UBER_IS_GRAPH(graph)); + + priv = window->priv; + /* + * Get the widgets labels. + */ + labels = uber_graph_get_labels(graph); + /* + * Show/hide ticks and labels. + */ + show = !!labels; + if (labels) { + align = gtk_bin_get_child(GTK_BIN(labels)); + list = gtk_container_get_children(GTK_CONTAINER(align)); + if (list) { + gtk_widget_show(labels); + } else { + gtk_widget_hide(labels); + show = FALSE; + } + g_list_free(list); + } + if (graph == (gpointer)g_list_last(priv->graphs)) { + show = TRUE; + } + uber_graph_set_show_xlabels(graph, show); + /* + * Hide labels/xlabels for other graphs. + */ + for (list = priv->graphs; list && list->next; list = list->next) { + if (list->data != graph) { + uber_graph_set_show_xlabels(list->data, FALSE); + labels = uber_graph_get_labels(list->data); + if (labels) { + gtk_widget_hide(labels); + } + } + } + /* + * Ensure the last graph always has labels. + */ + if (list) { + uber_graph_set_show_xlabels(UBER_GRAPH(list->data), TRUE); + } +} + +/** + * uber_window_hide_labels: + * @window: A #UberWindow. + * + * XXX + * + * Returns: None. + * Side effects: None. + */ +void +uber_window_hide_labels (UberWindow *window, /* IN */ + UberGraph *graph) /* IN */ +{ + UberWindowPrivate *priv; + GtkWidget *labels; + gboolean show; + + g_return_if_fail(UBER_IS_WINDOW(window)); + g_return_if_fail(UBER_IS_GRAPH(graph)); + + priv = window->priv; + labels = uber_graph_get_labels(graph); + if (labels) { + gtk_widget_hide(labels); + } + show = g_list_last(priv->graphs) == (gpointer)graph; + uber_graph_set_show_xlabels(graph, show); +} + +static gboolean +uber_window_graph_button_press_event (GtkWidget *widget, /* IN */ + GdkEventButton *button, /* IN */ + UberWindow *window) /* IN */ +{ + GtkWidget *labels; + + g_return_val_if_fail(UBER_IS_WINDOW(window), FALSE); + g_return_val_if_fail(UBER_IS_GRAPH(widget), FALSE); + + switch (button->button) { + case 1: /* Left click */ + labels = uber_graph_get_labels(UBER_GRAPH(widget)); + if (gtk_widget_get_visible(labels)) { + uber_window_hide_labels(window, UBER_GRAPH(widget)); + } else { + uber_window_show_labels(window, UBER_GRAPH(widget)); + } + break; + default: + break; + } + return FALSE; +} + +/** + * uber_window_add_graph: + * @window: A #UberWindow. + * + * XXX + * + * Returns: None. + * Side effects: None. + */ +void +uber_window_add_graph (UberWindow *window, /* IN */ + UberGraph *graph, /* IN */ + const gchar *title) /* IN */ +{ + UberWindowPrivate *priv; + GtkWidget *vbox; + GtkWidget *hbox; + GtkWidget *label; + GtkWidget *labels; + gchar *formatted; + gint left_attach; + gint top_attach; + + g_return_if_fail(UBER_IS_WINDOW(window)); + + priv = window->priv; + /* + * Format title string. + */ + formatted = g_markup_printf_escaped("%s", title); + /* + * Create container for graph. + */ + vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); + hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 3); + label = gtk_label_new(NULL); + labels = uber_graph_get_labels(graph); + gtk_label_set_markup(GTK_LABEL(label), formatted); + gtk_label_set_angle(GTK_LABEL(label), -270.); + gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, TRUE, 0); + gtk_box_pack_start(GTK_BOX(vbox), GTK_WIDGET(graph), TRUE, TRUE, 0); + gtk_box_pack_start(GTK_BOX(hbox), vbox, TRUE, TRUE, 0); + if (labels) { + gtk_box_pack_start(GTK_BOX(vbox), labels, FALSE, TRUE, 0); + } + gtk_widget_show(label); + gtk_widget_show(hbox); + gtk_widget_show(vbox); + /* + * Append graph to table. + */ + left_attach = 0; + top_attach = priv->graph_count; // % 4; + gtk_grid_attach(GTK_GRID(priv->table), hbox, + left_attach, + top_attach, + 1, + 1); + /* + * Attach signal to show ticks when label is shown. + */ + g_signal_connect_after(graph, + "button-press-event", + G_CALLBACK(uber_window_graph_button_press_event), + window); + priv->graphs = g_list_append(priv->graphs, graph); + /* + * Cleanup. + */ + g_free(formatted); + priv->graph_count++; +} + +/** + * uber_window_finalize: + * @object: A #UberWindow. + * + * Finalizer for a #UberWindow instance. Frees any resources held by + * the instance. + * + * Returns: None. + * Side effects: None. + */ +static void +uber_window_finalize (GObject *object) /* IN */ +{ + UberWindowPrivate *priv; + + priv = UBER_WINDOW(object)->priv; + g_list_free(priv->graphs); + G_OBJECT_CLASS(uber_window_parent_class)->finalize(object); +} + +/** + * uber_window_class_init: + * @klass: A #UberWindowClass. + * + * Initializes the #UberWindowClass and prepares the vtable. + * + * Returns: None. + * Side effects: None. + */ +static void +uber_window_class_init (UberWindowClass *klass) /* IN */ +{ + GObjectClass *object_class; + + object_class = G_OBJECT_CLASS(klass); + object_class->finalize = uber_window_finalize; +} + +/** + * uber_window_init: + * @window: A #UberWindow. + * + * Initializes the newly created #UberWindow instance. + * + * Returns: None. + * Side effects: None. + */ +static void +uber_window_init (UberWindow *window) /* IN */ +{ + UberWindowPrivate *priv; + + window->priv = uber_window_get_instance_private(window); + + /* + * Initialize defaults. + */ + priv = window->priv; + gtk_window_set_title(GTK_WINDOW(window), "Uber Graph"); + gtk_window_set_default_size(GTK_WINDOW(window), 750, 550); + gtk_container_set_border_width(GTK_CONTAINER(window), 12); + /* + * Create notebook container for pages. + */ + priv->notebook = gtk_notebook_new(); + gtk_notebook_set_show_border(GTK_NOTEBOOK(priv->notebook), FALSE); + gtk_notebook_set_show_tabs(GTK_NOTEBOOK(priv->notebook), FALSE); + gtk_container_add(GTK_CONTAINER(window), priv->notebook); + gtk_widget_show(priv->notebook); + /* + * Create table for graphs. + */ + priv->table = gtk_grid_new(); + gtk_grid_set_row_homogeneous(GTK_GRID(priv->table), TRUE); + gtk_grid_set_column_homogeneous(GTK_GRID(priv->table), TRUE); + gtk_notebook_append_page(GTK_NOTEBOOK(priv->notebook), priv->table, NULL); + gtk_widget_show(priv->table); +} diff --git a/deps/uber-graph/uber-window.h b/deps/uber-graph/uber-window.h new file mode 100644 index 00000000..e913e852 --- /dev/null +++ b/deps/uber-graph/uber-window.h @@ -0,0 +1,65 @@ +/* uber-window.h + * + * Copyright (C) 2010 Christian Hergert + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#ifndef __UBER_WINDOW_H__ +#define __UBER_WINDOW_H__ + +#include + +#include "uber-graph.h" + +G_BEGIN_DECLS + +#define UBER_TYPE_WINDOW (uber_window_get_type()) +#define UBER_WINDOW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), UBER_TYPE_WINDOW, UberWindow)) +#define UBER_WINDOW_CONST(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), UBER_TYPE_WINDOW, UberWindow const)) +#define UBER_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), UBER_TYPE_WINDOW, UberWindowClass)) +#define UBER_IS_WINDOW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), UBER_TYPE_WINDOW)) +#define UBER_IS_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), UBER_TYPE_WINDOW)) +#define UBER_WINDOW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), UBER_TYPE_WINDOW, UberWindowClass)) + +typedef struct _UberWindow UberWindow; +typedef struct _UberWindowClass UberWindowClass; +typedef struct _UberWindowPrivate UberWindowPrivate; + +struct _UberWindow +{ + GtkWindow parent; + + /*< private >*/ + UberWindowPrivate *priv; +}; + +struct _UberWindowClass +{ + GtkWindowClass parent_class; +}; + +GType uber_window_get_type (void) G_GNUC_CONST; +GtkWidget* uber_window_new (void); +void uber_window_add_graph (UberWindow *window, + UberGraph *graph, + const gchar *title); +void uber_window_show_labels (UberWindow *window, + UberGraph *graph); +void uber_window_hide_labels (UberWindow *window, + UberGraph *graph); + +G_END_DECLS + +#endif /* __UBER_WINDOW_H__ */ diff --git a/deps/uber-graph/uber.h b/deps/uber-graph/uber.h new file mode 100644 index 00000000..b101dfd7 --- /dev/null +++ b/deps/uber-graph/uber.h @@ -0,0 +1,30 @@ +/* uber.h + * + * Copyright (C) 2010 Christian Hergert + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#ifndef __UBER_H__ +#define __UBER_H__ + +#include "uber-graph.h" +#include "uber-line-graph.h" +#include "uber-heat-map.h" +#include "uber-range.h" +#include "uber-scatter.h" +#include "uber-scale.h" +#include "uber-window.h" + +#endif /* __UBER_H__ */ diff --git a/doc/index.hlp b/doc/index.hlp deleted file mode 100644 index 649a7a4a..00000000 --- a/doc/index.hlp +++ /dev/null @@ -1,35 +0,0 @@ -# HardInfo Documentation - -## Introduction - -HardInfo can gather information about your system's hardware and operating system, perform benchmarks, and generate printable reports either in HTML or in plain text formats. - -## Feature Overview - -* Obtains information about basic hardware items; -* Obtains information about basic operating system items; -* Performs CPU and FPU benchmarks; -* Allows [network-updater.hlp synchronization of benchmark results] with other HardInfo users; -* Some tables can be [network-updater.hlp updated] from the Internet; -* Can be used either in local or in [remote.hlp remote] mode; -* Generates repots in HTML or plain text formats; -* Can be used either with a GTK+ GUI or on a terminal. - -## Using - -* [report-generation.hlp Generating Reports] -* [network-updater.hlp Using the Network Updater] -* [remote.hlp Obtaining Information from a Remote Machine] -* [benchmark.hlp Performing and Understanding Benchmarks] -* [command-line.hlp Using HardInfo from the command line] - -## Improving - -* [bug-reporting.hlp How to Report Bugs] -* [feature-requests.hlp How to Request a Feature] -* [http://hardinfo.org/developer Developer Documentation] - -## Following - -* [https://twitter.com/hardinfo Twitter] (for GitHub commits) -* [http://lists.hardinfo.org Mailing Lists] diff --git a/hardinfo.1 b/hardinfo.1 deleted file mode 100644 index 2425457f..00000000 --- a/hardinfo.1 +++ /dev/null @@ -1,69 +0,0 @@ -.\" Manpage for hardinfo. -.\" https://github.com/lpereira/hardinfo/. -.TH HARDINFO "1" "July 2017" "0.6" "User Commands" -.SH NAME -\fBHardInfo\fR \- System profiler and benchmark for Linux systems. -.SH USAGE -\fBhardinfo\fR [OPTION...] -.SH DESCRIPTION -Is a system profiler and benchmark for Linux systems, that gathers information about the -hardware and operating system, performs benchmarks, and generates reports. -The information gathered is presented on an simple and intuitive GUI. - -Information is grouped in \fIfour main groups\fR: \fBComputer\fR, \fBDevices\fR, \fBNetwork\fR, and \fBBenchmarks\fR. - -The \fBComputer group\fR contains mostly information about basic software. This includes but -is not limited to information about the operating system (kernel version, C library, -distribution, etc.), kernel modules, locale information, filesystem usage, users/groups, and -development tools. - -The \fBDevices group\fR contains information about the hardware, as detected by the operating -system. \fBHardinfo\fR is incapable of detecting hardware by itself, it merely lists what the -operating system was able to find. This includes, but does not limit to, information about the -processor (including cache layout, known bugs, and feature flags with their explanation), -devices (such as USB, PCI, and Input devices), among other things. - -The \fBNetwork group\fR lists information about network interfaces, routing table, DNS servers, -and other networking-related topics. - -The \fBBenchmarks group\fR allow performing simple benchmarks to test CPU and FPU capabilities, -as well as some of the graphical user interface capabilities as well. In previous versions, it -was possible to send the benchmark results to a central server, so it was possible to compare -the benchmarks with other \fBHardinfo\fR users; this service has been deactivated in the mean time. - -\fIReports\fR can be generated either by invoking \fBHardinfo\fR with special command-line parameters -(see below), or by clicking the "Generate Report" button in the GUI. Reports can be customized -in the GUI and saved in either HTML or plain text formats. - -.SH OPTIONS -.TP -\fB\-h\fR, \fB\-\-help\fR -Show help options -.TP -\fB\-r\fR, \fB\-\-generate\-report\fR -creates a report and prints to standard output -.TP -\fB\-f\fR, \fB\-\-report\-format\fR -chooses a report format (text, html) -.TP -\fB\-b\fR, \fB\-\-run\-benchmark\fR -run benchmark; requires benchmark.so to be loaded -.TP -\fB\-l\fR, \fB\-\-list\-modules\fR -lists modules -.TP -\fB\-m\fR, \fB\-\-load\-module\fR -specify module to load -.TP -\fB\-a\fR, \fB\-\-autoload\-deps\fR -automatically load module dependencies -.TP -\fB\-v\fR, \fB\-\-version\fR -shows program version and quit -.SH AUTHORS/CONTRIBUTORS -For current maintainers committing, see AUTHORS.md file and more info are at \fIhttps://github.com/lpereira/hardinfo/graphs/contributors\fR . -More contributions are in each files source headers. -.SH COPYRIGHT -\fBHardInfo\fR its Copyright \(co 2003, 2009\-2017 Leandro A. F. Pereira \fI\fR. -This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -This manpage was created by PICCORO Lenz McKAY \fI\fR for the hardinfo project. diff --git a/hardinfo.desktop.cmake b/hardinfo.desktop.cmake deleted file mode 100644 index 53dbee55..00000000 --- a/hardinfo.desktop.cmake +++ /dev/null @@ -1,15 +0,0 @@ -[Desktop Entry] -Name=System Profiler and Benchmark -Name[es]=Informacion y Rendimiento del Sistema -Name[fr]=Informations et Benchmarks du Système -Name[pt_BR]=Informações e Testes do Sistema -Name[ru]=Информация о системе и тестирование -Comment=Displays system information -Comment[ru]=Показывает информацию о системе -Exec=@CMAKE_INSTALL_FULL_BINDIR@/hardinfo -Icon=@CMAKE_INSTALL_FULL_DATAROOTDIR@/hardinfo/pixmaps/logo.png -Terminal=false -Type=Application -StartupNotify=true -Categories=System; -Keywords=linux;kernel;system;hardware;cpu;processor;capabilities;frequency;memory;ram;board;resources;sensors;devices;usb;pci;display;network;benchmark;test; diff --git a/hardinfo/binreloc.c b/hardinfo/binreloc.c deleted file mode 100644 index f47a3fae..00000000 --- a/hardinfo/binreloc.c +++ /dev/null @@ -1,668 +0,0 @@ -/* - * BinReloc - a library for creating relocatable executables - * Written by: Hongli Lai - * http://autopackage.org/ - * - * This source code is public domain. You can relicense this code - * under whatever license you want. - * - * See http://autopackage.org/docs/binreloc/ for - * more information and how to use this. - */ - -#ifndef __BINRELOC_C__ -#define __BINRELOC_C__ - -#include -#include -#include -#include -#include -#include -#include -#include "binreloc.h" -#include "config.h" - -G_BEGIN_DECLS -/** @internal - * Find the canonical filename of the executable. Returns the filename - * (which must be freed) or NULL on error. If the parameter 'error' is - * not NULL, the error code will be stored there, if an error occured. - */ -static char *_br_find_exe(GbrInitError * error) -{ - char *path, *path2, *line, *result; - size_t buf_size; - ssize_t size; - struct stat stat_buf; - FILE *f; - - /* Read from /proc/self/exe (symlink) */ - if (sizeof(path) > SSIZE_MAX) - buf_size = SSIZE_MAX - 1; - else - buf_size = PATH_MAX - 1; - path = (char *) g_try_malloc(buf_size); - if (path == NULL) { - /* Cannot allocate memory. */ - if (error) - *error = GBR_INIT_ERROR_NOMEM; - return NULL; - } - path2 = (char *) g_try_malloc(buf_size); - if (path2 == NULL) { - /* Cannot allocate memory. */ - if (error) - *error = GBR_INIT_ERROR_NOMEM; - g_free(path); - return NULL; - } - - strncpy(path2, "/proc/self/exe", buf_size - 1); - - while (1) { - int i; - - size = readlink(path2, path, buf_size - 1); - if (size == -1) { - /* Error. */ - g_free(path2); - break; - } - - /* readlink() success. */ - path[size] = '\0'; - - /* Check whether the symlink's target is also a symlink. - * We want to get the final target. */ - i = stat(path, &stat_buf); - if (i == -1) { - /* Error. */ - g_free(path2); - break; - } - - /* stat() success. */ - if (!S_ISLNK(stat_buf.st_mode)) { - /* path is not a symlink. Done. */ - g_free(path2); - return path; - } - - /* path is a symlink. Continue loop and resolve this. */ - strncpy(path, path2, buf_size - 1); - } - - - /* readlink() or stat() failed; this can happen when the program is - * running in Valgrind 2.2. Read from /proc/self/maps as fallback. */ - - buf_size = PATH_MAX + 128; - line = (char *) g_try_realloc(path, buf_size); - if (line == NULL) { - /* Cannot allocate memory. */ - g_free(path); - if (error) - *error = GBR_INIT_ERROR_NOMEM; - return NULL; - } - - f = fopen("/proc/self/maps", "r"); - if (f == NULL) { - g_free(line); - if (error) - *error = GBR_INIT_ERROR_OPEN_MAPS; - return NULL; - } - - /* The first entry should be the executable name. */ - result = fgets(line, (int) buf_size, f); - if (result == NULL) { - fclose(f); - g_free(line); - if (error) - *error = GBR_INIT_ERROR_READ_MAPS; - return NULL; - } - - /* Get rid of newline character. */ - buf_size = strlen(line); - if (buf_size <= 0) { - /* Huh? An empty string? */ - fclose(f); - g_free(line); - if (error) - *error = GBR_INIT_ERROR_INVALID_MAPS; - return NULL; - } - if (line[buf_size - 1] == 10) - line[buf_size - 1] = 0; - - /* Extract the filename; it is always an absolute path. */ - path = strchr(line, '/'); - - /* Sanity check. */ - if (strstr(line, " r-xp ") == NULL || path == NULL) { - fclose(f); - g_free(line); - if (error) - *error = GBR_INIT_ERROR_INVALID_MAPS; - return NULL; - } - - path = g_strdup(path); - g_free(line); - fclose(f); - return path; -} - - -/** @internal - * Find the canonical filename of the executable which owns symbol. - * Returns a filename which must be freed, or NULL on error. - */ -static char *_br_find_exe_for_symbol(const void *symbol, - GbrInitError * error) -{ -#define SIZE PATH_MAX + 100 - FILE *f; - size_t address_string_len; - char *address_string, line[SIZE], *found; - - if (symbol == NULL) - return (char *) NULL; - - f = fopen("/proc/self/maps", "r"); - if (f == NULL) - return (char *) NULL; - - address_string_len = 4; - address_string = (char *) g_try_malloc(address_string_len); - found = (char *) NULL; - - while (!feof(f)) { - char *start_addr, *end_addr, *end_addr_end, *file; - void *start_addr_p, *end_addr_p; - size_t len; - - if (fgets(line, SIZE, f) == NULL) - break; - - /* Sanity check. */ - if (strstr(line, " r-xp ") == NULL || strchr(line, '/') == NULL) - continue; - - /* Parse line. */ - start_addr = line; - end_addr = strchr(line, '-'); - file = strchr(line, '/'); - - /* More sanity check. */ - if (!(file > end_addr && end_addr != NULL && end_addr[0] == '-')) - continue; - - end_addr[0] = '\0'; - end_addr++; - end_addr_end = strchr(end_addr, ' '); - if (end_addr_end == NULL) - continue; - - end_addr_end[0] = '\0'; - len = strlen(file); - if (len == 0) - continue; - if (file[len - 1] == '\n') - file[len - 1] = '\0'; - - /* Get rid of "(deleted)" from the filename. */ - len = strlen(file); - if (len > 10 && strcmp(file + len - 10, " (deleted)") == 0) - file[len - 10] = '\0'; - - /* I don't know whether this can happen but better safe than sorry. */ - len = strlen(start_addr); - if (len != strlen(end_addr)) - continue; - - - /* Transform the addresses into a string in the form of 0xdeadbeef, - * then transform that into a pointer. */ - if (address_string_len < len + 3) { - address_string_len = len + 3; - address_string = - (char *) g_try_realloc(address_string, address_string_len); - } - - memcpy(address_string, "0x", 2); - memcpy(address_string + 2, start_addr, len); - address_string[2 + len] = '\0'; - sscanf(address_string, "%p", &start_addr_p); - - memcpy(address_string, "0x", 2); - memcpy(address_string + 2, end_addr, len); - address_string[2 + len] = '\0'; - sscanf(address_string, "%p", &end_addr_p); - - - if (symbol >= start_addr_p && symbol < end_addr_p) { - found = file; - break; - } - } - - g_free(address_string); - fclose(f); - - if (found == NULL) - return (char *) NULL; - else - return g_strdup(found); -} - - -static gchar *exe = NULL; - -static void set_gerror(GError ** error, GbrInitError errcode); - - -/** Initialize the BinReloc library (for applications). - * - * This function must be called before using any other BinReloc functions. - * It attempts to locate the application's canonical filename. - * - * @note If you want to use BinReloc for a library, then you should call - * gbr_init_lib() instead. - * - * @param error If BinReloc failed to initialize, then the error report will - * be stored in this variable. Set to NULL if you don't want an - * error report. See the #GbrInitError for a list of error - * codes. - * - * @returns TRUE on success, FALSE if BinReloc failed to initialize. - */ -gboolean gbr_init(GError ** error) -{ - GbrInitError errcode = 0; - - /* Locate the application's filename. */ - exe = _br_find_exe(&errcode); - if (exe != NULL) - /* Success! */ - return TRUE; - else { - /* Failed :-( */ - set_gerror(error, errcode); - return FALSE; - } -} - - -/** Initialize the BinReloc library (for libraries). - * - * This function must be called before using any other BinReloc functions. - * It attempts to locate the calling library's canonical filename. - * - * @note The BinReloc source code MUST be included in your library, or this - * function won't work correctly. - * - * @returns TRUE on success, FALSE if a filename cannot be found. - */ -gboolean gbr_init_lib(GError ** error) -{ - GbrInitError errcode = 0; - - exe = _br_find_exe_for_symbol((const void *) "", &errcode); - if (exe != NULL) - /* Success! */ - return TRUE; - else { - /* Failed :-( */ - set_gerror(error, errcode); - return exe != NULL; - } -} - - -static void set_gerror(GError ** error, GbrInitError errcode) -{ - gchar *error_message; - - if (error == NULL) - return; - - switch (errcode) { - case GBR_INIT_ERROR_NOMEM: - error_message = "Cannot allocate memory."; - break; - case GBR_INIT_ERROR_OPEN_MAPS: - error_message = "Unable to open /proc/self/maps for reading."; - break; - case GBR_INIT_ERROR_READ_MAPS: - error_message = "Unable to read from /proc/self/maps."; - break; - case GBR_INIT_ERROR_INVALID_MAPS: - error_message = "The file format of /proc/self/maps is invalid."; - break; - case GBR_INIT_ERROR_DISABLED: - error_message = "Binary relocation support is disabled."; - break; - default: - error_message = "Unknown error."; - break; - }; - g_set_error(error, g_quark_from_static_string("GBinReloc"), - errcode, "%s", error_message); -} - - -/** Find the canonical filename of the current application. - * - * @param default_exe A default filename which will be used as fallback. - * @returns A string containing the application's canonical filename, - * which must be freed when no longer necessary. If BinReloc is - * not initialized, or if the initialization function failed, - * then a copy of default_exe will be returned. If default_exe - * is NULL, then NULL will be returned. - */ -gchar *gbr_find_exe(const gchar * default_exe) -{ - if (exe == NULL) { - /* BinReloc is not initialized. */ - if (default_exe != NULL) - return g_strdup(default_exe); - else - return NULL; - } - return g_strdup(exe); -} - - -/** Locate the directory in which the current application is installed. - * - * The prefix is generated by the following pseudo-code evaluation: - * \code - * dirname(exename) - * \endcode - * - * @param default_dir A default directory which will used as fallback. - * @return A string containing the directory, which must be freed when no - * longer necessary. If BinReloc is not initialized, or if the - * initialization function failed, then a copy of default_dir - * will be returned. If default_dir is NULL, then NULL will be - * returned. - */ -gchar *gbr_find_exe_dir(const gchar * default_dir) -{ - if (exe == NULL) { - /* BinReloc not initialized. */ - if (default_dir != NULL) - return g_strdup(default_dir); - else - return NULL; - } - - return g_path_get_dirname(exe); -} - - -/** Locate the prefix in which the current application is installed. - * - * The prefix is generated by the following pseudo-code evaluation: - * \code - * dirname(dirname(exename)) - * \endcode - * - * @param default_prefix A default prefix which will used as fallback. - * @return A string containing the prefix, which must be freed when no - * longer necessary. If BinReloc is not initialized, or if the - * initialization function failed, then a copy of default_prefix - * will be returned. If default_prefix is NULL, then NULL will be - * returned. - */ -gchar *gbr_find_prefix(const gchar * default_prefix) -{ - gchar *dir1, *dir2; - - if (exe == NULL) { - /* BinReloc not initialized. */ - if (default_prefix != NULL) - return g_strdup(default_prefix); - else - return NULL; - } - - dir1 = g_path_get_dirname(exe); - dir2 = g_path_get_dirname(dir1); - g_free(dir1); - return dir2; -} - - -/** Locate the application's binary folder. - * - * The path is generated by the following pseudo-code evaluation: - * \code - * prefix + "/bin" - * \endcode - * - * @param default_bin_dir A default path which will used as fallback. - * @return A string containing the bin folder's path, which must be freed when - * no longer necessary. If BinReloc is not initialized, or if the - * initialization function failed, then a copy of default_bin_dir will - * be returned. If default_bin_dir is NULL, then NULL will be returned. - */ -gchar *gbr_find_bin_dir(const gchar * default_bin_dir) -{ - gchar *prefix, *dir; - - prefix = gbr_find_prefix(NULL); - if (prefix == NULL) { - /* BinReloc not initialized. */ - if (default_bin_dir != NULL) - return g_strdup(default_bin_dir); - else - return NULL; - } - - dir = g_build_filename(prefix, "bin", NULL); - g_free(prefix); - return dir; -} - - -/** Locate the application's superuser binary folder. - * - * The path is generated by the following pseudo-code evaluation: - * \code - * prefix + "/sbin" - * \endcode - * - * @param default_sbin_dir A default path which will used as fallback. - * @return A string containing the sbin folder's path, which must be freed when - * no longer necessary. If BinReloc is not initialized, or if the - * initialization function failed, then a copy of default_sbin_dir will - * be returned. If default_bin_dir is NULL, then NULL will be returned. - */ -gchar *gbr_find_sbin_dir(const gchar * default_sbin_dir) -{ - gchar *prefix, *dir; - - prefix = gbr_find_prefix(NULL); - if (prefix == NULL) { - /* BinReloc not initialized. */ - if (default_sbin_dir != NULL) - return g_strdup(default_sbin_dir); - else - return NULL; - } - - dir = g_build_filename(prefix, "sbin", NULL); - g_free(prefix); - return dir; -} - - -/** Locate the application's data folder. - * - * The path is generated by the following pseudo-code evaluation: - * \code - * prefix + "/share" - * \endcode - * - * @param default_data_dir A default path which will used as fallback. - * @return A string containing the data folder's path, which must be freed when - * no longer necessary. If BinReloc is not initialized, or if the - * initialization function failed, then a copy of default_data_dir - * will be returned. If default_data_dir is NULL, then NULL will be - * returned. - */ -gchar *gbr_find_data_dir(const gchar * default_data_dir) -{ - gchar *prefix, *dir; - - prefix = gbr_find_prefix(NULL); - if (prefix == NULL) { - /* BinReloc not initialized. */ - if (default_data_dir != NULL) - return g_strdup(default_data_dir); - else - return NULL; - } - - dir = g_build_filename(prefix, "share", NULL); - g_free(prefix); - return dir; -} - - -/** Locate the application's localization folder. - * - * The path is generated by the following pseudo-code evaluation: - * \code - * prefix + "/share/locale" - * \endcode - * - * @param default_locale_dir A default path which will used as fallback. - * @return A string containing the localization folder's path, which must be freed when - * no longer necessary. If BinReloc is not initialized, or if the - * initialization function failed, then a copy of default_locale_dir will be returned. - * If default_locale_dir is NULL, then NULL will be returned. - */ -gchar *gbr_find_locale_dir(const gchar * default_locale_dir) -{ - gchar *data_dir, *dir; - - data_dir = gbr_find_data_dir(NULL); - if (data_dir == NULL) { - /* BinReloc not initialized. */ - if (default_locale_dir != NULL) - return g_strdup(default_locale_dir); - else - return NULL; - } - - dir = g_build_filename(data_dir, "locale", NULL); - g_free(data_dir); - return dir; -} - - -/** Locate the application's library folder. - * - * The path is generated by the following pseudo-code evaluation: - * \code - * prefix + "/lib" - * \endcode - * - * @param default_lib_dir A default path which will used as fallback. - * @return A string containing the library folder's path, which must be freed when - * no longer necessary. If BinReloc is not initialized, or if the - * initialization function failed, then a copy of default_lib_dir will be returned. - * If default_lib_dir is NULL, then NULL will be returned. - */ -gchar *gbr_find_lib_dir(const gchar * default_lib_dir) -{ - gchar *prefix, *dir; - - prefix = gbr_find_prefix(NULL); - if (prefix == NULL) { - /* BinReloc not initialized. */ - if (default_lib_dir != NULL) - return g_strdup(default_lib_dir); - else - return NULL; - } - - dir = g_build_filename(prefix, LIBDIR, NULL); - - g_free(prefix); - return dir; -} - - -/** Locate the application's libexec folder. - * - * The path is generated by the following pseudo-code evaluation: - * \code - * prefix + "/libexec" - * \endcode - * - * @param default_libexec_dir A default path which will used as fallback. - * @return A string containing the libexec folder's path, which must be freed when - * no longer necessary. If BinReloc is not initialized, or if the initialization - * function failed, then a copy of default_libexec_dir will be returned. - * If default_libexec_dir is NULL, then NULL will be returned. - */ -gchar *gbr_find_libexec_dir(const gchar * default_libexec_dir) -{ - gchar *prefix, *dir; - - prefix = gbr_find_prefix(NULL); - if (prefix == NULL) { - /* BinReloc not initialized. */ - if (default_libexec_dir != NULL) - return g_strdup(default_libexec_dir); - else - return NULL; - } - - dir = g_build_filename(prefix, "libexec", NULL); - g_free(prefix); - return dir; -} - - -/** Locate the application's configuration files folder. - * - * The path is generated by the following pseudo-code evaluation: - * \code - * prefix + "/etc" - * \endcode - * - * @param default_etc_dir A default path which will used as fallback. - * @return A string containing the etc folder's path, which must be freed when - * no longer necessary. If BinReloc is not initialized, or if the initialization - * function failed, then a copy of default_etc_dir will be returned. - * If default_etc_dir is NULL, then NULL will be returned. - */ -gchar *gbr_find_etc_dir(const gchar * default_etc_dir) -{ - gchar *prefix, *dir; - - prefix = gbr_find_prefix(NULL); - if (prefix == NULL) { - /* BinReloc not initialized. */ - if (default_etc_dir != NULL) - return g_strdup(default_etc_dir); - else - return NULL; - } - - dir = g_build_filename(prefix, "etc", NULL); - g_free(prefix); - return dir; -} - - -G_END_DECLS -#endif /* __BINRELOC_C__ */ diff --git a/hardinfo/cpu_util.c b/hardinfo/cpu_util.c deleted file mode 100644 index a598d2ed..00000000 --- a/hardinfo/cpu_util.c +++ /dev/null @@ -1,231 +0,0 @@ -/* - * HardInfo - Displays System Information - * Copyright (C) 2003-2006 Leandro A. F. Pereira - * This file by Burt P. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, version 2. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include -#include "hardinfo.h" -#include "cpu_util.h" - -#include "cpubits.c" - -#define CPU_TOPO_NULL -9877 - -const gchar *byte_order_str() { -#if G_BYTE_ORDER == G_LITTLE_ENDIAN - return _("Little Endian"); -#else - return _("Big Endian"); -#endif -} - -int processor_has_flag(gchar * strflags, gchar * strflag) -{ - gchar **flags; - gint ret = 0; - if (strflags == NULL || strflag == NULL) - return 0; - flags = g_strsplit(strflags, " ", 0); - ret = g_strv_contains((const gchar * const *)flags, strflag); - g_strfreev(flags); - return ret; -} - -gchar* get_cpu_str(const gchar* file, gint cpuid) { - gchar *tmp0 = NULL; - gchar *tmp1 = NULL; - tmp0 = g_strdup_printf("/sys/devices/system/cpu/cpu%d/%s", cpuid, file); - g_file_get_contents(tmp0, &tmp1, NULL, NULL); - g_free(tmp0); - return tmp1; -} - -gint get_cpu_int(const char* item, int cpuid, int null_val) { - gchar *fc = NULL; - int ret = null_val; - fc = get_cpu_str(item, cpuid); - if (fc) { - ret = atol(fc); - g_free(fc); - } - return ret; -} - -/* cpubits is 32768 bits long - * core_ids are not unique among physical_ids - * hack up cpubits into 128 packs of 256 cores - * to make cores unique in cpubits */ -#define MAX_CORES_PER_PACK 256 -#define MAX_PACKS 128 - -int cpu_procs_cores_threads(int *p, int *c, int *t) { - cpubits *threads, *cores, *packs; - char *tmp; - int i, m, pack_id, core_id; - g_file_get_contents("/sys/devices/system/cpu/present", &tmp, NULL, NULL); - if (tmp != NULL) { - threads = cpubits_from_str(tmp); - cores = cpubits_from_str(""); - packs = cpubits_from_str(""); - m = cpubits_max(threads); - for (i = 0; i <= m; i++) { - pack_id = get_cpu_int("topology/physical_package_id", i, CPU_TOPO_NULL); - core_id = get_cpu_int("topology/core_id", i, CPU_TOPO_NULL); - if (pack_id < 0) pack_id = 0; - CPUBIT_SET(packs, pack_id); - if (core_id >= 0) { CPUBIT_SET(cores, (pack_id * MAX_CORES_PER_PACK) + core_id ); } - } - *t = cpubits_count(threads); - *c = cpubits_count(cores); - *p = cpubits_count(packs); - if (!*c) *c = 1; - if (!*p) *p = 1; - free(threads); - free(cores); - free(packs); - free(tmp); - return 1; - } else { - *p = *c = *t = -1; - return 0; - } -} - -cpufreq_data *cpufreq_new(gint id) -{ - cpufreq_data *cpufd; - cpufd = malloc(sizeof(cpufreq_data)); - if (cpufd) { - memset(cpufd, 0, sizeof(cpufreq_data)); - cpufd->id = id; - cpufreq_update(cpufd, 0); - } - return cpufd; -} - -void cpufreq_update(cpufreq_data *cpufd, int cur_only) -{ - if (cpufd) { - cpufd->cpukhz_cur = get_cpu_int("cpufreq/scaling_cur_freq", cpufd->id, 0); - if (cur_only) return; - cpufd->scaling_driver = get_cpu_str("cpufreq/scaling_driver", cpufd->id); - cpufd->scaling_governor = get_cpu_str("cpufreq/scaling_governor", cpufd->id); - cpufd->transition_latency = get_cpu_int("cpufreq/cpuinfo_transition_latency", cpufd->id, 0); - cpufd->cpukhz_min = get_cpu_int("cpufreq/scaling_min_freq", cpufd->id, 0); - cpufd->cpukhz_max = get_cpu_int("cpufreq/scaling_max_freq", cpufd->id, 0); - if (cpufd->scaling_driver == NULL) cpufd->scaling_driver = g_strdup("(Unknown)"); - if (cpufd->scaling_governor == NULL) cpufd->scaling_governor = g_strdup("(Unknown)"); - - /* x86 uses freqdomain_cpus, all others use affected_cpus */ - cpufd->shared_list = get_cpu_str("cpufreq/freqdomain_cpus", cpufd->id); - if (cpufd->shared_list == NULL) cpufd->shared_list = get_cpu_str("cpufreq/affected_cpus", cpufd->id); - if (cpufd->shared_list == NULL) cpufd->shared_list = g_strdup_printf("%d", cpufd->id); - } -} - -void cpufreq_free(cpufreq_data *cpufd) -{ - if (cpufd) { - g_free(cpufd->scaling_driver); - g_free(cpufd->scaling_governor); - } - g_free(cpufd); -} - -cpu_topology_data *cputopo_new(gint id) -{ - cpu_topology_data *cputd; - cputd = malloc(sizeof(cpu_topology_data)); - if (cputd) { - memset(cputd, 0, sizeof(cpu_topology_data)); - cputd->id = id; - cputd->socket_id = get_cpu_int("topology/physical_package_id", id, CPU_TOPO_NULL); - cputd->core_id = get_cpu_int("topology/core_id", id, CPU_TOPO_NULL); - cputd->book_id = get_cpu_int("topology/book_id", id, CPU_TOPO_NULL); - cputd->drawer_id = get_cpu_int("topology/drawer_id", id, CPU_TOPO_NULL); - } - return cputd; - -} - -void cputopo_free(cpu_topology_data *cputd) -{ - g_free(cputd); -} - -gchar *cpufreq_section_str(cpufreq_data *cpufd) -{ - if (cpufd == NULL) - return g_strdup(""); - - if (cpufd->cpukhz_min || cpufd->cpukhz_max || cpufd->cpukhz_cur) { - return g_strdup_printf( - "[%s]\n" - "%s=%d %s\n" - "%s=%d %s\n" - "%s=%d %s\n" - "%s=%d %s\n" - "%s=%s\n" - "%s=%s\n", - _("Frequency Scaling"), - _("Minimum"), cpufd->cpukhz_min, _("kHz"), - _("Maximum"), cpufd->cpukhz_max, _("kHz"), - _("Current"), cpufd->cpukhz_cur, _("kHz"), - _("Transition Latency"), cpufd->transition_latency, _("ns"), - _("Governor"), cpufd->scaling_governor, - _("Driver"), cpufd->scaling_driver); - } else { - return g_strdup_printf( - "[%s]\n" - "%s=%s\n", - _("Frequency Scaling"), - _("Driver"), cpufd->scaling_driver); - } -} - -gchar *cputopo_section_str(cpu_topology_data *cputd) -{ - static const char na[] = N_("(Not Available)"); - char sock_str[64] = "", core_str[64] = ""; - char book_str[64] = "", drawer_str[64] = ""; - - if (cputd == NULL) - return g_strdup(""); - - if (cputd->socket_id != CPU_TOPO_NULL && cputd->socket_id != -1) - sprintf(sock_str, "%s=%d\n", _("Socket"), cputd->socket_id); - else - sprintf(sock_str, "%s=%s\n", _("Socket"), na); - - if (cputd->core_id != CPU_TOPO_NULL) - sprintf(core_str, "%s=%d\n", _("Core"), cputd->core_id); - else - sprintf(core_str, "%s=%s\n", _("Core"), na); - - if (cputd->book_id != CPU_TOPO_NULL) - sprintf(core_str, "%s=%d\n", _("Book"), cputd->book_id); - if (cputd->book_id != CPU_TOPO_NULL) - sprintf(core_str, "%s=%d\n", _("Drawer"), cputd->drawer_id); - - return g_strdup_printf( - "[%s]\n" - "%s=%d\n" - "%s%s%s%s", - _("Topology"), - _("ID"), cputd->id, - sock_str, core_str, book_str, drawer_str ); -} diff --git a/hardinfo/cpubits.c b/hardinfo/cpubits.c deleted file mode 100644 index 7ab03be8..00000000 --- a/hardinfo/cpubits.c +++ /dev/null @@ -1,113 +0,0 @@ -/* - * rpiz - https://github.com/bp0/rpiz - * Copyright (C) 2017 Burt P. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * - */ - -#include - -typedef uint32_t cpubits; -uint32_t cpubits_count(cpubits *b); -cpubits *cpubits_from_str(char *str); -char *cpubits_to_str(cpubits *bits, char *str, int max_len); - -#define CPUBITS_SIZE 4096 /* bytes, multiple of sizeof(uint32_t) */ -#define CPUBIT_SET(BITS, BIT) (BITS[BIT/32] |= (1 << BIT%32)) -#define CPUBIT_GET(BITS, BIT) ((BITS[BIT/32] & (1 << BIT%32)) >> BIT%32) -#define CPUBITS_CLEAR(BITS) memset(BITS, 0, CPUBITS_SIZE) - -uint32_t cpubits_count(cpubits *b) { - static const uint32_t max = CPUBITS_SIZE * 8; - uint32_t count = 0, i = 0; - while (i < max) { - count += CPUBIT_GET(b, i); - i++; - } - return count; -} - -int cpubits_max(cpubits *b) { - int i = CPUBITS_SIZE * 8 - 1; - while (i >= 0) { - if (CPUBIT_GET(b, i)) - break; - i--; - } - return i; -} - -cpubits *cpubits_from_str(char *str) { - char *v, *nv, *hy; - int r0, r1; - cpubits *newbits = malloc(CPUBITS_SIZE); - if (newbits) { - memset(newbits, 0, CPUBITS_SIZE); - if (str != NULL) { - v = (char*)str; - while ( *v != 0 ) { - nv = strchr(v, ','); /* strchrnul() */ - if (nv == NULL) nv = strchr(v, 0); /* equivalent */ - hy = strchr(v, '-'); - if (hy && hy < nv) { - r0 = strtol(v, NULL, 0); - r1 = strtol(hy + 1, NULL, 0); - } else { - r0 = r1 = strtol(v, NULL, 0); - } - for (; r0 <= r1; r0++) { - CPUBIT_SET(newbits, r0); - } - v = (*nv == ',') ? nv + 1 : nv; - } - } - } - return newbits; -} - -char *cpubits_to_str(cpubits *bits, char *str, int max_len) { - static const uint32_t max = CPUBITS_SIZE * 8; - uint32_t i = 1, seq_start = 0, seq_last = 0, seq = 0, l = 0; - char buffer[65536] = ""; - if (CPUBIT_GET(bits, 0)) { - seq = 1; - strcpy(buffer, "0"); - } - while (i < max) { - if (CPUBIT_GET(bits, i) ) { - seq_last = i; - if (!seq) { - seq = 1; - seq_start = i; - l = strlen(buffer); - sprintf(buffer + l, "%s%d", l ? "," : "", i); - } - } else { - if (seq && seq_last != seq_start) { - l = strlen(buffer); - sprintf(buffer + l, "-%d", seq_last); - } - seq = 0; - } - i++; - } - if (str == NULL) - return strdup(buffer); - else { - strncpy(str, buffer, max_len); - return str; - } -} diff --git a/hardinfo/dmi_util.c b/hardinfo/dmi_util.c deleted file mode 100644 index 28b2c197..00000000 --- a/hardinfo/dmi_util.c +++ /dev/null @@ -1,157 +0,0 @@ -/* - * HardInfo - Displays System Information - * Copyright (C) 2003-2017 Leandro A. F. Pereira - * This file - * Copyright (C) 2017 Burt P. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, version 2. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include "hardinfo.h" -#include "dmi_util.h" - -static const char *dmi_sysfs_root(void) { - char *candidates[] = { - "/sys/devices/virtual/dmi", - "/sys/class/dmi", - NULL - }; - int i = 0; - while (candidates[i] != NULL) { - if(access(candidates[i], F_OK) != -1) - return candidates[i]; - i++; - } - return NULL; -} - -char *dmi_get_str(const char *id_str) { - static struct { - char *id; - char *path; - } tab_dmi_sysfs[] = { - /* dmidecode -> sysfs */ - { "bios-release-date", "id/bios_date" }, - { "bios-vendor", "id/bios_vendor" }, - { "bios-version", "id/bios_version" }, - { "baseboard-product-name", "id/board_name" }, - { "baseboard-manufacturer", "id/board_vendor" }, - { "baseboard-version", "id/board_version" }, - { "baseboard-serial-number", "id/board_serial" }, - { "baseboard-asset-tag", "id/board_asset_tag" }, - { "system-product-name", "id/product_name" }, - { "system-manufacturer", "id/sys_vendor" }, - { "system-serial-number", "id/product_serial" }, - { "system-product-family", "id/product_family" }, - { "system-version", "id/product_version" }, - { "system-uuid", "product_uuid" }, - { "chassis-type", "id/chassis_type" }, - { "chassis-serial-number", "id/chassis_serial" }, - { "chassis-manufacturer", "id/chassis_vendor" }, - { "chassis-version", "id/chassis_version" }, - { "chassis-asset-tag", "id/chassis_asset_tag" }, - { NULL, NULL } - }; - const gchar *dmi_root = dmi_sysfs_root(); - gchar *ret = NULL; - gchar full_path[PATH_MAX]; - gboolean spawned; - gchar *out, *err; - - int i = 0; - - /* try sysfs first */ - if (dmi_root) { - while (tab_dmi_sysfs[i].id != NULL) { - if (strcmp(id_str, tab_dmi_sysfs[i].id) == 0) { - snprintf(full_path, PATH_MAX, "%s/%s", dmi_root, tab_dmi_sysfs[i].path); - if (g_file_get_contents(full_path, &ret, NULL, NULL) ) - goto dmi_str_done; - } - i++; - } - } - - /* try dmidecode, but may require root */ - snprintf(full_path, PATH_MAX, "dmidecode -s %s", id_str); - spawned = g_spawn_command_line_sync(full_path, - &out, &err, &i, NULL); - if (spawned) { - if (i == 0) - ret = out; - else - g_free(out); - - g_free(err); - } - -dmi_str_done: - if (ret != NULL) { - ret = strend(ret, '\n'); - ret = g_strstrip(ret); - /* return NULL on empty */ - if (*ret == 0) { - g_free(ret); - ret = NULL; - } - } - return ret; -} - -char *dmi_chassis_type_str(int chassis_type, gboolean with_val) { - static const char *types[] = { - N_("Invalid chassis type (0)"), - N_("Unknown chassis type"), /* 1 is "Other", but not helpful in HardInfo */ - N_("Unknown chassis type"), - N_("Desktop"), - N_("Low-profile Desktop"), - N_("Pizza Box"), - N_("Mini Tower"), - N_("Tower"), - N_("Portable"), - N_("Laptop"), - N_("Notebook"), - N_("Handheld"), - N_("Docking Station"), - N_("All-in-one"), - N_("Subnotebook"), - N_("Space-saving"), - N_("Lunch Box"), - N_("Main Server Chassis"), - N_("Expansion Chassis"), - N_("Sub Chassis"), - N_("Bus Expansion Chassis"), - N_("Peripheral Chassis"), - N_("RAID Chassis"), - N_("Rack Mount Chassis"), - N_("Sealed-case PC"), - }; - - if (chassis_type <= 0) { - gchar *chassis = dmi_get_str("chassis-type"); - if (chassis) { - chassis_type = atoi(chassis); - g_free(chassis); - } else - chassis_type = -1; - } - - if (chassis_type >= 0 && chassis_type < G_N_ELEMENTS(types)) { - if (with_val) - return g_strdup_printf("[%d] %s", chassis_type, _(types[chassis_type])); - - return g_strdup(_(types[chassis_type])); - } - return NULL; -} diff --git a/hardinfo/dt_util.c b/hardinfo/dt_util.c deleted file mode 100644 index 9678042d..00000000 --- a/hardinfo/dt_util.c +++ /dev/null @@ -1,1040 +0,0 @@ -/* - * HardInfo - Displays System Information - * Copyright (C) 2003-2007 Leandro A. F. Pereira - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, version 2. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ -/* - * Device Tree support by Burt P. - * Sources: - * http://elinux.org/Device_Tree_Usage - * http://elinux.org/Device_Tree_Mysteries - */ -#include -#include -#include -#include "hardinfo.h" -#include "dt_util.h" - -static struct { - char *name; int type; -} prop_types[] = { - { "name", DTP_STR }, - { "compatible", DTP_STR }, - { "model", DTP_STR }, - { "reg", DTP_REG }, - { "clocks", DTP_CLOCKS }, - { "gpios", DTP_GPIOS }, - { "cs-gpios", DTP_GPIOS }, - { "phandle", DTP_PH }, - { "interrupts", DTP_INTRUPT }, - { "interrupts-extended", DTP_INTRUPT_EX }, - { "interrupt-parent", DTP_PH_REF }, - { "interrupt-controller", DTP_EMPTY }, - { "regulator-min-microvolt", DTP_UINT }, - { "regulator-max-microvolt", DTP_UINT }, - { "clock-frequency", DTP_UINT }, - { "dmas", DTP_DMAS }, - { "dma-channels", DTP_UINT }, - { "dma-requests", DTP_UINT }, - { NULL, 0 }, -}; - -static struct { - char *name; uint32_t v; -} default_values[] = { - { "#address-cells", 2 }, - { "#size-cells", 1 }, - { "#dma-cells", 1 }, - { NULL, 0 }, -}; - -struct _dtr_map { - uint32_t v; /* phandle */ - char *label; /* alias */ - char *path; - struct _dtr_map *next; -}; -typedef struct _dtr_map dtr_map; - -struct _dtr { - dtr_map *aliases; - dtr_map *symbols; - dtr_map *phandles; - char *base_path; - char *log; -}; - -struct _dtr_obj { - char *path; - union { - void *data; - char *data_str; - dt_uint *data_int; - }; - char *name; - uint32_t length; - int type; - char *prefix; /* if the name has a manufacturer's prefix or null */ - char *np_name; /* the name without any prefix. points into .prefix or .name, do not free */ - const char *alias; /* null until first dtr_obj_alias(). do not free */ - const char *symbol; /* null until first dtr_obj_symbol(). do not free */ - dtr *dt; -}; - -dtr_map *dtr_map_add(dtr_map *map, uint32_t v, const char *label, const char *path) { - dtr_map *it; - dtr_map *nmap = malloc(sizeof(dtr_map)); - memset(nmap, 0, sizeof(dtr_map)); - nmap->v = v; - - if (label != NULL) nmap->label = strdup(label); - if (path != NULL) nmap->path = strdup(path); - if (map == NULL) - return nmap; - - it = map; - while(it->next != NULL) - it = it->next; - it->next = nmap; - - return nmap; -} - -void dtr_map_free(dtr_map *map) { - dtr_map *it; - while(map != NULL) { - it = map->next; - free(map->label); - free(map->path); - free(map); - map = it; - } -} - -/* simple sort for maps - * sv: 1 = sort by v, 0 = sort by label */ -void dtr_map_sort(dtr_map *map, int sv) -{ - int done = 0, cmp; - dtr_map *this, *next, *top, *next_top; - uint32_t tmp_v; - char *tmp_l, *tmp_p; - if (map == NULL) return; - do { - this = map; - next_top = NULL; - while(this != NULL) { - next = this->next; - if (this == top) - break; - if (next == NULL) - break; - if (sv) - cmp = (this->v > next->v) ? 1 : 0; - else - cmp = strcmp(this->label, next->label); - if (cmp > 0) { - tmp_v = this->v; this->v = next->v; next->v = tmp_v; - tmp_l = this->label; this->label = next->label; next->label = tmp_l; - tmp_p = this->path; this->path = next->path; next->path = tmp_p; - next_top = this; - } - this = next; - } - if (next_top == NULL) - done = 1; - else - top = next_top; - } while (!done); -} - -const char *dtr_phandle_lookup(dtr *s, uint32_t v) { - dtr_map *phi = s->phandles; - /* 0 and 0xffffffff are invalid phandle values */ - /* TODO: perhaps "INVALID" or something */ - if (v == 0 || v == 0xffffffff) - return NULL; - while(phi != NULL) { - if (phi->v == v) - return phi->path; - phi = phi->next; - } - return NULL; -} - -const char *dtr_alias_lookup(dtr *s, const char* label) { - dtr_map *ali = s->aliases; - while(ali != NULL) { - if (strcmp(ali->label, label) == 0) - return ali->path; - ali = ali->next; - } - return NULL; -} - -const char *dtr_alias_lookup_by_path(dtr *s, const char* path) { - dtr_map *ali = s->aliases; - while(ali != NULL) { - if (strcmp(ali->path, path) == 0) - return ali->label; - ali = ali->next; - } - return NULL; -} - -const char *dtr_symbol_lookup_by_path(dtr *s, const char* path) { - dtr_map *ali = s->symbols; - while(ali != NULL) { - if (strcmp(ali->path, path) == 0) - return ali->label; - ali = ali->next; - } - return NULL; -} - -void _dtr_read_aliases(dtr *); -void _dtr_read_symbols(dtr *); -void _dtr_map_phandles(dtr *, char *np); - -const char *dtr_find_device_tree_root() { - char *candidates[] = { - "/proc/device-tree", - "/sys/firmware/devicetree/base", - /* others? */ - NULL - }; - int i = 0; - while (candidates[i] != NULL) { - if(access(candidates[i], F_OK) != -1) - return candidates[i]; - i++; - } - return NULL; -} - -dtr *dtr_new_x(const char *base_path, int fast) { - dtr *dt = malloc(sizeof(dtr)); - if (dt != NULL) { - memset(dt, 0, sizeof(dtr)); - dt->log = strdup(""); - - if (base_path == NULL) - base_path = DTR_ROOT; - - if (base_path != NULL) - dt->base_path = strdup(base_path); - else { - dtr_msg(dt, "%s", "Device Tree not found."); - return dt; - } - - /* build alias and phandle lists */ - dt->aliases = NULL; - dt->symbols = NULL; - dt->phandles = NULL; - if (!fast) { - _dtr_read_aliases(dt); - _dtr_read_symbols(dt); - _dtr_map_phandles(dt, ""); - } - } - return dt; -} - -dtr *dtr_new(const char *base_path) { - return dtr_new_x(base_path, 0); -} - -void dtr_free(dtr *s) { - if (s != NULL) { - dtr_map_free(s->aliases); - dtr_map_free(s->symbols); - dtr_map_free(s->phandles); - free(s->base_path); - free(s->log); - free(s); - } -} - -int dtr_was_found(dtr *s) { - if (s != NULL) { - if (s->base_path != NULL) - return 1; - } - return 0; -} - -void dtr_msg(dtr *s, char *fmt, ...) { - gchar *buf, *tmp; - va_list args; - - va_start(args, fmt); - buf = g_strdup_vprintf(fmt, args); - va_end(args); - - tmp = g_strdup_printf("%s%s", s->log, buf); - g_free(s->log); - s->log = tmp; -} - -char *dtr_messages(dtr *s) { - if (s != NULL) - return strdup(s->log); - else - return NULL; -} - -const char *dtr_base_path(dtr *s) { - if (s) - return s->base_path; - return NULL; -} - -/*glib, but _dt_obj *prop uses malloc() and std types */ -dtr_obj *dtr_obj_read(dtr *s, const char *dtp) { - char *full_path; - char *slash, *coma; - dtr_obj *obj; - - if (dtp == NULL) - return NULL; - - obj = malloc(sizeof(dtr_obj)); - if (obj != NULL) { - memset(obj, 0, sizeof(dtr_obj)); - - obj->dt = s; - if (*dtp != '/') { - /* doesn't start with slash, use alias */ - obj->path = (char*)dtr_alias_lookup(s, dtp); - if (obj->path != NULL) - obj->path = strdup(obj->path); - else { - dtr_obj_free(obj); - return NULL; - } - } else - obj->path = strdup(dtp); - - /* find name after last slash, or start */ - slash = strrchr(obj->path, '/'); - if (slash != NULL) - obj->name = strdup(slash + 1); - else - obj->name = strdup(obj->path); - - /* find manufacturer prefix */ - obj->prefix = strdup(obj->name); - coma = strchr(obj->prefix, ','); - if (coma != NULL) { - /* coma -> null; .np_name starts after */ - *coma = 0; - obj->np_name = coma + 1; - } else { - obj->np_name = obj->name; - free(obj->prefix); - obj->prefix = NULL; - } - - /* read data */ - full_path = g_strdup_printf("%s%s", s->base_path, obj->path); - if ( g_file_test(full_path, G_FILE_TEST_IS_DIR) ) { - obj->type = DT_NODE; - } else { - if (!g_file_get_contents(full_path, (gchar**)&obj->data, (gsize*)&obj->length, NULL)) { - dtr_obj_free(obj); - g_free(full_path); - return NULL; - } - obj->type = dtr_guess_type(obj); - } - g_free(full_path); - - return obj; - } - return NULL; -} - -void dtr_obj_free(dtr_obj *s) { - if (s != NULL) { - free(s->path); - free(s->name); - free(s->prefix); - free(s->data); - free(s); - } -} - -int dtr_obj_type(dtr_obj *s) { - if (s) - return s->type; - return DT_TYPE_ERR; -} - -char *dtr_obj_alias(dtr_obj *s) { - if (s) { - if (s->alias == NULL) - s->alias = dtr_alias_lookup_by_path(s->dt, s->path); - return (char*)s->alias; - } - return NULL; -} - -char *dtr_obj_symbol(dtr_obj *s) { - if (s) { - if (s->symbol == NULL) - s->symbol = dtr_symbol_lookup_by_path(s->dt, s->path); - return (char*)s->symbol; - } - return NULL; -} - -char *dtr_obj_path(dtr_obj *s) { - if (s) - return s->path; - return NULL; -} - -char *dtr_obj_full_path(dtr_obj *s) { - if (s) { - if (strcmp(s->path, "/") == 0) - return g_strdup_printf("%s", s->dt->base_path); - else - return g_strdup_printf("%s%s", s->dt->base_path, s->path); - } - return NULL; -} - -dtr_obj *dtr_get_prop_obj(dtr *s, dtr_obj *node, const char *name) { - dtr_obj *prop; - char *ptmp; - ptmp = g_strdup_printf("%s/%s", (node == NULL) ? "" : node->path, name); - prop = dtr_obj_read(s, ptmp); - g_free(ptmp); - return prop; -} - -char *dtr_get_prop_str(dtr *s, dtr_obj *node, const char *name) { - dtr_obj *prop; - char *ptmp; - char *ret = NULL; - - ptmp = g_strdup_printf("%s/%s", (node == NULL) ? "" : node->path, name); - prop = dtr_obj_read(s, ptmp); - if (prop != NULL && prop->data != NULL) { - ret = strdup(prop->data_str); - dtr_obj_free(prop); - } - g_free(ptmp); - return ret; -} - -char *dtr_get_string(const char *p, int decode) { - dtr *dt = dtr_new_x(NULL, 1); - dtr_obj *obj; - char *ret = NULL; - if (decode) { - obj = dtr_get_prop_obj(dt, NULL, p); - ret = dtr_str(obj); - dtr_obj_free(obj); - } else - ret = dtr_get_prop_str(dt, NULL, p); - dtr_free(dt); - return ret; -} - -uint32_t dtr_get_prop_u32(dtr *s, dtr_obj *node, const char *name) { - dtr_obj *prop; - char *ptmp; - uint32_t ret = 0; - - ptmp = g_strdup_printf("%s/%s", (node == NULL) ? "" : node->path, name); - prop = dtr_obj_read(s, ptmp); - if (prop != NULL && prop->data != NULL) { - ret = be32toh(*prop->data_int); - dtr_obj_free(prop); - } - g_free(ptmp); - return ret; -} - -int dtr_guess_type(dtr_obj *obj) { - char *tmp, *dash; - int i = 0, anc = 0, might_be_str = 1; - - if (obj->length == 0) - return DTP_EMPTY; - - /* special #(.*)-cells names are UINT */ - if (*obj->name == '#') { - dash = strrchr(obj->name, '-'); - if (dash != NULL) { - if (strcmp(dash, "-cells") == 0) - return DTP_UINT; - } - } - - /* /aliases/* and /__symbols__/* are always strings */ - if (strncmp(obj->path, "/aliases/", strlen("/aliases/") ) == 0) - return DTP_STR; - if (strncmp(obj->path, "/__symbols__/", strlen("/__symbols__/") ) == 0) - return DTP_STR; - - /* /__overrides__/* */ - if (strncmp(obj->path, "/__overrides__/", strlen("/__overrides__/") ) == 0) - if (strcmp(obj->name, "name") != 0) - return DTP_OVR; - - /* lookup known type */ - while (prop_types[i].name != NULL) { - if (strcmp(obj->name, prop_types[i].name) == 0) - return prop_types[i].type; - i++; - } - - /* maybe a string? */ - for (i = 0; i < obj->length; i++) { - tmp = obj->data_str + i; - if ( isalnum(*tmp) ) anc++; /* count the alpha-nums */ - if ( isprint(*tmp) || *tmp == 0 ) - continue; - might_be_str = 0; - break; - } - if (might_be_str && - ( anc >= obj->length - 2 /* all alpha-nums but ^/ and \0$ */ - || anc >= 5 ) /*arbitrary*/) - return DTP_STR; - - /* multiple of 4 bytes, try list of hex values */ - if (!(obj->length % 4)) - return DTP_HEX; - - return DTP_UNK; -} - -char *dtr_elem_phref(dtr *s, dt_uint e, int show_path) { - const char *ph_path, *al_label; - char *ret = NULL; - ph_path = dtr_phandle_lookup(s, be32toh(e)); - if (ph_path != NULL) { - /* TODO: alias or symbol? */ - al_label = dtr_symbol_lookup_by_path(s, ph_path); - if (al_label != NULL) { - if (show_path) - ret = g_strdup_printf("&%s (%s)", al_label, ph_path); - else - ret = g_strdup_printf("&%s", al_label); - } else { - if (show_path) - ret = g_strdup_printf("0x%x (%s)", be32toh(e), ph_path); - } - } - if (ret == NULL) - ret = dtr_elem_hex(e); - return ret; -} - -char *dtr_elem_hex(dt_uint e) { - return g_strdup_printf("0x%x", be32toh(e) ); -} - -char *dtr_elem_byte(uint8_t e) { - return g_strdup_printf("%x", e); -} - -char *dtr_elem_uint(dt_uint e) { - return g_strdup_printf("%u", be32toh(e) ); -} - -char *dtr_list_byte(uint8_t *bytes, unsigned long count) { - char *ret, *dest; - char buff[4] = ""; /* max element: " 00\0" */ - uint32_t v; - unsigned long i, l; - l = count * 4 + 1; - ret = malloc(l); - memset(ret, 0, l); - strcpy(ret, "["); - dest = ret + 1; - for (i = 0; i < count; i++) { - v = bytes[i]; - sprintf(buff, "%s%02x", (i) ? " " : "", v); - l = strlen(buff); - strncpy(dest, buff, l); - dest += l; - } - strcpy(dest, "]"); - return ret; -} - -char *dtr_list_hex(dt_uint *list, unsigned long count) { - char *ret, *dest; - char buff[12] = ""; /* max element: " 0x00000000\0" */ - unsigned long i, l; - l = count * 12 + 1; - dest = ret = malloc(l); - memset(ret, 0, l); - for (i = 0; i < count; i++) { - sprintf(buff, "%s0x%x", (i) ? " " : "", be32toh(list[i])); - l = strlen(buff); - strncpy(dest, buff, l); - dest += l; - } - return ret; -} - -/*cstd, except for g_strescape()*/ -char *dtr_list_str0(const char *data, uint32_t length) { - char *tmp, *esc, *next_str; - char ret[1024] = ""; - uint32_t l, tl; - - /* treat as null-separated string list */ - tl = 0; - strcpy(ret, ""); - tmp = ret; - next_str = (char*)data; - while(next_str != NULL) { - l = strlen(next_str); - esc = g_strescape(next_str, NULL); - sprintf(tmp, "%s\"%s\"", - strlen(ret) ? ", " : "", esc); - free(esc); - tmp += strlen(tmp); - tl += l + 1; next_str += l + 1; - if (tl >= length) break; - } - - return strdup(ret); -} - -char *dtr_list_override(dtr_obj *obj) { - /* ... */ - char *ret = NULL; - char *ph, *str; - char *src; - int l, consumed = 0; - src = obj->data_str; - while (consumed + 5 <= obj->length) { - ph = dtr_elem_phref(obj->dt, *(dt_uint*)src, 1); - src += 4; consumed += 4; - l = strlen(src) + 1; /* consume the null */ - str = dtr_list_str0(src, l); - ret = appf(ret, "<%s -> %s>", ph, str); - src += l; consumed += l; - free(ph); - free(str); - } - if (consumed < obj->length) { - str = dtr_list_byte(src, obj->length - consumed); - ret = appf(ret, "%s", str); - free(str); - } - return ret; -} - -uint32_t dtr_get_phref_prop(dtr *s, uint32_t phandle, char *prop) { - const char *ph_path; - char *tmp; - uint32_t ret; - ph_path = dtr_phandle_lookup(s, phandle); - tmp = g_strdup_printf("%s/%s", ph_path, prop); - ret = dtr_get_prop_u32(s, NULL, tmp); - free(tmp); - return ret; -} - -char *dtr_list_phref(dtr_obj *obj, char *ext_cell_prop) { - /* */ - int count = obj->length / 4; - int i = 0, ext_cells = 0; - char *ph_path; - char *ph, *ext, *ret = NULL; - while (i < count) { - if (ext_cell_prop == NULL) - ext_cells = 0; - else - ext_cells = dtr_get_phref_prop(obj->dt, be32toh(obj->data_int[i]), ext_cell_prop); - ph = dtr_elem_phref(obj->dt, obj->data_int[i], 0); i++; - if (ext_cells > count - i) ext_cells = count - i; - ext = dtr_list_hex((obj->data_int + i), ext_cells); i+=ext_cells; - ret = appf(ret, "<%s%s%s>", - ph, (ext_cells) ? " " : "", ext); - g_free(ph); - g_free(ext); - } - return ret; -} - -char *dtr_list_interrupts(dtr_obj *obj) { - char *ext, *ret = NULL; - uint32_t iparent, icells; - int count, i = 0; - - iparent = dtr_inh_find(obj, "interrupt-parent", 0); - if (!iparent) { - dtr_msg(obj->dt, "Did not find an interrupt-parent for %s", obj->path); - goto intr_err; - } - icells = dtr_get_phref_prop(obj->dt, iparent, "#interrupt-cells"); - if (!icells) { - dtr_msg(obj->dt, "Invalid #interrupt-cells value %d for %s", icells, obj->path); - goto intr_err; - } - - count = obj->length / 4; - while (i < count) { - icells = MIN(icells, count - i); - ext = dtr_list_hex((obj->data_int + i), icells); i+=icells; - ret = appf(ret, "<%s>", ext); - } - return ret; - -intr_err: - return dtr_list_hex(obj->data_int, obj->length); - -} - -char *dtr_list_reg(dtr_obj *obj) { - char *tup_str, *ret = NULL; - uint32_t acells, scells, tup_len; - uint32_t tups, extra, consumed; /* extra and consumed are bytes */ - uint32_t *next; - - acells = dtr_inh_find(obj, "#address-cells", 2); - scells = dtr_inh_find(obj, "#size-cells", 2); - tup_len = acells + scells; - tups = obj->length / (tup_len * 4); - extra = obj->length % (tup_len * 4); - consumed = 0; /* bytes */ - - //printf("list reg: %s\n ... acells: %u, scells: %u, extra: %u\n", obj->path, acells, scells, extra); - - if (extra) { - /* error: length is not a multiple of tuples */ - dtr_msg(obj->dt, "Data length (%u) is not a multiple of (#address-cells:%u + #size-cells:%u) for %s\n", - obj->length, acells, scells, obj->path); - return dtr_list_hex(obj->data, obj->length / 4); - } - - next = obj->data_int; - consumed = 0; - while (consumed + (tup_len * 4) <= obj->length) { - tup_str = dtr_list_hex(next, tup_len); - ret = appf(ret, "<%s>", tup_str); - free(tup_str); - consumed += (tup_len * 4); - next += tup_len; - } - - //printf(" ... %s\n", ret); - return ret; -} - -char* dtr_str(dtr_obj *obj) { - char *ret; - int type; - - if (obj == NULL) return NULL; - type = obj->type; - - if (type == DTP_PH_REF) { - if (!DTEX_PHREFS || obj->length != 4) - type = DTP_HEX; - } - - switch(type) { - case DT_NODE: - ret = strdup("{node}"); - break; - case DTP_EMPTY: - ret = strdup("{empty}"); - break; - case DTP_STR: - ret = dtr_list_str0(obj->data_str, obj->length); - break; - case DTP_OVR: - ret = dtr_list_override(obj); - break; - case DTP_REG: - /* <#address-cells #size-cells> */ - ret = dtr_list_reg(obj); - break; - case DTP_INTRUPT: - ret = dtr_list_interrupts(obj); - break; - case DTP_INTRUPT_EX: - /* */ - ret = dtr_list_phref(obj, "#interrupt-cells"); - break; - case DTP_CLOCKS: - /* */ - ret = dtr_list_phref(obj, "#clock-cells"); - break; - case DTP_GPIOS: - /* */ - ret = dtr_list_phref(obj, "#gpio-cells"); - break; - case DTP_DMAS: - /* */ - ret = dtr_list_phref(obj, "#dma-cells"); - break; - case DTP_PH: - case DTP_HEX: - if (obj->length % 4) - ret = dtr_list_byte((uint8_t*)obj->data, obj->length); - else - ret = dtr_list_hex(obj->data, obj->length / 4); - break; - case DTP_PH_REF: - ret = dtr_elem_phref(obj->dt, *obj->data_int, 1); - break; - case DTP_UINT: - ret = dtr_elem_uint(*obj->data_int); - break; - case DTP_UNK: - default: - if (obj->length > 64) /* maybe should use #define at the top */ - ret = g_strdup_printf(ret, "{data} (%lu bytes)", obj->length); - else - ret = dtr_list_byte((uint8_t*)obj->data, obj->length); - break; - } - - return ret; -} - -dtr_obj *dtr_get_parent_obj(dtr_obj *obj) { - char *slash, *parent; - dtr_obj *ret = NULL; - - if (obj == NULL) - return NULL; - - parent = strdup(obj->path); - slash = strrchr(parent, '/'); - if (slash != NULL) { - *slash = 0; - if (strlen(parent) > 0) - ret = dtr_obj_read(obj->dt, parent); - else - ret = dtr_obj_read(obj->dt, "/"); - } - free(parent); - return ret; -} - -/* find the value of a path-inherited property by climbing the path */ -int dtr_inh_find(dtr_obj *obj, char *qprop, int limit) { - dtr_obj *tobj, *pobj, *qobj; - uint32_t ret = 0; - int i, found = 0; - - if (!limit) limit = 1000; - - tobj = obj; - while (tobj != NULL) { - pobj = dtr_get_parent_obj(tobj); - if (tobj != obj) - dtr_obj_free(tobj); - if (!limit || pobj == NULL) break; - qobj = dtr_get_prop_obj(obj->dt, pobj, qprop); - if (qobj != NULL) { - ret = be32toh(*qobj->data_int); - found = 1; - dtr_obj_free(qobj); - break; - } - tobj = pobj; - limit--; - } - dtr_obj_free(pobj); - - if (!found) { - i = 0; - while(default_values[i].name != NULL) { - if (strcmp(default_values[i].name, qprop) == 0) { - ret = default_values[i].v; - dtr_msg(obj->dt, "Using default value %d for %s in %s\n", ret, qprop, obj->path); - break; - } - i++; - } - } - - return ret; -} - -void _dtr_read_aliases(dtr *s) { - gchar *dir_path; - GDir *dir; - const gchar *fn; - dtr_obj *anode, *prop; - dtr_map *al; - anode = dtr_obj_read(s, "/aliases"); - - dir_path = g_strdup_printf("%s/aliases", s->base_path); - dir = g_dir_open(dir_path, 0 , NULL); - if (dir) { - while((fn = g_dir_read_name(dir)) != NULL) { - prop = dtr_get_prop_obj(s, anode, fn); - if (prop->type == DTP_STR) { - if (*prop->data_str == '/') { - al = dtr_map_add(s->aliases, 0, prop->name, prop->data_str); - if (s->aliases == NULL) - s->aliases = al; - } - } - dtr_obj_free(prop); - } - } - g_dir_close(dir); - g_free(dir_path); - dtr_obj_free(anode); - dtr_map_sort(s->aliases, 0); -} - -void _dtr_read_symbols(dtr *s) { - gchar *dir_path; - GDir *dir; - const gchar *fn; - dtr_obj *anode, *prop; - dtr_map *al; - anode = dtr_obj_read(s, "/__symbols__"); - - dir_path = g_strdup_printf("%s/__symbols__", s->base_path); - dir = g_dir_open(dir_path, 0 , NULL); - if (dir) { - while((fn = g_dir_read_name(dir)) != NULL) { - prop = dtr_get_prop_obj(s, anode, fn); - if (prop->type == DTP_STR) { - if (*prop->data_str == '/') { - al = dtr_map_add(s->symbols, 0, prop->name, prop->data_str); - if (s->symbols == NULL) - s->symbols = al; - } - } - dtr_obj_free(prop); - } - } - g_dir_close(dir); - g_free(dir_path); - dtr_obj_free(anode); - dtr_map_sort(s->symbols, 0); -} - -/* TODO: rewrite */ -void _dtr_map_phandles(dtr *s, char *np) { - gchar *dir_path; - gchar *ftmp, *ntmp, *ptmp; - const gchar *fn; - GDir *dir; - dtr_obj *prop, *ph_prop; - dtr_map *ph; - uint32_t phandle; - - if (np == NULL) np = ""; - dir_path = g_strdup_printf("%s/%s", s->base_path, np); - - prop = dtr_obj_read(s, np); - dir = g_dir_open(dir_path, 0 , NULL); - if (dir) { - while((fn = g_dir_read_name(dir)) != NULL) { - ftmp = g_strdup_printf("%s/%s", dir_path, fn); - if ( g_file_test(ftmp, G_FILE_TEST_IS_DIR) ) { - ntmp = g_strdup_printf("%s/%s", np, fn); - ptmp = g_strdup_printf("%s/phandle", ntmp); - ph_prop = dtr_obj_read(s, ptmp); - if (ph_prop != NULL) { - ph = dtr_map_add(s->phandles, be32toh(*ph_prop->data_int), NULL, ntmp); - if (s->phandles == NULL) - s->phandles = ph; - } - _dtr_map_phandles(s, ntmp); - g_free(ptmp); - g_free(ntmp); - dtr_obj_free(ph_prop); - } - g_free(ftmp); - } - } - g_dir_close(dir); - dtr_obj_free(prop); - dtr_map_sort(s->phandles, 1); -} - -/* - * Maybe these should move to devicetree.c, but would have to expose - * struct internals. - */ - -/* kvl: 0 = key is label, 1 = key is v */ -char *dtr_map_info_section(dtr *s, dtr_map *map, char *title, int kvl) { - gchar *tmp, *ret; - const gchar *sym; - ret = g_strdup_printf("[%s]\n", _(title)); - dtr_map *it = map; - while(it != NULL) { - if (kvl) { - sym = dtr_symbol_lookup_by_path(s, it->path); - if (sym != NULL) - tmp = g_strdup_printf("%s0x%x (%s)=%s\n", ret, - it->v, sym, it->path); - else - tmp = g_strdup_printf("%s0x%x=%s\n", ret, - it->v, it->path); - } else - tmp = g_strdup_printf("%s%s=%s\n", ret, - it->label, it->path); - g_free(ret); - ret = tmp; - it = it->next; - } - - return ret; -} - -char *dtr_maps_info(dtr *s) { - gchar *ph_map, *al_map, *sy_map, *ret; - - ph_map = dtr_map_info_section(s, s->phandles, _("phandle Map"), 1); - al_map = dtr_map_info_section(s, s->aliases, _("Alias Map"), 0); - sy_map = dtr_map_info_section(s, s->symbols, _("Symbol Map"), 0); - ret = g_strdup_printf("%s%s%s", ph_map, sy_map, al_map); - g_free(ph_map); - g_free(al_map); - g_free(sy_map); - return ret; -} - -char *appf(char *src, char *fmt, ...) { - gchar *buf, *ret; - va_list args; - - va_start(args, fmt); - buf = g_strdup_vprintf(fmt, args); - va_end(args); - - if (src != NULL) { - ret = g_strdup_printf("%s%s%s", src, sp_sep(src), buf); - g_free(buf); - g_free(src); - } else - ret = buf; - - return ret; -} - diff --git a/hardinfo/expr.c b/hardinfo/expr.c deleted file mode 100644 index 32e303d7..00000000 --- a/hardinfo/expr.c +++ /dev/null @@ -1,250 +0,0 @@ -/* - * HardInfo - Displays System Information - * Copyright (C) 2003-2007 Leandro A. F. Pereira - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, version 2. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ -/* - * This is only used to compute sensor values, hence the only variable supported is '@'. - * The '`' operator (ln(x)) is not available, nor multi-line formulas. - */ - -#include -#include -#include -#include -#include - -#include "expr.h" -#include "config.h" - -static MathToken *new_operator(gchar op) -{ - MathToken *t = g_new0(MathToken, 1); - - t->val.op = op; - t->type = TOKEN_OPERATOR; /* operator */ - - return t; -} - -static MathToken *new_variable(gchar var) -{ - MathToken *t = g_new0(MathToken, 1); - - t->val.op = '@'; - t->type = TOKEN_VARIABLE; /* variable */ - - return t; -} - -static MathToken *new_value(gfloat value) -{ - MathToken *t = g_new0(MathToken, 1); - - t->val.value = value; - t->type = TOKEN_VALUE; /* value */ - - return t; -} - -static inline gint priority(char operation) -{ - switch (operation) { - case '^': - return 3; - case '*': - case '/': - return 2; - case '+': - case '-': - return 1; - case '(': - return 0; - } - - return 0; -} - -GSList *math_infix_to_postfix(GSList * infix) -{ - MathToken *stack[500]; - gint t_sp = 0; - - GSList *postfix = NULL, *p; - MathToken *top; - - for (p = infix; p; p = p->next) { - MathToken *t = (MathToken *) p->data; - - if (t->type == TOKEN_OPERATOR && t->val.op == '(') { - stack[++t_sp] = t; - } else if (t->type == TOKEN_OPERATOR && t->val.op == ')') { - for (top = stack[t_sp]; t_sp != 0 && top->val.op != '('; - top = stack[t_sp]) { - postfix = g_slist_append(postfix, stack[t_sp--]); - } - t_sp--; - } else if (t->type != TOKEN_OPERATOR) { - postfix = g_slist_append(postfix, t); - } else if (t_sp == 0) { - stack[++t_sp] = t; - } else { - while (t_sp != 0 - && priority(t->val.op) <= priority(stack[t_sp]->val.op)) - postfix = g_slist_append(postfix, stack[t_sp--]); - stack[++t_sp] = t; - } - } - - while (t_sp) - postfix = g_slist_append(postfix, stack[t_sp--]); - - return postfix; -} - -static inline gfloat __result(gfloat op1, gfloat op2, gchar operation) -{ - switch (operation) { - case '^': - return powf(op1, op2); - case '+': - return op1 + op2; - case '-': - return op1 - op2; - case '/': - return op1 / op2; - case '*': - return op1 * op2; - } - - return 0; -} - -gfloat math_postfix_eval(GSList * postfix, gfloat at_value) -{ - GSList *p; - gfloat stack[500]; - gint sp = 0; - - memset(stack, 0, sizeof(gfloat) * 500); - - for (p = postfix; p; p = p->next) { - MathToken *t = (MathToken *) p->data; - - if (t->type == TOKEN_VARIABLE) { - stack[++sp] = at_value; - } else if (t->type == TOKEN_VALUE) { - stack[++sp] = t->val.value; - } else { - gfloat op1, op2; - - op2 = stack[sp--]; - op1 = stack[sp]; - - stack[sp] = __result(op1, op2, t->val.op); - } - } - - return stack[sp]; -} - -GSList *math_string_to_infix(gchar * string) -{ - GSList *infix = NULL; - gchar *expr = string; - - for (; *expr; expr++) { - if (strchr("+-/*^()", *expr)) { - infix = g_slist_append(infix, new_operator(*expr)); - } else if (strchr("@", *expr)) { - infix = g_slist_append(infix, new_variable(*expr)); - } else if (strchr("-.1234567890", *expr)) { - gchar value[32], *v = value; - gfloat floatval; - - do { - *v++ = *expr++; - } while (*expr && strchr("-.1234567890", *expr)); - expr--; - *v = '\0'; - - sscanf(value, "%f", &floatval); - - infix = g_slist_append(infix, new_value(floatval)); - } else if (!isspace(*expr)) { - g_print("Invalid token: [%c][%d]\n", *expr, *expr); - math_infix_free(infix, TRUE); - return NULL; - } - } - - return infix; -} - -void math_infix_free(GSList * infix, gboolean free_tokens) -{ - GSList *p; - - if (!free_tokens) - for (p = infix; p; p = g_slist_delete_link(p, p)); - else - for (p = infix; p; p = g_slist_delete_link(p, p)) { - MathToken *t = (MathToken *) p->data; - g_free(t); - } -} - -GSList *math_string_to_postfix(gchar * string) -{ - GSList *infix; - GSList *postfix; - - infix = math_string_to_infix(string); - if (!infix) - return NULL; - - postfix = math_infix_to_postfix(infix); - math_infix_free(infix, FALSE); - - return postfix; -} - -gfloat math_string_eval(gchar * string, gfloat at_value) -{ - GSList *postfix; - gfloat val; - - postfix = math_string_to_postfix(string); - val = math_postfix_eval(postfix, at_value); - math_postfix_free(postfix, TRUE); - - return val; -} - -#ifdef MATH_TEST -int main(void) -{ - GSList *postfix; - - gchar *expr = "0.9*(@+(5.2*0.923+3*(2.0)))"; - - postfix = math_string_to_postfix(expr); - g_print("%s = %f (must be 18.71964)\n", expr, - math_postfix_eval(postfix, 10)); - math_postfix_free(postfix, TRUE); - - return 0; -} -#endif diff --git a/hardinfo/hardinfo.c b/hardinfo/hardinfo.c deleted file mode 100644 index b3bef9b5..00000000 --- a/hardinfo/hardinfo.c +++ /dev/null @@ -1,160 +0,0 @@ -/* - * HardInfo - Displays System Information - * Copyright (C) 2003-2009 Leandro A. F. Pereira - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, version 2. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include -#include - -#include -#include -#include -#include -#include - -#include - -ProgramParameters params = { 0 }; - -int main(int argc, char **argv) -{ - GSList *modules; - - setlocale(LC_ALL, ""); - bindtextdomain("hardinfo", LOCALEDIR); - textdomain("hardinfo"); - - DEBUG("HardInfo version " VERSION ". Debug version."); - - /* parse all command line parameters */ - parameters_init(&argc, &argv, ¶ms); - - /* show version information and quit */ - if (params.show_version) { - g_print("HardInfo version " VERSION "\n"); - g_print - (_(/*/ %d will be latest year of copyright*/ "Copyright (C) 2003-%d Leandro A. F. Pereira. See COPYING for details.\n\n"), HARDINFO_COPYRIGHT_LATEST_YEAR ); - - g_print(_("Compile-time options:\n" - " Release version: %s (%s)\n" - " BinReloc enabled: %s\n" - " Data prefix: %s\n" - " Library prefix: %s\n" - " Compiled for: %s\n"), - RELEASE ? _("Yes") : "No (" VERSION ")", ARCH, - ENABLE_BINRELOC ? _("Yes") : _("No"), - PREFIX, LIBPREFIX, PLATFORM); - - DEBUG(" Debugging is enabled."); - - /* show also available modules */ - params.list_modules = TRUE; - } - - /* initialize the binreloc library, so we can load program data */ - if (!binreloc_init(FALSE)) - g_error(_("Failed to find runtime data.\n\n" - "\342\200\242 Is HardInfo correctly installed?\n" - "\342\200\242 See if %s and %s exists and you have read permission."), - PREFIX, LIBPREFIX); - - /* list all module names */ - if (params.list_modules) { - g_print(_("Modules:\n" - "%-20s %-15s %-12s\n"), _("File Name"), _("Name"), _("Version")); - - for (modules = modules_load_all(); modules; - modules = modules->next) { - ShellModule *module = (ShellModule *) modules->data; - ModuleAbout *ma = module_get_about(module); - gchar *name = g_path_get_basename(g_module_name(module->dll)); - - g_print("%-20s %-15s %-12s\n", name, module->name, ma->version); - - g_free(name); - } - - return 0; - } - - if (!params.create_report && !params.run_benchmark) { - /* we only try to open the UI if the user didn't ask for a report. */ - params.gui_running = ui_init(&argc, &argv); - - /* as a fallback, if GTK+ initialization failed, run in report - generation mode. */ - if (!params.gui_running) - params.create_report = TRUE; - } - - if (params.use_modules) { - /* load only selected modules */ - DEBUG("loading user-selected modules"); - modules = modules_load_selected(); - } else { - /* load all modules */ - DEBUG("loading all modules"); - modules = modules_load_all(); - } - - /* initialize vendor database */ - vendor_init(); - - /* initialize moreinfo */ - moreinfo_init(); - - if (params.run_benchmark) { - gchar *result; - - result = module_call_method_param("benchmark::runBenchmark", params.run_benchmark); - if (!result) { - g_error(_("Unknown benchmark ``%s'' or benchmark.so not loaded"), params.run_benchmark); - } else { - fprintf(stderr, "\n"); - g_print("%s\n", result); - g_free(result); - } - } else if (params.gui_running) { - /* initialize gui and start gtk+ main loop */ - icon_cache_init(); - stock_icons_init(); - - shell_init(modules); - - DEBUG("entering gtk+ main loop"); - - gtk_main(); - } else if (params.create_report) { - /* generate report */ - gchar *report; - - DEBUG("generating report"); - - report = report_create_from_module_list_format(modules, - params. - report_format); - g_print("%s", report); - - g_free(report); - } else { - g_error(_("Don't know what to do. Exiting.")); - } - - moreinfo_shutdown(); - - DEBUG("finished"); - return 0; -} diff --git a/hardinfo/info.c b/hardinfo/info.c deleted file mode 100644 index 0bbf7a07..00000000 --- a/hardinfo/info.c +++ /dev/null @@ -1,249 +0,0 @@ -/* - * HardInfo - Displays System Information - * Copyright (C) 2017 Leandro A. F. Pereira - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, version 2. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include "hardinfo.h" - -static const gchar *info_column_titles[] = { - "TextValue", "Value", "Progress", "Extra1", "Extra2" -}; - -struct Info *info_new(void) -{ - struct Info *info = g_new0(struct Info, 1); - - info->groups = g_array_new(FALSE, FALSE, sizeof(struct InfoGroup)); - info->view_type = SHELL_VIEW_NORMAL; - info->column_headers_visible = FALSE; - info->zebra_visible = FALSE; - info->normalize_percentage = TRUE; - - return info; -} - -void info_add_group(struct Info *info, const gchar *group_name, ...) -{ - struct InfoGroup group = { - .name = group_name, - .fields = g_array_new(FALSE, FALSE, sizeof(struct InfoField)) - }; - va_list ap; - - va_start(ap, group_name); - while (1) { - struct InfoField field = va_arg(ap, struct InfoField ); - - if (!field.name) - break; - g_array_append_val(group.fields, field); - } - va_end(ap); - - g_array_append_val(info->groups, group); -} - -struct InfoField info_field(const gchar *name, gchar *value) -{ - return (struct InfoField) { - .name = name, - .value = value, - }; -} - -struct InfoField info_field_update(const gchar *name, int update_interval) -{ - return (struct InfoField) { - .name = name, - .value = "...", - .update_interval = update_interval, - }; -} - -struct InfoField info_field_printf(const gchar *name, const gchar *format, ...) -{ - gchar *value; - va_list ap; - - va_start(ap, format); - value = g_strdup_vprintf(format, ap); - va_end(ap); - - return (struct InfoField) { - .name = name, - .value = value, - .free_value_on_flatten = TRUE, - }; -} - -struct InfoField info_field_last(void) -{ - return (struct InfoField) {}; -} - -void info_add_computed_group(struct Info *info, const gchar *name, const gchar *value) -{ - /* This is a scaffolding method: HardInfo should move away from pre-computing - * the strings in favor of storing InfoGroups instead; while modules are not - * fully converted, use this instead. */ - struct InfoGroup group = { - .name = name, - .computed = value, - }; - - g_array_append_val(info->groups, group); -} - -void info_set_column_title(struct Info *info, const gchar *column, const gchar *title) -{ - int i; - - for (i = 0; i < G_N_ELEMENTS(info_column_titles); i++) { - if (g_str_equal(info_column_titles[i], column)) { - info->column_titles[i] = title; - return; - } - } -} - -void info_set_column_headers_visible(struct Info *info, gboolean setting) -{ - info->column_headers_visible = setting; -} - -void info_set_zebra_visible(struct Info *info, gboolean setting) -{ - info->zebra_visible = setting; -} - -void info_set_normalize_percentage(struct Info *info, gboolean setting) -{ - info->normalize_percentage = setting; -} - -void info_set_view_type(struct Info *info, ShellViewType setting) -{ - info->view_type = setting; -} - -void info_set_reload_interval(struct Info *info, int setting) -{ - info->reload_interval = setting; -} - -static void flatten_group(GString *output, const struct InfoGroup *group) -{ - guint i; - - if (group->name != NULL) - g_string_append_printf(output, "[%s]\n", group->name); - - if (group->fields) { - for (i = 0; i < group->fields->len; i++) { - struct InfoField field; - - field = g_array_index(group->fields, struct InfoField, i); - - g_string_append_printf(output, "%s=%s\n", field.name, field.value); - - if (field.free_value_on_flatten) - g_free(field.value); - } - } else if (group->computed) { - g_string_append_printf(output, "%s\n", group->computed); - } -} - -static void flatten_shell_param(GString *output, const struct InfoGroup *group) -{ - guint i; - - if (!group->fields) - return; - - for (i = 0; i < group->fields->len; i++) { - struct InfoField field; - - field = g_array_index(group->fields, struct InfoField, i); - - if (field.update_interval) { - g_string_append_printf(output, "UpdateInterval$%s=%d\n", - field.name, field.update_interval); - } - } -} - -static void flatten_shell_param_global(GString *output, const struct Info *info) -{ - int i; - - g_string_append_printf(output, "ViewType=%d\n", info->view_type); - g_string_append_printf(output, "ShowColumnHeaders=%s\n", - info->column_headers_visible ? "true" : "false"); - - if (info->zebra_visible) - g_string_append(output, "Zebra=1\n"); - - if (info->reload_interval) - g_string_append_printf(output, "ReloadInterval=%d\n", info->reload_interval); - - if (!info->normalize_percentage) - g_string_append(output, "NormalizePercentage=false\n"); - - for (i = 0; i < G_N_ELEMENTS(info_column_titles); i++) { - if (!info->column_titles[i]) - continue; - - g_string_append_printf(output, "ColumnTitle$%s=%s\n", - info_column_titles[i], info->column_titles[i]); - } -} - -gchar *info_flatten(struct Info *info) -{ - /* This is a scaffolding method: eventually the HardInfo shell should - * understand a struct Info instead of parsing these strings, which are - * brittle and unnecessarily complicates things. Being a temporary - * method, no attention is paid to improve the memory allocation - * strategy. */ - GString *values; - GString *shell_param; - guint i; - - values = g_string_new(NULL); - shell_param = g_string_new(NULL); - - if (info->groups) { - for (i = 0; i < info->groups->len; i++) { - struct InfoGroup group = - g_array_index(info->groups, struct InfoGroup, i); - - flatten_group(values, &group); - flatten_shell_param(shell_param, &group); - - if (group.fields) - g_array_free(group.fields, TRUE); - } - - g_array_free(info->groups, TRUE); - } - - flatten_shell_param_global(shell_param, info); - g_string_append_printf(values, "[$ShellParam$]\n%s", shell_param->str); - - g_string_free(shell_param, TRUE); - return g_string_free(values, FALSE); -} diff --git a/hardinfo/socket.c b/hardinfo/socket.c deleted file mode 100644 index 40cb8e50..00000000 --- a/hardinfo/socket.c +++ /dev/null @@ -1,127 +0,0 @@ -/* - * HardInfo - Displays System Information - * Copyright (C) 2003-2007 Leandro A. F. Pereira - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, version 2. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include - -#include "socket.h" - -Socket *sock_connect(gchar * host, gint port) -{ - struct sockaddr_in server; - Socket *s; - int sock; - - sock = socket(AF_INET, SOCK_STREAM, 0); - if (sock > 0) { - memset(&server, 0, sizeof(server)); - server.sin_family = AF_INET; - server.sin_addr.s_addr = inet_addr(host); - server.sin_port = htons(port); - - if (connect(sock, (struct sockaddr *) (void *) &server, sizeof(server)) < 0) { - goto cleanup; - } - - s = g_new0(Socket, 1); - s->sock = sock; - - return s; - } - -cleanup: - close(sock); - - return NULL; -} - -/* From: http://www.erlenstar.demon.co.uk/unix/faq_3.html#SEC26 */ -static inline int __sock_is_ready(Socket * s, int mode) -{ - int rc, fd = s->sock; - fd_set fds; - struct timeval tv; - - FD_ZERO(&fds); - FD_SET(fd, &fds); - tv.tv_sec = tv.tv_usec = 0; - - if (mode == 0) { - /* read */ - rc = select(fd + 1, &fds, NULL, NULL, &tv); - } else { - /* write */ - rc = select(fd + 1, NULL, &fds, NULL, &tv); - } - - if (rc < 0) - return -1; - - return FD_ISSET(fd, &fds) ? 1 : 0; -} - -int sock_ready_to_read(Socket * s) -{ - return __sock_is_ready(s, 0); -} - -int sock_ready_to_write(Socket * s) -{ - return __sock_is_ready(s, 1); -} - -int sock_read(Socket * s, gchar * buffer, gint size) -{ - if (size > 2 && sock_ready_to_read(s)) { - gint n; - - n = read(s->sock, buffer, size - 1); - if (n > 0) { - buffer[n] = '\0'; - } else { - return 0; - } - - return n; - } - - return 0; -} - -int sock_write(Socket * s, gchar * str) -{ - while (!sock_ready_to_write(s)); - - return write(s->sock, str, strlen(str)); -} - -void sock_close(Socket * s) -{ - shutdown(s->sock, 2); - close(s->sock); - g_free(s); -} diff --git a/hardinfo/util.c b/hardinfo/util.c deleted file mode 100644 index 7bcc5dd5..00000000 --- a/hardinfo/util.c +++ /dev/null @@ -1,1389 +0,0 @@ -/* - * HardInfo - Displays System Information - * Copyright (C) 2003-2007 Leandro A. F. Pereira - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, version 2. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - -/* - * Functions h_strdup_cprintf and h_strconcat are based on GLib version 2.4.6 - * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - */ - -#include - -#include -#include -#include -#include -#include -#include - -#include - -#include -#include - -#define KiB 1024 -#define MiB 1048576 -#define GiB 1073741824 -#define TiB 1099511627776 -#define PiB 1125899906842624 - -static GSList *modules_list = NULL; - -void sync_manager_clear_entries(void); - -gchar *find_program(gchar *program_name) -{ - int i; - char *temp; - static GHashTable *cache = NULL; - const char *path[] = { "/usr/local/bin", "/usr/local/sbin", - "/usr/bin", "/usr/sbin", - "/bin", "/sbin", - NULL }; - - /* we don't need to call stat() every time: cache the results */ - if (!cache) { - cache = g_hash_table_new(g_str_hash, g_str_equal); - } else if ((temp = g_hash_table_lookup(cache, program_name))) { - return g_strdup(temp); - } - - for (i = 0; path[i]; i++) { - temp = g_build_filename(path[i], program_name, NULL); - - if (g_file_test(temp, G_FILE_TEST_IS_EXECUTABLE)) { - g_hash_table_insert(cache, program_name, g_strdup(temp)); - return temp; - } - - g_free(temp); - } - - /* our search has failed; use GLib's search (which uses $PATH env var) */ - if ((temp = g_find_program_in_path(program_name))) { - g_hash_table_insert(cache, program_name, g_strdup(temp)); - return temp; - } - - return NULL; -} - -gchar *seconds_to_string(unsigned int seconds) -{ - unsigned int hours, minutes, days; - const gchar *days_fmt, *hours_fmt, *minutes_fmt, *seconds_fmt; - gchar *full_fmt, *ret = g_strdup(""); - - minutes = seconds / 60; - seconds %= 60; - hours = minutes / 60; - minutes %= 60; - days = hours / 24; - hours %= 24; - - days_fmt = ngettext("%d day", "%d days", days); - hours_fmt = ngettext("%d hour", "%d hours", hours); - minutes_fmt = ngettext("%d minute", "%d minutes", minutes); - seconds_fmt = ngettext("%d second", "%d seconds", seconds); - - if (days) { - full_fmt = g_strdup_printf("%s %s %s %s", days_fmt, hours_fmt, minutes_fmt, seconds_fmt); - ret = g_strdup_printf(full_fmt, days, hours, minutes, seconds); - } else if (hours) { - full_fmt = g_strdup_printf("%s %s %s", hours_fmt, minutes_fmt, seconds_fmt); - ret = g_strdup_printf(full_fmt, hours, minutes, seconds); - } else if (minutes) { - full_fmt = g_strdup_printf("%s %s", minutes_fmt, seconds_fmt); - ret = g_strdup_printf(full_fmt, minutes, seconds); - } else { - ret = g_strdup_printf(seconds_fmt, seconds); - } - g_free(full_fmt); - return ret; -} - -gchar *size_human_readable(gfloat size) -{ - if (size < KiB) - return g_strdup_printf(_("%.1f B"), size); - if (size < MiB) - return g_strdup_printf(_("%.1f KiB"), size / KiB); - if (size < GiB) - return g_strdup_printf(_("%.1f MiB"), size / MiB); - if (size < TiB) - return g_strdup_printf(_("%.1f GiB"), size / GiB); - if (size < PiB) - return g_strdup_printf(_("%.1f TiB"), size / TiB); - - return g_strdup_printf(_("%.1f PiB"), size / PiB); -} - -char *strend(gchar * str, gchar chr) -{ - if (!str) - return NULL; - - char *p; - if ((p = g_utf8_strchr(str, -1, chr))) - *p = 0; - - return str; -} - -void remove_quotes(gchar * str) -{ - if (!str) - return; - - while (*str == '"') - *(str++) = ' '; - - strend(str, '"'); -} - -void remove_linefeed(gchar * str) -{ - strend(str, '\n'); -} - -void widget_set_cursor(GtkWidget * widget, GdkCursorType cursor_type) -{ - GdkCursor *cursor; - GdkDisplay *display; - GdkWindow *gdk_window; - - display = gtk_widget_get_display(widget); - cursor = gdk_cursor_new_for_display(display, cursor_type); - gdk_window = gtk_widget_get_window(widget); - if (cursor) { - gdk_window_set_cursor(gdk_window, cursor); - gdk_display_flush(display); -#if GTK_CHECK_VERSION(3, 0, 0) - g_object_unref(cursor); -#else - gdk_cursor_unref(cursor); -#endif - } - - while (gtk_events_pending()) - gtk_main_iteration(); -} - -static gboolean __nonblock_cb(gpointer data) -{ - gtk_main_quit(); - return FALSE; -} - -void nonblock_sleep(guint msec) -{ - g_timeout_add(msec, (GSourceFunc) __nonblock_cb, NULL); - gtk_main(); -} - -static void __expand_cb(GtkWidget * widget, gpointer data) -{ - if (GTK_IS_EXPANDER(widget)) { - gtk_expander_set_expanded(GTK_EXPANDER(widget), TRUE); - } else if (GTK_IS_CONTAINER(widget)) { - gtk_container_foreach(GTK_CONTAINER(widget), - (GtkCallback) __expand_cb, NULL); - } -} - -void file_chooser_open_expander(GtkWidget * chooser) -{ - gtk_container_foreach(GTK_CONTAINER(chooser), - (GtkCallback) __expand_cb, NULL); -} - -void file_chooser_add_filters(GtkWidget * chooser, FileTypes * filters) -{ - GtkFileFilter *filter; - gint i; - - for (i = 0; filters[i].name; i++) { - filter = gtk_file_filter_new(); - gtk_file_filter_add_mime_type(filter, filters[i].mime_type); - gtk_file_filter_set_name(filter, filters[i].name); - gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(chooser), filter); - } -} - -gchar *file_chooser_get_extension(GtkWidget * chooser, FileTypes * filters) -{ - GtkFileFilter *filter; - const gchar *filter_name; - gint i; - - filter = gtk_file_chooser_get_filter(GTK_FILE_CHOOSER(chooser)); - filter_name = gtk_file_filter_get_name(filter); - for (i = 0; filters[i].name; i++) { - if (g_str_equal(filter_name, filters[i].name)) { - return filters[i].extension; - } - } - - return NULL; -} - -gpointer file_types_get_data_by_name(FileTypes * filters, gchar * filename) -{ - gint i; - - for (i = 0; filters[i].name; i++) { - if (g_str_has_suffix(filename, filters[i].extension)) { - return filters[i].data; - } - } - - return NULL; -} - -gchar *file_chooser_build_filename(GtkWidget * chooser, gchar * extension) -{ - gchar *filename = - gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(chooser)); - gchar *retval; - - if (g_str_has_suffix(filename, extension)) { - return filename; - } - - retval = g_strconcat(filename, extension, NULL); - g_free(filename); - - return retval; -} - -gboolean binreloc_init(gboolean try_hardcoded) -{ - GError *error = NULL; - gchar *tmp; - - DEBUG("initializing binreloc (hardcoded = %d)", try_hardcoded); - - /* If the runtime data directories we previously found, don't even try - to find them again. */ - if (params.path_data && params.path_lib) { - DEBUG("data and lib path already found."); - return TRUE; - } - - if (try_hardcoded || !gbr_init(&error)) { - /* We were asked to try hardcoded paths or BinReloc failed to initialize. */ - params.path_data = g_strdup(PREFIX); - params.path_lib = g_strdup(LIBPREFIX); - - if (error) { - g_error_free(error); - } - - DEBUG("%strying hardcoded paths.", - try_hardcoded ? "" : "binreloc init failed. "); - } else { - /* If we were able to initialize BinReloc, build the default data - and library paths. */ - DEBUG("done, trying to use binreloc paths."); - - tmp = gbr_find_data_dir(PREFIX); - params.path_data = g_build_filename(tmp, "hardinfo", NULL); - g_free(tmp); - - tmp = gbr_find_lib_dir(PREFIX); - params.path_lib = g_build_filename(tmp, "hardinfo", NULL); - g_free(tmp); - } - - DEBUG("searching for runtime data on these locations:"); - DEBUG(" lib: %s", params.path_lib); - DEBUG(" data: %s", params.path_data); - - /* Try to see if the uidefs.xml file isn't missing. This isn't the - definitive test, but it should do okay for most situations. */ - tmp = g_build_filename(params.path_data, "benchmark.data", NULL); - if (!g_file_test(tmp, G_FILE_TEST_EXISTS)) { - DEBUG("runtime data not found"); - - g_free(params.path_data); - g_free(params.path_lib); - g_free(tmp); - - params.path_data = params.path_lib = NULL; - - if (try_hardcoded) { - /* We tried the hardcoded paths, but still was unable to find the - runtime data. Give up. */ - DEBUG("giving up"); - return FALSE; - } else { - /* Even though BinReloc worked OK, the runtime data was not found. - Try the hardcoded paths. */ - DEBUG("trying to find elsewhere"); - return binreloc_init(TRUE); - } - } - g_free(tmp); - - DEBUG("runtime data found!"); - /* We found the runtime data; hope everything is fine */ - return TRUE; -} - -static void -log_handler(const gchar * log_domain, - GLogLevelFlags log_level, - const gchar * message, gpointer user_data) -{ - if (!params.gui_running) { - /* No GUI running: spit the message to the terminal */ - g_print("\n\n*** %s: %s\n\n", - (log_level & G_LOG_FLAG_FATAL) ? _("Error") : _("Warning"), - message); - } else { - /* Hooray! We have a GUI running! */ - GtkWidget *dialog; - - dialog = gtk_message_dialog_new_with_markup(NULL, GTK_DIALOG_MODAL, - (log_level & - G_LOG_FLAG_FATAL) ? - GTK_MESSAGE_ERROR : - GTK_MESSAGE_WARNING, - GTK_BUTTONS_CLOSE, - "%s\n\n%s", - (log_level & - G_LOG_FLAG_FATAL) ? - _("Fatal Error") : - _("Warning"), message); - - gtk_dialog_run(GTK_DIALOG(dialog)); - gtk_widget_destroy(dialog); - } -} - -void parameters_init(int *argc, char ***argv, ProgramParameters * param) -{ - static gboolean create_report = FALSE; - static gboolean show_version = FALSE; - static gboolean list_modules = FALSE; - static gboolean autoload_deps = FALSE; - static gboolean run_xmlrpc_server = FALSE; - static gchar *report_format = NULL; - static gchar *run_benchmark = NULL; - static gchar *result_format = NULL; - static gchar **use_modules = NULL; - - static GOptionEntry options[] = { - { - .long_name = "generate-report", - .short_name = 'r', - .arg = G_OPTION_ARG_NONE, - .arg_data = &create_report, - .description = N_("creates a report and prints to standard output")}, - { - .long_name = "report-format", - .short_name = 'f', - .arg = G_OPTION_ARG_STRING, - .arg_data = &report_format, - .description = N_("chooses a report format (text, html)")}, - { - .long_name = "run-benchmark", - .short_name = 'b', - .arg = G_OPTION_ARG_STRING, - .arg_data = &run_benchmark, - .description = N_("run benchmark; requires benchmark.so to be loaded")}, - { - .long_name = "result-format", - .short_name = 'g', - .arg = G_OPTION_ARG_STRING, - .arg_data = &result_format, - .description = N_("benchmark result format ([short], conf, shell)")}, - { - .long_name = "list-modules", - .short_name = 'l', - .arg = G_OPTION_ARG_NONE, - .arg_data = &list_modules, - .description = N_("lists modules")}, - { - .long_name = "load-module", - .short_name = 'm', - .arg = G_OPTION_ARG_STRING_ARRAY, - .arg_data = &use_modules, - .description = N_("specify module to load")}, - { - .long_name = "autoload-deps", - .short_name = 'a', - .arg = G_OPTION_ARG_NONE, - .arg_data = &autoload_deps, - .description = N_("automatically load module dependencies")}, -#ifdef HAS_LIBSOUP - { - .long_name = "xmlrpc-server", - .short_name = 'x', - .arg = G_OPTION_ARG_NONE, - .arg_data = &run_xmlrpc_server, - .description = N_("run in XML-RPC server mode")}, -#endif /* HAS_LIBSOUP */ - { - .long_name = "version", - .short_name = 'v', - .arg = G_OPTION_ARG_NONE, - .arg_data = &show_version, - .description = N_("shows program version and quit")}, - {NULL} - }; - GOptionContext *ctx; - - ctx = g_option_context_new(_("- System Profiler and Benchmark tool")); - g_option_context_set_ignore_unknown_options(ctx, FALSE); - g_option_context_set_help_enabled(ctx, TRUE); - - g_option_context_add_main_entries(ctx, options, *(argv)[0]); - g_option_context_parse(ctx, argc, argv, NULL); - - g_option_context_free(ctx); - - if (*argc >= 2) { - g_print(_("Unrecognized arguments.\n" - "Try ``%s --help'' for more information.\n"), *(argv)[0]); - exit(1); - } - - param->create_report = create_report; - param->report_format = REPORT_FORMAT_TEXT; - param->show_version = show_version; - param->list_modules = list_modules; - param->use_modules = use_modules; - param->run_benchmark = run_benchmark; - param->result_format = result_format; - param->autoload_deps = autoload_deps; - param->run_xmlrpc_server = run_xmlrpc_server; - param->argv0 = *(argv)[0]; - - if (report_format && g_str_equal(report_format, "html")) - param->report_format = REPORT_FORMAT_HTML; - - gchar *confdir = g_build_filename(g_get_home_dir(), ".hardinfo", NULL); - if (!g_file_test(confdir, G_FILE_TEST_EXISTS)) { - mkdir(confdir, 0744); - } - g_free(confdir); -} - -gboolean ui_init(int *argc, char ***argv) -{ - DEBUG("initializing gtk+ UI"); - - g_set_application_name("HardInfo"); - g_log_set_handler(NULL, - G_LOG_LEVEL_WARNING | G_LOG_FLAG_FATAL | - G_LOG_LEVEL_ERROR, log_handler, NULL); - - return gtk_init_check(argc, argv); -} - -void open_url(gchar * url) -{ - const gchar *browsers[] = { - "xdg-open", "gnome-open", "kfmclient openURL", - "sensible-browser", "firefox", "epiphany", - "iceweasel", "seamonkey", "galeon", "mozilla", - "opera", "konqueror", "netscape", "links -g", - NULL - }; - gint i = 0; - gchar *browser = (gchar *)g_getenv("BROWSER"); - - if (!browser || *browser == '\0') { - browser = (gchar *)browsers[i++]; - } - - do { - gchar *cmdline = g_strdup_printf("%s '%s'", browser, url); - - if (g_spawn_command_line_async(cmdline, NULL)) { - g_free(cmdline); - return; - } - - g_free(cmdline); - - browser = (gchar *)browsers[i++]; - } while (browser); - - g_warning(_("Couldn't find a Web browser to open URL %s."), url); -} - -/* Copyright: Jens Låås, SLU 2002 */ -gchar *strreplacechr(gchar * string, gchar * replace, gchar new_char) -{ - gchar *s; - for (s = string; *s; s++) - if (strchr(replace, *s)) - *s = new_char; - - return string; -} - -gchar *strreplace(gchar *string, gchar *replace, gchar *replacement) -{ - gchar **tmp, *ret; - - tmp = g_strsplit(string, replace, 0); - ret = g_strjoinv(replacement, tmp); - g_strfreev(tmp); - - return ret; -} - -static GHashTable *__module_methods = NULL; - -static void module_register_methods(ShellModule * module) -{ - ShellModuleMethod *(*get_methods) (void); - gchar *method_name; - - if (__module_methods == NULL) { - __module_methods = g_hash_table_new(g_str_hash, g_str_equal); - } - - if (g_module_symbol - (module->dll, "hi_exported_methods", (gpointer) & get_methods)) { - ShellModuleMethod *methods; - - for (methods = get_methods(); methods->name; methods++) { - ShellModuleMethod method = *methods; - gchar *name = g_path_get_basename(g_module_name(module->dll)); - gchar *simple_name = strreplace(name, "lib", ""); - - strend(simple_name, '.'); - - method_name = g_strdup_printf("%s::%s", simple_name, method.name); - g_hash_table_insert(__module_methods, method_name, - method.function); - g_free(name); - g_free(simple_name); - } - } - -} - -gchar *module_call_method(gchar * method) -{ - gchar *(*function) (void); - - if (__module_methods == NULL) { - return NULL; - } - - function = g_hash_table_lookup(__module_methods, method); - return function ? g_strdup(function()) : NULL; -} - -/* FIXME: varargs? */ -gchar *module_call_method_param(gchar * method, gchar * parameter) -{ - gchar *(*function) (gchar *param); - - if (__module_methods == NULL) { - return NULL; - } - - function = g_hash_table_lookup(__module_methods, method); - return function ? g_strdup(function(parameter)) : NULL; -} - -static gboolean remove_module_methods(gpointer key, gpointer value, gpointer data) -{ - return g_str_has_prefix(key, data); -} - -static void module_unload(ShellModule * module) -{ - GSList *entry; - - if (module->dll) { - gchar *name; - - if (module->deinit) { - DEBUG("cleaning up module \"%s\"", module->name); - module->deinit(); - } else { - DEBUG("module \"%s\" does not need cleanup", module->name); - } - - name = g_path_get_basename(g_module_name(module->dll)); - g_hash_table_foreach_remove(__module_methods, remove_module_methods, name); - - g_module_close(module->dll); - g_free(name); - } - - g_free(module->name); - g_object_unref(module->icon); - - for (entry = module->entries; entry; entry = entry->next) { - ShellModuleEntry *e = (ShellModuleEntry *)entry->data; - - g_source_remove_by_user_data(e); - g_free(e); - } - - g_slist_free(module->entries); - g_free(module); -} - - -void module_unload_all(void) -{ - Shell *shell; - GSList *module, *merge_id; - - shell = shell_get_main_shell(); - - sync_manager_clear_entries(); - shell_clear_timeouts(shell); - shell_clear_tree_models(shell); - shell_clear_field_updates(); - shell_set_title(shell, NULL); - - for (module = shell->tree->modules; module; module = module->next) { - module_unload((ShellModule *)module->data); - } - - for (merge_id = shell->merge_ids; merge_id; merge_id = merge_id->next) { - gtk_ui_manager_remove_ui(shell->ui_manager, - GPOINTER_TO_INT(merge_id->data)); - } - g_slist_free(shell->tree->modules); - g_slist_free(shell->merge_ids); - - shell->merge_ids = NULL; - shell->tree->modules = NULL; - shell->selected = NULL; -} - -static ShellModule *module_load(gchar * filename) -{ - ShellModule *module; - gchar *tmp; - - module = g_new0(ShellModule, 1); - - if (params.gui_running) { - gchar *tmpicon, *dot, *simple_name; - - tmpicon = g_strdup(filename); - dot = g_strrstr(tmpicon, "." G_MODULE_SUFFIX); - - *dot = '\0'; - - simple_name = strreplace(tmpicon, "lib", ""); - - tmp = g_strdup_printf("%s.png", simple_name); - module->icon = icon_cache_get_pixbuf(tmp); - - g_free(tmp); - g_free(tmpicon); - g_free(simple_name); - } - - tmp = g_build_filename(params.path_lib, "modules", filename, NULL); - module->dll = g_module_open(tmp, G_MODULE_BIND_LAZY); - DEBUG("gmodule resource for ``%s'' is %p", tmp, module->dll); - g_free(tmp); - - if (module->dll) { - void (*init) (void); - ModuleEntry *(*get_module_entries) (void); - gint(*weight_func) (void); - gchar *(*name_func) (void); - ModuleEntry *entries; - gint i = 0; - - if (!g_module_symbol(module->dll, "hi_module_get_entries", (gpointer) & get_module_entries) || - !g_module_symbol(module->dll, "hi_module_get_name", (gpointer) & name_func)) { - DEBUG("cannot find needed symbols; is ``%s'' a real module?", filename); - goto failed; - } - - if (g_module_symbol(module->dll, "hi_module_init", (gpointer) & init)) { - DEBUG("initializing module ``%s''", filename); - init(); - } - - g_module_symbol(module->dll, "hi_module_get_weight", - (gpointer) & weight_func); - - module->weight = weight_func ? weight_func() : 0; - module->name = name_func(); - - g_module_symbol(module->dll, "hi_module_get_about", - (gpointer) & (module->aboutfunc)); - g_module_symbol(module->dll, "hi_module_deinit", - (gpointer) & (module->deinit)); - g_module_symbol(module->dll, "hi_module_get_summary", - (gpointer) & (module->summaryfunc)); - - entries = get_module_entries(); - while (entries[i].name) { - if (*entries[i].name == '#') { i++; continue; } /* skip */ - - ShellModuleEntry *entry = g_new0(ShellModuleEntry, 1); - - if (params.gui_running) { - entry->icon = icon_cache_get_pixbuf(entries[i].icon); - } - entry->icon_file = entries[i].icon; - - g_module_symbol(module->dll, "hi_more_info", - (gpointer) & (entry->morefunc)); - g_module_symbol(module->dll, "hi_get_field", - (gpointer) & (entry->fieldfunc)); - g_module_symbol(module->dll, "hi_note_func", - (gpointer) & (entry->notefunc)); - - entry->name = _(entries[i].name); //gettext unname N_() in computer.c line 67 etc... - entry->scan_func = entries[i].scan_callback; - entry->func = entries[i].callback; - entry->number = i; - entry->flags = entries[i].flags; - - module->entries = g_slist_append(module->entries, entry); - - i++; - } - - DEBUG("registering methods for module ``%s''", filename); - module_register_methods(module); - } else { - DEBUG("cannot g_module_open(``%s''). permission problem?", filename); - failed: - DEBUG("loading module %s failed: %s", filename, g_module_error()); - - g_free(module->name); - g_free(module); - module = NULL; - } - - return module; -} - -static gboolean module_in_module_list(gchar * module, gchar ** module_list) -{ - int i = 0; - - if (!module_list) - return TRUE; - - for (; module_list[i]; i++) { - if (g_str_equal(module_list[i], module)) - return TRUE; - } - - return FALSE; -} - -static gint module_cmp(gconstpointer m1, gconstpointer m2) -{ - ShellModule *a = (ShellModule *) m1; - ShellModule *b = (ShellModule *) m2; - - return a->weight - b->weight; -} - -#if 0 -static void module_entry_free(gpointer data, gpointer user_data) -{ - ShellModuleEntry *entry = (ShellModuleEntry *) data; - - if (entry) { - g_free(entry->name); - g_object_unref(entry->icon); - - g_free(entry); - } -} -#endif - -ModuleAbout *module_get_about(ShellModule * module) -{ - if (module->aboutfunc) { - return module->aboutfunc(); - } - - return NULL; -} - -static GSList *modules_check_deps(GSList * modules) -{ - GSList *mm; - ShellModule *module; - - for (mm = modules; mm; mm = mm->next) { - gchar **(*get_deps) (void); - gchar **deps; - gint i; - - module = (ShellModule *) mm->data; - - if (g_module_symbol(module->dll, "hi_module_get_dependencies", - (gpointer) & get_deps)) { - for (i = 0, deps = get_deps(); deps[i]; i++) { - GSList *l; - ShellModule *m; - gboolean found = FALSE; - - for (l = modules; l && !found; l = l->next) { - m = (ShellModule *) l->data; - gchar *name = g_path_get_basename(g_module_name(m->dll)); - - found = g_str_equal(name, deps[i]); - g_free(name); - } - - if (!found) { - if (params.autoload_deps) { - ShellModule *mod = module_load(deps[i]); - - if (mod) - modules = g_slist_append(modules, mod); - modules = modules_check_deps(modules); /* re-check dependencies */ - - break; - } - - if (params.gui_running) { - GtkWidget *dialog; - - dialog = gtk_message_dialog_new(NULL, - GTK_DIALOG_DESTROY_WITH_PARENT, - GTK_MESSAGE_QUESTION, - GTK_BUTTONS_NONE, - _("Module \"%s\" depends on module \"%s\", load it?"), - module->name, - deps[i]); - gtk_dialog_add_buttons(GTK_DIALOG(dialog), - "_No", - GTK_RESPONSE_REJECT, - "_Open", - GTK_RESPONSE_ACCEPT, NULL); - - if (gtk_dialog_run(GTK_DIALOG(dialog)) == - GTK_RESPONSE_ACCEPT) { - ShellModule *mod = module_load(deps[i]); - - if (mod) - modules = g_slist_prepend(modules, mod); - modules = modules_check_deps(modules); /* re-check dependencies */ - } else { - g_error("HardInfo cannot run without loading the additional module."); - exit(1); - } - - gtk_widget_destroy(dialog); - } else { - g_error(_("Module \"%s\" depends on module \"%s\"."), - module->name, deps[i]); - } - } - } - } - } - - return modules; -} - - -GSList *modules_get_list() -{ - return modules_list; -} - -static GSList *modules_load(gchar ** module_list) -{ - GDir *dir; - GSList *modules = NULL; - ShellModule *module; - gchar *filename; - - filename = g_build_filename(params.path_lib, "modules", NULL); - dir = g_dir_open(filename, 0, NULL); - g_free(filename); - - if (dir) { - while ((filename = (gchar *) g_dir_read_name(dir))) { - if (g_strrstr(filename, "." G_MODULE_SUFFIX) && - module_in_module_list(filename, module_list) && - ((module = module_load(filename)))) { - modules = g_slist_prepend(modules, module); - } - } - - g_dir_close(dir); - } - - modules = modules_check_deps(modules); - - if (g_slist_length(modules) == 0) { - if (params.use_modules == NULL) { - g_error - (_("No module could be loaded. Check permissions on \"%s\" and try again."), - params.path_lib); - } else { - g_error - (_("No module could be loaded. Please use hardinfo -l to list all avai" - "lable modules and try again with a valid module list.")); - - } - } - - modules_list = g_slist_sort(modules, module_cmp); - return modules_list; -} - -GSList *modules_load_selected(void) -{ - return modules_load(params.use_modules); -} - -GSList *modules_load_all(void) -{ - return modules_load(NULL); -} - -gint tree_view_get_visible_height(GtkTreeView * tv) -{ - GtkTreePath *path; - GdkRectangle rect; - GtkTreeIter iter; - GtkTreeModel *model = gtk_tree_view_get_model(tv); - gint nrows = 1; - - path = gtk_tree_path_new_first(); - gtk_tree_view_get_cell_area(GTK_TREE_VIEW(tv), path, NULL, &rect); - - /* FIXME: isn't there any easier way to tell the number of rows? */ - gtk_tree_model_get_iter_first(model, &iter); - do { - nrows++; - } while (gtk_tree_model_iter_next(model, &iter)); - - gtk_tree_path_free(path); - - return nrows * rect.height; -} - -static gboolean __idle_free_do(gpointer ptr) -{ - g_free(ptr); - - return FALSE; -} - -#if RELEASE == 1 -gpointer idle_free(gpointer ptr) -#else -gpointer __idle_free(gpointer ptr, gchar * f, gint l) -#endif -{ - DEBUG("file: %s, line: %d, ptr %p", f, l, ptr); - - if (ptr) { - g_timeout_add(10000, __idle_free_do, ptr); - } - - return ptr; -} - -void module_entry_scan_all_except(ModuleEntry * entries, gint except_entry) -{ - ModuleEntry entry; - gint i = 0; - void (*scan_callback) (gboolean reload); - gchar *text; - - shell_view_set_enabled(FALSE); - - for (entry = entries[0]; entry.name; entry = entries[++i]) { - if (i == except_entry) - continue; - - text = g_strdup_printf(_("Scanning: %s..."), _(entry.name)); - shell_status_update(text); - g_free(text); - - if ((scan_callback = entry.scan_callback)) { - scan_callback(FALSE); - } - } - - shell_view_set_enabled(TRUE); - shell_status_update(_("Done.")); -} - -void module_entry_scan_all(ModuleEntry * entries) -{ - module_entry_scan_all_except(entries, -1); -} - -void module_entry_reload(ShellModuleEntry * module_entry) -{ - - if (module_entry->scan_func) { - module_entry->scan_func(TRUE); - } -} - -void module_entry_scan(ShellModuleEntry * module_entry) -{ - if (module_entry->scan_func) { - module_entry->scan_func(FALSE); - } -} - -gchar *module_entry_get_field(ShellModuleEntry * module_entry, gchar * field) -{ - if (module_entry->fieldfunc) { - return module_entry->fieldfunc(field); - } - - return NULL; -} - -gchar *module_entry_function(ShellModuleEntry * module_entry) -{ - if (module_entry->func) { - return module_entry->func(); - } - - return NULL; -} - -gchar *module_entry_get_moreinfo(ShellModuleEntry * module_entry, gchar * field) -{ - if (module_entry->morefunc) { - return module_entry->morefunc(field); - } - - return NULL; -} - -const gchar *module_entry_get_note(ShellModuleEntry * module_entry) -{ - if (module_entry->notefunc) { - return module_entry->notefunc(module_entry->number); - } - - return NULL; -} - -gchar *h_strdup_cprintf(const gchar * format, gchar * source, ...) -{ - gchar *buffer, *retn; - va_list args; - - va_start(args, source); - buffer = g_strdup_vprintf(format, args); - va_end(args); - - if (source) { - retn = g_strconcat(source, buffer, NULL); - g_free(buffer); - g_free(source); - } else { - retn = buffer; - } - - return retn; -} - -gchar *h_strconcat(gchar * string1, ...) -{ - gsize l; - va_list args; - gchar *s; - gchar *concat; - gchar *ptr; - - if (!string1) - return NULL; - - l = 1 + strlen(string1); - va_start(args, string1); - s = va_arg(args, gchar *); - while (s) { - l += strlen(s); - s = va_arg(args, gchar *); - } - va_end(args); - - concat = g_new(gchar, l); - ptr = concat; - - ptr = g_stpcpy(ptr, string1); - va_start(args, string1); - s = va_arg(args, gchar *); - while (s) { - ptr = g_stpcpy(ptr, s); - s = va_arg(args, gchar *); - } - va_end(args); - - g_free(string1); - - return concat; -} - -static gboolean h_hash_table_remove_all_true(gpointer key, gpointer data, gpointer user_data) -{ - return TRUE; -} - -void -h_hash_table_remove_all(GHashTable *hash_table) -{ - g_hash_table_foreach_remove(hash_table, - h_hash_table_remove_all_true, - NULL); -} - -gfloat -h_sysfs_read_float(gchar *endpoint, gchar *entry) -{ - gchar *tmp, *buffer; - gfloat return_value = 0.0f; - - tmp = g_build_filename(endpoint, entry, NULL); - if (g_file_get_contents(tmp, &buffer, NULL, NULL)) - return_value = atof(buffer); - - g_free(tmp); - g_free(buffer); - - return return_value; -} - -gint -h_sysfs_read_int(gchar *endpoint, gchar *entry) -{ - gchar *tmp, *buffer; - gint return_value = 0; - - tmp = g_build_filename(endpoint, entry, NULL); - if (g_file_get_contents(tmp, &buffer, NULL, NULL)) - return_value = atoi(buffer); - - g_free(tmp); - g_free(buffer); - - return return_value; -} - -gchar * -h_sysfs_read_string(gchar *endpoint, gchar *entry) -{ - gchar *tmp, *return_value; - - tmp = g_build_filename(endpoint, entry, NULL); - if (!g_file_get_contents(tmp, &return_value, NULL, NULL)) { - g_free(return_value); - - return_value = NULL; - } else { - return_value = g_strstrip(return_value); - } - - g_free(tmp); - - return return_value; -} - -static GHashTable *_moreinfo = NULL; - -void -moreinfo_init(void) -{ - if (G_UNLIKELY(_moreinfo)) { - DEBUG("moreinfo already initialized"); - return; - } - DEBUG("initializing moreinfo"); - _moreinfo = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free); -} - -void -moreinfo_shutdown(void) -{ - if (G_UNLIKELY(!_moreinfo)) { - DEBUG("moreinfo not initialized"); - return; - } - DEBUG("shutting down moreinfo"); - g_hash_table_destroy(_moreinfo); - _moreinfo = NULL; -} - -void -moreinfo_add_with_prefix(gchar *prefix, gchar *key, gchar *value) -{ - if (G_UNLIKELY(!_moreinfo)) { - DEBUG("moreinfo not initialized"); - return; - } - - if (prefix) { - gchar *hashkey = g_strconcat(prefix, ":", key, NULL); - g_hash_table_insert(_moreinfo, hashkey, value); - return; - } - - g_hash_table_insert(_moreinfo, g_strdup(key), value); -} - -void -moreinfo_add(gchar *key, gchar *value) -{ - moreinfo_add_with_prefix(NULL, key, value); -} - -static gboolean -_moreinfo_del_cb(gpointer key, gpointer value, gpointer data) -{ - return g_str_has_prefix(key, data); -} - -void -moreinfo_del_with_prefix(gchar *prefix) -{ - if (G_UNLIKELY(!_moreinfo)) { - DEBUG("moreinfo not initialized"); - return; - } - - g_hash_table_foreach_remove(_moreinfo, _moreinfo_del_cb, prefix); -} - -void -moreinfo_clear(void) -{ - if (G_UNLIKELY(!_moreinfo)) { - DEBUG("moreinfo not initialized"); - return; - } - h_hash_table_remove_all(_moreinfo); -} - -gchar * -moreinfo_lookup_with_prefix(gchar *prefix, gchar *key) -{ - if (G_UNLIKELY(!_moreinfo)) { - DEBUG("moreinfo not initialized"); - return 0; - } - - if (prefix) { - gchar *lookup_key = g_strconcat(prefix, ":", key, NULL); - gchar *result = g_hash_table_lookup(_moreinfo, lookup_key); - g_free(lookup_key); - return result; - } - - return g_hash_table_lookup(_moreinfo, key); -} - -gchar * -moreinfo_lookup(gchar *key) -{ - return moreinfo_lookup_with_prefix(NULL, key); -} - -#if !GLIB_CHECK_VERSION(2,44,0) -gboolean g_strv_contains(const gchar * const * strv, const gchar *str) { - /* g_strv_contains() requires glib>2.44 - * fallback for older versions */ - gint i = 0; - while(strv[i] != NULL) { - if (g_strcmp0(strv[i], str) == 0) - return 1; - i++; - } - return 0; -} -#endif - -/* Hardinfo labels that have # are truncated and/or hidden. - * Labels can't have $ because that is the delimiter in - * moreinfo. */ -gchar *hardinfo_clean_label(const gchar *v, int replacing) { - gchar *clean, *p; - - p = clean = g_strdup(v); - while (*p != 0) { - switch(*p) { - case '#': case '$': - *p = '_'; - break; - default: - break; - } - p++; - } - if (replacing) - g_free((gpointer)v); - return clean; -} - -/* hardinfo uses the values as {ht,x}ml, apparently */ -gchar *hardinfo_clean_value(const gchar *v, int replacing) { - gchar *clean, *tmp; - gchar **vl; - if (v == NULL) return NULL; - - vl = g_strsplit(v, "&", -1); - if (g_strv_length(vl) > 1) - clean = g_strjoinv("&", vl); - else - clean = g_strdup(v); - g_strfreev(vl); - - vl = g_strsplit(clean, "<", -1); - if (g_strv_length(vl) > 1) { - tmp = g_strjoinv("<", vl); - g_free(clean); - clean = tmp; - } - g_strfreev(vl); - - vl = g_strsplit(clean, ">", -1); - if (g_strv_length(vl) > 1) { - tmp = g_strjoinv(">", vl); - g_free(clean); - clean = tmp; - } - g_strfreev(vl); - - if (replacing) - g_free((gpointer)v); - return clean; -} diff --git a/hardinfo/vendor.c b/hardinfo/vendor.c deleted file mode 100644 index 47def3f9..00000000 --- a/hardinfo/vendor.c +++ /dev/null @@ -1,217 +0,0 @@ -/* - * HardInfo - Displays System Information - * Copyright (C) 2003-2009 Leandro A. F. Pereira - * - * List of vendors based on GtkSysInfo (c) Pissens Sebastien. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, version 2. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include -#include - -#include "vendor.h" -#include "syncmanager.h" -#include "config.h" -#include "hardinfo.h" - -static const Vendor vendors[] = { - {"ATI", "ATI Technologies", "www.ati.com"}, - {"nVidia", "nVidia", "www.nvidia.com"}, - {"NVidia", "nVidia", "www.nvidia.com"}, - {"3Com", "3Com", "www.3com.com"}, - {"Intel", "Intel", "www.intel.com"}, - {"Cirrus Logic", "Cirrus Logic", "www.cirrus.com"}, - {"VIA Technologies", "VIA Technologies", "www.via.com.tw"}, - {"VIA", "VIA Technologies", "www.via.com.tw"}, - {"hp", "Hewlett-Packard", "www.hp.com"}, - {"NEC Corporation", "NEC Coporation", "www.nec.com"}, - {"MAXTOR", "MAXTOR", "www.maxtor.com"}, - {"SAMSUNG", "SAMSUNG", "www.samsung.com"}, - {"PIONEER", "PIONEER", "www.pioneer-eur.com"}, - {"PLEXTOR", "PLEXTOR", "www.plextor.be"}, - {"Realtek Semiconductor", "Realtek", "www.realtek.com.tw"}, - {"TOSHIBA", "TOSHIBA", "www.toshiba.com"}, - {"LITE-ON", "LITE-ON", "www.liteonit.com"}, - {"WDC", "Western Digital", "www.wdc.com"}, - {"HL-DT-ST", "LG Electronics", "www.lge.com"}, - {"ST", "SEAGATE", "www.seagate.com"}, - {"Lexmark", "Lexmark", "www.lexmark.com"}, - {"_NEC", "NEC Corporation", "www.nec.com"}, - {"Creative Labs", "Creative Labs", "www.creative.com"}, - {"Brooktree", "Conexant", "www.brooktree.com"}, - {"Atheros", "Atheros Communications", "www.atheros.com"}, - {"MATSHITA", "Panasonic", "www.panasonic.com"}, - {"Silicon Image", "Silicon Image", "www.siliconimage.com"}, - {"Silicon Integrated Image", "Silicon Image", "www.siliconimage.com"}, - {"KYE", "KYE Systems", "www.genius-kye.com"}, - {"Broadcom", "Broadcom", "www.broadcom.com"}, - {"Apple", "Apple", "www.apple.com"}, - {"IBM", "IBM", "www.ibm.com"}, - {"Dell", "Dell Computer", "www.dell.com"}, - {"Logitech", "Logitech International", "www.logitech.com"}, - {"FUJITSU", "Fujitsu", "www.fujitsu.com"}, - {"CDU", "Sony", "www.sony.com"}, - {"SanDisk", "SanDisk", "www.sandisk.com"}, - {"ExcelStor", "ExcelStor Technology", "www.excelstor.com"}, - {"D-Link", "D-Link", "www.dlink.com.tw"}, - {"Giga-byte", "Gigabyte Technology", "www.gigabyte.com.tw"}, - {"Gigabyte", "Gigabyte Technology", "www.gigabyte.com.tw"}, - {"C-Media", "C-Media Electronics", "www.cmedia.com.tw"}, - {"Avermedia", "AVerMedia Technologies", "www.aver.com"}, - {"Philips", "Philips", "www.philips.com"}, - {"RaLink", "Ralink Technology", "www.ralinktech.com"}, - {"Siemens", "Siemens AG", "www.siemens.com"}, - {"HP", "Hewlett-Packard", "www.hp.com"}, - {"Hewlett-Packard", "Hewlett-Packard", "www.hp.com"}, - {"TEAC", "TEAC America", "www.teac.com"}, - {"Microsoft", "Microsoft", "www.microsoft.com"}, - {"Memorex", "Memorex Products", "www.memorex.com"}, - {"eMPIA", "eMPIA Technology", "www.empiatech.com.tw"}, - {"Canon", "Canon", "www.canon.com"}, - {"A4Tech", "A4tech", "www.a4tech.com"}, - {"ALCOR", "Alcor", "www.alcor.org"}, - {"Vimicro", "Vimicro", "www.vimicro.com"}, - {"OTi", "Ours Technology", "www.oti.com.tw"}, - {"BENQ", "BenQ", "www.benq.com"}, - {"Acer", "Acer", "www.acer.com"}, - {"QUANTUM", "Quantum", "www.quantum.com"}, - {"Kingston", "Kingston", "www.kingston.com"}, - {"Chicony", "Chicony", "www.chicony.com.tw"}, - {"Genius", "Genius", "www.genius.ru"}, - /* BIOS manufacturers */ - {"American Megatrends", "American Megatrends", "www.ami.com"}, - {"Award", "Award Software International", "www.award-bios.com"}, - {"Phoenix", "Phoenix Technologies", "www.phoenix.com"}, - /* x86 vendor strings */ - { "AMDisbetter!", "Advanced Micro Devices", "www.amd.com" }, - { "AuthenticAMD", "Advanced Micro Devices", "www.amd.com" }, - { "CentaurHauls", "VIA (formerly Centaur Technology)", "www.via.tw" }, - { "CyrixInstead", "Cyrix", "" }, - { "GenuineIntel", "Intel", "www.intel.com" }, - { "TransmetaCPU", "Transmeta", "" }, - { "GenuineTMx86", "Transmeta", "" }, - { "Geode by NSC", "National Semiconductor", "" }, - { "NexGenDriven", "NexGen", "" }, - { "RiseRiseRise", "Rise Technology", "" }, - { "SiS SiS SiS", "Silicon Integrated Systems", "" }, - { "UMC UMC UMC", "United Microelectronics Corporation", "" }, - { "VIA VIA VIA", "VIA", "www.via.tw" }, - { "Vortex86 SoC", "DMP Electronics", "" }, - /* x86 VM vendor strings */ - { "KVMKVMKVM", "KVM", "" }, - { "Microsoft Hv", "Microsoft Hyper-V", "www.microsoft.com" }, - { "lrpepyh vr", "Parallels", "" }, - { "VMwareVMware", "VMware", "" }, - { "XenVMMXenVMM", "Xen HVM", "" }, -}; - -static GSList *vendor_list = NULL; - -void vendor_init(void) -{ - gint i; - gchar *path; - static SyncEntry se = { - .fancy_name = "Update vendor list", - .name = "RecvVendorList", - .save_to = "vendor.conf", - .get_data = NULL - }; - - DEBUG("initializing vendor list"); - sync_manager_add_entry(&se); - - path = g_build_filename(g_get_home_dir(), ".hardinfo", "vendor.conf", NULL); - if (!g_file_test(path, G_FILE_TEST_EXISTS)) { - DEBUG("local vendor.conf not found, trying system-wise"); - g_free(path); - path = g_build_filename(params.path_data, "vendor.conf", NULL); - } - - if (g_file_test(path, G_FILE_TEST_EXISTS)) { - GKeyFile *vendors; - gchar *tmp; - gint num_vendors; - - DEBUG("loading %s", path); - - vendors = g_key_file_new(); - if (g_key_file_load_from_file(vendors, path, 0, NULL)) { - num_vendors = g_key_file_get_integer(vendors, "vendors", "number", NULL); - - for (i = num_vendors - 1; i >= 0; i--) { - Vendor *v = g_new0(Vendor, 1); - - tmp = g_strdup_printf("vendor%d", i); - - v->id = g_key_file_get_string(vendors, tmp, "id", NULL); - v->name = g_key_file_get_string(vendors, tmp, "name", NULL); - v->url = g_key_file_get_string(vendors, tmp, "url", NULL); - - vendor_list = g_slist_prepend(vendor_list, v); - - g_free(tmp); - } - } - - g_key_file_free(vendors); - } else { - DEBUG("system-wise vendor.conf not found, using internal database"); - - for (i = G_N_ELEMENTS(vendors) - 1; i >= 0; i--) { - vendor_list = g_slist_prepend(vendor_list, (gpointer) &vendors[i]); - } - } - - g_free(path); -} - -const gchar *vendor_get_name(const gchar * id) -{ - GSList *vendor; - - if (!id) { - return NULL; - } - - for (vendor = vendor_list; vendor; vendor = vendor->next) { - Vendor *v = (Vendor *)vendor->data; - - if (v && v->id && strstr(id, v->id)) { - return v->name; - } - } - - return id; /* What about const? */ -} - -const gchar *vendor_get_url(const gchar * id) -{ - GSList *vendor; - - if (!id) { - return NULL; - } - - for (vendor = vendor_list; vendor; vendor = vendor->next) { - Vendor *v = (Vendor *)vendor->data; - - if (v && v->id && strstr(id, v->id)) { - return v->url; - } - } - - return NULL; -} diff --git a/hardinfo2.1 b/hardinfo2.1 new file mode 100644 index 00000000..e1125e62 --- /dev/null +++ b/hardinfo2.1 @@ -0,0 +1,30 @@ +.\" Manpage for hardinfo. +.\" https://github.com/hwspeedy/hardinfo2/. +.TH HARDINFO "1" "January 2024" "2.0" "User Commands" +.SH NAME +\fBHardinfo2\fR \- System Information and Benchmark for Linux Systems. +.SH USAGE +\fBhardinfo2\fR [OPTION...] +.SH DESCRIPTION +Is a system information and benchmark for Linux systems, that gathers information about the +hardware and operating system, performs benchmarks with online compare against other machines, and generates reports. + +.SH OPTIONS +.TP +\fB\-h\fR, \fB\-\-help\fR +Show help options +.TP +\fB\-r\fR, \fB\-\-generate\-report\fR +creates a report and prints to standard output +.TP +\fB\-f\fR, \fB\-\-report\-format\fR +chooses a report format (text, html) +.TP +\fB\-b\fR, \fB\-\-run\-benchmark\fR +run benchmark +.TP +\fB\-v\fR, \fB\-\-version\fR +shows program version and quit +.SH COPYRIGHT +\fBHardinfo2\fR its Copyright \(co 2003-2023 L. A. F. Pereira, 2024- Hardinfo2 Project\fR. +This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. diff --git a/hardinfo2.desktop.cmake b/hardinfo2.desktop.cmake new file mode 100644 index 00000000..ea8329bb --- /dev/null +++ b/hardinfo2.desktop.cmake @@ -0,0 +1,12 @@ +[Desktop Entry] +Name=Hardinfo2 +Comment=System Information and Benchmark +Comment[de]=Systeminformationen und Benchmark +Comment[ru]=Информация о системе и тесты +Exec=hardinfo2 +Icon=hardinfo2 +Terminal=false +Type=Application +StartupNotify=true +Categories=System;Utilities; +Keywords=linux;kernel;system;hardware;cpu;processor;capabilities;frequency;memory;ram;board;resources;sensors;devices;usb;pci;display;network;benchmark;test; diff --git a/hardinfo2/binreloc.c b/hardinfo2/binreloc.c new file mode 100644 index 00000000..f47a3fae --- /dev/null +++ b/hardinfo2/binreloc.c @@ -0,0 +1,668 @@ +/* + * BinReloc - a library for creating relocatable executables + * Written by: Hongli Lai + * http://autopackage.org/ + * + * This source code is public domain. You can relicense this code + * under whatever license you want. + * + * See http://autopackage.org/docs/binreloc/ for + * more information and how to use this. + */ + +#ifndef __BINRELOC_C__ +#define __BINRELOC_C__ + +#include +#include +#include +#include +#include +#include +#include +#include "binreloc.h" +#include "config.h" + +G_BEGIN_DECLS +/** @internal + * Find the canonical filename of the executable. Returns the filename + * (which must be freed) or NULL on error. If the parameter 'error' is + * not NULL, the error code will be stored there, if an error occured. + */ +static char *_br_find_exe(GbrInitError * error) +{ + char *path, *path2, *line, *result; + size_t buf_size; + ssize_t size; + struct stat stat_buf; + FILE *f; + + /* Read from /proc/self/exe (symlink) */ + if (sizeof(path) > SSIZE_MAX) + buf_size = SSIZE_MAX - 1; + else + buf_size = PATH_MAX - 1; + path = (char *) g_try_malloc(buf_size); + if (path == NULL) { + /* Cannot allocate memory. */ + if (error) + *error = GBR_INIT_ERROR_NOMEM; + return NULL; + } + path2 = (char *) g_try_malloc(buf_size); + if (path2 == NULL) { + /* Cannot allocate memory. */ + if (error) + *error = GBR_INIT_ERROR_NOMEM; + g_free(path); + return NULL; + } + + strncpy(path2, "/proc/self/exe", buf_size - 1); + + while (1) { + int i; + + size = readlink(path2, path, buf_size - 1); + if (size == -1) { + /* Error. */ + g_free(path2); + break; + } + + /* readlink() success. */ + path[size] = '\0'; + + /* Check whether the symlink's target is also a symlink. + * We want to get the final target. */ + i = stat(path, &stat_buf); + if (i == -1) { + /* Error. */ + g_free(path2); + break; + } + + /* stat() success. */ + if (!S_ISLNK(stat_buf.st_mode)) { + /* path is not a symlink. Done. */ + g_free(path2); + return path; + } + + /* path is a symlink. Continue loop and resolve this. */ + strncpy(path, path2, buf_size - 1); + } + + + /* readlink() or stat() failed; this can happen when the program is + * running in Valgrind 2.2. Read from /proc/self/maps as fallback. */ + + buf_size = PATH_MAX + 128; + line = (char *) g_try_realloc(path, buf_size); + if (line == NULL) { + /* Cannot allocate memory. */ + g_free(path); + if (error) + *error = GBR_INIT_ERROR_NOMEM; + return NULL; + } + + f = fopen("/proc/self/maps", "r"); + if (f == NULL) { + g_free(line); + if (error) + *error = GBR_INIT_ERROR_OPEN_MAPS; + return NULL; + } + + /* The first entry should be the executable name. */ + result = fgets(line, (int) buf_size, f); + if (result == NULL) { + fclose(f); + g_free(line); + if (error) + *error = GBR_INIT_ERROR_READ_MAPS; + return NULL; + } + + /* Get rid of newline character. */ + buf_size = strlen(line); + if (buf_size <= 0) { + /* Huh? An empty string? */ + fclose(f); + g_free(line); + if (error) + *error = GBR_INIT_ERROR_INVALID_MAPS; + return NULL; + } + if (line[buf_size - 1] == 10) + line[buf_size - 1] = 0; + + /* Extract the filename; it is always an absolute path. */ + path = strchr(line, '/'); + + /* Sanity check. */ + if (strstr(line, " r-xp ") == NULL || path == NULL) { + fclose(f); + g_free(line); + if (error) + *error = GBR_INIT_ERROR_INVALID_MAPS; + return NULL; + } + + path = g_strdup(path); + g_free(line); + fclose(f); + return path; +} + + +/** @internal + * Find the canonical filename of the executable which owns symbol. + * Returns a filename which must be freed, or NULL on error. + */ +static char *_br_find_exe_for_symbol(const void *symbol, + GbrInitError * error) +{ +#define SIZE PATH_MAX + 100 + FILE *f; + size_t address_string_len; + char *address_string, line[SIZE], *found; + + if (symbol == NULL) + return (char *) NULL; + + f = fopen("/proc/self/maps", "r"); + if (f == NULL) + return (char *) NULL; + + address_string_len = 4; + address_string = (char *) g_try_malloc(address_string_len); + found = (char *) NULL; + + while (!feof(f)) { + char *start_addr, *end_addr, *end_addr_end, *file; + void *start_addr_p, *end_addr_p; + size_t len; + + if (fgets(line, SIZE, f) == NULL) + break; + + /* Sanity check. */ + if (strstr(line, " r-xp ") == NULL || strchr(line, '/') == NULL) + continue; + + /* Parse line. */ + start_addr = line; + end_addr = strchr(line, '-'); + file = strchr(line, '/'); + + /* More sanity check. */ + if (!(file > end_addr && end_addr != NULL && end_addr[0] == '-')) + continue; + + end_addr[0] = '\0'; + end_addr++; + end_addr_end = strchr(end_addr, ' '); + if (end_addr_end == NULL) + continue; + + end_addr_end[0] = '\0'; + len = strlen(file); + if (len == 0) + continue; + if (file[len - 1] == '\n') + file[len - 1] = '\0'; + + /* Get rid of "(deleted)" from the filename. */ + len = strlen(file); + if (len > 10 && strcmp(file + len - 10, " (deleted)") == 0) + file[len - 10] = '\0'; + + /* I don't know whether this can happen but better safe than sorry. */ + len = strlen(start_addr); + if (len != strlen(end_addr)) + continue; + + + /* Transform the addresses into a string in the form of 0xdeadbeef, + * then transform that into a pointer. */ + if (address_string_len < len + 3) { + address_string_len = len + 3; + address_string = + (char *) g_try_realloc(address_string, address_string_len); + } + + memcpy(address_string, "0x", 2); + memcpy(address_string + 2, start_addr, len); + address_string[2 + len] = '\0'; + sscanf(address_string, "%p", &start_addr_p); + + memcpy(address_string, "0x", 2); + memcpy(address_string + 2, end_addr, len); + address_string[2 + len] = '\0'; + sscanf(address_string, "%p", &end_addr_p); + + + if (symbol >= start_addr_p && symbol < end_addr_p) { + found = file; + break; + } + } + + g_free(address_string); + fclose(f); + + if (found == NULL) + return (char *) NULL; + else + return g_strdup(found); +} + + +static gchar *exe = NULL; + +static void set_gerror(GError ** error, GbrInitError errcode); + + +/** Initialize the BinReloc library (for applications). + * + * This function must be called before using any other BinReloc functions. + * It attempts to locate the application's canonical filename. + * + * @note If you want to use BinReloc for a library, then you should call + * gbr_init_lib() instead. + * + * @param error If BinReloc failed to initialize, then the error report will + * be stored in this variable. Set to NULL if you don't want an + * error report. See the #GbrInitError for a list of error + * codes. + * + * @returns TRUE on success, FALSE if BinReloc failed to initialize. + */ +gboolean gbr_init(GError ** error) +{ + GbrInitError errcode = 0; + + /* Locate the application's filename. */ + exe = _br_find_exe(&errcode); + if (exe != NULL) + /* Success! */ + return TRUE; + else { + /* Failed :-( */ + set_gerror(error, errcode); + return FALSE; + } +} + + +/** Initialize the BinReloc library (for libraries). + * + * This function must be called before using any other BinReloc functions. + * It attempts to locate the calling library's canonical filename. + * + * @note The BinReloc source code MUST be included in your library, or this + * function won't work correctly. + * + * @returns TRUE on success, FALSE if a filename cannot be found. + */ +gboolean gbr_init_lib(GError ** error) +{ + GbrInitError errcode = 0; + + exe = _br_find_exe_for_symbol((const void *) "", &errcode); + if (exe != NULL) + /* Success! */ + return TRUE; + else { + /* Failed :-( */ + set_gerror(error, errcode); + return exe != NULL; + } +} + + +static void set_gerror(GError ** error, GbrInitError errcode) +{ + gchar *error_message; + + if (error == NULL) + return; + + switch (errcode) { + case GBR_INIT_ERROR_NOMEM: + error_message = "Cannot allocate memory."; + break; + case GBR_INIT_ERROR_OPEN_MAPS: + error_message = "Unable to open /proc/self/maps for reading."; + break; + case GBR_INIT_ERROR_READ_MAPS: + error_message = "Unable to read from /proc/self/maps."; + break; + case GBR_INIT_ERROR_INVALID_MAPS: + error_message = "The file format of /proc/self/maps is invalid."; + break; + case GBR_INIT_ERROR_DISABLED: + error_message = "Binary relocation support is disabled."; + break; + default: + error_message = "Unknown error."; + break; + }; + g_set_error(error, g_quark_from_static_string("GBinReloc"), + errcode, "%s", error_message); +} + + +/** Find the canonical filename of the current application. + * + * @param default_exe A default filename which will be used as fallback. + * @returns A string containing the application's canonical filename, + * which must be freed when no longer necessary. If BinReloc is + * not initialized, or if the initialization function failed, + * then a copy of default_exe will be returned. If default_exe + * is NULL, then NULL will be returned. + */ +gchar *gbr_find_exe(const gchar * default_exe) +{ + if (exe == NULL) { + /* BinReloc is not initialized. */ + if (default_exe != NULL) + return g_strdup(default_exe); + else + return NULL; + } + return g_strdup(exe); +} + + +/** Locate the directory in which the current application is installed. + * + * The prefix is generated by the following pseudo-code evaluation: + * \code + * dirname(exename) + * \endcode + * + * @param default_dir A default directory which will used as fallback. + * @return A string containing the directory, which must be freed when no + * longer necessary. If BinReloc is not initialized, or if the + * initialization function failed, then a copy of default_dir + * will be returned. If default_dir is NULL, then NULL will be + * returned. + */ +gchar *gbr_find_exe_dir(const gchar * default_dir) +{ + if (exe == NULL) { + /* BinReloc not initialized. */ + if (default_dir != NULL) + return g_strdup(default_dir); + else + return NULL; + } + + return g_path_get_dirname(exe); +} + + +/** Locate the prefix in which the current application is installed. + * + * The prefix is generated by the following pseudo-code evaluation: + * \code + * dirname(dirname(exename)) + * \endcode + * + * @param default_prefix A default prefix which will used as fallback. + * @return A string containing the prefix, which must be freed when no + * longer necessary. If BinReloc is not initialized, or if the + * initialization function failed, then a copy of default_prefix + * will be returned. If default_prefix is NULL, then NULL will be + * returned. + */ +gchar *gbr_find_prefix(const gchar * default_prefix) +{ + gchar *dir1, *dir2; + + if (exe == NULL) { + /* BinReloc not initialized. */ + if (default_prefix != NULL) + return g_strdup(default_prefix); + else + return NULL; + } + + dir1 = g_path_get_dirname(exe); + dir2 = g_path_get_dirname(dir1); + g_free(dir1); + return dir2; +} + + +/** Locate the application's binary folder. + * + * The path is generated by the following pseudo-code evaluation: + * \code + * prefix + "/bin" + * \endcode + * + * @param default_bin_dir A default path which will used as fallback. + * @return A string containing the bin folder's path, which must be freed when + * no longer necessary. If BinReloc is not initialized, or if the + * initialization function failed, then a copy of default_bin_dir will + * be returned. If default_bin_dir is NULL, then NULL will be returned. + */ +gchar *gbr_find_bin_dir(const gchar * default_bin_dir) +{ + gchar *prefix, *dir; + + prefix = gbr_find_prefix(NULL); + if (prefix == NULL) { + /* BinReloc not initialized. */ + if (default_bin_dir != NULL) + return g_strdup(default_bin_dir); + else + return NULL; + } + + dir = g_build_filename(prefix, "bin", NULL); + g_free(prefix); + return dir; +} + + +/** Locate the application's superuser binary folder. + * + * The path is generated by the following pseudo-code evaluation: + * \code + * prefix + "/sbin" + * \endcode + * + * @param default_sbin_dir A default path which will used as fallback. + * @return A string containing the sbin folder's path, which must be freed when + * no longer necessary. If BinReloc is not initialized, or if the + * initialization function failed, then a copy of default_sbin_dir will + * be returned. If default_bin_dir is NULL, then NULL will be returned. + */ +gchar *gbr_find_sbin_dir(const gchar * default_sbin_dir) +{ + gchar *prefix, *dir; + + prefix = gbr_find_prefix(NULL); + if (prefix == NULL) { + /* BinReloc not initialized. */ + if (default_sbin_dir != NULL) + return g_strdup(default_sbin_dir); + else + return NULL; + } + + dir = g_build_filename(prefix, "sbin", NULL); + g_free(prefix); + return dir; +} + + +/** Locate the application's data folder. + * + * The path is generated by the following pseudo-code evaluation: + * \code + * prefix + "/share" + * \endcode + * + * @param default_data_dir A default path which will used as fallback. + * @return A string containing the data folder's path, which must be freed when + * no longer necessary. If BinReloc is not initialized, or if the + * initialization function failed, then a copy of default_data_dir + * will be returned. If default_data_dir is NULL, then NULL will be + * returned. + */ +gchar *gbr_find_data_dir(const gchar * default_data_dir) +{ + gchar *prefix, *dir; + + prefix = gbr_find_prefix(NULL); + if (prefix == NULL) { + /* BinReloc not initialized. */ + if (default_data_dir != NULL) + return g_strdup(default_data_dir); + else + return NULL; + } + + dir = g_build_filename(prefix, "share", NULL); + g_free(prefix); + return dir; +} + + +/** Locate the application's localization folder. + * + * The path is generated by the following pseudo-code evaluation: + * \code + * prefix + "/share/locale" + * \endcode + * + * @param default_locale_dir A default path which will used as fallback. + * @return A string containing the localization folder's path, which must be freed when + * no longer necessary. If BinReloc is not initialized, or if the + * initialization function failed, then a copy of default_locale_dir will be returned. + * If default_locale_dir is NULL, then NULL will be returned. + */ +gchar *gbr_find_locale_dir(const gchar * default_locale_dir) +{ + gchar *data_dir, *dir; + + data_dir = gbr_find_data_dir(NULL); + if (data_dir == NULL) { + /* BinReloc not initialized. */ + if (default_locale_dir != NULL) + return g_strdup(default_locale_dir); + else + return NULL; + } + + dir = g_build_filename(data_dir, "locale", NULL); + g_free(data_dir); + return dir; +} + + +/** Locate the application's library folder. + * + * The path is generated by the following pseudo-code evaluation: + * \code + * prefix + "/lib" + * \endcode + * + * @param default_lib_dir A default path which will used as fallback. + * @return A string containing the library folder's path, which must be freed when + * no longer necessary. If BinReloc is not initialized, or if the + * initialization function failed, then a copy of default_lib_dir will be returned. + * If default_lib_dir is NULL, then NULL will be returned. + */ +gchar *gbr_find_lib_dir(const gchar * default_lib_dir) +{ + gchar *prefix, *dir; + + prefix = gbr_find_prefix(NULL); + if (prefix == NULL) { + /* BinReloc not initialized. */ + if (default_lib_dir != NULL) + return g_strdup(default_lib_dir); + else + return NULL; + } + + dir = g_build_filename(prefix, LIBDIR, NULL); + + g_free(prefix); + return dir; +} + + +/** Locate the application's libexec folder. + * + * The path is generated by the following pseudo-code evaluation: + * \code + * prefix + "/libexec" + * \endcode + * + * @param default_libexec_dir A default path which will used as fallback. + * @return A string containing the libexec folder's path, which must be freed when + * no longer necessary. If BinReloc is not initialized, or if the initialization + * function failed, then a copy of default_libexec_dir will be returned. + * If default_libexec_dir is NULL, then NULL will be returned. + */ +gchar *gbr_find_libexec_dir(const gchar * default_libexec_dir) +{ + gchar *prefix, *dir; + + prefix = gbr_find_prefix(NULL); + if (prefix == NULL) { + /* BinReloc not initialized. */ + if (default_libexec_dir != NULL) + return g_strdup(default_libexec_dir); + else + return NULL; + } + + dir = g_build_filename(prefix, "libexec", NULL); + g_free(prefix); + return dir; +} + + +/** Locate the application's configuration files folder. + * + * The path is generated by the following pseudo-code evaluation: + * \code + * prefix + "/etc" + * \endcode + * + * @param default_etc_dir A default path which will used as fallback. + * @return A string containing the etc folder's path, which must be freed when + * no longer necessary. If BinReloc is not initialized, or if the initialization + * function failed, then a copy of default_etc_dir will be returned. + * If default_etc_dir is NULL, then NULL will be returned. + */ +gchar *gbr_find_etc_dir(const gchar * default_etc_dir) +{ + gchar *prefix, *dir; + + prefix = gbr_find_prefix(NULL); + if (prefix == NULL) { + /* BinReloc not initialized. */ + if (default_etc_dir != NULL) + return g_strdup(default_etc_dir); + else + return NULL; + } + + dir = g_build_filename(prefix, "etc", NULL); + g_free(prefix); + return dir; +} + + +G_END_DECLS +#endif /* __BINRELOC_C__ */ diff --git a/hardinfo2/cpu_util.c b/hardinfo2/cpu_util.c new file mode 100644 index 00000000..acbe63db --- /dev/null +++ b/hardinfo2/cpu_util.c @@ -0,0 +1,252 @@ +/* + * HardInfo - Displays System Information + * Copyright (C) 2003-2006 L. A. F. Pereira + * This file by Burt P. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 2 or later. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include +#include "hardinfo.h" +#include "cpu_util.h" +#include "cpubits.h" + +#define CPU_TOPO_NULL -9877 + +const gchar *byte_order_str() { +#if G_BYTE_ORDER == G_LITTLE_ENDIAN + return _("Little Endian"); +#else + return _("Big Endian"); +#endif +} + +int processor_has_flag(gchar * strflags, gchar * strflag) +{ + gchar **flags; + gint ret = 0; + if (strflags == NULL || strflag == NULL) + return 0; + flags = g_strsplit(strflags, " ", 0); + ret = g_strv_contains((const gchar * const *)flags, strflag); + g_strfreev(flags); + return ret; +} + +gchar* get_cpu_str(const gchar* file, gint cpuid) { + gchar *tmp0 = NULL; + gchar *tmp1 = NULL; + tmp0 = g_strdup_printf("/sys/devices/system/cpu/cpu%d/%s", cpuid, file); + g_file_get_contents(tmp0, &tmp1, NULL, NULL); + g_free(tmp0); + return tmp1; +} + +gint get_cpu_int(const char* item, int cpuid, int null_val) { + gchar *fc = NULL; + int ret = null_val; + fc = get_cpu_str(item, cpuid); + if (fc) { + ret = atol(fc); + g_free(fc); + } + return ret; +} + +/* cpubits is 32768 bits long + * core_ids are not unique among physical_ids + * hack up cpubits into 128 packs of 256 cores + * to make cores unique in cpubits */ +#define MAX_CORES_PER_PACK 256 +#define MAX_PACKS 128 + +int cpu_procs_cores_threads_nodes(int *p, int *c, int *t, int *n) +{ + cpubits *threads, *cores, *packs; + char *tmp; + int i, m, pack_id, core_id; + + g_file_get_contents("/sys/devices/system/cpu/present", &tmp, NULL, NULL); + if (tmp == NULL) { + *p = *c = *t = *n = -1; + return 0; + } + + threads = cpubits_from_str(tmp); + cores = cpubits_from_str(""); + packs = cpubits_from_str(""); + m = cpubits_max(threads); + for (i = 0; i <= m; i++) { + pack_id = get_cpu_int("topology/physical_package_id", i, CPU_TOPO_NULL); + core_id = get_cpu_int("topology/core_id", i, CPU_TOPO_NULL); + if (pack_id < 0) + pack_id = 0; + CPUBIT_SET(packs, pack_id); + if (core_id >= 0) { + CPUBIT_SET(cores, (pack_id * MAX_CORES_PER_PACK) + core_id); + } + } + + *t = cpubits_count(threads); + *c = cpubits_count(cores); + *p = cpubits_count(packs); + *n = 1; + + g_free(tmp); + g_file_get_contents("/sys/devices/system/node/possible", &tmp, NULL, NULL); + if (tmp != NULL) { + cpubits *nodes = cpubits_from_str(tmp); + if (nodes) + *n = cpubits_count(nodes); + free(nodes); + } + + if (!*c) + *c = 1; + if (!*p) + *p = 1; + if (!*n) + *n = 1; + + g_free(threads); + g_free(cores); + g_free(packs); + g_free(tmp); + return 1; +} + +cpufreq_data *cpufreq_new(gint id) +{ + cpufreq_data *cpufd; + cpufd = malloc(sizeof(cpufreq_data)); + if (cpufd) { + memset(cpufd, 0, sizeof(cpufreq_data)); + cpufd->id = id; + cpufreq_update(cpufd, 0); + } + return cpufd; +} + +void cpufreq_update(cpufreq_data *cpufd, int cur_only) +{ + if (cpufd) { + cpufd->cpukhz_cur = get_cpu_int("cpufreq/scaling_cur_freq", cpufd->id, 0); + if (cur_only) return; + cpufd->scaling_driver = get_cpu_str("cpufreq/scaling_driver", cpufd->id); + cpufd->scaling_governor = get_cpu_str("cpufreq/scaling_governor", cpufd->id); + cpufd->transition_latency = get_cpu_int("cpufreq/cpuinfo_transition_latency", cpufd->id, 0); + cpufd->cpukhz_min = get_cpu_int("cpufreq/scaling_min_freq", cpufd->id, 0); + cpufd->cpukhz_max = get_cpu_int("cpufreq/scaling_max_freq", cpufd->id, 0); + if (cpufd->scaling_driver == NULL) cpufd->scaling_driver = g_strdup("(Unknown)"); + if (cpufd->scaling_governor == NULL) cpufd->scaling_governor = g_strdup("(Unknown)"); + + /* x86 uses freqdomain_cpus, all others use affected_cpus */ + cpufd->shared_list = get_cpu_str("cpufreq/freqdomain_cpus", cpufd->id); + if (cpufd->shared_list == NULL) cpufd->shared_list = get_cpu_str("cpufreq/affected_cpus", cpufd->id); + if (cpufd->shared_list == NULL) cpufd->shared_list = g_strdup_printf("%d", cpufd->id); + } +} + +void cpufreq_free(cpufreq_data *cpufd) +{ + if (cpufd) { + g_free(cpufd->scaling_driver); + g_free(cpufd->scaling_governor); + } + g_free(cpufd); +} + +cpu_topology_data *cputopo_new(gint id) +{ + cpu_topology_data *cputd; + cputd = malloc(sizeof(cpu_topology_data)); + if (cputd) { + memset(cputd, 0, sizeof(cpu_topology_data)); + cputd->id = id; + cputd->socket_id = get_cpu_int("topology/physical_package_id", id, CPU_TOPO_NULL); + cputd->core_id = get_cpu_int("topology/core_id", id, CPU_TOPO_NULL); + cputd->book_id = get_cpu_int("topology/book_id", id, CPU_TOPO_NULL); + cputd->drawer_id = get_cpu_int("topology/drawer_id", id, CPU_TOPO_NULL); + } + return cputd; + +} + +void cputopo_free(cpu_topology_data *cputd) +{ + g_free(cputd); +} + +gchar *cpufreq_section_str(cpufreq_data *cpufd) +{ + if (cpufd == NULL) + return g_strdup(""); + + if (cpufd->cpukhz_min || cpufd->cpukhz_max || cpufd->cpukhz_cur) { + return g_strdup_printf( + "[%s]\n" + "%s=%d %s\n" + "%s=%d %s\n" + "%s=%d %s\n" + "%s=%d %s\n" + "%s=%s\n" + "%s=%s\n", + _("Frequency Scaling"), + _("Minimum"), cpufd->cpukhz_min, _("kHz"), + _("Maximum"), cpufd->cpukhz_max, _("kHz"), + _("Current"), cpufd->cpukhz_cur, _("kHz"), + _("Transition Latency"), cpufd->transition_latency, _("ns"), + _("Governor"), cpufd->scaling_governor, + _("Driver"), cpufd->scaling_driver); + } else { + return g_strdup_printf( + "[%s]\n" + "%s=%s\n", + _("Frequency Scaling"), + _("Driver"), cpufd->scaling_driver); + } +} + +gchar *cputopo_section_str(cpu_topology_data *cputd) +{ + static const char na[] = N_("(Not Available)"); + char sock_str[64] = "", core_str[64] = ""; + char book_str[64] = "", drawer_str[64] = ""; + + if (cputd == NULL) + return g_strdup(""); + + if (cputd->socket_id != CPU_TOPO_NULL && cputd->socket_id != -1) + sprintf(sock_str, "%s=%d\n", _("Socket"), cputd->socket_id); + else + sprintf(sock_str, "%s=%s\n", _("Socket"), na); + + if (cputd->core_id != CPU_TOPO_NULL) + sprintf(core_str, "%s=%d\n", _("Core"), cputd->core_id); + else + sprintf(core_str, "%s=%s\n", _("Core"), na); + + if (cputd->book_id != CPU_TOPO_NULL) + sprintf(core_str, "%s=%d\n", _("Book"), cputd->book_id); + if (cputd->book_id != CPU_TOPO_NULL) + sprintf(core_str, "%s=%d\n", _("Drawer"), cputd->drawer_id); + + return g_strdup_printf( + "[%s]\n" + "%s=%d\n" + "%s%s%s%s", + _("Topology"), + _("ID"), cputd->id, + sock_str, core_str, book_str, drawer_str ); +} diff --git a/hardinfo2/dmi_util.c b/hardinfo2/dmi_util.c new file mode 100644 index 00000000..35f9282f --- /dev/null +++ b/hardinfo2/dmi_util.c @@ -0,0 +1,450 @@ +/* + * HardInfo - Displays System Information + * Copyright (C) 2003-2017 L. A. F. Pereira + * This file + * Copyright (C) 2017 Burt P. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 2 or later. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include "hardinfo.h" +#include "dmi_util.h" + +static const char *dmi_type_strings[] = { + [0] = N_("BIOS Information"), + [1] = N_("System"), + [2] = N_("Base Board"), + [3] = N_("Chassis"), + [4] = N_("Processor"), + [5] = N_("Memory Controller"), + [6] = N_("Memory Module"), + [7] = N_("Cache"), + [8] = N_("Port Connector"), + [9] = N_("System Slots"), + [10] = N_("On Board Devices"), + [11] = N_("OEM Strings"), + [12] = N_("System Configuration Options"), + [13] = N_("BIOS Language"), + [14] = N_("Group Associations"), + [15] = N_("System Event Log"), + [16] = N_("Physical Memory Array"), + [17] = N_("Memory Device"), + [18] = N_("32-bit Memory Error"), + [19] = N_("Memory Array Mapped Address"), + [20] = N_("Memory Device Mapped Address"), + [21] = N_("Built-in Pointing Device"), + [22] = N_("Portable Battery"), + [23] = N_("System Reset"), + [24] = N_("Hardware Security"), + [25] = N_("System Power Controls"), + [26] = N_("Voltage Probe"), + [27] = N_("Cooling Device"), + [28] = N_("Temperature Probe"), + [29] = N_("Electrical Current Probe"), + [30] = N_("Out-of-band Remote Access"), + [31] = N_("Boot Integrity Services"), + [32] = N_("System Boot"), + [33] = N_("64-bit Memory Error"), + [34] = N_("Management Device"), + [35] = N_("Management Device Component"), + [36] = N_("Management Device Threshold Data"), + [37] = N_("Memory Channel"), + [38] = N_("IPMI Device"), + [39] = N_("Power Supply"), + [40] = N_("Additional Information"), + [41] = N_("Onboard Device"), + //127 = End of Table +}; + +/* frees the string and sets it NULL if it is to be ignored + * returns -1 if error, 0 if ok, 1 if ignored */ +static int ignore_placeholder_strings(gchar **pstr) { + gchar *chk, *p; + if (pstr == NULL || *pstr == NULL) + return -1; + chk = g_strdup(*pstr); + +#define DMI_IGNORE(m) if (strcasecmp(m, *pstr) == 0) { g_free(chk); g_free(*pstr); *pstr = NULL; return 1; } + DMI_IGNORE("To be filled by O.E.M."); + DMI_IGNORE("Default String"); + DMI_IGNORE("System Product Name"); + DMI_IGNORE("System Manufacturer"); + DMI_IGNORE("System Version"); + DMI_IGNORE("System Serial Number"); + DMI_IGNORE("Rev X.0x"); /* ASUS board version nonsense */ + DMI_IGNORE("x.x"); /* Gigabyte board version nonsense */ + DMI_IGNORE("NA"); + DMI_IGNORE("SKU"); + + /* noticed on an HP x360 with Insyde BIOS */ + DMI_IGNORE("Type2 - Board Asset Tag"); + DMI_IGNORE("Type1ProductConfigId"); + + /* Toshiba Laptop with Insyde BIOS */ + DMI_IGNORE("Base Board Version"); + DMI_IGNORE("No Asset Tag"); + DMI_IGNORE("None"); + DMI_IGNORE("Type1Family"); + DMI_IGNORE("123456789"); + + /* ASUS socket 775 MB */ + DMI_IGNORE("Asset-1234567890"); + DMI_IGNORE("MB-1234567890"); + DMI_IGNORE("Chassis Serial Number"); + DMI_IGNORE("Chassis Version"); + DMI_IGNORE("Chassis Manufacture"); + + /* Zotac version nonsense */ + p = chk; + while (*p != 0) { *p = 'x'; p++; } /* all X */ + DMI_IGNORE(chk); + p = chk; + while (*p != 0) { *p = '0'; p++; } /* all 0 */ + DMI_IGNORE(chk); + + /*... more, I'm sure. */ + + g_free(chk); + return 0; +} + +static const char *dmi_sysfs_root(void) { + char *candidates[] = { + "/sys/devices/virtual/dmi", + "/sys/class/dmi", + NULL + }; + int i = 0; + while (candidates[i] != NULL) { + if(access(candidates[i], F_OK) != -1) + return candidates[i]; + i++; + } + return NULL; +} + +int dmi_str_status(const char *id_str) { + gchar *str = dmi_get_str_abs(id_str); + int ret = 1; + + if (!str) + ret = 0; + + if ( ignore_placeholder_strings(&str) > 0 ) + ret = -1; + + g_free(str); + return ret; +} + +char *dmi_get_str(const char *id_str) { + gchar *ret = dmi_get_str_abs(id_str); + /* return NULL on empty */ + if (ret && *ret == 0) { + g_free(ret); + ret = NULL; + } + ignore_placeholder_strings(&ret); + return ret; +} + +char *dmi_get_str_abs(const char *id_str) { + static struct { + char *id; + char *path; + } tab_dmi_sysfs[] = { + /* dmidecode -> sysfs */ + { "bios-release-date", "id/bios_date" }, + { "bios-vendor", "id/bios_vendor" }, + { "bios-version", "id/bios_version" }, + { "baseboard-product-name", "id/board_name" }, + { "baseboard-manufacturer", "id/board_vendor" }, + { "baseboard-version", "id/board_version" }, + { "baseboard-serial-number", "id/board_serial" }, + { "baseboard-asset-tag", "id/board_asset_tag" }, + { "system-product-name", "id/product_name" }, + { "system-manufacturer", "id/sys_vendor" }, + { "system-serial-number", "id/product_serial" }, + { "system-product-family", "id/product_family" }, + { "system-version", "id/product_version" }, + { "system-uuid", "product_uuid" }, + { "system-sku", "id/product_sku" }, /*dmidecode doesn't actually support this one*/ + { "chassis-type", "id/chassis_type" }, + { "chassis-serial-number", "id/chassis_serial" }, + { "chassis-manufacturer", "id/chassis_vendor" }, + { "chassis-version", "id/chassis_version" }, + { "chassis-asset-tag", "id/chassis_asset_tag" }, + { NULL, NULL } + }; + const gchar *dmi_root = dmi_sysfs_root(); + gchar *ret = NULL; + gchar full_path[PATH_MAX]; + gboolean spawned; + gchar *out, *err; + + int i = 0; + + /* try sysfs first */ + if (dmi_root) { + while (tab_dmi_sysfs[i].id != NULL) { + if (strcmp(id_str, tab_dmi_sysfs[i].id) == 0) { + snprintf(full_path, PATH_MAX, "%s/%s", dmi_root, tab_dmi_sysfs[i].path); + if (g_file_get_contents(full_path, &ret, NULL, NULL) ) + goto dmi_str_done; + } + i++; + } + } + + /* try dmidecode, but may require root */ + snprintf(full_path, PATH_MAX, "dmidecode -s %s", id_str); + spawned = hardinfo_spawn_command_line_sync(full_path, + &out, &err, &i, NULL); + if (spawned) { + if (i == 0) + ret = out; + else + g_free(out); + + g_free(err); + } + +dmi_str_done: + if (ret != NULL) { + ret = strend(ret, '\n'); + ret = g_strstrip(ret); + } + return ret; +} + +char *dmi_chassis_type_str(int chassis_type, gboolean with_val) { + static const char *types[] = { + N_("Invalid chassis type (0)"), + N_("Unknown chassis type"), /* 1 is "Other", but not helpful in HardInfo */ + N_("Unknown chassis type"), + N_("Desktop"), + N_("Low-profile Desktop"), + N_("Pizza Box"), + N_("Mini Tower"), + N_("Tower"), + N_("Portable"), + N_("Laptop"), + N_("Notebook"), + N_("Handheld"), + N_("Docking Station"), + N_("All-in-one"), + N_("Subnotebook"), + N_("Space-saving"), + N_("Lunch Box"), + N_("Main Server Chassis"), + N_("Expansion Chassis"), + N_("Sub Chassis"), + N_("Bus Expansion Chassis"), + N_("Peripheral Chassis"), + N_("RAID Chassis"), + N_("Rack Mount Chassis"), + N_("Sealed-case PC"), + N_("Multi-system"), + N_("CompactPCI"), + N_("AdvancedTCA"), + N_("Blade"), + N_("Blade Enclosing"), + N_("Tablet"), + N_("Convertible"), + N_("Detachable"), + N_("IoT Gateway"), + N_("Embedded PC"), + N_("Mini PC"), + N_("Stick PC"), + }; + + if (chassis_type <= 0) { + gchar *chassis = dmi_get_str("chassis-type"); + if (chassis) { + chassis_type = atoi(chassis); + g_free(chassis); + } else + chassis_type = -1; + } + + if (chassis_type >= 0 && chassis_type < (int)G_N_ELEMENTS(types)) { + if (with_val) + return g_strdup_printf("[%d] %s", chassis_type, _(types[chassis_type])); + + return g_strdup(_(types[chassis_type])); + } + return NULL; +} + +/* TODO: something better maybe */ +static char *dd_cache[128] = {}; +void dmidecode_cache_free() +{ int i; for(i = 0; i < 128; i++) g_free(dd_cache[i]); } + +char *dmidecode_read(const dmi_type *type) { + gchar *ret = NULL; + gchar full_path[PATH_MAX]; + gboolean spawned; + gchar *out, *err; + + int i = 0; + + if (type) { + if (dd_cache[*type]) + return g_strdup(dd_cache[*type]); + snprintf(full_path, PATH_MAX, "dmidecode -t %"PRId32, *type); + } else { + if (dd_cache[127]) + return g_strdup(dd_cache[127]); + snprintf(full_path, PATH_MAX, "dmidecode"); + } + + spawned = hardinfo_spawn_command_line_sync(full_path, + &out, &err, &i, NULL); + if (spawned) { + if (i == 0) + ret = out; + else + g_free(out); + + g_free(err); + } + + if (ret) { + if (type) + dd_cache[*type] = g_strdup(ret); + else + dd_cache[127] = g_strdup(ret); + } + + return ret; +} + +dmi_handle_list *dmi_handle_list_add(dmi_handle_list *hl, dmi_handle_ext new_handle_ext) { + if (new_handle_ext.type < G_N_ELEMENTS(dmi_type_strings) ) + new_handle_ext.type_str = dmi_type_strings[new_handle_ext.type]; + if (!hl) { + hl = malloc(sizeof(dmi_handle_list)); + hl->count = 1; + hl->handles = malloc(sizeof(dmi_handle) * hl->count); + hl->handles_ext = malloc(sizeof(dmi_handle_ext) * hl->count); + } else { + hl->count++; + hl->handles = realloc(hl->handles, sizeof(dmi_handle) * hl->count); + hl->handles_ext = realloc(hl->handles_ext, sizeof(dmi_handle_ext) * hl->count); + } + hl->handles_ext[hl->count - 1] = new_handle_ext; + hl->handles[hl->count - 1] = new_handle_ext.id; + + return hl; +} + +dmi_handle_list *dmidecode_handles(const dmi_type *type) { + gchar *full = NULL, *p = NULL, *next_nl = NULL; + dmi_handle_list *hl = NULL; + + // Handle 0x003B, DMI type 9, 17 bytes + + full = dmidecode_read(type); + if (full) { + p = full; + while(next_nl = strchr(p, '\n')) { + unsigned int ch = 0, ct = 0, cb = 0; + strend(p, '\n'); + if (sscanf(p, "Handle 0x%X, DMI type %u, %u bytes", &ch, &ct, &cb) > 0) { + if (type && !ct) ct = *type; + hl = dmi_handle_list_add(hl, (dmi_handle_ext){.id = ch, .type = ct, .size = cb}); + } + p = next_nl + 1; + } + free(full); + } + return hl; +} + +void dmi_handle_list_free(dmi_handle_list *hl) { + if (hl) { + free(hl->handles); + free(hl->handles_ext); + } + free(hl); +} + +char *dmidecode_match(const char *name, const dmi_type *type, const dmi_handle *handle) { + gchar *ret = NULL, *full = NULL, *p = NULL, *next_nl = NULL; + unsigned int ch = 0; + int ln = 0; + + if (!name) return NULL; + ln = strlen(name); + + full = dmidecode_read(type); + if (full) { + p = full; + while(next_nl = strchr(p, '\n')) { + strend(p, '\n'); + if (!(sscanf(p, "Handle 0x%X", &ch) > 0) ) { + if (!handle || *handle == ch) { + while(*p == '\t') p++; + if (strncmp(p, name, ln) == 0) { + if (*(p + ln) == ':') { + p = p + ln + 1; + while(*p == ' ') p++; + ret = strdup(p); + break; + } + } + } + } + p = next_nl + 1; + } + free(full); + } + + return ret; +} + +dmi_handle_list *dmidecode_match_value(const char *name, const char *value, const dmi_type *type) { + dmi_handle_list *hl = NULL; + gchar *full = NULL, *p = NULL, *next_nl = NULL; + unsigned int ch = 0, ct = 0, cb = 0; + int ln = 0, lnv = 0; + + if (!name) return NULL; + ln = strlen(name); + lnv = (value) ? strlen(value) : 0; + + full = dmidecode_read(type); + if (full) { + p = full; + while(next_nl = strchr(p, '\n')) { + strend(p, '\n'); + if (!(sscanf(p, "Handle 0x%X, DMI type %u, %u bytes", &ch, &ct, &cb) > 0)) { + while(*p == '\t') p++; + if (strncmp(p, name, ln) == 0) { + if (*(p + ln) == ':') { + p = p + ln + 1; + while(*p == ' ') p++; + if (!value || strncmp(p, value, lnv) == 0) + hl = dmi_handle_list_add(hl, (dmi_handle_ext){.id = ch, .type = ct, .size = cb}); + } + } + } + p = next_nl + 1; + } + free(full); + } + + return hl; +} diff --git a/hardinfo2/dt_util.c b/hardinfo2/dt_util.c new file mode 100644 index 00000000..08b0e317 --- /dev/null +++ b/hardinfo2/dt_util.c @@ -0,0 +1,1187 @@ +/* + * HardInfo - Displays System Information + * Copyright (C) 2003-2007 L. A. F. Pereira + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 2 or later. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * Device Tree support by Burt P. + * Sources: + * http://elinux.org/Device_Tree_Usage + * http://elinux.org/Device_Tree_Mysteries + */ +#include +#include +#include /* for PRIu64 */ +#include +#include "hardinfo.h" +#include "dt_util.h" +#include "appf.h" + +static struct { + char *name; int type; +} prop_types[] = { + { "name", DTP_STR }, + { "compatible", DTP_STR }, + { "model", DTP_STR }, + { "reg", DTP_REG }, + { "clocks", DTP_CLOCKS }, + { "gpios", DTP_GPIOS }, + { "cs-gpios", DTP_GPIOS }, + { "phandle", DTP_PH }, + { "interrupts", DTP_INTRUPT }, + { "interrupts-extended", DTP_INTRUPT_EX }, + { "interrupt-parent", DTP_PH_REF }, + { "interrupt-controller", DTP_EMPTY }, + { "regulator-min-microvolt", DTP_UINT }, + { "regulator-max-microvolt", DTP_UINT }, + { "clock-frequency", DTP_UINT }, + { "dmas", DTP_DMAS }, + { "dma-channels", DTP_UINT }, + { "dma-requests", DTP_UINT }, + + /* operating-points-v2: */ + /* https://www.kernel.org/doc/Documentation/devicetree/bindings/opp/opp.txt */ + { "operating-points-v2", DTP_PH_REF_OPP2 }, + { "opp-hz", DTP_UINT64 }, + { "opp-microvolt", DTP_UINT }, + { "opp-microvolt-L0", DTP_UINT }, /* opp-microvolt-, but this kind of */ + { "opp-microvolt-L1", DTP_UINT }, /* wildcard matching isn't supported yet */ + { "opp-microamp", DTP_UINT }, + { "clock-latency-ns", DTP_UINT }, + + { NULL, 0 }, +}; + +static struct { + char *name; uint32_t v; +} default_values[] = { + { "#address-cells", 2 }, + { "#size-cells", 1 }, + { "#dma-cells", 1 }, + { NULL, 0 }, +}; + +struct _dtr_map { + uint32_t v; /* phandle */ + char *label; /* alias */ + char *path; + struct _dtr_map *next; +}; +typedef struct _dtr_map dtr_map; + +struct _dtr { + dtr_map *aliases; + dtr_map *symbols; + dtr_map *phandles; + char *base_path; + char *log; +}; + +struct _dtr_obj { + char *path; + union { + void *data; + char *data_str; + dt_uint *data_int; + dt_uint64 *data_int64; + }; + char *name; + uint32_t length; + int type; + char *prefix; /* if the name has a manufacturer's prefix or null */ + char *np_name; /* the name without any prefix. points into .prefix or .name, do not free */ + const char *alias; /* null until first dtr_obj_alias(). do not free */ + const char *symbol; /* null until first dtr_obj_symbol(). do not free */ + dtr *dt; +}; + +dtr_map *dtr_map_add(dtr_map *map, uint32_t v, const char *label, const char *path) { + dtr_map *it; + dtr_map *nmap = malloc(sizeof(dtr_map)); + memset(nmap, 0, sizeof(dtr_map)); + nmap->v = v; + + if (label != NULL) nmap->label = strdup(label); + if (path != NULL) nmap->path = strdup(path); + if (map == NULL) + return nmap; + + it = map; + while(it->next != NULL) + it = it->next; + it->next = nmap; + + return nmap; +} + +void dtr_map_free(dtr_map *map) { + dtr_map *it; + while(map != NULL) { + it = map->next; + free(map->label); + free(map->path); + free(map); + map = it; + } +} + +/* simple sort for maps + * sv: 1 = sort by v, 0 = sort by label */ +void dtr_map_sort(dtr_map *map, int sv) +{ + int done = 0, cmp; + dtr_map *this, *next, *top = NULL, *next_top; + uint32_t tmp_v; + char *tmp_l, *tmp_p; + if (map == NULL) return; + do { + this = map; + next_top = NULL; + while(this != NULL) { + next = this->next; + if (this == top) + break; + if (next == NULL) + break; + if (sv) + cmp = (this->v > next->v) ? 1 : 0; + else + cmp = strcmp(this->label, next->label); + if (cmp > 0) { + tmp_v = this->v; this->v = next->v; next->v = tmp_v; + tmp_l = this->label; this->label = next->label; next->label = tmp_l; + tmp_p = this->path; this->path = next->path; next->path = tmp_p; + next_top = this; + } + this = next; + } + if (next_top == NULL) + done = 1; + else + top = next_top; + } while (!done); +} + +const char *dtr_phandle_lookup(dtr *s, uint32_t v) { + dtr_map *phi = s->phandles; + /* 0 and 0xffffffff are invalid phandle values */ + /* TODO: perhaps "INVALID" or something */ + if (v == 0 || v == 0xffffffff) + return NULL; + while(phi != NULL) { + if (phi->v == v) + return phi->path; + phi = phi->next; + } + return NULL; +} + +const char *dtr_alias_lookup(dtr *s, const char* label) { + dtr_map *ali = s->aliases; + while(ali != NULL) { + if (strcmp(ali->label, label) == 0) + return ali->path; + ali = ali->next; + } + return NULL; +} + +const char *dtr_alias_lookup_by_path(dtr *s, const char* path) { + dtr_map *ali = s->aliases; + while(ali != NULL) { + if (strcmp(ali->path, path) == 0) + return ali->label; + ali = ali->next; + } + return NULL; +} + +const char *dtr_symbol_lookup_by_path(dtr *s, const char* path) { + dtr_map *ali = s->symbols; + while(ali != NULL) { + if (strcmp(ali->path, path) == 0) + return ali->label; + ali = ali->next; + } + return NULL; +} + +void _dtr_read_aliases(dtr *); +void _dtr_read_symbols(dtr *); +void _dtr_map_phandles(dtr *, char *np); +int dtr_inh_find(dtr_obj *obj, char *qprop, int limit); +#define UMIN(a,b) MIN(((uint32_t)(a)), ((uint32_t)(b))) + +const char *dtr_find_device_tree_root() { + char *candidates[] = { + "/proc/device-tree", + "/sys/firmware/devicetree/base", + /* others? */ + NULL + }; + int i = 0; + while (candidates[i] != NULL) { + if(access(candidates[i], F_OK) != -1) + return candidates[i]; + i++; + } + return NULL; +} + +dtr *dtr_new_x(const char *base_path, int fast) { + dtr *dt = malloc(sizeof(dtr)); + if (dt != NULL) { + memset(dt, 0, sizeof(dtr)); + dt->log = strdup(""); + + if (base_path == NULL) + base_path = DTR_ROOT; + + if (base_path != NULL) + dt->base_path = strdup(base_path); + else { + dtr_msg(dt, "%s", "Device Tree not found."); + return dt; + } + + /* build alias and phandle lists */ + dt->aliases = NULL; + dt->symbols = NULL; + dt->phandles = NULL; + if (!fast) { + _dtr_read_aliases(dt); + _dtr_read_symbols(dt); + _dtr_map_phandles(dt, ""); + } + } + return dt; +} + +dtr *dtr_new(const char *base_path) { + return dtr_new_x(base_path, 0); +} + +void dtr_free(dtr *s) { + if (s != NULL) { + dtr_map_free(s->aliases); + dtr_map_free(s->symbols); + dtr_map_free(s->phandles); + free(s->base_path); + free(s->log); + free(s); + } +} + +int dtr_was_found(dtr *s) { + if (s != NULL) { + if (s->base_path != NULL) + return 1; + } + return 0; +} + +void dtr_msg(dtr *s, char *fmt, ...) { + gchar *buf, *tmp; + va_list args; + + va_start(args, fmt); + buf = g_strdup_vprintf(fmt, args); + va_end(args); + + tmp = g_strdup_printf("%s%s", s->log, buf); + g_free(s->log); + s->log = tmp; +} + +char *dtr_messages(dtr *s) { + if (s != NULL) + return strdup(s->log); + else + return NULL; +} + +const char *dtr_base_path(dtr *s) { + if (s) + return s->base_path; + return NULL; +} + +/*glib, but _dt_obj *prop uses malloc() and std types */ +dtr_obj *dtr_obj_read(dtr *s, const char *dtp) { + char *full_path; + char *slash, *coma; + dtr_obj *obj; + + if (dtp == NULL) + return NULL; + + obj = malloc(sizeof(dtr_obj)); + if (obj != NULL) { + memset(obj, 0, sizeof(dtr_obj)); + + obj->dt = s; + if (*dtp != '/') { + /* doesn't start with slash, use alias */ + obj->path = (char*)dtr_alias_lookup(s, dtp); + if (obj->path != NULL) + obj->path = strdup(obj->path); + else { + dtr_obj_free(obj); + return NULL; + } + } else + obj->path = strdup(dtp); + + /* find name after last slash, or start */ + slash = strrchr(obj->path, '/'); + if (slash != NULL) + obj->name = strdup(slash + 1); + else + obj->name = strdup(obj->path); + + /* find manufacturer prefix */ + obj->prefix = strdup(obj->name); + coma = strchr(obj->prefix, ','); + if (coma != NULL) { + /* coma -> null; .np_name starts after */ + *coma = 0; + obj->np_name = coma + 1; + } else { + obj->np_name = obj->name; + free(obj->prefix); + obj->prefix = NULL; + } + + /* read data */ + full_path = g_strdup_printf("%s%s", s->base_path, obj->path); + if ( g_file_test(full_path, G_FILE_TEST_IS_DIR) ) { + obj->type = DT_NODE; + } else { + if (!g_file_get_contents(full_path, (gchar**)&obj->data, (gsize*)&obj->length, NULL)) { + dtr_obj_free(obj); + g_free(full_path); + return NULL; + } + obj->type = dtr_guess_type(obj); + } + g_free(full_path); + + return obj; + } + return NULL; +} + +void dtr_obj_free(dtr_obj *s) { + if (s != NULL) { + free(s->path); + free(s->name); + free(s->prefix); + free(s->data); + free(s); + } +} + +int dtr_obj_type(dtr_obj *s) { + if (s) + return s->type; + return DT_TYPE_ERR; +} + +char *dtr_obj_alias(dtr_obj *s) { + if (s) { + if (s->alias == NULL) + s->alias = dtr_alias_lookup_by_path(s->dt, s->path); + return (char*)s->alias; + } + return NULL; +} + +char *dtr_obj_symbol(dtr_obj *s) { + if (s) { + if (s->symbol == NULL) + s->symbol = dtr_symbol_lookup_by_path(s->dt, s->path); + return (char*)s->symbol; + } + return NULL; +} + +char *dtr_obj_path(dtr_obj *s) { + if (s) + return s->path; + return NULL; +} + +char *dtr_obj_full_path(dtr_obj *s) { + if (s) { + if (strcmp(s->path, "/") == 0) + return g_strdup_printf("%s", s->dt->base_path); + else + return g_strdup_printf("%s%s", s->dt->base_path, s->path); + } + return NULL; +} + +dtr_obj *dtr_get_prop_obj(dtr *s, dtr_obj *node, const char *name) { + dtr_obj *prop; + char *ptmp; + ptmp = g_strdup_printf("%s/%s", (node == NULL) ? "" : node->path, name); + prop = dtr_obj_read(s, ptmp); + g_free(ptmp); + return prop; +} + +char *dtr_get_prop_str(dtr *s, dtr_obj *node, const char *name) { + dtr_obj *prop; + char *ptmp; + char *ret = NULL; + + ptmp = g_strdup_printf("%s/%s", (node == NULL) ? "" : node->path, name); + prop = dtr_obj_read(s, ptmp); + if (prop != NULL && prop->data != NULL) { + ret = strdup(prop->data_str); + dtr_obj_free(prop); + } + g_free(ptmp); + return ret; +} + +char *dtr_get_string(const char *p, int decode) { + dtr *dt = dtr_new_x(NULL, 1); + dtr_obj *obj; + char *ret = NULL; + if (decode) { + obj = dtr_get_prop_obj(dt, NULL, p); + ret = dtr_str(obj); + dtr_obj_free(obj); + } else + ret = dtr_get_prop_str(dt, NULL, p); + dtr_free(dt); + return ret; +} + +uint32_t dtr_get_prop_u32(dtr *s, dtr_obj *node, const char *name) { + dtr_obj *prop; + char *ptmp; + uint32_t ret = 0; + + ptmp = g_strdup_printf("%s/%s", (node == NULL) ? "" : node->path, name); + prop = dtr_obj_read(s, ptmp); + if (prop != NULL) { + if (prop->data != NULL) + ret = be32toh(*prop->data_int); + dtr_obj_free(prop); + } + g_free(ptmp); + return ret; +} + +uint64_t dtr_get_prop_u64(dtr *s, dtr_obj *node, const char *name) { + dtr_obj *prop; + char *ptmp; + uint64_t ret = 0; + + ptmp = g_strdup_printf("%s/%s", (node == NULL) ? "" : node->path, name); + prop = dtr_obj_read(s, ptmp); + if (prop != NULL) { + if (prop->data != NULL) + ret = be64toh(*prop->data_int64); + dtr_obj_free(prop); + } + g_free(ptmp); + return ret; +} + +int dtr_guess_type(dtr_obj *obj) { + char *tmp, *dash; + uint32_t i = 0, anc = 0, might_be_str = 1; + + if (obj->length == 0) + return DTP_EMPTY; + + /* special #(.*)-cells names are UINT */ + if (*obj->name == '#') { + dash = strrchr(obj->name, '-'); + if (dash != NULL) { + if (strcmp(dash, "-cells") == 0) + return DTP_UINT; + } + } + + /* /aliases/ * and /__symbols__/ * are always strings */ + if (strncmp(obj->path, "/aliases/", strlen("/aliases/") ) == 0) + return DTP_STR; + if (strncmp(obj->path, "/__symbols__/", strlen("/__symbols__/") ) == 0) + return DTP_STR; + + /* /__overrides__/ * */ + if (strncmp(obj->path, "/__overrides__/", strlen("/__overrides__/") ) == 0) + if (strcmp(obj->name, "name") != 0) + return DTP_OVR; + + /* lookup known type */ + while (prop_types[i].name != NULL) { + if (strcmp(obj->name, prop_types[i].name) == 0) + return prop_types[i].type; + i++; + } + + /* maybe a string? */ + for (i = 0; i < obj->length; i++) { + tmp = obj->data_str + i; + if ( isalnum(*tmp) ) anc++; /* count the alpha-nums */ + if ( isprint(*tmp) || *tmp == 0 ) + continue; + might_be_str = 0; + break; + } + if (might_be_str && + ( anc >= obj->length - 2 /* all alpha-nums but ^/ and \0$ */ + || anc >= 5 ) /*arbitrary*/) + return DTP_STR; + + /* multiple of 4 bytes, try list of hex values */ + if (!(obj->length % 4)) + return DTP_HEX; + + return DTP_UNK; +} + +char *dtr_elem_phref(dtr *s, dt_uint e, int show_path, const char *extra) { + const char *ph_path, *al_label; + char *ret = NULL; + ph_path = dtr_phandle_lookup(s, be32toh(e)); + if (ph_path != NULL) { + /* TODO: alias or symbol? */ + al_label = dtr_symbol_lookup_by_path(s, ph_path); + if (al_label != NULL) { + if (show_path) + ret = g_strdup_printf("&%s (%s) %s", al_label, ph_path, extra ? extra : ""); + else + ret = g_strdup_printf("&%s %s", al_label, extra ? extra : ""); + } else { + if (show_path) + ret = g_strdup_printf("0x%x (%s) %s", be32toh(e), ph_path, extra ? extra : ""); + } + } + if (ret == NULL) + ret = dtr_elem_hex(e); + return ret; +} + +char *dtr_elem_oppv2(dtr_obj* obj) { + char opp_str[512] = ""; + dtr_obj *parent = dtr_get_parent_obj(obj); + if (parent) { + dt_opp_range *opp = dtr_get_opp_range(obj->dt, parent->path); + if (opp) { + snprintf(opp_str, 511, "[%d - %d %s]", opp->khz_min, opp->khz_max, _("kHz")); + g_free(opp); + } + dtr_obj_free(parent); + } + return dtr_elem_phref(obj->dt, *obj->data_int, 1, opp_str); +} + +char *dtr_elem_hex(dt_uint e) { + return g_strdup_printf("0x%x", be32toh(e) ); +} + +char *dtr_elem_byte(uint8_t e) { + return g_strdup_printf("%x", e); +} + +char *dtr_elem_uint(dt_uint e) { + return g_strdup_printf("%u", be32toh(e) ); +} + +char *dtr_elem_uint64(dt_uint64 e) { + return g_strdup_printf("%" PRIu64, be64toh(e) ); +} + +char *dtr_list_byte(uint8_t *bytes, unsigned long count) { + char *ret, *dest; + char buff[4] = ""; /* max element: " 00\0" */ + uint32_t v; + unsigned long i, l; + l = count * 4 + 1; + ret = malloc(l); + memset(ret, 0, l); + strcpy(ret, "["); + dest = ret + 1; + for (i = 0; i < count; i++) { + v = bytes[i]; + l = sprintf(buff, "%s%02x", (i) ? " " : "", v); + strncpy(dest, buff, l); + dest += l; + } + strcpy(dest, "]"); + return ret; +} + +char *dtr_list_hex(dt_uint *list, unsigned long count) { + char *ret, *dest; + char buff[12] = ""; /* max element: " 0x00000000\0" */ + unsigned long i, l; + l = count * 12 + 1; + dest = ret = malloc(l); + memset(ret, 0, l); + for (i = 0; i < count; i++) { + l = sprintf(buff, "%s0x%x", (i) ? " " : "", be32toh(list[i])); + strncpy(dest, buff, l); + dest += l; + } + return ret; +} + +/*cstd, except for g_strescape()*/ +char *dtr_list_str0(const char *data, uint32_t length) { + char *tmp, *esc, *next_str; + char ret[1024] = ""; + uint32_t l, tl; + + /* treat as null-separated string list */ + tl = 0; + strcpy(ret, ""); + tmp = ret; + next_str = (char*)data; + while(next_str != NULL) { + l = strlen(next_str); + esc = g_strescape(next_str, NULL); + sprintf(tmp, "%s\"%s\"", + strlen(ret) ? ", " : "", esc); + free(esc); + tmp += strlen(tmp); + tl += l + 1; next_str += l + 1; + if (tl >= length) break; + } + + return strdup(ret); +} + +char *dtr_list_override(dtr_obj *obj) { + /* ... */ + char *ret = NULL; + char *ph, *str; + char *src; + uint32_t consumed = 0; + int l; + src = obj->data_str; + while (consumed + 5 <= obj->length) { + ph = dtr_elem_phref(obj->dt, *(dt_uint*)src, 1, NULL); + src += 4; consumed += 4; + l = strlen(src) + 1; /* consume the null */ + str = dtr_list_str0(src, l); + ret = appfsp(ret, "<%s -> %s>", ph, str); + src += l; consumed += l; + free(ph); + free(str); + } + if (consumed < obj->length) { + str = dtr_list_byte((uint8_t*)src, obj->length - consumed); + ret = appfsp(ret, "%s", str); + free(str); + } + return ret; +} + +uint32_t dtr_get_phref_prop(dtr *s, uint32_t phandle, char *prop) { + const char *ph_path; + char *tmp; + uint32_t ret; + ph_path = dtr_phandle_lookup(s, phandle); + tmp = g_strdup_printf("%s/%s", ph_path, prop); + ret = dtr_get_prop_u32(s, NULL, tmp); + free(tmp); + return ret; +} + +char *dtr_list_phref(dtr_obj *obj, char *ext_cell_prop) { + /* */ + int count = obj->length / 4; + int i = 0, ext_cells = 0; + char *ph, *ext, *ret = NULL; + + while (i < count) { + if (ext_cell_prop == NULL) + ext_cells = 0; + else + ext_cells = dtr_get_phref_prop(obj->dt, be32toh(obj->data_int[i]), ext_cell_prop); + ph = dtr_elem_phref(obj->dt, obj->data_int[i], 0, NULL); i++; + if (ext_cells > count - i) ext_cells = count - i; + ext = dtr_list_hex((obj->data_int + i), ext_cells); i+=ext_cells; + ret = appfsp(ret, "<%s%s%s>", + ph, (ext_cells) ? " " : "", ext); + g_free(ph); + g_free(ext); + } + return ret; +} + +char *dtr_list_interrupts(dtr_obj *obj) { + char *ext, *ret = NULL; + uint32_t iparent, icells; + int count, i = 0; + + iparent = dtr_inh_find(obj, "interrupt-parent", 0); + if (!iparent) { + dtr_msg(obj->dt, "Did not find an interrupt-parent for %s", obj->path); + goto intr_err; + } + icells = dtr_get_phref_prop(obj->dt, iparent, "#interrupt-cells"); + if (!icells) { + dtr_msg(obj->dt, "Invalid #interrupt-cells value %d for %s", icells, obj->path); + goto intr_err; + } + + count = obj->length / 4; + while (i < count) { + icells = UMIN(icells, count - i); + ext = dtr_list_hex((obj->data_int + i), icells); i+=icells; + ret = appfsp(ret, "<%s>", ext); + } + return ret; + +intr_err: + return dtr_list_hex(obj->data_int, obj->length); + +} + +char *dtr_list_reg(dtr_obj *obj) { + char *tup_str, *ret = NULL; + uint32_t acells, scells, tup_len; + uint32_t extra, consumed; /* bytes */ + uint32_t *next; + + acells = dtr_inh_find(obj, "#address-cells", 2); + scells = dtr_inh_find(obj, "#size-cells", 2); + tup_len = acells + scells; + extra = obj->length % (tup_len * 4); + consumed = 0; /* bytes */ + + //printf("list reg: %s\n ... acells: %u, scells: %u, extra: %u\n", obj->path, acells, scells, extra); + + if (extra) { + /* error: length is not a multiple of tuples */ + dtr_msg(obj->dt, "Data length (%u) is not a multiple of (#address-cells:%u + #size-cells:%u) for %s\n", + obj->length, acells, scells, obj->path); + return dtr_list_hex(obj->data, obj->length / 4); + } + + next = obj->data_int; + consumed = 0; + while (consumed + (tup_len * 4) <= obj->length) { + tup_str = dtr_list_hex(next, tup_len); + ret = appfsp(ret, "<%s>", tup_str); + free(tup_str); + consumed += (tup_len * 4); + next += tup_len; + } + + //printf(" ... %s\n", ret); + return ret; +} + +char* dtr_str(dtr_obj *obj) { + char *ret; + int type; + + if (obj == NULL) return NULL; + type = obj->type; + + if (type == DTP_PH_REF) { + if (!DTEX_PHREFS || obj->length != 4) + type = DTP_HEX; + } + + switch(type) { + case DT_NODE: + ret = strdup("{node}"); + break; + case DTP_EMPTY: + ret = strdup("{empty}"); + break; + case DTP_STR: + ret = dtr_list_str0(obj->data_str, obj->length); + break; + case DTP_OVR: + ret = dtr_list_override(obj); + break; + case DTP_REG: + /* <#address-cells #size-cells> */ + ret = dtr_list_reg(obj); + break; + case DTP_INTRUPT: + ret = dtr_list_interrupts(obj); + break; + case DTP_INTRUPT_EX: + /* */ + ret = dtr_list_phref(obj, "#interrupt-cells"); + break; + case DTP_CLOCKS: + /* */ + ret = dtr_list_phref(obj, "#clock-cells"); + break; + case DTP_GPIOS: + /* */ + ret = dtr_list_phref(obj, "#gpio-cells"); + break; + case DTP_DMAS: + /* */ + ret = dtr_list_phref(obj, "#dma-cells"); + break; + case DTP_PH: + case DTP_HEX: + if (obj->length % 4) + ret = dtr_list_byte((uint8_t*)obj->data, obj->length); + else + ret = dtr_list_hex(obj->data, obj->length / 4); + break; + case DTP_PH_REF: + ret = dtr_elem_phref(obj->dt, *obj->data_int, 1, NULL); + break; + case DTP_PH_REF_OPP2: + ret = dtr_elem_oppv2(obj); + break; + case DTP_UINT: + ret = dtr_elem_uint(*obj->data_int); + break; + case DTP_UINT64: + ret = dtr_elem_uint64(*obj->data_int64); + break; + case DTP_UNK: + default: + if (obj->length > 64) /* maybe should use #define at the top */ + ret = g_strdup_printf("{data} (%lu bytes)", (long unsigned int)obj->length); + else + ret = dtr_list_byte((uint8_t*)obj->data, obj->length); + break; + } + + return ret; +} + +dtr_obj *dtr_get_parent_obj(dtr_obj *obj) { + char *slash, *parent; + dtr_obj *ret = NULL; + + if (obj == NULL) + return NULL; + + parent = strdup(obj->path); + slash = strrchr(parent, '/'); + if (slash != NULL) { + *slash = 0; + if (strlen(parent) > 0) + ret = dtr_obj_read(obj->dt, parent); + else + ret = dtr_obj_read(obj->dt, "/"); + } + free(parent); + return ret; +} + +/* find the value of a path-inherited property by climbing the path */ +int dtr_inh_find(dtr_obj *obj, char *qprop, int limit) { + dtr_obj *tobj, *pobj = NULL, *qobj; + uint32_t ret = 0; + int i, found = 0; + + if (!limit) limit = 1000; + + tobj = obj; + while (tobj != NULL) { + pobj = dtr_get_parent_obj(tobj); + if (tobj != obj) + dtr_obj_free(tobj); + if (!limit || pobj == NULL) break; + qobj = dtr_get_prop_obj(obj->dt, pobj, qprop); + if (qobj != NULL) { + ret = be32toh(*qobj->data_int); + found = 1; + dtr_obj_free(qobj); + break; + } + tobj = pobj; + limit--; + } + dtr_obj_free(pobj); + + if (!found) { + i = 0; + while(default_values[i].name != NULL) { + if (strcmp(default_values[i].name, qprop) == 0) { + ret = default_values[i].v; + dtr_msg(obj->dt, "Using default value %d for %s in %s\n", ret, qprop, obj->path); + break; + } + i++; + } + } + + return ret; +} + +dt_opp_range *dtr_get_opp_range(dtr *s, const char *name) { + dt_opp_range *ret = NULL; + dtr_obj *obj = NULL, *table_obj = NULL, *row_obj = NULL; + uint32_t opp_ph = 0; + const char *opp_table_path = NULL; + char *tab_compat = NULL, *tab_status = NULL; + const gchar *fn; + gchar *full_path; + GDir *dir; + uint64_t khz = 0; + uint32_t lns = 0; + char *row_status = NULL; + uint32_t i = 0; + + if (!s) + return NULL; + + obj = dtr_obj_read(s, name); + if (!obj) + goto get_opp_finish; + + opp_ph = dtr_get_prop_u32(s, obj, "operating-points-v2"); /* OPPv2 */ + table_obj = dtr_get_prop_obj(s, obj, "operating-points"); /* OPPv1 */ + if (!opp_ph) { + if (table_obj) { + /* only v1 */ + ret = g_new0(dt_opp_range, 1); + ret->version = 1; + ret->clock_latency_ns = dtr_get_prop_u32(s, obj, "clock-latency"); + + /* pairs of (kHz,uV) */ + for (i = 0; i < table_obj->length; i += 2) { + khz = table_obj->data_int[i]; + if (khz > ret->khz_max) + ret->khz_max = khz; + if (khz < ret->khz_min || ret->khz_min == 0) + ret->khz_min = khz; + } + + } else { + /* is clock-frequency available? */ + khz = dtr_get_prop_u32(s, obj, "clock-frequency"); + if (khz) { + ret = g_new0(dt_opp_range, 1); + ret->version = 0; + ret->khz_max = khz; + ret->clock_latency_ns = dtr_get_prop_u32(s, obj, "clock-latency"); + } + } + goto get_opp_finish; + } else { + /* use v2 if both available */ + dtr_obj_free(table_obj); + table_obj = NULL; + } + + opp_table_path = dtr_phandle_lookup(s, opp_ph); + if (!opp_table_path) + goto get_opp_finish; + + table_obj = dtr_obj_read(s, opp_table_path); + if (!table_obj) + goto get_opp_finish; + + tab_compat = dtr_get_prop_str(s, table_obj, "compatible"); + tab_status = dtr_get_prop_str(s, table_obj, "status"); + + if (!tab_compat || strcmp(tab_compat, "operating-points-v2") != 0) + goto get_opp_finish; + if (tab_status && strcmp(tab_status, "disabled") == 0) + goto get_opp_finish; + + ret = g_new0(dt_opp_range, 1); + ret->version = 2; + ret->phandle = opp_ph; + + full_path = dtr_obj_full_path(table_obj); + dir = g_dir_open(full_path, 0 , NULL); + if (dir) { + while((fn = g_dir_read_name(dir)) != NULL) { + row_obj = dtr_get_prop_obj(s, table_obj, fn); + if (row_obj->type == DT_NODE) { + row_status = dtr_get_prop_str(s, row_obj, "status"); + if (!row_status || strcmp(row_status, "disabled") != 0) { + khz = dtr_get_prop_u64(s, row_obj, "opp-hz"); + khz /= 1000; /* 64b hz -> 32b khz */ + lns = dtr_get_prop_u32(s, row_obj, "clock-latency-ns"); + if (khz > ret->khz_max) + ret->khz_max = khz; + if (khz < ret->khz_min || ret->khz_min == 0) + ret->khz_min = khz; + ret->clock_latency_ns = lns; + } + } + free(row_status); row_status = NULL; + dtr_obj_free(row_obj); + row_obj = NULL; + } + g_dir_close(dir); + } + g_free(full_path); + +get_opp_finish: + dtr_obj_free(obj); + dtr_obj_free(table_obj); + free(tab_status); + free(tab_compat); + free(row_status); + return ret; +} + + +void _dtr_read_aliases(dtr *s) { + gchar *dir_path; + GDir *dir; + const gchar *fn; + dtr_obj *anode, *prop; + dtr_map *al; + anode = dtr_obj_read(s, "/aliases"); + + dir_path = g_strdup_printf("%s/aliases", s->base_path); + dir = g_dir_open(dir_path, 0 , NULL); + if (dir) { + while((fn = g_dir_read_name(dir)) != NULL) { + prop = dtr_get_prop_obj(s, anode, fn); + if (prop->type == DTP_STR) { + if (*prop->data_str == '/') { + al = dtr_map_add(s->aliases, 0, prop->name, prop->data_str); + if (s->aliases == NULL) + s->aliases = al; + } + } + dtr_obj_free(prop); + } + g_dir_close(dir); + } + g_free(dir_path); + dtr_obj_free(anode); + dtr_map_sort(s->aliases, 0); +} + +void _dtr_read_symbols(dtr *s) { + gchar *dir_path; + GDir *dir; + const gchar *fn; + dtr_obj *anode, *prop; + dtr_map *al; + anode = dtr_obj_read(s, "/__symbols__"); + + dir_path = g_strdup_printf("%s/__symbols__", s->base_path); + dir = g_dir_open(dir_path, 0 , NULL); + if (dir) { + while((fn = g_dir_read_name(dir)) != NULL) { + prop = dtr_get_prop_obj(s, anode, fn); + if (prop->type == DTP_STR) { + if (*prop->data_str == '/') { + al = dtr_map_add(s->symbols, 0, prop->name, prop->data_str); + if (s->symbols == NULL) + s->symbols = al; + } + } + dtr_obj_free(prop); + } + g_dir_close(dir); + } + g_free(dir_path); + dtr_obj_free(anode); + dtr_map_sort(s->symbols, 0); +} + +/* TODO: rewrite */ +void _dtr_map_phandles(dtr *s, char *np) { + gchar *dir_path; + gchar *ftmp, *ntmp, *ptmp; + const gchar *fn; + GDir *dir; + dtr_obj *prop, *ph_prop; + dtr_map *ph; + + if (np == NULL) np = ""; + dir_path = g_strdup_printf("%s/%s", s->base_path, np); + + prop = dtr_obj_read(s, np); + dir = g_dir_open(dir_path, 0 , NULL); + if (dir) { + while((fn = g_dir_read_name(dir)) != NULL) { + ftmp = g_strdup_printf("%s/%s", dir_path, fn); + if ( g_file_test(ftmp, G_FILE_TEST_IS_DIR) ) { + ntmp = g_strdup_printf("%s/%s", np, fn); + ptmp = g_strdup_printf("%s/phandle", ntmp); + ph_prop = dtr_obj_read(s, ptmp); + if (ph_prop != NULL) { + ph = dtr_map_add(s->phandles, be32toh(*ph_prop->data_int), NULL, ntmp); + if (s->phandles == NULL) + s->phandles = ph; + } + _dtr_map_phandles(s, ntmp); + g_free(ptmp); + g_free(ntmp); + dtr_obj_free(ph_prop); + } + g_free(ftmp); + } + g_dir_close(dir); + } + dtr_obj_free(prop); + dtr_map_sort(s->phandles, 1); +} + +/* + * Maybe these should move to devicetree.c, but would have to expose + * struct internals. + */ + +/* kvl: 0 = key is label, 1 = key is v */ +char *dtr_map_info_section(dtr *s, dtr_map *map, char *title, int kvl) { + gchar *tmp, *ret; + const gchar *sym; + ret = g_strdup_printf("[%s]\n", _(title)); + dtr_map *it = map; + while(it != NULL) { + if (kvl) { + sym = dtr_symbol_lookup_by_path(s, it->path); + if (sym != NULL) + tmp = g_strdup_printf("%s0x%x (%s)=%s\n", ret, + it->v, sym, it->path); + else + tmp = g_strdup_printf("%s0x%x=%s\n", ret, + it->v, it->path); + } else + tmp = g_strdup_printf("%s%s=%s\n", ret, + it->label, it->path); + g_free(ret); + ret = tmp; + it = it->next; + } + + return ret; +} + +char *dtr_maps_info(dtr *s) { + gchar *ph_map, *al_map, *sy_map, *ret; + + ph_map = dtr_map_info_section(s, s->phandles, _("phandle Map"), 1); + al_map = dtr_map_info_section(s, s->aliases, _("Alias Map"), 0); + sy_map = dtr_map_info_section(s, s->symbols, _("Symbol Map"), 0); + ret = g_strdup_printf("%s%s%s", ph_map, sy_map, al_map); + g_free(ph_map); + g_free(al_map); + g_free(sy_map); + return ret; +} diff --git a/hardinfo2/expr.c b/hardinfo2/expr.c new file mode 100644 index 00000000..26284aee --- /dev/null +++ b/hardinfo2/expr.c @@ -0,0 +1,250 @@ +/* + * HardInfo - Displays System Information + * Copyright (C) 2003-2007 L. A. F. Pereira + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 2 or later. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * This is only used to compute sensor values, hence the only variable supported is '@'. + * The '`' operator (ln(x)) is not available, nor multi-line formulas. + */ + +#include +#include +#include +#include +#include + +#include "expr.h" +#include "config.h" + +static MathToken *new_operator(gchar op) +{ + MathToken *t = g_new0(MathToken, 1); + + t->val.op = op; + t->type = TOKEN_OPERATOR; /* operator */ + + return t; +} + +static MathToken *new_variable(gchar var) +{ + MathToken *t = g_new0(MathToken, 1); + + t->val.op = '@'; + t->type = TOKEN_VARIABLE; /* variable */ + + return t; +} + +static MathToken *new_value(gfloat value) +{ + MathToken *t = g_new0(MathToken, 1); + + t->val.value = value; + t->type = TOKEN_VALUE; /* value */ + + return t; +} + +static inline gint priority(char operation) +{ + switch (operation) { + case '^': + return 3; + case '*': + case '/': + return 2; + case '+': + case '-': + return 1; + case '(': + return 0; + } + + return 0; +} + +GSList *math_infix_to_postfix(GSList * infix) +{ + MathToken *stack[500]; + gint t_sp = 0; + + GSList *postfix = NULL, *p; + MathToken *top; + + for (p = infix; p; p = p->next) { + MathToken *t = (MathToken *) p->data; + + if (t->type == TOKEN_OPERATOR && t->val.op == '(') { + stack[++t_sp] = t; + } else if (t->type == TOKEN_OPERATOR && t->val.op == ')') { + for (top = stack[t_sp]; t_sp != 0 && top->val.op != '('; + top = stack[t_sp]) { + postfix = g_slist_append(postfix, stack[t_sp--]); + } + t_sp--; + } else if (t->type != TOKEN_OPERATOR) { + postfix = g_slist_append(postfix, t); + } else if (t_sp == 0) { + stack[++t_sp] = t; + } else { + while (t_sp != 0 + && priority(t->val.op) <= priority(stack[t_sp]->val.op)) + postfix = g_slist_append(postfix, stack[t_sp--]); + stack[++t_sp] = t; + } + } + + while (t_sp) + postfix = g_slist_append(postfix, stack[t_sp--]); + + return postfix; +} + +static inline gfloat __result(gfloat op1, gfloat op2, gchar operation) +{ + switch (operation) { + case '^': + return powf(op1, op2); + case '+': + return op1 + op2; + case '-': + return op1 - op2; + case '/': + return op1 / op2; + case '*': + return op1 * op2; + } + + return 0; +} + +gfloat math_postfix_eval(GSList * postfix, gfloat at_value) +{ + GSList *p; + gfloat stack[500]; + gint sp = 0; + + memset(stack, 0, sizeof(gfloat) * 500); + + for (p = postfix; p; p = p->next) { + MathToken *t = (MathToken *) p->data; + + if (t->type == TOKEN_VARIABLE) { + stack[++sp] = at_value; + } else if (t->type == TOKEN_VALUE) { + stack[++sp] = t->val.value; + } else { + gfloat op1, op2; + + op2 = stack[sp--]; + op1 = stack[sp]; + + stack[sp] = __result(op1, op2, t->val.op); + } + } + + return stack[sp]; +} + +GSList *math_string_to_infix(gchar * string) +{ + GSList *infix = NULL; + gchar *expr = string; + + for (; *expr; expr++) { + if (strchr("+-/*^()", *expr)) { + infix = g_slist_append(infix, new_operator(*expr)); + } else if (strchr("@", *expr)) { + infix = g_slist_append(infix, new_variable(*expr)); + } else if (strchr("-.1234567890", *expr)) { + gchar value[32], *v = value; + gfloat floatval; + + do { + *v++ = *expr++; + } while (*expr && strchr("-.1234567890", *expr)); + expr--; + *v = '\0'; + + sscanf(value, "%f", &floatval); + + infix = g_slist_append(infix, new_value(floatval)); + } else if (!isspace(*expr)) { + g_print("Invalid token: [%c][%d]\n", *expr, *expr); + math_infix_free(infix, TRUE); + return NULL; + } + } + + return infix; +} + +void math_infix_free(GSList * infix, gboolean free_tokens) +{ + GSList *p; + + if (!free_tokens) + for (p = infix; p; p = g_slist_delete_link(p, p)); + else + for (p = infix; p; p = g_slist_delete_link(p, p)) { + MathToken *t = (MathToken *) p->data; + g_free(t); + } +} + +GSList *math_string_to_postfix(gchar * string) +{ + GSList *infix; + GSList *postfix; + + infix = math_string_to_infix(string); + if (!infix) + return NULL; + + postfix = math_infix_to_postfix(infix); + math_infix_free(infix, FALSE); + + return postfix; +} + +gfloat math_string_eval(gchar * string, gfloat at_value) +{ + GSList *postfix; + gfloat val; + + postfix = math_string_to_postfix(string); + val = math_postfix_eval(postfix, at_value); + math_postfix_free(postfix, TRUE); + + return val; +} + +#ifdef MATH_TEST +int main(void) +{ + GSList *postfix; + + gchar *expr = "0.9*(@+(5.2*0.923+3*(2.0)))"; + + postfix = math_string_to_postfix(expr); + g_print("%s = %f (must be 18.71964)\n", expr, + math_postfix_eval(postfix, 10)); + math_postfix_free(postfix, TRUE); + + return 0; +} +#endif diff --git a/hardinfo2/gg_key_file_parse_string_as_value.c b/hardinfo2/gg_key_file_parse_string_as_value.c new file mode 100644 index 00000000..6eba2af3 --- /dev/null +++ b/hardinfo2/gg_key_file_parse_string_as_value.c @@ -0,0 +1,112 @@ +/* From: gkeyfile.c - key file parser + * + * Copyright 2004 Red Hat, Inc. + * Copyright 2009-2010 Collabora Ltd. + * Copyright 2009 Nokia Corporation + * + * Written by Ray Strode + * Matthias Clasen + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this library; if not, see . + */ + +#include +#include + +gchar * +gg_key_file_parse_string_as_value (const gchar *string, const gchar list_separator) +{ + gchar *value, *p, *q; + gsize length; + gboolean parsing_leading_space; + + length = strlen (string) + 1; + + /* Worst case would be that every character needs to be escaped. + * In other words every character turns to two characters. */ + value = g_new (gchar, 2 * length); + + p = (gchar *) string; + q = value; + parsing_leading_space = TRUE; + while (p < (string + length - 1)) + { + gchar escaped_character[3] = { '\\', 0, 0 }; + + switch (*p) + { + case ' ': + if (parsing_leading_space) + { + escaped_character[1] = 's'; + strcpy (q, escaped_character); + q += 2; + } + else + { + *q = *p; + q++; + } + break; + case '\t': + if (parsing_leading_space) + { + escaped_character[1] = 't'; + strcpy (q, escaped_character); + q += 2; + } + else + { + *q = *p; + q++; + } + break; + case '\n': + escaped_character[1] = 'n'; + strcpy (q, escaped_character); + q += 2; + break; + case '\r': + escaped_character[1] = 'r'; + strcpy (q, escaped_character); + q += 2; + break; + case '\\': + escaped_character[1] = '\\'; + strcpy (q, escaped_character); + q += 2; + parsing_leading_space = FALSE; + break; + default: + if (list_separator && *p == list_separator) + { + escaped_character[1] = list_separator; + strcpy (q, escaped_character); + q += 2; + parsing_leading_space = TRUE; + } + else + { + *q = *p; + q++; + parsing_leading_space = FALSE; + } + break; + } + p++; + } + *q = '\0'; + + return value; +} diff --git a/hardinfo2/gg_strescape.c b/hardinfo2/gg_strescape.c new file mode 100644 index 00000000..93efe381 --- /dev/null +++ b/hardinfo2/gg_strescape.c @@ -0,0 +1,139 @@ +/* Base on: GLIB - Library of useful routines for C programming + * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#include +#include + +guchar excmap_def[256] = {1,0}; +static void make_excmap_def() { + int i; + for(i=0; i<256; i++){ + switch ((guchar)i) + { + case '\b': + case '\f': + case '\n': + case '\r': + case '\t': + case '\\': + case '"': + excmap_def[i] = 0; + break; + default: + if ((i < ' ') || (i >= 0177)) + excmap_def[i] = 0; + else + excmap_def[i] = 1; + break; + } + } +} + +gchar * +gg_strescape (const gchar *source, + const gchar *exceptions, + const gchar *extra) +{ + const guchar *p; + gchar *dest; + gchar *q; + guchar excmap[256]; + + g_return_val_if_fail (source != NULL, NULL); + + if (excmap_def[0]) /* [0] should be 0 or it isn't initialized */ + make_excmap_def(); + + memcpy(excmap, excmap_def, 256); + + p = (guchar *) source; + /* Each source byte needs maximally four destination chars (\777) */ + q = dest = g_malloc (strlen (source) * 4 + 1); + + if (exceptions) + { + guchar *e = (guchar *) exceptions; + + while (*e) + { + excmap[*e] = 1; + e++; + } + } + + if (extra) + { + guchar *e = (guchar *) extra; + + while (*e) + { + excmap[*e] = 0; + e++; + } + } + + while (*p) + { + if (excmap[*p]) + *q++ = *p; + else + { + switch (*p) + { + case '\b': + *q++ = '\\'; + *q++ = 'b'; + break; + case '\f': + *q++ = '\\'; + *q++ = 'f'; + break; + case '\n': + *q++ = '\\'; + *q++ = 'n'; + break; + case '\r': + *q++ = '\\'; + *q++ = 'r'; + break; + case '\t': + *q++ = '\\'; + *q++ = 't'; + break; + case '\\': + *q++ = '\\'; + *q++ = '\\'; + break; + case '"': + *q++ = '\\'; + *q++ = '"'; + break; + default: + *q++ = '\\'; + *q++ = '0' + (((*p) >> 6) & 07); + *q++ = '0' + (((*p) >> 3) & 07); + *q++ = '0' + ((*p) & 07); + break; + } + } + p++; + } + *q = 0; + return dest; +} diff --git a/hardinfo2/gpu_util.c b/hardinfo2/gpu_util.c new file mode 100644 index 00000000..5d32f9e2 --- /dev/null +++ b/hardinfo2/gpu_util.c @@ -0,0 +1,477 @@ +/* + * HardInfo - Displays System Information + * Copyright (C) 2003-2017 L. A. F. Pereira + * This file + * Copyright (C) 2018 Burt P. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 2 or later. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include "hardinfo.h" +#include "gpu_util.h" +#include "nice_name.h" +#include "cpu_util.h" /* for EMPIFNULL() */ + +nvgpu *nvgpu_new() { + return g_new0(nvgpu, 1); +} + +void nvgpu_free(nvgpu *s) { + if (s) { + free(s->model); + free(s->bios_version); + free(s->uuid); + } +} + +static char *_line_value(char *line, const char *prefix) { + if (g_str_has_prefix(g_strstrip(line), prefix)) { + line += strlen(prefix) + 1; + return g_strstrip(line); + } else + return NULL; +} + +static gboolean nv_fill_procfs_info(gpud *s) { + gchar *data, *p, *l, *next_nl; + gchar *pci_loc = pci_address_str(s->pci_dev->domain, s->pci_dev->bus, s->pci_dev->device, s->pci_dev->function); + gchar *nvi_file = g_strdup_printf("/proc/driver/nvidia/gpus/%s/information", pci_loc); + + g_file_get_contents(nvi_file, &data, NULL, NULL); + g_free(pci_loc); + g_free(nvi_file); + + if (data) { + s->nv_info = nvgpu_new(); + p = data; + while(next_nl = strchr(p, '\n')) { + strend(p, '\n'); + g_strstrip(p); + if (l = _line_value(p, "Model")) { + s->nv_info->model = g_strdup(l); + goto nv_details_next; + } + if (l = _line_value(p, "GPU UUID")) { + s->nv_info->uuid = g_strdup(l); + goto nv_details_next; + } + if (l = _line_value(p, "Video BIOS")) { + s->nv_info->bios_version = g_strdup(l); + goto nv_details_next; + } + + /* TODO: more details */ + + nv_details_next: + p = next_nl + 1; + } + g_free(data); + return TRUE; + } + return FALSE; +} + +static void intel_fill_freq(gpud *s) { + gchar path[256] = ""; + gchar *min_mhz = NULL, *max_mhz = NULL; + if (s->sysfs_drm_path) { + snprintf(path, 255, "%s/%s/gt_min_freq_mhz", s->sysfs_drm_path, s->id); + g_file_get_contents(path, &min_mhz, NULL, NULL); + snprintf(path, 255, "%s/%s/gt_max_freq_mhz", s->sysfs_drm_path, s->id); + g_file_get_contents(path, &max_mhz, NULL, NULL); + + if (min_mhz) + s->khz_min = atoi(min_mhz) * 1000; + if (max_mhz) + s->khz_max = atoi(max_mhz) * 1000; + + g_free(min_mhz); + g_free(max_mhz); + } +} + +static void amdgpu_parse_dpmclk(gchar *path, int *min, int *max) { + gchar *data = NULL, *p, *next_nl; + int sp, i, clk; + + *min = -1; + *max = -1; + + g_file_get_contents(path, &data, NULL, NULL); + if (data) { + p = data; + + while(next_nl = strchr(p, '\n')) { + strend(p, '\n'); + sp = sscanf(p, "%d: %dMhz", &i, &clk); + + if (sp == 2) { + if (clk > 0) { + if (*min < 0 || clk < *min) + *min = clk; + if (clk > *max) + *max = clk; + } + } + + p = next_nl + 1; + } + } + g_free(data); +} + +static void amdgpu_fill_freq(gpud *s) { + gchar path[256] = ""; + int clk_min = -1, clk_max = -1, mem_clk_min = -1, mem_clk_max = -1; + + if (s->sysfs_drm_path) { + /* core */ + snprintf(path, 255, "%s/%s/device/pp_dpm_sclk", s->sysfs_drm_path, s->id); + amdgpu_parse_dpmclk(path, &clk_min, &clk_max); + + if (clk_max > 0) + s->khz_max = clk_max * 1000; + if (clk_min > 0) + s->khz_min = clk_min * 1000; + + /* memory */ + snprintf(path, 255, "%s/%s/device/pp_dpm_mclk", s->sysfs_drm_path, s->id); + amdgpu_parse_dpmclk(path, &mem_clk_min, &mem_clk_max); + + if (mem_clk_max > 0) + s->mem_khz_max = mem_clk_max * 1000; + if (mem_clk_min > 0) + s->mem_khz_min = mem_clk_min * 1000; + } +} + +gpud *gpud_new() { + return g_new0(gpud, 1); +} + +void gpud_free(gpud *s) { + if (s) { + free(s->id); + free(s->nice_name); + free(s->vendor_str); + free(s->device_str); + free(s->location); + free(s->drm_dev); + free(s->sysfs_drm_path); + free(s->dt_compat); + g_free(s->dt_opp); + pcid_free(s->pci_dev); + nvgpu_free(s->nv_info); + g_free(s); + } +} + +void gpud_list_free(gpud *s) { + gpud *n; + while(s != NULL) { + n = s->next; + gpud_free(s); + s = n; + } +} + +/* returns number of items after append */ +static int gpud_list_append(gpud *l, gpud *n) { + int c = 0; + while(l != NULL) { + c++; + if (l->next == NULL) { + if (n != NULL) { + l->next = n; + c++; + } + break; + } + l = l->next; + } + return c; +} + +int gpud_list_count(gpud *s) { + return gpud_list_append(s, NULL); +} + +/* TODO: In the future, when there is more vendor specific information available in + * the gpu struct, then more precise names can be given to each gpu */ +static void make_nice_name(gpud *s) { + + /* NV information available */ + if (s->nv_info && s->nv_info->model) { + s->nice_name = g_strdup_printf("%s %s", "NVIDIA", s->nv_info->model); + return; + } + + static const char unk_v[] = "Unknown"; /* do not... */ + static const char unk_d[] = "Device"; /* ...translate */ + const char *vendor_str = s->vendor_str; + const char *device_str = s->device_str; + if (!vendor_str) + vendor_str = unk_v; + if (!device_str) + device_str = unk_d; + + /* try and a get a "short name" for the vendor */ + vendor_str = vendor_get_shortest_name(vendor_str); + + if (strstr(vendor_str, "Intel")) { + gchar *device_str_clean = strdup(device_str); + nice_name_intel_gpu_device(device_str_clean); + s->nice_name = g_strdup_printf("%s %s", vendor_str, device_str_clean); + g_free(device_str_clean); + } else if (strstr(vendor_str, "AMD")) { + /* AMD PCI strings are crazy stupid because they use the exact same + * chip and device id for a zillion "different products" */ + char *full_name = strdup(device_str); + /* Try and shorten it to the chip code name only, at least */ + char *b = strchr(full_name, '['); + if (b) *b = '\0'; + s->nice_name = g_strdup_printf("%s %s", "AMD/ATI", g_strstrip(full_name)); + free(full_name); + } else { + /* nothing nicer */ + s->nice_name = g_strdup_printf("%s %s", vendor_str, device_str); + } + +} + +/* Look for this kind of thing: + * * /soc/gpu + * * /gpu@ff300000 + * + * Usually a gpu dt node will have ./name = "gpu" + */ +static gchar *dt_find_gpu(dtr *dt, char *np) { + gchar *dir_path, *dt_path, *ret; + gchar *ftmp, *ntmp; + const gchar *fn; + GDir *dir; + dtr_obj *obj; + + /* consider self */ + obj = dtr_obj_read(dt, np); + dt_path = dtr_obj_path(obj); + ntmp = strstr(dt_path, "/gpu"); + if (ntmp) { + /* was found in node name */ + if ( strchr(ntmp+1, '/') == NULL) { + ftmp = ntmp + 4; + /* should either be NULL or @ */ + if (*ftmp == '\0' || *ftmp == '@') + return g_strdup(dt_path); + } + } + + /* search children ... */ + dir_path = g_strdup_printf("%s/%s", dtr_base_path(dt), np); + dir = g_dir_open(dir_path, 0 , NULL); + if (dir) { + while((fn = g_dir_read_name(dir)) != NULL) { + ftmp = g_strdup_printf("%s/%s", dir_path, fn); + if ( g_file_test(ftmp, G_FILE_TEST_IS_DIR) ) { + if (strcmp(np, "/") == 0) + ntmp = g_strdup_printf("/%s", fn); + else + ntmp = g_strdup_printf("%s/%s", np, fn); + ret = dt_find_gpu(dt, ntmp); + g_free(ntmp); + if (ret != NULL) { + g_free(ftmp); + g_dir_close(dir); + return ret; + } + } + g_free(ftmp); + } + g_dir_close(dir); + } + + return NULL; +} + +gpud *dt_soc_gpu() { + static const char std_soc_gpu_drm_path[] = "/sys/devices/platform/soc/soc:gpu/drm"; + + /* compatible contains a list of compatible hardware, so be careful + * with matching order. + * ex: "ti,omap3-beagleboard-xm", "ti,omap3450", "ti,omap3"; + * matches "omap3 family" first. + * ex: "brcm,bcm2837", "brcm,bcm2836"; + * would match 2836 when it is a 2837. + */ + const struct { + char *search_str; + char *vendor; + char *soc; + } dt_compat_searches[] = { + { "brcm,bcm2837-vc4", "Broadcom", "VideoCore IV" }, + { "brcm,bcm2836-vc4", "Broadcom", "VideoCore IV" }, + { "brcm,bcm2835-vc4", "Broadcom", "VideoCore IV" }, + { "arm,mali-450", "ARM", "Mali 450" }, + { "arm,mali", "ARM", "Mali family" }, + { NULL, NULL, NULL } + }; + char tmp_path[256] = ""; + char *dt_gpu_path = NULL; + char *compat = NULL; + char *vendor = NULL, *device = NULL; + int i; + + gpud *gpu = NULL; + + dtr *dt = dtr_new(NULL); + if (!dtr_was_found(dt)) + goto dt_gpu_end; + + dt_gpu_path = dt_find_gpu(dt, "/"); + + if (dt_gpu_path == NULL) + goto dt_gpu_end; + + snprintf(tmp_path, 255, "%s/compatible", dt_gpu_path); + compat = dtr_get_string(tmp_path, 1); + + if (compat == NULL) + goto dt_gpu_end; + + gpu = gpud_new(); + + i = 0; + while(dt_compat_searches[i].search_str != NULL) { + if (strstr(compat, dt_compat_searches[i].search_str) != NULL) { + vendor = dt_compat_searches[i].vendor; + device = dt_compat_searches[i].soc; + break; + } + i++; + } + + gpu->dt_compat = compat; + gpu->dt_vendor = vendor; + gpu->dt_device = device; + gpu->dt_path = dt_gpu_path; + snprintf(tmp_path, 255, "%s/status", dt_gpu_path); + gpu->dt_status = dtr_get_string(tmp_path, 1); + snprintf(tmp_path, 255, "%s/name", dt_gpu_path); + gpu->dt_name = dtr_get_string(tmp_path, 1); + gpu->dt_opp = dtr_get_opp_range(dt, dt_gpu_path); + if (gpu->dt_opp) { + gpu->khz_max = gpu->dt_opp->khz_max; + gpu->khz_min = gpu->dt_opp->khz_min; + } + EMPIFNULL(gpu->dt_name); + EMPIFNULL(gpu->dt_status); + + gpu->id = strdup("dt-soc-gpu"); + gpu->location = strdup("SOC"); + + if (access(std_soc_gpu_drm_path, F_OK) != -1) + gpu->sysfs_drm_path = strdup(std_soc_gpu_drm_path); + if (vendor) gpu->vendor_str = strdup(vendor); + if (device) gpu->device_str = strdup(device); + make_nice_name(gpu); + + +dt_gpu_end: + dtr_free(dt); + return gpu; +} + +gpud *gpu_get_device_list() { + int cn = 0; + gpud *list = NULL; + +/* Can we just ask DRM someway? ... */ + /* TODO: yes. /sys/class/drm/card* */ + +/* Try PCI ... */ + pcid_list pci_list = pci_get_device_list(0x300,0x3ff); + GSList *l = pci_list; + + if (l) { + while(l) { + pcid *curr = (pcid*)l->data; + char *pci_loc = NULL; + gpud *new_gpu = gpud_new(); + new_gpu->pci_dev = curr; + + pci_loc = pci_address_str(curr->domain, curr->bus, curr->device, curr->function); + + int len; + char drm_id[512] = "", card_id[64] = ""; + char *drm_dev = NULL; + gchar *drm_path = + g_strdup_printf("/dev/dri/by-path/pci-%s-card", pci_loc); + memset(drm_id, 0, 512); + if ((len = readlink(drm_path, drm_id, sizeof(drm_id)-1)) != -1) + drm_id[len] = '\0'; + g_free(drm_path); + + if (strlen(drm_id) != 0) { + /* drm has the card */ + drm_dev = strstr(drm_id, "card"); + if (drm_dev) + snprintf(card_id, 64, "%s", drm_dev); + } + + if (strlen(card_id) == 0) { + /* fallback to our own counter */ + snprintf(card_id, 64, "pci-dc%d", cn); + cn++; + } + + if (drm_dev) + new_gpu->drm_dev = strdup(drm_dev); + + char *sysfs_path_candidate = g_strdup_printf("%s/%s/drm", SYSFS_PCI_ROOT, pci_loc); + if (access(sysfs_path_candidate, F_OK) != -1) { + new_gpu->sysfs_drm_path = sysfs_path_candidate; + } else + free(sysfs_path_candidate); + new_gpu->location = g_strdup_printf("PCI/%s", pci_loc); + new_gpu->id = strdup(card_id); + if (curr->vendor_id_str) new_gpu->vendor_str = strdup(curr->vendor_id_str); + if (curr->device_id_str) new_gpu->device_str = strdup(curr->device_id_str); + nv_fill_procfs_info(new_gpu); + intel_fill_freq(new_gpu); + amdgpu_fill_freq(new_gpu); + make_nice_name(new_gpu); + if (list == NULL) + list = new_gpu; + else + gpud_list_append(list, new_gpu); + + free(pci_loc); + l=l->next; + } + + /* don't pcid_list_free(pci_list); They will be freed by gpud_free() */ + g_slist_free(pci_list); /* just the linking data */ + return list; + } + +/* Try Device Tree ... */ + list = dt_soc_gpu(); + if (list) return list; + +/* Try other things ... */ + + return list; +} + + diff --git a/hardinfo2/hardinfo.c b/hardinfo2/hardinfo.c new file mode 100644 index 00000000..edbad308 --- /dev/null +++ b/hardinfo2/hardinfo.c @@ -0,0 +1,175 @@ +/* + * HardInfo - Displays System Information + * Copyright (C) 2003-2009 L. A. F. Pereira + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 2 or later. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include +#include + +#include +#include +#include +#include +#include + +#include +#include "dmi_util.h" + +ProgramParameters params = { 0 }; + +int main(int argc, char **argv) +{ + int exit_code = 0; + GSList *modules; + + setlocale(LC_ALL, ""); + bindtextdomain("hardinfo2", LOCALEDIR); + textdomain("hardinfo2"); + + DEBUG("Hardinfo2 version " VERSION ". Debug version."); + +#if GLIB_CHECK_VERSION(2,32,0) +#else + if (!g_thread_supported ()) g_thread_init (NULL); +#endif + + /* parse all command line parameters */ + parameters_init(&argc, &argv, ¶ms); + + /* show version information and quit */ + if (params.show_version) { + g_print("Hardinfo2 version " VERSION "\n"); + g_print + (_(/*/ %d will be latest year of copyright*/ "Copyright (C) 2003-2023 L. A. F. Pereira. 2024-%d Hardinfo2 Project.\n\n"), HARDINFO2_COPYRIGHT_LATEST_YEAR ); + + g_print(_("Compile-time options:\n" + " Release version: %s (%s)\n" + " BinReloc enabled: %s\n" + " Data prefix: %s\n" + " Library prefix: %s\n" + " Compiled for: %s\n"), + RELEASE ? _("Yes") : "No (" VERSION ")", ARCH, + ENABLE_BINRELOC ? _("Yes") : _("No"), + PREFIX, LIBPREFIX, PLATFORM); + + DEBUG(" Debugging is enabled."); + + /* show also available modules */ + params.list_modules = TRUE; + } + + /* initialize the binreloc library, so we can load program data */ + if (!binreloc_init(FALSE)) + g_error(_("Failed to find runtime data.\n\n" + "\342\200\242 Is HardInfo2 correctly installed?\n" + "\342\200\242 See if %s and %s exists and you have read permission."), + PREFIX, LIBPREFIX); + + /* list all module names */ + if (params.list_modules) { + g_print(_("Modules:\n" + "%-20s %-15s %-12s\n"), _("File Name"), _("Name"), _("Version")); + + for (modules = modules_load_all(); modules; + modules = modules->next) { + ShellModule *module = (ShellModule *) modules->data; + const ModuleAbout *ma = module_get_about(module); + gchar *name = g_path_get_basename(g_module_name(module->dll)); + + g_print("%-20s %-15s %-12s\n", name, module->name, ma->version); + + g_free(name); + } + + return 0; + } + + if (!params.create_report && !params.run_benchmark) { + /* we only try to open the UI if the user didn't ask for a report. */ + params.gui_running = ui_init(&argc, &argv); + + /* as a fallback, if GTK+ initialization failed, run in report + generation mode. */ + if (!params.gui_running) { + params.create_report = TRUE; + /* ... it is possible to -f html without -r */ + if (params.report_format != REPORT_FORMAT_HTML) + params.markup_ok = FALSE; + } + } + + if (params.use_modules) { + /* load only selected modules */ + DEBUG("loading user-selected modules"); + modules = modules_load_selected(); + } else { + /* load all modules */ + DEBUG("loading all modules"); + modules = modules_load_all(); + } + + /* initialize vendor database */ + vendor_init(); + + /* initialize moreinfo */ + moreinfo_init(); + + if (params.run_benchmark) { + gchar *result; + + result = module_call_method_param("benchmark::runBenchmark", params.run_benchmark); + if (!result) { + fprintf(stderr, _("Unknown benchmark ``%s'' or benchmark.so not loaded"), params.run_benchmark); + exit_code = 1; + } else { + fprintf(stderr, "\n"); + g_print("%s\n", result); + g_free(result); + } + } else if (params.gui_running) { + /* initialize gui and start gtk+ main loop */ + icon_cache_init(); + stock_icons_init(); + + shell_init(modules); + + DEBUG("entering gtk+ main loop"); + + gtk_main(); + } else if (params.create_report) { + /* generate report */ + gchar *report; + + DEBUG("generating report"); + + report = report_create_from_module_list_format(modules, + params. + report_format); + g_print("%s", report); + + g_free(report); + } else { + g_error(_("Don't know what to do. Exiting.")); + } + + moreinfo_shutdown(); + vendor_cleanup(); + dmidecode_cache_free(); + free_auto_free_final(); + + DEBUG("finished"); + return exit_code; +} diff --git a/hardinfo2/hinote_util.c b/hardinfo2/hinote_util.c new file mode 100644 index 00000000..efc85be0 --- /dev/null +++ b/hardinfo2/hinote_util.c @@ -0,0 +1,27 @@ + +#include "hardinfo.h" + +/* requires COMPILE_FLAGS "-std=c99" */ + +static const char bullet_yes[] = "\u2713"; +static const char bullet_no[] = "\u2022 "; +static const char bullet_yes_text[] = "[X]"; +static const char bullet_no_text[] = "[ ]"; + +gboolean note_cond_bullet(gboolean cond, gchar *note_buff, const gchar *desc_str) { + int l = strlen(note_buff); + if (params.markup_ok) + snprintf(note_buff + l, note_max_len - l - 1, "%s %s\n", + cond ? bullet_yes : bullet_no, desc_str); + else + snprintf(note_buff + l, note_max_len - l - 1, "%s %s\n", + cond ? bullet_yes_text : bullet_no_text, desc_str); + return cond; +} + +gboolean note_require_tool(const gchar *tool, gchar *note_buff, const gchar *desc_str) { + gchar *tl = find_program((gchar*)tool); + gboolean found = note_cond_bullet(!!tl, note_buff, desc_str); + g_free(tl); + return found; +} diff --git a/hardinfo2/info.c b/hardinfo2/info.c new file mode 100644 index 00000000..fae16497 --- /dev/null +++ b/hardinfo2/info.c @@ -0,0 +1,584 @@ +/* + * HardInfo - Displays System Information + * Copyright (C) 2017 L. A. F. Pereira + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 2 or later. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include "hardinfo.h" +#include "util_sysobj.h" /* for SEQ() */ + +/* Using a slightly modified gg_key_file_parse_string_as_value() + * from GLib in flatten(), to escape characters and the separator. + * The function is not public in GLib and we don't have a GKeyFile + * to pass it anyway. */ +/* Now in hardinfo.h -- #include "gg_key_file_parse_string_as_value.c" */ + +static const gchar *info_column_titles[] = { + "TextValue", "Value", "Progress", "Extra1", "Extra2" +}; + +struct Info *info_new(void) +{ + struct Info *info = g_new0(struct Info, 1); + + info->groups = g_array_new(FALSE, FALSE, sizeof(struct InfoGroup)); + info->view_type = SHELL_VIEW_NORMAL; + info->column_headers_visible = FALSE; + info->zebra_visible = FALSE; + info->normalize_percentage = TRUE; + + return info; +} + +void info_group_add_field(struct InfoGroup *group, struct InfoField field) +{ + if (!group) + return; + + /* info_field_last() */ + if (!field.name) + return; + + g_array_append_val(group->fields, field); +} + +void info_group_add_fieldsv(struct InfoGroup *group, va_list ap) +{ + while (1) { + struct InfoField field = va_arg(ap, struct InfoField); + + /* info_field_last() */ + if (!field.name) + break; + + g_array_append_val(group->fields, field); + } +} + +void info_group_add_fields(struct InfoGroup *group, ...) +{ + va_list ap; + + va_start(ap, group); + info_group_add_fieldsv(group, ap); + va_end(ap); +} + +struct InfoGroup *info_add_group(struct Info *info, const gchar *group_name, ...) +{ + struct InfoGroup group = { + .name = group_name, + .fields = g_array_new(FALSE, FALSE, sizeof(struct InfoField)) + }; + va_list ap; + + va_start(ap, group_name); + info_group_add_fieldsv(&group, ap); + va_end(ap); + + g_array_append_val(info->groups, group); + + return &g_array_index(info->groups, struct InfoGroup, info->groups->len - 1); +} + +struct InfoField info_field_printf(const gchar *name, const gchar *format, ...) +{ + gchar *value; + va_list ap; + + va_start(ap, format); + value = g_strdup_vprintf(format, ap); + va_end(ap); + + return (struct InfoField) { + .name = name, + .value = value, + .free_value_on_flatten = TRUE, + }; +} + +void info_group_strip_extra(struct InfoGroup *group) +{ + guint fi; + char *val, *oldval; + struct InfoField *field; + + for (fi = 0; fi < group->fields->len; fi++) { + field = &g_array_index(group->fields, struct InfoField, fi); + if (field->value){ + val = strrchr(field->value, '|'); + if (val) { + oldval = (gchar*)field->value; + field->value = strdup(val + 1); + g_free(oldval); + } + } + } +} + +void info_add_computed_group(struct Info *info, const gchar *name, const gchar *value) +{ + /* This is a scaffolding method: HardInfo should move away from pre-computing + * the strings in favor of storing InfoGroups instead; while modules are not + * fully converted, use this instead. */ + struct Info *tmp_info = NULL; + struct InfoGroup donor = {}; + gchar *tmp_str = NULL; + + if (name) + tmp_str = g_strdup_printf("[%s]\n%s", name, value); + else + tmp_str = g_strdup(value); + + tmp_info = info_unflatten(tmp_str); + if (tmp_info->groups->len != 1) { + fprintf(stderr, + "info_add_computed_group(): expected only one group in value! (actual: %d)\n", + tmp_info->groups->len); + } else { + donor = g_array_index(tmp_info->groups, struct InfoGroup, 0); + g_array_append_val(info->groups, donor); + } + + g_free(tmp_info); // TODO: doesn't do enough + g_free(tmp_str); +} + +void info_add_computed_group_wo_extra(struct Info *info, const gchar *name, const gchar *value) +{ + /* This is a scaffolding method: HardInfo should move away from pre-computing + * the strings in favor of storing InfoGroups instead; while modules are not + * fully converted, use this instead. */ + struct InfoGroup *agroup; + + info_add_computed_group(info, name, value); + if (info->groups->len > 0) { + agroup = &g_array_index(info->groups, struct InfoGroup, info->groups->len - 1); + info_group_strip_extra(agroup); + } +} + +void info_set_column_title(struct Info *info, const gchar *column, const gchar *title) +{ + guint i; + + for (i = 0; i < G_N_ELEMENTS(info_column_titles); i++) { + if (g_str_equal(info_column_titles[i], column)) { + info->column_titles[i] = title; + return; + } + } +} + +void info_set_column_headers_visible(struct Info *info, gboolean setting) +{ + info->column_headers_visible = setting; +} + +void info_set_zebra_visible(struct Info *info, gboolean setting) +{ + info->zebra_visible = setting; +} + +void info_set_normalize_percentage(struct Info *info, gboolean setting) +{ + info->normalize_percentage = setting; +} + +void info_set_view_type(struct Info *info, ShellViewType setting) +{ + info->view_type = setting; +} + +void info_set_reload_interval(struct Info *info, int setting) +{ + info->reload_interval = setting; +} + +static int info_field_cmp_name_ascending(const void *a, const void *b) +{ + const struct InfoField *aa = a, *bb = b; + return g_strcmp0(aa->name, bb->name); +} + +static int info_field_cmp_name_descending(const void *a, const void *b) +{ + const struct InfoField *aa = a, *bb = b; + return g_strcmp0(bb->name, aa->name); +} + +static int info_field_cmp_value_ascending(const void *a, const void *b) +{ + const struct InfoField *aa = a, *bb = b; + return g_strcmp0(aa->value, bb->value); +} + +static int info_field_cmp_value_descending(const void *a, const void *b) +{ + const struct InfoField *aa = a, *bb = b; + return g_strcmp0(bb->value, aa->value); +} + +static int info_field_cmp_tag_ascending(const void *a, const void *b) +{ + const struct InfoField *aa = a, *bb = b; + return g_strcmp0(aa->tag, bb->tag); +} + +static int info_field_cmp_tag_descending(const void *a, const void *b) +{ + const struct InfoField *aa = a, *bb = b; + return g_strcmp0(bb->tag, aa->tag); +} + +static const GCompareFunc sort_functions[INFO_GROUP_SORT_MAX] = { + [INFO_GROUP_SORT_NONE] = NULL, + [INFO_GROUP_SORT_NAME_ASCENDING] = info_field_cmp_name_ascending, + [INFO_GROUP_SORT_NAME_DESCENDING] = info_field_cmp_name_descending, + [INFO_GROUP_SORT_VALUE_ASCENDING] = info_field_cmp_value_ascending, + [INFO_GROUP_SORT_VALUE_DESCENDING] = info_field_cmp_value_descending, + [INFO_GROUP_SORT_TAG_ASCENDING] = info_field_cmp_tag_ascending, + [INFO_GROUP_SORT_TAG_DESCENDING] = info_field_cmp_tag_descending, +}; + +static void field_free_strings(struct InfoField *field) +{ + if (field->free_value_on_flatten) + g_free((gchar *)field->value); + if (field->free_name_on_flatten) + g_free((gchar *)field->name); + g_free(field->tag); +} + +static void free_group_fields(struct InfoGroup *group) +{ + if (group && group->fields) { + guint i; + + for (i = 0; i < group->fields->len; i++) { + struct InfoField *field = + &g_array_index(group->fields, struct InfoField, i); + field_free_strings(field); + } + + g_array_free(group->fields, TRUE); + } +} + +static void flatten_group(GString *output, const struct InfoGroup *group, guint group_count) +{ + guint i; + + if (group->name != NULL) + g_string_append_printf(output, "[%s#%d]\n", group->name, group_count); + + if (group->sort != INFO_GROUP_SORT_NONE) + g_array_sort(group->fields, sort_functions[group->sort]); + + if (group->fields) { + for (i = 0; i < group->fields->len; i++) { + struct InfoField *field = &g_array_index(group->fields, struct InfoField, i); + gchar tmp_tag[256] = ""; /* for generated tag */ + + gboolean do_escape = TRUE; /* refers to the value side only */ + if (field->value && strchr(field->value, '|') ) { + /* turning off escaping for values that may have columns */ + do_escape = FALSE; + /* TODO:/FIXME: struct InfoField should store the column values + * in an array instead of packing them into one value with '|'. + * Then each value can be escaped and joined together with '|' + * for flatten(). unflatten() can then split on non-escaped '|', + * and unescape the result values into the column value array. + * Another way to do this might be to check + * .column_headers_visible in struct Info, but that is not + * available here. + */ + } + + const gchar *tp = field->tag; + gboolean tagged = !!tp; + gboolean flagged = field->highlight || field->report_details || field->value_has_vendor; + if (!tp) { + snprintf(tmp_tag, 255, "ITEM%d-%d", group_count, i); + tp = tmp_tag; + } + if (!field->label_is_escaped) { + if (strchr(field->name, '=') + || strchr(field->name, '$')) { + // TODO: what about # ? + gchar *ofn = (gchar*)field->name; + field->name = key_label_escape(ofn); + g_free(ofn); + field->label_is_escaped = TRUE; + } + } + if (tagged || flagged || field->icon) { + g_string_append_printf(output, "$%s%s%s%s%s$", + field->label_is_escaped ? "@" : "", + field->highlight ? "*" : "", + field->report_details ? "!" : "", + field->value_has_vendor ? "^" : "", + tp); + } + + if (do_escape) { + gchar *escaped_value = gg_key_file_parse_string_as_value(field->value, '|'); + g_string_append_printf(output, "%s=%s\n", field->name, escaped_value); + g_free(escaped_value); + } else { + g_string_append_printf(output, "%s=%s\n", field->name, field->value); + } + } + } else if (group->computed) { + g_string_append_printf(output, "%s\n", group->computed); + } +} + +static void flatten_shell_param(GString *output, const struct InfoGroup *group, guint group_count) +{ + guint i; + + if (!group->fields) + return; + + for (i = 0; i < group->fields->len; i++) { + struct InfoField *field = &g_array_index(group->fields, struct InfoField, i); + gchar tmp_tag[256] = ""; /* for generated tag */ + + const gchar *tp = field->tag; + gboolean tagged = !!tp; + if (!tp) { + snprintf(tmp_tag, 255, "ITEM%d-%d", group_count, i); + tp = tmp_tag; + } + + if (field->update_interval) { + g_string_append_printf(output, "UpdateInterval$%s%s%s=%d\n", + tagged ? tp : "", tagged ? "$" : "", /* tag and close or nothing */ + field->name, + field->update_interval); + } + + if (field->icon) { + g_string_append_printf(output, "Icon$%s$=%s\n", + tp, field->icon); + } + } +} + +static void flatten_shell_param_global(GString *output, const struct Info *info) +{ + guint i; + + g_string_append_printf(output, "ViewType=%d\n", info->view_type); + g_string_append_printf(output, "ShowColumnHeaders=%s\n", + info->column_headers_visible ? "true" : "false"); + + if (info->zebra_visible) + g_string_append(output, "Zebra=1\n"); + + if (info->reload_interval) + g_string_append_printf(output, "ReloadInterval=%d\n", info->reload_interval); + + if (!info->normalize_percentage) + g_string_append(output, "NormalizePercentage=false\n"); + + for (i = 0; i < G_N_ELEMENTS(info_column_titles); i++) { + if (!info->column_titles[i]) + continue; + + g_string_append_printf(output, "ColumnTitle$%s=%s\n", + info_column_titles[i], info->column_titles[i]); + } +} + +gchar *info_flatten(struct Info *info) +{ + /* This is a scaffolding method: eventually the HardInfo shell should + * understand a struct Info instead of parsing these strings, which are + * brittle and unnecessarily complicates things. Being a temporary + * method, no attention is paid to improve the memory allocation + * strategy. */ + GString *values; + GString *shell_param; + guint i; + + values = g_string_new(NULL); + shell_param = g_string_new(NULL); + + if (info->groups) { + for (i = 0; i < info->groups->len; i++) { + struct InfoGroup *group = + &g_array_index(info->groups, struct InfoGroup, i); + + flatten_group(values, group, i); + flatten_shell_param(shell_param, group, i); + + free_group_fields(group); + } + + g_array_free(info->groups, TRUE); + } + + flatten_shell_param_global(shell_param, info); + g_string_append_printf(values, "[$ShellParam$]\n%s", shell_param->str); + + g_string_free(shell_param, TRUE); + g_free(info); + + return g_string_free(values, FALSE); +} + +void info_remove_group(struct Info *info, guint index) +{ + struct InfoGroup *grp; + + if (index >= info->groups->len) + return; + + grp = &g_array_index(info->groups, struct InfoGroup, index); + free_group_fields(grp); + + g_array_remove_index(info->groups, index); +} + +struct InfoField *info_find_field(struct Info *info, const gchar *tag, const gchar *name) { + struct InfoGroup *group; + struct InfoField *field; + guint gi,fi; + for (gi = 0; gi < info->groups->len; gi++) { + struct InfoGroup *group = &g_array_index(info->groups, struct InfoGroup, gi); + for (fi = 0; fi < group->fields->len; fi++) { + struct InfoField *field = &g_array_index(group->fields, struct InfoField, fi); + if (tag && SEQ(tag, field->tag) ) + return field; + else if (name && SEQ(name, field->name) ) + return field; + } + } + return NULL; +} + +#define VAL_FALSE_OR_TRUE ((!g_strcmp0(value, "true") || !g_strcmp0(value, "1")) ? TRUE : FALSE) + +struct Info *info_unflatten(const gchar *str) +{ + struct Info *info = info_new(); + GKeyFile *key_file = g_key_file_new(); + gchar **groups; + gsize ngroups; + int g, k, spg = -1; + + g_key_file_load_from_data(key_file, str, strlen(str), 0, NULL); + groups = g_key_file_get_groups(key_file, &ngroups); + for (g = 0; groups[g]; g++) { + gchar *group_name = groups[g]; + gchar **keys = g_key_file_get_keys(key_file, group_name, NULL, NULL); + + if (*group_name == '$') { + /* special group */ + if (SEQ(group_name, "$ShellParam$") ) + spg = g; /* handle after all groups are added */ + else { + /* This special group is unknown and won't be handled, so + * the name will not be linked anywhere. */ + g_free(group_name); + continue; + } + } else { + /* normal group */ + struct InfoGroup group = {}; + group.name = group_name; + group.fields = g_array_new(FALSE, FALSE, sizeof(struct InfoField)); + group.sort = INFO_GROUP_SORT_NONE; + + for (k = 0; keys[k]; k++) { + struct InfoField field = {}; + gchar *flags, *tag, *name, *label, *dis; + key_get_components(keys[k], &flags, &tag, &name, &label, &dis, TRUE); + gchar *value = g_key_file_get_value(key_file, group_name, keys[k], NULL); + + field.tag = tag; + field.name = name; + field.value = value; + if (key_label_is_escaped(flags)) + field.label_is_escaped = TRUE; + if (key_wants_details(flags)) + field.report_details = TRUE; + if (key_is_highlighted(flags)) + field.highlight = TRUE; + if (key_value_has_vendor_string(flags)) + field.value_has_vendor = TRUE; + field.free_value_on_flatten = TRUE; + field.free_name_on_flatten = TRUE; + + g_free(flags); + g_free(label); + g_free(dis); + g_array_append_val(group.fields, field); + } + g_array_append_val(info->groups, group); + } + } + + if (spg >= 0) { + gchar *group_name = groups[spg]; + gchar **keys = g_key_file_get_keys(key_file, group_name, NULL, NULL); + for (k = 0; keys[k]; k++) { + gchar *value = g_key_file_get_value(key_file, group_name, keys[k], NULL); + gchar *parm = NULL; + if (SEQ(keys[k], "ViewType")) { + info_set_view_type(info, atoi(value)); + } else if (SEQ(keys[k], "ShowColumnHeaders")) { + info_set_column_headers_visible(info, VAL_FALSE_OR_TRUE); + } else if (SEQ(keys[k], "Zebra")) { + info_set_zebra_visible(info, VAL_FALSE_OR_TRUE); + } else if (SEQ(keys[k], "ReloadInterval")) { + info_set_reload_interval(info, atoi(value)); + } else if (SEQ(keys[k], "NormalizePercentage")) { + info_set_normalize_percentage(info, VAL_FALSE_OR_TRUE); + } else if (g_str_has_prefix(keys[k], "ColumnTitle$")) { + info_set_column_title(info, strchr(keys[k], '$') + 1, value); + } else if (g_str_has_prefix(keys[k], "Icon$")) { + const gchar *chk_name = NULL; + gchar *chk_tag = NULL; + parm = strchr(keys[k], '$'); + if (key_is_flagged(parm)) + chk_tag = key_mi_tag(parm); + struct InfoField *field = info_find_field(info, chk_tag, NULL); + if (field) + field->icon = value; + g_free(chk_tag); + } else if (g_str_has_prefix(keys[k], "UpdateInterval$")) { + const gchar *chk_name = NULL; + gchar *chk_tag = NULL; + parm = strchr(keys[k], '$'); + if (key_is_flagged(parm)) { + chk_tag = key_mi_tag(parm); + chk_name = key_get_name(parm); + } else + chk_name = key_get_name(parm+1); + struct InfoField *field = info_find_field(info, chk_tag, chk_name); + if (field) + field->update_interval = atoi(value); + g_free(chk_tag); + } + } + g_free(group_name); + g_strfreev(keys); + } + + return info; +} diff --git a/hardinfo2/pci_util.c b/hardinfo2/pci_util.c new file mode 100644 index 00000000..f0c5059a --- /dev/null +++ b/hardinfo2/pci_util.c @@ -0,0 +1,463 @@ +/* + * HardInfo - Displays System Information + * Copyright (C) 2003-2017 L. A. F. Pereira + * This file + * Copyright (C) 2018 Burt P. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 2 or later. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include "hardinfo.h" +#include "pci_util.h" +#include "util_ids.h" + +gchar *pci_ids_file = NULL; +GTimer *pci_ids_timer = NULL; +const gboolean nolspci = FALSE; /* true for testing */ + +/* Two pieces of info still only from lspci: + * - kernel driver in use + * - kernel modules list + * + * TODO: could use readlink() and basename() to get kernel driver from sysfs + * - /sys/bus/pci/devices//driver is a symlink + */ + +const gchar *find_pci_ids_file() { + if (pci_ids_file) { + if (!strstr(pci_ids_file, ".min")) + return pci_ids_file; + if (g_timer_elapsed(pci_ids_timer, NULL) > 2.0) { + /* try again for the full version */ + DEBUG("find_pci_ids_file() found only a \".min\" version, trying again..."); + g_free(pci_ids_file); + pci_ids_file = NULL; + } + } + char *file_search_order[] = { + g_strdup("/usr/share/hwdata/pci.ids"), + g_strdup("/usr/share/misc/pci.ids"), + g_build_filename(g_get_user_config_dir(), "hardinfo2", "pci.ids", NULL), + g_build_filename(params.path_data, "pci.ids", NULL), + g_build_filename(g_get_user_config_dir(), "hardinfo2", "pci.ids.min", NULL), + g_build_filename(params.path_data, "pci.ids.min", NULL), + NULL + }; + int n; + for(n = 0; file_search_order[n]; n++) { + if (!pci_ids_file && !access(file_search_order[n], R_OK)) + pci_ids_file = file_search_order[n]; + else + g_free(file_search_order[n]); + } + DEBUG("find_pci_ids_file() result: %s", pci_ids_file); + if (pci_ids_file) { + if (!pci_ids_timer) + pci_ids_timer = g_timer_new(); + else + g_timer_reset(pci_ids_timer); + } + return pci_ids_file; +} + +char *pci_lookup_ids_vendor_str(uint32_t id) { + gchar *ret = NULL; + + ids_query_result result;// = {}; + gchar *qpath; + memset(&result,0,sizeof(ids_query_result)); + if (!find_pci_ids_file()) + return FALSE; + + qpath = g_strdup_printf("%04x", id); + scan_ids_file(pci_ids_file, qpath, &result, -1); + if (result.results[0]) { + ret = g_strdup(result.results[0]); + } + g_free(qpath); + + return ret; +} + +static gboolean pci_lookup_ids(pcid *d) { + gboolean ret = FALSE; + ids_query_result result;// = {}; + gchar *qpath; + memset(&result,0,sizeof(ids_query_result)); + if (!find_pci_ids_file()) + return FALSE; + + /* lookup vendor, device, sub device */ + qpath = g_strdup_printf("%04x/%04x/%04x %04x", + d->vendor_id, d->device_id, d->sub_vendor_id, d->sub_device_id); + scan_ids_file(pci_ids_file, qpath, &result, -1); + if (result.results[0]) { + if (d->vendor_id_str) g_free(d->vendor_id_str); + d->vendor_id_str = g_strdup(result.results[0]); + ret = TRUE; + } + if (result.results[1]) { + if (d->device_id_str) g_free(d->device_id_str); + d->device_id_str = g_strdup(result.results[1]); + ret = TRUE; + } + if (result.results[2]) { + if (d->sub_device_id_str) g_free(d->sub_device_id_str); + d->sub_device_id_str = g_strdup(result.results[2]); + ret = TRUE; + } + g_free(qpath); + + /* lookup sub vendor by itself */ + qpath = g_strdup_printf("%04x", d->sub_vendor_id); + scan_ids_file(pci_ids_file, qpath, &result, -1); + if (result.results[0]) { + if (d->sub_vendor_id_str) g_free(d->sub_vendor_id_str); + d->sub_vendor_id_str = g_strdup(result.results[0]); + ret = TRUE; + }; + g_free(qpath); + + /* lookup class */ + qpath = g_strdup_printf("C %02x/%02x", (d->class >> 8) & 0xff, (d->class & 0xff)); + scan_ids_file(pci_ids_file, qpath, &result, -1); + if (result.results[0]) { + if (d->class_str) g_free(d->class_str); + d->class_str = g_strdup(result.results[0]); + if (result.results[1] + && !SEQ(result.results[0], result.results[1]) ) { + /* options 1: results[0] + " :: " + results[1] */ + //d->class_str = appf(d->class_str, " :: ", "%s", result.results[1]); + + /* option 2: results[1] or results[0] */ + g_free(d->class_str); + d->class_str = g_strdup(result.results[1]); + } + ret = TRUE; + } + g_free(qpath); + + return ret; +} + +gint pcid_cmp_by_addy(gconstpointer a, gconstpointer b) +{ + const struct pcid *dev_a = a; + const struct pcid *dev_b = b; + + if (!dev_a) + return !!dev_b; + if (!dev_b) + return !!dev_a; + + return g_strcmp0(dev_a->slot_str, dev_b->slot_str); +} + +void pcid_free(pcid *s) { + if (s) { + g_free(s->slot_str); + g_free(s->class_str); + g_free(s->vendor_id_str); + g_free(s->device_id_str); + g_free(s->sub_vendor_id_str); + g_free(s->sub_device_id_str); + g_free(s->driver); + g_free(s->driver_list); + g_free(s); + } +} + +static char *lspci_line_value(char *line, const char *prefix) { + if (g_str_has_prefix(g_strstrip(line), prefix)) { + line += strlen(prefix) + 1; + return g_strstrip(line); + } else + return NULL; +} + +/* read output line of lspci -vmmnn */ +static int lspci_line_string_and_code(char *line, char *prefix, char **str, uint32_t *code) { + char *l = lspci_line_value(line, prefix); + char *e; + + if (l) { + e = strchr(l, 0); + while (e > l && *e != '[') e--; + sscanf(e, "[%x]", code); + *e = 0; /* terminate at start of code */ + if (*str) free(*str); /* free if replacing */ + *str = strdup(g_strstrip(l)); + } + return 0; +} + +static gboolean pci_fill_details(pcid *s) { + if (nolspci) return FALSE; + gboolean spawned; + gchar *out, *err, *p, *l, *next_nl; + gchar *pci_loc = pci_address_str(s->domain, s->bus, s->device, s->function); + gchar *lspci_cmd = g_strdup_printf("lspci -D -s %s -vvv", pci_loc); + + spawned = hardinfo_spawn_command_line_sync(lspci_cmd, + &out, &err, NULL, NULL); + g_free(lspci_cmd); + g_free(pci_loc); + if (spawned) { + p = out; + while(next_nl = strchr(p, '\n')) { + strend(p, '\n'); + g_strstrip(p); + if (l = lspci_line_value(p, "Kernel driver in use")) { + s->driver = g_strdup(l); + goto pci_details_next; + } + if (l = lspci_line_value(p, "Kernel modules")) { + s->driver_list = g_strdup(l); + goto pci_details_next; + } + /* TODO: more details */ + + pci_details_next: + p = next_nl + 1; + } + g_free(out); + g_free(err); + return TRUE; + } + return FALSE; +} + +char *pci_address_str(uint32_t dom, uint32_t bus, uint32_t dev, uint32_t func) { + return g_strdup_printf("%04x:%02x:%02x.%01x", dom, bus, dev, func); +} + +/* /sys/bus/pci/devices/0000:01:00.0/ */ +char *_sysfs_bus_pci(uint32_t dom, uint32_t bus, uint32_t dev, uint32_t func, const char *item) { + char *ret = NULL, *pci_loc, *sysfs_path; + pci_loc = pci_address_str(dom, bus, dev, func); + sysfs_path = g_strdup_printf("%s/%s/%s", SYSFS_PCI_ROOT, pci_loc, item); + g_file_get_contents(sysfs_path, &ret, NULL, NULL); + free(pci_loc); + free(sysfs_path); + return ret; +} + +gboolean _sysfs_bus_pci_read_hex(uint32_t dom, uint32_t bus, uint32_t dev, uint32_t func, const char *item, uint32_t *val) { + char *tmp = _sysfs_bus_pci(dom, bus, dev, func, item); + uint32_t tval; + if (tmp && val) { + int ec = sscanf(tmp, "%x", &tval); + free(tmp); + if (ec) { + *val = tval; + return TRUE; + } + } + return FALSE; +} + +/* https://www.kernel.org/doc/Documentation/ABI/testing/sysfs-bus-pci */ +static gboolean pci_get_device_sysfs(uint32_t dom, uint32_t bus, uint32_t dev, uint32_t func, pcid *s) { + char *tmp = NULL; + int ec = 0; + float tf; + s->domain = dom; + s->bus = bus; + s->device = dev; + s->function = func; + s->slot_str = s->slot_str ? s->slot_str : pci_address_str(dom, bus, dev, func); + if (! _sysfs_bus_pci_read_hex(dom, bus, dev, func, "class", &s->class) ) + return FALSE; + s->class >>= 8; /* TODO: find out why */ + _sysfs_bus_pci_read_hex(dom, bus, dev, func, "device", &s->device_id); + _sysfs_bus_pci_read_hex(dom, bus, dev, func, "vendor", &s->vendor_id); + _sysfs_bus_pci_read_hex(dom, bus, dev, func, "subsystem_device", &s->sub_device_id); + _sysfs_bus_pci_read_hex(dom, bus, dev, func, "subsystem_vendor", &s->sub_vendor_id); + _sysfs_bus_pci_read_hex(dom, bus, dev, func, "revision", &s->revision); + + tmp = _sysfs_bus_pci(dom, bus, dev, func, "max_link_speed"); + if (tmp) { + ec = sscanf(tmp, "%f GT/s", &tf); + if (ec) s->pcie_speed_max = tf; + free(tmp); + } + tmp = _sysfs_bus_pci(dom, bus, dev, func, "current_link_speed"); + if (tmp) { + ec = sscanf(tmp, "%f GT/s", &tf); + if (ec) s->pcie_speed_curr = tf; + free(tmp); + } + tmp = _sysfs_bus_pci(dom, bus, dev, func, "max_link_width"); + if (tmp) { + s->pcie_width_max = strtoul(tmp, NULL, 0); + free(tmp); + } + tmp = _sysfs_bus_pci(dom, bus, dev, func, "max_link_width"); + if (tmp) { + s->pcie_width_curr = strtoul(tmp, NULL, 0); + free(tmp); + } + return TRUE; +} + +static gboolean pci_get_device_lspci(uint32_t dom, uint32_t bus, uint32_t dev, uint32_t func, pcid *s) { + if (nolspci) return FALSE; + gboolean spawned; + gchar *out, *err, *p, *l, *next_nl; + gchar *pci_loc = pci_address_str(dom, bus, dev, func); + gchar *lspci_cmd = g_strdup_printf("lspci -D -s %s -vmmnn", pci_loc); + + s->domain = dom; + s->bus = bus; + s->device = dev; + s->function = func; + + spawned = hardinfo_spawn_command_line_sync(lspci_cmd, + &out, &err, NULL, NULL); + g_free(lspci_cmd); + if (spawned) { + p = out; + while(next_nl = strchr(p, '\n')) { + strend(p, '\n'); + g_strstrip(p); + if (l = lspci_line_value(p, "Slot")) { + s->slot_str = g_strdup(l); + if (strcmp(s->slot_str, pci_loc) != 0) { + printf("PCI: %s != %s\n", s->slot_str, pci_loc); + } + } + if (l = lspci_line_value(p, "Rev")) { + s->revision = strtol(l, NULL, 16); + } + lspci_line_string_and_code(p, "Class", &s->class_str, &s->class); + lspci_line_string_and_code(p, "Vendor", &s->vendor_id_str, &s->vendor_id); + lspci_line_string_and_code(p, "Device", &s->device_id_str, &s->device_id); + lspci_line_string_and_code(p, "SVendor", &s->sub_vendor_id_str, &s->sub_vendor_id); + lspci_line_string_and_code(p, "SDevice", &s->sub_device_id_str, &s->sub_device_id); + + p = next_nl + 1; + } + g_free(out); + g_free(err); + g_free(pci_loc); + return TRUE; + } + g_free(pci_loc); + return FALSE; +} + +pcid *pci_get_device_str(const char *addy) { + uint32_t dom, bus, dev, func; + int ec; + if (addy) { + ec = sscanf(addy, "%x:%x:%x.%x", &dom, &bus, &dev, &func); + if (ec == 4) { + return pci_get_device(dom, bus, dev, func); + } + } + return NULL; +} + +pcid *pci_get_device(uint32_t dom, uint32_t bus, uint32_t dev, uint32_t func) { + pcid *s = pcid_new(); + gboolean ok = FALSE; + if (s) { + ok = pci_get_device_sysfs(dom, bus, dev, func, s); + if (ok) { + ok |= pci_lookup_ids(s); + if (!ok) + ok |= pci_get_device_lspci(dom, bus, dev, func, s); + } + if (!ok) { + pcid_free(s); + s = NULL; + } + } + return s; +} + +static pcid_list pci_get_device_list_lspci(uint32_t class_min, uint32_t class_max) { + if (nolspci) return NULL; + gboolean spawned; + gchar *out, *err, *p, *next_nl; + pcid_list dl = NULL; + pcid *nd; + uint32_t dom, bus, dev, func, cls; + int ec; + + if (class_max == 0) class_max = 0xffff; + + spawned = hardinfo_spawn_command_line_sync("lspci -D -mn", + &out, &err, NULL, NULL); + if (spawned) { + p = out; + while(next_nl = strchr(p, '\n')) { + strend(p, '\n'); + ec = sscanf(p, "%x:%x:%x.%x \"%x\"", &dom, &bus, &dev, &func, &cls); + if (ec == 5) { + if (cls >= class_min && cls <= class_max) { + nd = pci_get_device(dom, bus, dev, func); + pci_fill_details(nd); + dl = g_slist_append(dl, nd); + } + } + p = next_nl + 1; + } + g_free(out); + g_free(err); + } + return dl; +} + +static pcid_list pci_get_device_list_sysfs(uint32_t class_min, uint32_t class_max) { + pcid_list dl = NULL; + pcid *nd; + uint32_t dom, bus, dev, func, cls; + int ec; + + if (class_max == 0) class_max = 0xffff; + + const gchar *f = NULL; + GDir *d = g_dir_open("/sys/bus/pci/devices", 0, NULL); + if (!d) return 0; + + while((f = g_dir_read_name(d))) { + ec = sscanf(f, "%x:%x:%x.%x", &dom, &bus, &dev, &func); + if (ec == 4) { + gchar *cf = g_strdup_printf("/sys/bus/pci/devices/%s/class", f); + gchar *cstr = NULL; + if (g_file_get_contents(cf, &cstr, NULL, NULL) ) { + cls = strtoul(cstr, NULL, 16) >> 8; + if (cls >= class_min && cls <= class_max) { + nd = pci_get_device(dom, bus, dev, func); + pci_fill_details(nd); + dl = g_slist_append(dl, nd); + } + } + g_free(cstr); + g_free(cf); + } + } + g_dir_close(d); + return dl; +} + +pcid_list pci_get_device_list(uint32_t class_min, uint32_t class_max) { + pcid_list dl = NULL; + dl = pci_get_device_list_sysfs(class_min, class_max); + if (!dl) + dl = pci_get_device_list_lspci(class_min, class_max); + return dl; +} + diff --git a/hardinfo2/problem_marker.c b/hardinfo2/problem_marker.c new file mode 100644 index 00000000..1e0c2aed --- /dev/null +++ b/hardinfo2/problem_marker.c @@ -0,0 +1,13 @@ + +#include "hardinfo.h" + +/* requires COMPILE_FLAGS "-std=c99" */ + +const char *problem_marker() { + static const char as_markup[] = "\u26A0"; + static const char as_text[] = "(!)"; + if (params.markup_ok) + return as_markup; + else + return as_text; +} diff --git a/hardinfo2/socket.c b/hardinfo2/socket.c new file mode 100644 index 00000000..b94e43c2 --- /dev/null +++ b/hardinfo2/socket.c @@ -0,0 +1,127 @@ +/* + * HardInfo - Displays System Information + * Copyright (C) 2003-2007 L. A. F. Pereira + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 2 or later. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#include "socket.h" + +Socket *sock_connect(gchar * host, gint port) +{ + struct sockaddr_in server; + Socket *s; + int sock; + + sock = socket(AF_INET, SOCK_STREAM, 0); + if (sock > 0) { + memset(&server, 0, sizeof(server)); + server.sin_family = AF_INET; + server.sin_addr.s_addr = inet_addr(host); + server.sin_port = htons(port); + + if (connect(sock, (struct sockaddr *) (void *) &server, sizeof(server)) < 0) { + goto cleanup; + } + + s = g_new0(Socket, 1); + s->sock = sock; + + return s; + } + +cleanup: + close(sock); + + return NULL; +} + +/* From: http://www.erlenstar.demon.co.uk/unix/faq_3.html#SEC26 */ +static inline int __sock_is_ready(Socket * s, int mode) +{ + int rc, fd = s->sock; + fd_set fds; + struct timeval tv; + + FD_ZERO(&fds); + FD_SET(fd, &fds); + tv.tv_sec = tv.tv_usec = 0; + + if (mode == 0) { + /* read */ + rc = select(fd + 1, &fds, NULL, NULL, &tv); + } else { + /* write */ + rc = select(fd + 1, NULL, &fds, NULL, &tv); + } + + if (rc < 0) + return -1; + + return FD_ISSET(fd, &fds) ? 1 : 0; +} + +int sock_ready_to_read(Socket * s) +{ + return __sock_is_ready(s, 0); +} + +int sock_ready_to_write(Socket * s) +{ + return __sock_is_ready(s, 1); +} + +int sock_read(Socket * s, gchar * buffer, gint size) +{ + if (size > 2 && sock_ready_to_read(s)) { + gint n; + + n = read(s->sock, buffer, size - 1); + if (n > 0) { + buffer[n] = '\0'; + } else { + return 0; + } + + return n; + } + + return 0; +} + +int sock_write(Socket * s, gchar * str) +{ + while (!sock_ready_to_write(s)); + + return write(s->sock, str, strlen(str)); +} + +void sock_close(Socket * s) +{ + shutdown(s->sock, 2); + close(s->sock); + g_free(s); +} diff --git a/hardinfo2/storage_util.c b/hardinfo2/storage_util.c new file mode 100644 index 00000000..e7006069 --- /dev/null +++ b/hardinfo2/storage_util.c @@ -0,0 +1,250 @@ +#include "udisks2_util.h" +#include "storage_util.h" +#include "util_ids.h" +#include "hardinfo.h" + +gchar *sdcard_ids_file = NULL; +gchar *oui_ids_file = NULL; + +// moved from udisks2_util.h +void find_sdcard_ids_file() { + if (sdcard_ids_file) return; + char *file_search_order[] = { + g_build_filename(g_get_user_config_dir(), "hardinfo2", "sdcard.ids", NULL), + g_build_filename(params.path_data, "sdcard.ids", NULL), + NULL + }; + int n; + for(n = 0; file_search_order[n]; n++) { + if (!sdcard_ids_file && !access(file_search_order[n], R_OK)) + sdcard_ids_file = file_search_order[n]; + else + g_free(file_search_order[n]); + } +} + +void find_oui_ids_file() { + if (oui_ids_file) return; + char *file_search_order[] = { + g_build_filename(g_get_user_config_dir(), "hardinfo2", "ieee_oui.ids", NULL), + g_build_filename(params.path_data, "ieee_oui.ids", NULL), + NULL + }; + int n; + for(n = 0; file_search_order[n]; n++) { + if (!oui_ids_file && !access(file_search_order[n], R_OK)) + oui_ids_file = file_search_order[n]; + else + g_free(file_search_order[n]); + } +} + +gchar* get_oui_from_wwid(gchar* wwid){ + gchar* ret = NULL; + + if (g_str_has_prefix(wwid, "nna.")) { + if (strlen(wwid)*4 < 48) + return NULL; + + switch (wwid[4]){ + case '1': + case '2': + ret = g_strndup(wwid + 8, 6); + break; + case '5': + case '6': + ret = g_strndup(wwid + 5, 6); + break; + } + } + else if(g_str_has_prefix(wwid, "eui.")) { + if (strlen(wwid)*4 < 48) + return NULL; + ret = g_strndup(wwid+4, 6); + } + + return ret; +} + +gchar* get_oui_company(gchar* oui){ + ids_query_result result = {}; + + if (!oui_ids_file) + find_oui_ids_file(); + + scan_ids_file(oui_ids_file, oui, &result, -1); + if (result.results[0]) + return g_strdup(result.results[0]); + + return NULL; +} + +// moved from udisks2_util.h +void check_sdcard_vendor(u2driveext *e) { + if (!e || !e->d) return; + if (!e->d->media) return; + if (! (g_str_has_prefix(e->d->media, "flash_sd") + || g_str_has_prefix(e->d->media, "flash_mmc") )) return; + if (e->d->vendor && e->d->vendor[0]) return; + if (!e->d->block_dev) return; + + if (!sdcard_ids_file) + find_sdcard_ids_file(); + + gchar *qpath = NULL; + ids_query_result result = {}; + + gchar *oemid_path = g_strdup_printf("/sys/block/%s/device/oemid", e->d->block_dev); + gchar *manfid_path = g_strdup_printf("/sys/block/%s/device/manfid", e->d->block_dev); + gchar *oemid = NULL, *manfid = NULL; + g_file_get_contents(oemid_path, &oemid, NULL, NULL); + g_file_get_contents(manfid_path, &manfid, NULL, NULL); + + unsigned int id = oemid?strtol(oemid, NULL, 16):0; + char c2 = id & 0xff, c1 = (id >> 8) & 0xff; + + qpath = g_strdup_printf("OEMID %02x%02x", (unsigned int)c1, (unsigned int)c2); + scan_ids_file(sdcard_ids_file, qpath, &result, -1); + g_free(oemid); + if (result.results[0]) + oemid = g_strdup(result.results[0]); + else + oemid = g_strdup_printf("OEM %02x%02x \"%c%c\"", + (unsigned int)c1, (unsigned int)c2, + isprint(c1) ? c1 : '.', isprint(c2) ? c2 : '.'); + g_free(qpath); + + id = manfid?strtol(manfid, NULL, 16):0; + qpath = g_strdup_printf("MANFID %06x", id); + scan_ids_file(sdcard_ids_file, qpath, &result, -1); + g_free(manfid); + if (result.results[0]) + manfid = g_strdup(result.results[0]); + else + manfid = g_strdup_printf("MANF %06x", id); + g_free(qpath); + + vendor_list vl = NULL; + const Vendor *v = NULL; + v = vendor_match(oemid, NULL); + if (v) vl = vendor_list_append(vl, v); + v = vendor_match(manfid, NULL); + if (v) vl = vendor_list_append(vl, v); + vl = vendor_list_remove_duplicates_deep(vl); + e->vendors = vendor_list_concat(e->vendors, vl); + + g_free(e->d->vendor); + if (g_strcmp0(oemid, manfid) == 0) + e->d->vendor = g_strdup(oemid); + else + e->d->vendor = g_strdup_printf("%s / %s", oemid, manfid); + + g_free(oemid); + g_free(manfid); + g_free(oemid_path); + g_free(manfid_path); + + if (e->d->revision && e->d->revision[0]) return; + + /* bonus: revision */ + gchar *fwrev_path = g_strdup_printf("/sys/block/%s/device/fwrev", e->d->block_dev); + gchar *hwrev_path = g_strdup_printf("/sys/block/%s/device/hwrev", e->d->block_dev); + gchar *fwrev = NULL, *hwrev = NULL; + g_file_get_contents(fwrev_path, &fwrev, NULL, NULL); + g_file_get_contents(hwrev_path, &hwrev, NULL, NULL); + + unsigned int fw = fwrev ? strtol(fwrev, NULL, 16) : 0; + unsigned int hw = hwrev ? strtol(hwrev, NULL, 16) : 0; + g_free(e->d->revision); + e->d->revision = g_strdup_printf("%02x.%02x", hw, fw); + + g_free(fwrev); + g_free(hwrev); + g_free(fwrev_path); + g_free(hwrev_path); + +} + +void set_nvme_controller_info(u2driveext *e){ + gchar *path = g_strdup_printf("/sys/block/%s/device/device", e->d->block_dev); + gchar *systarget = g_file_read_link(path, NULL); + gchar *target = systarget ? g_filename_to_utf8(systarget, -1, NULL, NULL, NULL) : NULL; + gchar *pci_addy = target ? g_path_get_basename(target) : NULL; + e->nvme_controller = pci_addy ? pci_get_device_str(pci_addy) : NULL; + g_free(path); + g_free(systarget); + g_free(target); + g_free(pci_addy); + if (e->nvme_controller) { + e->vendors = vendor_list_append(e->vendors, + vendor_match(e->nvme_controller->vendor_id_str, NULL)); + e->vendors = vendor_list_append(e->vendors, + vendor_match(e->nvme_controller->sub_vendor_id_str, NULL)); + } +} + +GSList* get_udisks2_drives_ext(void){ + GSList *node, *list; + u2driveext* extdrive; + + list = get_udisks2_all_drives_info(); + + for (node = list; node != NULL; node = node->next) { + extdrive = u2drive_ext((udiskd *)node->data); + node->data = extdrive; + + if (!extdrive->d->vendor || !extdrive->d->vendor[0]) { + // sometimes vendors adds their name to the model field + const Vendor *v = vendor_match(extdrive->d->model, NULL); + if (v) + extdrive->d->vendor = g_strdup(v->name); + } + + check_sdcard_vendor(extdrive); + + extdrive->vendors = vendor_list_append(extdrive->vendors, vendor_match(extdrive->d->vendor, NULL)); + + // get OUI from WWID + if (extdrive->d->wwid) { + extdrive->wwid_oui.oui = get_oui_from_wwid(extdrive->d->wwid); + if (extdrive->wwid_oui.oui) { + extdrive->wwid_oui.vendor = get_oui_company(extdrive->wwid_oui.oui); + } + if (extdrive->wwid_oui.vendor){ + extdrive->vendors = vendor_list_append(extdrive->vendors, vendor_match(extdrive->wwid_oui.vendor, NULL)); + } + } + + // NVMe PCI device + if (strstr(extdrive->d->block_dev, "nvme")) { + set_nvme_controller_info(extdrive); + } + + extdrive->vendors = gg_slist_remove_null(extdrive->vendors); + extdrive->vendors = vendor_list_remove_duplicates_deep(extdrive->vendors); + + } + return list; +} + + +u2driveext* u2drive_ext(udiskd * udisks_drive_data) { + u2driveext* data = g_new0(u2driveext, 1); + data->d = udisks_drive_data; + return data; +} + +void u2driveext_free(u2driveext *u) { + if (u) { + udiskd_free(u->d); + g_free(u->wwid_oui.oui); + g_free(u->wwid_oui.vendor); + pcid_free(u->nvme_controller); + g_free(u); + } +} + +void storage_shutdown(){ + g_free(sdcard_ids_file); + g_free(oui_ids_file); +} diff --git a/hardinfo2/udisks2_util.c b/hardinfo2/udisks2_util.c new file mode 100644 index 00000000..e1567d84 --- /dev/null +++ b/hardinfo2/udisks2_util.c @@ -0,0 +1,641 @@ +#include +#include +#include "udisks2_util.h" + +#define UDISKS2_INTERFACE "org.freedesktop.UDisks2" +#define UDISKS2_MANAGER_INTERFACE "org.freedesktop.UDisks2.Manager" +#define UDISKS2_BLOCK_INTERFACE "org.freedesktop.UDisks2.Block" +#define UDISKS2_LOOP_INTERFACE "org.freedesktop.UDisks2.Loop" +#define UDISKS2_PARTITION_INTERFACE "org.freedesktop.UDisks2.Partition" +#define UDISKS2_PART_TABLE_INTERFACE "org.freedesktop.UDisks2.PartitionTable" +#define UDISKS2_DRIVE_INTERFACE "org.freedesktop.UDisks2.Drive" +#define UDISKS2_DRIVE_ATA_INTERFACE "org.freedesktop.UDisks2.Drive.Ata" +#define DBUS_PROPERTIES_INTERFACE "org.freedesktop.DBus.Properties" +#define UDISKS2_MANAGER_OBJ_PATH "/org/freedesktop/UDisks2/Manager" +#define UDISKS2_BLOCK_DEVICES_PATH "/org/freedesktop/UDisks2/block_devices" + +#define STRDUP_IF_NOT_EMPTY(S) (g_strcmp0(S, "") == 0) ? NULL: g_strdup(S); + +GDBusConnection* udisks2_conn = NULL; + +GVariant* get_dbus_property(GDBusProxy* proxy, const gchar *interface, + const gchar *property) { + GVariant *result, *v = NULL; + GError *error = NULL; + + result = g_dbus_proxy_call_sync(proxy, "Get", + g_variant_new ("(ss)", interface, property), + G_DBUS_CALL_FLAGS_NONE, -1, NULL, &error); + + if (error != NULL) { + g_error_free (error); + return NULL; + } + + g_variant_get(result, "(v)", &v); + g_variant_unref(result); + return v; +} + +// this function works with udisks2 version 2.7.2 or newer +GSList* get_block_dev_paths_from_udisks2(GDBusConnection* conn){ + GDBusProxy *proxy; + GVariant *options, *v; + GVariantIter *iter; + GError *error = NULL; + GSList *block_paths = NULL; + const gchar *block_path = NULL; + + proxy = g_dbus_proxy_new_sync(conn, G_DBUS_PROXY_FLAGS_NONE, NULL, + UDISKS2_INTERFACE, UDISKS2_MANAGER_OBJ_PATH, + UDISKS2_MANAGER_INTERFACE, NULL, &error); + options = g_variant_new_parsed("@a{sv} { %s: }", + "auth.no_user_interaction"); + if (error != NULL){ + g_error_free (error); + g_object_unref(proxy); + return NULL; + } + + v = g_dbus_proxy_call_sync(proxy, "GetBlockDevices", + g_variant_new_tuple(&options, 1), + G_DBUS_CALL_FLAGS_NONE, -1, NULL, &error); + g_object_unref(proxy); + + if (error != NULL){ + g_error_free (error); + return NULL; + } + + g_variant_get(v, "(ao)", &iter); + while (g_variant_iter_loop (iter, "o", &block_path)){ + block_paths = g_slist_append(block_paths, g_strdup(block_path)); + } + + g_variant_iter_free (iter); + g_variant_unref(v); + return block_paths; +} + +GSList* get_block_dev_paths_from_sysfs(){ + GSList *block_paths = NULL; + GDir *dir; + gchar *path; + const gchar *entry; + + dir = g_dir_open("/sys/class/block", 0, NULL); + if (!dir) + return NULL; + + while ((entry = g_dir_read_name(dir))) { + path = g_strdup_printf("%s/%s", UDISKS2_BLOCK_DEVICES_PATH, entry); + block_paths = g_slist_append(block_paths, path); + } + + g_dir_close(dir); + return block_paths; +} + +GSList* udisks2_drives_func_caller(GDBusConnection* conn, + gpointer (*func)(const char*, GDBusProxy*, + GDBusProxy*, const char*)) { + GDBusProxy *block_proxy, *drive_proxy; + GVariant *block_v, *v; + GSList *result_list = NULL, *block_dev_list, *node; + GError *error = NULL; + gpointer output; + + gchar *block_path = NULL; + const gchar *block_dev, *drive_path = NULL; + + if (conn == NULL) + return NULL; + + // get block devices + block_dev_list = get_block_dev_paths_from_udisks2(conn); + if (block_dev_list == NULL) + block_dev_list = get_block_dev_paths_from_sysfs(); + + for (node = block_dev_list; node != NULL; node = node->next) { + block_path = (gchar *)node->data; + block_proxy = g_dbus_proxy_new_sync(conn, G_DBUS_PROXY_FLAGS_NONE, + NULL, UDISKS2_INTERFACE, block_path, + DBUS_PROPERTIES_INTERFACE, NULL, &error); + if (error){ + g_error_free(error); + error = NULL; + continue; + } + + // Skip partitions + v = get_dbus_property(block_proxy, UDISKS2_PARTITION_INTERFACE, "Size"); + if (v){ + g_variant_unref(v); + g_object_unref(block_proxy); + continue; + } + + // Skip loop devices + v = get_dbus_property(block_proxy, UDISKS2_LOOP_INTERFACE, "BackingFile"); + if (v){ + g_variant_unref(v); + g_object_unref(block_proxy); + continue; + } + + block_dev = block_path + strlen(UDISKS2_BLOCK_DEVICES_PATH) + 1; + drive_path = NULL; + + // let's find drive proxy + v = get_dbus_property(block_proxy, UDISKS2_BLOCK_INTERFACE, "Drive"); + if (v){ + drive_path = g_variant_get_string(v, NULL); + + if (g_strcmp0(drive_path, "/") != 0){ + drive_proxy = g_dbus_proxy_new_sync(conn, + G_DBUS_PROXY_FLAGS_NONE, NULL, + UDISKS2_INTERFACE, drive_path, + DBUS_PROPERTIES_INTERFACE, NULL, &error); + + if (error == NULL) { + // call requested function + output = func(block_dev, block_proxy, drive_proxy, drive_path); + + if (output != NULL){ + result_list = g_slist_append(result_list, output); + } + g_object_unref(drive_proxy); + } + else { + g_error_free(error); + error = NULL; + } + } + g_variant_unref(v); + } + g_object_unref(block_proxy); + } + g_slist_free_full(block_dev_list, g_free); + + return result_list; +} + +GDBusConnection* get_udisks2_connection(void) { + GDBusConnection *conn; + GDBusProxy *proxy; + GError *error = NULL; + GVariant *result = NULL; + + // connection to system bus + conn = g_bus_get_sync(G_BUS_TYPE_SYSTEM, NULL, &error); + if (error != NULL) { + g_error_free (error); + return NULL; + } + + // let's check if udisks2 is responding + proxy = g_dbus_proxy_new_sync(conn, G_DBUS_PROXY_FLAGS_NONE, NULL, + UDISKS2_INTERFACE, UDISKS2_MANAGER_OBJ_PATH, + DBUS_PROPERTIES_INTERFACE, NULL, &error); + if (error != NULL) { + g_error_free (error); + g_object_unref(conn); + return NULL; + } + + result = get_dbus_property(proxy, UDISKS2_MANAGER_INTERFACE, "Version"); + g_object_unref(proxy); + if (error != NULL) { + g_error_free (error); + return NULL; + } + + // OK, let's return connection to system bus + g_variant_unref(result); + return conn; +} + +udiskt* udiskt_new() { + return g_new0(udiskt, 1); +} + +udisksa* udisksa_new() { + return g_new0(udisksa, 1); +} + +udiskp* udiskp_new() { + return g_new0(udiskp, 1); +} + +udiskd* udiskd_new() { + return g_new0(udiskd, 1); +} + + +void udiskt_free(udiskt *u) { + if (u) { + g_free(u->drive); + g_free(u); + } +} + +void udisksa_free(udisksa *u) { + if (u) { + g_free(u->identifier); + udisksa_free(u->next); + g_free(u); + } +} + +void udiskp_free(udiskp *u) { + if (u) { + g_free(u->block); + g_free(u->type); + g_free(u->version); + g_free(u->label); + udiskp_free(u->next); + g_free(u); + } +} + +void udiskd_free(udiskd *u) { + if (u) { + g_free(u->model); + g_free(u->vendor); + g_free(u->revision); + g_free(u->block_dev); + g_free(u->serial); + g_free(u->wwid); + g_free(u->connection_bus); + g_free(u->partition_table); + udiskp_free(u->partitions); + udisksa_free(u->smart_attributes); + g_free(u->media); + g_strfreev(u->media_compatibility); + g_free(u); + } +} + + +udiskp* get_udisks2_partition_info(const gchar *part_path) { + GVariant *v; + GDBusProxy *proxy=NULL; + GError *error = NULL; + udiskp* partition; + const gchar *str; + + if (!g_str_has_prefix(part_path, UDISKS2_BLOCK_DEVICES_PATH)) { + return NULL; + } + + partition = udiskp_new(); + partition->block = g_strdup(part_path + strlen(UDISKS2_BLOCK_DEVICES_PATH) + 1); + + proxy = g_dbus_proxy_new_sync(udisks2_conn, G_DBUS_PROXY_FLAGS_NONE, + NULL, UDISKS2_INTERFACE, part_path, + DBUS_PROPERTIES_INTERFACE, NULL, &error); + + if ((proxy != NULL) && (error == NULL)) { + v = get_dbus_property(proxy, UDISKS2_BLOCK_INTERFACE, "IdLabel"); + if (v) { + str = g_variant_get_string(v, NULL); + partition->label = STRDUP_IF_NOT_EMPTY(str); + g_variant_unref(v); + } + v = get_dbus_property(proxy, UDISKS2_BLOCK_INTERFACE, "IdType"); + if (v) { + str = g_variant_dup_string(v, NULL); + partition->type = STRDUP_IF_NOT_EMPTY(str); + g_variant_unref(v); + } + v = get_dbus_property(proxy, UDISKS2_BLOCK_INTERFACE, "IdVersion"); + if (v) { + str = g_variant_dup_string(v, NULL); + partition->version = STRDUP_IF_NOT_EMPTY(str); + g_variant_unref(v); + } + v = get_dbus_property(proxy, UDISKS2_BLOCK_INTERFACE, "Size"); + if (v) { + partition->size = g_variant_get_uint64(v); + g_variant_unref(v); + } + } + else{ + g_error_free(error); + } + + g_object_unref(proxy); + return partition; +} + +gpointer get_udisks2_temp(const char *blockdev, GDBusProxy *block, + GDBusProxy *drive, const char *drivepath){ + GVariant *v; + gboolean smart_enabled = FALSE; + udiskt* disk_temp = NULL; + + v = get_dbus_property(drive, UDISKS2_DRIVE_ATA_INTERFACE, "SmartEnabled"); + if (v) { + smart_enabled = g_variant_get_boolean(v); + g_variant_unref(v); + } + + if (!smart_enabled) { + return NULL; + } + + v = get_dbus_property(drive, UDISKS2_DRIVE_ATA_INTERFACE, "SmartTemperature"); + if (v) { + disk_temp = udiskt_new(); + disk_temp->temperature = (gint32) (g_variant_get_double(v) - 273.15); + g_variant_unref(v); + } + + if (!disk_temp) { + return NULL; + } + + v = get_dbus_property(drive, UDISKS2_DRIVE_INTERFACE, "Model"); + if (v) { + disk_temp->drive = g_variant_dup_string(v, NULL); + g_variant_unref(v); + } + + return disk_temp; +} + +gchar* get_udisks2_smart_attributes(udiskd* dsk, const char *drivepath){ + GDBusProxy *proxy; + GVariant *options, *v, *v2; + GVariantIter *iter; + GError *error = NULL; + const char* aidenf; + guint8 aid; + gint32 avalue, aworst, athreshold, pretty_unit; + gint64 pretty; + udisksa *lastp = NULL, *p; + + proxy = g_dbus_proxy_new_sync(udisks2_conn, G_DBUS_PROXY_FLAGS_NONE, NULL, + UDISKS2_INTERFACE, drivepath, + UDISKS2_DRIVE_ATA_INTERFACE, NULL, &error); + + options = g_variant_new_parsed("@a{sv} { %s: }", + "auth.no_user_interaction"); + if (error != NULL){ + g_error_free (error); + return NULL; + } + + v = g_dbus_proxy_call_sync(proxy, "SmartGetAttributes", + g_variant_new_tuple(&options, 1), + G_DBUS_CALL_FLAGS_NONE, -1, NULL, &error); + g_object_unref(proxy); + + if (error != NULL){ + g_error_free (error); + g_object_unref(proxy); + return NULL; + } + + v2 = g_variant_get_child_value(v, 0); + iter = g_variant_iter_new(v2); + + // id(y), identifier(s), flags(q), value(i), worst(i), threshold(i), + // pretty(x), pretty_unit(i), expansion(a{sv}) + // pretty_unit = 0 (unknown), 1 (dimensionless), 2 (milliseconds), 3 (sectors), 4 (millikelvin). + while (g_variant_iter_loop (iter, "(ysqiiixia{sv})", &aid, &aidenf, NULL, &avalue, + &aworst, &athreshold, &pretty, &pretty_unit, NULL)){ + p = udisksa_new(); + p->id = aid; + p->identifier = g_strdup(aidenf); + p->value = avalue; + p->worst = aworst; + p->threshold = athreshold; + switch (pretty_unit){ + case 1: + p->interpreted_unit = UDSK_INTPVAL_DIMENSIONLESS; + p->interpreted = pretty; + break; + case 2: + if (pretty > 1000*60*60){ // > 1h + p->interpreted_unit = UDSK_INTPVAL_HOURS; + p->interpreted = pretty / (1000*60*60); + } + else{ + p->interpreted_unit = UDSK_INTPVAL_MILISECONDS; + p->interpreted = pretty; + } + break; + case 3: + p->interpreted_unit = UDSK_INTPVAL_SECTORS; + p->interpreted = pretty; + break; + case 4: + p->interpreted_unit = UDSK_INTPVAL_CELSIUS; + p->interpreted = (pretty - 273150) / 1000; //mK to °C + break; + default: + p->interpreted_unit = UDSK_INTPVAL_SKIP; + p->interpreted = -1; + break; + } + p->next = NULL; + + if (lastp == NULL) + dsk->smart_attributes = p; + else + lastp->next = p; + + lastp = p; + } + g_variant_iter_free (iter); + g_variant_unref(v2); + g_variant_unref(v); + + return NULL; +} + +gpointer get_udisks2_drive_info(const char *blockdev, GDBusProxy *block, + GDBusProxy *drive, const char *drivepath) { + GVariant *v; + GVariantIter *iter; + const gchar *str, *part; + udiskd *u = NULL; + udiskp **p = NULL; + gsize n, i; + u = udiskd_new(); + u->block_dev = g_strdup(blockdev); + + v = get_dbus_property(drive, UDISKS2_DRIVE_INTERFACE, "Model"); + if (v){ + u->model = g_variant_dup_string(v, NULL); + g_variant_unref(v); + } + v = get_dbus_property(drive, UDISKS2_DRIVE_INTERFACE, "Vendor"); + if (v){ + u->vendor = g_variant_dup_string(v, NULL); + g_variant_unref(v); + } + v = get_dbus_property(drive, UDISKS2_DRIVE_INTERFACE, "Revision"); + if (v){ + u->revision = g_variant_dup_string(v, NULL); + g_variant_unref(v); + } + v = get_dbus_property(drive, UDISKS2_DRIVE_INTERFACE, "Serial"); + if (v){ + u->serial = g_variant_dup_string(v, NULL); + g_variant_unref(v); + } + v = get_dbus_property(drive, UDISKS2_DRIVE_INTERFACE, "WWN"); + if (v){ + str = g_variant_get_string(v, NULL); + if (g_str_has_prefix(str, "0x")) { + u->wwid = g_strdup_printf("nna.%s", str+2); + } + else if (g_str_has_prefix(str, "nna.") || g_str_has_prefix(str, "eui.")) { + u->wwid = g_strdup(str); + } + g_variant_unref(v); + } + v = get_dbus_property(drive, UDISKS2_DRIVE_INTERFACE, "ConnectionBus"); + if (v){ + u->connection_bus = g_variant_dup_string(v, NULL); + g_variant_unref(v); + } + v = get_dbus_property(drive, UDISKS2_DRIVE_INTERFACE, "RotationRate"); + if (v){ + u->rotation_rate = g_variant_get_int32(v); + g_variant_unref(v); + } + v = get_dbus_property(drive, UDISKS2_DRIVE_INTERFACE, "Size"); + if (v){ + u->size = g_variant_get_uint64(v); + g_variant_unref(v); + } + v = get_dbus_property(drive, UDISKS2_DRIVE_INTERFACE, "Media"); + if (v){ + str = g_variant_get_string(v, NULL); + if (strcmp(str, "") != 0) { + u->media = g_strdup(str); + } + g_variant_unref(v); + } + v = get_dbus_property(drive, UDISKS2_DRIVE_INTERFACE, "MediaCompatibility"); + if (v){ + g_variant_get(v, "as", &iter); + n = g_variant_iter_n_children(iter); + u->media_compatibility = g_malloc0_n(n + 1, sizeof(gchar*)); + + i = 0; + while (g_variant_iter_loop (iter, "s", &str) && i < n){ + u->media_compatibility[i] = g_strdup(str); + i++; + } + + g_variant_iter_free (iter); + g_variant_unref(v); + } + v = get_dbus_property(drive, UDISKS2_DRIVE_INTERFACE, "Ejectable"); + if (v){ + u->ejectable = g_variant_get_boolean(v); + g_variant_unref(v); + } + v = get_dbus_property(drive, UDISKS2_DRIVE_INTERFACE, "Removable"); + if (v){ + u->removable = g_variant_get_boolean(v); + g_variant_unref(v); + } + v = get_dbus_property(drive, UDISKS2_DRIVE_ATA_INTERFACE, "PmSupported"); + if (v){ + u->pm_supported = g_variant_get_boolean(v); + g_variant_unref(v); + } + v = get_dbus_property(drive, UDISKS2_DRIVE_ATA_INTERFACE, "ApmSupported"); + if (v){ + u->apm_supported = g_variant_get_boolean(v); + g_variant_unref(v); + } + v = get_dbus_property(drive, UDISKS2_DRIVE_ATA_INTERFACE, "AamSupported"); + if (v){ + u->aam_supported = g_variant_get_boolean(v); + g_variant_unref(v); + } + v = get_dbus_property(drive, UDISKS2_DRIVE_ATA_INTERFACE, "SmartSupported"); + if (v){ + u->smart_supported = g_variant_get_boolean(v); + g_variant_unref(v); + } + v = get_dbus_property(drive, UDISKS2_DRIVE_ATA_INTERFACE, "SmartEnabled"); + if (v){ + u->smart_enabled = g_variant_get_boolean(v); + g_variant_unref(v); + } + if (u->smart_enabled){ + v = get_dbus_property(drive, UDISKS2_DRIVE_ATA_INTERFACE, "SmartPowerOnSeconds"); + if (v){ + u->smart_poweron = g_variant_get_uint64(v); + g_variant_unref(v); + } + v = get_dbus_property(drive, UDISKS2_DRIVE_ATA_INTERFACE, "SmartNumBadSectors"); + if (v){ + u->smart_bad_sectors = g_variant_get_int64(v); + g_variant_unref(v); + } + v = get_dbus_property(drive, UDISKS2_DRIVE_ATA_INTERFACE, "SmartTemperature"); + if (v){ + u->smart_temperature = (gint) (g_variant_get_double(v) - 273.15); + g_variant_unref(v); + } + v = get_dbus_property(drive, UDISKS2_DRIVE_ATA_INTERFACE, "SmartFailing"); + if (v){ + u->smart_failing = g_variant_get_boolean(v); + g_variant_unref(v); + } + get_udisks2_smart_attributes(u, drivepath); + } + + v = get_dbus_property(block, UDISKS2_PART_TABLE_INTERFACE, "Type"); + if (v){ + u->partition_table = g_variant_dup_string(v, NULL); + g_variant_unref(v); + } + // 'Partitions' property is available in udisks2 version 2.7.2 or newer + v = get_dbus_property(block, UDISKS2_PART_TABLE_INTERFACE, "Partitions"); + if (v){ + g_variant_get(v, "ao", &iter); + + p = &(u->partitions); + while (g_variant_iter_loop (iter, "o", &str)) { + *p = get_udisks2_partition_info(str); + if (*p != NULL){ + p = &((*p)->next); + } + } + + g_variant_iter_free (iter); + g_variant_unref(v); + } + + return u; +} + +GSList* get_udisks2_temps(void){ + return udisks2_drives_func_caller(udisks2_conn, get_udisks2_temp); +} + +GSList* get_udisks2_all_drives_info(void){ + return udisks2_drives_func_caller(udisks2_conn, get_udisks2_drive_info); +} + +void udisks2_init(){ + if (udisks2_conn == NULL){ + //FIXME udisks2_conn = get_udisks2_connection(); + } +} + +void udisks2_shutdown(){ + if (udisks2_conn != NULL){ + g_object_unref(udisks2_conn); + udisks2_conn = NULL; + } +} diff --git a/hardinfo2/usb_util.c b/hardinfo2/usb_util.c new file mode 100644 index 00000000..744f084f --- /dev/null +++ b/hardinfo2/usb_util.c @@ -0,0 +1,557 @@ +/* + * HardInfo - Displays System Information + * Copyright (C) 2003-2017 L. A. F. Pereira + * This file + * Copyright (C) 2017 Burt P. + * Copyright (C) 2019 Ondrej Čerman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 2 or later. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include "hardinfo.h" +#include "usb_util.h" +#include "util_ids.h" + +#define SYSFS_DIR_USB_DEVICES "/sys/bus/usb/devices" + +gchar *usb_ids_file = NULL; + +usbi *usbi_new() { + return g_new0(usbi, 1); +} + +void usbi_free(usbi *s) { + if (s) { + g_free(s->if_label); + g_free(s->if_class_str); + g_free(s->if_subclass_str); + g_free(s->if_protocol_str); + g_free(s->driver); + g_free(s); + } +} + +void usbi_list_free(usbi *s) { + usbi *n; + while(s != NULL) { + n = s->next; + usbi_free(s); + s = n; + } +} + +usbd *usbd_new() { + return g_new0(usbd, 1); +} + +void usbd_free(usbd *s) { + if (s) { + usbi_list_free(s->if_list); + vendor_list_free(s->vendors); + g_free(s->vendor); + g_free(s->product); + g_free(s->manufacturer); + g_free(s->device); + g_free(s->usb_version); + g_free(s->device_version); + g_free(s->serial); + g_free(s->dev_class_str); + g_free(s->dev_subclass_str); + g_free(s->dev_protocol_str); + g_free(s); + } +} + +void usbd_list_free(usbd *s) { + usbd *n; + while(s != NULL) { + n = s->next; + usbd_free(s); + s = n; + } +} + +/* returns number of items after append */ +static int usbd_list_append(usbd *l, usbd *n) { + int c = 0; + while(l != NULL) { + c++; + if (l->next == NULL) { + if (n != NULL) { + l->next = n; + c++; + } + break; + } + l = l->next; + } + return c; +} + +/* returns new top of the list */ +static usbd *usbd_list_append_sorted(usbd *l, usbd *n) { + usbd *b = NULL; + usbd *t = l; + + if (n == NULL) + return l; + + while(l != NULL) { + if ((n->bus > l->bus) || + ((n->bus == l->bus) && (n->dev >= l->dev))) { + if (l->next == NULL) { + l->next = n; + break; + } + b = l; + l = l->next; + } + else { + if (b == NULL) { + t = n; + n->next = l; + } + else { + b->next = n; + n->next = l; + } + break; + } + } + + return t; +} + +gboolean usbd_append_interface(usbd *dev, usbi *new_if){ + usbi *curr_if; + if (dev->if_list == NULL){ + dev->if_list = new_if; + return TRUE; + } + + if (dev->if_list->if_number == new_if->if_number) + return FALSE; + + curr_if = dev->if_list; + while(curr_if->next != NULL) { + curr_if = curr_if->next; + if (curr_if->if_number == new_if->if_number) + return FALSE; + } + curr_if->next = new_if; + return TRUE; +} + +int usbd_list_count(usbd *s) { + return usbd_list_append(s, NULL); +} + +static char *lsusb_line_value(char *line, const char *prefix) { + if (g_str_has_prefix(line, prefix)) { + line += strlen(prefix) + 1; + return g_strstrip(line); + } else + return NULL; +} + +static gboolean usb_get_device_lsusb(int bus, int dev, usbd *s) { + gboolean spawned; + gchar *out, *err, *p, *l, *t, *next_nl; + gchar *lsusb_cmd = g_strdup_printf("lsusb -s %d:%d -v", bus, dev); + usbi *curr_if = NULL; // do not free + + s->bus = bus; + s->dev = dev; + + spawned = hardinfo_spawn_command_line_sync(lsusb_cmd, + &out, &err, NULL, NULL); + g_free(lsusb_cmd); + if (spawned) { + if (strstr(err, "information will be missing")) { + s->user_scan = TRUE; + } + p = out; + while(next_nl = strchr(p, '\n')) { + strend(p, '\n'); + g_strstrip(p); + + // device info + if (l = lsusb_line_value(p, "idVendor")) { + s->vendor_id = strtol(l, NULL, 0); + if (t = strchr(l, ' ')) + s->vendor = g_strdup(t + 1); + } else if (l = lsusb_line_value(p, "idProduct")) { + s->product_id = strtol(l, NULL, 0); + if (t = strchr(l, ' ')) + s->product = g_strdup(t + 1); + } else if (l = lsusb_line_value(p, "MaxPower")) { + s->max_curr_ma = atoi(l); + } else if (l = lsusb_line_value(p, "bcdUSB")) { + s->usb_version = g_strdup(l); + } else if (l = lsusb_line_value(p, "bcdDevice")) { + s->device_version = g_strdup(l); + } else if (l = lsusb_line_value(p, "bDeviceClass")) { + s->dev_class = atoi(l); + if (t = strchr(l, ' ')) + s->dev_class_str = g_strdup(t + 1); + } else if (l = lsusb_line_value(p, "bDeviceSubClass")) { + s->dev_subclass = atoi(l); + if (t = strchr(l, ' ')) + s->dev_subclass_str = g_strdup(t + 1); + } else if (l = lsusb_line_value(p, "bDeviceProtocol")) { + s->dev_protocol = atoi(l); + if (t = strchr(l, ' ')) + s->dev_protocol_str = g_strdup(t + 1); + } else if (l = lsusb_line_value(p, "iManufacturer")) { + if (t = strchr(l, ' ')) + s->manufacturer = g_strdup(t + 1); + } else if (l = lsusb_line_value(p, "iProduct")) { + if (t = strchr(l, ' ')) + s->device = g_strdup(t + 1); + } else if (l = lsusb_line_value(p, "iSerial")) { + if (t = strchr(l, ' ')) + s->serial = g_strdup(t + 1); + + // interface info + } else if (l = lsusb_line_value(p, "bInterfaceNumber")) { + curr_if = usbi_new(); + curr_if->if_number = atoi(l); + + // This may parse same interface multiple times when there + // are multiple Configuration descriptors per device + // As a workaround usbd_append_interface appends interface + // with same if_number only once + if (!usbd_append_interface(s, curr_if)){ + usbi_free(curr_if); + curr_if = NULL; + } + } else if (l = lsusb_line_value(p, "bInterfaceClass")) { + if (curr_if != NULL){ + curr_if->if_class = atoi(l); + if (t = strchr(l, ' ')) + curr_if->if_class_str = g_strdup(t + 1); + } + } else if (l = lsusb_line_value(p, "bInterfaceSubClass")) { + if (curr_if != NULL){ + curr_if->if_subclass = atoi(l); + if (t = strchr(l, ' ')) + curr_if->if_subclass_str = g_strdup(t + 1); + } + } else if (l = lsusb_line_value(p, "bInterfaceProtocol")) { + if (curr_if != NULL){ + curr_if->if_protocol = atoi(l); + if (t = strchr(l, ' ')) + curr_if->if_protocol_str = g_strdup(t + 1); + } + } else if (l = lsusb_line_value(p, "iInterface")) { + if (curr_if != NULL){ + if (t = strchr(l, ' ')) + curr_if->if_label = g_strdup(t + 1); + } + } + + p = next_nl + 1; + } + g_free(out); + g_free(err); + return TRUE; + } + return FALSE; +} + +static gboolean usb_get_interface_sysfs(int conf, int number, + const char* devpath, usbi *intf){ + gchar *ifpath, *drvpath, *tmp; + ids_query_result result;// = {}; + + memset(&result,0,sizeof(ids_query_result)); + + ifpath = g_strdup_printf("%s:%d.%d", devpath, conf, number); + if (!g_file_test(ifpath, G_FILE_TEST_EXISTS)){ + return FALSE; + } + + tmp = g_strdup_printf("%s/driver", ifpath); + drvpath = g_file_read_link(tmp, NULL); + g_free(tmp); + if (drvpath){ + intf->driver = g_path_get_basename(drvpath); + g_free(drvpath); + } + else{ + intf->driver = g_strdup(_("(None)")); + } + + intf->if_number = number; + intf->if_class = h_sysfs_read_hex(ifpath, "bInterfaceClass"); + intf->if_subclass = h_sysfs_read_hex(ifpath, "bInterfaceSubClass"); + intf->if_protocol = h_sysfs_read_hex(ifpath, "bInterfaceProtocol"); + + if (intf->if_label == NULL) + intf->if_label = h_sysfs_read_string(ifpath, "interface"); + + if (intf->if_class_str == NULL && intf->if_subclass_str == NULL + && intf->if_protocol_str == NULL) { + tmp = g_strdup_printf("C %02x/%02x/%02x", intf->if_class, + intf->if_subclass, intf->if_protocol); + scan_ids_file(usb_ids_file, tmp, &result, -1); + if (result.results[0]) + intf->if_class_str = g_strdup(result.results[0]); + if (result.results[1]) + intf->if_subclass_str = g_strdup(result.results[1]); + if (result.results[2]) + intf->if_protocol_str = g_strdup(result.results[2]); + g_free(tmp); + } + + g_free(ifpath); + return TRUE; +} + +static void find_usb_ids_file() { + if (usb_ids_file) return; + char *file_search_order[] = { + g_build_filename(g_get_user_config_dir(), "hardinfo2", "usb.ids", NULL), + g_build_filename(params.path_data, "usb.ids", NULL), + NULL + }; + int n; + for(n = 0; file_search_order[n]; n++) { + if (!usb_ids_file && !access(file_search_order[n], R_OK)) + usb_ids_file = file_search_order[n]; + else + g_free(file_search_order[n]); + } +} + +void usb_lookup_ids_vendor_product_str(gint vendor_id, gint product_id, + gchar **vendor_str, gchar **product_str) { + ids_query_result result;// = {}; + gchar *qpath; + + memset(&result,0,sizeof(ids_query_result)); + if (!usb_ids_file) + find_usb_ids_file(); + if (!usb_ids_file) + return; + + qpath = g_strdup_printf("%04x/%04x", vendor_id, product_id); + scan_ids_file(usb_ids_file, qpath, &result, -1); + if (result.results[0]) + *vendor_str = g_strdup(result.results[0]); + if (result.results[1]) + *product_str = g_strdup(result.results[1]); + g_free(qpath); +} + +static gboolean usb_get_device_sysfs(int bus, int dev, const char* sysfspath, usbd *s) { + usbi *intf; + gboolean ok; + int i, if_count = 0, conf = 0, ver; + ids_query_result result;// = {}; + gchar *qpath; + + memset(&result,0,sizeof(ids_query_result)); + if (sysfspath == NULL) + return FALSE; + + if (!usb_ids_file) + find_usb_ids_file(); + + s->bus = bus; + s->dev = dev; + s->dev_class = h_sysfs_read_hex(sysfspath, "bDeviceClass"); + s->vendor_id = h_sysfs_read_hex(sysfspath, "idVendor"); + s->product_id = h_sysfs_read_hex(sysfspath, "idProduct"); + s->manufacturer = h_sysfs_read_string(sysfspath, "manufacturer"); + s->device = h_sysfs_read_string(sysfspath, "product"); + s->max_curr_ma = h_sysfs_read_int(sysfspath, "bMaxPower"); + s->dev_class = h_sysfs_read_hex(sysfspath, "bDeviceClass"); + s->dev_subclass = h_sysfs_read_hex(sysfspath, "bDeviceSubClass"); + s->dev_protocol = h_sysfs_read_hex(sysfspath, "bDeviceProtocol"); + s->speed_mbs = h_sysfs_read_int(sysfspath, "speed"); + + if (s->product == NULL && s->vendor == NULL) { + qpath = g_strdup_printf("%04x/%04x", s->vendor_id, s->product_id); + scan_ids_file(usb_ids_file, qpath, &result, -1); + if (result.results[0]) + s->vendor = g_strdup(result.results[0]); + if (result.results[1]) + s->product = g_strdup(result.results[1]); + g_free(qpath); + } + + if (s->dev_class_str == NULL && s->dev_subclass_str == NULL + && s->dev_protocol_str == NULL) { + qpath = g_strdup_printf("C %02x/%02x/%02x", s->dev_class, + s->dev_subclass, s->dev_protocol); + scan_ids_file(usb_ids_file, qpath, &result, -1); + if (result.results[0]) + s->dev_class_str = g_strdup(result.results[0]); + if (result.results[1]) + s->dev_subclass_str = g_strdup(result.results[1]); + if (result.results[2]) + s->dev_protocol_str = g_strdup(result.results[2]); + g_free(qpath); + } + + conf = h_sysfs_read_hex(sysfspath, "bConfigurationValue"); + + if (s->usb_version == NULL) + s->usb_version = h_sysfs_read_string(sysfspath, "version"); + + if (s->serial == NULL) + s->serial = h_sysfs_read_string(sysfspath, "serial"); + + if (s->device_version == NULL) { + ver = h_sysfs_read_int(sysfspath, "bcdDevice"); + if (ver > 0){ + s->device_version = g_strdup_printf("%d.%02d", ver/100, ver%100); + } + } + + if (s->if_list == NULL){ // create interfaces list + if_count = h_sysfs_read_int(sysfspath, "bNumInterfaces"); + for (i = 0; i <= if_count; i++){ + intf = usbi_new(); + ok = usb_get_interface_sysfs(conf, i, sysfspath, intf); + if (ok){ + if (!usbd_append_interface(s, intf)){ + usbi_free(intf); + } + } + else{ + usbi_free(intf); + } + } + } + else{ // improve existing list + intf = s->if_list; + while (intf){ + usb_get_interface_sysfs(conf, intf->if_number, sysfspath, intf); + intf = intf->next; + } + } + + return TRUE; +} + +usbd *usb_get_device(int bus, int dev, const gchar* sysfspath) { + usbd *s = usbd_new(); + int ok = 0; + if (s) { + /* try sysfs */ + ok = usb_get_device_sysfs(bus, dev, sysfspath, s); + if (!ok) { + /* try lsusb */ + ok = usb_get_device_lsusb(bus, dev, s); + } + if (!ok) { + usbd_free(s); + s = NULL; + } + } + return s; +} + +static usbd *usb_get_device_list_lsusb() { + gboolean spawned; + gchar *out, *err, *p, *next_nl; + usbd *head = NULL, *nd; + int bus, dev, vend, prod, ec; + + spawned = hardinfo_spawn_command_line_sync("lsusb", + &out, &err, NULL, NULL); + if (spawned) { + p = out; + while(next_nl = strchr(p, '\n')) { + strend(p, '\n'); + ec = sscanf(p, "Bus %d Device %d: ID %x:%x", &bus, &dev, &vend, &prod); + if (ec == 4) { + nd = usb_get_device(bus, dev, NULL); + if (head == NULL) { + head = nd; + } else { + usbd_list_append(head, nd); + } + } + p = next_nl + 1; + } + g_free(out); + g_free(err); + } + return head; +} + +static usbd *usb_get_device_list_sysfs() { + GDir *dir; + GRegex *regex; + GMatchInfo *match_info; + usbd *head = NULL, *nd; + gchar *devpath; + const char *entry; + int bus, dev; + + regex = g_regex_new("^([0-9]+-[0-9]+([.][0-9]+)*)|(usb[0-9]+)$", 0, 0, NULL); + if (!regex){ + return NULL; + } + + dir = g_dir_open(SYSFS_DIR_USB_DEVICES, 0, NULL); + if (!dir){ + return NULL; + } + + while ((entry = g_dir_read_name(dir))) { + g_regex_match(regex, entry, 0, &match_info); + + if (g_match_info_matches(match_info)) { + devpath = g_build_filename(SYSFS_DIR_USB_DEVICES, entry, NULL); + bus = h_sysfs_read_int(devpath, "busnum"); + dev = h_sysfs_read_int(devpath, "devnum"); + + if (bus > 0 && dev > 0){ + nd = usb_get_device(bus, dev, devpath); + if (head == NULL) { + head = nd; + } else { + head = usbd_list_append_sorted(head, nd); + } + } + g_free(devpath); + } + g_match_info_free(match_info); + } + + g_dir_close(dir); + g_regex_unref(regex); + + return head; +} + +usbd *usb_get_device_list() { + usbd *lst, *l; + + lst = usb_get_device_list_sysfs(); + if (lst == NULL) + lst = usb_get_device_list_lsusb(); + + l = lst; + while(l) { + l->vendors = vendor_list_remove_duplicates_deep(vendors_match(l->vendor, l->manufacturer, NULL)); + l = l->next; + } + + return lst; +} diff --git a/hardinfo2/util.c b/hardinfo2/util.c new file mode 100644 index 00000000..e12963c0 --- /dev/null +++ b/hardinfo2/util.c @@ -0,0 +1,1452 @@ +/* + * HardInfo - Displays System Information + * Copyright (C) 2003-2007 L. A. F. Pereira + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 2. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * Functions h_strdup_cprintf and h_strconcat are based on GLib version 2.4.6 + * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + */ + +#include + +#include +#include +#include +#include +#include +#include + +#include + +#include +#include + +#define KiB 1024 +#define MiB 1048576 +#define GiB 1073741824 +#define TiB 1099511627776 +#define PiB 1125899906842624 + +static GSList *modules_list = NULL; + +void sync_manager_clear_entries(void); + +gchar *find_program(gchar *program_name) +{ + int i; + char *temp; + static GHashTable *cache = NULL; + const char *path[] = { "/usr/local/bin", "/usr/local/sbin", + "/usr/bin", "/usr/sbin", + "/bin", "/sbin", + NULL }; + + /* we don't need to call stat() every time: cache the results */ + if (!cache) { + cache = g_hash_table_new(g_str_hash, g_str_equal); + } else if ((temp = g_hash_table_lookup(cache, program_name))) { + return g_strdup(temp); + } + + for (i = 0; path[i]; i++) { + temp = g_build_filename(path[i], program_name, NULL); + + if (g_file_test(temp, G_FILE_TEST_IS_EXECUTABLE)) { + g_hash_table_insert(cache, program_name, g_strdup(temp)); + return temp; + } + + g_free(temp); + } + + /* our search has failed; use GLib's search (which uses $PATH env var) */ + if ((temp = g_find_program_in_path(program_name))) { + g_hash_table_insert(cache, program_name, g_strdup(temp)); + return temp; + } + + return NULL; +} + +gchar *seconds_to_string(unsigned int seconds) +{ + unsigned int hours, minutes, days; + const gchar *days_fmt, *hours_fmt, *minutes_fmt, *seconds_fmt; + gchar *full_fmt, *ret = g_strdup(""); + + minutes = seconds / 60; + seconds %= 60; + hours = minutes / 60; + minutes %= 60; + days = hours / 24; + hours %= 24; + + days_fmt = ngettext("%d day", "%d days", days); + hours_fmt = ngettext("%d hour", "%d hours", hours); + minutes_fmt = ngettext("%d minute", "%d minutes", minutes); + seconds_fmt = ngettext("%d second", "%d seconds", seconds); + + if (days) { + full_fmt = g_strdup_printf("%s %s %s %s", days_fmt, hours_fmt, minutes_fmt, seconds_fmt); + ret = g_strdup_printf(full_fmt, days, hours, minutes, seconds); + } else if (hours) { + full_fmt = g_strdup_printf("%s %s %s", hours_fmt, minutes_fmt, seconds_fmt); + ret = g_strdup_printf(full_fmt, hours, minutes, seconds); + } else if (minutes) { + full_fmt = g_strdup_printf("%s %s", minutes_fmt, seconds_fmt); + ret = g_strdup_printf(full_fmt, minutes, seconds); + } else { + ret = g_strdup_printf(seconds_fmt, seconds); + } + g_free(full_fmt); + return ret; +} + +gchar *size_human_readable(gfloat size) +{ + if (size < KiB) + return g_strdup_printf(_("%.1f B"), size); + if (size < MiB) + return g_strdup_printf(_("%.1f KiB"), size / KiB); + if (size < GiB) + return g_strdup_printf(_("%.1f MiB"), size / MiB); + if (size < TiB) + return g_strdup_printf(_("%.1f GiB"), size / GiB); + if (size < PiB) + return g_strdup_printf(_("%.1f TiB"), size / TiB); + + return g_strdup_printf(_("%.1f PiB"), size / PiB); +} + +char *strend(gchar * str, gchar chr) +{ + if (!str) + return NULL; + + char *p; + if ((p = g_utf8_strchr(str, -1, chr))) + *p = 0; + + return str; +} + +void remove_quotes(gchar * str) +{ + if (!str) + return; + + while (*str == '"') + *(str++) = ' '; + + strend(str, '"'); +} + +void remove_linefeed(gchar * str) +{ + strend(str, '\n'); +} + +void widget_set_cursor(GtkWidget * widget, GdkCursorType cursor_type) +{ + GdkCursor *cursor; + GdkDisplay *display; + GdkWindow *gdk_window; + + display = gtk_widget_get_display(widget); + cursor = gdk_cursor_new_for_display(display, cursor_type); + gdk_window = gtk_widget_get_window(widget); + if (cursor) { + gdk_window_set_cursor(gdk_window, cursor); + gdk_display_flush(display); +#if GTK_CHECK_VERSION(3, 0, 0) + g_object_unref(cursor); +#else + gdk_cursor_unref(cursor); +#endif + } + + while (gtk_events_pending()) + gtk_main_iteration(); +} + +static gboolean __nonblock_cb(gpointer data) +{ + gtk_main_quit(); + return FALSE; +} + +void nonblock_sleep(guint msec) +{ + g_timeout_add(msec, (GSourceFunc) __nonblock_cb, NULL); + gtk_main(); +} + +static void __expand_cb(GtkWidget * widget, gpointer data) +{ + if (GTK_IS_EXPANDER(widget)) { + gtk_expander_set_expanded(GTK_EXPANDER(widget), TRUE); + } else if (GTK_IS_CONTAINER(widget)) { + gtk_container_foreach(GTK_CONTAINER(widget), + (GtkCallback) __expand_cb, NULL); + } +} + +void file_chooser_open_expander(GtkWidget * chooser) +{ + gtk_container_foreach(GTK_CONTAINER(chooser), + (GtkCallback) __expand_cb, NULL); +} + +void file_chooser_add_filters(GtkWidget * chooser, FileTypes * filters) +{ + GtkFileFilter *filter; + gint i; + + for (i = 0; filters[i].name; i++) { + filter = gtk_file_filter_new(); + gtk_file_filter_add_mime_type(filter, filters[i].mime_type); + gtk_file_filter_set_name(filter, filters[i].name); + gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(chooser), filter); + } +} + +gchar *file_chooser_get_extension(GtkWidget * chooser, FileTypes * filters) +{ + GtkFileFilter *filter; + const gchar *filter_name; + gint i; + + filter = gtk_file_chooser_get_filter(GTK_FILE_CHOOSER(chooser)); + filter_name = gtk_file_filter_get_name(filter); + for (i = 0; filters[i].name; i++) { + if (g_str_equal(filter_name, filters[i].name)) { + return filters[i].extension; + } + } + + return NULL; +} + +gpointer file_types_get_data_by_name(FileTypes * filters, gchar * filename) +{ + gint i; + + for (i = 0; filters[i].name; i++) { + if (g_str_has_suffix(filename, filters[i].extension)) { + return filters[i].data; + } + } + + return NULL; +} + +gchar *file_chooser_build_filename(GtkWidget * chooser, gchar * extension) +{ + gchar *filename = + gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(chooser)); + gchar *retval; + + if (g_str_has_suffix(filename, extension)) { + return filename; + } + + retval = g_strconcat(filename, extension, NULL); + g_free(filename); + + return retval; +} + +gboolean binreloc_init(gboolean try_hardcoded) +{ + GError *error = NULL; + gchar *tmp; + + DEBUG("initializing binreloc (hardcoded = %d)", try_hardcoded); + + /* If the runtime data directories we previously found, don't even try + to find them again. */ + if (params.path_data && params.path_lib) { + DEBUG("data and lib path already found."); + return TRUE; + } + + if (try_hardcoded || !gbr_init(&error)) { + /* We were asked to try hardcoded paths or BinReloc failed to initialize. */ + params.path_data = g_strdup(PREFIX); + params.path_lib = g_strdup(LIBPREFIX); + + if (error) { + g_error_free(error); + } + + DEBUG("%strying hardcoded paths.", + try_hardcoded ? "" : "binreloc init failed. "); + } else { + /* If we were able to initialize BinReloc, build the default data + and library paths. */ + DEBUG("done, trying to use binreloc paths."); + + tmp = gbr_find_data_dir(PREFIX); + params.path_data = g_build_filename(tmp, "hardinfo2", NULL); + g_free(tmp); + + tmp = gbr_find_lib_dir(PREFIX); + params.path_lib = g_build_filename(tmp, "hardinfo2", NULL); + g_free(tmp); + } + + DEBUG("searching for runtime data on these locations:"); + DEBUG(" lib: %s", params.path_lib); + DEBUG(" data: %s", params.path_data); + + /* Try to see if the benchmark test data file isn't missing. This isn't the + definitive test, but it should do okay for most situations. */ + tmp = g_build_filename(params.path_data, "benchmark.data", NULL); + if (!g_file_test(tmp, G_FILE_TEST_EXISTS)) { + DEBUG("runtime data not found"); + + g_free(params.path_data); + g_free(params.path_lib); + g_free(tmp); + + params.path_data = params.path_lib = NULL; + + if (try_hardcoded) { + /* We tried the hardcoded paths, but still was unable to find the + runtime data. Give up. */ + DEBUG("giving up"); + return FALSE; + } else { + /* Even though BinReloc worked OK, the runtime data was not found. + Try the hardcoded paths. */ + DEBUG("trying to find elsewhere"); + return binreloc_init(TRUE); + } + } + g_free(tmp); + + DEBUG("runtime data found!"); + /* We found the runtime data; hope everything is fine */ + return TRUE; +} + +static void +log_handler(const gchar * log_domain, + GLogLevelFlags log_level, + const gchar * message, gpointer user_data) +{ + if (!params.gui_running) { + /* No GUI running: spit the message to the terminal */ + g_print("\n\n*** %s: %s\n\n", + (log_level & G_LOG_FLAG_FATAL) ? _("Error") : _("Warning"), + message); + } else { + /* Hooray! We have a GUI running! */ + GtkWidget *dialog; + + dialog = gtk_message_dialog_new_with_markup(NULL, GTK_DIALOG_MODAL, + (log_level & + G_LOG_FLAG_FATAL) ? + GTK_MESSAGE_ERROR : + GTK_MESSAGE_WARNING, + GTK_BUTTONS_CLOSE, + "%s\n\n%s", + (log_level & + G_LOG_FLAG_FATAL) ? + _("Fatal Error") : + _("Warning"), message); + + gtk_dialog_run(GTK_DIALOG(dialog)); + gtk_widget_destroy(dialog); + } +} + +void parameters_init(int *argc, char ***argv, ProgramParameters * param) +{ + static gboolean create_report = FALSE; + static gboolean force_all_details = FALSE; + static gboolean show_version = FALSE; + static gboolean list_modules = FALSE; + static gboolean autoload_deps = FALSE; + static gboolean skip_benchmarks = FALSE; + static gboolean quiet = FALSE; + static gchar *report_format = NULL; + static gchar *run_benchmark = NULL; + static gchar *result_format = NULL; + static gchar *bench_user_note = NULL; + static gchar **use_modules = NULL; + static gint max_bench_results = 50; + + static GOptionEntry options[] = { + { + .long_name = "quiet", + .short_name = 'q', + .arg = G_OPTION_ARG_NONE, + .arg_data = &quiet, + .description = N_("do not print status messages to standard output")}, + { + .long_name = "generate-report", + .short_name = 'r', + .arg = G_OPTION_ARG_NONE, + .arg_data = &create_report, + .description = N_("creates a report and prints to standard output")}, + { + .long_name = "report-format", + .short_name = 'f', + .arg = G_OPTION_ARG_STRING, + .arg_data = &report_format, + .description = N_("chooses a report format ([text], html)")}, + { + .long_name = "run-benchmark", + .short_name = 'b', + .arg = G_OPTION_ARG_STRING, + .arg_data = &run_benchmark, + .description = N_("run benchmark; requires benchmark.so to be loaded")}, + { + .long_name = "user-note", + .short_name = 'u', + .arg = G_OPTION_ARG_STRING, + .arg_data = &bench_user_note, + .description = N_("note attached to benchmark results")}, + { + .long_name = "result-format", + .short_name = 'g', + .arg = G_OPTION_ARG_STRING, + .arg_data = &result_format, + .description = N_("benchmark result format ([short], conf, shell)")}, + { + .long_name = "max-results", + .short_name = 'n', + .arg = G_OPTION_ARG_INT, + .arg_data = &max_bench_results, + .description = N_("maximum number of benchmark results to include (-1 for no limit, default is 50)")}, +//#if NOT_DEFINED + { + .long_name = "list-modules", + .short_name = 'l', + .arg = G_OPTION_ARG_NONE, + .arg_data = &list_modules, + .description = N_("lists modules")}, + { + .long_name = "load-module", + .short_name = 'm', + .arg = G_OPTION_ARG_STRING_ARRAY, + .arg_data = &use_modules, + .description = N_("specify module to load")}, + { + .long_name = "autoload-deps", + .short_name = 'a', + .arg = G_OPTION_ARG_NONE, + .arg_data = &autoload_deps, + .description = N_("automatically load module dependencies")}, +//#endif + { + .long_name = "version", + .short_name = 'v', + .arg = G_OPTION_ARG_NONE, + .arg_data = &show_version, + .description = N_("shows program version and quit")}, + { + .long_name = "skip-benchmarks", + .short_name = 's', + .arg = G_OPTION_ARG_NONE, + .arg_data = &skip_benchmarks, + .description = N_("do not run benchmarks")}, + { + .long_name = "very-verbose", + .short_name = 'w', /* like -vv */ + .arg = G_OPTION_ARG_NONE, + .arg_data = &force_all_details, + .description = N_("show all details")}, + {NULL} + }; + GOptionContext *ctx; + + ctx = g_option_context_new(_("- System Profiler and Benchmark tool")); + g_option_context_set_ignore_unknown_options(ctx, FALSE); + g_option_context_set_help_enabled(ctx, TRUE); + + g_option_context_add_main_entries(ctx, options, *(argv)[0]); + g_option_context_parse(ctx, argc, argv, NULL); + + g_option_context_free(ctx); + + if (*argc >= 2) { + g_print(_("Unrecognized arguments.\n" + "Try ``%s --help'' for more information.\n"), *(argv)[0]); + exit(1); + } + + param->create_report = create_report; + param->report_format = REPORT_FORMAT_TEXT; + param->show_version = show_version; + param->list_modules = list_modules; + param->use_modules = use_modules; + param->run_benchmark = run_benchmark; + param->result_format = result_format; + param->max_bench_results = max_bench_results; + param->autoload_deps = autoload_deps; + param->skip_benchmarks = skip_benchmarks; + param->force_all_details = force_all_details; + param->quiet = quiet; + param->argv0 = *(argv)[0]; + + if (report_format) { + if (g_str_equal(report_format, "html")) + param->report_format = REPORT_FORMAT_HTML; + if (g_str_equal(report_format, "shell")) + param->report_format = REPORT_FORMAT_SHELL; + } + + /* clean user note */ + if (bench_user_note) { + char *p = NULL; + while(p = strchr(bench_user_note, ';')) { *p = ','; } + param->bench_user_note = + gg_key_file_parse_string_as_value(bench_user_note, '|'); + } + + /* html ok? + * gui: yes + * report html: yes + * report text: no + * anything else? */ + param->markup_ok = TRUE; + if (param->create_report && param->report_format != REPORT_FORMAT_HTML) + param->markup_ok = FALSE; + + // TODO: fmt_opts: FMT_OPT_ATERM, FMT_OPT_HTML, FMT_OPT_PANGO... + param->fmt_opts = FMT_OPT_NONE; + + gchar *confdir = g_build_filename(g_get_user_config_dir(), "hardinfo2", NULL); + if (!g_file_test(confdir, G_FILE_TEST_EXISTS)) { + mkdir(confdir, 0744); + } + g_free(confdir); +} + +gboolean ui_init(int *argc, char ***argv) +{ + DEBUG("initializing gtk+ UI"); + + g_set_application_name("HardInfo2"); + g_log_set_handler(NULL, + G_LOG_LEVEL_WARNING | G_LOG_FLAG_FATAL | + G_LOG_LEVEL_ERROR, log_handler, NULL); + + return gtk_init_check(argc, argv); +} + +/* Copyright: Jens Låås, SLU 2002 */ +gchar *strreplacechr(gchar * string, gchar * replace, gchar new_char) +{ + gchar *s; + for (s = string; *s; s++) + if (strchr(replace, *s)) + *s = new_char; + + return string; +} + +gchar *strreplace(gchar *string, gchar *replace, gchar *replacement) +{ + gchar **tmp, *ret; + + tmp = g_strsplit(string, replace, 0); + ret = g_strjoinv(replacement, tmp); + g_strfreev(tmp); + + return ret; +} + +static GHashTable *__module_methods = NULL; + +static void module_register_methods(ShellModule * module) +{ + const ShellModuleMethod *(*get_methods)(void); + gchar *method_name; + + if (__module_methods == NULL) { + __module_methods = g_hash_table_new(g_str_hash, g_str_equal); + } + + if (g_module_symbol + (module->dll, "hi_exported_methods", (gpointer)&get_methods)) { + const ShellModuleMethod *methods; + + for (methods = get_methods(); methods->name; methods++) { + ShellModuleMethod method = *methods; + gchar *name = g_path_get_basename(g_module_name(module->dll)); + gchar *simple_name = strreplace(name, "lib", ""); + + strend(simple_name, '.'); + + method_name = g_strdup_printf("%s::%s", simple_name, method.name); + g_hash_table_insert(__module_methods, method_name, + method.function); + g_free(name); + g_free(simple_name); + } + } + +} + +gchar *module_call_method(gchar * method) +{ + gchar *(*function) (void); + + if (__module_methods == NULL) { + return NULL; + } + + function = g_hash_table_lookup(__module_methods, method); + return function ? g_strdup(function()) : NULL; +} + +/* FIXME: varargs? */ +gchar *module_call_method_param(gchar * method, gchar * parameter) +{ + gchar *(*function) (gchar *param); + + if (__module_methods == NULL) { + return NULL; + } + + function = g_hash_table_lookup(__module_methods, method); + return function ? g_strdup(function(parameter)) : NULL; +} + +static gboolean remove_module_methods(gpointer key, gpointer value, gpointer data) +{ + return g_str_has_prefix(key, data); +} + +static void module_unload(ShellModule * module) +{ + GSList *entry; + + if (module->dll) { + gchar *name; + + if (module->deinit) { + DEBUG("cleaning up module \"%s\"", module->name); + module->deinit(); + } else { + DEBUG("module \"%s\" does not need cleanup", module->name); + } + + name = g_path_get_basename(g_module_name(module->dll)); + g_hash_table_foreach_remove(__module_methods, remove_module_methods, name); + + g_module_close(module->dll); + g_free(name); + } + + g_free(module->name); + g_object_unref(module->icon); + + for (entry = module->entries; entry; entry = entry->next) { + ShellModuleEntry *e = (ShellModuleEntry *)entry->data; + + g_source_remove_by_user_data(e); + g_free(e); + } + + g_slist_free(module->entries); + g_free(module); +} + + +void module_unload_all(void) +{ + Shell *shell; + GSList *module, *merge_id; + + shell = shell_get_main_shell(); + + sync_manager_clear_entries(); + shell_clear_timeouts(shell); + shell_clear_tree_models(shell); + shell_clear_field_updates(); + shell_set_title(shell, NULL); + + for (module = shell->tree->modules; module; module = module->next) { + module_unload((ShellModule *)module->data); + } + + for (merge_id = shell->merge_ids; merge_id; merge_id = merge_id->next) { + gtk_ui_manager_remove_ui(shell->ui_manager, + GPOINTER_TO_INT(merge_id->data)); + } + g_slist_free(shell->tree->modules); + g_slist_free(shell->merge_ids); + + shell->merge_ids = NULL; + shell->tree->modules = NULL; + shell->selected = NULL; +} + +static ShellModule *module_load(gchar * filename) +{ + ShellModule *module; + gchar *tmp; + + module = g_new0(ShellModule, 1); + + if (params.gui_running) { + gchar *tmpicon, *dot, *simple_name; + + tmpicon = g_strdup(filename); + dot = g_strrstr(tmpicon, "." G_MODULE_SUFFIX); + + *dot = '\0'; + + simple_name = strreplace(tmpicon, "lib", ""); + + tmp = g_strdup_printf("%s.png", simple_name); + module->icon = icon_cache_get_pixbuf(tmp); + + g_free(tmp); + g_free(tmpicon); + g_free(simple_name); + } + + tmp = g_build_filename(params.path_lib, "modules", filename, NULL); + module->dll = g_module_open(tmp, G_MODULE_BIND_LAZY); + DEBUG("gmodule resource for ``%s'' is %p (%s)", tmp, module->dll, g_module_error()); + g_free(tmp); + + if (module->dll) { + void (*init) (void); + ModuleEntry *(*get_module_entries) (void); + gint(*weight_func) (void); + gchar *(*name_func) (void); + ModuleEntry *entries; + gint i = 0; + + if (!g_module_symbol(module->dll, "hi_module_get_entries", (gpointer) & get_module_entries) || + !g_module_symbol(module->dll, "hi_module_get_name", (gpointer) & name_func)) { + DEBUG("cannot find needed symbols; is ``%s'' a real module?", filename); + goto failed; + } + + if (g_module_symbol(module->dll, "hi_module_init", (gpointer) & init)) { + DEBUG("initializing module ``%s''", filename); + init(); + } + + g_module_symbol(module->dll, "hi_module_get_weight", + (gpointer) & weight_func); + + module->weight = weight_func ? weight_func() : 0; + module->name = name_func(); + + g_module_symbol(module->dll, "hi_module_get_about", + (gpointer) & (module->aboutfunc)); + g_module_symbol(module->dll, "hi_module_deinit", + (gpointer) & (module->deinit)); + g_module_symbol(module->dll, "hi_module_get_summary", + (gpointer) & (module->summaryfunc)); + + entries = get_module_entries(); + while (entries[i].name) { + if (*entries[i].name == '#') { i++; continue; } /* skip */ + + ShellModuleEntry *entry = g_new0(ShellModuleEntry, 1); + + if (params.gui_running) { + entry->icon = icon_cache_get_pixbuf(entries[i].icon); + } + entry->icon_file = entries[i].icon; + + g_module_symbol(module->dll, "hi_more_info", + (gpointer) & (entry->morefunc)); + g_module_symbol(module->dll, "hi_get_field", + (gpointer) & (entry->fieldfunc)); + g_module_symbol(module->dll, "hi_note_func", + (gpointer) & (entry->notefunc)); + + entry->name = _(entries[i].name); //gettext unname N_() in computer.c line 67 etc... + entry->scan_func = entries[i].scan_callback; + entry->func = entries[i].callback; + entry->number = i; + entry->flags = entries[i].flags; + + module->entries = g_slist_append(module->entries, entry); + + i++; + } + + DEBUG("registering methods for module ``%s''", filename); + module_register_methods(module); + } else { + DEBUG("cannot g_module_open(``%s''). permission problem?", filename); + failed: + DEBUG("loading module %s failed: %s", filename, g_module_error()); + + g_free(module->name); + g_free(module); + module = NULL; + } + + return module; +} + +static gboolean module_in_module_list(gchar * module, gchar ** module_list) +{ + int i = 0; + + if (!module_list) + return TRUE; + + for (; module_list[i]; i++) { + if (g_str_equal(module_list[i], module)) + return TRUE; + } + + return FALSE; +} + +static gint module_cmp(gconstpointer m1, gconstpointer m2) +{ + ShellModule *a = (ShellModule *) m1; + ShellModule *b = (ShellModule *) m2; + + return a->weight - b->weight; +} + +#if 0 +static void module_entry_free(gpointer data, gpointer user_data) +{ + ShellModuleEntry *entry = (ShellModuleEntry *) data; + + if (entry) { + g_free(entry->name); + g_object_unref(entry->icon); + + g_free(entry); + } +} +#endif + +const ModuleAbout *module_get_about(ShellModule * module) +{ + if (module->aboutfunc) { + return module->aboutfunc(); + } + + return NULL; +} + +static GSList *modules_check_deps(GSList * modules) +{ + GSList *mm; + ShellModule *module; + + for (mm = modules; mm; mm = mm->next) { + gchar **(*get_deps) (void); + gchar **deps; + gint i; + + module = (ShellModule *) mm->data; + + if (g_module_symbol(module->dll, "hi_module_get_dependencies", + (gpointer) & get_deps)) { + for (i = 0, deps = get_deps(); deps[i]; i++) { + GSList *l; + ShellModule *m; + gboolean found = FALSE; + + for (l = modules; l && !found; l = l->next) { + m = (ShellModule *) l->data; + gchar *name = g_path_get_basename(g_module_name(m->dll)); + + found = g_str_equal(name, deps[i]); + g_free(name); + } + + if (!found) { + if (params.autoload_deps) { + ShellModule *mod = module_load(deps[i]); + + if (mod) + modules = g_slist_append(modules, mod); + modules = modules_check_deps(modules); /* re-check dependencies */ + + break; + } + + if (params.gui_running) { + GtkWidget *dialog; + + dialog = gtk_message_dialog_new(NULL, + GTK_DIALOG_DESTROY_WITH_PARENT, + GTK_MESSAGE_QUESTION, + GTK_BUTTONS_NONE, + _("Module \"%s\" depends on module \"%s\", load it?"), + module->name, + deps[i]); + gtk_dialog_add_buttons(GTK_DIALOG(dialog), + "_No", + GTK_RESPONSE_REJECT, + "_Open", + GTK_RESPONSE_ACCEPT, NULL); + + if (gtk_dialog_run(GTK_DIALOG(dialog)) == + GTK_RESPONSE_ACCEPT) { + ShellModule *mod = module_load(deps[i]); + + if (mod) + modules = g_slist_prepend(modules, mod); + modules = modules_check_deps(modules); /* re-check dependencies */ + } else { + g_error("HardInfo2 cannot run without loading the additional module."); + exit(1); + } + + gtk_widget_destroy(dialog); + } else { + g_error(_("Module \"%s\" depends on module \"%s\"."), + module->name, deps[i]); + } + } + } + } + } + + return modules; +} + + +GSList *modules_get_list() +{ + return modules_list; +} + +static GSList *modules_load(gchar ** module_list) +{ + GDir *dir; + GSList *modules = NULL; + ShellModule *module; + gchar *filename; + + filename = g_build_filename(params.path_lib, "modules", NULL); + dir = g_dir_open(filename, 0, NULL); + g_free(filename); + + if (dir) { + GList *filenames = NULL; + while ((filename = (gchar *)g_dir_read_name(dir))) { + if (g_strrstr(filename, "." G_MODULE_SUFFIX) && + module_in_module_list(filename, module_list)) { + if (g_strrstr(filename, "devices." G_MODULE_SUFFIX)) { + filenames = g_list_prepend(filenames, filename); + } + else { + filenames = g_list_append(filenames, filename); + } + } + } + GList* item = NULL; + while (item = g_list_first(filenames)) { + if (module = module_load((gchar *)item->data)) { + modules = g_slist_prepend(modules, module); + } + filenames = g_list_delete_link(filenames, item); + } +#if GLIB_CHECK_VERSION(2,44,0) + //FIXME change this to not use g_steal_pointer + g_list_free_full (g_steal_pointer (&filenames), g_object_unref); +#endif + g_dir_close(dir); + } + + modules = modules_check_deps(modules); + + if (g_slist_length(modules) == 0) { + if (params.use_modules == NULL) { + g_error + (_("No module could be loaded. Check permissions on \"%s\" and try again."), + params.path_lib); + } else { + g_error + (_("No module could be loaded. Please use hardinfo2 -l to list all avai" + "lable modules and try again with a valid module list.")); + + } + } + + modules_list = g_slist_sort(modules, module_cmp); + return modules_list; +} + +GSList *modules_load_selected(void) +{ + return modules_load(params.use_modules); +} + +GSList *modules_load_all(void) +{ + return modules_load(NULL); +} + +gint tree_view_get_visible_height(GtkTreeView * tv) +{ + GtkTreePath *path; + GdkRectangle rect; + GtkTreeIter iter; + GtkTreeModel *model = gtk_tree_view_get_model(tv); + gint nrows = 1; + + path = gtk_tree_path_new_first(); + gtk_tree_view_get_cell_area(GTK_TREE_VIEW(tv), path, NULL, &rect); + + /* FIXME: isn't there any easier way to tell the number of rows? */ + gtk_tree_model_get_iter_first(model, &iter); + do { + nrows++; + } while (gtk_tree_model_iter_next(model, &iter)); + + gtk_tree_path_free(path); + + return nrows * rect.height; +} + +void module_entry_scan_all_except(ModuleEntry * entries, gint except_entry) +{ + ModuleEntry entry; + gint i = 0; + void (*scan_callback) (gboolean reload); + gchar *text; + + shell_view_set_enabled(FALSE); + + for (entry = entries[0]; entry.name; entry = entries[++i]) { + if (i == except_entry) + continue; + + text = g_strdup_printf(_("Scanning: %s..."), _(entry.name)); + shell_status_update(text); + g_free(text); + + if ((scan_callback = entry.scan_callback)) { + scan_callback(FALSE); + } + } + + shell_view_set_enabled(TRUE); + shell_status_update(_("Done.")); +} + +void module_entry_scan_all(ModuleEntry * entries) +{ + module_entry_scan_all_except(entries, -1); +} + +void module_entry_reload(ShellModuleEntry * module_entry) +{ + + if (module_entry->scan_func) { + module_entry->scan_func(TRUE); + } +} + +void module_entry_scan(ShellModuleEntry * module_entry) +{ + if (module_entry->scan_func) { + module_entry->scan_func(FALSE); + } +} + +gchar *module_entry_get_field(ShellModuleEntry * module_entry, gchar * field) +{ + if (module_entry->fieldfunc) { + return module_entry->fieldfunc(field); + } + + return NULL; +} + +gchar *module_entry_function(ShellModuleEntry * module_entry) +{ + if (module_entry->func) { + return module_entry->func(); + } + + return NULL; +} + +gchar *module_entry_get_moreinfo(ShellModuleEntry * module_entry, gchar * field) +{ + if (module_entry->morefunc) { + return module_entry->morefunc(field); + } + + return NULL; +} + +const gchar *module_entry_get_note(ShellModuleEntry * module_entry) +{ + if (module_entry->notefunc) { + return module_entry->notefunc(module_entry->number); + } + + return NULL; +} + +gchar *h_strdup_cprintf(const gchar * format, gchar * source, ...) +{ + gchar *buffer, *retn; + va_list args; + + va_start(args, source); + buffer = g_strdup_vprintf(format, args); + va_end(args); + + if (source) { + retn = g_strconcat(source, buffer, NULL); + g_free(buffer); + g_free(source); + } else { + retn = buffer; + } + + return retn; +} + +gchar *h_strconcat(gchar * string1, ...) +{ + gsize l; + va_list args; + gchar *s; + gchar *concat; + gchar *ptr; + + if (!string1) + return NULL; + + l = 1 + strlen(string1); + va_start(args, string1); + s = va_arg(args, gchar *); + while (s) { + l += strlen(s); + s = va_arg(args, gchar *); + } + va_end(args); + + concat = g_new(gchar, l); + ptr = concat; + + ptr = g_stpcpy(ptr, string1); + va_start(args, string1); + s = va_arg(args, gchar *); + while (s) { + ptr = g_stpcpy(ptr, s); + s = va_arg(args, gchar *); + } + va_end(args); + + g_free(string1); + + return concat; +} + +static gboolean h_hash_table_remove_all_true(gpointer key, gpointer data, gpointer user_data) +{ + return TRUE; +} + +void +h_hash_table_remove_all(GHashTable *hash_table) +{ + g_hash_table_foreach_remove(hash_table, + h_hash_table_remove_all_true, + NULL); +} + +gfloat +h_sysfs_read_float(const gchar *endpoint, const gchar *entry) +{ + gchar *tmp, *buffer; + gfloat return_value = 0.0f; + + tmp = g_build_filename(endpoint, entry, NULL); + if (g_file_get_contents(tmp, &buffer, NULL, NULL)) + return_value = atof(buffer); + + g_free(tmp); + g_free(buffer); + + return return_value; +} + +gint +h_sysfs_read_int(const gchar *endpoint, const gchar *entry) +{ + gchar *tmp, *buffer; + gint return_value = 0; + + tmp = g_build_filename(endpoint, entry, NULL); + if (g_file_get_contents(tmp, &buffer, NULL, NULL)) + return_value = atoi(buffer); + + g_free(tmp); + g_free(buffer); + + return return_value; +} + +gint +h_sysfs_read_hex(const gchar *endpoint, const gchar *entry) +{ + gchar *tmp, *buffer; + gint return_value = 0; + + tmp = g_build_filename(endpoint, entry, NULL); + if (g_file_get_contents(tmp, &buffer, NULL, NULL)) + return_value = (gint) strtoll(buffer, NULL, 16); + + g_free(tmp); + g_free(buffer); + + return return_value; +} + +gchar * +h_sysfs_read_string(const gchar *endpoint, const gchar *entry) +{ + gchar *tmp, *return_value; + + tmp = g_build_filename(endpoint, entry, NULL); + if (!g_file_get_contents(tmp, &return_value, NULL, NULL)) { + g_free(return_value); + + return_value = NULL; + } else { + return_value = g_strstrip(return_value); + } + + g_free(tmp); + + return return_value; +} + +static GHashTable *_moreinfo = NULL; + +void +moreinfo_init(void) +{ + if (G_UNLIKELY(_moreinfo)) { + DEBUG("moreinfo already initialized"); + return; + } + DEBUG("initializing moreinfo"); + _moreinfo = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free); +} + +void +moreinfo_shutdown(void) +{ + if (G_UNLIKELY(!_moreinfo)) { + DEBUG("moreinfo not initialized"); + return; + } + DEBUG("shutting down moreinfo"); + g_hash_table_destroy(_moreinfo); + _moreinfo = NULL; +} + +void +moreinfo_add_with_prefix(gchar *prefix, gchar *key, gchar *value) +{ + if (G_UNLIKELY(!_moreinfo)) { + DEBUG("moreinfo not initialized"); + return; + } + + if (prefix) { + gchar *hashkey = g_strconcat(prefix, ":", key, NULL); + g_hash_table_insert(_moreinfo, hashkey, value); + return; + } + + g_hash_table_insert(_moreinfo, g_strdup(key), value); +} + +void +moreinfo_add(gchar *key, gchar *value) +{ + moreinfo_add_with_prefix(NULL, key, value); +} + +static gboolean +_moreinfo_del_cb(gpointer key, gpointer value, gpointer data) +{ + return g_str_has_prefix(key, data); +} + +void +moreinfo_del_with_prefix(gchar *prefix) +{ + if (G_UNLIKELY(!_moreinfo)) { + DEBUG("moreinfo not initialized"); + return; + } + + g_hash_table_foreach_remove(_moreinfo, _moreinfo_del_cb, prefix); +} + +void +moreinfo_clear(void) +{ + if (G_UNLIKELY(!_moreinfo)) { + DEBUG("moreinfo not initialized"); + return; + } + h_hash_table_remove_all(_moreinfo); +} + +gchar * +moreinfo_lookup_with_prefix(gchar *prefix, gchar *key) +{ + if (G_UNLIKELY(!_moreinfo)) { + DEBUG("moreinfo not initialized"); + return 0; + } + + if (prefix) { + gchar *lookup_key = g_strconcat(prefix, ":", key, NULL); + gchar *result = g_hash_table_lookup(_moreinfo, lookup_key); + g_free(lookup_key); + return result; + } + + return g_hash_table_lookup(_moreinfo, key); +} + +gchar * +moreinfo_lookup(gchar *key) +{ + return moreinfo_lookup_with_prefix(NULL, key); +} + +#if !GLIB_CHECK_VERSION(2,44,0) +gboolean g_strv_contains(const gchar * const * strv, const gchar *str) { + /* g_strv_contains() requires glib>2.44 + * fallback for older versions */ + gint i = 0; + while(strv[i] != NULL) { + if (g_strcmp0(strv[i], str) == 0) + return 1; + i++; + } + return 0; +} +#endif + +gchar *hardinfo_clean_grpname(const gchar *v, int replacing) { + gchar *clean, *p; + + p = clean = g_strdup(v); + while (*p != 0) { + switch(*p) { + case '[': + *p = '('; break; + case ']': + *p = ')'; break; + default: + break; + } + p++; + } + if (replacing) + g_free((gpointer)v); + return clean; +} + +/* Hardinfo labels that have # are truncated and/or hidden. + * Labels can't have $ because that is the delimiter in + * moreinfo. */ +gchar *hardinfo_clean_label(const gchar *v, int replacing) { + gchar *clean, *p; + + p = clean = g_strdup(v); + while (*p != 0) { + switch(*p) { + case '#': case '$': + *p = '_'; + break; + default: + break; + } + p++; + } + if (replacing) + g_free((gpointer)v); + return clean; +} + +/* hardinfo uses the values as {ht,x}ml, apparently */ +gchar *hardinfo_clean_value(const gchar *v, int replacing) { + gchar *clean, *tmp; + gchar **vl; + if (v == NULL) return NULL; + + vl = g_strsplit(v, "&", -1); + if (g_strv_length(vl) > 1) + clean = g_strjoinv("&", vl); + else + clean = g_strdup(v); + g_strfreev(vl); + + vl = g_strsplit(clean, "<", -1); + if (g_strv_length(vl) > 1) { + tmp = g_strjoinv("<", vl); + g_free(clean); + clean = tmp; + } + g_strfreev(vl); + + vl = g_strsplit(clean, ">", -1); + if (g_strv_length(vl) > 1) { + tmp = g_strjoinv(">", vl); + g_free(clean); + clean = tmp; + } + g_strfreev(vl); + + if (replacing) + g_free((gpointer)v); + return clean; +} + +gboolean hardinfo_spawn_command_line_sync(const gchar *command_line, + gchar **standard_output, + gchar **standard_error, + gint *exit_status, + GError **error) +{ + shell_status_pulse(); + return g_spawn_command_line_sync(command_line, standard_output, + standard_error, exit_status, error); +} diff --git a/hardinfo2/vendor.c b/hardinfo2/vendor.c new file mode 100644 index 00000000..9230c696 --- /dev/null +++ b/hardinfo2/vendor.c @@ -0,0 +1,655 @@ +/* + * HardInfo - Displays System Information + * Copyright (C) 2003-2009 L. A. F. Pereira + * + * List of vendors based on GtkSysInfo (c) Pissens Sebastien. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 2 or later. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include +#include + +#include "vendor.h" +#include "syncmanager.h" +#include "config.h" +#include "hardinfo.h" +#include "strstr_word.h" +#include "util_sysobj.h" /* for appfsp() and SEQ() */ + +/* { match_string, match_rule, name, url } */ +static Vendor vendors_builtin[] = { + /* BIOS manufacturers */ + { "American Megatrends", 0, "American Megatrends", "www.ami.com"}, + { "Award", 0, "Award Software International", "www.award-bios.com"}, + { "Phoenix", 0, "Phoenix Technologies", "www.phoenix.com"}, + /* x86 vendor strings */ + { "AMDisbetter!", 0, "Advanced Micro Devices", "www.amd.com" }, + { "AuthenticAMD", 0, "Advanced Micro Devices", "www.amd.com" }, + { "CentaurHauls", 0, "VIA (formerly Centaur Technology)", "www.via.tw" }, + { "CyrixInstead", 0, "Cyrix", "" }, + { "GenuineIntel", 0, "Intel", "www.intel.com" }, + { "TransmetaCPU", 0, "Transmeta", "" }, + { "GenuineTMx86", 0, "Transmeta", "" }, + { "Geode by NSC", 0, "National Semiconductor", "" }, + { "NexGenDriven", 0, "NexGen", "" }, + { "RiseRiseRise", 0, "Rise Technology", "" }, + { "SiS SiS SiS", 0, "Silicon Integrated Systems", "" }, + { "UMC UMC UMC", 0, "United Microelectronics Corporation", "" }, + { "VIA VIA VIA", 0, "VIA", "www.via.tw" }, + { "Vortex86 SoC", 0, "DMP Electronics", "" }, + /* x86 VM vendor strings */ + { "KVMKVMKVM", 0, "KVM", "" }, + { "Microsoft Hv", 0, "Microsoft Hyper-V", "www.microsoft.com" }, + { "lrpepyh vr", 0, "Parallels", "" }, + { "VMwareVMware", 0, "VMware", "" }, + { "XenVMMXenVMM", 0, "Xen HVM", "" }, +}; + +#define ven_msg(msg, ...) fprintf (stderr, "[%s] " msg "\n", __FUNCTION__, ##__VA_ARGS__) /**/ +#define ven_file_err(msg, ...) { \ + ven_msg(msg, ##__VA_ARGS__); \ + fflush(stderr); \ + if (vendor_die_on_error) exit(-1); } + +static vendor_list vendors = NULL; +vendor_list get_vendors_list() { return vendors; } +gboolean vendor_die_on_error = FALSE; + +/* sort the vendor list by length of match_string, + * LONGEST first */ +int vendor_sort (const Vendor *ap, const Vendor *bp) { + int la = 0, lb = 0; + if (ap) la = ap->weight; + if (bp) lb = bp->weight; + return lb-la; +} + +static int read_from_vendor_conf(const char *path) { + GKeyFile *vendors_file; + gchar *tmp; + gint num_vendors, i, count = 0; /* num_vendors is file-reported, count is actual */ + + DEBUG("using vendor.conf format loader for %s", path); + + vendors_file = g_key_file_new(); + if (g_key_file_load_from_file(vendors_file, path, 0, NULL)) { + num_vendors = g_key_file_get_integer(vendors_file, "vendors", "number", NULL); + + for (i = num_vendors - 1; i >= 0; i--) { + Vendor *v = g_new0(Vendor, 1); + + tmp = g_strdup_printf("vendor%d", i); + + v->match_string = g_key_file_get_string(vendors_file, tmp, "match_string", NULL); + if (v->match_string == NULL) { + /* try old name */ + v->match_string = g_key_file_get_string(vendors_file, tmp, "id", NULL); + } + if (v->match_string) { + v->match_rule = g_key_file_get_integer(vendors_file, tmp, "match_case", NULL); + v->name = g_key_file_get_string(vendors_file, tmp, "name", NULL); + v->name_short = g_key_file_get_string(vendors_file, tmp, "name_short", NULL); + v->url = g_key_file_get_string(vendors_file, tmp, "url", NULL); + v->url_support = g_key_file_get_string(vendors_file, tmp, "url_support", NULL); + + vendors = g_slist_prepend(vendors, v); + count++; + } else { + /* don't add if match_string is null */ + g_free(v); + } + + g_free(tmp); + } + g_key_file_free(vendors_file); + DEBUG("... found %d match strings", count); + return count; + } + g_key_file_free(vendors_file); + return 0; +} + +static int read_from_vendor_ids(const char *path) { +#define VEN_BUFF_SIZE 128 +#define VEN_FFWD() while(isspace((unsigned char)*p)) p++; +#define VEN_CHK(TOK) (strncmp(p, TOK, tl = strlen(TOK)) == 0 && (ok = 1)) + char buff[VEN_BUFF_SIZE] = ""; + + char vars[7][VEN_BUFF_SIZE]; + char *name = vars[0]; + char *name_short = vars[1]; + char *url = vars[2]; + char *url_support = vars[3]; + char *wikipedia = vars[4]; + char *note = vars[5]; + char *ansi_color = vars[6]; + int name_rule_count = -1; + + int count = 0; + FILE *fd; + char *p, *b; + int tl, line = -1, ok = 0; + + DEBUG("using vendor.ids format loader for %s", path); + + fd = fopen(path, "r"); + if (!fd) return 0; + + while (fgets(buff, VEN_BUFF_SIZE, fd)) { + ok = 0; + line++; + + b = strchr(buff, '\n'); + if (b) + *b = 0; + else + ven_file_err("%s:%d: line longer than VEN_BUFF_SIZE (%lu)", path, line, (unsigned long)VEN_BUFF_SIZE); + + b = strchr(buff, '#'); + if (b) *b = 0; /* line ends at comment */ + + p = buff; + VEN_FFWD(); + if (VEN_CHK("name ")) { + if (name_rule_count == 0) + ven_file_err("%s:%d: name \"%s\" had no match rules", path, line, name); + strncpy(name, p + tl, VEN_BUFF_SIZE - 1); + strcpy(name_short, ""); + strcpy(url, ""); + strcpy(url_support, ""); + strcpy(wikipedia, ""); + strcpy(note, ""); + strcpy(ansi_color, ""); + name_rule_count = 0; + } + if (VEN_CHK("name_short ")) + strncpy(name_short, p + tl, VEN_BUFF_SIZE - 1); + if (VEN_CHK("url ")) + strncpy(url, p + tl, VEN_BUFF_SIZE - 1); + if (VEN_CHK("url_support ")) + strncpy(url_support, p + tl, VEN_BUFF_SIZE - 1); + if (VEN_CHK("wikipedia ")) + strncpy(wikipedia, p + tl, VEN_BUFF_SIZE - 1); + if (VEN_CHK("note ")) + strncpy(note, p + tl, VEN_BUFF_SIZE - 1); + if (VEN_CHK("ansi_color ")) + strncpy(ansi_color, p + tl, VEN_BUFF_SIZE - 1); + +#define dup_if_not_empty(s) (strlen(s) ? g_strdup(s) : NULL) + + int mrule = -1; + if (VEN_CHK("match_string ")) + mrule = VENDOR_MATCH_RULE_WORD_IGNORE_CASE; + else if (VEN_CHK("match_string_case ")) + mrule = VENDOR_MATCH_RULE_WORD_MATCH_CASE; + else if (VEN_CHK("match_string_exact ")) + mrule = VENDOR_MATCH_RULE_EXACT; + else if (VEN_CHK("match_string_prefix ")) + mrule = VENDOR_MATCH_RULE_WORD_PREFIX_IGNORE_CASE; + else if (VEN_CHK("match_string_prefix_case ")) + mrule = VENDOR_MATCH_RULE_WORD_PREFIX_MATCH_CASE; + else if (VEN_CHK("match_string_suffix ")) + mrule = VENDOR_MATCH_RULE_WORD_PREFIX_IGNORE_CASE; + else if (VEN_CHK("match_string_suffix_case ")) + mrule = VENDOR_MATCH_RULE_WORD_PREFIX_MATCH_CASE; + else if (VEN_CHK("match_string_num_prefix ")) + mrule = VENDOR_MATCH_RULE_NUM_PREFIX_IGNORE_CASE; + else if (VEN_CHK("match_string_num_prefix_case ")) + mrule = VENDOR_MATCH_RULE_NUM_PREFIX_MATCH_CASE; + + if (mrule >= 0) { + Vendor *v = g_new0(Vendor, 1); + v->file_line = line; + v->match_string = g_strdup(p+tl); + v->ms_length = strlen(v->match_string); + v->match_rule = mrule; + v->name = g_strdup(name); + v->name_short = dup_if_not_empty(name_short); + v->url = dup_if_not_empty(url); + v->url_support = dup_if_not_empty(url_support); + v->wikipedia = dup_if_not_empty(wikipedia); + v->note = dup_if_not_empty(note); + v->ansi_color = dup_if_not_empty(ansi_color); + + v->weight = v->ms_length; + /* NUM_PREFIX rules consider +1 characters */ + if (v->match_rule == VENDOR_MATCH_RULE_NUM_PREFIX_MATCH_CASE + || v->match_rule == VENDOR_MATCH_RULE_NUM_PREFIX_IGNORE_CASE) + v->weight++; + + v->has_parens = g_utf8_strchr(v->match_string, -1, '(') ? TRUE : FALSE; + + vendors = g_slist_prepend(vendors, v); + name_rule_count++; + count++; + } + + g_strstrip(buff); + if (!ok && *buff != 0) + ven_file_err("unrecognised item at %s:%d, %s", path, line, buff); + } + + fclose(fd); + + DEBUG("... found %d match strings", count); + + return count; +} + +void vendor_init(void) +{ + gchar *path; + static SyncEntry se = { + .name = N_("Update vendor list"), + .file_name = "vendor.ids", + }; + + /* already initialized */ + if (vendors) return; + + DEBUG("initializing vendor list"); + sync_manager_add_entry(&se); + + char *file_search_order[] = { + /* new format */ + g_build_filename(g_get_user_config_dir(), "hardinfo2", "vendor.ids", NULL), + g_build_filename(params.path_data, "vendor.ids", NULL), + /* old format */ + g_build_filename(g_get_user_config_dir(), "hardinfo2", "vendor.conf", NULL), + g_build_filename(g_get_home_dir(), ".hardinfo2", "vendor.conf", NULL), /* old place */ + g_build_filename(params.path_data, "vendor.conf", NULL), + NULL + }; + + int n = 0; + while (file_search_order[n]) { + DEBUG("searching for vendor data at %s ...", file_search_order[n]); + if (!access(file_search_order[n], R_OK)) { + path = file_search_order[n]; + DEBUG("... file exists."); + break; + } + n++; + } + + int fail = 1; + + /* new format */ + if (path && strstr(path, "vendor.ids")) { + fail = !read_from_vendor_ids(path); + } + + /* old format */ + if (path && strstr(path, "vendor.conf")) { + fail = !read_from_vendor_conf(path); + } + + if (fail) { + gint i; + + DEBUG("vendor data not found, using internal database"); + + for (i = G_N_ELEMENTS(vendors_builtin) - 1; i >= 0; i--) { + vendors = g_slist_prepend(vendors, (gpointer) &vendors_builtin[i]); + } + } + + /* sort the vendor list by length of match string so that short strings are + * less likely to incorrectly match. + * example: ST matches ASUSTeK but SEAGATE is not ASUS */ + vendors = g_slist_sort(vendors, (GCompareFunc)vendor_sort); + + /* free search location strings */ + n = 0; + while (file_search_order[n]) { + free(file_search_order[n]); + n++; + } +} + +void vendor_cleanup() { + DEBUG("cleanup vendor list"); + //FIXME CRASH g_slist_free_full(vendors, (GDestroyNotify)vendor_free); +} + +void vendor_free(Vendor *v) { + if (v) { + g_free(v->name); + g_free(v->name_short); + g_free(v->url); + g_free(v->url_support); + g_free(v->ansi_color); + g_free(v->match_string); + g_free(v); + } +} + +const Vendor *vendor_match(const gchar *id_str, ...) { + Vendor *ret = NULL; + va_list ap, ap2; + gchar *tmp = NULL, *p = NULL; + int tl = 0, c = 0; + + if (id_str) { + c++; + tl += strlen(id_str); + tmp = appfsp(tmp, "%s", id_str); + + va_start(ap, id_str); + p = va_arg(ap, gchar*); + while(p) { + c++; + tl += strlen(p); + tmp = appfsp(tmp, "%s", p); + p = va_arg(ap, gchar*); + } + va_end(ap); + } + if (!c || tl == 0) + return NULL; + + vendor_list vl = vendors_match_core(tmp, 1); + if (vl) { + ret = (Vendor*)vl->data; + vendor_list_free(vl); + } + return ret; +} + +static const gchar *vendor_get_name_ex(const gchar * id_str, short shortest) { + const Vendor *v = vendor_match(id_str, NULL); + + if (v) { + if (shortest) { + int sl = strlen(id_str); + int nl = (v->name) ? strlen(v->name) : 0; + int snl = (v->name_short) ? strlen(v->name_short) : 0; + if (!nl) nl = 9999; + if (!snl) snl = 9999; + /* if id_str is shortest, then return as if + * not found (see below). + * if all equal then prefer + * name_short > name > id_str. */ + if (nl < snl) + return (sl < nl) ? id_str : v->name; + else + return (sl < snl) ? id_str : v->name_short; + } else + return v->name; + } + + return id_str; /* Preserve an old behavior, but what about const? */ +} + +const gchar *vendor_get_name(const gchar * id_str) { + return vendor_get_name_ex(id_str, 0); +} + +const gchar *vendor_get_shortest_name(const gchar * id_str) { + return vendor_get_name_ex(id_str, 1); +} + +const gchar *vendor_get_url(const gchar * id_str) { + const Vendor *v = vendor_match(id_str, NULL); + + if (v) + return v->url; + + return NULL; +} + +gchar *vendor_get_link(const gchar *id_str) +{ + const Vendor *v = vendor_match(id_str, NULL); + + if (!v) { + return g_strdup(id_str); + } + + return vendor_get_link_from_vendor(v); +} + +gchar *vendor_get_link_from_vendor(const Vendor *v) +{ +#if GTK_CHECK_VERSION(2, 18, 0) + gboolean gtk_label_link_ok = TRUE; +#else + gboolean gtk_label_link_ok = FALSE; +#endif + gboolean link_ok = params.markup_ok && gtk_label_link_ok; + /* If using a real link, and wikipedia is available, + * target that instead of url. There's usually much more + * information there, plus easily click through to company url. */ + gboolean link_wikipedia = TRUE; + + if (!v) + return g_strdup(_("Unknown")); + + gchar *url = NULL; + + if (link_ok && link_wikipedia && v->wikipedia + || v->wikipedia && !v->url) + url = g_strdup_printf("http://wikipedia.com/wiki/%s", v->wikipedia); + else if (v->url) + url = g_strdup(v->url); + + if (!url) + return g_strdup(v->name); + + auto_free(url); + + if (link_ok) { + const gchar *prefix; + + if (!strncmp(url, "http://", sizeof("http://") - 1) || + !strncmp(url, "https://", sizeof("https://") - 1)) { + prefix = ""; + } else { + prefix = "http://"; + } + + return g_strdup_printf("%s", prefix, url, v->name); + } + + return g_strdup_printf("%s (%s)", v->name, url); +} + +vendor_list vendor_list_concat_va(int count, vendor_list vl, ...) { + vendor_list ret = vl, p = NULL; + va_list ap; + va_start(ap, vl); + if (count > 0) { + count--; /* includes vl */ + while (count) { + p = va_arg(ap, vendor_list); + ret = g_slist_concat(ret, p); + count--; + } + } else { + p = va_arg(ap, vendor_list); + while (p) { + ret = g_slist_concat(ret, p); + p = va_arg(ap, vendor_list); + } + } + va_end(ap); + return ret; +} + +int vendor_cmp_deep(const Vendor *a, const Vendor *b) { + int r; + if (a && !b) return 1; + if (!a && b) return -1; + if (!a && !b) return 0; + r = g_strcmp0(a->name, b->name); + if (!!r) return r; + r = g_strcmp0(a->name_short, b->name_short); + if (!!r) return r; + r = g_strcmp0(a->ansi_color, b->ansi_color); + if (!!r) return r; + r = g_strcmp0(a->url, b->url); + if (!!r) return r; + r = g_strcmp0(a->url_support, b->url_support); + if (!!r) return r; + r = g_strcmp0(a->wikipedia, b->wikipedia); + if (!!r) return r; + return 0; +} + +vendor_list vendor_list_remove_duplicates_deep(vendor_list vl) { + /* vendor_list is GSList* */ + GSList *tvl = vl; + GSList *evl = NULL; + while(tvl) { + const Vendor *tv = tvl->data; + evl = tvl->next; + while(evl) { + const Vendor *ev = evl->data; + if (vendor_cmp_deep(ev, tv) == 0) { + GSList *next = evl->next; + vl = g_slist_delete_link(vl, evl); + evl = next; + } else + evl = evl->next; + } + tvl = tvl->next; + } + return vl; +} + +vendor_list vendors_match(const gchar *id_str, ...) { + va_list ap, ap2; + gchar *tmp = NULL, *p = NULL; + int tl = 0, c = 0; + + if (id_str) { + c++; + tl += strlen(id_str); + tmp = appfsp(tmp, "%s", id_str); + + va_start(ap, id_str); + p = va_arg(ap, gchar*); + while(p) { + c++; + tl += strlen(p); + tmp = appfsp(tmp, "%s", p); + p = va_arg(ap, gchar*); + } + va_end(ap); + } + if (!c || tl == 0) + return NULL; + + return vendors_match_core(tmp, -1); +} + +vendor_list vendors_match_core(const gchar *str, int limit) { + gchar *p = NULL; + GSList *vlp; + int found = 0; + vendor_list ret = NULL; + + /* pass [array_index]: function + * 1st [3]: only check match strings that have () in them + * 2nd [2]: ignore text in (), like (formerly ...) or (nee ...), + * but unfortunately also (now ...) + * 3rd [1]: (passes[0]): full text */ + gchar *passes[3] = { g_strdup(str), g_strdup(str), g_strdup(str) }; + int pass = 1; p = passes[1]; + while((p = strchr(p, '('))) { + pass = 3; p++; + while(*p && *p != ')') { *p = ' '; p++; } + } + + for (; pass > 0; pass--) { + for (vlp = vendors; vlp; vlp = vlp->next) { + Vendor *v = (Vendor *)vlp->data; + char *m = NULL; + + if (!v) continue; + if (!v->match_string) continue; + + if (v->has_parens) + if (pass != 3) continue; + + //ven_msg("pass:%d <<%s>> EXAMINE: \"%s\"", pass, v->match_string, passes[pass-1]); + int epass; + +#define standard_match_work_inner(fn) { \ + /* clear so it doesn't match again */ \ + for(epass = pass; epass > 0; epass--) \ + { char *s = passes[epass-1] + (m - passes[pass-1]); \ + char *e = s + v->ms_length; \ + for(; s < e; s++) *s = ' '; \ + g_strstrip(passes[epass-1]); } \ + /* add to return list */ \ + ret = vendor_list_append(ret, v); \ + found++; \ + if (*passes[0] == 0) \ + goto vendors_match_core_finish; \ + if (limit > 0 && found >= limit) \ + goto vendors_match_core_finish; } +#define standard_match_work(fn) \ + if ((m = fn(passes[pass-1], v->match_string))) \ + standard_match_work_inner(); + + switch(v->match_rule) { + case VENDOR_MATCH_RULE_EXACT: + if (SEQ(passes[pass-1], v->match_string) ) { + /* add to return list */ + ret = vendor_list_append(ret, v); + found++; + goto vendors_match_core_finish; /* no way for any other match to happen */ + } + break; + case VENDOR_MATCH_RULE_WORD_IGNORE_CASE: + standard_match_work(strcasestr_word); + break; + case VENDOR_MATCH_RULE_WORD_MATCH_CASE: + standard_match_work(strstr_word); + break; + case VENDOR_MATCH_RULE_WORD_PREFIX_MATCH_CASE: + standard_match_work(strstr_word_prefix); + break; + case VENDOR_MATCH_RULE_WORD_PREFIX_IGNORE_CASE: + standard_match_work(strcasestr_word_prefix); + break; + case VENDOR_MATCH_RULE_WORD_SUFFIX_MATCH_CASE: + standard_match_work(strstr_word_suffix); + break; + case VENDOR_MATCH_RULE_WORD_SUFFIX_IGNORE_CASE: + standard_match_work(strcasestr_word_suffix); + break; + case VENDOR_MATCH_RULE_NUM_PREFIX_IGNORE_CASE: + if ((m = strstr_word_prefix(passes[pass-1], v->match_string))) + if (isdigit(m[v->ms_length])) + standard_match_work_inner(); + break; + case VENDOR_MATCH_RULE_NUM_PREFIX_MATCH_CASE: + if ((m = strcasestr_word_prefix(passes[pass-1], v->match_string))) + if (isdigit(m[v->ms_length])) + standard_match_work_inner(); + break; + } + } + } + +vendors_match_core_finish: + + g_free(passes[0]); + g_free(passes[1]); + g_free(passes[2]); + return ret; +} diff --git a/hardinfo2/x_util.c b/hardinfo2/x_util.c new file mode 100644 index 00000000..2a7febb4 --- /dev/null +++ b/hardinfo2/x_util.c @@ -0,0 +1,342 @@ +/* + * HardInfo - Displays System Information + * Copyright (C) 2003-2017 L. A. F. Pereira + * This file + * Copyright (C) 2018 Burt P. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 2 or later. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include "hardinfo.h" +#include "x_util.h" +#include + +/* wayland stuff lives here for now */ + +wl_info *get_walyand_info() { + wl_info *s = malloc(sizeof(wl_info)); + memset(s, 0, sizeof(wl_info)); + s->xdg_session_type = g_strdup( getenv("XDG_SESSION_TYPE") ); + if (s->xdg_session_type == NULL) + s->xdg_session_type = strdup("x11"); + s->display_name = g_strdup( getenv("WAYLAND_DISPLAY") ); + return s; +} + +void wl_free(wl_info *s) { + if (s) { + free(s->xdg_session_type); + free(s->display_name); + free(s); + } +} + +/* get x information from xrandr, xdpyinfo, and glxinfo */ + +static char *simple_line_value(char *line, const char *prefix) { + if (g_str_has_prefix(g_strstrip(line), prefix)) { + line += strlen(prefix) + 1; + return g_strstrip(line); + } else + return NULL; +} + +gboolean fill_glx_info(glx_info *glx) { + gboolean spawned; + gchar *out, *err, *p, *l, *next_nl; + gchar *glx_cmd = g_strdup("glxinfo"); + +#define GLX_MATCH_LINE(prefix_str, struct_member) \ + if (l = simple_line_value(p, prefix_str)) { glx->struct_member = g_strdup(l); goto glx_next_line; } + + spawned = hardinfo_spawn_command_line_sync(glx_cmd, + &out, &err, NULL, NULL); + g_free(glx_cmd); + if (spawned) { + p = out; + while(next_nl = strchr(p, '\n')) { + strend(p, '\n'); + g_strstrip(p); + GLX_MATCH_LINE("GLX version", glx_version); + GLX_MATCH_LINE("OpenGL vendor string", ogl_vendor); + GLX_MATCH_LINE("OpenGL renderer string", ogl_renderer); + GLX_MATCH_LINE("OpenGL renderer string", ogl_renderer); + GLX_MATCH_LINE("OpenGL core profile version string", ogl_core_version); + GLX_MATCH_LINE("OpenGL core profile shading language version string", ogl_core_sl_version); + GLX_MATCH_LINE("OpenGL version string", ogl_version); + GLX_MATCH_LINE("OpenGL shading language version string", ogl_sl_version); + GLX_MATCH_LINE("OpenGL ES profile version string", ogles_version); + GLX_MATCH_LINE("OpenGL ES profile shading language version string", ogles_sl_version); + + if (l = simple_line_value(p, "direct rendering")) { + if (strstr(p, "Yes")) + glx->direct_rendering = 1; + goto glx_next_line; + } + + glx_next_line: + p = next_nl + 1; + } + g_free(out); + g_free(err); + return TRUE; + } + return FALSE; +} + +glx_info *glx_create() { + glx_info *s = malloc(sizeof(glx_info)); + memset(s, 0, sizeof(glx_info)); + return s; +} + +void glx_free(glx_info *s) { + if (s) { + free(s->glx_version); + free(s->ogl_vendor); + free(s->ogl_renderer); + free(s->ogl_core_version); + free(s->ogl_core_sl_version); + free(s->ogl_version); + free(s->ogl_sl_version); + free(s->ogles_version); + free(s->ogles_sl_version); + free(s); + } +} + +gboolean fill_xinfo(xinfo *xi) { + gboolean spawned; + gchar *out, *err, *p, *l, *next_nl; + gchar *xi_cmd = g_strdup("xdpyinfo"); + +#define XI_MATCH_LINE(prefix_str, struct_member) \ + if (l = simple_line_value(p, prefix_str)) { xi->struct_member = g_strdup(l); goto xi_next_line; } + + spawned = hardinfo_spawn_command_line_sync(xi_cmd, + &out, &err, NULL, NULL); + g_free(xi_cmd); + if (spawned) { + p = out; + while(next_nl = strchr(p, '\n')) { + strend(p, '\n'); + g_strstrip(p); + XI_MATCH_LINE("name of display", display_name); + XI_MATCH_LINE("vendor string", vendor); + XI_MATCH_LINE("vendor release number", release_number); + XI_MATCH_LINE("XFree86 version", version); + XI_MATCH_LINE("X.Org version", version); + + xi_next_line: + p = next_nl + 1; + } + g_free(out); + g_free(err); + return TRUE; + } + return FALSE; +} + +gboolean fill_xrr_info(xrr_info *xrr) { + gboolean spawned; + gchar *out, *err, *p, *next_nl; + gchar *xrr_cmd = g_strdup("xrandr --prop"); + int ec; + + x_screen ts; + x_output to; + char output_id[128]; + char status[128]; + char alist[512]; + + memset(&ts, 0, sizeof(x_screen)); + memset(&to, 0, sizeof(x_output)); + memset(output_id, 0, sizeof(output_id)); + memset(status, 0, sizeof(status)); + memset(alist, 0, sizeof(alist)); + + spawned = hardinfo_spawn_command_line_sync(xrr_cmd, + &out, &err, NULL, NULL); + g_free(xrr_cmd); + if (spawned) { + p = out; + while(next_nl = strchr(p, '\n')) { + strend(p, '\n'); + g_strstrip(p); + + ec = sscanf(p, "Screen %d: minimum %d x %d, current %d x %d, maximum %d x %d", + &ts.number, + &ts.min_px_width, &ts.min_px_height, + &ts.px_width, &ts.px_height, + &ts.max_px_width, &ts.max_px_height); + if (ec == 7) { + /* new screen */ + xrr->screen_count++; + if (xrr->screens == NULL) + xrr->screens = malloc(xrr->screen_count * sizeof(x_screen)); + else + xrr->screens = realloc(xrr->screens, xrr->screen_count * sizeof(x_screen)); + memcpy(&xrr->screens[xrr->screen_count-1], &ts, sizeof(x_screen)); + memset(&ts, 0, sizeof(x_screen)); /* clear the temp */ + goto xrr_next_line; + } + + /* looking for: + * (connected|disconnected|unknown connection) (primary|?) <%dx%d+%d+%d> (attribute_list) mm x mm + */ + ec = sscanf(p, "%127s %127[^(](%511[^)]", output_id, status, alist); + if (ec == 3) { + int is_output = 0, found_rect = 0, n = 0; + gchar **ot = g_strsplit(status, " ", 0); + + /* find rect */ + while (ot[n] != NULL) { + ec = sscanf(ot[n], "%dx%d+%d+%d", &to.px_width, &to.px_height, &to.px_offset_x, &to.px_offset_y); + if (ec == 4) { + found_rect = 1; + break; + } + n++; + } + if (found_rect) + to.screen = xrr->screen_count - 1; + else + to.screen = -1; + + if (strcmp("disconnected", ot[0]) == 0) { + is_output = 1; + to.connected = 0; + } else + if (strcmp("unknown", ot[0]) == 0 && strcmp("connection", ot[1]) == 0) { + is_output = 1; + to.connected = -1; + } else + if (strcmp("connected", ot[0]) == 0) { + is_output = 1; + to.connected = 1; + } + g_strfreev(ot); + if (is_output) { + strncpy(to.name, output_id, 63); + xrr->output_count++; + if (xrr->outputs == NULL) + xrr->outputs = malloc(xrr->output_count * sizeof(x_output)); + else + xrr->outputs = realloc(xrr->outputs, xrr->output_count * sizeof(x_output)); + memcpy(&xrr->outputs[xrr->output_count-1], &to, sizeof(x_output)); + memset(&to, 0, sizeof(x_output)); /* clear the temp */ + goto xrr_next_line; + } + } + + xrr_next_line: + p = next_nl + 1; + } + g_free(out); + g_free(err); + return TRUE; + } + return FALSE; +} + +gboolean fill_basic_xlib(xinfo *xi) { + Display *display; + int s, w, h, rn; + + display = XOpenDisplay(NULL); + if (display) { + if (!xi->display_name) + xi->display_name = XDisplayName(NULL); + + if (!xi->vendor) + xi->vendor = XServerVendor(display); + + if (!xi->release_number) { + rn = XVendorRelease(display); + xi->release_number = g_strdup_printf("%d", rn); + } + + if (!xi->xrr->screen_count) { + s = DefaultScreen(display); + w = XDisplayWidth(display, s); + h = XDisplayHeight(display, s); + + /* create at least one screen */ + x_screen ts; + memset(&ts, 0, sizeof(x_screen)); + ts.number = s; + ts.px_width = w; + ts.px_height = h; + + xi->xrr->screen_count++; + if (xi->xrr->screens == NULL) + xi->xrr->screens = malloc(xi->xrr->screen_count * sizeof(x_screen)); + else + xi->xrr->screens = realloc(xi->xrr->screens, xi->xrr->screen_count * sizeof(x_screen)); + memcpy(&xi->xrr->screens[xi->xrr->screen_count-1], &ts, sizeof(x_screen)); + } + return TRUE; + } + return FALSE; +} + +xrr_info *xrr_create() { + xrr_info *xrr = malloc(sizeof(xrr_info)); + memset(xrr, 0, sizeof(xrr_info)); + return xrr; +} + +void xrr_free(xrr_info *xrr) { + if (xrr) { + free(xrr->screens); + free(xrr->outputs); + free(xrr->providers); + free(xrr->monitors); + free(xrr); + } +} + +xinfo *xinfo_get_info() { + int fail = 0; + xinfo *xi = malloc(sizeof(xinfo)); + memset(xi, 0, sizeof(xinfo)); + xi->glx = glx_create(); + xi->xrr = xrr_create(); + + if ( !fill_xinfo(xi) ) + fail++; + if ( !fill_xrr_info(xi->xrr) ) + fail++; + if ( !fill_glx_info(xi->glx) ) + fail++; + + if (fail) { + /* as fallback, try xlib directly */ + if ( !fill_basic_xlib(xi) ) + xi->nox = 1; + } + return xi; +} + +void xinfo_free(xinfo *xi) { + if (xi) { + free(xi->display_name); + free(xi->vendor); + free(xi->version); + free(xi->release_number); + xrr_free(xi->xrr); + glx_free(xi->glx); + free(xi); + } +} diff --git a/includes/alpha/processor-platform.h b/includes/alpha/processor-platform.h index 778a1a88..7dfdd91c 100644 --- a/includes/alpha/processor-platform.h +++ b/includes/alpha/processor-platform.h @@ -1,10 +1,10 @@ /* * HardInfo - Displays System Information - * Copyright (C) 2003-2006 Leandro A. F. Pereira + * Copyright (C) 2003-2006 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, version 2. + * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of diff --git a/includes/arm/processor-platform.h b/includes/arm/processor-platform.h index 0ffdac24..a168db68 100644 --- a/includes/arm/processor-platform.h +++ b/includes/arm/processor-platform.h @@ -1,10 +1,10 @@ /* * HardInfo - Displays System Information - * Copyright (C) 2003-2006 Leandro A. F. Pereira + * Copyright (C) 2003-2006 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, version 2. + * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of diff --git a/includes/benchmark.h b/includes/benchmark.h index 277f0c07..08392ad2 100644 --- a/includes/benchmark.h +++ b/includes/benchmark.h @@ -2,22 +2,43 @@ #define __BENCHMARK_H__ #include "hardinfo.h" +#include "util_sysobj.h" /* for SEQ() */ + +#define BENCH_PTR_BITS ((unsigned int)sizeof(void*) * 8) extern ProgramParameters params; -enum { - BENCHMARK_BLOWFISH, +enum BenchmarkEntries { + BENCHMARK_BLOWFISH_SINGLE, + BENCHMARK_BLOWFISH_THREADS, + BENCHMARK_BLOWFISH_CORES, + BENCHMARK_ZLIB, BENCHMARK_CRYPTOHASH, BENCHMARK_FIB, BENCHMARK_NQUEENS, - BENCHMARK_ZLIB, BENCHMARK_FFT, BENCHMARK_RAYTRACE, + BENCHMARK_SBCPU_SINGLE, + BENCHMARK_SBCPU_ALL, + BENCHMARK_SBCPU_QUAD, + BENCHMARK_MEMORY_SINGLE, + BENCHMARK_MEMORY_DUAL, + BENCHMARK_MEMORY_QUAD, + BENCHMARK_MEMORY_ALL, BENCHMARK_GUI, BENCHMARK_N_ENTRIES -} BenchmarkEntries; +}; -void benchmark_bfish(void); +void benchmark_bfish_single(void); +void benchmark_bfish_threads(void); +void benchmark_bfish_cores(void); +void benchmark_memory_single(void); +void benchmark_memory_dual(void); +void benchmark_memory_quad(void); +void benchmark_memory_all(void); +void benchmark_sbcpu_single(void); +void benchmark_sbcpu_all(void); +void benchmark_sbcpu_quad(void); void benchmark_cryptohash(void); void benchmark_fft(void); void benchmark_fib(void); @@ -31,9 +52,12 @@ typedef struct { double result; double elapsed_time; int threads_used; + int revision; + char extra[256]; /* no \n, ; or | */ + char user_note[256]; /* no \n, ; or | */ } bench_value; -#define EMPTY_BENCH_VALUE {-1.0f,0,0} +#define EMPTY_BENCH_VALUE {-1.0f,0,0,-1,""} char *bench_value_to_str(bench_value r); bench_value bench_value_from_str(const char* str); @@ -52,4 +76,12 @@ bench_value benchmark_crunch_for(float seconds, gint n_threads, extern bench_value bench_results[BENCHMARK_N_ENTRIES]; +/* in bench_util.c */ + +/* guarantee a minimum size of data + * or return null */ +gchar *get_test_data(gsize min_size); +char *md5_digest_str(const char *data, unsigned int len); +#define bench_msg(msg, ...) fprintf (stderr, "[%s] " msg "\n", __FUNCTION__, ##__VA_ARGS__) + #endif /* __BENCHMARK_H__ */ diff --git a/includes/callbacks.h b/includes/callbacks.h index 392d5767..421cff5e 100644 --- a/includes/callbacks.h +++ b/includes/callbacks.h @@ -1,10 +1,10 @@ /* * HardInfo - Displays System Information - * Copyright (C) 2003-2007 Leandro A. F. Pereira + * Copyright (C) 2003-2007 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, version 2. + * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -40,5 +40,6 @@ void cb_manage_hosts(); void cb_connect_host(GtkAction * action); void cb_local_computer(); void cb_act_as_server(); +void cb_sync_on_startup(); #endif /* __CALLBACKS_H__ */ diff --git a/includes/computer.h b/includes/computer.h index 5a69a171..f8589d77 100644 --- a/includes/computer.h +++ b/includes/computer.h @@ -1,10 +1,10 @@ /* * HardInfo - Displays System Information - * Copyright (C) 2003-2007 Leandro A. F. Pereira + * Copyright (C) 2003-2007 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, version 2. + * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -19,6 +19,7 @@ #define __COMPUTER_H__ #include "hardinfo.h" +#include "x_util.h" typedef struct _Computer Computer; typedef struct _OperatingSystem OperatingSystem; @@ -26,6 +27,7 @@ typedef struct _MemoryInfo MemoryInfo; typedef struct _UptimeInfo UptimeInfo; typedef struct _LoadInfo LoadInfo; typedef struct _DisplayInfo DisplayInfo; +typedef struct _Distro Distro; typedef struct _AlsaInfo AlsaInfo; typedef struct _AlsaCard AlsaCard; @@ -36,14 +38,14 @@ typedef struct _FileSystemEntry FileSystemEntry; struct _AlsaCard { gchar *alsa_name; gchar *friendly_name; -/* +/* gchar *board; gchar revision, compat_class; gint subsys_vendorid, subsys_id; - + gint cap_dac_res, cap_adc_res; gboolean cap_3d_enh; - + gint curr_mic_gain; gboolean curr_3d_enh, curr_loudness, @@ -57,14 +59,18 @@ struct _AlsaInfo { }; struct _DisplayInfo { - gchar *ogl_vendor, *ogl_renderer, *ogl_version; - gboolean dri; - - gchar *display_name, *vendor, *version; - gchar *extensions; - gchar *monitors; - + /* old stuff */ gint width, height; + + /* new stuff */ + xinfo *xi; /* x info */ + wl_info *wl; /* wayland info */ + + gchar *display_server; + + /* don't free */ + const gchar *vendor; /* X vendor; points to xrr->xi->vendor */ + const gchar *session_type; /* points to wl->xdg_session_type */ }; struct _LoadInfo { @@ -84,10 +90,15 @@ struct _Computer { gchar *date_time; }; +#include "distro_flavors.h" + struct _OperatingSystem { gchar *kernel; + gchar *kcmdline; gchar *libc; - gchar *distrocode, *distro; + gchar *distrocode; + gchar *distroid; + gchar *distro; gchar *hostname; gchar *language; gchar *homedir; @@ -97,10 +108,12 @@ struct _OperatingSystem { gchar *desktop; gchar *username; - + gchar *boots; gchar *entropy_avail; + + const DistroFlavor* distro_flavor; }; struct _MemoryInfo { @@ -108,6 +121,12 @@ struct _MemoryInfo { gfloat ratio; }; +struct _Distro { + gchar *distro; + gchar *codename; + gchar *id; +}; + #define get_str(field_name,ptr) \ if (g_str_has_prefix(tmp[0], field_name)) { \ ptr = g_strdup(tmp[1]); \ @@ -137,16 +156,31 @@ extern gchar *module_list; gchar *computer_get_formatted_loadavg(); gchar *computer_get_formatted_uptime(); gchar *computer_get_alsacards(Computer * computer); -gchar *computer_get_entropy_avail(); +gchar *computer_get_entropy_avail(void); +gchar *computer_get_aslr(void); +gchar *computer_get_dmesg_status(void); +const gchar *computer_get_selinux(void); +gchar *computer_get_lsm(void); OperatingSystem *computer_get_os(void); AlsaInfo *computer_get_alsainfo(void); MemoryInfo *computer_get_memory(void); UptimeInfo *computer_get_uptime(void); DisplayInfo *computer_get_display(void); +void computer_free_display(DisplayInfo *di); void scan_modules_do(void); void scan_filesystems(void); void scan_users_do(void); +/* Memory Usage */ +extern GHashTable *memlabels; +void init_memory_labels(void); +void scan_memory_do(void); +void scan_boots_real(void); +void scan_languages(OperatingSystem *os); +void scan_groups_do(void); + +void kernel_module_icon_init(void); + #endif /* __COMPUTER_H__ */ diff --git a/includes/cpu_util.h b/includes/cpu_util.h index c11d3f69..1adbf491 100644 --- a/includes/cpu_util.h +++ b/includes/cpu_util.h @@ -47,4 +47,6 @@ void cputopo_free(cpu_topology_data *cputd); gchar *cputopo_section_str(cpu_topology_data *cputd); +int cpu_procs_cores_threads_nodes(int *p, int *c, int *t, int *n); + #endif diff --git a/includes/devices.h b/includes/devices.h index e18a3838..e2ab8f7f 100644 --- a/includes/devices.h +++ b/includes/devices.h @@ -48,10 +48,6 @@ gchar *processor_describe_default(GSList * processors); gchar *processor_describe_by_counting_names(GSList * processors); gchar *processor_frequency_desc(GSList *processors); -/* Memory */ -void init_memory_labels(void); -void scan_memory_do(void); - /* Printers */ void init_cups(void); @@ -65,14 +61,19 @@ void scan_pci_do(void); void scan_printers_do(void); /* Sensors */ -void scan_sensors_do(void); -void sensors_init(void); -void sensors_shutdown(void); +#define SENSORS_GROUP_BY_TYPE 1 -#if defined(ARCH_x86) || defined(ARCH_x86_64) -/* SPD */ -void scan_spd_do(void); -#endif /* ARCH_x86 */ +void scan_sensors_do(void); +void sensor_init(void); +void sensor_shutdown(void); +void __scan_dtree(void); +void scan_gpu_do(void); +gboolean __scan_udisks2_devices(void); +void __scan_ide_devices(void); +void __scan_scsi_devices(void); +void __scan_input_devices(void); +void __scan_usb(void); +void __scan_dmi(void); extern gchar *battery_list; extern gchar *input_icons; @@ -83,20 +84,19 @@ extern gchar *pci_list; extern gchar *printer_icons; extern gchar *printer_list; extern gchar *sensors; +extern gchar *sensor_icons; extern gchar *storage_icons; extern gchar *storage_list; extern gchar *usb_list; -extern GHashTable *memlabels; +extern gchar *usb_icons; extern GHashTable *_pci_devices; extern GHashTable *sensor_compute; extern GHashTable *sensor_labels; extern GModule *cups; -#if defined(ARCH_x86) || defined(ARCH_x86_64) -extern gchar *spd_info; extern gchar *dmi_info; -#endif - extern gchar *dtree_info; +extern gchar *gpu_list; +extern gchar *gpu_summary; #endif /* __DEVICES_H__ */ diff --git a/includes/distro_flavors.h b/includes/distro_flavors.h new file mode 100644 index 00000000..c316eeb6 --- /dev/null +++ b/includes/distro_flavors.h @@ -0,0 +1,37 @@ +/* + * HardInfo - Displays System Information + * Copyright (C) 2003-2019 L. A. F. Pereira + * This file Burt P. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 2 or later. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef __DISTRO_FLAVORS_H__ +#define __DISTRO_FLAVORS_H__ + +typedef struct { + const char *name; + const char *icon; + const char *url; +} DistroFlavor; + +typedef struct UbuntuFlavor { + const DistroFlavor base; + const char *package; +} UbuntuFlavor; + +/* items are const; free with g_slist_free() */ +GSList *ubuntu_flavors_scan(void); + +#endif diff --git a/includes/dmi_util.h b/includes/dmi_util.h index aecda739..2fec1a04 100644 --- a/includes/dmi_util.h +++ b/includes/dmi_util.h @@ -1,12 +1,12 @@ /* * HardInfo - Displays System Information - * Copyright (C) 2003-2017 Leandro A. F. Pereira + * Copyright (C) 2003-2017 L. A. F. Pereira * This file * Copyright (C) 2017 Burt P. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, version 2. + * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -21,11 +21,49 @@ #ifndef __DMI_UTIL_H__ #define __DMI_UTIL_H__ -char *dmi_get_str(const char *id_str); +#include + +typedef uint32_t dmi_handle; +typedef uint32_t dmi_type; + +/* -1 = yes, but will be ignored + * 0 = no + * 1 = yes */ +int dmi_str_status(const char *id_str); +char *dmi_get_str(const char *id_str); /* ignore nonsense */ +char *dmi_get_str_abs(const char *id_str); /* include nonsense */ /* if chassis_type is <=0 it will be fetched from DMI. * with_val = true, will return a string like "[3] Desktop" instead of just * "Desktop". */ char *dmi_chassis_type_str(int chassis_type, gboolean with_val); +typedef struct { + dmi_handle id; + uint32_t size; + dmi_type type; + const char *type_str; /* untranslated, use _() for translation */ +} dmi_handle_ext; + +typedef struct { + uint32_t count; + dmi_handle *handles; + dmi_handle_ext *handles_ext; +} dmi_handle_list; + +/* get a list of handles that match a dmi_type */ +dmi_handle_list *dmidecode_handles(const dmi_type *type); +void dmi_handle_list_free(dmi_handle_list *hl); + +/* get a list of handles which have a name, and/or optional value, and/or limit to an optional dmi_type + * dmidecode_match_value("Name", NULL, NULL) : all dmi handles with an item called "Name" + * dmidecode_match_value("Name", "Value", NULL) : all dmi_handles with an item called "Name" that has a value of "Value" + * dmidecode_match_value("Name", "Value", &dt) : all dmi_handles with "Name: Value" that are of type stored in dt */ +dmi_handle_list *dmidecode_match_value(const char *name, const char *value, const dmi_type *type); + +/* get the first value for name, limiting to optional dmi_type and/or optional handle */ +char *dmidecode_match(const char *name, const dmi_type *type, const dmi_handle *handle); + +void dmidecode_cache_free(); + #endif diff --git a/includes/dt_util.h b/includes/dt_util.h index 7ef6808b..bec9af1c 100644 --- a/includes/dt_util.h +++ b/includes/dt_util.h @@ -20,6 +20,7 @@ enum { DTP_STR, /* null-delimited list of strings */ DTP_HEX, /* list of 32-bit values displayed in hex */ DTP_UINT, /* unsigned int list */ + DTP_UINT64, /* unsigned int64 list */ DTP_INTRUPT, /* interrupt-specifier list */ DTP_INTRUPT_EX, /* extended interrupt-specifier list */ DTP_OVR, /* all in /__overrides__ */ @@ -29,6 +30,8 @@ enum { DTP_CLOCKS, /* */ DTP_GPIOS, /* */ DTP_DMAS, /* dma-specifier list */ + DTP_OPP1, /* list of operating points, pairs of (kHz,uV) */ + DTP_PH_REF_OPP2, /* phandle reference to opp-v2 table */ }; /* simplest, no aliases, doesn't require an existing dt. @@ -36,6 +39,7 @@ enum { char* dtr_get_string(const char *p, int decode); typedef uint32_t dt_uint; /* big-endian */ +typedef uint64_t dt_uint64; /* big-endian */ typedef struct _dtr dtr; typedef struct _dtr_obj dtr_obj; @@ -53,18 +57,20 @@ char *dtr_obj_alias(dtr_obj *); char *dtr_obj_symbol(dtr_obj *); char *dtr_obj_path(dtr_obj *); /* device tree path */ char *dtr_obj_full_path(dtr_obj *); /* system path */ +dtr_obj *dtr_get_parent_obj(dtr_obj *); /* find property/node 'name' relative to node * if node is NULL, then from root */ dtr_obj *dtr_get_prop_obj(dtr *, dtr_obj *node, const char *name); char *dtr_get_prop_str(dtr *, dtr_obj *node, const char *name); uint32_t dtr_get_prop_u32(dtr *, dtr_obj *node, const char *name); +uint64_t dtr_get_prop_u64(dtr *, dtr_obj *node, const char *name); /* attempts to render the object as a string */ char* dtr_str(dtr_obj *obj); int dtr_guess_type(dtr_obj *obj); -char *dtr_elem_phref(dtr *, dt_uint e, int show_path); +char *dtr_elem_phref(dtr *, dt_uint e, int show_path, const char *extra); char *dtr_elem_hex(dt_uint e); char *dtr_elem_byte(uint8_t e); char *dtr_elem_uint(dt_uint e); @@ -80,10 +86,16 @@ const char *dtr_find_device_tree_root(void); /* write to the message log */ void dtr_msg(dtr *s, char *fmt, ...); -#define sp_sep(STR) (strlen(STR) ? " " : "") -/* appends an element to a string, adding a space if - * the string is not empty. - * ex: ret = appf(ret, "%s=%s\n", name, value); */ -char *appf(char *src, char *fmt, ...); +/* operating-points v0,v1,v2 */ +typedef struct { + uint32_t version; /* opp version, 0 = clock-frequency only */ + uint32_t phandle; /* v2 only */ + uint32_t khz_min; + uint32_t khz_max; + uint32_t clock_latency_ns; +} dt_opp_range; + +/* free result with g_free() */ +dt_opp_range *dtr_get_opp_range(dtr *, const char *name); #endif diff --git a/includes/e2k/processor-platform.h b/includes/e2k/processor-platform.h new file mode 100644 index 00000000..c6361823 --- /dev/null +++ b/includes/e2k/processor-platform.h @@ -0,0 +1,72 @@ +/* + * HardInfo - Displays System Information + * Copyright (C) 2020 EntityFX and MCST Elbrus Team + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 2. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef __PROCESSOR_PLATFORM_H__ +#define __PROCESSOR_PLATFORM_H__ + +#include "cpu_util.h" + +/* + +E2K /proc/cpuinfo: + + +processor : 0 +vendor_id : E8C-SWTX +cpu family : 4 +model : 7 +model name : E8C +revision : 2 +cpu MHz : 1299.912740 +cache0 : level=1 type=Instruction scope=Private size=128K line_size=256 associativity=4 +cache1 : level=1 type=Data scope=Private size=64K line_size=32 associativity=4 +cache2 : level=2 type=Unified scope=Private size=512K line_size=64 associativity=4 +cache3 : level=3 type=Unified scope=Private size=16384K line_size=64 associativity=16 +bogomips : 2600.68 + +*/ + + +typedef struct _ProcessorCache ProcessorCache; + +struct _ProcessorCache { + gint level; + gint number_of_sets; + gint physical_line_partition; + gint size; + gchar *type; + gint ways_of_associativity; + gint uid; /* uid is unique among caches with the same (type, level) */ + gchar *shared_cpu_list; /* some kernel's don't give a uid, so try shared_cpu_list */ + gint phy_sock; +}; + +//e2k processor structure +struct _Processor { + gint id; + gfloat cpu_mhz; + gchar *model_name; + gchar *vendor_id; + gfloat bogomips; + + gint model, family, revision; + + GSList *cache; +}; + +#endif /* __PROCESSOR_PLATFORM_H__ */ diff --git a/includes/egg-markdown.h b/includes/egg-markdown.h index 4475b9f0..1a2b03f4 100644 --- a/includes/egg-markdown.h +++ b/includes/egg-markdown.h @@ -1,7 +1,7 @@ /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- * * Copyright (C) 2008 Richard Hughes - * Copyright (C) 2009 Leandro Pereira + * Copyright (C) 2009 L.Pereira * * Licensed under the GNU General Public License Version 2 * diff --git a/includes/expr.h b/includes/expr.h index 4bda6b72..18d0cc65 100644 --- a/includes/expr.h +++ b/includes/expr.h @@ -1,10 +1,10 @@ /* * HardInfo - Displays System Information - * Copyright (C) 2003-2007 Leandro A. F. Pereira + * Copyright (C) 2003-2007 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, version 2. + * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of diff --git a/includes/gpu_util.h b/includes/gpu_util.h new file mode 100644 index 00000000..c0089ffb --- /dev/null +++ b/includes/gpu_util.h @@ -0,0 +1,61 @@ +/* + * HardInfo - Displays System Information + * Copyright (C) 2003-2017 L. A. F. Pereira + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 2 or later. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef __GPU_UTIL_H__ +#define __GPU_UTIL_H__ + +#include +#include "pci_util.h" +#include "dt_util.h" + +typedef struct nvgpu { + char *model; + char *bios_version; + char *uuid; +} nvgpu; + +typedef struct gpud { + char *id; /* ours */ + char *nice_name; + char *vendor_str; + char *device_str; + char *location; + uint32_t khz_min, khz_max; /* core */ + uint32_t mem_khz_min, mem_khz_max; /* memory */ + + char *drm_dev; + char *sysfs_drm_path; + pcid *pci_dev; + + char *dt_compat, *dt_status, *dt_name, *dt_path; + const char *dt_vendor, *dt_device; + dt_opp_range *dt_opp; + + nvgpu *nv_info; + /* ... */ + + struct gpud *next; /* this is a linked list */ +} gpud; + +gpud *gpu_get_device_list(); +int gpud_list_count(gpud *); +void gpud_list_free(gpud *); + +void gpud_free(gpud *); + +#endif diff --git a/includes/guibench.h b/includes/guibench.h index d24403bc..16f34218 100644 --- a/includes/guibench.h +++ b/includes/guibench.h @@ -1,10 +1,10 @@ /* * HardInfo - Displays System Information - * Copyright (C) 2003-2009 Leandro A. F. Pereira + * Copyright (C) 2003-2009 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, version 2. + * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of diff --git a/includes/hardinfo.h b/includes/hardinfo.h index 637aa1fd..872a29fc 100644 --- a/includes/hardinfo.h +++ b/includes/hardinfo.h @@ -1,10 +1,10 @@ /* * HardInfo - Displays System Information - * Copyright (C) 2003-2007 Leandro A. F. Pereira + * Copyright (C) 2003-2007 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, version 2. + * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -19,14 +19,19 @@ #ifndef __HARDINFO_H__ #define __HARDINFO_H__ +#include +#include +#include +#include #include #include "config.h" #include "shell.h" #include "vendor.h" #include "gettext.h" #include "info.h" +#include "format_early.h" -#define HARDINFO_COPYRIGHT_LATEST_YEAR 2017 +#define HARDINFO2_COPYRIGHT_LATEST_YEAR 2024 #ifndef LOCALEDIR #define LOCALEDIR "/usr/share/locale" @@ -36,6 +41,7 @@ typedef enum { MODULE_FLAG_NONE = 0, MODULE_FLAG_NO_REMOTE = 1<<0, MODULE_FLAG_HAS_HELP = 1<<1, + MODULE_FLAG_HIDE = 1<<2, } ModuleEntryFlags; typedef struct _ModuleEntry ModuleEntry; @@ -45,16 +51,29 @@ typedef struct _ProgramParameters ProgramParameters; struct _ProgramParameters { gboolean create_report; + gboolean force_all_details; /* for create_report, include any "moreinfo" that exists for any item */ gboolean show_version; gboolean gui_running; gboolean list_modules; gboolean autoload_deps; - gboolean run_xmlrpc_server; + gboolean skip_benchmarks; + gboolean quiet; + + /* + * OK to use the common parts of HTML(4.0) and Pango Markup + * in the value part of a key/value. + * Including the (b,big,i,s,sub,sup,small,tt,u) tags. + * https://developer.gnome.org/pango/stable/PangoMarkupFormat.html + */ + gboolean markup_ok; + int fmt_opts; gint report_format; + gint max_bench_results; gchar **use_modules; gchar *run_benchmark; + gchar *bench_user_note; gchar *result_format; gchar *path_lib; gchar *path_data; @@ -84,11 +103,11 @@ struct _ModuleAbout { }; /* String utility functions */ -inline void remove_quotes(gchar *str); -inline char *strend(gchar *str, gchar chr); -inline void remove_linefeed(gchar *str); -gchar *strreplacechr(gchar *string, gchar *replace, gchar new_char); -gchar *strreplace(gchar *string, gchar *replace, gchar *replacement); +void remove_quotes(gchar *str); +char *strend(gchar *str, gchar chr); +void remove_linefeed(gchar *str); +gchar *strreplacechr(gchar *string, gchar *replace, gchar new_char); +gchar *strreplace(gchar *string, gchar *replace, gchar *replacement); /* Widget utility functions */ void widget_set_cursor(GtkWidget *widget, GdkCursorType cursor_type); @@ -102,25 +121,24 @@ gchar *file_chooser_build_filename(GtkWidget *chooser, gchar *extension); gpointer file_types_get_data_by_name(FileTypes *file_types, gchar *name); /* Misc utility functions */ -#if RELEASE == 1 -gpointer idle_free(gpointer ptr); -#else -gpointer __idle_free(gpointer ptr, gchar *f, gint l); -#define idle_free(p) __idle_free(p, __FILE__, __LINE__) -#endif /* RELEASE == 1 */ +#if !(RELEASE == 1) +#define DEBUG_AUTO_FREE 2 +#endif +#include "auto_free.h" +#define idle_free(ptr) auto_free(ptr) gchar *find_program(gchar *program_name); -inline gchar *size_human_readable(gfloat size); +gchar *size_human_readable(gfloat size); void nonblock_sleep(guint msec); -void open_url(gchar *url); GSList *modules_get_list(void); GSList *modules_load_selected(void); GSList *modules_load_all(void); void module_unload_all(void); -ModuleAbout *module_get_about(ShellModule *module); +const ModuleAbout *module_get_about(ShellModule *module); gchar *seconds_to_string(unsigned int seconds); -gchar *h_strdup_cprintf(const gchar *format, gchar *source, ...); +gchar *h_strdup_cprintf(const gchar *format, gchar *source, ...) + __attribute__((format(gnu_printf, 1, 3))); gchar *h_strconcat(gchar *string1, ...); void h_hash_table_remove_all (GHashTable *hash_table); @@ -146,9 +164,10 @@ gchar *module_call_method(gchar *method); gchar *module_call_method_param(gchar * method, gchar * parameter); /* Sysfs stuff */ -gfloat h_sysfs_read_float(gchar *endpoint, gchar *entry); -gint h_sysfs_read_int(gchar *endpoint, gchar *entry); -gchar *h_sysfs_read_string(gchar *endpoint, gchar *entry); +gfloat h_sysfs_read_float(const gchar *endpoint, const gchar *entry); +gint h_sysfs_read_int(const gchar *endpoint, const gchar *entry); +gint h_sysfs_read_hex(const gchar *endpoint, const gchar *entry); +gchar *h_sysfs_read_string(const gchar *endpoint, const gchar *entry); #define SCAN_START() static gboolean scanned = FALSE; if (reload) scanned = FALSE; if (scanned) return; #define SCAN_END() scanned = TRUE; @@ -171,6 +190,11 @@ gchar *moreinfo_lookup(gchar *key); gboolean g_strv_contains(const gchar * const * strv, const gchar *str); #endif +/* in gg_key_file_parse_string_as_value.c */ +gchar * +gg_key_file_parse_string_as_value (const gchar *string, const gchar list_separator); + +gchar *hardinfo_clean_grpname(const gchar *v, int replacing); /* Hardinfo labels that have # are truncated and/or hidden. * Labels can't have $ because that is the delimiter in * moreinfo. @@ -179,4 +203,32 @@ gchar *hardinfo_clean_label(const gchar *v, int replacing); /* hardinfo uses the values as {ht,x}ml, apparently */ gchar *hardinfo_clean_value(const gchar *v, int replacing); +/* Same as hardinfo_spawn_command_line_sync(), but calls shell_status_pulse() + * before. */ +gboolean hardinfo_spawn_command_line_sync(const gchar *command_line, + gchar **standard_output, + gchar **standard_error, + gint *exit_status, + GError **error); + +/* a marker in text to point out problems, using markup where possible */ +const char *problem_marker(); + +/* a version of g_strescape() that allows escaping extra characters. + * use with g_strcompress() as normal. */ +gchar * +gg_strescape (const gchar *source, + const gchar *exceptions, + const gchar *extra); + +/* hinote helpers */ +#define note_max_len 512 +#define note_printf(note_buff, fmt, ...) \ + snprintf((note_buff) + strlen(note_buff), note_max_len - strlen(note_buff) - 1, \ + fmt, ##__VA_ARGS__) +#define note_print(note_buff, str) note_printf((note_buff), "%s", str) +gboolean note_cond_bullet(gboolean cond, gchar *note_buff, const gchar *desc_str); +gboolean note_require_tool(const gchar *tool, gchar *note_buff, const gchar *desc_str); +int cpu_procs_cores_threads(int *p, int *c, int *t); + #endif /* __HARDINFO_H__ */ diff --git a/includes/help-viewer.h b/includes/help-viewer.h index 688ff325..85c78edf 100644 --- a/includes/help-viewer.h +++ b/includes/help-viewer.h @@ -1,10 +1,10 @@ /* * HelpViewer - Simple Help file browser - * Copyright (C) 2009 Leandro A. F. Pereira + * Copyright (C) 2009 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, version 2. + * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of diff --git a/includes/ia64/processor-platform.h b/includes/ia64/processor-platform.h index 5d525639..d118fe86 100644 --- a/includes/ia64/processor-platform.h +++ b/includes/ia64/processor-platform.h @@ -1,10 +1,10 @@ /* * HardInfo - Displays System Information - * Copyright (C) 2003-2006 Leandro A. F. Pereira + * Copyright (C) 2003-2006 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, version 2. + * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of diff --git a/includes/iconcache.h b/includes/iconcache.h index 97f59a82..b71924c3 100644 --- a/includes/iconcache.h +++ b/includes/iconcache.h @@ -1,10 +1,10 @@ /* * HardInfo - Displays System Information - * Copyright (C) 2003-2007 Leandro A. F. Pereira + * Copyright (C) 2003-2007 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, version 2. + * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of diff --git a/includes/info.h b/includes/info.h index 253c06e0..77894518 100644 --- a/includes/info.h +++ b/includes/info.h @@ -1,10 +1,10 @@ /* * HardInfo - Displays System Information - * Copyright (C) 2017 Leandro A. F. Pereira + * Copyright (C) 2017 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, version 2. + * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -18,8 +18,20 @@ #pragma once +#include #include +enum InfoGroupSort { + INFO_GROUP_SORT_NONE, + INFO_GROUP_SORT_NAME_ASCENDING, + INFO_GROUP_SORT_NAME_DESCENDING, + INFO_GROUP_SORT_VALUE_ASCENDING, + INFO_GROUP_SORT_VALUE_DESCENDING, + INFO_GROUP_SORT_TAG_ASCENDING, + INFO_GROUP_SORT_TAG_DESCENDING, + INFO_GROUP_SORT_MAX, +}; + struct Info { GArray *groups; @@ -36,32 +48,60 @@ struct Info { struct InfoGroup { const gchar *name; + enum InfoGroupSort sort; GArray *fields; - /* scaffolding fields */ + /* scaffolding fields */ const gchar *computed; }; struct InfoField { const gchar *name; - gchar *value; + const gchar *value; + const gchar *icon; int update_interval; + gboolean highlight; /* select in GUI, highlight in report (flag:*) */ + gboolean report_details; /* show moreinfo() in report (flag:!) */ + gboolean value_has_vendor; /* (flag:^) */ + gboolean label_is_escaped; /* if the label will need g_strcompress() before display use */ + gboolean free_name_on_flatten; gboolean free_value_on_flatten; + + /* scaffolding fields */ + gchar *tag; /* moreinfo() lookup tag */ }; struct Info *info_new(void); -void info_add_group(struct Info *info, const gchar *group_name, ...); +void info_remove_group(struct Info *info, guint index); +struct InfoGroup *info_add_group(struct Info *info, const gchar *group_name, ...); +void info_group_strip_extra(struct InfoGroup *group); + void info_add_computed_group(struct Info *info, const gchar *name, const gchar *value); +void info_add_computed_group_wo_extra(struct Info *info, const gchar *name, const gchar *value); + +void info_group_add_field(struct InfoGroup *group, struct InfoField field); +void info_group_add_fields(struct InfoGroup *group, ...); +void info_group_add_fieldsv(struct InfoGroup *group, va_list ap); -struct InfoField info_field(const gchar *name, gchar *value); struct InfoField info_field_printf(const gchar *name, const gchar *format, ...) __attribute__((format(printf, 2, 3))); -struct InfoField info_field_update(const gchar *name, int update_interval); -struct InfoField info_field_last(void); + +#define info_field_full(...) \ + (struct InfoField) { __VA_ARGS__ } + +#define info_field(n, v, ...) \ + info_field_full(.name = (n), .value = (v), __VA_ARGS__) + +#define info_field_update(n, ui, ...) \ + info_field_full(.name = (n), .value = "...", .update_interval = (ui), \ + __VA_ARGS__) + +#define info_field_last() \ + (struct InfoField) {} void info_set_column_title(struct Info *info, const gchar *column, const gchar *title); void info_set_column_headers_visible(struct Info *info, gboolean setting); @@ -71,3 +111,4 @@ void info_set_view_type(struct Info *info, ShellViewType setting); void info_set_reload_interval(struct Info *info, int setting); gchar *info_flatten(struct Info *info); +struct Info *info_unflatten(const gchar *str); diff --git a/includes/loadgraph.h b/includes/loadgraph.h index d79ca39b..d176e816 100644 --- a/includes/loadgraph.h +++ b/includes/loadgraph.h @@ -1,6 +1,6 @@ /* * Simple Load Graph - * Copyright (C) 2006 Leandro A. F. Pereira + * Copyright (C) 2006 L. A. F. Pereira * * The Simple Load Graph is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -47,6 +47,9 @@ void load_graph_clear(LoadGraph *lg); void load_graph_set_data_suffix(LoadGraph *lg, gchar *suffix); gchar *load_graph_get_data_suffix(LoadGraph *lg); +void load_graph_set_title(LoadGraph *lg, const gchar *title); +const gchar *load_graph_get_title(LoadGraph *lg); + gint load_graph_get_height(LoadGraph *lg); #endif /* __LOADGRAPH_H__ */ diff --git a/includes/loongarch64/processor-platform.h b/includes/loongarch64/processor-platform.h new file mode 100644 index 00000000..43ba0a26 --- /dev/null +++ b/includes/loongarch64/processor-platform.h @@ -0,0 +1,31 @@ +/* + * HardInfo - Displays System Information + * Copyright (C) 2003-2006 L. A. F. Pereira + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 2. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef __PROCESSOR_PLATFORM_H__ +#define __PROCESSOR_PLATFORM_H__ + +struct _Processor { + gchar *vendor_id; + gchar *family; + gchar *model_name; + gint revision; + gfloat cpu_mhz, bogomips; + gchar *features; +}; + +#endif /* __PROCESSOR_PLATFORM_H__ */ diff --git a/includes/m68k/processor-platform.h b/includes/m68k/processor-platform.h index 9aea1dfe..5e38bc11 100644 --- a/includes/m68k/processor-platform.h +++ b/includes/m68k/processor-platform.h @@ -1,10 +1,10 @@ /* * HardInfo - Displays System Information - * Copyright (C) 2003-2006 Leandro A. F. Pereira + * Copyright (C) 2003-2006 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, version 2. + * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of diff --git a/includes/markdown-text-view.h b/includes/markdown-text-view.h index 648ea39c..11d184a2 100644 --- a/includes/markdown-text-view.h +++ b/includes/markdown-text-view.h @@ -2,7 +2,7 @@ * Markdown Text View * GtkTextView subclass that supports Markdown syntax * - * Copyright (C) 2009 Leandro Pereira + * Copyright (C) 2009 L.Pereira * Portions Copyright (C) 2007-2008 Richard Hughes * Portions Copyright (C) GTK+ Team (based on hypertext textview demo) * diff --git a/includes/menu.h b/includes/menu.h index 3c804008..d5e8aeeb 100644 --- a/includes/menu.h +++ b/includes/menu.h @@ -1,10 +1,10 @@ /* * HardInfo - Displays System Information - * Copyright (C) 2003-2007 Leandro A. F. Pereira + * Copyright (C) 2003-2007 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, version 2. + * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of diff --git a/includes/mips/processor-platform.h b/includes/mips/processor-platform.h index 9bdae18b..394ba99e 100644 --- a/includes/mips/processor-platform.h +++ b/includes/mips/processor-platform.h @@ -1,10 +1,10 @@ /* * HardInfo - Displays System Information - * Copyright (C) 2003-2006 Leandro A. F. Pereira + * Copyright (C) 2003-2006 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, version 2. + * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of diff --git a/includes/network.h b/includes/network.h index 1e71126e..13d54872 100644 --- a/includes/network.h +++ b/includes/network.h @@ -9,5 +9,7 @@ extern gchar *network_interfaces; extern gchar *network_icons; void scan_net_interfaces(void); +void scan_samba(void); +void scan_nfs_shared_directories(void); -#endif /* __NETWORK_H__ */ \ No newline at end of file +#endif /* __NETWORK_H__ */ diff --git a/includes/parisc/processor-platform.h b/includes/parisc/processor-platform.h index c55c69ec..b7485bda 100644 --- a/includes/parisc/processor-platform.h +++ b/includes/parisc/processor-platform.h @@ -1,10 +1,10 @@ /* * HardInfo - Displays System Information - * Copyright (C) 2003-2006 Leandro A. F. Pereira + * Copyright (C) 2003-2006 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, version 2. + * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of diff --git a/includes/pci_util.h b/includes/pci_util.h new file mode 100644 index 00000000..f2d1d605 --- /dev/null +++ b/includes/pci_util.h @@ -0,0 +1,78 @@ +/* + * HardInfo - Displays System Information + * Copyright (C) 2003-2017 L. A. F. Pereira + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 2 or later. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef __PCI_UTIL_H__ +#define __PCI_UTIL_H__ + +#include + +#define SYSFS_PCI_ROOT "/sys/bus/pci/devices" + +char *pci_address_str(uint32_t dom, uint32_t bus, uint32_t dev, uint32_t func); + +typedef struct pcid { + uint32_t domain; + uint32_t bus; + uint32_t device; + uint32_t function; + uint32_t class; + uint32_t vendor_id; + uint32_t device_id; + uint32_t sub_vendor_id; + uint32_t sub_device_id; + uint32_t revision; + char *slot_str; + char *class_str; + char *vendor_id_str; + char *device_id_str; + char *sub_vendor_id_str; + char *sub_device_id_str; + + char *driver; /* Kernel driver in use */ + char *driver_list; /* Kernel modules */ + + float pcie_speed_max; /* GT/s */ + float pcie_speed_curr; /* GT/s */ + uint32_t pcie_width_max; + uint32_t pcie_width_curr; + + /* ... */ + +} pcid; + +pcid *pci_get_device(uint32_t dom, uint32_t bus, uint32_t dev, uint32_t func); +pcid *pci_get_device_str(const char *addy); +#define pcid_new() g_new0(pcid, 1) +gint pcid_cmp_by_addy(gconstpointer a, gconstpointer b); +void pcid_free(pcid *); + +typedef GSList* pcid_list; +/* examples: + * to get all pci devices: + * pcid_list list = pci_get_device_list(0, 0); + * to get all display controllers: + * pcid_list list = pci_get_device_list(0x300, 0x3ff); + */ +pcid_list pci_get_device_list(uint32_t class_min, uint32_t class_max); +#define pcid_list_count(l) g_slist_length(l); +#define pcid_list_free(l) g_slist_free_full(l, (GDestroyNotify)pcid_free) + +const gchar *find_pci_ids_file(); +char *pci_lookup_ids_vendor_str(uint32_t id); + +#endif diff --git a/includes/ppc/processor-platform.h b/includes/ppc/processor-platform.h index d3d1a568..df1fcbaa 100644 --- a/includes/ppc/processor-platform.h +++ b/includes/ppc/processor-platform.h @@ -1,10 +1,10 @@ /* * HardInfo - Displays System Information - * Copyright (C) 2003-2006 Leandro A. F. Pereira + * Copyright (C) 2003-2006 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, version 2. + * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of diff --git a/includes/remote.h b/includes/remote.h deleted file mode 100644 index 6a988a3b..00000000 --- a/includes/remote.h +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Remote Client - * HardInfo - Displays System Information - * Copyright (C) 2003-2009 Leandro A. F. Pereira - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, version 2. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef __REMOTE_H__ -#define __REMOTE_H__ - -void remote_disconnect_all(gboolean ssh); -gboolean remote_connect_host(gchar * hostname); -void connect_dialog_show(GtkWidget * parent); -void host_manager_show(GtkWidget * parent); - -#endif /* __REMOTE_H__ */ - diff --git a/includes/report.h b/includes/report.h index 782621cb..47b510c1 100644 --- a/includes/report.h +++ b/includes/report.h @@ -1,10 +1,10 @@ /* * HardInfo - Displays System Information - * Copyright (C) 2003-2007 Leandro A. F. Pereira + * Copyright (C) 2003-2007 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, version 2. + * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -15,7 +15,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ - + #ifndef __REPORT_H__ #define __REPORT_H__ #include @@ -24,6 +24,7 @@ typedef enum { REPORT_FORMAT_HTML, REPORT_FORMAT_TEXT, + REPORT_FORMAT_SHELL, N_REPORT_FORMAT } ReportFormat; @@ -41,22 +42,29 @@ typedef struct _ReportContext ReportContext; struct _ReportContext { ShellModuleEntry *entry; gchar *output; - + void (*header) (ReportContext *ctx); void (*footer) (ReportContext *ctx); void (*title) (ReportContext *ctx, gchar *text); void (*subtitle) (ReportContext *ctx, gchar *text); void (*subsubtitle) (ReportContext *ctx, gchar *text); - void (*keyvalue) (ReportContext *ctx, gchar *key, gchar *value); - + void (*keyvalue) (ReportContext *ctx, gchar *key, gchar *value, gsize longest_key); + + void (*details_start) (ReportContext *ctx, gchar *key, gchar *value, gsize longest_key); + void (*details_section) (ReportContext *ctx, gchar *name); + void (*details_keyvalue) (ReportContext *ctx, gchar *key, gchar *value, gsize longest_key); + void (*details_end) (ReportContext *ctx); + ReportFormat format; - - gboolean is_image_enabled; + gboolean first_table; + gboolean in_details; gboolean show_column_headers; - guint columns; + guint columns, parent_columns; GHashTable *column_titles; + GHashTable *icon_refs; + GHashTable *icon_data; }; struct _ReportDialog { @@ -67,7 +75,7 @@ struct _ReportDialog { GtkWidget *btn_sel_all; GtkWidget *btn_sel_none; GtkWidget *treeview; - + GtkTreeModel *model; }; @@ -75,14 +83,16 @@ void report_dialog_show(); ReportContext *report_context_html_new(); ReportContext *report_context_text_new(); +ReportContext *report_context_shell_new(); void report_header (ReportContext *ctx); void report_footer (ReportContext *ctx); void report_title (ReportContext *ctx, gchar *text); void report_subtitle (ReportContext *ctx, gchar *text); void report_subsubtitle (ReportContext *ctx, gchar *text); -void report_key_value (ReportContext *ctx, gchar *key, gchar *value); +void report_key_value (ReportContext *ctx, gchar *key, gchar *value, gsize longest_key); void report_table (ReportContext *ctx, gchar *text); +void report_details (ReportContext *ctx, gchar *key, gchar *value, gchar *details, gsize longest_key); void report_create_from_module_list(ReportContext *ctx, GSList *modules); gchar *report_create_from_module_list_format(GSList *modules, ReportFormat format); diff --git a/includes/riscv/processor-platform.h b/includes/riscv/processor-platform.h index 07cbf86e..b2c1c69c 100644 --- a/includes/riscv/processor-platform.h +++ b/includes/riscv/processor-platform.h @@ -1,10 +1,10 @@ /* * HardInfo - Displays System Information - * Copyright (C) 2003-2006 Leandro A. F. Pereira + * Copyright (C) 2003-2006 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, version 2. + * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of diff --git a/includes/s390/processor-platform.h b/includes/s390/processor-platform.h index 9164a7f2..2edee105 100644 --- a/includes/s390/processor-platform.h +++ b/includes/s390/processor-platform.h @@ -1,10 +1,10 @@ /* * HardInfo - Displays System Information - * Copyright (C) 2003-2006 Leandro A. F. Pereira + * Copyright (C) 2003-2006 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, version 2. + * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of diff --git a/includes/sh/processor-platform.h b/includes/sh/processor-platform.h index 26b58ec5..e8ba7686 100644 --- a/includes/sh/processor-platform.h +++ b/includes/sh/processor-platform.h @@ -1,10 +1,10 @@ /* * HardInfo - Displays System Information - * Copyright (C) 2003-2006 Leandro A. F. Pereira + * Copyright (C) 2003-2006 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, version 2. + * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of diff --git a/includes/sha1.h b/includes/sha1.h index 573ff8ac..8b5c0b2f 100644 --- a/includes/sha1.h +++ b/includes/sha1.h @@ -17,7 +17,7 @@ typedef struct { - guint32 state[5]; + guint32 state[20]; guint32 count[2]; guchar buffer[64]; } SHA1_CTX; diff --git a/includes/shell.h b/includes/shell.h index 2eb9e6d2..ab39106c 100644 --- a/includes/shell.h +++ b/includes/shell.h @@ -1,10 +1,10 @@ /* * HardInfo - Displays System Information - * Copyright (C) 2003-2007 Leandro A. F. Pereira + * Copyright (C) 2003-2007 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, version 2. + * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -27,7 +27,7 @@ typedef struct _Shell Shell; typedef struct _ShellTree ShellTree; typedef struct _ShellInfoTree ShellInfoTree; typedef struct _ShellNote ShellNote; -typedef struct _ShellSummary ShellSummary; +typedef struct _DetailView DetailView; typedef struct _ShellModule ShellModule; typedef struct _ShellModuleMethod ShellModuleMethod; @@ -52,7 +52,7 @@ typedef enum { SHELL_VIEW_LOAD_GRAPH, SHELL_VIEW_PROGRESS, SHELL_VIEW_PROGRESS_DUAL, - SHELL_VIEW_SUMMARY, + SHELL_VIEW_DETAIL, SHELL_VIEW_N_VIEWS } ShellViewType; @@ -81,14 +81,16 @@ struct _Shell { GtkWidget *status, *progress; GtkWidget *remote_label; GtkWidget *notebook; - GtkWidget *hpaned, *vpaned; + GtkWidget *hbox, *vpaned; + + GtkWindow *transient_dialog; ShellTree *tree; - ShellInfoTree *info, *moreinfo; + ShellInfoTree *info_tree; ShellModule *selected_module; ShellModuleEntry *selected; ShellNote *note; - ShellSummary *summary; + DetailView *detail_view; LoadGraph *loadgraph; GtkActionGroup *action_group; @@ -97,20 +99,18 @@ struct _Shell { ShellViewType view_type; gboolean normalize_percentage; - + gint _pulses; ShellOrderType _order_type; - + GKeyFile *hosts; HelpViewer *help_viewer; }; -struct _ShellSummary { - GtkWidget *header; +struct _DetailView { GtkWidget *scroll; GtkWidget *view; - - GSList *items; + GtkWidget *detail_box; }; struct _ShellTree { @@ -127,7 +127,7 @@ struct _ShellInfoTree { GtkWidget *view; GtkTreeModel *model; GtkTreeSelection *selection; - + GtkTreeViewColumn *col_progress, *col_value, *col_extra1, *col_extra2, *col_textvalue; }; @@ -141,10 +141,10 @@ struct _ShellModule { GdkPixbuf *icon; GModule *dll; - gpointer (*aboutfunc) (); + gconstpointer (*aboutfunc)(void); gchar *(*summaryfunc) (); void (*deinit) (); - + guchar weight; GSList *entries; @@ -162,7 +162,7 @@ struct _ShellModuleEntry { gboolean selected; gint number; guint32 flags; - + gchar *(*func) (); void (*scan_func) (); @@ -196,6 +196,8 @@ void shell_action_set_property(const gchar *action_name, const gchar *property, gboolean setting); +void shell_set_transient_dialog(GtkWindow *dialog); + void shell_set_side_pane_visible(gboolean setting); void shell_set_note_from_entry(ShellModuleEntry *entry); void shell_ui_manager_set_visible(const gchar *path, @@ -220,6 +222,39 @@ void shell_update_remote_menu(void); void shell_set_remote_label(Shell *shell, gchar *label); +/* decode special information in keys + * + * key syntax: + * [$[][]$][#[]] + * flags: + * [[!][*][^]] + * ! = show details (moreinfo) in reports + * * = highlight/select this row + * ^ = value is/has a vendor string + * @ = label is escaped with key_label_escape() + */ +gboolean key_is_flagged(const gchar *key); /* has $[][]$ at the start of the key */ +gboolean key_is_highlighted(const gchar *key); /* flag '*' = select/highlight */ +gboolean key_wants_details(const gchar *key); /* flag '!' = report should include the "moreinfo" */ +gboolean key_value_has_vendor_string(const gchar *key); /* flag '^' = try and match the value to a vendor */ +#define key_label_escape(LBL) (gg_strescape(LBL, NULL, "=$#")) +gboolean key_label_is_escaped(const gchar *key); /* flag '@' = the label part is key_label_escape()-d and + * needs to be g_strcompress()-ed before use. + * key_get_components() will do this automatically for label. */ +gchar *key_mi_tag(const gchar *key); /* moreinfo lookup tag */ +const gchar *key_get_name(const gchar *key); /* get the key's name, flagged or not */ +/* + * example for key = "$*!Foo$Bar#7": + * flags = "$*!^Foo$" // key_is/wants_*() still works on flags + * tag = "Foo" // the moreinfo/icon tag + * name = "Bar#7" // the full unique name + * label = "Bar" // the label displayed + * dis = "7" + */ +void key_get_components(const gchar *key, + gchar **flags, gchar **tag, gchar **name, gchar **label, gchar **dis, + gboolean null_empty); + #endif /* __SHELL_H__ */ diff --git a/includes/socket.h b/includes/socket.h index 7c44837e..8dd4d439 100644 --- a/includes/socket.h +++ b/includes/socket.h @@ -1,10 +1,10 @@ /* * HardInfo - Displays System Information - * Copyright (C) 2003-2007 Leandro A. F. Pereira + * Copyright (C) 2003-2007 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, version 2. + * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of diff --git a/includes/sparc/processor-platform.h b/includes/sparc/processor-platform.h index 31748a5b..c0e6f5cc 100644 --- a/includes/sparc/processor-platform.h +++ b/includes/sparc/processor-platform.h @@ -1,10 +1,10 @@ /* * HardInfo - Displays System Information - * Copyright (C) 2003-2006 Leandro A. F. Pereira + * Copyright (C) 2003-2006 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, version 2. + * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of diff --git a/includes/ssh-conn.h b/includes/ssh-conn.h deleted file mode 100644 index b1b0a9ca..00000000 --- a/includes/ssh-conn.h +++ /dev/null @@ -1,66 +0,0 @@ -/* - Remote Client - HardInfo - Displays System Information - Copyright (C) 2003-2009 Leandro A. F. Pereira - - Based on ssh-method.c from GnomeVFS - Copyright (C) 1999 Free Software Foundation - Original author: Ian McKellar - - The Gnome Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. - - The Gnome Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with the Gnome Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. -*/ -#ifndef __SSH_CONN_H__ -#define __SSH_CONN_H__ - -#include "config.h" -#ifdef HAS_LIBSOUP -#include - -typedef struct _SSHConn SSHConn; - -typedef enum { - SSH_CONN_OK, - SSH_CONN_NO_URI, - SSH_CONN_UNKNOWN_PROTOCOL, - SSH_CONN_UNKNOWN_ERROR, - SSH_CONN_CANNOT_SPAWN_SSH, - SSH_CONN_BAD_PARAMS, - SSH_CONN_PERMISSION_DENIED, - SSH_CONN_HOST_KEY_CHECK_FAIL, - SSH_CONN_REFUSED, - SSH_CONN_INVALID_USER_PASS, -} SSHConnResponse; - -struct _SSHConn { - SoupURI *uri; - int fd_read, fd_write, fd_error; - GPid pid; - gchar *askpass_path; - - gint exit_status; -}; - -SSHConnResponse ssh_new(SoupURI * uri, - SSHConn ** conn_return, gchar * command); -void ssh_close(SSHConn * conn); - -int ssh_write(SSHConn * conn, - gconstpointer buffer, gint num_bytes, gint * bytes_written); -int ssh_read(gint fd, gpointer buffer, gint num_bytes, gint * bytes_read); - -const char *ssh_conn_errors[10]; -#endif /* HAS_LIBSOUP */ -#endif /* __SSH_CONN_H__ */ diff --git a/includes/stock.h b/includes/stock.h index 706e5c51..d3efffdb 100644 --- a/includes/stock.h +++ b/includes/stock.h @@ -1,10 +1,10 @@ /* * HardInfo - Displays System Information - * Copyright (C) 2003-2007 Leandro A. F. Pereira + * Copyright (C) 2003-2007 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, version 2. + * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -19,6 +19,8 @@ #ifndef __STOCK_H__ #define __STOCK_H__ +#define HI_STOCK_CLIPBOARD "hi-stock-clipboard" +#define HI_STOCK_REFRESH "hi-stock-refresh" #define HI_STOCK_REPORT "hi-stock-report" #define HI_STOCK_INTERNET "hi-stock-internet" #define HI_STOCK_MODULE "hi-stock-module" diff --git a/includes/storage_util.h b/includes/storage_util.h new file mode 100644 index 00000000..7774e71f --- /dev/null +++ b/includes/storage_util.h @@ -0,0 +1,22 @@ +#include "vendor.h" +#include "pci_util.h" + +// udisks2 drive info extended +typedef struct u2driveext { + udiskd *d; + pcid *nvme_controller; + struct{ + gchar *oui; + gchar *vendor; + } wwid_oui; + vendor_list vendors; +} u2driveext; + + +GSList *get_udisks2_drives_ext(); + +u2driveext* u2drive_ext(udiskd * udisks_drive_data); +void u2driveext_free(u2driveext *u); + +void udisks2_shutdown(void); +void storage_shutdown(void); diff --git a/includes/syncmanager.h b/includes/syncmanager.h index ae0ed267..3b886b0f 100644 --- a/includes/syncmanager.h +++ b/includes/syncmanager.h @@ -1,10 +1,10 @@ /* * HardInfo - Displays System Information - * Copyright (C) 2003-2007 Leandro A. F. Pereira + * Copyright (C) 2003-2007 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, version 2. + * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -21,17 +21,15 @@ #include -typedef struct _SyncEntry SyncEntry; +typedef struct _SyncEntry SyncEntry; struct _SyncEntry { - gchar *name; - gchar *fancy_name; - gchar *save_to; - - gchar *(*get_data)(void); - void (*callback)(SyncEntry *entry, const gchar *response); - - gboolean selected; + const gchar *name; + const gchar *file_name; + + gchar *(*generate_contents_for_upload)(gsize *size); + + gboolean selected; }; void sync_manager_add_entry(SyncEntry *entry); @@ -39,4 +37,6 @@ void sync_manager_clear_entries(void); void sync_manager_show(GtkWidget *parent); gint sync_manager_count_entries(void); -#endif /* __SYNCMANAGER_H__ */ +void sync_manager_update_on_startup(void); + +#endif /* __SYNCMANAGER_H__ */ diff --git a/includes/udisks2_util.h b/includes/udisks2_util.h new file mode 100644 index 00000000..9b26f6dd --- /dev/null +++ b/includes/udisks2_util.h @@ -0,0 +1,69 @@ +#include "vendor.h" + +typedef struct udiskp { + gchar *block; + gchar *type; + gchar *version; + gchar *label; + guint64 size; + struct udiskp* next; +} udiskp; + +enum{ + UDSK_INTPVAL_SKIP = 0, + UDSK_INTPVAL_DIMENSIONLESS = 1, + UDSK_INTPVAL_MILISECONDS = 2, + UDSK_INTPVAL_HOURS = 3, + UDSK_INTPVAL_SECTORS = 4, + UDSK_INTPVAL_CELSIUS = 5, +}; + +typedef struct udisksa { + guint8 id; + gchar *identifier; + gint value; + gint worst; + gint threshold; + gint64 interpreted; + guint8 interpreted_unit; // enum + struct udisksa* next; +} udisksa; + +typedef struct udiskd { + gchar *model; + gchar *vendor; + gchar *revision; + gchar *block_dev; + gchar *serial; + gchar *wwid; + gchar *connection_bus; + gchar *partition_table; + udiskp *partitions; + gboolean ejectable; + gboolean removable; + gint32 rotation_rate; + guint64 size; + gchar *media; + gchar **media_compatibility; + gboolean pm_supported; + gboolean aam_supported; + gboolean apm_supported; + gboolean smart_supported; + gboolean smart_enabled; + gboolean smart_failing; + guint64 smart_poweron; + gint64 smart_bad_sectors; + gint32 smart_temperature; + udisksa *smart_attributes; +} udiskd; + +typedef struct udiskt { + gchar *drive; + gint32 temperature; +} udiskt; +void udisks2_init(); +void udisks2_shutdown(); +GSList *get_udisks2_temps(); +GSList *get_udisks2_all_drives_info(); +void udiskt_free(udiskt *u); +void udiskd_free(udiskd *u); diff --git a/includes/uidefs.h b/includes/uidefs.h index 70d2de17..c3042492 100644 --- a/includes/uidefs.h +++ b/includes/uidefs.h @@ -5,55 +5,62 @@ #if RELEASE #define DEBUG_TOOLBAR_ITEMS -#else /* !RELEASE */ -#define DEBUG_TOOLBAR_ITEMS "" \ - "" -#endif /* !RELEASE */ +#else /* !RELEASE */ +#define DEBUG_TOOLBAR_ITEMS \ + "" \ + "" +#endif /* !RELEASE */ -#ifdef HAS_LIBSOUP -#define SYNC_MANAGER_ITEMS " " \ -" " +#define SYNC_MANAGER_MENU_ITEMS \ + "" \ + "" \ + "" +#define SYNC_MANAGER_TOOL_ITEMS \ + "" -#else /* !HAS_LIBSOUP */ -#define SYNC_MANAGER_ITEMS -#endif /* !HAS_LIBSOUP */ +char *uidefs_str = + "" + " " + " " + " " + " " + SYNC_MANAGER_MENU_ITEMS \ + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + DEBUG_TOOLBAR_ITEMS \ + SYNC_MANAGER_TOOL_ITEMS \ + " " + " " + ""; -char *uidefs_str = "" \ -" " \ -" " \ -" " \ -" " \ -SYNC_MANAGER_ITEMS -" " \ -" " \ -" " \ -" " \ -" " \ -" " \ -" "\ -" " \ -" " \ -" " \ -" " \ -" " \ -" " \ -" " \ -" " \ -" " \ -" " \ -" " \ -" " \ -" " \ -" " \ -" " \ -" " \ -" " \ -" " \ -" " \ -" " \ -DEBUG_TOOLBAR_ITEMS \ -" " \ -" " \ -""; +/*DISABLED + " " + " " + " " + " " +*/ -#endif /* __UIDEFS_H__ */ +#endif /* __UIDEFS_H__ */ diff --git a/includes/usb_util.h b/includes/usb_util.h new file mode 100644 index 00000000..736a9237 --- /dev/null +++ b/includes/usb_util.h @@ -0,0 +1,78 @@ +/* + * HardInfo - Displays System Information + * Copyright (C) 2003-2017 L. A. F. Pereira + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 2 or later. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef __USB_UTIL_H__ +#define __USB_UTIL_H__ + +/* this is a linked list */ +typedef struct usbd { + int bus, dev; + int vendor_id, product_id; + char *vendor; + char *product; + char *manufacturer; + char *device; + char *serial; + + int dev_class; + int dev_subclass; + int dev_protocol; + char *dev_class_str; + char *dev_subclass_str; + char *dev_protocol_str; + + char *usb_version; + char *device_version; /* bcdDevice */ + + int max_curr_ma; + + int speed_mbs; + + vendor_list vendors; + + gboolean user_scan; /* not scanned as root */ + struct usbi *if_list; + + struct usbd *next; +} usbd; + +/* another linked list */ +typedef struct usbi { + int if_number; + int if_class; + int if_subclass; + int if_protocol; + char *if_label; + char *if_class_str; + char *if_subclass_str; + char *if_protocol_str; + char *driver; + + struct usbi *next; +} usbi; + +usbd *usb_get_device_list(); +int usbd_list_count(usbd *); +void usbd_list_free(usbd *); +void usb_lookup_ids_vendor_product_str(gint vendor_id, gint product_id, + gchar **vendor_str, gchar **product_str); + +usbd *usb_get_device(int bus, int dev, const gchar* sysfspath); +void usbd_free(usbd *); + +#endif diff --git a/includes/vendor.h b/includes/vendor.h index 778e2ea3..213adaf8 100644 --- a/includes/vendor.h +++ b/includes/vendor.h @@ -1,10 +1,10 @@ /* * HardInfo - Displays System Information - * Copyright (C) 2003-2007 Leandro A. F. Pereira + * Copyright (C) 2003-2007 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, version 2. + * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -18,16 +18,62 @@ #ifndef __VENDOR_H__ #define __VENDOR_H__ +#include "gg_slist.h" -typedef struct _Vendor Vendor; -struct _Vendor { - char *id; +typedef GSList* vendor_list; +#define vendor_list_append(vl, v) g_slist_append(vl, (Vendor*)v) +#define vendor_list_concat(vl, ext) g_slist_concat(vl, ext) +vendor_list vendor_list_concat_va(int count, vendor_list vl, ...); /* count = -1 for NULL terminated list */ +#define vendor_list_free(vl) g_slist_free(vl) +#define vendor_list_remove_duplicates(vl) gg_slist_remove_duplicates(vl) +vendor_list vendor_list_remove_duplicates_deep(vendor_list vl); + +enum { + VENDOR_MATCH_RULE_WORD_IGNORE_CASE = 0, + VENDOR_MATCH_RULE_WORD_MATCH_CASE = 1, + VENDOR_MATCH_RULE_EXACT = 2, + VENDOR_MATCH_RULE_WORD_PREFIX_IGNORE_CASE = 3, + VENDOR_MATCH_RULE_WORD_PREFIX_MATCH_CASE = 4, + VENDOR_MATCH_RULE_WORD_SUFFIX_IGNORE_CASE = 5, + VENDOR_MATCH_RULE_WORD_SUFFIX_MATCH_CASE = 6, + /* "ST" hits for "ST3600A" but not "AST" or "STMicro" or "STEC" */ + VENDOR_MATCH_RULE_NUM_PREFIX_IGNORE_CASE = 7, + VENDOR_MATCH_RULE_NUM_PREFIX_MATCH_CASE = 8, +}; + +typedef struct { + char *match_string; + int match_rule; /* VENDOR_MATCH_RULE_* enum */ char *name; + char *name_short; char *url; -}; + char *url_support; + char *wikipedia; /* wikipedia page title (assumes en:, otherwise include langauge), usually more informative than the vendor's page */ + char *note; /* a short stored comment */ + char *ansi_color; + + unsigned long file_line; + unsigned long ms_length; + unsigned long weight; + gboolean has_parens; +} Vendor; + +void vendor_init(void); +void vendor_cleanup(void); +/* end list of strings with NULL */ +const Vendor *vendor_match(const gchar *id_str, ...) + __attribute__((sentinel)); +vendor_list vendors_match(const gchar *id_str, ...) + __attribute__((sentinel)); +const gchar *vendor_get_name(const gchar *id_str); +const gchar *vendor_get_shortest_name(const gchar *id_str); +const gchar *vendor_get_url(const gchar *id_str); +gchar *vendor_get_link(const gchar *id_str); +gchar *vendor_get_link_from_vendor(const Vendor *v); +void vendor_free(Vendor *v); + +vendor_list vendors_match_core(const gchar *str, int limit); -void vendor_init(void); -const gchar *vendor_get_name(const gchar *id); -const gchar *vendor_get_url(const gchar *id); +extern gboolean vendor_die_on_error; #endif /* __VENDOR_H__ */ diff --git a/includes/x86/processor-platform.h b/includes/x86/processor-platform.h index a89a831f..0e9a276b 100644 --- a/includes/x86/processor-platform.h +++ b/includes/x86/processor-platform.h @@ -1,10 +1,10 @@ /* * HardInfo - Displays System Information - * Copyright (C) 2003-2006 Leandro A. F. Pereira + * Copyright (C) 2003-2006 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, version 2. + * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of diff --git a/includes/x_util.h b/includes/x_util.h new file mode 100644 index 00000000..4d398c94 --- /dev/null +++ b/includes/x_util.h @@ -0,0 +1,104 @@ +/* + * HardInfo - Displays System Information + * Copyright (C) 2003-2017 L. A. F. Pereira + * This file + * Copyright (C) 2017 Burt P. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 2 or later. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef __X_UTIL_H__ +#define __X_UTIL_H__ + +/* wayland information (lives here in x_util for now) */ +typedef struct { + char *xdg_session_type; + char *display_name; +} wl_info; + +wl_info *get_walyand_info(); +void wl_free(wl_info *); + +typedef struct { + char *glx_version; + int direct_rendering; + char *ogl_vendor, *ogl_renderer; + + char *ogl_core_version, *ogl_core_sl_version; + char *ogl_version, *ogl_sl_version; /* compat */ + char *ogles_version, *ogles_sl_version; +} glx_info; + +glx_info *glx_create(); +gboolean fill_glx_info(glx_info *glx); +void glx_free(glx_info *glx); + +typedef struct { + int number; + int px_width; + int px_height; + int min_px_width; + int min_px_height; + int max_px_width; + int max_px_height; +} x_screen; + +typedef struct { + /* I guess it is kindof like gpu? */ + int reserved; /* TODO: */ +} x_provider; + +typedef struct { + char name[64]; + int connected; + int screen; /* index into xrr_info.screens[], look there for x screen number */ + int px_width; + int px_height; + int px_offset_x; + int px_offset_y; + int mm_width; + int mm_height; +} x_output; + +typedef struct { + int reserved; /* TODO: */ +} x_monitor; + +typedef struct { + char *display_name; + int screen_count; + x_screen *screens; + int provider_count; + x_provider *providers; + int output_count; + x_output *outputs; + int monitor_count; + x_monitor *monitors; +} xrr_info; + +xrr_info *xrr_create(); +gboolean fill_xrr_info(xrr_info *xrr); +void xrr_free(xrr_info *xrr); + +typedef struct { + int nox; /* complete failure to find X */ + char *display_name, *vendor, *version, *release_number; + xrr_info *xrr; + glx_info *glx; +} xinfo; + +xinfo *xinfo_get_info(); +void xinfo_free(xinfo *xi); + +#endif diff --git a/includes/xmlrpc-client.h b/includes/xmlrpc-client.h deleted file mode 100644 index 32fad08c..00000000 --- a/includes/xmlrpc-client.h +++ /dev/null @@ -1,43 +0,0 @@ -/* - * XMLRPC Client - * HardInfo - Displays System Information - * Copyright (C) 2003-2009 Leandro A. F. Pereira - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, version 2. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef __XMLRPC_CLIENT_H__ -#define __XMLRPC_CLIENT_H__ - -#include "config.h" - -#ifdef HAS_LIBSOUP -#include - -void xmlrpc_init(void); -gint xmlrpc_get_integer(gchar *addr, - gchar *method, - const gchar *param_types, - ...); -gchar *xmlrpc_get_string(gchar *addr, - gchar *method, - const gchar *param_types, - ...); -GValueArray *xmlrpc_get_array(gchar *addr, - gchar *method, - const gchar *param_types, - ...); -#endif /* HAS_LIBSOUP */ - -#endif /* __XMLRPC_CLIENT_H__ */ diff --git a/includes/xmlrpc-server.h b/includes/xmlrpc-server.h deleted file mode 100644 index e608b711..00000000 --- a/includes/xmlrpc-server.h +++ /dev/null @@ -1,25 +0,0 @@ -/* - * HardInfo - Displays System Information - * Copyright (C) 2003-2009 Leandro A. F. Pereira - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, version 2. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ -#ifndef __XMLRPC_SERVER_H__ -#define __XMLRPC_SERVER_H__ - -void xmlrpc_server_start(GMainLoop *main_loop); -void xmlrpc_server_init(void); - -#endif /* __XMLRPC_SERVER_H__ */ - diff --git a/modules/benchmark.c b/modules/benchmark.c index 26de9557..018e30fe 100644 --- a/modules/benchmark.c +++ b/modules/benchmark.c @@ -1,10 +1,10 @@ /* * HardInfo - Displays System Information - * Copyright (C) 2003-2009 Leandro A. F. Pereira + * Copyright (C) 2003-2009 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, version 2. + * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -16,48 +16,84 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ +#define _GNU_SOURCE +#include #include #include #include -#include #include -#include #include +#include -#include #include +#include +#include "appf.h" #include "benchmark.h" +#include "cpu_util.h" #include "benchmark/bench_results.c" bench_value bench_results[BENCHMARK_N_ENTRIES]; static void do_benchmark(void (*benchmark_function)(void), int entry); -static gchar *benchmark_include_results_reverse(bench_value result, const gchar * benchmark); -static gchar *benchmark_include_results(bench_value result, const gchar * benchmark); +static gchar *benchmark_include_results_reverse(bench_value result, + const gchar *benchmark); +static gchar *benchmark_include_results(bench_value result, + const gchar *benchmark); /* ModuleEntry entries, scan_*(), callback_*(), etc. */ #include "benchmark/benches.c" -static gboolean sending_benchmark_results = FALSE; - -char *bench_value_to_str(bench_value r) { - return g_strdup_printf("%lf; %lf; %d", r.result, r.elapsed_time, r.threads_used); +char *bench_value_to_str(bench_value r) +{ + gboolean has_rev = r.revision >= 0; + gboolean has_extra = r.extra && *r.extra != 0; + gboolean has_user_note = r.user_note && *r.user_note != 0; + char *ret = g_strdup_printf("%lf; %lf; %d", r.result, r.elapsed_time, + r.threads_used); + if (has_rev || has_extra || has_user_note) + ret = appf(ret, "; ", "%d", r.revision); + if (has_extra || has_user_note) + ret = appf(ret, "; ", "%s", r.extra); + if (has_user_note) + ret = appf(ret, "; ", "%s", r.user_note); + return ret; } -bench_value bench_value_from_str(const char* str) { +bench_value bench_value_from_str(const char *str) +{ bench_value ret = EMPTY_BENCH_VALUE; - double r, e; - int t, c; + char rstr[32] = "", estr[32] = "", *p; + int t, c, v; + char extra[256], user_note[256]; if (str) { - c = sscanf(str, "%lf; %lf; %d", &r, &e, &t); + /* try to handle floats from locales that use ',' or '.' as decimal sep + */ + c = sscanf( + str, "%[-+0-9.,]; %[-+0-9.,]; %d; %d; %255[^\r\n;|]; %255[^\r\n;|]", + rstr, estr, &t, &v, extra, user_note); if (c >= 3) { - ret.result = r; - ret.elapsed_time = e; + if ((p = strchr(rstr, ','))) { + *p = '.'; + } + if ((p = strchr(estr, ','))) { + *p = '.'; + } + ret.result = g_ascii_strtod(rstr, NULL); + ret.elapsed_time = g_ascii_strtod(estr, NULL); ret.threads_used = t; } + if (c >= 4) { + ret.revision = v; + } + if (c >= 5) { + strcpy(ret.extra, extra); + } + if (c >= 6) { + strcpy(ret.user_note, user_note); + } } return ret; } @@ -65,46 +101,51 @@ bench_value bench_value_from_str(const char* str) { typedef struct _ParallelBenchTask ParallelBenchTask; struct _ParallelBenchTask { - gint thread_number; - guint start, end; - gpointer data, callback; + gint thread_number; + guint start, end; + gpointer data, callback; int *stop; }; static gpointer benchmark_crunch_for_dispatcher(gpointer data) { - ParallelBenchTask *pbt = (ParallelBenchTask *)data; + ParallelBenchTask *pbt = (ParallelBenchTask *)data; gpointer (*callback)(void *data, gint thread_number); - gpointer return_value = g_malloc(sizeof(int)); + gpointer return_value = g_malloc(sizeof(double)); int count = 0; if ((callback = pbt->callback)) { - while(!*pbt->stop) { + while (!*pbt->stop) { callback(pbt->data, pbt->thread_number); /* don't count if didn't finish in time */ if (!*pbt->stop) count++; } } else { - DEBUG("this is thread %p; callback is NULL and it should't be!", g_thread_self()); + DEBUG("this is thread %p; callback is NULL and it should't be!", + g_thread_self()); } g_free(pbt); - *(double*)return_value = (double)count; + *(double *)return_value = (double)count; return return_value; } -bench_value benchmark_crunch_for(float seconds, gint n_threads, - gpointer callback, gpointer callback_data) { - int cpu_procs, cpu_cores, cpu_threads, thread_number, stop = 0; +bench_value benchmark_crunch_for(float seconds, + gint n_threads, + gpointer callback, + gpointer callback_data) +{ + int cpu_procs, cpu_cores, cpu_threads, cpu_nodes; + int thread_number, stop = 0; GSList *threads = NULL, *t; GTimer *timer; bench_value ret = EMPTY_BENCH_VALUE; timer = g_timer_new(); - cpu_procs_cores_threads(&cpu_procs, &cpu_cores, &cpu_threads); + cpu_procs_cores_threads_nodes(&cpu_procs, &cpu_cores, &cpu_threads, &cpu_nodes); if (n_threads > 0) ret.threads_used = n_threads; else if (n_threads < 0) @@ -120,19 +161,22 @@ bench_value benchmark_crunch_for(float seconds, gint n_threads, DEBUG("launching thread %d", thread_number); pbt->thread_number = thread_number; - pbt->data = callback_data; + pbt->data = callback_data; pbt->callback = callback; pbt->stop = &stop; - thread = g_thread_new("dispatcher", - (GThreadFunc)benchmark_crunch_for_dispatcher, pbt); +#if GLIB_CHECK_VERSION(2,32,0) + thread = g_thread_new("dispatcher", (GThreadFunc)benchmark_crunch_for_dispatcher, pbt); +#else + thread = g_thread_create((GThreadFunc)benchmark_crunch_for_dispatcher, pbt,TRUE,NULL); +#endif threads = g_slist_prepend(threads, thread); DEBUG("thread %d launched as context %p", thread_number, thread); } /* wait for time */ - //while ( g_timer_elapsed(timer, NULL) < seconds ) { } + // while ( g_timer_elapsed(timer, NULL) < seconds ) { } g_usleep(seconds * 1000000); /* signal all threads to stop */ @@ -144,7 +188,7 @@ bench_value benchmark_crunch_for(float seconds, gint n_threads, for (t = threads; t; t = t->next) { DEBUG("waiting for thread with context %p", t->data); gpointer *rv = g_thread_join((GThread *)t->data); - ret.result += *(double*)rv; + ret.result += *(double *)rv; g_free(rv); } @@ -158,17 +202,21 @@ bench_value benchmark_crunch_for(float seconds, gint n_threads, static gpointer benchmark_parallel_for_dispatcher(gpointer data) { - ParallelBenchTask *pbt = (ParallelBenchTask *)data; - gpointer (*callback)(unsigned int start, unsigned int end, void *data, gint thread_number); - gpointer return_value = NULL; + ParallelBenchTask *pbt = (ParallelBenchTask *)data; + gpointer (*callback)(unsigned int start, unsigned int end, void *data, + gint thread_number); + gpointer return_value = NULL; if ((callback = pbt->callback)) { DEBUG("this is thread %p; items %d -> %d, data %p", g_thread_self(), pbt->start, pbt->end, pbt->data); - return_value = callback(pbt->start, pbt->end, pbt->data, pbt->thread_number); - DEBUG("this is thread %p; return value is %p", g_thread_self(), return_value); + return_value = + callback(pbt->start, pbt->end, pbt->data, pbt->thread_number); + DEBUG("this is thread %p; return value is %p", g_thread_self(), + return_value); } else { - DEBUG("this is thread %p; callback is NULL and it should't be!", g_thread_self()); + DEBUG("this is thread %p; callback is NULL and it should't be!", + g_thread_self()); } g_free(pbt); @@ -177,31 +225,43 @@ static gpointer benchmark_parallel_for_dispatcher(gpointer data) } /* one call for each thread to be used */ -bench_value benchmark_parallel(gint n_threads, gpointer callback, gpointer callback_data) { - int cpu_procs, cpu_cores, cpu_threads; - cpu_procs_cores_threads(&cpu_procs, &cpu_cores, &cpu_threads); - if (n_threads == 0) n_threads = cpu_threads; - else if (n_threads == -1) n_threads = cpu_cores; - return benchmark_parallel_for(n_threads, 0, n_threads, callback, callback_data); +bench_value +benchmark_parallel(gint n_threads, gpointer callback, gpointer callback_data) +{ + int cpu_procs, cpu_cores, cpu_threads, cpu_nodes; + cpu_procs_cores_threads_nodes(&cpu_procs, &cpu_cores, &cpu_threads, &cpu_nodes); + + if (n_threads == 0) + n_threads = cpu_threads; + else if (n_threads == -1) + n_threads = cpu_cores; + + return benchmark_parallel_for(n_threads, 0, n_threads, callback, + callback_data); } /* Note: * benchmark_parallel_for(): element [start] included, but [end] is excluded. - * callback(): expected to processes elements [start] through [end] inclusive. + * callback(): expected to processes elements [start] through [end] + * inclusive. */ -bench_value benchmark_parallel_for(gint n_threads, guint start, guint end, - gpointer callback, gpointer callback_data) { - gchar *temp; - int cpu_procs, cpu_cores, cpu_threads; - guint iter_per_thread, iter, thread_number = 0; - GSList *threads = NULL, *t; - GTimer *timer; +bench_value benchmark_parallel_for(gint n_threads, + guint start, + guint end, + gpointer callback, + gpointer callback_data) +{ + gchar *temp; + int cpu_procs, cpu_cores, cpu_threads, cpu_nodes; + guint iter_per_thread, iter, thread_number = 0; + GSList *threads = NULL, *t; + GTimer *timer; bench_value ret = EMPTY_BENCH_VALUE; timer = g_timer_new(); - cpu_procs_cores_threads(&cpu_procs, &cpu_cores, &cpu_threads); + cpu_procs_cores_threads_nodes(&cpu_procs, &cpu_cores, &cpu_threads, &cpu_nodes); if (n_threads > 0) ret.threads_used = n_threads; @@ -214,18 +274,19 @@ bench_value benchmark_parallel_for(gint n_threads, guint start, guint end, iter_per_thread = (end - start) / ret.threads_used; if (iter_per_thread == 0) { - DEBUG("not enough items per thread; disabling one thread"); - ret.threads_used--; + DEBUG("not enough items per thread; disabling one thread"); + ret.threads_used--; } else { - break; + break; } } - DEBUG("Using %d threads across %d logical processors; processing %d elements (%d per thread)", + DEBUG("Using %d threads across %d logical processors; processing %d " + "elements (%d per thread)", ret.threads_used, cpu_threads, (end - start), iter_per_thread); g_timer_start(timer); - for (iter = start; iter < end; ) { + for (iter = start; iter < end;) { ParallelBenchTask *pbt = g_new0(ParallelBenchTask, 1); GThread *thread; @@ -238,13 +299,17 @@ bench_value benchmark_parallel_for(gint n_threads, guint start, guint end, DEBUG("launching thread %d", 1 + thread_number); pbt->thread_number = thread_number++; - pbt->start = ts; - pbt->end = te - 1; - pbt->data = callback_data; + pbt->start = ts; + pbt->end = te - 1; + pbt->data = callback_data; pbt->callback = callback; - thread = g_thread_new("dispatcher", - (GThreadFunc)benchmark_parallel_for_dispatcher, pbt); +#if GLIB_CHECK_VERSION(2,32,0) + thread = g_thread_new("dispatcher", (GThreadFunc)benchmark_parallel_for_dispatcher, pbt); +#else + thread = g_thread_create((GThreadFunc)benchmark_parallel_for_dispatcher, pbt,TRUE,NULL); +#endif + threads = g_slist_prepend(threads, thread); DEBUG("thread %d launched as context %p", thread_number, thread); @@ -255,8 +320,9 @@ bench_value benchmark_parallel_for(gint n_threads, guint start, guint end, DEBUG("waiting for thread with context %p", t->data); gpointer *rv = g_thread_join((GThread *)t->data); if (rv) { - if (ret.result == -1.0) ret.result = 0; - ret.result += *(double*)rv; + if (ret.result == -1.0) + ret.result = 0; + ret.result += *(double *)rv; } g_free(rv); } @@ -272,140 +338,256 @@ bench_value benchmark_parallel_for(gint n_threads, guint start, guint end, return ret; } -static gchar *clean_cpuname(gchar *cpuname) +gchar *hi_more_info(gchar *entry) { - gchar *ret = NULL, *tmp; - gchar *remove[] = { - "(R)", "(r)", "(TM)", "(tm)", "Processor", - "Technology", "processor", "CPU", - "cpu", "Genuine", "Authentic", NULL - }; - gint i; + const gchar *info = moreinfo_lookup_with_prefix("BENCH", entry); + return g_strdup(info ? info : "?"); +} + +gchar *hi_get_field(gchar *field) +{ + const gchar *info = moreinfo_lookup_with_prefix("BENCH", field); + return g_strdup(info ? info : field); +} - ret = g_strdup(cpuname); - for (i = 0; remove[i]; i++) { - tmp = strreplace(ret, remove[i], ""); - g_free(ret); - ret = tmp; +static void br_mi_add(char **results_list, bench_result *b, gboolean select) +{ + static unsigned int ri = 0; /* to ensure key is unique */ + gchar *rkey, *lbl, *elbl, *this_marker; + + if (select) { + this_marker = format_with_ansi_color(_("This Machine"), "0;30;43", + params.fmt_opts); + } else { + this_marker = ""; } - ret = strend(ret, '@'); - ret = g_strstrip(ret); + rkey = g_strdup_printf("%s__%d", b->machine->mid, ri++); - tmp = g_strdup(ret); - g_free(ret); + lbl = g_strdup_printf("%s%s%s%s", this_marker, select ? " " : "", + b->machine->cpu_name, + b->legacy ? problem_marker() : ""); + elbl = key_label_escape(lbl); - return tmp; -} + *results_list = h_strdup_cprintf("$@%s%s$%s=%.2f|%s\n", *results_list, + select ? "*" : "", rkey, elbl, + b->bvalue.result, b->machine->cpu_config); -gchar *hi_more_info(gchar * entry) + moreinfo_add_with_prefix("BENCH", rkey, bench_result_more_info(b)); + + g_free(lbl); + g_free(elbl); + g_free(rkey); + if (*this_marker) + g_free(this_marker); +} +gint bench_result_sort(gconstpointer a, gconstpointer b) { - gchar *info = moreinfo_lookup_with_prefix("BENCH", entry); - if (info) - return g_strdup(info); - return g_strdup("?"); + bench_result *A = (bench_result *)a, *B = (bench_result *)b; + if (A->bvalue.result < B->bvalue.result) + return -1; + if (A->bvalue.result > B->bvalue.result) + return 1; + return 0; } -gchar *hi_get_field(gchar * field) +struct append_machine_result_json_data { + GSList **result_list; + const gchar *benchmark_name; +}; + +static void append_machine_result_json(JsonArray *array, + guint index, + JsonNode *element_node, + gpointer user_data) { - gchar *info = moreinfo_lookup_with_prefix("BENCH", field); - if (info) - return g_strdup(info); - return g_strdup(field); + struct append_machine_result_json_data *data = user_data; + bench_result *result; + + result = bench_result_benchmarkjson(data->benchmark_name, element_node); + *data->result_list = g_slist_append(*data->result_list, result); } -static void br_mi_add(char **results_list, bench_result *b, gboolean select) { - gchar *ckey, *rkey; +static GSList *benchmark_include_results_json(const gchar *path, + bench_value r, + const gchar *benchmark) +{ + JsonParser *parser; + JsonNode *root; + bench_result *this_machine = NULL; + GSList *result_list = NULL; + GError *error=NULL; + + DEBUG("Loading benchmark results from JSON file %s", path); + + parser = json_parser_new(); + json_parser_load_from_file(parser, path, &error); + if(error){ + DEBUG ("Unable to parse JSON %s %s", path, error->message); + g_error_free(error); + g_object_unref(parser); + return result_list; + } - ckey = hardinfo_clean_label(b->machine->cpu_name, 0); - rkey = strdup(b->machine->mid); + root = json_parser_get_root(parser); + if (json_node_get_node_type(root) != JSON_NODE_OBJECT) goto out; - *results_list = h_strdup_cprintf("$%s%s$%s=%.2f|%s\n", *results_list, - select ? "*" : "", rkey, ckey, - b->bvalue.result, b->machine->cpu_config); + JsonObject *results = json_node_get_object(root); + if (results) { + JsonArray *machines = json_object_get_array_member(results, benchmark); - moreinfo_add_with_prefix("BENCH", rkey, bench_result_more_info(b) ); + if (machines) { + struct append_machine_result_json_data data = { + .result_list = &result_list, + .benchmark_name = benchmark, + }; + json_array_foreach_element(machines, append_machine_result_json, + &data); + } + } - g_free(ckey); - g_free(rkey); +out: + g_object_unref(parser); + + return result_list; } -static gchar *__benchmark_include_results(bench_value r, - const gchar * benchmark, - ShellOrderType order_type) +static gchar *find_benchmark_conf(void) { - bench_result *b = NULL; - GKeyFile *conf; - gchar **machines, *temp = NULL;; - gchar *path, *results = g_strdup(""), *return_value, *processor_frequency, *processor_name; - int i, n_threads; + const gchar *config_dir = g_get_user_config_dir(); + gchar *path; - moreinfo_del_with_prefix("BENCH"); + path = g_build_filename(config_dir, "hardinfo2", "benchmark.json", NULL); + if (g_file_test(path, G_FILE_TEST_EXISTS)) + return path; + g_free(path); - if (r.result > 0.0) { - b = bench_result_this_machine(benchmark, r); - br_mi_add(&results, b, 1); + path = g_build_filename(params.path_data, "benchmark.json", NULL); + if (g_file_test(path, G_FILE_TEST_EXISTS)) + return path; + g_free(path); + + return NULL; +} - temp = bench_result_benchmarkconf_line(b); - printf("[%s]\n%s", benchmark, temp); - g_free(temp); temp = NULL; +struct bench_window { + int min, max; +}; + +static struct bench_window get_bench_window(GSList *result_list, + const bench_result *this_machine) +{ + struct bench_window window = {}; + int size = params.max_bench_results; + int len = g_slist_length(result_list); + + if (size == 0) + size = 1; + else if (size < 0) + size = len; + + int loc = g_slist_index(result_list, this_machine); /* -1 if not found */ + if (loc >= 0) { + window.min = loc - size / 2; + window.max = window.min + size; + if (window.min < 0) { + window.min = 0; + window.max = MIN(size, len); + } else if (window.max > len) { + window.max = len; + window.min = MAX(len - size, 0); + } + } else { + window.min = 0; + window.max = len; } - conf = g_key_file_new(); + DEBUG("...len: %d, loc: %d, win_size: %d, win: [%d..%d]\n", len, loc, size, + window.min, window.max - 1); + + return window; +} + +static gboolean is_in_bench_window(const struct bench_window *window, int i) +{ + return i >= window->min && i < window->max; +} - path = g_build_filename(g_get_home_dir(), ".hardinfo", "benchmark.conf", NULL); - if (!g_file_test(path, G_FILE_TEST_EXISTS)) { - DEBUG("local benchmark.conf not found, trying system-wide"); - g_free(path); - path = g_build_filename(params.path_data, "benchmark.conf", NULL); +static gchar *benchmark_include_results_internal(bench_value this_machine_value, + const gchar *benchmark, + ShellOrderType order_type) +{ + bench_result *this_machine; + GSList *result_list, *li; + gchar *results = g_strdup(""); + gchar *output; + gchar *path; + gint i; + + path = find_benchmark_conf(); + if (path) { + result_list = benchmark_include_results_json( + path, this_machine_value, benchmark); } - g_key_file_load_from_file(conf, path, 0, NULL); - g_key_file_set_list_separator(conf, '|'); + /* this result */ + if (this_machine_value.result > 0.0) { + this_machine = bench_result_this_machine(benchmark, this_machine_value); + result_list = g_slist_prepend(result_list, this_machine); + } else { + this_machine = NULL; + } - machines = g_key_file_get_keys(conf, benchmark, NULL, NULL); - for (i = 0; machines && machines[i]; i++) { - gchar **values; - bench_result *sbr; + /* sort */ + result_list = g_slist_sort(result_list, bench_result_sort); + if (order_type == SHELL_ORDER_DESCENDING) + result_list = g_slist_reverse(result_list); - values = g_key_file_get_string_list(conf, benchmark, machines[i], NULL, NULL); + /* prepare for shell */ + moreinfo_del_with_prefix("BENCH"); + + const struct bench_window window = + get_bench_window(result_list, this_machine); + for (i = 0, li = result_list; li; li = g_slist_next(li), i++) { + bench_result *br = li->data; - sbr = bench_result_benchmarkconf(benchmark, machines[i], values); - br_mi_add(&results, sbr, 0); + if (is_in_bench_window(&window, i)) + br_mi_add(&results, br, br == this_machine); - bench_result_free(sbr); - g_strfreev(values); + bench_result_free(br); /* no longer needed */ } + g_slist_free(result_list); + + output = g_strdup_printf("[$ShellParam$]\n" + "Zebra=1\n" + "OrderType=%d\n" + "ViewType=4\n" + "ColumnTitle$Extra1=%s\n" /* CPU Clock */ + "ColumnTitle$Progress=%s\n" /* Results */ + "ColumnTitle$TextValue=%s\n" /* CPU */ + "ShowColumnHeaders=true\n" + "[%s]\n%s", + order_type, _("CPU Config"), _("Results"), + _("CPU"), benchmark, results); - g_strfreev(machines); g_free(path); - g_key_file_free(conf); - - return_value = g_strdup_printf("[$ShellParam$]\n" - "Zebra=1\n" - "OrderType=%d\n" - "ViewType=4\n" - "ColumnTitle$Extra1=%s\n" /* CPU Clock */ - "ColumnTitle$Progress=%s\n" /* Results */ - "ColumnTitle$TextValue=%s\n" /* CPU */ - "ShowColumnHeaders=true\n" - "[%s]\n%s", - order_type, - _("CPU Config"), _("Results"), _("CPU"), - benchmark, results); - - bench_result_free(b); - return return_value; + g_free(results); + + return output; } -static gchar *benchmark_include_results_reverse(bench_value result, const gchar * benchmark) +static gchar *benchmark_include_results_reverse(bench_value result, + const gchar *benchmark) { - return __benchmark_include_results(result, benchmark, SHELL_ORDER_DESCENDING); + return benchmark_include_results_internal(result, benchmark, + SHELL_ORDER_DESCENDING); } -static gchar *benchmark_include_results(bench_value result, const gchar * benchmark) +static gchar *benchmark_include_results(bench_value result, + const gchar *benchmark) { - return __benchmark_include_results(result, benchmark, SHELL_ORDER_ASCENDING); + return benchmark_include_results_internal(result, benchmark, + SHELL_ORDER_ASCENDING); } typedef struct _BenchmarkDialog BenchmarkDialog; @@ -414,11 +596,10 @@ struct _BenchmarkDialog { bench_value r; }; -static gboolean do_benchmark_handler(GIOChannel *source, - GIOCondition condition, - gpointer data) +static gboolean +do_benchmark_handler(GIOChannel *source, GIOCondition condition, gpointer data) { - BenchmarkDialog *bench_dialog = (BenchmarkDialog*)data; + BenchmarkDialog *bench_dialog = (BenchmarkDialog *)data; GIOStatus status; gchar *result; bench_value r = EMPTY_BENCH_VALUE; @@ -433,6 +614,9 @@ static gboolean do_benchmark_handler(GIOChannel *source, } r = bench_value_from_str(result); + /* attach a user note */ + if (params.bench_user_note) + strncpy(r.user_note, params.bench_user_note, 255); bench_dialog->r = r; gtk_widget_destroy(bench_dialog->dialog); @@ -445,118 +629,127 @@ static void do_benchmark(void (*benchmark_function)(void), int entry) { int old_priority = 0; - if (params.gui_running && !sending_benchmark_results) { - gchar *argv[] = { params.argv0, "-b", entries[entry].name, - "-m", "benchmark.so", "-a", NULL }; - GPid bench_pid; - gint bench_stdout; - GtkWidget *bench_dialog; - GtkWidget *bench_image; - BenchmarkDialog *benchmark_dialog; - GSpawnFlags spawn_flags = G_SPAWN_STDERR_TO_DEV_NULL; - gchar *bench_status; - - bench_value r = EMPTY_BENCH_VALUE; - bench_results[entry] = r; - - bench_status = g_strdup_printf(_("Benchmarking: %s."), entries[entry].name); - - shell_view_set_enabled(FALSE); - shell_status_update(bench_status); - - g_free(bench_status); - - bench_image = icon_cache_get_image("benchmark.png"); - gtk_widget_show(bench_image); - -#if GTK_CHECK_VERSION(3, 0, 0) - GtkWidget *button; - GtkWidget *content_area; - GtkWidget *hbox; - GtkWidget *label; - - bench_dialog = gtk_dialog_new_with_buttons("", - NULL, - GTK_DIALOG_MODAL, - _("Cancel"), - GTK_RESPONSE_ACCEPT, - NULL); - content_area = gtk_dialog_get_content_area(GTK_DIALOG(bench_dialog)); - label = gtk_label_new(_("Benchmarking. Please do not move your mouse " \ - "or press any keys.")); - hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 5); - gtk_box_pack_start(GTK_BOX(hbox), bench_image, TRUE, TRUE, 5); - gtk_box_pack_end(GTK_BOX(hbox), label, TRUE, TRUE, 5); - gtk_container_add(GTK_CONTAINER (content_area), hbox); - gtk_widget_show_all(bench_dialog); + if (params.skip_benchmarks) + return; + + if (params.gui_running) { + gchar *argv[] = {params.argv0, "-b", entries[entry].name, + "-m", "benchmark.so", "-a", + NULL}; + GPid bench_pid; + gint bench_stdout; + GtkWidget *bench_dialog; + GtkWidget *bench_image; + BenchmarkDialog *benchmark_dialog; + GSpawnFlags spawn_flags = G_SPAWN_STDERR_TO_DEV_NULL; + gchar *bench_status; + GtkWidget *content_area, *box, *label; + bench_value r = EMPTY_BENCH_VALUE; + bench_results[entry] = r; + + bench_status = + g_strdup_printf(_("Benchmarking: %s."), entries[entry].name); + + shell_view_set_enabled(FALSE); + shell_status_update(bench_status); + + g_free(bench_status); + + bench_image = icon_cache_get_image("benchmark.png"); + + bench_dialog = gtk_dialog_new_with_buttons ("Benchmarking...", + GTK_WINDOW(shell_get_main_shell()->transient_dialog), + GTK_DIALOG_DESTROY_WITH_PARENT | GTK_DIALOG_MODAL, + "Stop", + GTK_BUTTONS_CLOSE, + NULL); + + gtk_widget_set_sensitive(GTK_WIDGET(shell_get_main_shell()->transient_dialog), FALSE); + + content_area = gtk_dialog_get_content_area (GTK_DIALOG(bench_dialog)); + +#if GTK_CHECK_VERSION(3,0,0) + box = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 1); #else - bench_dialog = gtk_message_dialog_new(GTK_WINDOW(shell_get_main_shell()->window), - GTK_DIALOG_MODAL, - GTK_MESSAGE_INFO, - GTK_BUTTONS_NONE, - _("Benchmarking. Please do not move your mouse " \ - "or press any keys.")); - gtk_dialog_add_buttons(GTK_DIALOG(bench_dialog), - _("Cancel"), GTK_RESPONSE_ACCEPT, NULL); - gtk_message_dialog_set_image(GTK_MESSAGE_DIALOG(bench_dialog), bench_image); + box = gtk_hbox_new(FALSE, 1); #endif + label = gtk_label_new ("Please do not move your mouse\n" + "or press any keys."); - while (gtk_events_pending()) { - gtk_main_iteration(); - } + gtk_widget_show (bench_image); - benchmark_dialog = g_new0(BenchmarkDialog, 1); - benchmark_dialog->dialog = bench_dialog; - benchmark_dialog->r = r; +#if GTK_CHECK_VERSION(3,0,0) + gtk_widget_set_halign (bench_image, GTK_ALIGN_START); +#else + gtk_misc_set_alignment(GTK_MISC(bench_image), 0.0, 0.0); +#endif + + g_signal_connect_swapped (bench_dialog, + "response", + G_CALLBACK (gtk_widget_destroy), + bench_dialog); - if (!g_path_is_absolute(params.argv0)) { - spawn_flags |= G_SPAWN_SEARCH_PATH; - } + gtk_box_pack_start (GTK_BOX(box), bench_image, TRUE, TRUE, 10); + gtk_box_pack_start (GTK_BOX(box), label, TRUE, TRUE, 10); + gtk_container_add (GTK_CONTAINER(content_area), box); - if (g_spawn_async_with_pipes(NULL, - argv, NULL, - spawn_flags, - NULL, NULL, - &bench_pid, - NULL, &bench_stdout, NULL, - NULL)) { - GIOChannel *channel; - guint watch_id; + gtk_window_set_deletable(GTK_WINDOW(bench_dialog), FALSE); + gtk_widget_show_all (bench_dialog); - DEBUG("spawning benchmark; pid=%d", bench_pid); + while (gtk_events_pending()) { + gtk_main_iteration(); + } - channel = g_io_channel_unix_new(bench_stdout); - watch_id = g_io_add_watch(channel, G_IO_IN, do_benchmark_handler, - benchmark_dialog); + benchmark_dialog = g_new0(BenchmarkDialog, 1); + benchmark_dialog->dialog = bench_dialog; + benchmark_dialog->r = r; - switch (gtk_dialog_run(GTK_DIALOG(bench_dialog))) { + if (!g_path_is_absolute(params.argv0)) { + spawn_flags |= G_SPAWN_SEARCH_PATH; + } + + if (g_spawn_async_with_pipes(NULL, argv, NULL, spawn_flags, NULL, NULL, + &bench_pid, NULL, &bench_stdout, NULL, + NULL)) { + GIOChannel *channel; + guint watch_id; + + DEBUG("spawning benchmark; pid=%d", bench_pid); + + channel = g_io_channel_unix_new(bench_stdout); + watch_id = g_io_add_watch(channel, G_IO_IN, do_benchmark_handler, + benchmark_dialog); + + switch (gtk_dialog_run(GTK_DIALOG(bench_dialog))) { case GTK_RESPONSE_NONE: - DEBUG("benchmark finished"); - break; + DEBUG("benchmark finished"); + break; case GTK_RESPONSE_ACCEPT: - DEBUG("cancelling benchmark"); + DEBUG("cancelling benchmark"); - gtk_widget_destroy(bench_dialog); - g_source_remove(watch_id); - kill(bench_pid, SIGINT); - } + gtk_widget_destroy(bench_dialog); + g_source_remove(watch_id); + kill(bench_pid, SIGINT); + } - bench_results[entry] = benchmark_dialog->r; + bench_results[entry] = benchmark_dialog->r; - g_io_channel_unref(channel); - shell_view_set_enabled(TRUE); - shell_status_set_enabled(TRUE); - g_free(benchmark_dialog); + g_io_channel_unref(channel); + shell_view_set_enabled(TRUE); + shell_status_set_enabled(TRUE); + gtk_widget_set_sensitive( + GTK_WIDGET(shell_get_main_shell()->transient_dialog), TRUE); + g_free(benchmark_dialog); - shell_status_update(_("Done.")); + shell_status_update(_("Done.")); - return; - } + return; + } - gtk_widget_destroy(bench_dialog); - g_free(benchmark_dialog); - shell_status_set_enabled(TRUE); - shell_status_update(_("Done.")); + gtk_widget_destroy(bench_dialog); + g_free(benchmark_dialog); + shell_status_set_enabled(TRUE); + shell_status_update(_("Done.")); } setpriority(PRIO_PROCESS, 0, -20); @@ -564,79 +757,113 @@ static void do_benchmark(void (*benchmark_function)(void), int entry) setpriority(PRIO_PROCESS, 0, old_priority); } -gchar *hi_module_get_name(void) -{ - return g_strdup(_("Benchmarks")); -} +gchar *hi_module_get_name(void) { return g_strdup(_("Benchmarks")); } -guchar hi_module_get_weight(void) -{ - return 240; -} +guchar hi_module_get_weight(void) { return 240; } -ModuleEntry *hi_module_get_entries(void) -{ - return entries; -} +ModuleEntry *hi_module_get_entries(void) { return entries; } -ModuleAbout *hi_module_get_about(void) +const ModuleAbout *hi_module_get_about(void) { - static ModuleAbout ma[] = { - { - .author = "Leandro A. F. Pereira", - .description = N_("Perform tasks and compare with other systems"), - .version = VERSION, - .license = "GNU GPL version 2"} + static const ModuleAbout ma = { + .author = "L. A. F. Pereira", + .description = N_("Perform tasks and compare with other systems"), + .version = VERSION, + .license = "GNU GPL version 2 or later.", }; - return ma; + return &ma; } -static gchar *get_benchmark_results() +static gchar *get_benchmark_results(gsize *len) { - gint i; - void (*scan_callback) (gboolean rescan); - - sending_benchmark_results = TRUE; - - gchar *machine = module_call_method("devices::getProcessorName"); - gchar *machineclock = module_call_method("devices::getProcessorFrequency"); - gchar *machineram = module_call_method("devices::getMemoryTotal"); - gchar *result = g_strdup_printf("[param]\n" - "machine=%s\n" - "machineclock=%s\n" - "machineram=%s\n" - "nbenchmarks=%zu\n", - machine, - machineclock, - machineram, - G_N_ELEMENTS(entries) - 1); + void (*scan_callback)(gboolean); + JsonBuilder *builder; + JsonGenerator *generator; + JsonNode *root; + bench_machine *this_machine; + gchar *out; + guint i; + for (i = 0; i < G_N_ELEMENTS(entries); i++) { - scan_callback = entries[i].scan_callback; - if (!scan_callback) + if (!entries[i].name || !entries[i].scan_callback) + continue; + if (entries[i].flags & MODULE_FLAG_HIDE) continue; + scan_callback = entries[i].scan_callback; + if (scan_callback) + scan_callback(bench_results[i].result < 0.0); + } + + this_machine = bench_machine_this(); + builder = json_builder_new(); + json_builder_begin_object(builder); + for (i = 0; i < G_N_ELEMENTS(entries); i++) { + if (!entries[i].name || entries[i].flags & MODULE_FLAG_HIDE) + continue; if (bench_results[i].result < 0.0) { - /* benchmark was cancelled */ - scan_callback(TRUE); - } else { - scan_callback(FALSE); + /* Benchmark failed? */ + continue; } - result = h_strdup_cprintf("[bench%d]\n" - "name=%s\n" - "value=%f\n", - result, - i, entries[i].name, bench_results[i]); + json_builder_set_member_name(builder, entries[i].name); + + json_builder_begin_object(builder); + +#define ADD_JSON_VALUE(type, name, value) \ + do { \ + json_builder_set_member_name(builder, (name)); \ + json_builder_add_##type##_value(builder, (value)); \ + } while (0) + + ADD_JSON_VALUE(string, "Board", this_machine->board); + ADD_JSON_VALUE(int, "MemoryInKiB", this_machine->memory_kiB); + ADD_JSON_VALUE(string, "CpuName", this_machine->cpu_name); + ADD_JSON_VALUE(string, "CpuDesc", this_machine->cpu_desc); + ADD_JSON_VALUE(string, "CpuConfig", this_machine->cpu_config); + ADD_JSON_VALUE(string, "CpuConfig", this_machine->cpu_config); + ADD_JSON_VALUE(string, "OpenGlRenderer", this_machine->ogl_renderer); + ADD_JSON_VALUE(string, "GpuDesc", this_machine->gpu_desc); + ADD_JSON_VALUE(int, "NumCpus", this_machine->processors); + ADD_JSON_VALUE(int, "NumCores", this_machine->cores); + ADD_JSON_VALUE(int, "NumNodes", this_machine->nodes); + ADD_JSON_VALUE(int, "NumThreads", this_machine->threads); + ADD_JSON_VALUE(string, "MachineId", this_machine->mid); + ADD_JSON_VALUE(int, "PointerBits", this_machine->ptr_bits); + ADD_JSON_VALUE(boolean, "DataFromSuperUser", this_machine->is_su_data); + ADD_JSON_VALUE(int, "PhysicalMemoryInMiB", + this_machine->memory_phys_MiB); + ADD_JSON_VALUE(string, "MemoryTypes", this_machine->ram_types); + ADD_JSON_VALUE(int, "MachineDataVersion", + this_machine->machine_data_version); + ADD_JSON_VALUE(string, "MachineType", this_machine->machine_type); + + ADD_JSON_VALUE(boolean, "Legacy", FALSE); + ADD_JSON_VALUE(string, "ExtraInfo", bench_results[i].extra); + ADD_JSON_VALUE(string, "UserNote", bench_results[i].user_note); + ADD_JSON_VALUE(double, "BenchmarkResult", bench_results[i].result); + ADD_JSON_VALUE(double, "ElapsedTime", bench_results[i].elapsed_time); + ADD_JSON_VALUE(int, "UsedThreads", bench_results[i].threads_used); + ADD_JSON_VALUE(int, "BenchmarkVersion", bench_results[i].revision); + +#undef ADD_JSON_VALUE + + json_builder_end_object(builder); } + json_builder_end_object(builder); + + generator = json_generator_new(); + json_generator_set_root(generator, json_builder_get_root(builder)); + json_generator_set_pretty(generator, TRUE); - g_free(machine); - g_free(machineclock); - g_free(machineram); + out = json_generator_to_data(generator, len); - sending_benchmark_results = FALSE; + g_object_unref(generator); + g_object_unref(builder); + bench_machine_free(this_machine); - return result; + return out; } static gchar *run_benchmark(gchar *name) @@ -646,42 +873,44 @@ static gchar *run_benchmark(gchar *name) DEBUG("name = %s", name); for (i = 0; entries[i].name; i++) { - if (g_str_equal(entries[i].name, name)) { - void (*scan_callback)(gboolean rescan); - - if ((scan_callback = entries[i].scan_callback)) { - scan_callback(FALSE); - -#define CHK_RESULT_FORMAT(F) (params.result_format && strcmp(params.result_format, F) == 0) - - if (params.run_benchmark) { - if (CHK_RESULT_FORMAT("conf") ) { - bench_result *b = bench_result_this_machine(name, bench_results[i]); - char *temp = bench_result_benchmarkconf_line(b); - bench_result_free(b); - return temp; - } else if (CHK_RESULT_FORMAT("shell") ) { - bench_result *b = bench_result_this_machine(name, bench_results[i]); - char *temp = bench_result_more_info_complete(b); - bench_result_free(b); - return temp; + if (g_str_equal(entries[i].name, name)) { + void (*scan_callback)(gboolean rescan); + + if ((scan_callback = entries[i].scan_callback)) { + scan_callback(FALSE); + +#define CHK_RESULT_FORMAT(F) \ + (params.result_format && strcmp(params.result_format, F) == 0) + + if (params.run_benchmark) { + /* attach the user note */ + if (params.bench_user_note) + strncpy(bench_results[i].user_note, + params.bench_user_note, 255); + + if (CHK_RESULT_FORMAT("shell")) { + bench_result *b = + bench_result_this_machine(name, bench_results[i]); + char *temp = bench_result_more_info_complete(b); + bench_result_free(b); + return temp; + } + /* defaults to "short" which is below */ + } + + return bench_value_to_str(bench_results[i]); } - /* defaults to "short" which is below*/ - } - - return bench_value_to_str(bench_results[i]); } - } } return NULL; } -ShellModuleMethod *hi_exported_methods(void) +const ShellModuleMethod *hi_exported_methods(void) { - static ShellModuleMethod m[] = { + static const ShellModuleMethod m[] = { {"runBenchmark", run_benchmark}, - {NULL} + {NULL}, }; return m; @@ -690,31 +919,28 @@ ShellModuleMethod *hi_exported_methods(void) void hi_module_init(void) { static SyncEntry se[] = { - { - .fancy_name = N_("Send benchmark results"), - .name = "SendBenchmarkResults", - .save_to = NULL, - .get_data = get_benchmark_results}, - { - .fancy_name = N_("Receive benchmark results"), - .name = "RecvBenchmarkResults", - .save_to = "benchmark.conf", - .get_data = NULL} + { + .name = N_("Send benchmark results"), + .file_name = "benchmark.json", + .generate_contents_for_upload = get_benchmark_results, + }, + { + .name = N_("Receive benchmark results"), + .file_name = "benchmark.json", + }, }; sync_manager_add_entry(&se[0]); sync_manager_add_entry(&se[1]); - bench_value er = EMPTY_BENCH_VALUE; - int i; - for (i = 0; i < G_N_ELEMENTS(entries) - 1; i++) { - bench_results[i] = er; - } + guint i; + for (i = 0; i < G_N_ELEMENTS(entries) - 1 /* account for NULL */; i++) + bench_results[i] = (bench_value)EMPTY_BENCH_VALUE; } gchar **hi_module_get_dependencies(void) { - static gchar *deps[] = { "devices.so", NULL }; + static gchar *deps[] = {"devices.so", NULL}; return deps; } diff --git a/modules/benchmark/bench_results.c b/modules/benchmark/bench_results.c index 27a33a65..18ed0739 100644 --- a/modules/benchmark/bench_results.c +++ b/modules/benchmark/bench_results.c @@ -1,12 +1,12 @@ /* * HardInfo - Displays System Information - * Copyright (C) 2003-2017 Leandro A. F. Pereira + * Copyright (C) 2020 L. A. F. Pereira * This file: * Copyright (C) 2017 Burt P. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, version 2. + * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -18,20 +18,39 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ -/*/ Used for an unknown value. Having it in only one place cleans up the .po line references */ +#include +#include +#include +#include +#include "nice_name.h" + +/* in dmi_memory.c */ +uint64_t memory_devices_get_system_memory_MiB(); +gchar *memory_devices_get_system_memory_types_str(); + +/*/ Used for an unknown value. Having it in only one place cleans up the .po + * line references */ static const char *unk = N_("(Unknown)"); typedef struct { char *board; - int memory_kiB; + uint64_t memory_kiB; /* from /proc/meminfo -> MemTotal */ char *cpu_name; char *cpu_desc; char *cpu_config; char *ogl_renderer; + char *gpu_desc; int processors; int cores; int threads; + int nodes; char *mid; + int ptr_bits; /* 32, 64... BENCH_PTR_BITS; 0 for unspecified */ + int is_su_data; /* 1 = data collected as root */ + uint64_t memory_phys_MiB; /* from DMI/SPD/DTree/Table/Blocks, etc. */ + char *ram_types; + int machine_data_version; + char *machine_type; } bench_machine; typedef struct { @@ -41,7 +60,8 @@ typedef struct { int legacy; /* an old benchmark.conf result */ } bench_result; -static char *cpu_config_retranslate(char *str, int force_en, int replacing) { +static char *cpu_config_retranslate(char *str, int force_en, int replacing) +{ char *new_str = NULL; char *mhz = (force_en) ? "MHz" : _("MHz"); char *c = str, *tmp; @@ -51,19 +71,19 @@ static char *cpu_config_retranslate(char *str, int force_en, int replacing) { if (str != NULL) { new_str = strdup(""); if (strchr(str, 'x')) { - while (c != NULL && sscanf(c, "%dx %f", &t, &f) ) { - tmp = g_strdup_printf("%s%s%dx %.2f %s", - new_str, strlen(new_str) ? " + " : "", - t, f, mhz ); + while (c != NULL && (sscanf(c, "%dx %f", &t, &f)==2)) { + tmp = g_strdup_printf("%s%s%dx %.2f %s", new_str, + strlen(new_str) ? " + " : "", t, f, mhz); free(new_str); new_str = tmp; - c = strchr(c+1, '+'); + c = strchr(c + 1, '+'); + if (c) + c++; /* move past the + */ } } else { sscanf(c, "%f", &f); - tmp = g_strdup_printf("%s%s%dx %.2f %s", - new_str, strlen(new_str) ? " + " : "", - 1, f, mhz ); + tmp = g_strdup_printf("%s%s%dx %.2f %s", new_str, + strlen(new_str) ? " + " : "", 1, f, mhz); free(new_str); new_str = tmp; } @@ -71,19 +91,23 @@ static char *cpu_config_retranslate(char *str, int force_en, int replacing) { if (replacing) free(str); } + return new_str; } /* "2x 1400.00 MHz + 2x 800.00 MHz" -> 4400.0 */ -static float cpu_config_val(char *str) { +static float cpu_config_val(char *str) +{ char *c = str; int t; float f, r = 0.0; if (str != NULL) { if (strchr(str, 'x')) { - while (c != NULL && sscanf(c, "%dx %f", &t, &f) ) { + while (c != NULL && (sscanf(c, "%dx %f", &t, &f)==2)) { r += f * t; - c = strchr(c+1, '+'); + c = strchr(c + 1, '+'); + if (c) + c++; /* move past the + */ } } else { sscanf(c, "%f", &r); @@ -92,16 +116,20 @@ static float cpu_config_val(char *str) { return r; } -static int cpu_config_cmp(char *str0, char *str1) { +static int cpu_config_cmp(char *str0, char *str1) +{ float r0, r1; r0 = cpu_config_val(str0); r1 = cpu_config_val(str1); - if (r0 == r1) return 0; - if (r0 < r1) return -1; + if (r0 == r1) + return 0; + if (r0 < r1) + return -1; return 1; } -static int cpu_config_is_close(char *str0, char *str1) { +static int cpu_config_is_close(char *str0, char *str1) +{ float r0, r1, r1n; r0 = cpu_config_val(str0); r1 = cpu_config_val(str1); @@ -111,76 +139,85 @@ static int cpu_config_is_close(char *str0, char *str1) { return 0; } -static gen_machine_id(bench_machine *m) { +static void gen_machine_id(bench_machine *m) +{ char *s; + if (m) { if (m->mid != NULL) free(m->mid); - /* Don't try and translate unknown. The mid string needs to be made of all - * untranslated elements.*/ + + /* Don't try and translate unknown. The mid string needs to be made of + * all untranslated elements.*/ m->mid = g_strdup_printf("%s;%s;%.2f", - (m->board != NULL) ? m->board : "(Unknown)", m->cpu_name, cpu_config_val(m->cpu_config) ); - s = m->mid; - while (*s != 0) { - if (!isalnum(*s)) { - if (*s != ';' - && *s != '(' - && *s != '(' - && *s != ')') + (m->board != NULL) ? m->board : "(Unknown)", + m->cpu_name, cpu_config_val(m->cpu_config)); + for (s = m->mid; *s; s++) { + if (!isalnum(*s) && *s != '(' && *s != ')' && *s != ';') *s = '_'; - } - s++; } } } -bench_machine *bench_machine_new() { - bench_machine *m = NULL; - m = malloc(sizeof(bench_machine)); - if (m) - memset(m, 0, sizeof(bench_machine)); - return m; +bench_machine *bench_machine_new() +{ + return calloc(1, sizeof(bench_machine)); } -bench_machine *bench_machine_this() { +bench_machine *bench_machine_this() +{ bench_machine *m = NULL; char *tmp; m = bench_machine_new(); if (m) { + m->ptr_bits = BENCH_PTR_BITS; + m->is_su_data = (getuid() == 0); m->board = module_call_method("devices::getMotherboard"); m->cpu_name = module_call_method("devices::getProcessorName"); m->cpu_desc = module_call_method("devices::getProcessorDesc"); - m->cpu_config = module_call_method("devices::getProcessorFrequencyDesc"); + m->cpu_config = + module_call_method("devices::getProcessorFrequencyDesc"); + m->gpu_desc = module_call_method("devices::getGPUList"); m->ogl_renderer = module_call_method("computer::getOGLRenderer"); - tmp = module_call_method("devices::getMemoryTotal"); - m->memory_kiB = atoi(tmp); + tmp = module_call_method("computer::getMemoryTotal"); + m->memory_kiB = strtoull(tmp, NULL, 10); + m->memory_phys_MiB = memory_devices_get_system_memory_MiB(); + m->ram_types = memory_devices_get_system_memory_types_str(); + m->machine_type = module_call_method("computer::getMachineType"); free(tmp); - cpu_procs_cores_threads(&m->processors, &m->cores, &m->threads); + cpu_procs_cores_threads_nodes(&m->processors, &m->cores, &m->threads, &m->nodes); gen_machine_id(m); } return m; } -void bench_machine_free(bench_machine *s) { +void bench_machine_free(bench_machine *s) +{ if (s) { free(s->board); free(s->cpu_name); free(s->cpu_desc); free(s->cpu_config); free(s->mid); + free(s->ram_types); + free(s->machine_type); + free(s); } } -void bench_result_free(bench_result *s) { +void bench_result_free(bench_result *s) +{ if (s) { free(s->name); bench_machine_free(s->machine); + g_free(s); } } -bench_result *bench_result_this_machine(const char *bench_name, bench_value r) { +bench_result *bench_result_this_machine(const char *bench_name, bench_value r) +{ bench_result *b = NULL; b = malloc(sizeof(bench_result)); @@ -195,13 +232,14 @@ bench_result *bench_result_this_machine(const char *bench_name, bench_value r) { } /* -1 for none */ -static int nx_prefix(const char *str) { +static int nx_prefix(const char *str) +{ char *s, *x; if (str != NULL) { - s = (char*)str; + s = (char *)str; x = strchr(str, 'x'); - if (x && x-s >= 1) { - while(s != x) { + if (x && x - s >= 1) { + while (s != x) { if (!isdigit(*s)) return -1; s++; @@ -214,11 +252,13 @@ static int nx_prefix(const char *str) { } /* old results didn't store the actual number of threads used */ -static int guess_threads_old_result(const char *bench_name, int threads_available) { +static int guess_threads_old_result(const char *bench_name, + int threads_available) +{ #define CHKBNAME(BN) (strcmp(bench_name, BN) == 0) - if (CHKBNAME("CPU Fibonacci") ) + if (CHKBNAME("CPU Fibonacci")) return 1; - if (CHKBNAME("FPU FFT") ) { + if (CHKBNAME("FPU FFT")) { if (threads_available >= 4) return 4; else if (threads_available >= 2) @@ -226,7 +266,7 @@ static int guess_threads_old_result(const char *bench_name, int threads_availabl else return 1; } - if (CHKBNAME("CPU N-Queens") ) { + if (CHKBNAME("CPU N-Queens")) { if (threads_available >= 10) return 10; else if (threads_available >= 5) @@ -239,204 +279,327 @@ static int guess_threads_old_result(const char *bench_name, int threads_availabl return threads_available; } -bench_result *bench_result_benchmarkconf(const char *section, const char *key, char **values) { - bench_result *b = NULL; - char *s0, *s1, *s2; - int nx = 0, vl = 0; - float n, m; +static gboolean cpu_name_needs_cleanup(const char *cpu_name) +{ + return strstr(cpu_name, "Intel") || strstr(cpu_name, "AMD") || + strstr(cpu_name, "VIA") || strstr(cpu_name, "Cyrix"); +} - vl = g_strv_length(values); +static void filter_invalid_chars(gchar *str) +{ + gchar *p; - b = malloc(sizeof(bench_result)); - if (b) { - memset(b, 0, sizeof(bench_result)); - b->machine = bench_machine_new(); - b->name = strdup(section); - - if (vl >= 10) { /* the 11th could be empty */ - b->machine->mid = strdup(key); - /* first try as bench_value, then try as double 'result' only */ - b->bvalue = bench_value_from_str(values[0]); - if (b->bvalue.result == -1) - b->bvalue.result = atoi(values[0]); - b->bvalue.threads_used = atoi(values[1]); - b->machine->board = strdup(values[2]); - b->machine->cpu_name = strdup(values[3]); - b->machine->cpu_desc = strdup(values[4]); - b->machine->cpu_config = strdup(values[5]); - b->machine->memory_kiB = atoi(values[6]); - b->machine->processors = atoi(values[7]); - b->machine->cores = atoi(values[8]); - b->machine->threads = atoi(values[9]); - if (vl >= 11) - b->machine->ogl_renderer = strdup(values[10]); - b->legacy = 0; - } else if (vl >= 2) { - b->bvalue.result = atof(values[0]); - b->legacy = 1; - - /* old old format has prefix before cpu name (ex: 4x Pentium...) */ - nx = nx_prefix(key); - if (nx > 0) { - b->machine->cpu_name = strdup(strchr(key, 'x') + 1); - b->machine->threads = nx; - } else { - b->machine->cpu_name = strdup(key); - b->machine->threads = 1; - } + for (p = str; *p; p++) { + if (*p == '\n' || *p == ';' || *p == '|') + *p = '_'; + } +} - b->machine->cpu_config = strdup(values[1]); - /* new old format has cpu_config string with nx prefix */ - nx = nx_prefix(values[1]); - if (nx > 0) { - b->machine->threads = nx; - } +static gboolean json_get_boolean(JsonObject *obj, const gchar *key) +{ + if (!json_object_has_member(obj, key)) + return FALSE; + return json_object_get_boolean_member(obj, key); +} - b->bvalue.threads_used = guess_threads_old_result(section, b->machine->threads); - - /* If the clock rate in the id string is more than the - * config string, use that. Older hardinfo used current cpu freq - * instead of max freq. - * "...@ 2.00GHz" -> 2000.0 */ - s0 = b->machine->cpu_name; - s2 = strstr(s0, "Hz"); - if (s2 && s2 > s0 + 2) { - m = 1; /* assume M */ - if (*(s2-1) == 'G') - m = 1000; - s1 = s2 - 2; - while (s1 > s0) { - if (!( isdigit(*s1) || *s1 == '.' || *s1 == ' ')) - break; - s1--; - } - - if (s1 > s0) { - n = atof(s1+1); - n *= m; - - s1 = g_strdup_printf("%dx %.2f %s", b->bvalue.threads_used, n, _("MHz")); - if ( cpu_config_cmp(b->machine->cpu_config, s1) == -1 - && !cpu_config_is_close(b->machine->cpu_config, s1) ) { - free(b->machine->cpu_config); - b->machine->cpu_config = s1; - } else { - free(s1); - } - } - } +static double json_get_double(JsonObject *obj, const gchar *key) +{ + if (!json_object_has_member(obj, key)) + return 0; + return json_object_get_double_member(obj, key); +} - /* old results only give threads */ - b->machine->processors = -1; - b->machine->cores = -1; - } +static int json_get_int(JsonObject *obj, const gchar *key) +{ + if (!json_object_has_member(obj, key)) + return 0; + return json_object_get_int_member(obj, key); +} - b->machine->cpu_config = cpu_config_retranslate(b->machine->cpu_config, 0, 1); - if (b->machine->board != NULL && strlen(b->machine->board) == 0) { - free(b->machine->board); - b->machine->board = NULL; - } - if (b->machine->cpu_desc != NULL && strlen(b->machine->cpu_desc) == 0) { - free(b->machine->cpu_desc); - b->machine->cpu_desc = NULL; - } - gen_machine_id(b->machine); - } - return b; +static const gchar *json_get_string(JsonObject *obj, const gchar *key) +{ + if (!json_object_has_member(obj, key)) + return ""; + return json_object_get_string_member(obj, key); +} + +static gchar *json_get_string_dup(JsonObject *obj, const gchar *key) +{ + return g_strdup(json_get_string(obj, key)); +} + +static double parse_frequency(const char *freq) +{ + static locale_t locale; + + if (!locale) + locale = newlocale(LC_NUMERIC_MASK, "C", NULL); + + return strtod_l(freq, NULL, locale); +} + +static void append_cpu_config(JsonObject *object, + const gchar *member_name, + JsonNode *member_node, + gpointer user_data) +{ + GString *output = user_data; + + if (output->len) + g_string_append(output, ", "); + + g_string_append_printf(output, "%ldx %.2f %s", (long int)json_node_get_int(member_node), + parse_frequency(member_name), _("MHz")); } -char *bench_result_benchmarkconf_line(bench_result *b) { - char *cpu_config = cpu_config_retranslate(b->machine->cpu_config, 1, 0); - char *bv = bench_value_to_str(b->bvalue); - char *ret = g_strdup_printf("%s=%s|%d|%s|%s|%s|%s|%d|%d|%d|%d|%s\n", - b->machine->mid, bv, b->bvalue.threads_used, - (b->machine->board != NULL) ? b->machine->board : "", - b->machine->cpu_name, - (b->machine->cpu_desc != NULL) ? b->machine->cpu_desc : "", - cpu_config, - b->machine->memory_kiB, - b->machine->processors, b->machine->cores, b->machine->threads, - (b->machine->ogl_renderer != NULL) ? b->machine->ogl_renderer : "" - ); - free(cpu_config); - free(bv); +static gchar *get_cpu_config(JsonObject *machine) +{ + JsonObject *cpu_config_map = + json_object_get_object_member(machine, "CpuConfigMap"); + + if (!cpu_config_map) + return json_get_string_dup(machine, "CpuConfig"); + + GString *output = g_string_new(NULL); + json_object_foreach_member(cpu_config_map, append_cpu_config, output); + return g_string_free(output, FALSE); +} + +static gchar *get_cpu_desc(JsonObject *machine) +{ + int num_cpus = json_get_int(machine, "NumCpus"); + + if (!num_cpus) + return json_get_string_dup(machine, "CpuDesc"); + + /* FIXME: This is adapted from processor_describe_default() in + * devices.c! */ + + int num_cores = json_get_int(machine, "NumCores"); + int num_threads = json_get_int(machine, "NumThreads"); + int num_nodes = json_get_int(machine, "NumNodes"); + const char *packs_fmt = + ngettext("%d physical processor", "%d physical processors", num_cpus); + const char *cores_fmt = ngettext("%d core", "%d cores", num_cores); + const char *threads_fmt = ngettext("%d thread", "%d threads", num_threads); + char *full_fmt, *ret; + + if (num_nodes > 1) { + const char *nodes_fmt = + ngettext("%d NUMA node", "%d NUMA nodes", num_nodes); + + full_fmt = g_strdup_printf( + _(/*/NP procs; NC cores across NN nodes; NT threads*/ + "%s; %s across %s; %s"), + packs_fmt, cores_fmt, nodes_fmt, threads_fmt); + ret = g_strdup_printf(full_fmt, num_cpus, num_cores * num_nodes, num_nodes, num_threads); + } else { + full_fmt = + g_strdup_printf(_(/*/NP procs; NC cores; NT threads*/ "%s; %s; %s"), + packs_fmt, cores_fmt, threads_fmt); + ret = g_strdup_printf(full_fmt, num_cpus, num_cores, num_threads); + } + + free(full_fmt); return ret; } -static char *bench_result_more_info_less(bench_result *b) { - char *memory = - (b->machine->memory_kiB > 0) - ? g_strdup_printf("%d %s", b->machine->memory_kiB, _("kiB") ) - : g_strdup(_(unk) ); - - char *ret = g_strdup_printf("[%s]\n" - /* threads */ "%s=%d\n" - /* legacy */ "%s=%s\n" - "[%s]\n" - /* board */ "%s=%s\n" - /* cpu */ "%s=%s\n" - /* cpudesc */ "%s=%s\n" - /* cpucfg */ "%s=%s\n" - /* threads */ "%s=%d\n" - /* ogl rend */ "%s=%s\n" - /* mem */ "%s=%s\n", - _("Benchmark Result"), - _("Threads"), b->bvalue.threads_used, - b->legacy ? _("Note") : "#Note", - b->legacy ? _("This result is from an old version of HardInfo. Results might not be comparable to current version. Some details are missing.") : "", - _("Machine"), - _("Board"), (b->machine->board != NULL) ? b->machine->board : _(unk), - _("CPU Name"), b->machine->cpu_name, - _("CPU Description"), (b->machine->cpu_desc != NULL) ? b->machine->cpu_desc : _(unk), - _("CPU Config"), b->machine->cpu_config, - _("Threads Available"), b->machine->threads, - _("OpenGL Renderer"), (b->machine->ogl_renderer != NULL) ? b->machine->ogl_renderer : _(unk), - _("Memory"), memory - ); +bench_result *bench_result_benchmarkjson(const gchar *bench_name, + JsonNode *node) +{ + JsonObject *machine; + bench_result *b; + gchar *p; + + if (json_node_get_node_type(node) != JSON_NODE_OBJECT) + return NULL; + + machine = json_node_get_object(node); + + b = g_new0(bench_result, 1); + b->name = g_strdup(bench_name); + b->legacy = json_get_boolean(machine, "Legacy"); + + b->bvalue = (bench_value){ + .result = json_get_double(machine, "BenchmarkResult"), + .elapsed_time = json_get_double(machine, "ElapsedTime"), + .threads_used = json_get_int(machine, "UsedThreads"), + .revision = json_get_int(machine, "BenchmarkRevision"), + }; + + snprintf(b->bvalue.extra, sizeof(b->bvalue.extra), "%s", + json_get_string(machine, "ExtraInfo")); + filter_invalid_chars(b->bvalue.extra); + + snprintf(b->bvalue.user_note, sizeof(b->bvalue.user_note), "%s", + json_get_string(machine, "UserNote")); + filter_invalid_chars(b->bvalue.user_note); + + int nodes = json_get_int(machine, "NumNodes"); + + if (nodes == 0) + nodes = 1; + + b->machine = bench_machine_new(); + *b->machine = (bench_machine){ + .board = json_get_string_dup(machine, "Board"), + .memory_kiB = json_get_int(machine, "MemoryInKiB"), + .cpu_name = json_get_string_dup(machine, "CpuName"), + .cpu_desc = get_cpu_desc(machine), + .cpu_config = get_cpu_config(machine), + .ogl_renderer = json_get_string_dup(machine, "OpenGlRenderer"), + .gpu_desc = json_get_string_dup(machine, "GpuDesc"), + .processors = json_get_int(machine, "NumCpus"), + .cores = json_get_int(machine, "NumCores"), + .threads = json_get_int(machine, "NumThreads"), + .nodes = nodes, + .mid = json_get_string_dup(machine, "MachineId"), + .ptr_bits = json_get_int(machine, "PointerBits"), + .is_su_data = json_get_boolean(machine, "DataFromSuperUser"), + .memory_phys_MiB = json_get_int(machine, "PhysicalMemoryInMiB"), + .ram_types = json_get_string_dup(machine, "MemoryTypes"), + .machine_data_version = json_get_int(machine, "MachineDataVersion"), + .machine_type = json_get_string_dup(machine, "MachineType"), + }; + + return b; +} + +static char *bench_result_more_info_less(bench_result *b) +{ + char *memory = NULL; + if (b->machine->memory_phys_MiB) { + memory = + g_strdup_printf("%" PRId64 " %s %s", b->machine->memory_phys_MiB, + _("MiB"), b->machine->ram_types); + } else { + memory = + (b->machine->memory_kiB > 0) + ? g_strdup_printf("%" PRId64 " %s %s", b->machine->memory_kiB, + _("kiB"), problem_marker()) + : g_strdup(_(unk)); + } + char bench_str[256] = ""; + if (b->bvalue.revision >= 0) + snprintf(bench_str, 127, "%d", b->bvalue.revision); + char bits[24] = ""; + if (b->machine->ptr_bits) + snprintf(bits, 23, _("%d-bit"), b->machine->ptr_bits); + + char *ret = g_strdup_printf( + "[%s]\n" + /* threads */ "%s=%d\n" + /* elapsed */ "%s=%0.4f %s\n" + "%s=%s\n" + "%s=%s\n" + "%s=%s\n" + /* legacy */ "%s%s=%s\n" + "[%s]\n" + /* board */ "%s=%s\n" + /* machine_type */ "%s=%s\n" + /* cpu */ "%s=%s\n" + /* cpudesc */ "%s=%s\n" + /* cpucfg */ "%s=%s\n" + /* threads */ "%s=%d\n" + /* gpu desc */ "%s=%s\n" + /* ogl rend */ "%s=%s\n" + /* mem */ "%s=%s\n" + /* bits */ "%s=%s\n", + _("Benchmark Result"), _("Threads"), b->bvalue.threads_used, + _("Elapsed Time"), b->bvalue.elapsed_time, _("seconds"), + *bench_str ? _("Revision") : "#Revision", bench_str, + *b->bvalue.extra ? _("Extra Information") : "#Extra", b->bvalue.extra, + *b->bvalue.user_note ? _("User Note") : "#User Note", + b->bvalue.user_note, b->legacy ? problem_marker() : "", + b->legacy ? _("Note") : "#Note", + b->legacy ? _("This result is from an old version of HardInfo. Results " + "might not be comparable to current version. Some " + "details are missing.") + : "", + _("Machine"), + _("Board"), (b->machine->board != NULL) ? b->machine->board : _(unk), + _("Machine Type"), (b->machine->machine_type != NULL) ? b->machine->machine_type : _(unk), + _("CPU Name"), b->machine->cpu_name, + _("CPU Description"), (b->machine->cpu_desc != NULL) ? b->machine->cpu_desc : _(unk), + _("CPU Config"), b->machine->cpu_config, + _("Threads Available"), b->machine->threads, + _("GPU"), (b->machine->gpu_desc != NULL) ? b->machine->gpu_desc : _(unk), + _("OpenGL Renderer"), (b->machine->ogl_renderer != NULL) ? b->machine->ogl_renderer : _(unk), + _("Memory"), memory, + b->machine->ptr_bits ? _("Pointer Size") : "#AddySize", bits); free(memory); return ret; } -static char *bench_result_more_info_complete(bench_result *b) { - return g_strdup_printf("[%s]\n" - /* bench name */"%s=%s\n" - /* threads */ "%s=%d\n" - /* result */ "%s=%0.2f\n" - /* elapsed */ "%s=%0.2f\n" - /* legacy */ "%s=%s\n" - "[%s]\n" - /* board */ "%s=%s\n" - /* cpu */ "%s=%s\n" - /* cpudesc */ "%s=%s\n" - /* cpucfg */ "%s=%s\n" - /* threads */ "%s=%d\n" - /* ogl rend */ "%s=%s\n" - /* mem */ "%s=%d %s\n" - "[%s]\n" - /* mid */ "%s=%s\n" - /* cfg_val */ "%s=%.2f\n", - _("Benchmark Result"), - _("Benchmark"), b->name, - _("Threads"), b->bvalue.threads_used, - _("Result"), b->bvalue.result, - _("Elapsed Time"), b->bvalue.elapsed_time, - b->legacy ? _("Note") : "#Note", - b->legacy ? _("This result is from an old version of HardInfo. Results might not be comparable to current version. Some details are missing.") : "", - _("Machine"), - _("Board"), (b->machine->board != NULL) ? b->machine->board : _(unk), - _("CPU Name"), b->machine->cpu_name, - _("CPU Description"), (b->machine->cpu_desc != NULL) ? b->machine->cpu_desc : _(unk), - _("CPU Config"), b->machine->cpu_config, - _("Threads Available"), b->machine->threads, - _("OpenGL Renderer"), (b->machine->ogl_renderer != NULL) ? b->machine->ogl_renderer : _(unk), - _("Memory"), b->machine->memory_kiB, _("kiB"), - _("Handles"), - _("mid"), b->machine->mid, - _("cfg_val"), cpu_config_val(b->machine->cpu_config) - ); +static char *bench_result_more_info_complete(bench_result *b) +{ + char bench_str[256] = ""; + strncpy(bench_str, b->name, 127); + if (b->bvalue.revision >= 0) + snprintf(bench_str + strlen(bench_str), 127, " (r%d)", + b->bvalue.revision); + char bits[24] = ""; + if (b->machine->ptr_bits) + snprintf(bits, 23, _("%d-bit"), b->machine->ptr_bits); + + return g_strdup_printf( + "[%s]\n" + /* bench name */ "%s=%s\n" + /* threads */ "%s=%d\n" + /* result */ "%s=%0.2f\n" + /* elapsed */ "%s=%0.4f %s\n" + "%s=%s\n" + "%s=%s\n" + /* legacy */ "%s%s=%s\n" + "[%s]\n" + /* board */ "%s=%s\n" + /* machine_type */ "%s=%s\n" + /* cpu */ "%s=%s\n" + /* cpudesc */ "%s=%s\n" + /* cpucfg */ "%s=%s\n" + /* threads */ "%s=%d\n" + /* gpu desc */ "%s=%s\n" + /* ogl rend */ "%s=%s\n" + /* mem */ "%s=%" PRId64 " %s\n" + /* mem phys */ "%s=%" PRId64 " %s %s\n" + /* bits */ "%s=%s\n" + "%s=%d\n" + "%s=%d\n" + "[%s]\n" + /* mid */ "%s=%s\n" + /* cfg_val */ "%s=%.2f\n", + _("Benchmark Result"), _("Benchmark"), bench_str, _("Threads"), + b->bvalue.threads_used, _("Result"), b->bvalue.result, + _("Elapsed Time"), b->bvalue.elapsed_time, _("seconds"), + *b->bvalue.extra ? _("Extra Information") : "#Extra", b->bvalue.extra, + *b->bvalue.user_note ? _("User Note") : "#User Note", + b->bvalue.user_note, b->legacy ? problem_marker() : "", + b->legacy ? _("Note") : "#Note", + b->legacy ? _("This result is from an old version of HardInfo. Results " + "might not be comparable to current version. Some " + "details are missing.") + : "", + _("Machine"), _("Board"), + (b->machine->board != NULL) ? b->machine->board : _(unk), + _("Machine Type"), (b->machine->machine_type != NULL) ? b->machine->machine_type : _(unk), + _("CPU Name"), + b->machine->cpu_name, _("CPU Description"), + (b->machine->cpu_desc != NULL) ? b->machine->cpu_desc : _(unk), + _("CPU Config"), b->machine->cpu_config, _("Threads Available"), + b->machine->threads, _("GPU"), + (b->machine->gpu_desc != NULL) ? b->machine->gpu_desc : _(unk), + _("OpenGL Renderer"), + (b->machine->ogl_renderer != NULL) ? b->machine->ogl_renderer : _(unk), + _("Memory"), b->machine->memory_kiB, _("kiB"), _("Physical Memory"), + b->machine->memory_phys_MiB, _("MiB"), b->machine->ram_types, + b->machine->ptr_bits ? _("Pointer Size") : "#AddySize", bits, + ".machine_data_version", b->machine->machine_data_version, + ".is_su_data", b->machine->is_su_data, _("Handles"), _("mid"), + b->machine->mid, _("cfg_val"), cpu_config_val(b->machine->cpu_config)); } -char *bench_result_more_info(bench_result *b) { - //return bench_result_more_info_complete(b); +char *bench_result_more_info(bench_result *b) +{ + // return bench_result_more_info_complete(b); return bench_result_more_info_less(b); } diff --git a/modules/benchmark/bench_util.c b/modules/benchmark/bench_util.c new file mode 100644 index 00000000..d9e5bc55 --- /dev/null +++ b/modules/benchmark/bench_util.c @@ -0,0 +1,58 @@ + +#include "benchmark.h" +#include "md5.h" + +gchar *get_test_data(gsize min_size) { + gchar *bdata_path, *data; + gsize data_size; + + gchar *exp_data, *p; + gsize sz; + + bdata_path = g_build_filename(params.path_data, "benchmark.data", NULL); + if (!g_file_get_contents(bdata_path, &data, &data_size, NULL)) { + g_free(bdata_path); + return NULL; + } + + if (data_size < min_size) { + DEBUG("expanding %lu bytes of test data to %lu bytes", data_size, min_size); + exp_data = g_malloc(min_size + 1); + memcpy(exp_data, data, data_size); + p = exp_data + data_size; + sz = data_size; + while (sz < (min_size - data_size) ) { + memcpy(p, data, data_size); + p += data_size; + sz += data_size; + } + strncpy(p, data, min_size - sz); + g_free(data); + data = exp_data; + } + g_free(bdata_path); + + return data; +} + +char *digest_to_str(const char *digest, int len) { + int max = len * 2; + char *ret = malloc(max+1); + char *p = ret; + memset(ret, 0, max+1); + int i = 0; + for(; i < len; i++) { + unsigned char byte = digest[i]; + p += sprintf(p, "%02x", byte); + } + return ret; +} + +char *md5_digest_str(const char *data, unsigned int len) { + struct MD5Context ctx; + guchar digest[16]; + MD5Init(&ctx); + MD5Update(&ctx, (guchar *)data, len); + MD5Final(digest, &ctx); + return digest_to_str(digest, 16); +} diff --git a/modules/benchmark/benches.c b/modules/benchmark/benches.c index e09dedcc..c621d695 100644 --- a/modules/benchmark/benches.c +++ b/modules/benchmark/benches.c @@ -1,10 +1,10 @@ /* - * HardInfo - Displays System Information - * Copyright (C) 2003-2017 Leandro A. F. Pereira + * HardInfo - System Information and Benchmark + * Copyright (C) 2003-2017 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, version 2. + * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -26,15 +26,6 @@ gchar *CN() { \ return benchmark_include_results(bench_results[BID], BN); \ } -BENCH_CALLBACK(callback_gui, "GPU Drawing", BENCHMARK_GUI, 1); -BENCH_CALLBACK(callback_fft, "FPU FFT", BENCHMARK_FFT, 0); -BENCH_CALLBACK(callback_nqueens, "CPU N-Queens", BENCHMARK_NQUEENS, 0); -BENCH_CALLBACK(callback_raytr, "FPU Raytracing", BENCHMARK_RAYTRACE, 0); -BENCH_CALLBACK(callback_bfsh, "CPU Blowfish", BENCHMARK_BLOWFISH, 0); -BENCH_CALLBACK(callback_cryptohash, "CPU CryptoHash", BENCHMARK_CRYPTOHASH, 1); -BENCH_CALLBACK(callback_fib, "CPU Fibonacci", BENCHMARK_FIB, 0); -BENCH_CALLBACK(callback_zlib, "CPU Zlib", BENCHMARK_ZLIB, 0); - #define BENCH_SCAN_SIMPLE(SN, BF, BID) \ void SN(gboolean reload) { \ SCAN_START(); \ @@ -42,14 +33,30 @@ void SN(gboolean reload) { \ SCAN_END(); \ } -BENCH_SCAN_SIMPLE(scan_fft, benchmark_fft, BENCHMARK_FFT); -BENCH_SCAN_SIMPLE(scan_nqueens, benchmark_nqueens, BENCHMARK_NQUEENS); -BENCH_SCAN_SIMPLE(scan_raytr, benchmark_raytrace, BENCHMARK_RAYTRACE); -BENCH_SCAN_SIMPLE(scan_bfsh, benchmark_fish, BENCHMARK_BLOWFISH); -BENCH_SCAN_SIMPLE(scan_cryptohash, benchmark_cryptohash, BENCHMARK_CRYPTOHASH); -BENCH_SCAN_SIMPLE(scan_fib, benchmark_fib, BENCHMARK_FIB); -BENCH_SCAN_SIMPLE(scan_zlib, benchmark_zlib, BENCHMARK_ZLIB); +#define BENCH_SIMPLE(BID, BN, BF, R) \ + BENCH_CALLBACK(callback_##BF, BN, BID, R); \ + BENCH_SCAN_SIMPLE(scan_##BF, BF, BID); +// ID, NAME, FUNCTION, R (0 = lower is better, 1 = higher is better) +BENCH_SIMPLE(BENCHMARK_FIB, "CPU Fibonacci", benchmark_fib, 1); +BENCH_SIMPLE(BENCHMARK_NQUEENS, "CPU N-Queens", benchmark_nqueens, 1); +BENCH_SIMPLE(BENCHMARK_FFT, "FPU FFT", benchmark_fft, 1); +BENCH_SIMPLE(BENCHMARK_RAYTRACE, "FPU Raytracing (Single-thread)", benchmark_raytrace, 1); +BENCH_SIMPLE(BENCHMARK_BLOWFISH_SINGLE, "CPU Blowfish (Single-thread)", benchmark_bfish_single, 1); +BENCH_SIMPLE(BENCHMARK_BLOWFISH_THREADS, "CPU Blowfish (Multi-thread)", benchmark_bfish_threads, 1); +BENCH_SIMPLE(BENCHMARK_BLOWFISH_CORES, "CPU Blowfish (Multi-core)", benchmark_bfish_cores, 1); +BENCH_SIMPLE(BENCHMARK_ZLIB, "CPU Zlib", benchmark_zlib, 1); +BENCH_SIMPLE(BENCHMARK_CRYPTOHASH, "CPU CryptoHash", benchmark_cryptohash, 1); +BENCH_SIMPLE(BENCHMARK_SBCPU_SINGLE, "SysBench CPU (Single-thread)", benchmark_sbcpu_single, 1); +BENCH_SIMPLE(BENCHMARK_SBCPU_ALL, "SysBench CPU (Multi-thread)", benchmark_sbcpu_all, 1); +BENCH_SIMPLE(BENCHMARK_SBCPU_QUAD, "SysBench CPU (Four threads)", benchmark_sbcpu_quad, 1); +BENCH_SIMPLE(BENCHMARK_MEMORY_SINGLE, "SysBench Memory (Single-thread)", benchmark_memory_single, 1); +BENCH_SIMPLE(BENCHMARK_MEMORY_DUAL, "SysBench Memory (Two threads)", benchmark_memory_dual, 1); +BENCH_SIMPLE(BENCHMARK_MEMORY_QUAD, "SysBench Memory (Quad threads)", benchmark_memory_quad, 1); +BENCH_SIMPLE(BENCHMARK_MEMORY_ALL, "SysBench Memory (Multi-thread)", benchmark_memory_all, 1); + +#if !GTK_CHECK_VERSION(3,0,0) +BENCH_CALLBACK(callback_gui, "GPU Drawing", BENCHMARK_GUI, 1); void scan_gui(gboolean reload) { SCAN_START(); @@ -69,37 +76,178 @@ void scan_gui(gboolean reload) } SCAN_END(); } +#endif static ModuleEntry entries[] = { - {N_("CPU Blowfish"), "blowfish.png", callback_bfsh, scan_bfsh, MODULE_FLAG_NONE}, - {N_("CPU CryptoHash"), "cryptohash.png", callback_cryptohash, scan_cryptohash, MODULE_FLAG_NONE}, - {N_("CPU Fibonacci"), "nautilus.png", callback_fib, scan_fib, MODULE_FLAG_NONE}, - {N_("CPU N-Queens"), "nqueens.png", callback_nqueens, scan_nqueens, MODULE_FLAG_NONE}, - {N_("CPU Zlib"), "file-roller.png", callback_zlib, scan_zlib, MODULE_FLAG_NONE}, - {N_("FPU FFT"), "fft.png", callback_fft, scan_fft, MODULE_FLAG_NONE}, - {N_("FPU Raytracing"), "raytrace.png", callback_raytr, scan_raytr, MODULE_FLAG_NONE}, -#if !GTK_CHECK_VERSION(3,0,0) - {N_("GPU Drawing"), "module.png", callback_gui, scan_gui, MODULE_FLAG_NO_REMOTE}, + [BENCHMARK_BLOWFISH_SINGLE] = + { + N_("CPU Blowfish (Single-thread)"), + "blowfish.png", + callback_benchmark_bfish_single, + scan_benchmark_bfish_single, + MODULE_FLAG_NONE, + }, + [BENCHMARK_BLOWFISH_THREADS] = + { + N_("CPU Blowfish (Multi-thread)"), + "blowfish.png", + callback_benchmark_bfish_threads, + scan_benchmark_bfish_threads, + MODULE_FLAG_NONE, + }, + [BENCHMARK_BLOWFISH_CORES] = + { + N_("CPU Blowfish (Multi-core)"), + "blowfish.png", + callback_benchmark_bfish_cores, + scan_benchmark_bfish_cores, + MODULE_FLAG_NONE, + }, + [BENCHMARK_ZLIB] = + { + N_("CPU Zlib"), + "file-roller.png", + callback_benchmark_zlib, + scan_benchmark_zlib, + MODULE_FLAG_NONE, + }, + [BENCHMARK_CRYPTOHASH] = + { + N_("CPU CryptoHash"), + "cryptohash.png", + callback_benchmark_cryptohash, + scan_benchmark_cryptohash, + MODULE_FLAG_NONE, + }, + [BENCHMARK_FIB] = + { + N_("CPU Fibonacci"), + "nautilus.png", + callback_benchmark_fib, + scan_benchmark_fib, + MODULE_FLAG_NONE, + }, + [BENCHMARK_NQUEENS] = + { + N_("CPU N-Queens"), + "nqueens.png", + callback_benchmark_nqueens, + scan_benchmark_nqueens, + MODULE_FLAG_NONE, + }, + [BENCHMARK_FFT] = + { + N_("FPU FFT"), + "fft.png", + callback_benchmark_fft, + scan_benchmark_fft, + MODULE_FLAG_NONE, + }, + [BENCHMARK_RAYTRACE] = + { + N_("FPU Raytracing (Single-thread)"), + "raytrace.png", + callback_benchmark_raytrace, + scan_benchmark_raytrace, + MODULE_FLAG_NONE, + }, + [BENCHMARK_SBCPU_SINGLE] = + { + N_("SysBench CPU (Single-thread)"), + "processor.png", + callback_benchmark_sbcpu_single, + scan_benchmark_sbcpu_single, + MODULE_FLAG_NONE, + }, + [BENCHMARK_SBCPU_ALL] = + { + N_("SysBench CPU (Multi-thread)"), + "processor.png", + callback_benchmark_sbcpu_all, + scan_benchmark_sbcpu_all, + MODULE_FLAG_NONE, + }, + [BENCHMARK_SBCPU_QUAD] = + { + N_("SysBench CPU (Four threads)"), + "processor.png", + callback_benchmark_sbcpu_quad, + scan_benchmark_sbcpu_quad, + MODULE_FLAG_HIDE, + }, + [BENCHMARK_MEMORY_SINGLE] = + { + N_("SysBench Memory (Single-thread)"), + "memory.png", + callback_benchmark_memory_single, + scan_benchmark_memory_single, + MODULE_FLAG_NONE, + }, + [BENCHMARK_MEMORY_DUAL] = + { + N_("SysBench Memory (Two threads)"), + "memory.png", + callback_benchmark_memory_dual, + scan_benchmark_memory_dual, + MODULE_FLAG_HIDE, + }, + [BENCHMARK_MEMORY_QUAD] = + { + N_("SysBench Memory (Quad threads)"), + "memory.png", + callback_benchmark_memory_quad, + scan_benchmark_memory_quad, + MODULE_FLAG_HIDE, + }, + [BENCHMARK_MEMORY_ALL] = + { + N_("SysBench Memory (Multi-thread)"), + "memory.png", + callback_benchmark_memory_all, + scan_benchmark_memory_all, + MODULE_FLAG_NONE, + }, +#if !GTK_CHECK_VERSION(3, 0, 0) + [BENCHMARK_GUI] = + { + N_("GPU Drawing"), + "module.png", + callback_gui, + scan_gui, + MODULE_FLAG_NO_REMOTE | MODULE_FLAG_HIDE, + }, +#else + [BENCHMARK_GUI] = {"#"}, #endif - {NULL} -}; + {NULL}}; const gchar *hi_note_func(gint entry) { switch (entry) { - case BENCHMARK_CRYPTOHASH: - return _("Results in MiB/second. Higher is better."); + case BENCHMARK_SBCPU_SINGLE: + case BENCHMARK_SBCPU_QUAD: + case BENCHMARK_SBCPU_ALL: + return _("Alexey Kopytov's sysbench is required.\n" + "Results in events/second. Higher is better."); + + case BENCHMARK_MEMORY_SINGLE: + case BENCHMARK_MEMORY_DUAL: + case BENCHMARK_MEMORY_QUAD: + case BENCHMARK_MEMORY_ALL: + return _("Alexey Kopytov's sysbench is required.\n" + "Results in MiB/second. Higher is better."); + case BENCHMARK_CRYPTOHASH: + case BENCHMARK_BLOWFISH_SINGLE: + case BENCHMARK_BLOWFISH_THREADS: + case BENCHMARK_BLOWFISH_CORES: case BENCHMARK_ZLIB: case BENCHMARK_GUI: - return _("Results in HIMarks. Higher is better."); - case BENCHMARK_FFT: case BENCHMARK_RAYTRACE: - case BENCHMARK_BLOWFISH: case BENCHMARK_FIB: case BENCHMARK_NQUEENS: - return _("Results in seconds. Lower is better."); + return _("Results in HIMarks. Higher is better."); } return NULL; diff --git a/modules/benchmark/blowfish.c b/modules/benchmark/blowfish.c index 2aa11a2a..f8d2e14a 100644 --- a/modules/benchmark/blowfish.c +++ b/modules/benchmark/blowfish.c @@ -491,48 +491,3 @@ void Blowfish_Init(BLOWFISH_CTX * ctx, unsigned char *key, int keyLen) } } } - -static gpointer -parallel_blowfish(unsigned int start, unsigned int end, void *data, gint thread_number) -{ - BLOWFISH_CTX ctx; - unsigned int i; - unsigned long L, R; - - L = 0xBEBACAFE; - R = 0xDEADBEEF; - - for (i = start; i <= end; i++) { - Blowfish_Init(&ctx, (unsigned char*)data, 65536); - Blowfish_Encrypt(&ctx, &L, &R); - Blowfish_Decrypt(&ctx, &L, &R); - } - - return NULL; -} - -void -benchmark_fish(void) -{ - bench_value r = EMPTY_BENCH_VALUE; - - gchar *tmpsrc; - gchar *bdata_path; - - bdata_path = g_build_filename(params.path_data, "benchmark.data", NULL); - if (!g_file_get_contents(bdata_path, &tmpsrc, NULL, NULL)) { - bench_results[BENCHMARK_BLOWFISH] = r; - g_free(bdata_path); - return; - } - - shell_view_set_enabled(FALSE); - shell_status_update("Performing Blowfish benchmark..."); - - r = benchmark_parallel_for(0, 0, 50000, parallel_blowfish, tmpsrc); - r.result = r.elapsed_time; - - bench_results[BENCHMARK_BLOWFISH] = r; - g_free(bdata_path); - g_free(tmpsrc); -} diff --git a/modules/benchmark/blowfish2.c b/modules/benchmark/blowfish2.c new file mode 100644 index 00000000..7426bef9 --- /dev/null +++ b/modules/benchmark/blowfish2.c @@ -0,0 +1,83 @@ +/* + * HardInfo - Displays System Information + * Copyright (C) 2003-2017 L. A. F. Pereira + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 2 or later. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include "hardinfo.h" +#include "benchmark.h" +#include "blowfish.h" + +/* if anything changes in this block, increment revision */ +#define BENCH_REVISION 1 +#define CRUNCH_TIME 7 +#define BENCH_DATA_SIZE 65536 +#define BENCH_DATA_MD5 "c25cf5c889f7bead2ff39788eedae37b" +#define BLOW_KEY "Has my shampoo arrived?" +#define BLOW_KEY_MD5 "6eac709cca51a228bfa70150c9c5a7c4" + +static gpointer bfish_exec(const void *in_data, gint thread_number) +{ + unsigned char key[] = BLOW_KEY; + unsigned char *data = NULL; + unsigned long data_len = BENCH_DATA_SIZE, i = 0; + BLOWFISH_CTX ctx; + + data = malloc(BENCH_DATA_SIZE); + memcpy(data, in_data, BENCH_DATA_SIZE); + + Blowfish_Init(&ctx, key, strlen(key)); + for(i = 0; i < data_len; i += 8) { + Blowfish_Encrypt(&ctx, (unsigned long*)&data[i], (unsigned long*)&data[i+4]); + } + for(i = 0; i < data_len; i += 8) { + Blowfish_Decrypt(&ctx, (unsigned long*)&data[i], (unsigned long*)&data[i+4]); + } + + free(data); + return NULL; +} + +void benchmark_bfish_do(int threads, int entry, const char *status) +{ + bench_value r = EMPTY_BENCH_VALUE; + gchar *test_data = get_test_data(BENCH_DATA_SIZE); + if (!test_data) return; + + shell_view_set_enabled(FALSE); + shell_status_update(status); + + gchar *k = md5_digest_str(BLOW_KEY, strlen(BLOW_KEY)); + if (!SEQ(k, BLOW_KEY_MD5)) + bench_msg("test key has different md5sum: expected %s, actual %s", BLOW_KEY_MD5, k); + gchar *d = md5_digest_str(test_data, BENCH_DATA_SIZE); + if (!SEQ(d, BENCH_DATA_MD5)) + bench_msg("test data has different md5sum: expected %s, actual %s", BENCH_DATA_MD5, d); + + r = benchmark_crunch_for(CRUNCH_TIME, threads, bfish_exec, test_data); + r.result /= 100; + r.revision = BENCH_REVISION; + snprintf(r.extra, 255, "%0.1fs, k:%s, d:%s", (double)CRUNCH_TIME, k, d); + + g_free(test_data); + g_free(k); + g_free(d); + + bench_results[entry] = r; +} + +void benchmark_bfish_threads(void) { benchmark_bfish_do(0, BENCHMARK_BLOWFISH_THREADS, "Performing Blowfish benchmark (multi-thread)..."); } +void benchmark_bfish_single(void) { benchmark_bfish_do(1, BENCHMARK_BLOWFISH_SINGLE, "Performing Blowfish benchmark (single-thread)..."); } +void benchmark_bfish_cores(void) { benchmark_bfish_do(-1, BENCHMARK_BLOWFISH_CORES, "Performing Blowfish benchmark (multi-core)..."); } diff --git a/modules/benchmark/cryptohash.c b/modules/benchmark/cryptohash.c index 6150f3ef..6daef545 100644 --- a/modules/benchmark/cryptohash.c +++ b/modules/benchmark/cryptohash.c @@ -1,10 +1,10 @@ /* - * HardInfo - Displays System Information - * Copyright (C) 2003-2007 Leandro A. F. Pereira + * HardInfo - System Information and Benchmark + * Copyright (C) 2003-2007 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, version 2. + * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -20,7 +20,14 @@ #include "sha1.h" #include "benchmark.h" -void inline md5_step(char *data, glong srclen) +/* if anything changes in this block, increment revision */ +#define BENCH_REVISION 2 +#define BENCH_DATA_SIZE 65536 +#define CRUNCH_TIME 5 +#define BENCH_DATA_MD5 "c25cf5c889f7bead2ff39788eedae37b" +#define STEPS 250 + +inline void md5_step(char *data, glong srclen) { struct MD5Context ctx; guchar checksum[16]; @@ -30,7 +37,7 @@ void inline md5_step(char *data, glong srclen) MD5Final(checksum, &ctx); } -void inline sha1_step(char *data, glong srclen) +inline void sha1_step(char *data, glong srclen) { SHA1_CTX ctx; guchar checksum[20]; @@ -40,15 +47,15 @@ void inline sha1_step(char *data, glong srclen) SHA1Final(checksum, &ctx); } -static gpointer cryptohash_for(unsigned int start, unsigned int end, void *data, gint thread_number) +static gpointer cryptohash_for(void *in_data, gint thread_number) { unsigned int i; - for (i = start; i <= end; i++) { + for (i = 0;i <= STEPS; i++) { if (i & 1) { - md5_step(data, 65536); + md5_step(in_data, BENCH_DATA_SIZE); } else { - sha1_step(data, 65536); + sha1_step(in_data, BENCH_DATA_SIZE); } } @@ -59,22 +66,24 @@ void benchmark_cryptohash(void) { bench_value r = EMPTY_BENCH_VALUE; - gchar *tmpsrc, *bdata_path; - - bdata_path = g_build_filename(params.path_data, "benchmark.data", NULL); - if (!g_file_get_contents(bdata_path, &tmpsrc, NULL, NULL)) { - g_free(bdata_path); - return; - } + gchar *test_data = get_test_data(BENCH_DATA_SIZE); + if (!test_data) return; shell_view_set_enabled(FALSE); shell_status_update("Running CryptoHash benchmark..."); - r = benchmark_parallel_for(0, 0, 5000, cryptohash_for, tmpsrc); + gchar *d = md5_digest_str(test_data, BENCH_DATA_SIZE); + if (!SEQ(d, BENCH_DATA_MD5)) + bench_msg("test data has different md5sum: expected %s, actual %s", BENCH_DATA_MD5, d); + + r = benchmark_crunch_for(CRUNCH_TIME, 0, cryptohash_for, test_data); + r.revision = BENCH_REVISION; + snprintf(r.extra, 255, "r:%d, d:%s", STEPS, d); + + g_free(test_data); + g_free(d); - g_free(bdata_path); - g_free(tmpsrc); + r.result /= 10; - r.result = 312.0 / r.elapsed_time; //TODO: explain in code comments bench_results[BENCHMARK_CRYPTOHASH] = r; } diff --git a/modules/benchmark/drawing.c b/modules/benchmark/drawing.c index d0905954..e92b9d62 100644 --- a/modules/benchmark/drawing.c +++ b/modules/benchmark/drawing.c @@ -1,10 +1,10 @@ /* * HardInfo - Displays System Information - * Copyright (C) 2003-2007 Leandro A. F. Pereira + * Copyright (C) 2003-2007 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, version 2. + * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of diff --git a/modules/benchmark/fbench.c b/modules/benchmark/fbench.c index b5afc1bc..cf1ff934 100644 --- a/modules/benchmark/fbench.c +++ b/modules/benchmark/fbench.c @@ -277,9 +277,7 @@ static int itercount; /* The iteration counter for the main loop optimise out the loop over the ray tracing code. */ -#ifndef ITERATIONS -#define ITERATIONS 1000 -#endif +#define ITERATIONS 300 static int niter = ITERATIONS; /* Iteration counter */ #if 0 @@ -690,8 +688,6 @@ void fbench() spectral_line[7] = 4340.477; /* G' */ spectral_line[8] = 3968.494; /* H */ - niter = 3000; - /* Load test case into working array */ clear_aperture = 4.0; @@ -701,15 +697,21 @@ void fbench() s[i + 1][j + 1] = testcase[i][j]; for (itercount = 0; itercount < niter; itercount++) { - for (paraxial = 0; paraxial <= 1; paraxial++) { + /* Do main trace in D light */ - /* Do main trace in D light */ + paraxial = FALSE; - trace_line(4, clear_aperture / 2.0); - od_sa[paraxial][0] = object_distance; - od_sa[paraxial][1] = axis_slope_angle; - } - paraxial = FALSE; + trace_line(4, clear_aperture / 2.0); + od_sa[0][0] = object_distance; + od_sa[0][1] = axis_slope_angle; + + paraxial = TRUE; + + trace_line(4, clear_aperture / 2.0); + od_sa[1][0] = object_distance; + od_sa[1][1] = axis_slope_angle; + + paraxial = FALSE; /* Trace marginal ray in C */ diff --git a/modules/benchmark/fft.c b/modules/benchmark/fft.c index caa52d3d..503a7aaf 100644 --- a/modules/benchmark/fft.c +++ b/modules/benchmark/fft.c @@ -1,10 +1,10 @@ /* - * HardInfo - Displays System Information - * Copyright (C) 2003-2007 Leandro A. F. Pereira + * HardInfo - System Information and Benchmark + * Copyright (C) 2003-2007 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, version 2. + * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -20,48 +20,51 @@ #include "benchmark.h" #include "fftbench.h" -static gpointer fft_for(unsigned int start, unsigned int end, void *data, gint thread_number) +/* if anything changes in this block, increment revision */ +#define BENCH_REVISION 2 +#define CRUNCH_TIME 5 + +static gpointer fft_for(void *in_data, gint thread_number) { unsigned int i; - FFTBench **benches = (FFTBench **)data; + FFTBench **benches = (FFTBench **)in_data; FFTBench *fftbench = (FFTBench *)(benches[thread_number]); - for (i = start; i <= end; i++) { - fft_bench_run(fftbench); - } + fft_bench_run(benches[thread_number]); return NULL; } -#define FFT_MAXT 4 - void benchmark_fft(void) { + int cpu_procs, cpu_cores, cpu_threads, cpu_nodes; bench_value r = EMPTY_BENCH_VALUE; int n_cores, i; gchar *temp; - FFTBench **benches; + FFTBench **benches=NULL; shell_view_set_enabled(FALSE); shell_status_update("Running FFT benchmark..."); + cpu_procs_cores_threads_nodes(&cpu_procs, &cpu_cores, &cpu_threads, &cpu_nodes); + /* Pre-allocate all benchmarks */ - benches = g_new0(FFTBench *, FFT_MAXT); - for (i = 0; i < FFT_MAXT; i++) { - benches[i] = fft_bench_new(); - } + benches = g_new0(FFTBench *, cpu_threads); + for (i = 0; i < cpu_threads; i++) {benches[i] = fft_bench_new();} /* Run the benchmark */ - r = benchmark_parallel_for(FFT_MAXT, 0, FFT_MAXT, fft_for, benches); + r = benchmark_crunch_for(CRUNCH_TIME, 0, fft_for, benches); /* Free up the memory */ - for (i = 0; i < FFT_MAXT; i++) { - fft_bench_free(benches[i]); + for (i = 0; i < cpu_threads; i++) { + fft_bench_free(benches[i]); } g_free(benches); - r.result = r.elapsed_time; + r.result /= 100; + + r.revision = BENCH_REVISION; bench_results[BENCHMARK_FFT] = r; } diff --git a/modules/benchmark/fftbench.c b/modules/benchmark/fftbench.c index 89fd5a73..9449cffd 100644 --- a/modules/benchmark/fftbench.c +++ b/modules/benchmark/fftbench.c @@ -59,9 +59,9 @@ static double random_double() return result; } -static const int N = 800; -static const int NM1 = 799; // N - 1 -static const int NP1 = 801; // N + 1 +static const int N = 100; +static const int NM1 = 99; // N - 1 +static const int NP1 = 101; // N + 1 static void lup_decompose(FFTBench *fftbench) { diff --git a/modules/benchmark/fib.c b/modules/benchmark/fib.c index d75ac367..2bec8bed 100644 --- a/modules/benchmark/fib.c +++ b/modules/benchmark/fib.c @@ -1,10 +1,10 @@ /* - * HardInfo - Displays System Information - * Copyright (C) 2003-2007 Leandro A. F. Pereira + * HardInfo - System Information and Benchmark + * Copyright (C) 2003-2007 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, version 2. + * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -18,6 +18,11 @@ #include "benchmark.h" +/* if anything changes in this block, increment revision */ +#define BENCH_REVISION 2 +#define ANSWER 25 +#define CRUNCH_TIME 5 + gulong fib(gulong n) { if (n == 0) @@ -27,6 +32,14 @@ gulong fib(gulong n) return fib(n - 1) + fib(n - 2); } +static gpointer fib_for(void *in_data, gint thread_number) +{ + fib(ANSWER); + + return NULL; +} + + void benchmark_fib(void) { @@ -34,19 +47,15 @@ benchmark_fib(void) bench_value r = EMPTY_BENCH_VALUE; shell_view_set_enabled(FALSE); - shell_status_update("Calculating the 42nd Fibonacci number..."); - - g_timer_reset(timer); - g_timer_start(timer); + shell_status_update("Calculating Fibonacci number..."); - fib(42); + r = benchmark_crunch_for(CRUNCH_TIME, 0, fib_for, NULL); + //r.threads_used = 1; - g_timer_stop(timer); - r.elapsed_time = g_timer_elapsed(timer, NULL); - g_timer_destroy(timer); + r.result /= 100; - r.threads_used = 1; - r.result = r.elapsed_time; + r.revision = BENCH_REVISION; + snprintf(r.extra, 255, "a:%d", ANSWER); bench_results[BENCHMARK_FIB] = r; } diff --git a/modules/benchmark/guibench.c b/modules/benchmark/guibench.c index b9573278..0faf6b69 100644 --- a/modules/benchmark/guibench.c +++ b/modules/benchmark/guibench.c @@ -1,10 +1,10 @@ /* * HardInfo - Displays System Information - * Copyright (C) 2003-2009 Leandro A. F. Pereira + * Copyright (C) 2003-2009 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, version 2. + * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -108,7 +108,7 @@ static double test_icons(GtkWindow *window) gc = gdk_gc_new(GDK_DRAWABLE(gdk_window)); timer = g_timer_new(); - pixbufs[0] = icon_cache_get_pixbuf("logo.png"); + pixbufs[0] = icon_cache_get_pixbuf("hardinfo2.png"); pixbufs[1] = icon_cache_get_pixbuf("syncmanager.png"); pixbufs[2] = icon_cache_get_pixbuf("report-large.png"); diff --git a/modules/benchmark/nqueens.c b/modules/benchmark/nqueens.c index 78293abb..6aad7638 100644 --- a/modules/benchmark/nqueens.c +++ b/modules/benchmark/nqueens.c @@ -9,29 +9,30 @@ #include "hardinfo.h" #include "benchmark.h" -#define QUEENS 11 +/* if anything changes in this block, increment revision */ +#define BENCH_REVISION 2 +#define QUEENS 6 +#define CRUNCH_TIME 5 int row[QUEENS]; -bool safe(int x, int y) -{ +bool safe(int x, int y) { int i; for (i = 1; i <= y; i++) - if (row[y - i] == x || row[y - i] == x - i || row[y - i] == x + i) - return false; + if (row[y - i] == x || row[y - i] == x - i || row[y - i] == x + i) + return false; return true; } -int nqueens(int y) -{ +int nqueens(int y) { int x; for (x = 0; x < QUEENS; x++) { - if (safe((row[y - 1] = x), y - 1)) { - if (y < QUEENS) { - nqueens(y + 1); - } else { - break; + if (safe((row[y - 1] = x), y - 1)) { + if (y < QUEENS) { + nqueens(y + 1); + } else { + break; } } } @@ -39,13 +40,9 @@ int nqueens(int y) return 0; } -static gpointer nqueens_for(unsigned int start, unsigned int end, void *data, gint thread_number) +static gpointer nqueens_for(void *data, gint thread_number) { - unsigned int i; - - for (i = start; i <= end; i++) { - nqueens(0); - } + nqueens(0); return NULL; } @@ -58,9 +55,13 @@ benchmark_nqueens(void) shell_view_set_enabled(FALSE); shell_status_update("Running N-Queens benchmark..."); - r = benchmark_parallel_for(0, 0, 10, nqueens_for, NULL); - r.result = r.elapsed_time; + r = benchmark_crunch_for(CRUNCH_TIME, 0, nqueens_for, NULL); + + r.revision = BENCH_REVISION; + snprintf(r.extra, 255, "q:%d", QUEENS); + r.result /= 25; + bench_results[BENCHMARK_NQUEENS] = r; } diff --git a/modules/benchmark/raytrace.c b/modules/benchmark/raytrace.c index c7963583..bddc3232 100644 --- a/modules/benchmark/raytrace.c +++ b/modules/benchmark/raytrace.c @@ -1,10 +1,10 @@ /* - * HardInfo - Displays System Information - * Copyright (C) 2003-2007 Leandro A. F. Pereira + * HardInfo - System Information and Benchmark + * Copyright (C) 2003-2007 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, version 2. + * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -18,16 +18,17 @@ #include "benchmark.h" +/* if anything changes in this block, increment revision */ +#define BENCH_REVISION 2 +#define CRUNCH_TIME 5 + void fbench(); /* fbench.c */ -static gpointer -parallel_raytrace(unsigned int start, unsigned int end, gpointer data, gint thread_number) +static gpointer parallel_raytrace(void *in_data, gint thread_number) { unsigned int i; - for (i = start; i <= end; i++) { - fbench(); - } + fbench(); return NULL; } @@ -36,13 +37,20 @@ void benchmark_raytrace(void) { bench_value r = EMPTY_BENCH_VALUE; + gchar *test_data = get_test_data(1000); shell_view_set_enabled(FALSE); shell_status_update("Performing John Walker's FBENCH..."); - r = benchmark_parallel_for(0, 0, 1000, parallel_raytrace, NULL); - r.result = r.elapsed_time; + r = benchmark_crunch_for(CRUNCH_TIME, 1, parallel_raytrace, test_data); + + r.revision = BENCH_REVISION; + snprintf(r.extra, 255, "r:%d", 500);//niter from fbench + + g_free(test_data); + r.result /= 10; + bench_results[BENCHMARK_RAYTRACE] = r; } diff --git a/modules/benchmark/sha1.c b/modules/benchmark/sha1.c index b94ce254..3b213218 100644 --- a/modules/benchmark/sha1.c +++ b/modules/benchmark/sha1.c @@ -47,7 +47,7 @@ A million repetitions of "a" /* Hash a single 512-bit block. This is the core of the algorithm. */ -void SHA1Transform(guint32 state[5], guchar buffer[64]) +void SHA1Transform(guint32 state[20], guchar buffer[64]) { guint32 a, b, c, d, e; typedef union { diff --git a/modules/benchmark/sysbench.c b/modules/benchmark/sysbench.c new file mode 100644 index 00000000..5c45831d --- /dev/null +++ b/modules/benchmark/sysbench.c @@ -0,0 +1,270 @@ +/* + * HardInfo - Displays System Information + * Copyright (C) 2003-2017 L. A. F. Pereira + * Copyright (C) 2019 Burt P. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 2 or later. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include "hardinfo.h" +#include "benchmark.h" +#include "cpu_util.h" + +#define STATMSG "Performing Alexey Kopytov's sysbench memory benchmark" + +/* known to work with: + * sysbench 0.4.12 --> r:4012 + * sysbench 1.0.11 --> r:1000011 + * sysbench 1.0.15 --> r:1000015 + */ + +struct sysbench_ctx { + char *test; + int threads; + int max_time; + char *parms_test; + bench_value r; +}; + +int sysbench_version() { + int ret = -1; + int v1 = 0, v2 = 0, v3 = 0, mc = 0; + gboolean spawned; + gchar *out, *err, *p, *next_nl; + + spawned = g_spawn_command_line_sync("sysbench --version", + &out, &err, NULL, NULL); + if (spawned) { + ret = 0; + p = out; + while(next_nl = strchr(p, '\n')) { + *next_nl = 0; + /* version */ + mc = sscanf(p, "sysbench %d.%d.%d", &v1, &v2, &v3); + if (mc >= 1) { + ret += v1 * 1000000; + ret += v2 * 1000; + ret += v3; + break; + } + p = next_nl + 1; + } + g_free(out); + g_free(err); + } + return ret; +} + +static gboolean sysbench_run(struct sysbench_ctx *ctx, int expecting_version) { + gboolean spawned; + gchar *out, *err, *p, *next_nl; + + int v1 = 0, v2 = 0, v3 = 0, mc = 0; + char *pp = NULL; + + if (!ctx) return FALSE; + if (!ctx->test) return FALSE; + if (!ctx->parms_test) return FALSE; + if (!ctx->threads) ctx->threads = 1; + ctx->r.threads_used = ctx->threads; + if (!ctx->max_time) ctx->max_time = 7; + + gchar *cmd_line = NULL; + snprintf(ctx->r.extra, 255, "--time=%d %s", ctx->max_time, ctx->parms_test); + util_compress_space(ctx->r.extra); + + if (!expecting_version) + expecting_version = sysbench_version(); + if (expecting_version < 1000000) { + /* v0.x.x: sysbench [general-options]... --test= [test-options]... command */ + cmd_line = g_strdup_printf("sysbench --num-threads=%d --max-time=%d --test=%s %s run", ctx->threads, ctx->max_time, ctx->test, ctx->parms_test); + } else { + /* v1.x.x: sysbench [options]... [testname] [command] */ + cmd_line = g_strdup_printf("sysbench --threads=%d --time=%d %s %s run", ctx->threads, ctx->max_time, ctx->parms_test, ctx->test); + } + //bench_msg("\ncmd_line: %s", cmd_line); + + spawned = g_spawn_command_line_sync(cmd_line, + &out, &err, NULL, NULL); + g_free(cmd_line); + if (spawned) { + p = out; + while(next_nl = strchr(p, '\n')) { + *next_nl = 0; + + if (strstr(p, "Usage:")) { + /* We're hosed */ + goto sysbench_failed; + } + + /* version */ + mc = sscanf(p, "sysbench %d.%d.%d", &v1, &v2, &v3); + if (mc >= 1) { + ctx->r.revision = 0; + ctx->r.revision += v1 * 1000000; + ctx->r.revision += v2 * 1000; + ctx->r.revision += v3; + } + + /* total_time */ + if (pp = strstr(p, "total time:")) { + pp = strchr(pp, ':') + 1; + ctx->r.elapsed_time = strtof(pp, NULL); + } + + /* result */ + if (SEQ(ctx->test, "memory") ) { + // 57894.30 MiB transferred (5787.59 MiB/sec) + if (pp = strstr(p, " transferred (")) { + pp = strchr(pp, '(') + 1; + ctx->r.result = strtof(pp, NULL); + } + } + if (SEQ(ctx->test, "cpu") ) { + if (ctx->r.revision < 1000000) { + // there is not a nice result line + // to grab in version 0.x... + // total time: 7.0016s + // total number of events: 873 + + /* should already have "total time:" */ + if (pp = strstr(p, " total number of events:")) { + pp = strchr(pp, ':') + 1; + ctx->r.result = strtof(pp, NULL); + ctx->r.result /= ctx->r.elapsed_time; + } + } + if (ctx->r.revision >= 1000000) { + // events per second: 1674.97 + if (pp = strstr(p, " events per second:")) { + pp = strchr(pp, ':') + 1; + ctx->r.result = strtof(pp, NULL); + } + } + } + + p = next_nl + 1; + } + g_free(out); + g_free(err); + } else { + bench_msg("\nfailed to spawn sysbench"); + sleep(5); + } + + if (ctx->r.result == -1) + goto sysbench_failed; + + return spawned; + +sysbench_failed: + bench_msg("\nfailed to configure sysbench"); + g_free(out); + g_free(err); + return 0; +} + +void benchmark_memory_run(int threads, int result_index) { + int cpu_procs, cpu_cores, cpu_threads, cpu_nodes; + + cpu_procs_cores_threads_nodes(&cpu_procs, &cpu_cores, &cpu_threads, &cpu_nodes); + + struct sysbench_ctx ctx = { + .test = "memory", + .threads = threads>0 ? threads : cpu_threads, + .parms_test = "", + .r = EMPTY_BENCH_VALUE}; + + int sbv = sysbench_version(); + if (BENCH_PTR_BITS > 32 && sbv >= 1000011) { + ctx.parms_test = + " --memory-block-size=1K" + " --memory-total-size=100G" + " --memory-scope=global" + " --memory-hugetlb=off" + " --memory-oper=write" + " --memory-access-mode=seq"; + } else { + /* safer set */ + ctx.parms_test = + " --memory-block-size=1K" + " --memory-total-size=3056M" + " --memory-scope=global" + " --memory-hugetlb=off" + " --memory-oper=write" + " --memory-access-mode=seq"; + } + + shell_view_set_enabled(FALSE); + char msg[128] = ""; + snprintf(msg, 128, "%s (threads: %d)", STATMSG, threads); + shell_status_update(msg); + + sysbench_run(&ctx, sbv); + bench_results[result_index] = ctx.r; +} + +void benchmark_memory_single(void) { benchmark_memory_run(1, BENCHMARK_MEMORY_SINGLE); } +void benchmark_memory_dual(void) { benchmark_memory_run(2, BENCHMARK_MEMORY_DUAL); } +void benchmark_memory_quad(void) { benchmark_memory_run(4, BENCHMARK_MEMORY_QUAD); } +void benchmark_memory_all(void) { benchmark_memory_run(0, BENCHMARK_MEMORY_ALL); } + +void benchmark_sbcpu_single(void) { + struct sysbench_ctx ctx = { + .test = "cpu", + .threads = 1, + .parms_test = + "--cpu-max-prime=10000", + .r = EMPTY_BENCH_VALUE}; + + shell_view_set_enabled(FALSE); + shell_status_update(STATMSG " (single thread)..."); + + sysbench_run(&ctx, 0); + bench_results[BENCHMARK_SBCPU_SINGLE] = ctx.r; +} + +void benchmark_sbcpu_all(void) { + int cpu_procs, cpu_cores, cpu_threads, cpu_nodes; + + cpu_procs_cores_threads_nodes(&cpu_procs, &cpu_cores, &cpu_threads, &cpu_nodes); + + struct sysbench_ctx ctx = { + .test = "cpu", + .threads = cpu_threads, + .parms_test = + "--cpu-max-prime=10000", + .r = EMPTY_BENCH_VALUE}; + + shell_view_set_enabled(FALSE); + shell_status_update(STATMSG " (Multi-thread)..."); + + sysbench_run(&ctx, 0); + bench_results[BENCHMARK_SBCPU_ALL] = ctx.r; +} + +void benchmark_sbcpu_quad(void) { + struct sysbench_ctx ctx = { + .test = "cpu", + .threads = 4, + .parms_test = + "--cpu-max-prime=10000", + .r = EMPTY_BENCH_VALUE}; + + shell_view_set_enabled(FALSE); + shell_status_update(STATMSG " (Four thread)..."); + + sysbench_run(&ctx, 0); + bench_results[BENCHMARK_SBCPU_QUAD] = ctx.r; +} diff --git a/modules/benchmark/zlib.c b/modules/benchmark/zlib.c index 2ded59a4..2045969f 100644 --- a/modules/benchmark/zlib.c +++ b/modules/benchmark/zlib.c @@ -1,10 +1,10 @@ /* * HardInfo - Displays System Information - * Copyright (C) 2017 Leandro A. F. Pereira + * Copyright (C) 2017 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, version 2. + * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -22,23 +22,39 @@ #include "benchmark.h" -static gpointer zlib_for(unsigned int start, unsigned int end, void *data, gint thread_number) -{ +/* zip/unzip 256KB blocks for 7 seconds + * result is number of full completions / 100 */ + +/* if anything changes in this block, increment revision */ +#define BENCH_REVISION 3 +#define BENCH_DATA_SIZE 262144 +#define BENCH_DATA_MD5 "3753b649c4fa9ea4576fc8f89a773de2" +#define CRUNCH_TIME 7 +#define VERIFY_RESULT 1 + +static unsigned int zlib_errors = 0; + +static gpointer zlib_for(void *in_data, gint thread_number) { char *compressed; - uLong bound = compressBound(bound); + uLong bound = compressBound(BENCH_DATA_SIZE); unsigned int i; compressed = malloc(bound); if (!compressed) return NULL; - for (i = start; i <= end; i++) { - char uncompressed[65536]; - uLong compressedBound = bound; - uLong destBound = sizeof(uncompressed); + char uncompressed[BENCH_DATA_SIZE]; + uLong compressedBound = bound; + uLong destBound = sizeof(uncompressed); - compress(compressed, &compressedBound, data, 65536); - uncompress(uncompressed, &destBound, compressed, compressedBound); + compress(compressed, &compressedBound, in_data, BENCH_DATA_SIZE); + uncompress(uncompressed, &destBound, compressed, compressedBound); + if (VERIFY_RESULT) { + int cr = memcmp(in_data, uncompressed, BENCH_DATA_SIZE); + if (!!cr) { + zlib_errors++; + bench_msg("zlib error: uncompressed != original"); + } } free(compressed); @@ -50,24 +66,23 @@ void benchmark_zlib(void) { bench_value r = EMPTY_BENCH_VALUE; - gchar *tmpsrc, *bdata_path; - - bdata_path = g_build_filename(params.path_data, "benchmark.data", NULL); - if (!g_file_get_contents(bdata_path, &tmpsrc, NULL, NULL)) { - g_free(bdata_path); + gchar *test_data = get_test_data(BENCH_DATA_SIZE); + if (!test_data) return; - } shell_view_set_enabled(FALSE); shell_status_update("Running Zlib benchmark..."); - r = benchmark_parallel_for(0, 0, 50000, zlib_for, tmpsrc); + gchar *d = md5_digest_str(test_data, BENCH_DATA_SIZE); + if (!SEQ(d, BENCH_DATA_MD5)) + bench_msg("test data has different md5sum: expected %s, actual %s", BENCH_DATA_MD5, d); - g_free(bdata_path); - g_free(tmpsrc); - - //TODO: explain in code comments - gdouble marks = (50000. * 65536.) / (r.elapsed_time * 840205128.); - r.result = marks; + r = benchmark_crunch_for(CRUNCH_TIME, 0, zlib_for, test_data); + r.result /= 100; + r.revision = BENCH_REVISION; + snprintf(r.extra, 255, "zlib %s (built against: %s), d:%s, e:%d", zlib_version, ZLIB_VERSION, d, zlib_errors); bench_results[BENCHMARK_ZLIB] = r; + + g_free(test_data); + g_free(d); } diff --git a/modules/computer.c b/modules/computer.c index ea6762a7..fff8ba36 100644 --- a/modules/computer.c +++ b/modules/computer.c @@ -1,10 +1,10 @@ /* * HardInfo - Displays System Information - * Copyright (C) 2003-2008 Leandro A. F. Pereira + * Copyright (C) 2003-2008 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, version 2. + * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -38,12 +38,16 @@ #include "info.h" +#define THISORUNK(t) ( (t) ? t : _("(Unknown)") ) + /* Callbacks */ gchar *callback_summary(void); gchar *callback_os(void); +gchar *callback_security(void); gchar *callback_modules(void); gchar *callback_boots(void); gchar *callback_locales(void); +gchar *callback_memory_usage(); gchar *callback_fs(void); gchar *callback_display(void); gchar *callback_network(void); @@ -57,10 +61,12 @@ gchar *callback_dev(void); /* Scan callbacks */ void scan_summary(gboolean reload); void scan_os(gboolean reload); +void scan_security(gboolean reload); void scan_modules(gboolean reload); void scan_boots(gboolean reload); void scan_locales(gboolean reload); void scan_fs(gboolean reload); +void scan_memory_usage(gboolean reload); void scan_display(gboolean reload); void scan_network(gboolean reload); void scan_users(gboolean reload); @@ -70,26 +76,46 @@ void scan_env_var(gboolean reload); void scan_dev(gboolean reload); #endif /* GLIB_CHECK_VERSION(2,14,0) */ +enum { + ENTRY_SUMMARY, + ENTRY_OS, + ENTRY_SECURITY, + ENTRY_KMOD, + ENTRY_BOOTS, + ENTRY_LANGUAGES, + ENTRY_MEMORY_USAGE, + ENTRY_FS, + ENTRY_DISPLAY, + ENTRY_ENV, + ENTRY_DEVEL, + ENTRY_USERS, + ENTRY_GROUPS +}; + static ModuleEntry entries[] = { - {N_("Summary"), "summary.png", callback_summary, scan_summary, MODULE_FLAG_NONE}, - {N_("Operating System"), "os.png", callback_os, scan_os, MODULE_FLAG_NONE}, - {N_("Kernel Modules"), "module.png", callback_modules, scan_modules, MODULE_FLAG_NONE}, - {N_("Boots"), "boot.png", callback_boots, scan_boots, MODULE_FLAG_NONE}, - {N_("Languages"), "language.png", callback_locales, scan_locales, MODULE_FLAG_NONE}, - {N_("Filesystems"), "dev_removable.png", callback_fs, scan_fs, MODULE_FLAG_NONE}, - {N_("Display"), "monitor.png", callback_display, scan_display, MODULE_FLAG_NONE}, - {N_("Environment Variables"), "environment.png", callback_env_var, scan_env_var, MODULE_FLAG_NONE}, + [ENTRY_SUMMARY] = {N_("Summary"), "summary.png", callback_summary, scan_summary, MODULE_FLAG_NONE}, + [ENTRY_OS] = {N_("Operating System"), "os.png", callback_os, scan_os, MODULE_FLAG_NONE}, + [ENTRY_SECURITY] = {N_("Security"), "security.png", callback_security, scan_security, MODULE_FLAG_NONE}, + [ENTRY_KMOD] = {N_("Kernel Modules"), "module.png", callback_modules, scan_modules, MODULE_FLAG_NONE}, + [ENTRY_BOOTS] = {N_("Boots"), "boot.png", callback_boots, scan_boots, MODULE_FLAG_NONE}, + [ENTRY_LANGUAGES] = {N_("Languages"), "language.png", callback_locales, scan_locales, MODULE_FLAG_NONE}, + [ENTRY_MEMORY_USAGE] = {N_("Memory Usage"), "memory.png", callback_memory_usage, scan_memory_usage, MODULE_FLAG_NONE}, + [ENTRY_FS] = {N_("Filesystems"), "dev_removable.png", callback_fs, scan_fs, MODULE_FLAG_NONE}, + [ENTRY_DISPLAY] = {N_("Display"), "monitor.png", callback_display, scan_display, MODULE_FLAG_NONE}, + [ENTRY_ENV] = {N_("Environment Variables"), "environment.png", callback_env_var, scan_env_var, MODULE_FLAG_NONE}, #if GLIB_CHECK_VERSION(2,14,0) - {N_("Development"), "devel.png", callback_dev, scan_dev, MODULE_FLAG_NONE}, + [ENTRY_DEVEL] = {N_("Development"), "devel.png", callback_dev, scan_dev, MODULE_FLAG_NONE}, +#else + [ENTRY_DEVEL] = {N_("Development"), "devel.png", callback_dev, scan_dev, MODULE_FLAG_HIDE}, #endif /* GLIB_CHECK_VERSION(2,14,0) */ - {N_("Users"), "users.png", callback_users, scan_users, MODULE_FLAG_NONE}, - {N_("Groups"), "users.png", callback_groups, scan_groups, MODULE_FLAG_NONE}, + [ENTRY_USERS] = {N_("Users"), "users.png", callback_users, scan_users, MODULE_FLAG_NONE}, + [ENTRY_GROUPS] = {N_("Groups"), "users.png", callback_groups, scan_groups, MODULE_FLAG_NONE}, {NULL}, }; - gchar *module_list = NULL; Computer *computer = NULL; +gchar *meminfo = NULL; gchar *hi_more_info(gchar * entry) { @@ -101,27 +127,42 @@ gchar *hi_more_info(gchar * entry) return g_strdup_printf("[%s]", entry); } +/* a g_str_equal() where either may be null */ +#define g_str_equal0(a,b) (g_strcmp0(a,b) == 0) + gchar *hi_get_field(gchar * field) { + gchar *tag, *label; + key_get_components(field, NULL, &tag, NULL, &label, NULL, TRUE); + gchar *tmp; - if (g_str_equal(field, _("Memory"))) { + if (g_str_equal0(label, _("Memory"))) { MemoryInfo *mi = computer_get_memory(); tmp = g_strdup_printf(_("%dMB (%dMB used)"), mi->total, mi->used); g_free(mi); - } else if (g_str_equal(field, _("Uptime"))) { + } else if (g_str_equal0(label, _("Uptime"))) { tmp = computer_get_formatted_uptime(); - } else if (g_str_equal(field, _("Date/Time"))) { + } else if (g_str_equal0(label, _("Date/Time"))) { time_t t = time(NULL); tmp = g_new0(gchar, 64); strftime(tmp, 64, "%c", localtime(&t)); - } else if (g_str_equal(field, _("Load Average"))) { + } else if (g_str_equal0(label, _("Load Average"))) { tmp = computer_get_formatted_loadavg(); - } else if (g_str_equal(field, _("Available entropy in /dev/random"))) { + } else if (g_str_equal0(tag, "entropy")) { tmp = computer_get_entropy_avail(); } else { - tmp = g_strdup_printf("Unknown field: %s", field); + gchar *info = NULL; + if (tag) + info = moreinfo_lookup_with_prefix("DEV", tag); + else if (label) + info = moreinfo_lookup_with_prefix("DEV", label); + + if (info) + tmp = g_strdup(info); + else + tmp = g_strdup_printf("Unknown field: [tag: %s] label: %s", tag ? tag : "(none)", label ? label : "(empty)"); } return tmp; } @@ -141,6 +182,13 @@ void scan_os(gboolean reload) SCAN_END(); } +void scan_security(gboolean reload) +{ + SCAN_START(); + //nothing to do here yet + SCAN_END(); +} + void scan_modules(gboolean reload) { SCAN_START(); @@ -170,9 +218,18 @@ void scan_fs(gboolean reload) SCAN_END(); } +void scan_memory_usage(gboolean reload) +{ + SCAN_START(); + scan_memory_do(); + SCAN_END(); +} + void scan_display(gboolean reload) { SCAN_START(); + if (computer->display) + computer_free_display(computer->display); computer->display = computer_get_display(); SCAN_END(); } @@ -197,16 +254,16 @@ void scan_dev(gboolean reload) { SCAN_START(); - int i; + guint i; struct { gchar *compiler_name; gchar *version_command; gchar *regex; - gboolean stdout; + gboolean read_stdout; } detect_lang[] = { { N_("Scripting Languages"), NULL, FALSE }, { N_("Gambas3 (gbr3)"), "gbr3 --version", "\\d+\\.\\d+\\.\\d+", TRUE }, - { N_("Python"), "python -V", "\\d+\\.\\d+\\.\\d+", FALSE }, + { N_("Python (default)"), "python -V", "\\d+\\.\\d+\\.\\d+", FALSE }, { N_("Python2"), "python2 -V", "\\d+\\.\\d+\\.\\d+", FALSE }, { N_("Python3"), "python3 -V", "\\d+\\.\\d+\\.\\d+", TRUE }, { N_("Perl"), "perl -v", "\\d+\\.\\d+\\.\\d+", TRUE }, @@ -215,26 +272,33 @@ void scan_dev(gboolean reload) { N_("PHP"), "php --version", "\\d+\\.\\d+\\.\\S+", TRUE}, { N_("Ruby"), "ruby --version", "\\d+\\.\\d+\\.\\d+", TRUE }, { N_("Bash"), "bash --version", "\\d+\\.\\d+\\.\\S+", TRUE}, + { N_("JavaScript (Node.js)"), "node --version", "(?<=v)(\\d\\.?)+", TRUE }, + { N_("awk"), "awk --version", "GNU Awk \\d+\\.\\d+\\.\\d+", TRUE }, { N_("Compilers"), NULL, FALSE }, { N_("C (GCC)"), "gcc -v", "\\d+\\.\\d+\\.\\d+", FALSE }, { N_("C (Clang)"), "clang -v", "\\d+\\.\\d+", FALSE }, { N_("D (dmd)"), "dmd --help", "\\d+\\.\\d+", TRUE }, { N_("Gambas3 (gbc3)"), "gbc3 --version", "\\d+\\.\\d+\\.\\d+", TRUE }, { N_("Java"), "javac -version", "\\d+\\.\\d+\\.\\d+", FALSE }, - { N_("CSharp (Mono, old)"), "mcs --version", "\\d+\\.\\d+\\.\\d+\\.\\d+", TRUE }, - { N_("CSharp (Mono)"), "gmcs --version", "\\d+\\.\\d+\\.\\d+\\.\\d+", TRUE }, + { N_("C♯ (mcs)"), "mcs --version", "\\d+\\.\\d+\\.\\d+\\.\\d+", TRUE }, { N_("Vala"), "valac --version", "\\d+\\.\\d+\\.\\d+", TRUE }, { N_("Haskell (GHC)"), "ghc -v", "\\d+\\.\\d+\\.\\d+", FALSE }, { N_("FreePascal"), "fpc -iV", "\\d+\\.\\d+\\.?\\d*", TRUE }, { N_("Go"), "go version", "\\d+\\.\\d+\\.?\\d* ", TRUE }, + { N_("Rust"), "rustc --version", "(?<=rustc )(\\d\\.?)+", TRUE }, { N_("Tools"), NULL, FALSE }, { N_("make"), "make --version", "\\d+\\.\\d+", TRUE }, + { N_("ninja"), "ninja --version", "\\d+\\.\\d+\\.\\d+", TRUE }, { N_("GDB"), "gdb --version", "(?<=^GNU gdb ).*", TRUE }, + { N_("LLDB"), "lldb --version", "(?<=lldb version )(\\d\\.?)+", TRUE }, { N_("strace"), "strace -V", "\\d+\\.\\d+\\.?\\d*", TRUE }, { N_("valgrind"), "valgrind --version", "\\d+\\.\\d+\\.\\S+", TRUE }, { N_("QMake"), "qmake --version", "\\d+\\.\\S+", TRUE}, { N_("CMake"), "cmake --version", "\\d+\\.\\d+\\.?\\d*", TRUE}, { N_("Gambas3 IDE"), "gambas3 --version", "\\d+\\.\\d+\\.\\d+", TRUE }, + { N_("Radare2"), "radare2 -v", "(?<=radare2 )(\\d+\\.?)+(-git)?", TRUE }, + { N_("ltrace"), "ltrace --version", "(?<=ltrace version )\\d+\\.\\d+\\.\\d+", TRUE }, + { N_("Powershell"), "pwsh --version", "\\d+\\.\\d+\\.\\d+", TRUE }, }; g_free(dev_list); @@ -254,10 +318,10 @@ void scan_dev(gboolean reload) continue; } - if (detect_lang[i].stdout) { - found = g_spawn_command_line_sync(detect_lang[i].version_command, &output, &ignored, NULL, NULL); + if (detect_lang[i].read_stdout) { + found = hardinfo_spawn_command_line_sync(detect_lang[i].version_command, &output, &ignored, NULL, NULL); } else { - found = g_spawn_command_line_sync(detect_lang[i].version_command, &ignored, &output, NULL, NULL); + found = hardinfo_spawn_command_line_sync(detect_lang[i].version_command, &ignored, &output, NULL, NULL); } g_free(ignored); @@ -293,6 +357,7 @@ gchar *callback_dev(void) { return g_strdup_printf( "[$ShellParam$]\n" + "ViewType=5\n" "ColumnTitle$TextValue=%s\n" /* Program */ "ColumnTitle$Value=%s\n" /* Version */ "ShowColumnHeaders=true\n" @@ -302,6 +367,24 @@ gchar *callback_dev(void) } #endif /* GLIB_CHECK_VERSION(2,14,0) */ +gchar *callback_memory_usage() +{ + extern gchar *lginterval; + return g_strdup_printf("[Memory]\n" + "%s\n" + "[$ShellParam$]\n" + "ViewType=2\n" + "LoadGraphSuffix= kB\n" + "RescanInterval=2000\n" + "ColumnTitle$TextValue=%s\n" + "ColumnTitle$Extra1=%s\n" + "ColumnTitle$Value=%s\n" + "ShowColumnHeaders=true\n" + "%s\n", meminfo, + _("Field"), _("Description"), _("Value"), /* column labels */ + lginterval); +} + static gchar *detect_machine_type(void) { GDir *dir; @@ -315,6 +398,7 @@ static gchar *detect_machine_type(void) if (chassis) { if (strstr(chassis, "Raspberry Pi") != NULL || strstr(chassis, "ODROID") != NULL + || strstr(chassis, "Firefly ROC") != NULL /* FIXME: consider making a table when adding more models */ ) { g_free(chassis); return g_strdup(_("Single-board computer")); @@ -381,7 +465,7 @@ gchar *computer_get_virtualization(void) "/var/log/dmesg", NULL }; - const static struct { + static const struct { gchar *str; gchar *vmtype; } vm_types[] = { @@ -458,9 +542,11 @@ gchar *callback_summary(void) { struct Info *info = info_new(); + info_set_view_type(info, SHELL_VIEW_DETAIL); + info_add_group(info, _("Computer"), - info_field_printf(_("Processor"), "%s", - module_call_method("devices::getProcessorName")), + info_field(_("Processor"), + idle_free(module_call_method("devices::getProcessorNameAndDesc"))), info_field_update(_("Memory"), 1000), info_field_printf(_("Machine Type"), "%s", computer_get_virtualization()), @@ -472,17 +558,19 @@ gchar *callback_summary(void) info_add_group(info, _("Display"), info_field_printf(_("Resolution"), _(/* label for resolution */ "%dx%d pixels"), computer->display->width, computer->display->height), - info_field(_("OpenGL Renderer"), computer->display->ogl_renderer), - info_field(_("X11 Vendor"), computer->display->vendor), + info_field(_("Display Adapter"), + idle_free(module_call_method("devices::getGPUList"))), + info_field(_("OpenGL Renderer"), THISORUNK(computer->display->xi->glx->ogl_renderer)), + info_field(_("Session Display Server"), THISORUNK(computer->display->display_server)), info_field_last()); info_add_computed_group(info, _("Audio Devices"), idle_free(computer_get_alsacards(computer))); - info_add_computed_group(info, _("Input Devices"), + info_add_computed_group_wo_extra(info, _("Input Devices"), idle_free(module_call_method("devices::getInputDevices"))); info_add_computed_group(info, NULL, /* getPrinters provides group headers */ idle_free(module_call_method("devices::getPrinters"))); - info_add_computed_group(info, NULL, /* getStorageDevices provides group headers */ + info_add_computed_group_wo_extra(info, NULL, /* getStorageDevices provides group headers */ idle_free(module_call_method("devices::getStorageDevices"))); return info_flatten(info); @@ -491,27 +579,116 @@ gchar *callback_summary(void) gchar *callback_os(void) { struct Info *info = info_new(); - - info_add_group(info, _("Version"), - info_field(_("Kernel"), computer->os->kernel), + gchar *distro_icon; + gchar *distro; + + info_set_view_type(info, SHELL_VIEW_DETAIL); + + distro_icon = computer->os->distroid + ? idle_free(g_strdup_printf("distros/%s.svg", + computer->os->distroid)) + : NULL; + distro = computer->os->distrocode + ? idle_free(g_strdup_printf("%s (%s)", + computer->os->distro, computer->os->distrocode)) + : computer->os->distro; + + struct InfoGroup *version_group = + info_add_group( + info, _("Version"), info_field(_("Kernel"), computer->os->kernel), + info_field(_("Command Line"), computer->os->kcmdline ?: _("Unknown")), info_field(_("Version"), computer->os->kernel_version), info_field(_("C Library"), computer->os->libc), - info_field(_("Distribution"), computer->os->distro), + info_field(_("Distribution"), distro, + .value_has_vendor = TRUE, + .icon = distro_icon), info_field_last()); + if (computer->os->distro_flavor) { + info_group_add_field(version_group, + info_field(_("Spin/Flavor"), computer->os->distro_flavor->name, + .value_has_vendor = TRUE, + .icon = computer->os->distro_flavor->icon) ); + } + info_add_group(info, _("Current Session"), info_field(_("Computer Name"), computer->os->hostname), info_field(_("User Name"), computer->os->username), info_field(_("Language"), computer->os->language), info_field(_("Home Directory"), computer->os->homedir), + info_field(_("Desktop Environment"), computer->os->desktop), info_field_last()); - info_add_group(info, _("Misc"), - info_field_update(_("Uptime"), 1000), - info_field_update(_("Load Average"), 10000), - info_field_update(_("Available entropy in /dev/random"), 1000), + info_add_group(info, _("Misc"), info_field_update(_("Uptime"), 1000), + info_field_update(_("Load Average"), 10000), + info_field_last()); + + return info_flatten(info); +} + +gchar *callback_security(void) +{ + struct Info *info = info_new(); + + info_set_view_type(info, SHELL_VIEW_DETAIL); + + info_add_group(info, _("HardInfo"), + info_field(_("HardInfo running as"), + (getuid() == 0) ? _("Superuser") : _("User")), + info_field_last()); + + info_add_group( + info, _("Health"), + info_field_update(_("Available entropy in /dev/random"), 1000, .tag = g_strdup("entropy") ), info_field_last()); + info_add_group( + info, _("Hardening Features"), + info_field(_("ASLR"), idle_free(computer_get_aslr())), + info_field(_("dmesg"), idle_free(computer_get_dmesg_status())), + info_field_last()); + + info_add_group( + info, _("Linux Security Modules"), + info_field(_("Modules available"), idle_free(computer_get_lsm())), + info_field(_("SELinux status"), computer_get_selinux()), + info_field_last()); + + GDir *dir = g_dir_open("/sys/devices/system/cpu/vulnerabilities", 0, NULL); + if (dir) { + struct InfoGroup *vulns = + info_add_group(info, _("CPU Vulnerabilities"), info_field_last()); + vulns->sort = INFO_GROUP_SORT_NAME_ASCENDING; + const gchar *vuln; + + while ((vuln = g_dir_read_name(dir))) { + gchar *contents = h_sysfs_read_string( + "/sys/devices/system/cpu/vulnerabilities", vuln); + if (!contents) + continue; + + const gchar *icon = NULL; + if (g_strstr_len(contents, -1, "Not affected") ) + icon = "circle_green_check.svg"; + + if (g_str_has_prefix(contents, "Mitigation:") || + g_str_has_prefix(contents, "mitigation:")) + icon = "circle_yellow_exclaim.svg"; + + if (g_strstr_len(contents, -1, "Vulnerable") || + g_strstr_len(contents, -1, "vulnerable")) + icon = "circle_red_x.svg"; + + info_group_add_fields(vulns, + info_field(g_strdup(vuln), + idle_free(contents), .icon = icon, + .free_name_on_flatten = TRUE), + info_field_last()); + } + + g_dir_close(dir); + } + return info_flatten(info); } @@ -575,27 +752,80 @@ gchar *callback_fs(void) gchar *callback_display(void) { + int n = 0; + gchar *screens_str = strdup(""), *outputs_str = strdup(""); + xinfo *xi = computer->display->xi; + xrr_info *xrr = xi->xrr; + glx_info *glx = xi->glx; + wl_info *wl = computer->display->wl; + struct Info *info = info_new(); - info_add_group(info, _("Display"), - info_field_printf(_("Resolution"), _(/* resolution WxH unit */ "%dx%d pixels"), - computer->display->width, computer->display->height), - info_field(_("Vendor"), computer->display->vendor), - info_field(_("Version"), computer->display->version), - info_field(_("Current Display Name"), computer->display->display_name), + info_set_view_type(info, SHELL_VIEW_DETAIL); + + info_add_group(info, _("Session"), + info_field(_("Type"), THISORUNK(computer->display->session_type)), info_field_last()); - info_add_computed_group(info, _("Monitors"), computer->display->monitors); + info_add_group(info, _("Wayland"), + info_field(_("Current Display Name"), + (wl->display_name) ? (wl->display_name) : _("(Not Available)")), + info_field_last()); - info_add_group(info, _("OpenGL"), - info_field(_("Vendor"), computer->display->ogl_vendor), - info_field(_("Renderer"), computer->display->ogl_renderer), - info_field(_("Version"), computer->display->ogl_version), - info_field(_("Direct Rendering"), - computer->display->dri ? _("Yes") : _("No")), + info_add_group(info, _("X Server"), + info_field(_("Current Display Name"), THISORUNK(xi->display_name) ), + info_field(_("Vendor"), THISORUNK(xi->vendor), .value_has_vendor = TRUE ), + info_field(_("Version"), THISORUNK(xi->version) ), + info_field(_("Release Number"), THISORUNK(xi->release_number) ), info_field_last()); - info_add_computed_group(info, _("Extensions"), computer->display->extensions); + for (n = 0; n < xrr->screen_count; n++) { + gchar *dims = g_strdup_printf(_(/* resolution WxH unit */ "%dx%d pixels"), xrr->screens[n].px_width, xrr->screens[n].px_height); + screens_str = h_strdup_cprintf("Screen %d=%s\n", screens_str, xrr->screens[n].number, dims); + g_free(dims); + } + info_add_computed_group(info, _("Screens"), screens_str); + + for (n = 0; n < xrr->output_count; n++) { + gchar *connection = NULL; + switch (xrr->outputs[n].connected) { + case 0: + connection = _("Disconnected"); + break; + case 1: + connection = _("Connected"); + break; + case -1: + default: + connection = _("Unknown"); + break; + } + gchar *dims = (xrr->outputs[n].screen == -1) + ? g_strdup(_("Unused")) + : g_strdup_printf(_("%dx%d pixels, offset (%d, %d)"), + xrr->outputs[n].px_width, xrr->outputs[n].px_height, + xrr->outputs[n].px_offset_x, xrr->outputs[n].px_offset_y); + + outputs_str = h_strdup_cprintf("%s=%s; %s\n", outputs_str, + xrr->outputs[n].name, connection, dims); + + g_free(dims); + } + info_add_computed_group(info, _("Outputs (XRandR)"), outputs_str); + + info_add_group(info, _("OpenGL (GLX)"), + info_field(_("Vendor"), THISORUNK(glx->ogl_vendor), .value_has_vendor = TRUE ), + info_field(_("Renderer"), THISORUNK(glx->ogl_renderer) ), + info_field(_("Direct Rendering"), + glx->direct_rendering ? _("Yes") : _("No")), + info_field(_("Version (Compatibility)"), THISORUNK(glx->ogl_version) ), + info_field(_("Shading Language Version (Compatibility)"), THISORUNK(glx->ogl_sl_version) ), + info_field(_("Version (Core)"), THISORUNK(glx->ogl_core_version) ), + info_field(_("Shading Language Version (Core)"), THISORUNK(glx->ogl_core_sl_version) ), + info_field(_("Version (ES)"), THISORUNK(glx->ogles_version) ), + info_field(_("Shading Language Version (ES)"), THISORUNK(glx->ogles_sl_version) ), + info_field(_("GLX Version"), THISORUNK(glx->glx_version) ), + info_field_last()); return info_flatten(info); } @@ -641,20 +871,28 @@ gchar *get_ogl_renderer(void) { scan_display(FALSE); - return g_strdup(computer->display->ogl_renderer); + return g_strdup(computer->display->xi->glx->ogl_renderer); } gchar *get_display_summary(void) { scan_display(FALSE); - return g_strdup_printf("%dx%d\n" + gchar *gpu_list = module_call_method("devices::getGPUList"); + + gchar *ret = g_strdup_printf( + "%s\n" + "%dx%d\n" "%s\n" "%s", - computer->display->width, - computer->display->height, - computer->display->ogl_renderer, - computer->display->vendor); + gpu_list, + computer->display->width, computer->display->height, + computer->display->display_server, + (computer->display->xi->glx->ogl_renderer) + ? computer->display->xi->glx->ogl_renderer + : "" ); + g_free(gpu_list); + return ret; } gchar *get_kernel_module_description(gchar *module) @@ -682,16 +920,65 @@ gchar *get_audio_cards(void) return computer_get_alsacards(computer); } -ShellModuleMethod *hi_exported_methods(void) +/* the returned string must stay in kB as it is used + * elsewhere with that expectation */ +gchar *get_memory_total(void) +{ + scan_memory_usage(FALSE); + return moreinfo_lookup ("DEV:MemTotal"); +} + +gchar *memory_devices_get_system_memory_str(); /* in dmi_memory.c */ +gchar *memory_devices_get_system_memory_types_str(); +/* Note 1: moreinfo_lookup() results should not be freed because + * they are pointers into a GHash. + * module_call_method() g_strdup()s it's return value. */ +const gchar *get_memory_desc(void) // [1] const (as to say "don't free") +{ + scan_memory_usage(FALSE); + gchar *avail = g_strdup(moreinfo_lookup("DEV:MemTotal")); // [1] g_strdup() + double k = avail ? (double)strtol(avail, NULL, 10) : 0; + if (k) { + g_free(avail); + avail = NULL; + const char *fmt = _(/*/ "usable memory" */ "%0.1f %s available to Linux"); + if (k > (2048 * 1024)) + avail = g_strdup_printf(fmt, k / (1024*1024), _("GiB") ); + else if (k > 2048) + avail = g_strdup_printf(fmt, k / 1024, _("MiB") ); + else + avail = g_strdup_printf(fmt, k, _("KiB") ); + } + gchar *mem = memory_devices_get_system_memory_str(); + if (mem) { + gchar *types = memory_devices_get_system_memory_types_str(); + gchar *ret = g_strdup_printf("%s %s\n%s", mem, types, avail ? avail : ""); + g_free(avail); + g_free(mem); + g_free(types); + return (gchar*)idle_free(ret); // [1] idle_free() + } + return (gchar*)idle_free(avail); // [1] idle_free() +} + +static gchar *get_machine_type(void) { - static ShellModuleMethod m[] = { + return computer_get_virtualization(); +} + +const ShellModuleMethod *hi_exported_methods(void) +{ + static const ShellModuleMethod m[] = { {"getOSKernel", get_os_kernel}, {"getOS", get_os}, {"getDisplaySummary", get_display_summary}, {"getOGLRenderer", get_ogl_renderer}, {"getAudioCards", get_audio_cards}, {"getKernelModuleDescription", get_kernel_module_description}, - {NULL} + {"getMemoryTotal", get_memory_total}, + {"getMemoryDesc", get_memory_desc}, + {"getMachineType", get_machine_type}, + {NULL}, }; return m; @@ -721,6 +1008,11 @@ gchar **hi_module_get_dependencies(void) gchar *hi_module_get_summary(void) { + gchar *virt = computer_get_virtualization(); + gchar *machine_type = g_strdup_printf("%s (%s)", + _("Motherboard"), + (char*)idle_free(virt)); + return g_strdup_printf("[%s]\n" "Icon=os.png\n" "Method=computer::getOS\n" @@ -729,7 +1021,7 @@ gchar *hi_module_get_summary(void) "Method=devices::getProcessorNameAndDesc\n" "[%s]\n" "Icon=memory.png\n" - "Method=devices::getMemoryTotal\n" + "Method=computer::getMemoryDesc\n" "[%s]\n" "Icon=module.png\n" "Method=devices::getMotherboard\n" @@ -738,7 +1030,7 @@ gchar *hi_module_get_summary(void) "Method=computer::getDisplaySummary\n" "[%s]\n" "Icon=hdd.png\n" - "Method=devices::getStorageDevices\n" + "Method=devices::getStorageDevicesSimple\n" "[%s]\n" "Icon=printer.png\n" "Method=devices::getPrinters\n" @@ -746,15 +1038,18 @@ gchar *hi_module_get_summary(void) "Icon=audio.png\n" "Method=computer::getAudioCards\n", _("Operating System"), - _("CPU"), _("RAM"), _("Motherboard"), _("Graphics"), + _("Processor"), _("Memory"), (char*)idle_free(machine_type), _("Graphics"), _("Storage"), _("Printers"), _("Audio") ); } void hi_module_deinit(void) { + g_hash_table_destroy(memlabels); + if (computer->os) { g_free(computer->os->kernel); + g_free(computer->os->kcmdline); g_free(computer->os->libc); g_free(computer->os->distrocode); g_free(computer->os->distro); @@ -769,17 +1064,7 @@ void hi_module_deinit(void) g_free(computer->os); } - if (computer->display) { - g_free(computer->display->ogl_vendor); - g_free(computer->display->ogl_renderer); - g_free(computer->display->ogl_version); - g_free(computer->display->display_name); - g_free(computer->display->vendor); - g_free(computer->display->version); - g_free(computer->display->extensions); - g_free(computer->display->monitors); - g_free(computer->display); - } + computer_free_display(computer->display); if (computer->alsa) { g_slist_free(computer->alsa->cards); @@ -795,18 +1080,45 @@ void hi_module_deinit(void) void hi_module_init(void) { computer = g_new0(Computer, 1); + init_memory_labels(); + kernel_module_icon_init(); } -ModuleAbout *hi_module_get_about(void) +const ModuleAbout *hi_module_get_about(void) { - static ModuleAbout ma[] = { - { - .author = "Leandro A. F. Pereira", - .description = N_("Gathers high-level computer information"), - .version = VERSION, - .license = "GNU GPL version 2"} - }; + static const ModuleAbout ma = { + .author = "L. A. F. Pereira", + .description = N_("Gathers high-level computer information"), + .version = VERSION, + .license = "GNU GPL version 2 or later.",}; + + return &ma; +} + +static const gchar *hinote_kmod() { + static gchar note[note_max_len] = ""; + gboolean ok = TRUE; + *note = 0; /* clear */ + ok &= note_require_tool("lsmod", note, _("lsmod is required.")); + return ok ? NULL : g_strstrip(note); /* remove last \n */ +} - return ma; +static const gchar *hinote_display() { + static gchar note[note_max_len] = ""; + gboolean ok = TRUE; + *note = 0; /* clear */ + ok &= note_require_tool("xrandr", note, _("X.org's xrandr utility provides additional details when available.")); + ok &= note_require_tool("glxinfo", note, _("Mesa's glxinfo utility is required for OpenGL information.")); + return ok ? NULL : g_strstrip(note); /* remove last \n */ } +const gchar *hi_note_func(gint entry) +{ + if (entry == ENTRY_KMOD) { + return hinote_kmod(); + } + else if (entry == ENTRY_DISPLAY) { + return hinote_display(); + } + return NULL; +} diff --git a/modules/computer/alsa.c b/modules/computer/alsa.c index 00c1fceb..f74d2752 100644 --- a/modules/computer/alsa.c +++ b/modules/computer/alsa.c @@ -1,10 +1,10 @@ /* * HardInfo - Displays System Information - * Copyright (C) 2003-2006 Leandro A. F. Pereira + * Copyright (C) 2003-2006 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, version 2. + * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of diff --git a/modules/computer/boots.c b/modules/computer/boots.c index ba458242..52c122e4 100644 --- a/modules/computer/boots.c +++ b/modules/computer/boots.c @@ -1,10 +1,10 @@ /* * HardInfo - Displays System Information - * Copyright (C) 2003-2007 Leandro A. F. Pereira + * Copyright (C) 2003-2007 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, version 2. + * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -21,6 +21,8 @@ #include "hardinfo.h" #include "computer.h" +extern void scan_os(gboolean reload); + void scan_boots_real(void) { @@ -35,7 +37,7 @@ scan_boots_real(void) else return; - spawned = g_spawn_command_line_sync("last", + spawned = hardinfo_spawn_command_line_sync("last", &out, &err, NULL, NULL); if (spawned && out != NULL) { p = out; diff --git a/modules/computer/display.c b/modules/computer/display.c index 61eac4eb..98cb7bf7 100644 --- a/modules/computer/display.c +++ b/modules/computer/display.c @@ -1,10 +1,10 @@ /* * HardInfo - Displays System Information - * Copyright (C) 2003-2007 Leandro A. F. Pereira + * Copyright (C) 2003-2007 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, version 2. + * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -21,131 +21,54 @@ #include "hardinfo.h" #include "computer.h" -static void -get_glx_info(DisplayInfo *di) -{ - gchar *output; - if (g_spawn_command_line_sync("glxinfo", &output, NULL, NULL, NULL)) { - gchar **output_lines; - gint i = 0; - - for (output_lines = g_strsplit(output, "\n", 0); - output_lines && output_lines[i]; - i++) { - if (strstr(output_lines[i], "OpenGL")) { - gchar **tmp = g_strsplit(output_lines[i], ":", 0); - - tmp[1] = g_strchug(tmp[1]); - - get_str("OpenGL vendor str", di->ogl_vendor); - get_str("OpenGL renderer str", di->ogl_renderer); - get_str("OpenGL version str", di->ogl_version); - - g_strfreev(tmp); - } else if (strstr(output_lines[i], "direct rendering: Yes")) { - di->dri = TRUE; - } - } - - g_free(output); - g_strfreev(output_lines); - - if (!di->ogl_vendor) - di->ogl_vendor = _("(Unknown)"); - if (!di->ogl_renderer) - di->ogl_renderer = _("(Unknown)"); - if (!di->ogl_version) - di->ogl_version = _("(Unknown)"); - - } else { - di->ogl_vendor = di->ogl_renderer = di->ogl_version = _("(Unknown)"); +DisplayInfo *computer_get_display(void) { + DisplayInfo *di = g_new0(DisplayInfo, 1); + wl_info *wl = get_walyand_info(); + xinfo *xi = xinfo_get_info(); + xrr_info *xrr = xi->xrr; + glx_info *glx = xi->glx; + + di->width = di->height = 0; + if (xrr->screen_count > 0) { + di->width = xrr->screens[0].px_width; + di->height = xrr->screens[0].px_height; } - -} - -static void -get_x11_info(DisplayInfo *di) -{ - gchar *output; - - if (g_spawn_command_line_sync("xdpyinfo", &output, NULL, NULL, NULL)) { - gchar **output_lines, **old; - - output_lines = g_strsplit(output, "\n", 0); - g_free(output); - - old = output_lines; - while (*output_lines) { - gchar **tmp = g_strsplit(*output_lines, ":", 2); - output_lines++; - - if (tmp[1] && tmp[0]) { - tmp[1] = g_strchug(tmp[1]); - - get_str("vendor string", di->vendor); - get_str("X.Org version", di->version); - get_str("XFree86 version", di->version); - get_str("name of display", di->display_name); - - if (g_str_has_prefix(tmp[0], "number of extensions")) { - int n; - - di->extensions = g_strdup(""); - - for (n = atoi(tmp[1]); n; n--) { - di->extensions = h_strconcat(di->extensions, - g_strstrip(*(++output_lines)), - "=\n", - NULL); - } - g_strfreev(tmp); - - break; - } - } - - g_strfreev(tmp); - } - - g_strfreev(old); + di->vendor = xi->vendor; + di->session_type = wl->xdg_session_type; + + if (strcmp(di->session_type, "x11") == 0 ) { + if (xi->nox) { + di->display_server = g_strdup(_("(Unknown)")); + /* assumed x11 previously, because it wasn't set */ + free(wl->xdg_session_type); + di->session_type = wl->xdg_session_type = NULL; + } else if (xi->vendor && xi->version) + di->display_server = g_strdup_printf("%s %s", xi->vendor, xi->version ); + else if (xi->vendor && xi->release_number) + di->display_server = g_strdup_printf("[X11] %s %s", xi->vendor, xi->release_number ); + else + di->display_server = g_strdup("X11"); + } else + if (strcmp(di->session_type, "wayland") == 0 ) { + di->display_server = g_strdup("Wayland"); + } else + if (strcmp(di->session_type, "mir") == 0 ) { + di->display_server = g_strdup("Mir"); + } else { + di->display_server = g_strdup(_("(Unknown)")); } - GdkScreen *screen = gdk_screen_get_default(); - - if (screen && GDK_IS_SCREEN(screen)) { - gint n_monitors = gdk_screen_get_n_monitors(screen); - gint i; - - di->monitors = NULL; - for (i = 0; i < n_monitors; i++) { - GdkRectangle rect; - - gdk_screen_get_monitor_geometry(screen, i, &rect); - - di->monitors = h_strdup_cprintf(_("Monitor %d=%dx%d pixels\n"), - di->monitors, i, rect.width, rect.height); - } - } else { - di->monitors = ""; - } + di->xi = xi; + di->wl = wl; + return di; } -DisplayInfo * -computer_get_display(void) -{ - DisplayInfo *di = g_new0(DisplayInfo, 1); - - GdkScreen *screen = gdk_screen_get_default(); - - if (screen && GDK_IS_SCREEN(screen)) { - di->width = gdk_screen_get_width(screen); - di->height = gdk_screen_get_height(screen); - } else { - di->width = di->height = 0; +void computer_free_display(DisplayInfo *di) { + /* fyi: DisplayInfo is in computer.h */ + if (di) { + free(di->display_server); + xinfo_free(di->xi); + wl_free(di->wl); + free(di); } - - get_glx_info(di); - get_x11_info(di); - - return di; } diff --git a/modules/computer/environment.c b/modules/computer/environment.c index dc0fb6f3..2f29c861 100644 --- a/modules/computer/environment.c +++ b/modules/computer/environment.c @@ -1,10 +1,10 @@ /* * HardInfo - Displays System Information - * Copyright (C) 2003-2008 Leandro A. F. Pereira + * Copyright (C) 2003-2008 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, version 2. + * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of diff --git a/modules/computer/filesystem.c b/modules/computer/filesystem.c index 397dc636..e9c84811 100644 --- a/modules/computer/filesystem.c +++ b/modules/computer/filesystem.c @@ -1,10 +1,10 @@ /* * HardInfo - Displays System Information - * Copyright (C) 2003-2006 Leandro A. F. Pereira + * Copyright (C) 2003-2006 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, version 2. + * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -71,6 +71,8 @@ scan_filesystems(void) gchar *strhash; + gboolean rw = strstr(tmp[3], "rw") != NULL; + strreplacechr(tmp[0], "#", '_'); strhash = g_strdup_printf("[%s]\n" "%s=%s\n" @@ -81,7 +83,7 @@ scan_filesystems(void) "%s=%s\n", tmp[0], /* path */ _("Filesystem"), tmp[2], - _("Mounted As"), ( strstr(tmp[3], "rw") != NULL) ? _("Read-Write") : _("Read-Only"), + _("Mounted As"), rw ? _("Read-Write") : _("Read-Only"), _("Mount Point"), tmp[1], _("Size"), strsize, _("Used"), strused, @@ -90,9 +92,10 @@ scan_filesystems(void) moreinfo_add_with_prefix("COMP", key, strhash); g_free(key); - fs_list = h_strdup_cprintf("$FS%d$%s=%.2f %% (%s of %s)|%s\n", + fs_list = h_strdup_cprintf("$FS%d$%s%s=%.2f %% (%s of %s)|%s\n", fs_list, - count, tmp[0], use_ratio, stravail, strsize, tmp[1]); + count, tmp[0], rw ? "" : "🔒", + use_ratio, stravail, strsize, tmp[1]); g_free(strsize); g_free(stravail); diff --git a/modules/computer/groups.c b/modules/computer/groups.c index 244b8000..9371e211 100644 --- a/modules/computer/groups.c +++ b/modules/computer/groups.c @@ -1,10 +1,10 @@ /* * HardInfo - Displays System Information - * Copyright (C) 2012 Leandro A. F. Pereira + * Copyright (C) 2012 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, version 2. + * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of diff --git a/modules/computer/languages.c b/modules/computer/languages.c index d4681839..b2d4910f 100644 --- a/modules/computer/languages.c +++ b/modules/computer/languages.c @@ -1,10 +1,10 @@ /* * HardInfo - Displays System Information - * Copyright (C) 2003-2007 Leandro A. F. Pereira + * Copyright (C) 2003-2007 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, version 2. + * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -22,113 +22,161 @@ #include "computer.h" #include "cpu_util.h" /* for UNKIFNULL() */ -void -scan_languages(OperatingSystem * os) -{ - FILE *locale; - gchar buf[512], *retval = NULL; - - locale = popen("locale -va && echo", "r"); - if (!locale) - return; - +typedef struct { gchar name[32]; - gchar *title = NULL, - *source = NULL, - *address = NULL, - *email = NULL, - *language = NULL, - *territory = NULL, - *revision = NULL, - *date = NULL, - *codeset = NULL; - - while (fgets(buf, 512, locale)) { - if (!strncmp(buf, "locale:", 7)) { - sscanf(buf, "locale: %s", name); - (void)fgets(buf, 128, locale); - } else if (strchr(buf, '|')) { - gchar **tmp = g_strsplit(buf, "|", 2); - - tmp[0] = g_strstrip(tmp[0]); - - if (tmp[1]) { - tmp[1] = g_strstrip(tmp[1]); - - get_str("title", title); - get_str("source", source); - get_str("address", address); - get_str("email", email); - get_str("language", language); - get_str("territory", territory); - get_str("revision", revision); - get_str("date", date); - get_str("codeset", codeset); - } - - g_strfreev(tmp); - } else { - gchar *currlocale; - - retval = h_strdup_cprintf("$%s$%s=%s\n", retval, name, name, title); - - UNKIFNULL(title); - UNKIFNULL(source); - UNKIFNULL(address); - UNKIFNULL(email); - UNKIFNULL(language); - UNKIFNULL(territory); - UNKIFNULL(revision); - UNKIFNULL(date); - UNKIFNULL(codeset); - - /* values may have & */ - title = hardinfo_clean_value(title, 1); - source = hardinfo_clean_value(source, 1); - address = hardinfo_clean_value(address, 1); - email = hardinfo_clean_value(email, 1); - language = hardinfo_clean_value(language, 1); - territory = hardinfo_clean_value(territory, 1); - - currlocale = g_strdup_printf("[%s]\n" - /* Name */ "%s=%s (%s)\n" - /* Source */ "%s=%s\n" - /* Address */ "%s=%s\n" - /* Email */ "%s=%s\n" - /* Language */ "%s=%s\n" - /* Territory */"%s=%s\n" - /* Revision */ "%s=%s\n" - /* Date */ "%s=%s\n" - /* Codeset */ "%s=%s\n", - _("Locale Information"), - _("Name"), name, title, - _("Source"), source, - _("Address"), address, - _("E-mail"), email, - _("Language"), language, - _("Territory"), territory, - _("Revision"), revision, - _("Date"), date, - _("Codeset"), codeset ); - - moreinfo_add_with_prefix("COMP", name, currlocale); - - g_free(title); - g_free(source); - g_free(address); - g_free(email); - g_free(language); - g_free(territory); - g_free(revision); - g_free(date); - g_free(codeset); - - title = source = address = email = language = territory = \ - revision = date = codeset = NULL; - } + gchar *title, + *source, + *address, + *email, + *language, + *territory, + *revision, + *date, + *codeset; +} locale_info; + +void locale_info_free(locale_info *s) { + if (s) { + g_free(s->title); + g_free(s->source); + g_free(s->address); + g_free(s->email); + g_free(s->language); + g_free(s->territory); + g_free(s->revision); + g_free(s->date); + g_free(s->codeset); + free(s); } +} - fclose(locale); +/* TODO: use info_* */ +gchar *locale_info_section(locale_info *s) { + gchar *name = g_strdup(s->name); + gchar *title = g_strdup(s->title), + *source = g_strdup(s->source), + *address = g_strdup(s->address), + *email = g_strdup(s->email), + *language = g_strdup(s->language), + *territory = g_strdup(s->territory), + *revision = g_strdup(s->revision), + *date = g_strdup(s->date), + *codeset = g_strdup(s->codeset); + + UNKIFNULL(title); + UNKIFNULL(source); + UNKIFNULL(address); + UNKIFNULL(email); + UNKIFNULL(language); + UNKIFNULL(territory); + UNKIFNULL(revision); + UNKIFNULL(date); + UNKIFNULL(codeset); + + /* values may have & */ + title = hardinfo_clean_value(title, 1); + source = hardinfo_clean_value(source, 1); + address = hardinfo_clean_value(address, 1); + email = hardinfo_clean_value(email, 1); + language = hardinfo_clean_value(language, 1); + territory = hardinfo_clean_value(territory, 1); + + gchar *ret = g_strdup_printf("[%s]\n" + /* Name */ "%s=%s (%s)\n" + /* Source */ "%s=%s\n" + /* Address */ "%s=%s\n" + /* Email */ "%s=%s\n" + /* Language */ "%s=%s\n" + /* Territory */"%s=%s\n" + /* Revision */ "%s=%s\n" + /* Date */ "%s=%s\n" + /* Codeset */ "%s=%s\n", + _("Locale Information"), + _("Name"), name, title, + _("Source"), source, + _("Address"), address, + _("E-mail"), email, + _("Language"), language, + _("Territory"), territory, + _("Revision"), revision, + _("Date"), date, + _("Codeset"), codeset ); + g_free(name); + g_free(title); + g_free(source); + g_free(address); + g_free(email); + g_free(language); + g_free(territory); + g_free(revision); + g_free(date); + g_free(codeset); + return ret; +} - os->languages = retval; +void +scan_languages(OperatingSystem * os) +{ + gboolean spawned; + gchar *out, *err, *p, *next_nl; + + gchar *ret = NULL; + locale_info *curr = NULL; + int last = 0; + + spawned = hardinfo_spawn_command_line_sync("locale -va", + &out, &err, NULL, NULL); + if (spawned) { + ret = g_strdup(""); + p = out; + while(1) { + /* `locale -va` doesn't end the last locale block + * with an \n, which makes this more complicated */ + next_nl = strchr(p, '\n'); + if (next_nl == NULL) + next_nl = strchr(p, 0); + last = (*next_nl == 0) ? 1 : 0; + strend(p, '\n'); + if (strncmp(p, "locale:", 7) == 0) { + curr = g_new0(locale_info, 1); + sscanf(p, "locale: %s", curr->name); + /* TODO: 'directory:' and 'archive:' */ + } else if (strchr(p, '|')) { + do {/* get_str() has a continue in it, + * how fn frustrating that was to figure out */ + gchar **tmp = g_strsplit(p, "|", 2); + tmp[0] = g_strstrip(tmp[0]); + if (tmp[1]) { + tmp[1] = g_strstrip(tmp[1]); + get_str("title", curr->title); + get_str("source", curr->source); + get_str("address", curr->address); + get_str("email", curr->email); + get_str("language", curr->language); + get_str("territory", curr->territory); + get_str("revision", curr->revision); + get_str("date", curr->date); + get_str("codeset", curr->codeset); + } + g_strfreev(tmp); + } while (0); + } else if (strstr(p, "------")) { + /* do nothing */ + } else if (curr) { + /* a blank line is the end of a locale */ + gchar *li_str = locale_info_section(curr); + gchar *clean_title = hardinfo_clean_value(curr->title, 0); /* may contain & */ + ret = h_strdup_cprintf("$%s$%s=%s\n", ret, curr->name, curr->name, clean_title); + moreinfo_add_with_prefix("COMP", g_strdup(curr->name), li_str); /* becomes owned by moreinfo */ + locale_info_free(curr); + curr = NULL; + g_free(clean_title); + } + if (last) break; + p = next_nl + 1; + } + g_free(out); + g_free(err); + } + os->languages = ret; } diff --git a/modules/computer/loadavg.c b/modules/computer/loadavg.c index 7311dbf0..802ae2aa 100644 --- a/modules/computer/loadavg.c +++ b/modules/computer/loadavg.c @@ -1,10 +1,10 @@ /* * HardInfo - Displays System Information - * Copyright (C) 2003-2006 Leandro A. F. Pereira + * Copyright (C) 2003-2006 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, version 2. + * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of diff --git a/modules/computer/memory.c b/modules/computer/memory.c index dc8599c2..994e4040 100644 --- a/modules/computer/memory.c +++ b/modules/computer/memory.c @@ -1,10 +1,10 @@ /* * HardInfo - Displays System Information - * Copyright (C) 2003-2006 Leandro A. F. Pereira + * Copyright (C) 2003-2006 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, version 2. + * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of diff --git a/modules/computer/memory_usage.c b/modules/computer/memory_usage.c new file mode 100644 index 00000000..12c62fe7 --- /dev/null +++ b/modules/computer/memory_usage.c @@ -0,0 +1,125 @@ +/* + * HardInfo - Displays System Information + * Copyright (C) 2003-2007 L. A. F. Pereira + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 2 or later. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include +#include "devices.h" + +GHashTable *memlabels = NULL; + +void scan_memory_do(void) +{ + gchar **keys, *tmp, *tmp_label, *trans_val; + static gint offset = -1; + gint i; + + if (offset == -1) { + /* gah. linux 2.4 adds three lines of data we don't need in + * /proc/meminfo. + * The lines look something like this: + * total: used: free: shared: buffers: cached: + * Mem: 3301101568 1523159040 1777942528 0 3514368 1450356736 + * Swap: 0 0 0 + */ + gchar *os_kernel = module_call_method("computer::getOSKernel"); + if (os_kernel) { + offset = strstr(os_kernel, "Linux 2.4") ? 3 : 0; + g_free(os_kernel); + } else { + offset = 0; + } + } + + g_file_get_contents("/proc/meminfo", &meminfo, NULL, NULL); + + keys = g_strsplit(meminfo, "\n", 0); + + g_free(meminfo); + g_free(lginterval); + + meminfo = g_strdup(""); + lginterval = g_strdup(""); + + for (i = offset; keys[i]; i++) { + gchar **newkeys = g_strsplit(keys[i], ":", 0); + + if (!newkeys[0]) { + g_strfreev(newkeys); + break; + } + + g_strstrip(newkeys[0]); + g_strstrip(newkeys[1]); + + /* try to find a localizable label */ + tmp = g_hash_table_lookup(memlabels, newkeys[0]); + if (tmp) + tmp_label = _(tmp); + else + tmp_label = ""; /* or newkeys[0] */ + /* although it doesn't matter... */ + + if (strstr(newkeys[1], "kB")) { + trans_val = g_strdup_printf("%d %s", atoi(newkeys[1]), _("KiB") ); + } else { + trans_val = strdup(newkeys[1]); + } + + moreinfo_add_with_prefix("DEV", newkeys[0], g_strdup(trans_val)); + + tmp = g_strconcat(meminfo, newkeys[0], "=", trans_val, "|", tmp_label, "\n", NULL); + g_free(meminfo); + meminfo = tmp; + + g_free(trans_val); + + tmp = g_strconcat(lginterval, + "UpdateInterval$", newkeys[0], "=1000\n", NULL); + g_free(lginterval); + lginterval = tmp; + + g_strfreev(newkeys); + } + g_strfreev(keys); +} + +void init_memory_labels(void) +{ + static const struct { + char *proc_label; + char *real_label; + } proc2real[] = { + { "MemTotal", N_("Total Memory") }, + { "MemFree", N_("Free Memory") }, + { "SwapCached", N_("Cached Swap") }, + { "HighTotal", N_("High Memory") }, + { "HighFree", N_("Free High Memory") }, + { "LowTotal", N_("Low Memory") }, + { "LowFree", N_("Free Low Memory") }, + { "SwapTotal", N_("Virtual Memory") }, + { "SwapFree", N_("Free Virtual Memory") }, + { NULL }, + }; + gint i; + + memlabels = g_hash_table_new(g_str_hash, g_str_equal); + + for (i = 0; proc2real[i].proc_label; i++) { + g_hash_table_insert(memlabels, proc2real[i].proc_label, + _(proc2real[i].real_label)); + } +} diff --git a/modules/computer/modules.c b/modules/computer/modules.c index df876e3a..14028362 100644 --- a/modules/computer/modules.c +++ b/modules/computer/modules.c @@ -1,10 +1,10 @@ /* * HardInfo - Displays System Information - * Copyright (C) 2003-2006 Leandro A. F. Pereira + * Copyright (C) 2003-2006 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, version 2. + * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -17,161 +17,384 @@ */ #include +#include +#include -#include "hardinfo.h" +#include "syncmanager.h" #include "computer.h" #include "cpu_util.h" /* for STRIFNULL() */ +#include "hardinfo.h" -#define GET_STR(field_name,ptr) \ - if (!ptr && strstr(tmp[0], field_name)) { \ - ptr = g_markup_escape_text(g_strstrip(tmp[1]), strlen(tmp[1])); \ - g_strfreev(tmp); \ - continue; \ - } +#define GET_STR(field_name, ptr) \ + if (!ptr && strstr(tmp[0], field_name)) { \ + ptr = g_markup_escape_text(g_strstrip(tmp[1]), strlen(tmp[1])); \ + g_strfreev(tmp); \ + continue; \ + } GHashTable *_module_hash_table = NULL; +static gchar *kernel_modules_dir = NULL; + +enum icons { + ICON_INVALID = 0, + + ICON_AUDIO, + ICON_BLUETOOTH, + ICON_CAMERA_WEB, + ICON_CDROM, + ICON_CRYPTOHASH, + ICON_DEVICES, + ICON_HDD, + ICON_INPUTDEVICES, + ICON_JOYSTICK, + ICON_KEYBOARD, + ICON_MEDIA_FLOPPY, + ICON_MEDIA_REMOVABLE, + ICON_MEMORY, + ICON_MONITOR, + ICON_MOUSE, + ICON_NETWORK, + ICON_NETWORK_CONNECTIONS, + ICON_NETWORK_INTERFACE, + ICON_THERM, + ICON_USB, + ICON_WIRELESS, + + ICON_MAX, +}; + +static const char *icon_table[ICON_MAX] = { + [ICON_AUDIO] = "audio", + [ICON_BLUETOOTH] = "bluetooth", + [ICON_CAMERA_WEB] = "camera-web", + [ICON_CDROM] = "cdrom", + [ICON_CRYPTOHASH] = "cryptohash", + [ICON_DEVICES] = "devices", + [ICON_HDD] = "hdd", + [ICON_INPUTDEVICES] = "inputdevices", + [ICON_JOYSTICK] = "joystick", + [ICON_KEYBOARD] = "keyboard", + [ICON_MEDIA_FLOPPY] = "media-floppy", + [ICON_MEDIA_REMOVABLE] = "media-removable", + [ICON_MEMORY] = "memory", + [ICON_MONITOR] = "monitor", + [ICON_MOUSE] = "mouse", + [ICON_NETWORK] = "network", + [ICON_NETWORK_CONNECTIONS] = "network-connections", + [ICON_NETWORK_INTERFACE] = "network-interface", + [ICON_THERM] = "therm", + [ICON_USB] = "usb", + [ICON_WIRELESS] = "wireless", +}; + +/* Keep this sorted by reverse strlen(dir)! */ +static const struct { + const gchar *dir; + enum icons icon; +} modules_icons[] = { + {"drivers/input/joystick/", ICON_JOYSTICK}, + {"drivers/input/keyboard/", ICON_KEYBOARD}, + {"drivers/media/usb/uvc/", ICON_CAMERA_WEB}, + {"drivers/net/wireless/", ICON_WIRELESS}, + {"drivers/net/ethernet/", ICON_NETWORK_INTERFACE}, + {"drivers/input/mouse/", ICON_MOUSE}, + {"drivers/bluetooth/", ICON_BLUETOOTH}, + {"drivers/media/v4l", ICON_CAMERA_WEB}, + {"arch/x86/crypto/", ICON_CRYPTOHASH}, + {"drivers/crypto/", ICON_CRYPTOHASH}, + {"net/bluetooth/", ICON_BLUETOOTH}, + {"drivers/input/", ICON_INPUTDEVICES}, + {"drivers/cdrom/", ICON_CDROM}, + {"drivers/hwmon/", ICON_THERM}, + {"drivers/iommu/", ICON_MEMORY}, + {"net/wireless/", ICON_WIRELESS}, + {"drivers/nvme/", ICON_HDD}, + {"net/ethernet/", ICON_NETWORK_INTERFACE}, + {"drivers/scsi/", ICON_HDD}, + {"drivers/edac/", ICON_MEMORY}, + {"drivers/hid/", ICON_INPUTDEVICES}, + {"drivers/gpu/", ICON_MONITOR}, + {"drivers/i2c/", ICON_MEMORY}, + {"drivers/ata/", ICON_HDD}, + {"drivers/usb/", ICON_USB}, + {"drivers/pci/", ICON_DEVICES}, + {"drivers/net/", ICON_NETWORK}, + {"drivers/mmc/", ICON_MEDIA_REMOVABLE}, + {"crypto/", ICON_CRYPTOHASH}, + {"sound/", ICON_AUDIO}, + {"net/", ICON_NETWORK_CONNECTIONS}, + {"fs/", ICON_MEDIA_FLOPPY}, + {}, +}; + +static GHashTable *module_icons; -void -scan_modules_do(void) +static void build_icon_table_iter(JsonObject *object, + const gchar *key, + JsonNode *value, + gpointer user_data) { + char *key_copy = g_strdup(key); + char *p; + + for (p = key_copy; *p; p++) { + if (*p == '_') + *p = '-'; + } + + enum icons icon; + const gchar *value_str = json_node_get_string(value); + for (icon = ICON_INVALID; icon < ICON_MAX; icon++) { + const char *icon_name = icon_table[icon]; + + if (!icon_name) + continue; + + if (g_str_equal(value_str, icon_name)) { + g_hash_table_insert(module_icons, + key_copy, GINT_TO_POINTER(icon)); + return; + } + } + + g_free(key_copy); +} + +void kernel_module_icon_init(void) +{ + gchar *icon_json; + + static SyncEntry sync_entry = { + .name = N_("Update kernel module icon table"), + .file_name = "kernel-module-icons.json", + }; + sync_manager_add_entry(&sync_entry); + + icon_json = g_build_filename(g_get_user_config_dir(), + "hardinfo", "kernel-module-icons.json", + NULL); + + module_icons = g_hash_table_new(g_str_hash, g_str_equal); + + if (!g_file_test(icon_json, G_FILE_TEST_EXISTS)) + goto out; + + JsonParser *parser = json_parser_new(); + if (!json_parser_load_from_file(parser, icon_json, NULL)) + goto out_destroy_parser; + + JsonNode *root = json_parser_get_root(parser); + if (json_node_get_node_type(root) != JSON_NODE_OBJECT) + goto out_destroy_parser; + + JsonObject *icons = json_node_get_object(root); + if (!icons) + goto out_destroy_parser; + + json_object_foreach_member(icons, build_icon_table_iter, NULL); + +out_destroy_parser: + g_object_unref(parser); + +out: + g_free(icon_json); +} + +static const gchar* get_module_icon(const char *modname, const char *path) +{ + char *modname_temp = g_strdup(modname); + char *p; + for (p = modname_temp; *p; p++) { + if (*p == '_') + *p = '-'; + } + gpointer icon = g_hash_table_lookup(module_icons, modname_temp); + g_free(modname_temp); + if (icon) + return icon_table[GPOINTER_TO_INT(icon)]; + + if (path == NULL) /* modinfo couldn't find module path */ + return NULL; + + if (kernel_modules_dir == NULL) { + struct utsname utsbuf; + uname(&utsbuf); + kernel_modules_dir = g_strdup_printf("/lib/modules/%s/kernel/", utsbuf.release); + } + + if (!g_str_has_prefix(path, kernel_modules_dir)) + return NULL; + + const gchar *path_no_prefix = path + strlen(kernel_modules_dir); + const size_t path_no_prefix_len = strlen(path_no_prefix); + int i; + + for (i = 0; modules_icons[i].dir; i++) { + if (g_str_has_prefix(path_no_prefix, modules_icons[i].dir)) + return icon_table[modules_icons[i].icon]; + } + + return NULL; +} + +void scan_modules_do(void) { FILE *lsmod; gchar buffer[1024]; gchar *lsmod_path; + gchar *module_icons; + const gchar *icon; - if (!_module_hash_table) { - _module_hash_table = g_hash_table_new(g_str_hash, g_str_equal); - } + if (!_module_hash_table) { _module_hash_table = g_hash_table_new(g_str_hash, g_str_equal); } g_free(module_list); + kernel_modules_dir = NULL; module_list = NULL; + module_icons = NULL; moreinfo_del_with_prefix("COMP:MOD"); lsmod_path = find_program("lsmod"); - if (!lsmod_path) - return; + if (!lsmod_path) return; lsmod = popen(lsmod_path, "r"); if (!lsmod) { g_free(lsmod_path); - return; + return; } - (void)fgets(buffer, 1024, lsmod); /* Discards the first line */ + (void)fgets(buffer, 1024, lsmod); /* Discards the first line */ while (fgets(buffer, 1024, lsmod)) { - gchar *buf, *strmodule, *hashkey; - gchar *author = NULL, - *description = NULL, - *license = NULL, - *deps = NULL, *vermagic = NULL, *filename = NULL, modname[64]; - FILE *modi; - glong memory; - - shell_status_pulse(); - - buf = buffer; - - sscanf(buf, "%s %ld", modname, &memory); - - hashkey = g_strdup_printf("MOD%s", modname); - buf = g_strdup_printf("/sbin/modinfo %s 2>/dev/null", modname); - - modi = popen(buf, "r"); - while (fgets(buffer, 1024, modi)) { - gchar **tmp = g_strsplit(buffer, ":", 2); - - GET_STR("author", author); - GET_STR("description", description); - GET_STR("license", license); - GET_STR("depends", deps); - GET_STR("vermagic", vermagic); - GET_STR("filename", filename); - - g_strfreev(tmp); - } - pclose(modi); - g_free(buf); - - /* old modutils includes quotes in some strings; strip them */ - /*remove_quotes(modname); - remove_quotes(description); - remove_quotes(vermagic); - remove_quotes(author); - remove_quotes(license); */ - - /* old modutils displays when there's no value for a - given field; this is not desirable in the module name - display, so change it to an empty string */ - if (description && g_str_equal(description, "<none>")) { - g_free(description); - description = g_strdup(""); - - g_hash_table_insert(_module_hash_table, - g_strdup(modname), + gchar *buf, *strmodule, *hashkey; + gchar *author = NULL, *description = NULL, *license = NULL, *deps = NULL, *vermagic = NULL, + *filename = NULL, *srcversion = NULL, *version = NULL, *retpoline = NULL, + *intree = NULL, modname[64]; + FILE *modi; + glong memory; + + shell_status_pulse(); + + buf = buffer; + + sscanf(buf, "%s %ld", modname, &memory); + + hashkey = g_strdup_printf("MOD%s", modname); + buf = g_strdup_printf("/sbin/modinfo %s 2>/dev/null", modname); + + modi = popen(buf, "r"); + while (fgets(buffer, 1024, modi)) { + gchar **tmp = g_strsplit(buffer, ":", 2); + + GET_STR("author", author); + GET_STR("description", description); + GET_STR("license", license); + GET_STR("depends", deps); + GET_STR("vermagic", vermagic); + GET_STR("filename", filename); + GET_STR("srcversion", srcversion); /* so "version" doesn't catch */ + GET_STR("version", version); + GET_STR("retpoline", retpoline); + GET_STR("intree", intree); + + g_strfreev(tmp); + } + pclose(modi); + g_free(buf); + + /* old modutils includes quotes in some strings; strip them */ + /*remove_quotes(modname); + remove_quotes(description); + remove_quotes(vermagic); + remove_quotes(author); + remove_quotes(license); */ + + /* old modutils displays when there's no value for a + given field; this is not desirable in the module name + display, so change it to an empty string */ + if (description && g_str_equal(description, "<none>")) { + g_free(description); + description = g_strdup(""); + + g_hash_table_insert(_module_hash_table, g_strdup(modname), g_strdup_printf("Kernel module (%s)", modname)); - } else { - g_hash_table_insert(_module_hash_table, - g_strdup(modname), - g_strdup(description)); + } else { + g_hash_table_insert(_module_hash_table, g_strdup(modname), g_strdup(description)); } - /* append this module to the list of modules */ - module_list = h_strdup_cprintf("$%s$%s=%s\n", - module_list, - hashkey, - modname, - description ? description : ""); - - STRIFNULL(filename, _("(Not available)") ); - STRIFNULL(description, _("(Not available)") ); - STRIFNULL(vermagic, _("(Not available)") ); - STRIFNULL(author, _("(Not available)") ); - STRIFNULL(license, _("(Not available)") ); - - /* create the module information string */ - strmodule = g_strdup_printf("[%s]\n" - "%s=%s\n" - "%s=%.2f %s\n" - "[%s]\n" - "%s=%s\n" - "%s=%s\n" - "%s=%s\n" - "[%s]\n" - "%s=%s\n" - "%s=%s\n", - _("Module Information"), - _("Path"), filename, - _("Used Memory"), memory / 1024.0, _("KiB"), - _("Description"), - _("Name"), modname, - _("Description"), description, - _("Version Magic"), vermagic, - _("Copyright"), - _("Author"), author, - _("License"), license ); - - /* if there are dependencies, append them to that string */ - if (deps && strlen(deps)) { - gchar **tmp = g_strsplit(deps, ",", 0); - - strmodule = h_strconcat(strmodule, - "\n[", _("Dependencies"), "]\n", - g_strjoinv("=\n", tmp), - "=\n", NULL); - g_strfreev(tmp); - g_free(deps); - } + /* append this module to the list of modules */ + module_list = h_strdup_cprintf("$%s$%s=%s\n", module_list, hashkey, modname, + description ? description : ""); + icon = get_module_icon(modname, filename); + module_icons = h_strdup_cprintf("Icon$%s$%s=%s.png\n", module_icons, hashkey, + modname, icon ? icon: "module"); + + STRIFNULL(filename, _("(Not available)")); + STRIFNULL(description, _("(Not available)")); + STRIFNULL(vermagic, _("(Not available)")); + STRIFNULL(author, _("(Not available)")); + STRIFNULL(license, _("(Not available)")); + STRIFNULL(version, _("(Not available)")); + + gboolean ry = FALSE, ity = FALSE; + if (retpoline && *retpoline == 'Y') ry = TRUE; + if (intree && *intree == 'Y') ity = TRUE; - moreinfo_add_with_prefix("COMP", hashkey, strmodule); - g_free(hashkey); + g_free(retpoline); + g_free(intree); - g_free(license); - g_free(description); - g_free(author); - g_free(vermagic); - g_free(filename); + retpoline = g_strdup(ry ? _("Yes") : _("No")); + intree = g_strdup(ity ? _("Yes") : _("No")); + + /* create the module information string */ + strmodule = g_strdup_printf("[%s]\n" + "%s=%s\n" + "%s=%.2f %s\n" + "[%s]\n" + "%s=%s\n" + "%s=%s\n" + "%s=%s\n" + "%s=%s\n" + "%s=%s\n" + "%s=%s\n" + "[%s]\n" + "%s=%s\n" + "%s=%s\n", + _("Module Information"), _("Path"), filename, _("Used Memory"), + memory / 1024.0, _("KiB"), _("Description"), _("Name"), modname, + _("Description"), description, _("Version Magic"), vermagic, + _("Version"), version, _("In Linus' Tree"), intree, + _("Retpoline Enabled"), retpoline, _("Copyright"), _("Author"), + author, _("License"), license); + + /* if there are dependencies, append them to that string */ + if (deps && strlen(deps)) { + gchar **tmp = g_strsplit(deps, ",", 0); + + strmodule = h_strconcat(strmodule, "\n[", _("Dependencies"), "]\n", + g_strjoinv("=\n", tmp), "=\n", NULL); + g_strfreev(tmp); + g_free(deps); + } + + moreinfo_add_with_prefix("COMP", hashkey, strmodule); + g_free(hashkey); + + g_free(license); + g_free(description); + g_free(author); + g_free(vermagic); + g_free(filename); + g_free(srcversion); + g_free(version); + g_free(retpoline); + g_free(intree); } pclose(lsmod); g_free(lsmod_path); + g_free(kernel_modules_dir); + + if (module_list != NULL && module_icons != NULL) { + module_list = h_strdup_cprintf("[$ShellParam$]\n%s", module_list, module_icons); + } + g_free(module_icons); } diff --git a/modules/computer/os.c b/modules/computer/os.c index a8886f64..7648eef3 100644 --- a/modules/computer/os.c +++ b/modules/computer/os.c @@ -1,10 +1,10 @@ /* * HardInfo - Displays System Information - * Copyright (C) 2003-2006 Leandro A. F. Pereira + * Copyright (C) 2003-2006 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, version 2. + * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -21,6 +21,7 @@ #include #include "hardinfo.h" #include "computer.h" +#include "distro_flavors.h" static gchar * get_libc_version(void) @@ -46,7 +47,7 @@ get_libc_version(void) gboolean spawned; gchar *out, *err, *p; - spawned = g_spawn_command_line_sync(libs[i].test_cmd, + spawned = hardinfo_spawn_command_line_sync(libs[i].test_cmd, &out, &err, NULL, NULL); if (!spawned) continue; @@ -91,7 +92,7 @@ static gchar *detect_kde_version(void) cmd = "kcontrol --version"; } - spawned = g_spawn_command_line_sync(cmd, &out, NULL, NULL, NULL); + spawned = hardinfo_spawn_command_line_sync(cmd, &out, NULL, NULL, NULL); if (!spawned) return NULL; @@ -106,7 +107,7 @@ detect_gnome_version(void) gchar *out; gboolean spawned; - spawned = g_spawn_command_line_sync( + spawned = hardinfo_spawn_command_line_sync( "gnome-shell --version", &out, NULL, NULL, NULL); if (spawned) { tmp = strstr(idle_free(out), _("GNOME Shell ")); @@ -117,7 +118,7 @@ detect_gnome_version(void) } } - spawned = g_spawn_command_line_sync( + spawned = hardinfo_spawn_command_line_sync( "gnome-about --gnome-version", &out, NULL, NULL, NULL); if (spawned) { tmp = strstr(idle_free(out), _("Version: ")); @@ -131,17 +132,42 @@ detect_gnome_version(void) return NULL; } + static gchar * -detect_window_manager(void) +detect_mate_version(void) { - GdkScreen *screen = gdk_screen_get_default(); - const gchar *windowman; - const gchar *curdesktop; + gchar *tmp; + gchar *out; + gboolean spawned; - if (!screen || !GDK_IS_SCREEN(screen)) - return NULL; + spawned = hardinfo_spawn_command_line_sync( + "mate-about --version", &out, NULL, NULL, NULL); + if (spawned) { + tmp = strstr(idle_free(out), _("MATE Desktop Environment ")); - windowman = gdk_x11_screen_get_window_manager_name(screen); + if (tmp) { + tmp += strlen(_("MATE Desktop Environment ")); + return g_strdup_printf("MATE %s", strend(tmp, '\n')); + } + } + + return NULL; +} + +static gchar * +detect_window_manager(void) +{ + const gchar *curdesktop; + const gchar* windowman; + GdkScreen *screen = gdk_screen_get_default(); + +#if GTK_CHECK_VERSION(3,0,0) + if (GDK_IS_X11_SCREEN(screen)) { +#else + if (screen && GDK_IS_SCREEN(screen)) { +#endif + windowman = gdk_x11_screen_get_window_manager_name(screen); + } else return g_strdup("Not X11"); if (g_str_equal(windowman, "Xfwm4")) return g_strdup("XFCE 4"); @@ -192,6 +218,12 @@ detect_xdg_environment(const gchar *env_var) if (maybe_kde) return maybe_kde; } + if (g_str_equal(tmp, "MATE") || g_str_equal(tmp, "mate")) { + gchar *maybe_mate = detect_mate_version(); + + if (maybe_mate) + return maybe_mate; + } return g_strdup(tmp); } @@ -234,6 +266,44 @@ detect_desktop_environment(void) return g_strdup(_("Unknown")); } +gchar * +computer_get_dmesg_status(void) +{ + gchar *out = NULL, *err = NULL; + int ex = 1, result = 0; + hardinfo_spawn_command_line_sync("dmesg", &out, &err, &ex, NULL); + g_free(out); + g_free(err); + result += (getuid() == 0) ? 2 : 0; + result += ex ? 1 : 0; + switch(result) { + case 0: /* readable, user */ + return g_strdup(_("User access allowed")); + case 1: /* unreadable, user */ + return g_strdup(_("User access forbidden")); + case 2: /* readable, root */ + return g_strdup(_("Access allowed (running as superuser)")); + case 3: /* unreadable, root */ + return g_strdup(_("Access forbidden? (running as superuser)")); + } + return g_strdup(_("(Unknown)")); +} + +gchar * +computer_get_aslr(void) +{ + switch (h_sysfs_read_int("/proc/sys/kernel", "randomize_va_space")) { + case 0: + return g_strdup(_("Disabled")); + case 1: + return g_strdup(_("Partially enabled (mmap base+stack+VDSO base)")); + case 2: + return g_strdup(_("Fully enabled (mmap base+stack+VDSO base+heap)")); + default: + return g_strdup(_("Unknown")); + } +} + gchar * computer_get_entropy_avail(void) { @@ -281,7 +351,77 @@ computer_get_language(void) return ret; } -static gchar * +static Distro +parse_os_release(void) +{ + gchar *pretty_name = NULL; + gchar *id = NULL; + gchar *codename = NULL; + gchar **split, *contents, **line; + + if (!g_file_get_contents("/usr/lib/os-release", &contents, NULL, NULL)) + return (Distro) {}; + + split = g_strsplit(idle_free(contents), "\n", 0); + if (!split) + return (Distro) {}; + + for (line = split; *line; line++) { + if (!strncmp(*line, "ID=", sizeof("ID=") - 1)) { + id = g_strdup(*line + strlen("ID=")); + } else if (!strncmp(*line, "CODENAME=", sizeof("CODENAME=") - 1)) { + codename = g_strdup(*line + strlen("CODENAME=")); + } else if (!strncmp(*line, "PRETTY_NAME=", sizeof("PRETTY_NAME=") - 1)) { + pretty_name = g_strdup(*line + + strlen("PRETTY_NAME=\"")); + strend(pretty_name, '"'); + } + } + + g_strfreev(split); + + if (pretty_name) + return (Distro) { .distro = pretty_name, .codename = codename, .id = id }; + + g_free(id); + return (Distro) {}; +} + +static Distro +parse_lsb_release(void) +{ + gchar *pretty_name = NULL; + gchar *id = NULL; + gchar *codename = NULL; + gchar **split, *contents, **line; + + if (!hardinfo_spawn_command_line_sync("/usr/bin/lsb_release -di", &contents, NULL, NULL, NULL)) + return (Distro) {}; + + split = g_strsplit(idle_free(contents), "\n", 0); + if (!split) + return (Distro) {}; + + for (line = split; *line; line++) { + if (!strncmp(*line, "Distributor ID:\t", sizeof("Distributor ID:\t") - 1)) { + id = g_utf8_strdown(*line + strlen("Distributor ID:\t"), -1); + } else if (!strncmp(*line, "Codename:\t", sizeof("Codename:\t") - 1)) { + codename = g_utf8_strdown(*line + strlen("Codename:\t"), -1); + } else if (!strncmp(*line, "Description:\t", sizeof("Description:\t") - 1)) { + pretty_name = g_strdup(*line + strlen("Description:\t")); + } + } + + g_strfreev(split); + + if (pretty_name) + return (Distro) { .distro = pretty_name, .codename = codename, .id = id }; + + g_free(id); + return (Distro) {}; +} + +static Distro detect_distro(void) { static const struct { @@ -292,11 +432,11 @@ detect_distro(void) #define DB_PREFIX "/etc/" { DB_PREFIX "arch-release", "arch", "Arch Linux" }, { DB_PREFIX "fatdog-version", "fatdog" }, - { DB_PREFIX "debian_version", "deb" }, + { DB_PREFIX "debian_version", "debian" }, { DB_PREFIX "slackware-version", "slk" }, { DB_PREFIX "mandrake-release", "mdk" }, { DB_PREFIX "mandriva-release", "mdv" }, - { DB_PREFIX "fedora-release", "fdra" }, + { DB_PREFIX "fedora-release", "fedora" }, { DB_PREFIX "coas", "coas" }, { DB_PREFIX "environment.corel", "corel"}, { DB_PREFIX "gentoo-release", "gnt" }, @@ -305,7 +445,6 @@ detect_distro(void) { DB_PREFIX "turbolinux-release", "tl" }, { DB_PREFIX "yellowdog-release", "yd" }, { DB_PREFIX "sabayon-release", "sbn" }, - { DB_PREFIX "arch-release", "arch" }, { DB_PREFIX "enlisy-release", "enlsy" }, { DB_PREFIX "SuSE-release", "suse" }, { DB_PREFIX "sun-release", "sun" }, @@ -324,15 +463,17 @@ detect_distro(void) #undef DB_PREFIX { NULL, NULL } }; + Distro distro; gchar *contents; int i; - if (g_spawn_command_line_sync("lsb_release -d", &contents, NULL, NULL, NULL)) { - gchar *tmp = strstr(idle_free(contents), "Description:\t"); + distro = parse_os_release(); + if (distro.distro) + return distro; - if (tmp) - return g_strdup(tmp + strlen("Description:\t")); - } + distro = parse_lsb_release(); + if (distro.distro) + return distro; for (i = 0; distro_db[i].file; i++) { if (!g_file_get_contents(distro_db[i].file, &contents, NULL, NULL)) @@ -340,23 +481,31 @@ detect_distro(void) if (distro_db[i].override) { g_free(contents); - return g_strdup(distro_db[i].override); + return (Distro) { .distro = g_strdup(distro_db[i].override), + .codename = g_strdup(distro_db[i].codename) }; } - if (g_str_equal(distro_db[i].codename, "deb")) { + if (g_str_equal(distro_db[i].codename, "debian")) { /* HACK: Some Debian systems doesn't include the distribuition * name in /etc/debian_release, so add them here. */ if (isdigit(contents[0]) || contents[0] != 'D') - return g_strdup_printf("Debian GNU/Linux %s", (char*)idle_free(contents)); + return (Distro) { + .distro = g_strdup_printf("Debian GNU/Linux %s", (char*)idle_free(contents)), + .codename = g_strdup(distro_db[i].codename) + }; } - if (g_str_equal(distro_db[i].codename, "fatdog")) - return g_strdup_printf("Fatdog64 [%.10s]", (char*)idle_free(contents)); + if (g_str_equal(distro_db[i].codename, "fatdog")) { + return (Distro) { + .distro = g_strdup_printf("Fatdog64 [%.10s]", (char*)idle_free(contents)), + .codename = g_strdup(distro_db[i].codename) + }; + } - return contents; + return (Distro) { .distro = contents, .codename = g_strdup(distro_db[i].codename) }; } - return g_strdup(_("Unknown")); + return (Distro) { .distro = g_strdup(_("Unknown")) }; } OperatingSystem * @@ -368,13 +517,17 @@ computer_get_os(void) os = g_new0(OperatingSystem, 1); - os->distro = g_strstrip(detect_distro()); + Distro distro = detect_distro(); + os->distro = g_strstrip(distro.distro); + os->distroid = distro.id; + os->distrocode = distro.codename; /* Kernel and hostname info */ uname(&utsbuf); os->kernel_version = g_strdup(utsbuf.version); os->kernel = g_strdup_printf("%s %s (%s)", utsbuf.sysname, utsbuf.release, utsbuf.machine); + os->kcmdline = h_sysfs_read_string("/proc", "cmdline"); os->hostname = g_strdup(utsbuf.nodename); os->language = computer_get_language(); os->homedir = g_strdup(g_get_home_dir()); @@ -389,5 +542,41 @@ computer_get_os(void) os->entropy_avail = computer_get_entropy_avail(); + if (g_strcmp0(os->distrocode, "ubuntu") == 0) { + GSList *flavs = ubuntu_flavors_scan(); + if (flavs) { + /* just use the first one */ + os->distro_flavor = (DistroFlavor*)flavs->data; + } + g_slist_free(flavs); + } + return os; } + +const gchar * +computer_get_selinux(void) +{ + int r; + gboolean spawned = hardinfo_spawn_command_line_sync("selinuxenabled", + NULL, NULL, &r, NULL); + + if (!spawned) + return _("Not installed"); + + if (r == 0) + return _("Enabled"); + + return _("Disabled"); +} + +gchar * +computer_get_lsm(void) +{ + gchar *contents; + + if (!g_file_get_contents("/sys/kernel/security/lsm", &contents, NULL, NULL)) + return g_strdup(_("Unknown")); + + return contents; +} diff --git a/modules/computer/ubuntu_flavors.c b/modules/computer/ubuntu_flavors.c new file mode 100644 index 00000000..ac67d665 --- /dev/null +++ b/modules/computer/ubuntu_flavors.c @@ -0,0 +1,90 @@ +/* + * HardInfo - Displays System Information + * Copyright (C) 2003-2019 L. A. F. Pereira + * This file Burt P. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 2 or later. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include +#include "distro_flavors.h" +#include "util_sysobj.h" /* for appfsp() */ + +static const UbuntuFlavor ubuntu_flavors[] = { + { "Vanilla Server", "distros/ubuntu.svg", "https://ubuntu.org", "ubuntu-server" }, + { "Vanilla Desktop", "distros/ubuntu.svg", "https://ubuntu.org", "ubuntu-desktop" }, + { "Xubuntu", "distros/xubuntu.svg", "https://xubuntu.org", "xubuntu-desktop" }, + { "Kubuntu", "distros/kubuntu.png", "https://kubuntu.org", "kubuntu-desktop" }, + { "Lubuntu", "distros/lubuntu.png", "https://lubuntu.me", "lubuntu-desktop" }, /* formerly or also lubuntu.net? */ + { "Ubuntu MATE", "distros/ubuntu-mate.png", "https://ubuntu-mate.org", "ubuntu-mate-desktop" }, + { "Ubuntu Budgie", "distros/ubuntu-budgie.png", "https://ubuntubudgie.org", "ubuntu-budgie-desktop" }, + { "UbuntuKylin (做最有中国味的操作系统)", "distros/ubuntu-kylin.png", "https://www.ubuntukylin.com", "ubuntukylin-desktop" }, + { "UbuntuStudio", "distros/ubuntu-studio.png", "https://ubuntustudio.org", "ubuntustudio-desktop" }, + /* Deprecated flavors */ + { "Ubuntu GNOME", "distros/ubuntu-gnome.png", "https://ubuntugnome.org", "ubuntu-gnome-desktop" }, + // Edubuntu + // Mythbuntu + { NULL } +}; + +static const UbuntuFlavor *_find_flavor(const gchar *pkg) { + int i = 0; + for(; ubuntu_flavors[i].base.name; i++) { + if (SEQ(ubuntu_flavors[i].package, pkg)) + return &ubuntu_flavors[i]; + } + return NULL; +} + +/* items are const; free with g_slist_free() */ +GSList *ubuntu_flavors_scan(void) { + GSList *ret = NULL; + gboolean spawned; + gchar *out, *err, *p, *next_nl; + gint exit_status; + const UbuntuFlavor *f = NULL; + gchar *cmd_line = g_strdup("apt-cache policy"); + int i; + for(i = 0; ubuntu_flavors[i].base.name; i++) { + cmd_line = appfsp(cmd_line, "%s", ubuntu_flavors[i].package); + } + if (!i) + return NULL; + + spawned = hardinfo_spawn_command_line_sync(cmd_line, + &out, &err, &exit_status, NULL); + if (spawned) { + p = out; + while(next_nl = strchr(p, '\n')) { + strend(p, '\n'); + int mc = 0; + char pkg[32] = ""; + if (*p != ' ' && *p != '\t') + mc = sscanf(p, "%31s", pkg); + if (mc == 1) { + strend(pkg, ':'); + f = _find_flavor(pkg); + } else if + (g_strstr_len(p, -1, "Installed:") + && !g_strstr_len(p, -1, "(none)") ) { + ret = g_slist_append(ret, (void*)f); + } + p = next_nl + 1; + } + g_free(out); + g_free(err); + } + g_free(cmd_line); + return ret; +} diff --git a/modules/computer/uptime.c b/modules/computer/uptime.c index 6ef3d250..8aef1530 100644 --- a/modules/computer/uptime.c +++ b/modules/computer/uptime.c @@ -1,10 +1,10 @@ /* * HardInfo - Displays System Information - * Copyright (C) 2003-2006 Leandro A. F. Pereira + * Copyright (C) 2003-2006 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, version 2. + * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of diff --git a/modules/computer/users.c b/modules/computer/users.c index f47320bb..75e24f26 100644 --- a/modules/computer/users.c +++ b/modules/computer/users.c @@ -1,10 +1,10 @@ /* * HardInfo - Displays System Information - * Copyright (C) 2003-2009 Leandro A. F. Pereira + * Copyright (C) 2003-2009 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, version 2. + * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of diff --git a/modules/devices.c b/modules/devices.c index 152b6831..574896ee 100644 --- a/modules/devices.c +++ b/modules/devices.c @@ -1,10 +1,10 @@ /* * HardInfo - Displays System Information - * Copyright (C) 2003-2007 Leandro A. F. Pereira + * Copyright (C) 2003-2007 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, version 2. + * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -20,10 +20,6 @@ #define __USE_XOPEN #endif /* __USE_XOPEN */ -#ifndef _XOPEN_SOURCE -#define _XOPEN_SOURCE -#endif /* _XOPEN_SOURCE */ - #include #include #include @@ -38,9 +34,13 @@ #include "devices.h" #include "dt_util.h" +#include "udisks2_util.h" +#include "storage_util.h" +#include "pci_util.h" gchar *callback_processors(); -gchar *callback_memory(); +gchar *callback_gpu(); +gchar *callback_monitors(); gchar *callback_battery(); gchar *callback_pci(); gchar *callback_sensors(); @@ -48,15 +48,15 @@ gchar *callback_printers(); gchar *callback_storage(); gchar *callback_input(); gchar *callback_usb(); -#if defined(ARCH_x86) || defined(ARCH_x86_64) gchar *callback_dmi(); -gchar *callback_spd(); -#endif +gchar *callback_dmi_mem(); +gchar *callback_firmware(); gchar *callback_dtree(); gchar *callback_device_resources(); void scan_processors(gboolean reload); -void scan_memory(gboolean reload); +void scan_gpu(gboolean reload); +void scan_monitors(gboolean reload); void scan_battery(gboolean reload); void scan_pci(gboolean reload); void scan_sensors(gboolean reload); @@ -64,50 +64,52 @@ void scan_printers(gboolean reload); void scan_storage(gboolean reload); void scan_input(gboolean reload); void scan_usb(gboolean reload); -#if defined(ARCH_x86) || defined(ARCH_x86_64) void scan_dmi(gboolean reload); -void scan_spd(gboolean reload); -#endif +void scan_dmi_mem(gboolean reload); +void scan_firmware(gboolean reload); void scan_dtree(gboolean reload); void scan_device_resources(gboolean reload); gboolean root_required_for_resources(void); +gboolean spd_decode_show_hinote(const char**); gchar *hi_more_info(gchar *entry); enum { ENTRY_DTREE, + ENTRY_DMI, ENTRY_PROCESSOR, - ENTRY_MEMORY, + ENTRY_GPU, + ENTRY_MONITORS, + ENTRY_DMI_MEM, ENTRY_PCI, ENTRY_USB, + ENTRY_FW, ENTRY_PRINTERS, ENTRY_BATTERY, ENTRY_SENSORS, ENTRY_INPUT, ENTRY_STORAGE, - ENTRY_DMI, - ENTRY_SPD, ENTRY_RESOURCES }; static ModuleEntry entries[] = { [ENTRY_PROCESSOR] = {N_("Processor"), "processor.png", callback_processors, scan_processors, MODULE_FLAG_NONE}, - [ENTRY_MEMORY] = {N_("Memory"), "memory.png", callback_memory, scan_memory, MODULE_FLAG_NONE}, + [ENTRY_GPU] = {N_("Graphics Processors"), "devices.png", callback_gpu, scan_gpu, MODULE_FLAG_NONE}, + [ENTRY_MONITORS] = {N_("Monitors"), "monitor.png", callback_monitors, scan_monitors, MODULE_FLAG_NONE}, [ENTRY_PCI] = {N_("PCI Devices"), "devices.png", callback_pci, scan_pci, MODULE_FLAG_NONE}, [ENTRY_USB] = {N_("USB Devices"), "usb.png", callback_usb, scan_usb, MODULE_FLAG_NONE}, + [ENTRY_FW] = {N_("Firmware"), "processor.png", callback_firmware, scan_firmware, MODULE_FLAG_NONE}, [ENTRY_PRINTERS] = {N_("Printers"), "printer.png", callback_printers, scan_printers, MODULE_FLAG_NONE}, [ENTRY_BATTERY] = {N_("Battery"), "battery.png", callback_battery, scan_battery, MODULE_FLAG_NONE}, [ENTRY_SENSORS] = {N_("Sensors"), "therm.png", callback_sensors, scan_sensors, MODULE_FLAG_NONE}, [ENTRY_INPUT] = {N_("Input Devices"), "inputdevices.png", callback_input, scan_input, MODULE_FLAG_NONE}, [ENTRY_STORAGE] = {N_("Storage"), "hdd.png", callback_storage, scan_storage, MODULE_FLAG_NONE}, + [ENTRY_DMI] = {N_("System DMI"), "computer.png", callback_dmi, scan_dmi, MODULE_FLAG_NONE}, + [ENTRY_DMI_MEM] = {N_("Memory Devices"), "memory.png", callback_dmi_mem, scan_dmi_mem, MODULE_FLAG_NONE}, #if defined(ARCH_x86) || defined(ARCH_x86_64) - [ENTRY_DMI] = {N_("DMI"), "computer.png", callback_dmi, scan_dmi, MODULE_FLAG_NONE}, - [ENTRY_SPD] = {N_("Memory SPD"), "memory.png", callback_spd, scan_spd, MODULE_FLAG_NONE}, - [ENTRY_DTREE] = {"#"}, + [ENTRY_DTREE] = {N_("Device Tree"), "devices.png", callback_dtree, scan_dtree, MODULE_FLAG_HIDE}, #else - [ENTRY_DMI] = {"#"}, - [ENTRY_SPD] = {"#"}, [ENTRY_DTREE] = {N_("Device Tree"), "devices.png", callback_dtree, scan_dtree, MODULE_FLAG_NONE}, #endif /* x86 or x86_64 */ [ENTRY_RESOURCES] = {N_("Resources"), "resources.png", callback_device_resources, scan_device_resources, MODULE_FLAG_NONE}, @@ -119,13 +121,34 @@ gchar *printer_list = NULL; gchar *printer_icons = NULL; gchar *pci_list = NULL; gchar *input_list = NULL; +gboolean storage_no_nvme = FALSE; gchar *storage_list = NULL; gchar *battery_list = NULL; -gchar *meminfo = NULL; -gchar *lginterval = NULL; + +/* in dmi_memory.c */ +gchar *memory_devices_get_info(); +gboolean memory_devices_hinote(const char **msg); +gchar *memory_devices_info = NULL; + +/* in firmware.c */ +gchar *firmware_get_info(); +gboolean firmware_hinote(const char **msg); +gchar *firmware_info = NULL; + +/* in monitors.c */ +gchar *monitors_get_info(); +gboolean monitors_hinote(const char **msg); +gchar *monitors_info = NULL; #include +extern gchar *gpu_summary; +const gchar *get_gpu_summary() { + if (gpu_summary == NULL) + scan_gpu(FALSE); + return gpu_summary; +} + static gint proc_cmp_model_name(Processor *a, Processor *b) { return g_strcmp0(a->model_name, b->model_name); } @@ -140,19 +163,27 @@ static gint proc_cmp_max_freq(Processor *a, Processor *b) { gchar *processor_describe_default(GSList * processors) { - int packs, cores, threads; - const gchar *packs_fmt, *cores_fmt, *threads_fmt; + int packs, cores, threads, nodes; + const gchar *packs_fmt, *cores_fmt, *threads_fmt, *nodes_fmt; gchar *ret, *full_fmt; - cpu_procs_cores_threads(&packs, &cores, &threads); + cpu_procs_cores_threads_nodes(&packs, &cores, &threads, &nodes); + + /* NOTE: If this is changed, look at get_cpu_desc() in bench_results.c! */ /* if topology info was available, else fallback to old method */ if (cores > 0) { packs_fmt = ngettext("%d physical processor", "%d physical processors", packs); cores_fmt = ngettext("%d core", "%d cores", cores); threads_fmt = ngettext("%d thread", "%d threads", threads); - full_fmt = g_strdup_printf(_(/*/NP procs; NC cores; NT threads*/ "%s; %s; %s"), packs_fmt, cores_fmt, threads_fmt); - ret = g_strdup_printf(full_fmt, packs, cores, threads); + if (nodes > 1) { + nodes_fmt = ngettext("%d NUMA node", "%d NUMA nodes", nodes); + full_fmt = g_strdup_printf(_(/*/NP procs; NC cores across NN nodes; NT threads*/ "%s; %s across %s; %s"), packs_fmt, cores_fmt, nodes_fmt, threads_fmt); + ret = g_strdup_printf(full_fmt, packs, cores * nodes, nodes, threads); + } else { + full_fmt = g_strdup_printf(_(/*/NP procs; NC cores; NT threads*/ "%s; %s; %s"), packs_fmt, cores_fmt, threads_fmt); + ret = g_strdup_printf(full_fmt, packs, cores, threads); + } g_free(full_fmt); return ret; } else { @@ -246,6 +277,44 @@ gchar *get_processor_name_and_desc(void) return nd; } +gchar *get_storage_devices_simple(void) +{ + scan_storage(FALSE); + + struct Info *info = info_unflatten(storage_list); + if (!info) { + return ""; + } + + guint i, fi; + struct InfoGroup *group; + struct InfoField *field; + gchar *storage_devs = NULL, *tmp; + const gchar *dev_label, *model_wo_tags; + + GRegex *regex; + regex = g_regex_new ("<.*>", 0, 0, NULL); + + for (i = 0; i < info->groups->len; i++) { + group = &g_array_index(info->groups, struct InfoGroup, info->groups->len - 1); + if (!group) + continue; + + info_group_strip_extra(group); + for (fi = 0; fi < group->fields->len; fi++) { + field = &g_array_index(group->fields, struct InfoField, fi); + if (!field->value) + continue; + + tmp = g_regex_replace(regex, field->value, -1, 0, "", 0, NULL); // remove html tags + storage_devs = h_strdup_cprintf("%s\n", storage_devs, g_strchug(tmp)); + g_free(tmp); + } + } + g_free(info); + + return storage_devs; +} gchar *get_storage_devices(void) { @@ -336,59 +405,138 @@ gchar *get_processor_max_frequency(void) } } -gchar *get_pci_device_description(gchar *pci_id) +gchar *get_motherboard(void) { - gchar *description; + gchar *board_name, *board_vendor, *board_version; + gchar *product_name, *product_vendor, *product_version; + gchar *board_part = NULL, *product_part = NULL; + const gchar *tmp; + int b = 0, p = 0; - if (!_pci_devices) { - scan_pci(FALSE); + gchar *ret; + +#if defined(ARCH_x86) || defined(ARCH_x86_64) + scan_dmi(FALSE); + + board_name = dmi_get_str("baseboard-product-name"); + board_version = dmi_get_str("baseboard-version"); + board_vendor = dmi_get_str("baseboard-manufacturer"); + if (board_vendor) { + /* attempt to shorten */ + tmp = vendor_get_shortest_name(board_vendor); + if (tmp && tmp != board_vendor) { + g_free(board_vendor); + board_vendor = g_strdup(tmp); + } } - if ((description = g_hash_table_lookup(_pci_devices, pci_id))) { - return g_strdup(description); + product_name = dmi_get_str("system-product-name"); + product_version = dmi_get_str("system-version"); + product_vendor = dmi_get_str("system-manufacturer"); + if (product_vendor) { + /* attempt to shorten */ + tmp = vendor_get_shortest_name(product_vendor); + if (tmp && tmp != product_vendor) { + g_free(product_vendor); + product_vendor = g_strdup(tmp); + } } - return NULL; -} + if (board_vendor && product_vendor && + strcmp(board_vendor, product_vendor) == 0) { + /* ignore duplicate vendor */ + g_free(product_vendor); + product_vendor = NULL; + } -gchar *get_memory_total(void) -{ - scan_memory(FALSE); - return moreinfo_lookup ("DEV:MemTotal"); -} + if (board_name && product_name && + strcmp(board_name, product_name) == 0) { + /* ignore duplicate name */ + g_free(product_name); + product_name = NULL; + } -gchar *get_motherboard(void) -{ - char *board_name, *board_vendor, *system_version; - char *ret; + if (board_version && product_version && + strcmp(board_version, product_version) == 0) { + /* ignore duplicate version */ + g_free(product_version); + product_version = NULL; + } -#if defined(ARCH_x86) || defined(ARCH_x86_64) - scan_dmi(FALSE); + if (board_name) b += 1; + if (board_vendor) b += 2; + if (board_version) b += 4; + + switch(b) { + case 1: /* only name */ + board_part = g_strdup(board_name); + break; + case 2: /* only vendor */ + board_part = g_strdup(board_vendor); + break; + case 3: /* only name and vendor */ + board_part = g_strdup_printf("%s %s", board_vendor, board_name); + break; + case 4: /* only version? Seems unlikely */ + board_part = g_strdup(board_version); + break; + case 5: /* only name and version? */ + board_part = g_strdup_printf("%s %s", board_name, board_version); + break; + case 6: /* only vendor and version (like lpereira's Thinkpad) */ + board_part = g_strdup_printf("%s %s", board_vendor, board_version); + break; + case 7: /* all */ + board_part = g_strdup_printf("%s %s %s", board_vendor, board_name, board_version); + break; + } - board_name = dmi_get_str("baseboard-product-name"); - if (board_name == NULL) - board_name = dmi_get_str("system-product-name"); + if (product_name) p += 1; + if (product_vendor) p += 2; + if (product_version) p += 4; + + switch(p) { + case 1: /* only name */ + product_part = g_strdup(product_name); + break; + case 2: /* only vendor */ + product_part = g_strdup(product_vendor); + break; + case 3: /* only name and vendor */ + product_part = g_strdup_printf("%s %s", product_vendor, product_name); + break; + case 4: /* only version? Seems unlikely */ + product_part = g_strdup(product_version); + break; + case 5: /* only name and version? */ + product_part = g_strdup_printf("%s %s", product_name, product_version); + break; + case 6: /* only vendor and version? */ + product_part = g_strdup_printf("%s %s", product_vendor, product_version); + break; + case 7: /* all */ + product_part = g_strdup_printf("%s %s %s", product_vendor, product_name, product_version); + break; + } - board_vendor = dmi_get_str("baseboard-manufacturer"); - if (board_vendor == NULL) - board_vendor = dmi_get_str("system-manufacturer"); - - system_version = dmi_get_str("system-version"); - - if (board_name && board_vendor && system_version) - ret = g_strdup_printf("%s / %s (%s)", system_version, board_name, board_vendor); - else if (board_name && board_vendor) - ret = g_strconcat(board_vendor, " ", board_name, NULL); - else if (board_name) - ret = g_strdup(board_name); - else if (board_vendor) - ret = g_strdup(board_vendor); + if (board_part && product_part) { + ret = g_strdup_printf("%s (%s)", board_part, product_part); + g_free(board_part); + g_free(product_part); + } else if (board_part) + ret = board_part; + else if (product_part) + ret = product_part; else ret = g_strdup(_("(Unknown)")); - free(board_name); - free(board_vendor); - free(system_version); + g_free(board_name); + g_free(board_vendor); + g_free(board_version); + g_free(product_name); + g_free(product_vendor); + g_free(product_version); + return ret; #endif @@ -400,22 +548,22 @@ gchar *get_motherboard(void) return g_strdup(_("Unknown")); } -ShellModuleMethod *hi_exported_methods(void) -{ - static ShellModuleMethod m[] = { - {"getProcessorCount", get_processor_count}, - {"getProcessorName", get_processor_name}, - {"getProcessorDesc", get_processor_desc}, - {"getProcessorNameAndDesc", get_processor_name_and_desc}, - {"getProcessorFrequency", get_processor_max_frequency}, - {"getProcessorFrequencyDesc", get_processor_frequency_desc}, - {"getMemoryTotal", get_memory_total}, - {"getStorageDevices", get_storage_devices}, - {"getPrinters", get_printers}, - {"getInputDevices", get_input_devices}, - {"getPCIDeviceDescription", get_pci_device_description}, - {"getMotherboard", get_motherboard}, - {NULL} +const ShellModuleMethod *hi_exported_methods(void) +{ + static const ShellModuleMethod m[] = { + {"getProcessorCount", get_processor_count}, + {"getProcessorName", get_processor_name}, + {"getProcessorDesc", get_processor_desc}, + {"getProcessorNameAndDesc", get_processor_name_and_desc}, + {"getProcessorFrequency", get_processor_max_frequency}, + {"getProcessorFrequencyDesc", get_processor_frequency_desc}, + {"getStorageDevices", get_storage_devices}, + {"getStorageDevicesSimple", get_storage_devices_simple}, + {"getPrinters", get_printers}, + {"getInputDevices", get_input_devices}, + {"getMotherboard", get_motherboard}, + {"getGPUList", get_gpu_summary}, + {NULL}, }; return m; @@ -434,14 +582,12 @@ gchar *hi_more_info(gchar * entry) gchar *hi_get_field(gchar * field) { gchar *info = moreinfo_lookup_with_prefix("DEV", field); - if (info) - return g_strdup(info); + return g_strdup(info); return g_strdup(field); } -#if defined(ARCH_x86) || defined(ARCH_x86_64) void scan_dmi(gboolean reload) { SCAN_START(); @@ -449,13 +595,32 @@ void scan_dmi(gboolean reload) SCAN_END(); } -void scan_spd(gboolean reload) +void scan_dmi_mem(gboolean reload) { SCAN_START(); - scan_spd_do(); + if (memory_devices_info) + g_free(memory_devices_info); + memory_devices_info = memory_devices_get_info(); + SCAN_END(); +} + +void scan_monitors(gboolean reload) +{ + SCAN_START(); + if (monitors_info) + g_free(monitors_info); + monitors_info = monitors_get_info(); + SCAN_END(); +} + +void scan_firmware(gboolean reload) +{ + SCAN_START(); + if (firmware_info) + g_free(firmware_info); + firmware_info = firmware_get_info(); SCAN_END(); } -#endif void scan_dtree(gboolean reload) { @@ -472,17 +637,17 @@ void scan_processors(gboolean reload) SCAN_END(); } -void scan_memory(gboolean reload) +void scan_battery(gboolean reload) { SCAN_START(); - scan_memory_do(); + scan_battery_do(); SCAN_END(); } -void scan_battery(gboolean reload) +void scan_gpu(gboolean reload) { SCAN_START(); - scan_battery_do(); + scan_gpu_do(); SCAN_END(); } @@ -512,9 +677,12 @@ void scan_storage(gboolean reload) SCAN_START(); g_free(storage_list); storage_list = g_strdup(""); - - __scan_ide_devices(); - __scan_scsi_devices(); + storage_no_nvme = FALSE; + if (!__scan_udisks2_devices()) { + storage_no_nvme = TRUE; + __scan_ide_devices(); + __scan_scsi_devices(); + } SCAN_END(); } @@ -537,17 +705,28 @@ gchar *callback_processors() return processor_get_info(processors); } -#if defined(ARCH_x86) || defined(ARCH_x86_64) gchar *callback_dmi() { - return g_strdup(dmi_info); + return g_strdup_printf("%s" + "[$ShellParam$]\n" + "ViewType=5\n", + dmi_info); } -gchar *callback_spd() +gchar *callback_dmi_mem() { - return g_strdup(spd_info); + return g_strdup(memory_devices_info); +} + +gchar *callback_monitors() +{ + return g_strdup(monitors_info); +} + +gchar *callback_firmware() +{ + return g_strdup(firmware_info); } -#endif gchar *callback_dtree() { @@ -556,41 +735,27 @@ gchar *callback_dtree() "ViewType=1\n", dtree_info); } -gchar *callback_memory() -{ - return g_strdup_printf("[Memory]\n" - "%s\n" - "[$ShellParam$]\n" - "ViewType=2\n" - "LoadGraphSuffix= kB\n" - "RescanInterval=2000\n" - "ColumnTitle$TextValue=%s\n" - "ColumnTitle$Extra1=%s\n" - "ColumnTitle$Value=%s\n" - "ShowColumnHeaders=true\n" - "%s\n", meminfo, - _("Field"), _("Description"), _("Value"), /* column labels */ - lginterval); -} - gchar *callback_battery() { return g_strdup_printf("%s\n" "[$ShellParam$]\n" + "ViewType=5\n" "ReloadInterval=4000\n", battery_list); } gchar *callback_pci() { - return g_strdup_printf("[PCI Devices]\n" - "%s" - "[$ShellParam$]\n" "ViewType=1\n", pci_list); + return g_strdup(pci_list); +} + +gchar *callback_gpu() +{ + return g_strdup(gpu_list); } gchar *callback_sensors() { - return g_strdup_printf("[Sensors]\n" - "%s\n" + return g_strdup_printf("%s\n" "[$ShellParam$]\n" "ViewType=2\n" "LoadGraphSuffix=\n" @@ -599,10 +764,13 @@ gchar *callback_sensors() "ColumnTitle$Extra1=%s\n" "ShowColumnHeaders=true\n" "RescanInterval=5000\n" + "%s\n" "%s", sensors, - _("Sensor"), _("Value"), _("Type"), /* column labels */ - lginterval); + _("Sensor"), _("Value"), + SENSORS_GROUP_BY_TYPE ? _("Driver"): _("Type"), + lginterval, + sensor_icons); } gchar *callback_printers() @@ -617,27 +785,37 @@ gchar *callback_printers() gchar *callback_storage() { return g_strdup_printf("%s\n" - "[$ShellParam$]\n" - "ReloadInterval=5000\n" - "ViewType=1\n%s", storage_list, storage_icons); + "[$ShellParam$]\n" + "ReloadInterval=5000\n" + "ColumnTitle$TextValue=%s\n" + "ColumnTitle$Value=%s\n" + "ColumnTitle$Extra1=%s\n" + "ShowColumnHeaders=true\n" + "ViewType=1\n%s", storage_list, _("Device"), _("Size"), _("Model"), storage_icons); } gchar *callback_input() { return g_strdup_printf("[Input Devices]\n" - "%s" - "[$ShellParam$]\n" - "ViewType=1\n" - "ReloadInterval=5000\n%s", input_list, - input_icons); + "%s" + "[$ShellParam$]\n" + "ViewType=1\n" + "ColumnTitle$TextValue=%s\n" + "ColumnTitle$Value=%s\n" + "ColumnTitle$Extra1=%s\n" + "ShowColumnHeaders=true\n" + "ReloadInterval=5000\n%s", + input_list, _("Device"), _("Vendor"), _("Type"), + input_icons); } gchar *callback_usb() { return g_strdup_printf("%s" - "[$ShellParam$]\n" - "ViewType=1\n" - "ReloadInterval=5000\n", usb_list); + "[$ShellParam$]\n" + "ViewType=1\n" + "ReloadInterval=5000\n%s", usb_list, usb_icons); + } ModuleEntry *hi_module_get_entries(void) @@ -657,54 +835,68 @@ guchar hi_module_get_weight(void) void hi_module_init(void) { - if (!g_file_test("/usr/share/misc/pci.ids", G_FILE_TEST_EXISTS)) { - static SyncEntry se = { - .fancy_name = N_("Update PCI ID listing"), - .name = "GetPCIIds", - .save_to = "pci.ids", - .get_data = NULL - }; - - sync_manager_add_entry(&se); - } + static SyncEntry entries[] = { + { + .name = N_("Update PCI ID listing"), + .file_name = "pci.ids", + }, + { + .name = N_("Update USB ID listing"), + .file_name = "usb.ids", + }, + { + .name = N_("Update EDID vendor codes"), + .file_name = "edid.ids", + }, + { + .name = N_("Update IEEE OUI vendor codes"), + .file_name = "ieee_oui.ids", + }, + { + .name = N_("Update SD card manufacturer information"), + .file_name = "sdcard.ids", + }, +#ifdef ARCH_x86 + { + .name = N_("Update CPU flags database"), + .file_name = "cpuflags.json", + }, +#endif + }; + guint i; -#if defined(ARCH_x86) || defined(ARCH_x86_64) - { - static SyncEntry se = { - .fancy_name = N_("Update CPU feature database"), - .name = "RecvCPUFlags", - .save_to = "cpuflags.conf", - .get_data = NULL - }; - - sync_manager_add_entry(&se); - } -#endif /* defined(ARCH_x86) */ + for (i = 0; i < G_N_ELEMENTS(entries); i++) + sync_manager_add_entry(&entries[i]); - init_memory_labels(); init_cups(); - sensors_init(); + sensor_init(); + udisks2_init(); + +#ifdef ARCH_x86 + void cpuflags_x86_init(void); + cpuflags_x86_init(); +#endif } void hi_module_deinit(void) { moreinfo_del_with_prefix("DEV"); - sensors_shutdown(); - g_hash_table_destroy(memlabels); - g_module_close(cups); + sensor_shutdown(); + storage_shutdown(); + udisks2_shutdown(); + if(cups) g_module_close(cups); } -ModuleAbout *hi_module_get_about(void) +const ModuleAbout *hi_module_get_about(void) { - static ModuleAbout ma[] = { - { - .author = "Leandro A. F. Pereira", - .description = N_("Gathers information about hardware devices"), - .version = VERSION, - .license = "GNU GPL version 2"} + static const ModuleAbout ma = { + .author = "L. A. F. Pereira", + .description = N_("Gathers information about hardware devices"), + .version = VERSION, + .license = "GNU GPL version 2 or later.", }; - return ma; + return &ma; } gchar **hi_module_get_dependencies(void) @@ -716,10 +908,39 @@ gchar **hi_module_get_dependencies(void) const gchar *hi_note_func(gint entry) { + if (entry == ENTRY_PCI + || entry == ENTRY_GPU) { + const gchar *ids = find_pci_ids_file(); + if (!ids) { + return g_strdup(_("A copy of pci.ids is not available on the system.")); + } + if (ids && strstr(ids, ".min")) { + return g_strdup(_("A full pci.ids is not available on the system.")); + } + } if (entry == ENTRY_RESOURCES) { if (root_required_for_resources()) { return g_strdup(_("Resource information requires superuser privileges")); } } + else if (entry == ENTRY_STORAGE){ + if (storage_no_nvme) { + return g_strdup( + _("Any NVMe storage devices present are not listed.\n" + "udisksd is required for NVMe devices.")); + } + } + else if (entry == ENTRY_DMI_MEM){ + const char *msg; + if (memory_devices_hinote(&msg)) { + return msg; + } + } + else if (entry == ENTRY_FW) { + const char *msg; + if (firmware_hinote(&msg)) { + return msg; + } + } return NULL; } diff --git a/modules/devices/alpha/processor.c b/modules/devices/alpha/processor.c index c7862232..0e625316 100644 --- a/modules/devices/alpha/processor.c +++ b/modules/devices/alpha/processor.c @@ -1,10 +1,10 @@ /* * HardInfo - Displays System Information - * Copyright (C) 2003-2006 Leandro A. F. Pereira + * Copyright (C) 2003-2006 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, version 2. + * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of diff --git a/modules/devices/arm/arm_data.c b/modules/devices/arm/arm_data.c index 60e8ea34..aece272f 100644 --- a/modules/devices/arm/arm_data.c +++ b/modules/devices/arm/arm_data.c @@ -81,47 +81,6 @@ static struct { { NULL, NULL } }; -static struct { - int code; char *name; -} tab_arm_implementer[] = { - { 0x41, "ARM" }, - { 0x44, "Intel (formerly DEC) StrongARM" }, - { 0x4e, "nVidia" }, - { 0x54, "Texas Instruments" }, - { 0x56, "Marvell" }, - { 0x69, "Intel XScale" }, - { 0, NULL}, -}; - -static struct { - /* source: t = tested, d = official docs, f = web */ - int code; char *part_desc; -} tab_arm_arm_part[] = { /* only valid for implementer 0x41 ARM */ - /*d */ { 0x920, "ARM920" }, - /*d */ { 0x926, "ARM926" }, - /*d */ { 0x946, "ARM946" }, - /*d */ { 0x966, "ARM966" }, - /*d */ { 0xb02, "ARM11 MPCore" }, - /*d */ { 0xb36, "ARM1136" }, - /*d */ { 0xb56, "ARM1156" }, - /*dt*/ { 0xb76, "ARM1176" }, - /*dt*/ { 0xc05, "Cortex-A5" }, - /*d */ { 0xc07, "Cortex-A7 MPCore" }, - /*dt*/ { 0xc08, "Cortex-A8" }, - /*dt*/ { 0xc09, "Cortex-A9" }, - /*d */ { 0xc0e, "Cortex-A17 MPCore" }, - /*d */ { 0xc0f, "Cortex-A15" }, - /*d */ { 0xd01, "Cortex-A32" }, - /*dt*/ { 0xd03, "Cortex-A53" }, - /*d */ { 0xd04, "Cortex-A35" }, - /*d */ { 0xd05, "Cortex-A55" }, - /*d */ { 0xd07, "Cortex-A57 MPCore" }, - /*d */ { 0xd08, "Cortex-A72" }, - /*d */ { 0xd09, "Cortex-A73" }, - /*d */ { 0xd0a, "Cortex-A75" }, - { 0, NULL}, -}; - static struct { char *code; char *name; char *more; } tab_arm_arch[] = { @@ -161,37 +120,47 @@ const char *arm_flag_meaning(const char *flag) { return NULL; } -static int code_match(int c0, const char* code1) { - int c1; - if (code1 == NULL) return 0; - c1 = strtol(code1, NULL, 0); - return (c0 == c1) ? 1 : 0; -} - -const char *arm_implementer(const char *code) { - int i = 0; - if (code) - while(tab_arm_implementer[i].code) { - if (code_match(tab_arm_implementer[i].code, code)) - return tab_arm_implementer[i].name; - i++; +#include "util_ids.h" + +gchar *arm_ids_file = NULL; + +void find_arm_ids_file() { + if (arm_ids_file) return; + char *file_search_order[] = { + g_build_filename(g_get_user_config_dir(), "hardinfo2", "arm.ids", NULL), + g_build_filename(params.path_data, "arm.ids", NULL), + NULL + }; + int n; + for(n = 0; file_search_order[n]; n++) { + if (!arm_ids_file && !access(file_search_order[n], R_OK)) + arm_ids_file = (gchar*) auto_free_on_exit( file_search_order[n] ); + else + g_free(file_search_order[n]); } - return NULL; } -const char *arm_part(const char *imp_code, const char *part_code) { - int i = 0; - if (imp_code && part_code) { - if (code_match(0x41, imp_code)) { - /* 0x41=ARM parts */ - while(tab_arm_arm_part[i].code) { - if (code_match(tab_arm_arm_part[i].code, part_code)) - return tab_arm_arm_part[i].part_desc; - i++; - } - } - } - return NULL; +void arm_part(const char *imp_code, const char *part_code, char **imp, char **part) { + gchar *qpath = NULL; + ids_query_result result = {}; + unsigned int i,p; + + if (!arm_ids_file) + find_arm_ids_file(); + + i = strtol(imp_code, NULL, 0); + p = strtol(part_code, NULL, 0); + qpath = g_strdup_printf("%02x/%03x", i, p); + scan_ids_file(arm_ids_file, qpath, &result, -1); + g_free(qpath); + if (imp) + *imp = result.results[0] + ? g_strdup(result.results[0]) + : NULL; + if (part) + *part = result.results[1] + ? g_strdup(result.results[1]) + : NULL; } const char *arm_arch(const char *cpuinfo_arch_str) { @@ -229,8 +198,7 @@ char *arm_decoded_name(const char *imp, const char *part, const char *var, const * variant and revision can be rendered r{variant}p{revision} */ r = strtol(var, NULL, 0); p = strtol(rev, NULL, 0); - imp_name = (char*) arm_implementer(imp); - part_desc = (char*) arm_part(imp, part); + arm_part(imp, part, &imp_name, &part_desc); arch_name = (char*) arm_arch(arch); if (imp_name || part_desc) { if (arch_name != arch) @@ -251,6 +219,8 @@ char *arm_decoded_name(const char *imp, const char *part, const char *var, const (part_desc) ? part_desc : part, r, p, arch); } + g_free(imp_name); + g_free(part_desc); } else { /* prolly not ARM arch at all */ if (model_name) diff --git a/modules/devices/arm/arm_data.h b/modules/devices/arm/arm_data.h index 63b3c906..0e93d323 100644 --- a/modules/devices/arm/arm_data.h +++ b/modules/devices/arm/arm_data.h @@ -22,13 +22,12 @@ #define _ARMDATA_H_ /* table lookups */ -const char *arm_implementer(const char *code); -const char *arm_part(const char *imp_code, const char *part_code); +void arm_part(const char *imp_code, const char *part_code, char **imp, char **part); const char *arm_arch(const char *cpuinfo_arch_str); const char *arm_arch_more(const char *cpuinfo_arch_str); /* cpu_implementer, cpu_part, cpu_variant, cpu_revision, cpu_architecture from /proc/cpuinfo - * model_name is returned as a fallback if not enough data is known */ + * strdup(model_name) is returned as a fallback if not enough data is known */ char *arm_decoded_name( const char *imp, const char *part, const char *var, const char *rev, const char *arch, const char *model_name); diff --git a/modules/devices/arm/processor.c b/modules/devices/arm/processor.c index 3bee39f8..9446108d 100644 --- a/modules/devices/arm/processor.c +++ b/modules/devices/arm/processor.c @@ -1,10 +1,10 @@ /* * HardInfo - Displays System Information - * Copyright (C) 2003-2006 Leandro A. F. Pereira + * Copyright (C) 2003-2006 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, version 2. + * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -45,6 +45,7 @@ processor_scan(void) gchar buffer[128]; gchar *rep_pname = NULL; GSList *pi = NULL; + dtr *dt = dtr_new(NULL); cpuinfo = fopen(PROC_CPUINFO, "r"); if (!cpuinfo) @@ -162,6 +163,18 @@ processor_scan(void) else processor->cpu_mhz = 0.0f; + /* Try OPP, although if it exists, it should have been available + * via cpufreq. */ + if (dt && processor->cpu_mhz == 0.0f) { + gchar *dt_cpu_path = g_strdup_printf("/cpus/cpu@%d", processor->id); + dt_opp_range *opp = dtr_get_opp_range(dt, dt_cpu_path); + if (opp) { + processor->cpu_mhz = (double)opp->khz_max / 1000; + g_free(opp); + } + g_free(dt_cpu_path); + } + /* mode */ processor->mode = ARM_A32; if ( processor_has_flag(processor->flags, "pmull") @@ -173,6 +186,7 @@ processor_scan(void) #endif } } + dtr_free(dt); return procs; } @@ -233,7 +247,7 @@ gchar *clocks_summary(GSList * processors) /* create list of all clock references */ for (l = processors; l; l = l->next) { p = (Processor*)l->data; - if (p->cpufreq) { + if (p->cpufreq && p->cpufreq->cpukhz_max > 0) { all_clocks = g_slist_prepend(all_clocks, p->cpufreq); } } @@ -297,10 +311,10 @@ gchar *clocks_summary(GSList * processors) gchar * processor_get_detailed_info(Processor *processor) { - gchar *tmp_flags, *tmp_imp, *tmp_part, *tmp_arch, *tmp_cpufreq, *tmp_topology, *ret; + gchar *tmp_flags, *tmp_imp = NULL, *tmp_part = NULL, + *tmp_arch, *tmp_cpufreq, *tmp_topology, *ret; tmp_flags = processor_get_capabilities_from_flags(processor->flags); - tmp_imp = (char*)arm_implementer(processor->cpu_implementer); - tmp_part = (char*)arm_part(processor->cpu_implementer, processor->cpu_part); + arm_part(processor->cpu_implementer, processor->cpu_part, &tmp_imp, &tmp_part); tmp_arch = (char*)arm_arch_more(processor->cpu_architecture); tmp_topology = cputopo_section_str(processor->cputopo); @@ -361,9 +375,15 @@ gchar *processor_name(GSList *processors) { char *vendor; char *soc; } dt_compat_searches[] = { - { "brcm,bcm2837", "Broadcom", "BCM2837" }, - { "brcm,bcm2836", "Broadcom", "BCM2836" }, - { "brcm,bcm2835", "Broadcom", "BCM2835" }, + { "brcm,bcm2838", "Broadcom", "BCM2838" }, // RPi 4 + { "brcm,bcm2837", "Broadcom", "BCM2837" }, // RPi 3 + { "brcm,bcm2836", "Broadcom", "BCM2836" }, // RPi 2 + { "brcm,bcm2835", "Broadcom", "BCM2835" }, // RPi 1 + { "rockchip,rk3288", "Rockchip", "RK3288" }, // Asus Tinkerboard + { "rockchip,rk3328", "Rockchip", "RK3328" }, // Firefly Renegade + { "rockchip,rk3399", "Rockchip", "RK3399" }, // Firefly Renegade Elite + { "rockchip,rk32", "Rockchip", "RK32xx-family" }, + { "rockchip,rk33", "Rockchip", "RK33xx-family" }, { "ti,omap5432", "Texas Instruments", "OMAP5432" }, { "ti,omap5430", "Texas Instruments", "OMAP5430" }, { "ti,omap4470", "Texas Instruments", "OMAP4470" }, @@ -395,13 +415,15 @@ gchar *processor_name(GSList *processors) { { "mediatek,mt6732", "MediaTek", "MT6732" }, { "qcom,msm8939", "Qualcomm", "Snapdragon 615"}, { "qcom,msm", "Qualcomm", "Snapdragon-family"}, - { "nvidia,tegra" "nVidia", "Tegra-family" }, - { "bcm,", "Broadcom", UNKSOC }, - { "nvidia," "nVidia", UNKSOC }, - { "rockchip," "Rockchip", UNKSOC }, + { "nvidia,tegra", "nVidia", "Tegra-family" }, + { "brcm,", "Broadcom", UNKSOC }, + { "nvidia,", "nVidia", UNKSOC }, + { "rockchip,", "Rockchip", UNKSOC }, { "ti,", "Texas Instruments", UNKSOC }, { "qcom,", "Qualcom", UNKSOC }, - { "mediatek," "MediaTek", UNKSOC }, + { "mediatek,", "MediaTek", UNKSOC }, + { "amlogic,", "Amlogic", UNKSOC }, + { "allwinner,", "Allwinner", UNKSOC }, { NULL, NULL } }; gchar *ret = NULL; @@ -464,7 +486,7 @@ gchar *processor_get_info(GSList * processors) gchar *meta; /* becomes owned by more_info? no need to free? */ GSList *l; - tmp = g_strdup_printf("$CPU_META$%s=\n", _("SOC/Package Information") ); + tmp = g_strdup_printf("$!CPU_META$%s=\n", _("SOC/Package Information") ); meta = processor_meta(processors); moreinfo_add_with_prefix("DEV", "CPU_META", meta); diff --git a/modules/devices/battery.c b/modules/devices/battery.c index cbcebb12..e356c14a 100644 --- a/modules/devices/battery.c +++ b/modules/devices/battery.c @@ -1,10 +1,10 @@ /* * HardInfo - Displays System Information - * Copyright (C) 2003-2006 Leandro A. F. Pereira + * Copyright (C) 2003-2006 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, version 2. + * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -57,7 +57,7 @@ __scan_battery_apcupsd(void) GHashTable *ups_data; FILE *apcaccess; char buffer[512], *apcaccess_path; - int i; + guint i; apcaccess_path = find_program("apcaccess"); if (apcaccess_path && (apcaccess = popen(apcaccess_path, "r"))) { @@ -82,9 +82,9 @@ __scan_battery_apcupsd(void) battery_list = h_strdup_cprintf("[%s]\n", battery_list, ups_fields[i].key); } else { /* there's a name: adds a line */ + const gchar *name = g_hash_table_lookup(ups_data, ups_fields[i].key); battery_list = h_strdup_cprintf("%s=%s\n", battery_list, - ups_fields[i].name, - g_hash_table_lookup(ups_data, ups_fields[i].key)); + ups_fields[i].name, name); } } @@ -165,12 +165,9 @@ __scan_battery_acpi(void) fclose(f); - const gchar *url = vendor_get_url(manufacturer); - if (url) { - char *tmp = g_strdup_printf("%s (%s)", vendor_get_name(manufacturer), url); - g_free(manufacturer); - manufacturer = tmp; - } + gchar *tmp = vendor_get_link(manufacturer); + g_free(manufacturer); + manufacturer = tmp; if (g_str_equal(present, "yes")) { if (remaining && capacity) @@ -229,11 +226,11 @@ read_contents(const gchar *base, const gchar *key) return NULL; if (!g_file_get_contents(path, &value, NULL, NULL)) { - free(path); + g_free(path); return NULL; } - free(path); + g_free(path); return g_strchomp(value); } diff --git a/modules/devices/devicetree.c b/modules/devices/devicetree.c index 4f3c85a2..7c798670 100644 --- a/modules/devices/devicetree.c +++ b/modules/devices/devicetree.c @@ -1,10 +1,10 @@ /* * HardInfo - Displays System Information - * Copyright (C) 2003-2007 Leandro A. F. Pereira + * Copyright (C) 2003-2007 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, version 2. + * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -28,6 +28,10 @@ #include "devices.h" #include "cpu_util.h" #include "dt_util.h" +#include "appf.h" + +gchar *dtree_info = NULL; +const char *dtree_mem_str = NULL; /* used by memory devices when nothing else is available */ /* These should really go into CMakeLists.txt */ #if defined(__arm__) @@ -36,8 +40,6 @@ #include "devicetree/pmac_data.c" #endif -gchar *dtree_info = NULL; - static gchar *get_node(dtr *dt, char *np) { gchar *nodes = NULL, *props = NULL, *ret = NULL; gchar *tmp = NULL, *pstr = NULL, *lstr = NULL; @@ -216,13 +218,14 @@ static gchar *get_summary(dtr *dt) { return ret; } -static void mi_add(const char *key, const char *value) { +static void mi_add(const char *key, const char *value, int report_details) { gchar *ckey, *rkey; ckey = hardinfo_clean_label(key, 0); rkey = g_strdup_printf("%s:%s", "DTREE", ckey); - dtree_info = h_strdup_cprintf("$%s$%s=\n", dtree_info, rkey, ckey); + dtree_info = h_strdup_cprintf("$%s%s$%s=\n", dtree_info, + (report_details) ? "!" : "", rkey, ckey); moreinfo_add_with_prefix("DEV", rkey, g_strdup(value)); g_free(ckey); @@ -237,15 +240,14 @@ static void add_keys(dtr *dt, char *np) { GDir *dir; dtr_obj *obj; - /* add self */ - obj = dtr_obj_read(dt, np); - dt_path = dtr_obj_path(obj); - n_info = get_node(dt, dt_path); - mi_add(dt_path, n_info); - dir_path = g_strdup_printf("%s/%s", dtr_base_path(dt), np); dir = g_dir_open(dir_path, 0 , NULL); - if (dir) { + if(!dir){ /* add self */ + obj = dtr_obj_read(dt, np); + dt_path = dtr_obj_path(obj); + n_info = get_node(dt, dt_path); + mi_add(dt_path, n_info, 0); + }else { //dir while((fn = g_dir_read_name(dir)) != NULL) { ftmp = g_strdup_printf("%s/%s", dir_path, fn); if ( g_file_test(ftmp, G_FILE_TEST_IS_DIR) ) { @@ -253,24 +255,25 @@ static void add_keys(dtr *dt, char *np) { ntmp = g_strdup_printf("/%s", fn); else ntmp = g_strdup_printf("%s/%s", np, fn); - add_keys(dt, ntmp); + if(strlen(ntmp)>0) add_keys(dt, ntmp); g_free(ntmp); } g_free(ftmp); } + g_dir_close(dir); } - g_dir_close(dir); + g_free(dir_path); } static char *msg_section(dtr *dt, int dump) { gchar *aslbl = NULL; gchar *messages = dtr_messages(dt); - gchar *ret = g_strdup_printf("[%s]\n", _("Messages")); + gchar *ret = g_strdup_printf("[%s]", _("Messages")); gchar **lines = g_strsplit(messages, "\n", 0); int i = 0; while(lines[i] != NULL) { aslbl = hardinfo_clean_label(lines[i], 0); - ret = appf(ret, "%s=\n", aslbl); + ret = appfnl(ret, "%s=", aslbl); g_free(aslbl); i++; } @@ -289,13 +292,13 @@ void __scan_dtree() gchar *messages = NULL; dtree_info = g_strdup("[Device Tree]\n"); - mi_add("Summary", summary); - mi_add("Maps", maps); + mi_add("Summary", summary, 1); + mi_add("Maps", maps, 0); if(dtr_was_found(dt)) add_keys(dt, "/"); messages = msg_section(dt, 0); - mi_add("Messages", messages); + mi_add("Messages", messages, 0); g_free(summary); g_free(maps); diff --git a/modules/devices/devicetree/pmac_data.c b/modules/devices/devicetree/pmac_data.c index b236aef1..8c5471f0 100644 --- a/modules/devices/devicetree/pmac_data.c +++ b/modules/devices/devicetree/pmac_data.c @@ -1,10 +1,10 @@ /* * HardInfo - Displays System Information - * Copyright (C) 2003-2007 Leandro A. F. Pereira + * Copyright (C) 2003-2007 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, version 2. + * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of diff --git a/modules/devices/devicetree/rpi_data.c b/modules/devices/devicetree/rpi_data.c index d0132e3a..63daa7f3 100644 --- a/modules/devices/devicetree/rpi_data.c +++ b/modules/devices/devicetree/rpi_data.c @@ -1,12 +1,12 @@ /* * HardInfo - Displays System Information - * Copyright (C) 2003-2007 Leandro A. F. Pereira + * Copyright (C) 2003-2007 L. A. F. Pereira * This file from: rpiz - https://github.com/bp0/rpiz * Copyright (C) 2017 Burt P. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, version 2. + * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -21,48 +21,57 @@ static char unk[] = "(Unknown)"; /* information table from: http://elinux.org/RPi_HardwareHistory */ -static struct { +typedef struct { char *value, *intro, *model, *pcb, *mem, *mfg, *soc; -} rpi_boardinfo[] = { +} RaspberryPiBoard; + +static const RaspberryPiBoard rpi_boardinfo[] = { /* Value Introduction Model Name PCB rev. Memory(spec) Manufacturer SOC(spec) * * Raspberry Pi %s */ { unk, unk, unk, unk, unk, unk, NULL }, - { "Beta", "Q1 2012", "B (Beta)", unk, "256MB", "(Beta board)", NULL }, - { "0002", "Q1 2012", "B", "1.0", "256MB", unk, "BCM2835" }, - { "0003", "Q3 2012", "B (ECN0001)", "1.0", "256MB", "(Fuses mod and D14 removed)", NULL }, - { "0004", "Q3 2012", "B", "2.0", "256MB", "Sony", NULL }, - { "0005", "Q4 2012", "B", "2.0", "256MB", "Qisda", NULL }, - { "0006", "Q4 2012", "B", "2.0", "256MB", "Egoman", NULL }, - { "0007", "Q1 2013", "A", "2.0", "256MB", "Egoman", NULL }, - { "0008", "Q1 2013", "A", "2.0", "256MB", "Sony", NULL }, - { "0009", "Q1 2013", "A", "2.0", "256MB", "Qisda", NULL }, - { "000d", "Q4 2012", "B", "2.0", "512MB", "Egoman", NULL }, - { "000e", "Q4 2012", "B", "2.0", "512MB", "Sony", NULL }, - { "000f", "Q4 2012", "B", "2.0", "512MB", "Qisda", NULL }, - { "0010", "Q3 2014", "B+", "1.0", "512MB", "Sony", NULL }, - { "0011", "Q2 2014", "Compute Module 1", "1.0", "512MB", "Sony", NULL }, - { "0012", "Q4 2014", "A+", "1.1", "256MB", "Sony", NULL }, - { "0013", "Q1 2015", "B+", "1.2", "512MB", unk, NULL }, - { "0014", "Q2 2014", "Compute Module 1", "1.0", "512MB", "Embest", NULL }, - { "0015", unk, "A+", "1.1", "256MB/512MB", "Embest", NULL }, - { "a01040", unk, "2 Model B", "1.0", "1GB", "Sony", "BCM2836" }, - { "a01041", "Q1 2015", "2 Model B", "1.1", "1GB", "Sony", "BCM2836" }, - { "a21041", "Q1 2015", "2 Model B", "1.1", "1GB", "Embest", "BCM2836" }, - { "a22042", "Q3 2016", "2 Model B", "1.2", "1GB", "Embest", "BCM2837" }, /* (with BCM2837) */ - { "900021", "Q3 2016", "A+", "1.1", "512MB", "Sony", NULL }, - { "900032", "Q2 2016?", "B+", "1.2", "512MB", "Sony", NULL }, - { "900092", "Q4 2015", "Zero", "1.2", "512MB", "Sony", NULL }, - { "900093", "Q2 2016", "Zero", "1.3", "512MB", "Sony", NULL }, - { "920093", "Q4 2016?", "Zero", "1.3", "512MB", "Embest", NULL }, - { "9000c1", "Q1 2017", "Zero W", "1.1", "512MB", "Sony", NULL }, - { "a02082", "Q1 2016", "3 Model B", "1.2", "1GB", "Sony", "BCM2837" }, - { "a020a0", "Q1 2017", "Compute Module 3 or CM3 Lite", "1.0", "1GB", "Sony", NULL }, - { "a22082", "Q1 2016", "3 Model B", "1.2", "1GB", "Embest", "BCM2837" }, - { "a32082", "Q4 2016", "3 Model B", "1.2", "1GB", "Sony Japan", NULL }, + { "Beta", "Q1 2012", "B (Beta)", unk, "256 MB", "(Beta board)", NULL }, + { "0002", "Q1 2012", "B", "1.0", "256 MB", unk, "BCM2835" }, + { "0003", "Q3 2012", "B (ECN0001)", "1.0", "256 MB", "(Fuses mod and D14 removed)", NULL }, + { "0004", "Q3 2012", "B", "2.0", "256 MB", "Sony", NULL }, + { "0005", "Q4 2012", "B", "2.0", "256 MB", "Qisda", NULL }, + { "0006", "Q4 2012", "B", "2.0", "256 MB", "Egoman", NULL }, + { "0007", "Q1 2013", "A", "2.0", "256 MB", "Egoman", NULL }, + { "0008", "Q1 2013", "A", "2.0", "256 MB", "Sony", NULL }, + { "0009", "Q1 2013", "A", "2.0", "256 MB", "Qisda", NULL }, + { "000d", "Q4 2012", "B", "2.0", "512 MB", "Egoman", NULL }, + { "000e", "Q4 2012", "B", "2.0", "512 MB", "Sony", NULL }, + { "000f", "Q4 2012", "B", "2.0", "512 MB", "Qisda", NULL }, + { "0010", "Q3 2014", "B+", "1.0", "512 MB", "Sony", NULL }, + { "0011", "Q2 2014", "Compute Module 1", "1.0", "512 MB", "Sony", NULL }, + { "0012", "Q4 2014", "A+", "1.1", "256 MB", "Sony", NULL }, + { "0013", "Q1 2015", "B+", "1.2", "512 MB", unk, NULL }, + { "0014", "Q2 2014", "Compute Module 1", "1.0", "512 MB", "Embest", NULL }, + { "0015", unk, "A+", "1.1", "256 MB/512 MB", "Embest", NULL }, + { "a01040", unk, "2 Model B", "1.0", "1024 MB DDR2", "Sony", "BCM2836" }, + { "a01041", "Q1 2015", "2 Model B", "1.1", "1024 MB DDR2", "Sony", "BCM2836" }, + { "a21041", "Q1 2015", "2 Model B", "1.1", "1024 MB DDR2", "Embest", "BCM2836" }, + { "a22042", "Q3 2016", "2 Model B", "1.2", "1024 MB DDR2", "Embest", "BCM2837" }, /* (with BCM2837) */ + { "900021", "Q3 2016", "A+", "1.1", "512 MB", "Sony", NULL }, + { "900032", "Q2 2016?", "B+", "1.2", "512 MB", "Sony", NULL }, + { "900092", "Q4 2015", "Zero", "1.2", "512 MB", "Sony", NULL }, + { "900093", "Q2 2016", "Zero", "1.3", "512 MB", "Sony", NULL }, + { "920093", "Q4 2016?", "Zero", "1.3", "512 MB", "Embest", NULL }, + { "9000c1", "Q1 2017", "Zero W", "1.1", "512 MB", "Sony", NULL }, + { "a02082", "Q1 2016", "3 Model B", "1.2", "1024 MB DDR2", "Sony", "BCM2837" }, + { "a020a0", "Q1 2017", "Compute Module 3 or CM3 Lite", "1.0", "1024 MB DDR2", "Sony", NULL }, + { "a22082", "Q1 2016", "3 Model B", "1.2", "1024 MB DDR2", "Embest", "BCM2837" }, + { "a32082", "Q4 2016", "3 Model B", "1.2", "1024 MB DDR2", "Sony Japan", NULL }, + { "a020d3", "Q1 2018", "3 Model B+", "1.3", "1024 MB DDR2", "Sony", "BCM2837" }, + { "9020e0", "Q4 2018", "3 Model A+", "1.0", "512 MB DDR2", "Sony", "BCM2837" }, + + { "a03111", "Q2 2019", "4 Model B", "1.0", "1024 MB DDR4", "Sony", "BCM2838" }, + { "b03111", "Q2 2019", "4 Model B", "1.0", "2048 MB DDR4", "Sony", "BCM2838" }, + { "c03111", "Q2 2019", "4 Model B", "1.1", "4096 MB DDR4", "Sony", "BCM2838" }, + { "c03114", "Q2 2020", "4 Model B", "1.4", "8192 MB DDR4", "Sony", "BCM2838" }, + { NULL, NULL, NULL, NULL, NULL, NULL, NULL } }; - /* return number of chars to skip */ static int rpi_ov_check(const char *r_code) { /* sources differ. prefix is either 1000... or just 1... */ @@ -154,7 +163,7 @@ static gchar *rpi_board_details(void) { _("PCB Revision"), rpi_boardinfo[i].pcb, _("Introduction"), rpi_boardinfo[i].intro, _("Manufacturer"), rpi_boardinfo[i].mfg, - _("RCode"), rpi_boardinfo[i].value, + _("RCode"), (rpi_boardinfo[i].value != unk) ? rpi_boardinfo[i].value : revision, _("SOC (spec)"), rpi_boardinfo[i].soc, _("Memory (spec)"), rpi_boardinfo[i].mem, _("Serial Number"), serial, @@ -162,5 +171,9 @@ static gchar *rpi_board_details(void) { g_free(soc); g_free(revision); + + if (rpi_boardinfo[i].mem) + dtree_mem_str = rpi_boardinfo[i].mem; + return ret; } diff --git a/modules/devices/devmemory.c b/modules/devices/devmemory.c deleted file mode 100644 index 29094dd8..00000000 --- a/modules/devices/devmemory.c +++ /dev/null @@ -1,120 +0,0 @@ -/* - * HardInfo - Displays System Information - * Copyright (C) 2003-2007 Leandro A. F. Pereira - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, version 2. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include -#include "devices.h" - -GHashTable *memlabels = NULL; - -void scan_memory_do(void) -{ - gchar **keys, *tmp, *tmp_label, *trans_val; - static gint offset = -1; - gint i; - - if (offset == -1) { - /* gah. linux 2.4 adds three lines of data we don't need in - /proc/meminfo */ - gchar *os_kernel = module_call_method("computer::getOSKernel"); - if (os_kernel) { - offset = strstr(os_kernel, "Linux 2.4") ? 3 : 0; - g_free(os_kernel); - } else { - offset = 0; - } - } - - g_file_get_contents("/proc/meminfo", &meminfo, NULL, NULL); - - keys = g_strsplit(meminfo, "\n", 0); - - g_free(meminfo); - g_free(lginterval); - - meminfo = g_strdup(""); - lginterval = g_strdup(""); - - for (i = offset; keys[i]; i++) { - gchar **newkeys = g_strsplit(keys[i], ":", 0); - - if (!newkeys[0]) { - g_strfreev(newkeys); - break; - } - - g_strstrip(newkeys[0]); - g_strstrip(newkeys[1]); - - /* try to find a localizable label */ - tmp = g_hash_table_lookup(memlabels, newkeys[0]); - if (tmp) - tmp_label = _(tmp); - else - tmp_label = ""; /* or newkeys[0] */ - /* although it doesn't matter... */ - - if (strstr(newkeys[1], "kB")) { - trans_val = g_strdup_printf("%d %s", atoi(newkeys[1]), _("KiB") ); - } else { - trans_val = strdup(newkeys[1]); - } - - moreinfo_add_with_prefix("DEV", newkeys[0], g_strdup(trans_val)); - - tmp = g_strconcat(meminfo, newkeys[0], "=", trans_val, "|", tmp_label, "\n", NULL); - g_free(meminfo); - meminfo = tmp; - - g_free(trans_val); - - tmp = g_strconcat(lginterval, - "UpdateInterval$", newkeys[0], "=1000\n", NULL); - g_free(lginterval); - lginterval = tmp; - - g_strfreev(newkeys); - } - g_strfreev(keys); -} - -void init_memory_labels(void) -{ - static const struct { - char *proc_label; - char *real_label; - } proc2real[] = { - { "MemTotal", N_("Total Memory") }, - { "MemFree", N_("Free Memory") }, - { "SwapCached", N_("Cached Swap") }, - { "HighTotal", N_("High Memory") }, - { "HighFree", N_("Free High Memory") }, - { "LowTotal", N_("Low Memory") }, - { "LowFree", N_("Free Low Memory") }, - { "SwapTotal", N_("Virtual Memory") }, - { "SwapFree", N_("Free Virtual Memory") }, - { NULL }, - }; - gint i; - - memlabels = g_hash_table_new(g_str_hash, g_str_equal); - - for (i = 0; proc2real[i].proc_label; i++) { - g_hash_table_insert(memlabels, proc2real[i].proc_label, - _(proc2real[i].real_label)); - } -} diff --git a/modules/devices/dmi.c b/modules/devices/dmi.c index b25cfe21..34374fbe 100644 --- a/modules/devices/dmi.c +++ b/modules/devices/dmi.c @@ -1,10 +1,10 @@ /* * HardInfo - Displays System Information - * Copyright (C) 2003-2007 Leandro A. F. Pereira + * Copyright (C) 2003-2007 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, version 2. + * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -30,26 +30,29 @@ struct _DMIInfo { const gchar *name; const gchar *id_str; int group; + gboolean maybe_vendor; }; DMIInfo dmi_info_table[] = { { N_("Product"), NULL, 1 }, { N_("Name"), "system-product-name", 0 }, { N_("Family"), "system-product-family", 0 }, - { N_("Vendor"), "system-manufacturer", 0 }, + { N_("Vendor"), "system-manufacturer", 0, TRUE }, { N_("Version"), "system-version", 0 }, + { N_("Serial Number"), "system-serial-number", 0 }, + { N_("SKU"), "system-sku", 0 }, { N_("BIOS"), NULL, 1 }, { N_("Date"), "bios-release-date", 0 }, - { N_("Vendor"), "bios-vendor", 0 }, + { N_("Vendor"), "bios-vendor", 0, TRUE }, { N_("Version"), "bios-version", 0 }, { N_("Board"), NULL, 1 }, { N_("Name"), "baseboard-product-name", 0 }, - { N_("Vendor"), "baseboard-manufacturer", 0 }, + { N_("Vendor"), "baseboard-manufacturer", 0, TRUE }, { N_("Version"), "baseboard-version", 0 }, { N_("Serial Number"), "baseboard-serial-number", 0 }, { N_("Asset Tag"), "baseboard-asset-tag", 0 }, { N_("Chassis"), NULL, 1 }, - { N_("Vendor"), "chassis-manufacturer", 0 }, + { N_("Vendor"), "chassis-manufacturer", 0, TRUE }, { N_("Type"), "chassis-type", 0 }, { N_("Version"), "chassis-version", 0 }, { N_("Serial Number"), "chassis-serial-number", 0 }, @@ -64,77 +67,102 @@ static void add_to_moreinfo(const char *group, const char *key, char *value) moreinfo_add_with_prefix("DEV", new_key, g_strdup(g_strstrip(value))); } -gboolean dmi_get_info() +gboolean dmi_get_info(void) { - const gchar *group = NULL; - DMIInfo *info; - gboolean dmi_succeeded = FALSE; - gint i; - gchar *value; - - if (dmi_info) { - g_free(dmi_info); - dmi_info = NULL; - } + const gchar *group = NULL; + DMIInfo *info; + gboolean dmi_succeeded = FALSE; + guint i; + gchar *value; + const gchar *vendor; + + if (dmi_info) { + g_free(dmi_info); + dmi_info = NULL; + } - for (i = 0; i < G_N_ELEMENTS(dmi_info_table); i++) { - info = &dmi_info_table[i]; - - if (info->group) { - group = info->name; - dmi_info = h_strdup_cprintf("[%s]\n", dmi_info, _(info->name) ); - } else if (group && info->id_str) { - if (strcmp(info->id_str, "chassis-type") == 0) - value = dmi_chassis_type_str(-1, 1); - else - value = dmi_get_str(info->id_str); - - if (value != NULL) { - add_to_moreinfo(group, info->name, value); - - const gchar *url = vendor_get_url(value); - if (url) { - const gchar *vendor = vendor_get_name(value); - dmi_info = h_strdup_cprintf("%s=%s (%s, %s)\n", - dmi_info, - _(info->name), - value, - vendor, url); - } else { - dmi_info = h_strdup_cprintf("%s=%s\n", - dmi_info, - _(info->name), - value); + for (i = 0; i < G_N_ELEMENTS(dmi_info_table); i++) { + info = &dmi_info_table[i]; + + if (info->group) { + group = info->name; + dmi_info = h_strdup_cprintf("[%s]\n", dmi_info, _(info->name)); + } else if (group && info->id_str) { + int state = 3; + + if (strcmp(info->id_str, "chassis-type") == 0) { + value = dmi_chassis_type_str(-1, 1); + if (value == NULL) + state = (getuid() == 0) ? 0 : 1; + } + else { + switch (dmi_str_status(info->id_str)) { + case 0: + value = NULL; + state = (getuid() == 0) ? 0 : 1; + break; + case -1: + state = 2; + value = dmi_get_str_abs(info->id_str); + break; + case 1: + value = dmi_get_str_abs(info->id_str); + break; + } + } + + switch (state) { + case 0: /* no value, root */ + dmi_info = h_strdup_cprintf("%s=%s\n", dmi_info, _(info->name), + _("(Not available)")); + break; + case 1: /* no value, no root */ + dmi_info = h_strdup_cprintf("%s=%s\n", dmi_info, _(info->name), + _("(Not available; Perhaps try " + "running HardInfo as root.)")); + break; + case 2: /* ignored value */ + if (params.markup_ok) + dmi_info = h_strdup_cprintf("%s=%s\n", dmi_info, + _(info->name), value); + else + dmi_info = h_strdup_cprintf("%s=[X]\"%s\"\n", dmi_info, + _(info->name), value); + break; + case 3: /* good value */ + { + dmi_info = + h_strdup_cprintf("%s%s=%s\n", dmi_info, + info->maybe_vendor ? "$^$" : "", + _(info->name), value); + add_to_moreinfo(group, info->name, value); + dmi_succeeded = TRUE; + break; + } + } } - dmi_succeeded = TRUE; - } else { - dmi_info = h_strdup_cprintf("%s=%s\n", - dmi_info, - _(info->name), - (getuid() == 0) - ? _("(Not available)") - : _("(Not available; Perhaps try running HardInfo as root.)") ); - } } - } - if (!dmi_succeeded) { - g_free(dmi_info); - dmi_info = NULL; - } + if (!dmi_succeeded) { + g_free(dmi_info); + dmi_info = NULL; + } - return dmi_succeeded; + return dmi_succeeded; } -void __scan_dmi() +void __scan_dmi(void) { gboolean dmi_ok; dmi_ok = dmi_get_info(); if (!dmi_ok) { - dmi_info = g_strdup("[No DMI information]\n" - "There was an error retrieving the information.=\n" - "Please try running HardInfo as root.=\n"); + dmi_info = g_strdup_printf("[%s]\n%s=\n", + _("DMI Unavailable"), + (getuid() == 0) + ? _("DMI is not avaliable. Perhaps this platform does not provide DMI.") + : _("DMI is not available; Perhaps try running HardInfo as root.") ); + } } diff --git a/modules/devices/dmi_memory.c b/modules/devices/dmi_memory.c new file mode 100644 index 00000000..eba26c8b --- /dev/null +++ b/modules/devices/dmi_memory.c @@ -0,0 +1,1050 @@ +/* + * HardInfo - Displays System Information + * Copyright (C) 2003-2019 L. A. F. Pereira + * Copyright (C) 2019 Burt P. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 2 or later. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#define _GNU_SOURCE + +#include "hardinfo.h" +#include "devices.h" +#include "vendor.h" +#include + +extern const char *dtree_mem_str; /* in devicetree.c */ + +/* in monitors.c */ +gchar **get_output_lines(const char *cmd_line); + +#include "util_sysobj.h" /* for appfsp() */ +#define dmi_spd_msg(...) /* fprintf (stderr, __VA_ARGS__) */ + +typedef uint64_t dmi_mem_size; + +#include "spd-decode.c" + +gboolean no_handles = FALSE; +gboolean sketchy_info = FALSE; + +int dmi_ram_types = 0; /* bits using enum RamType */ + +/* strings from dmidecode */ +static const char empty_mem_str[] = "No Module Installed"; +static const char unknown_mfgr_str[] = ""; +static const char mobo_location[] = "System Board Or Motherboard"; +static const char mobo_shorter[] = "Mainboard"; +static const dmi_type dta = 16; /* array */ +static const dmi_type dtm = 17; /* socket */ +static const char mem_icon[] = "memory.png"; +static const char array_icon[] = "devices.png"; +static const char empty_icon[] = "module.png"; + +#define UNKNOWN_MEM_TYPE_STRING _("RAM") +#define UNKIFNULL2(f) ((f) ? f : _("(Unknown)")) +#define UNKIFEMPTY2(f) ((*f) ? f : _("(Unknown)")) +#define STR_IGNORE(str, ignore) if (SEQ(str, ignore)) { *str = 0; null_if_empty(&str); } + +dmi_mem_size dmi_read_memory_str_to_MiB(const char *memstr) { + dmi_mem_size ret = 0, v = 0; + char l[7] = ""; + /* dmidecode units: "bytes", "kB", "MB", "GB", "TB", "PB", "EB", "ZB" */ + int mc = sscanf(memstr, "%"PRId64" %6s", &v, l); + if (mc == 2) { + if (SEQ(l, "ZB")) ret = v * 1024 * 1024 * 1024 * 1024 * 1024; + else if (SEQ(l, "EB")) ret = v * 1024 * 1024 * 1024 * 1024; + else if (SEQ(l, "PB")) ret = v * 1024 * 1024 * 1024; + else if (SEQ(l, "TB")) ret = v * 1024 * 1024; + else if (SEQ(l, "GB")) ret = v * 1024; + else if (SEQ(l, "MB")) ret = v; + else if (SEQ(l, "kB")) { + /* should never appear */ + if (v % 1024) { dmi_spd_msg("OMG kB!"); } + ret = v / 1024; + } + else if (SEQ(l, "bytes")) { + /* should never appear */ + if (v % 1024) { dmi_spd_msg("OMG bytes!"); } + ret = v / (1024 * 1024); + } + } + return ret; +} + +typedef struct { + dmi_handle array_handle; + gboolean is_main_memory; + gchar *locator; + gchar *use; + gchar *ecc; + int devs; + int devs_populated; + dmi_mem_size size_MiB_max; + dmi_mem_size size_MiB_present; + dmi_mem_size size_MiB_rom; + int ram_types; /* bits using enum RamType */ +} dmi_mem_array; + +dmi_mem_array *dmi_mem_array_new(dmi_handle h) { + dmi_mem_array *s = g_new0(dmi_mem_array, 1); + s->array_handle = h; + s->use = dmidecode_match("Use", &dta, &h); + if (SEQ(s->use, "System Memory")) + s->is_main_memory = TRUE; + s->ecc = dmidecode_match("Error Correction Type", &dta, &h); + s->locator = dmidecode_match("Location", &dta, &h); + if (SEQ(s->locator, mobo_location)) { + g_free(s->locator); + s->locator = g_strdup(mobo_shorter); + s->is_main_memory = TRUE; + } + + gchar *array_max_size = dmidecode_match("Maximum Capacity", &dta, &h); + if (array_max_size) { + s->size_MiB_max = dmi_read_memory_str_to_MiB(array_max_size); + g_free(array_max_size); + } + gchar *array_devs = dmidecode_match("Number Of Devices", &dta, &h); + if (array_devs) { + s->devs = strtol(array_devs, NULL, 10); + g_free(array_devs); + } + return s; +} + +void dmi_mem_array_free(dmi_mem_array* s) { + if (s) { + g_free(s->locator); + g_free(s->use); + g_free(s->ecc); + g_free(s); + } +} + +typedef struct dmi_mem_socket { + dmi_handle handle; + dmi_handle array_handle; + gboolean populated; + gchar *locator; + gchar *full_locator; + gchar *short_locator; + gchar *size_str; + dmi_mem_size size_MiB; + + gboolean is_not_ram; /* maybe is_rom, maybe elsewise, but don't include in RAM total */ + gboolean is_rom; + + gchar *type; + gchar *type_detail; + int ram_type; /* using enum RamType */ + gchar *array_locator; + gchar *bank_locator; + gchar *rank; + gchar *form_factor; + gchar *speed_str; + gchar *configured_clock_str; + gchar *voltage_min_str; + gchar *voltage_max_str; + gchar *voltage_conf_str; + gchar *partno; + gchar *data_width; + gchar *total_width; + gchar *mfgr; + gboolean has_jedec_mfg_id; + int mfgr_bank, mfgr_index; + + const Vendor *vendor; + spd_data *spd; +} dmi_mem_socket; + +typedef struct { + gboolean empty; + GSList *arrays; + GSList *sockets; + GSList *spd; + dmi_mem_size spd_size_MiB; + int spd_ram_types; /* bits using enum RamType */ + + dmi_mem_size system_memory_MiB; + int system_memory_ram_types; /* bits using enum RamType */ + + /* ->short_locator is unique among *sockets */ + gboolean unique_short_locators; +} dmi_mem; + +gboolean null_if_empty(gchar **str) { + if (str && *str) { + gchar *p = *str; + while(p && *p) { + if (isalnum(*p)) + return FALSE; + p++; + } + *str = NULL; + } + return TRUE; +} + +dmi_mem_socket *dmi_mem_socket_new(dmi_handle h) { + dmi_mem_socket *s = g_new0(dmi_mem_socket, 1); + s->handle = h; + s->locator = dmidecode_match("Locator", &dtm, &h); + s->size_str = dmidecode_match("Size", &dtm, &h); + if (s->size_str) + s->size_MiB = dmi_read_memory_str_to_MiB(s->size_str); + + s->bank_locator = dmidecode_match("Bank Locator", &dtm, &h); + STR_IGNORE(s->bank_locator, "Unknown"); + STR_IGNORE(s->bank_locator, "Not Specified"); + null_if_empty(&s->bank_locator); + + gchar *ah = dmidecode_match("Array Handle", &dtm, &h); + STR_IGNORE(ah, "Unknown"); + if (ah) { + s->array_handle = strtol(ah, NULL, 16); + g_free(ah); + s->array_locator = dmidecode_match("Location", &dta, &s->array_handle); + if (SEQ(s->array_locator, mobo_location)) { + g_free(s->array_locator); + s->array_locator = g_strdup(mobo_shorter); + } + } + + gchar *ah_str = g_strdup_printf("0x%"PRIx32, s->array_handle); + gchar *h_str = g_strdup_printf("0x%"PRIx32, s->handle); + s->short_locator = g_strdup_printf("%s \u27A4 %s", + s->array_locator ? s->array_locator : ah_str, + s->locator ? s->locator : h_str); + + if (s->bank_locator) + s->full_locator = g_strdup_printf("%s \u27A4 %s \u27A4 %s", + s->array_locator ? s->array_locator : ah_str, + s->bank_locator, + s->locator ? s->locator : h_str); + else + s->full_locator = g_strdup(s->short_locator); + + g_free(ah_str); + g_free(h_str); + + if (!g_str_has_prefix(s->size_str, empty_mem_str)) { + s->populated = 1; + + s->form_factor = dmidecode_match("Form Factor", &dtm, &h); + s->type = dmidecode_match("Type", &dtm, &h); + STR_IGNORE(s->type, "Unknown"); + if (SEQ(s->type, "Flash") || SEQ(s->type, "ROM")) { + s->is_rom = TRUE; + s->is_not_ram = TRUE; + } else { + if (SEQ(s->type, "DDR")) s->ram_type = DDR_SDRAM; + if (SEQ(s->type, "DDR2")) s->ram_type = DDR2_SDRAM; + if (SEQ(s->type, "DDR3")) s->ram_type = DDR3_SDRAM; + if (SEQ(s->type, "DDR4")) s->ram_type = DDR4_SDRAM; + if (SEQ(s->type, "DRDRAM")) s->ram_type = DIRECT_RAMBUS; + if (SEQ(s->type, "RDRAM")) s->ram_type = RAMBUS; + if (s->ram_type) + dmi_ram_types |= (1 << (s->ram_type-1)); + } + s->type_detail = dmidecode_match("Type Detail", &dtm, &h); + STR_IGNORE(s->type_detail, "None"); + + s->speed_str = dmidecode_match("Speed", &dtm, &h); + s->configured_clock_str = dmidecode_match("Configured Clock Speed", &dtm, &h); + if (!s->configured_clock_str) + s->configured_clock_str = dmidecode_match("Configured Memory Speed", &dtm, &h); + + s->voltage_min_str = dmidecode_match("Minimum Voltage", &dtm, &h); + s->voltage_max_str = dmidecode_match("Maximum Voltage", &dtm, &h); + s->voltage_conf_str = dmidecode_match("Configured Voltage", &dtm, &h); + STR_IGNORE(s->voltage_min_str, "Unknown"); + STR_IGNORE(s->voltage_max_str, "Unknown"); + STR_IGNORE(s->voltage_conf_str, "Unknown"); + + s->partno = dmidecode_match("Part Number", &dtm, &h); + STR_IGNORE(s->partno, "PartNum0"); + STR_IGNORE(s->partno, "PartNum1"); + STR_IGNORE(s->partno, "PartNum2"); + STR_IGNORE(s->partno, "PartNum3"); + null_if_empty(&s->partno); + + s->data_width = dmidecode_match("Data Width", &dtm, &h); + s->total_width = dmidecode_match("Total Width", &dtm, &h); + + s->rank = dmidecode_match("Rank", &dtm, &h); + + s->mfgr = dmidecode_match("Manufacturer", &dtm, &h); + STR_IGNORE(s->mfgr, unknown_mfgr_str); + STR_IGNORE(s->mfgr, "Manufacturer0"); + STR_IGNORE(s->mfgr, "Manufacturer1"); + STR_IGNORE(s->mfgr, "Manufacturer2"); + STR_IGNORE(s->mfgr, "Manufacturer3"); + STR_IGNORE(s->mfgr, "Unknown"); + null_if_empty(&s->mfgr); + + gchar *mfgr_id_str = dmidecode_match("Module Manufacturer ID", &dtm, &h); + STR_IGNORE(mfgr_id_str, "Unknown"); + if (mfgr_id_str) { + static const char dmi_mfg_id_fmt[] = "Bank %d, Hex 0x%02X"; /* from dmidecode.c */ + int mc = sscanf(strstr(mfgr_id_str, "Bank"), dmi_mfg_id_fmt, &s->mfgr_bank, &s->mfgr_index); + if (mc > 0 && !s->mfgr) { + s->has_jedec_mfg_id = TRUE; + s->mfgr = g_strdup(JEDEC_MFG_STR(s->mfgr_bank, s->mfgr_index)); + } + } + + if (s->mfgr && !s->has_jedec_mfg_id && strlen(s->mfgr) == 4) { + /* Some BIOS put the code bytes into the mfgr string + * if they don't know the manufacturer. + * It's not always reliable, but what is lost + * by trying it? */ + if (isxdigit(s->mfgr[0]) + && isxdigit(s->mfgr[1]) + && isxdigit(s->mfgr[2]) + && isxdigit(s->mfgr[3]) ) { + int codes = strtol(s->mfgr, NULL, 16); + char *mstr = NULL; + decode_ddr34_manufacturer(codes >> 8, codes & 0xff, + &mstr, &s->mfgr_bank, &s->mfgr_index); + s->has_jedec_mfg_id = TRUE; + g_free(s->mfgr); + s->mfgr = NULL; + if (mstr) + s->mfgr = g_strdup(mstr); + } + } + + s->vendor = vendor_match(s->mfgr, NULL); + } + return s; +} + +void dmi_mem_socket_free(dmi_mem_socket* s) { + if (s) { + g_free(s->locator); + g_free(s->full_locator); + g_free(s->short_locator); + g_free(s->size_str); + g_free(s->type); + g_free(s->type_detail); + g_free(s->bank_locator); + g_free(s->rank); + g_free(s->array_locator); + g_free(s->form_factor); + g_free(s->speed_str); + g_free(s->configured_clock_str); + g_free(s->voltage_min_str); + g_free(s->voltage_max_str); + g_free(s->voltage_conf_str); + g_free(s->partno); + g_free(s->data_width); + g_free(s->total_width); + g_free(s->mfgr); + + g_free(s); + } +} + +dmi_mem_array *dmi_mem_find_array(dmi_mem *s, unsigned int handle) { + GSList *l = NULL; + for(l = s->arrays; l; l = l->next) { + dmi_mem_array *a = (dmi_mem_array*)l->data; + if (a->array_handle == handle) + return a; + } + return NULL; +} + +static int dmi_spd_match_score(dmi_mem_socket *s, spd_data *e) { + int score = 0; + if (SEQ(s->partno, e->partno)) + score += 20; + if (s->size_MiB == e->size_MiB) + score += 10; + if (s->vendor == e->vendor) + score += 5; + return score; +} + +/* fill in missing from SPD */ +static void dmi_fill_from_spd(dmi_mem_socket *s) { + if (!s->spd) + return; + + if (!s->mfgr && s->spd->vendor_str) { + s->mfgr = g_strdup(s->spd->vendor_str); + s->vendor = s->spd->vendor; + } + if (!s->has_jedec_mfg_id) { + s->mfgr_bank = s->spd->vendor_bank; + s->mfgr_index = s->spd->vendor_index; + s->has_jedec_mfg_id = TRUE; + } + + //Always true - FIXME + //if (!s->partno && s->spd->partno) + s->partno = g_strdup(s->spd->partno); + + if (!s->form_factor && s->spd->form_factor) + s->form_factor = g_strdup(s->spd->form_factor); + + //Always true - FIXME + //if (!s->type_detail && s->spd->type_detail) + s->type_detail = g_strdup(s->spd->type_detail); +} + +static dmi_mem_size size_of_online_memory_blocks() { + gchar *block_size_bytes_str = NULL; + dmi_mem_size block_size_bytes = 0; + dmi_mem_size ret = 0; + + if (g_file_get_contents("/sys/devices/system/memory/block_size_bytes", &block_size_bytes_str, NULL, NULL) ) { + block_size_bytes = strtoll(block_size_bytes_str, NULL, 16); + } + if (!block_size_bytes) + return 0; + + const gchar *f = NULL; + GDir *d = g_dir_open("/sys/devices/system/memory", 0, NULL); + if (!d) return 0; + + while((f = g_dir_read_name(d))) { + gchar *p = g_strdup_printf("/sys/devices/system/memory/%s/online", f); + gchar *ol = NULL; + if (g_file_get_contents(p, &ol, NULL, NULL) ) { + if (1 == strtol(ol, NULL, 0)) { + ret += block_size_bytes; + } + } + g_free(ol); + g_free(p); + } + g_dir_close(d); + return ret; +} + +dmi_mem *dmi_mem_new() { + dmi_mem *m = g_new0(dmi_mem, 1); + + dmi_handle_list *hla = dmidecode_handles(&dta); + if (hla) { + unsigned int i = 0; + for(i = 0; i < hla->count; i++) { + dmi_handle h = hla->handles[i]; + m->arrays = g_slist_append(m->arrays, dmi_mem_array_new(h)); + } + dmi_handle_list_free(hla); + } + + dmi_handle_list *hlm = dmidecode_handles(&dtm); + if (hlm) { + unsigned int i = 0; + for(i = 0; i < hlm->count; i++) { + dmi_handle h = hlm->handles[i]; + m->sockets = g_slist_append(m->sockets, dmi_mem_socket_new(h)); + } + dmi_handle_list_free(hlm); + } + + m->spd = spd_scan(); + + if (!m->sockets && !m->arrays && !m->spd) { + m->empty = 1; + goto dmi_mem_new_last_chance; + } + + GSList *l = NULL, *l2 = NULL; + + /* totals for SPD */ + for(l2 = m->spd; l2; l2 = l2->next) { + spd_data *e = (spd_data*)l2->data; + m->spd_size_MiB += e->size_MiB; + if (e->type) + m->spd_ram_types |= (1 << (e->type-1)); + } + + m->unique_short_locators = TRUE; + for(l = m->sockets; l; l = l->next) { + dmi_mem_socket *s = (dmi_mem_socket*)l->data; + + /* check for duplicate short_locator */ + if (m->unique_short_locators) { + for(l2 = l->next; l2; l2 = l2->next) { + dmi_mem_socket *d = (dmi_mem_socket*)l2->data; + if (SEQ(s->short_locator, d->short_locator)) { + m->unique_short_locators = FALSE; + break; + } + } + } + + /* update array present devices/size */ + dmi_mem_array *a = dmi_mem_find_array(m, s->array_handle); + if (a) { + if (s->is_not_ram) { + if (s->is_rom) + a->size_MiB_rom += s->size_MiB; + } else { + a->size_MiB_present += s->size_MiB; + if (s->populated) + a->devs_populated++; + if (s->ram_type) + a->ram_types |= (1 << (s->ram_type-1)); + } + } + } + + if (m->sockets && m->spd) { + /* attempt to match DMI and SPD data */ + GSList *sock_queue = g_slist_copy(m->sockets); + int loops = g_slist_length(sock_queue) * 4; + while(sock_queue) { + if (loops-- <= 0) break; /* something is wrong, give up */ + spd_data *best = NULL; + int best_score = 0; + dmi_mem_socket *s = (dmi_mem_socket*)sock_queue->data; + /* pop that one off */ + sock_queue = g_slist_delete_link(sock_queue, sock_queue); + if (!s->populated) + continue; + for(l2 = m->spd; l2; l2 = l2->next) { + spd_data *e = (spd_data*)l2->data; + int score = dmi_spd_match_score(s, e); + if (score > best_score) { + if (score > e->match_score) { + best = e; + best_score = score; + } + } + } + if (best) { + if (best->dmi_socket) { + /* displace */ + dmi_mem_socket *old_sock = best->dmi_socket; + old_sock->spd = NULL; + sock_queue = g_slist_append(sock_queue, old_sock); + + best->dmi_socket = s; + best->match_score = best_score; + s->spd = best; + } else { + best->dmi_socket = s; + best->match_score = best_score; + s->spd = best; + } + } + } + + /* fill any missing data in DMI that is + * provided by the matched SPD */ + for(l = m->sockets; l; l = l->next) { + dmi_mem_socket *s = (dmi_mem_socket*)l->data; + dmi_fill_from_spd(s); + } + + } /* end if (m->sockets && m->spd) */ + + /* Look for arrays with "System Memory" use, + * or Mainboard as locator */ + for(l = m->arrays; l; l = l->next) { + dmi_mem_array *a = (dmi_mem_array*)l->data; + if (a->is_main_memory) { + m->system_memory_MiB += a->size_MiB_present; + m->system_memory_ram_types |= a->ram_types; + } + } + + /* If no arrays, then try the SPD total */ + if (!m->system_memory_MiB) { + m->system_memory_MiB = m->spd_size_MiB; + m->system_memory_ram_types |= m->spd_ram_types; + } + +dmi_mem_new_last_chance: + if (m->empty) { + /* reach */ + if (dtree_mem_str) { + int rt = 0; + m->system_memory_MiB = dmi_read_memory_str_to_MiB(dtree_mem_str); + if (strstr(dtree_mem_str, "DDR4")) rt = DDR4_SDRAM; + else if (strstr(dtree_mem_str, "DDR3")) rt = DDR3_SDRAM; + else if (strstr(dtree_mem_str, "DDR2")) rt = DDR2_SDRAM; + else if (strstr(dtree_mem_str, "DDR")) rt = DDR_SDRAM; + else if (strstr(dtree_mem_str, "DRDRAM")) rt = DIRECT_RAMBUS; + else if (strstr(dtree_mem_str, "RDRAM")) rt = RAMBUS; + if (rt) + m->system_memory_ram_types |= (1 << (rt-1)); + } + } + + /* Try to sum the online blocks for a physical memory total */ + if (!m->system_memory_MiB) + m->system_memory_MiB = size_of_online_memory_blocks() / 1024 / 1024; + + return m; +} + +void dmi_mem_free(dmi_mem* s) { + if (s) { + g_slist_free_full(s->arrays, (GDestroyNotify)dmi_mem_array_free); + g_slist_free_full(s->sockets, (GDestroyNotify)dmi_mem_socket_free); + g_slist_free_full(s->spd, (GDestroyNotify)spd_data_free); + g_free(s); + } +} + +gchar *make_spd_section(spd_data *spd) { + gchar *ret = NULL; + if (spd) { + gchar *full_spd = NULL; + switch(spd->type) { + case SDR_SDRAM: + full_spd = decode_sdr_sdram_extra(spd->bytes); + break; + case DDR_SDRAM: + full_spd = decode_ddr_sdram_extra(spd->bytes); + break; + case DDR2_SDRAM: + full_spd = decode_ddr2_sdram_extra(spd->bytes); + break; + case DDR3_SDRAM: + full_spd = decode_ddr3_sdram_extra(spd->bytes); + break; + case DDR4_SDRAM: + full_spd = decode_ddr4_sdram_extra(spd->bytes, spd->spd_size); + break; + default: + DEBUG("blug for type: %d %s\n", spd->type, ram_types[spd->type]); + } + gchar *size_str = NULL; + if (!spd->size_MiB) + size_str = g_strdup(_("(Unknown)")); + else + size_str = g_strdup_printf("%"PRId64" %s", spd->size_MiB, _("MiB") ); + + gchar *mfg_date_str = NULL; + if (spd->year) + mfg_date_str = g_strdup_printf("%d / %d", spd->week, spd->year); + + ret = g_strdup_printf("[%s]\n" + "%s=%s (%s)%s\n" + "%s=%d.%d\n" + "%s=%s\n" + "%s=%s\n" + "$^$%s=[%02x%02x] %s\n" /* module vendor */ + "$^$%s=[%02x%02x] %s\n" /* dram vendor */ + "%s=%s\n" /* part */ + "%s=%s\n" /* size */ + "%s=%s\n" /* mfg date */ + "%s", + _("Serial Presence Detect (SPD)"), + _("Source"), spd->dev, spd->spd_driver, + (spd->type == DDR4_SDRAM && strcmp(spd->spd_driver, "ee1004") != 0) ? problem_marker() : "", + _("SPD Revision"), spd->spd_rev_major, spd->spd_rev_minor, + _("Form Factor"), UNKIFNULL2(spd->form_factor), + _("Type"), UNKIFEMPTY2(spd->type_detail), + _("Module Vendor"), spd->vendor_bank, spd->vendor_index, + UNKIFNULL2(spd->vendor_str), + _("DRAM Vendor"), spd->dram_vendor_bank, spd->dram_vendor_index, + UNKIFNULL2(spd->dram_vendor_str), + _("Part Number"), UNKIFEMPTY2(spd->partno), + _("Size"), size_str, + _("Manufacturing Date (Week / Year)"), UNKIFNULL2(mfg_date_str), + full_spd ? full_spd : "" + ); + g_free(full_spd); + g_free(size_str); + g_free(mfg_date_str); + } + return ret; +} + +static gchar *tag_make_safe_inplace(gchar *tag) { + if (!tag) + return tag; + if (!g_utf8_validate(tag, -1, NULL)) + return tag; //TODO: reconsider + gchar *p = tag, *pd = tag; + while(*p) { + gchar *np = g_utf8_next_char(p); + gunichar c = g_utf8_get_char_validated(p, -1); + int l = g_unichar_to_utf8(c, NULL); + if (l == 1 && g_unichar_isalnum(c)) { + g_unichar_to_utf8(c, pd); + } else { + *pd = '_'; + } + p = np; + pd++; + } + return tag; +} + +gchar *memory_devices_get_info() { + gchar *icons = g_strdup(""); + gchar *ret = g_strdup_printf("[%s]\n", _("Memory Device List")); + GSList *l = NULL; + sketchy_info = FALSE; + gchar tag_prefix[] = "DEV"; + + dmi_mem *mem = dmi_mem_new(); + + /* Arrays */ + for(l = mem->arrays; l; l = l->next) { + dmi_mem_array *a = (dmi_mem_array*)l->data; + gchar *tag = g_strdup_printf("%s", a->locator); + gchar *size_str = NULL, *rom_size_str = NULL; + + tag_make_safe_inplace(tag); + + if (a->size_MiB_max > 1024 && (a->size_MiB_max % 1024 == 0) + && a->size_MiB_present > 1024 && (a->size_MiB_present % 1024 == 0) ) + size_str = g_strdup_printf("%"PRId64" / %"PRId64" %s", a->size_MiB_present / 1024, a->size_MiB_max / 1024, _("GiB")); + else + size_str = g_strdup_printf("%"PRId64" / %"PRId64" %s", a->size_MiB_present, a->size_MiB_max, _("MiB")); + + if (a->size_MiB_max < a->size_MiB_present) { + sketchy_info = TRUE; + size_str = h_strdup_cprintf(" %s", size_str, problem_marker()); + } + + if (a->size_MiB_rom > 1024 && (a->size_MiB_rom % 1024 == 0)) + rom_size_str = g_strdup_printf("%"PRId64" %s", a->size_MiB_rom / 1024, _("GiB")); + else + rom_size_str = g_strdup_printf("%"PRId64" %s", a->size_MiB_rom, _("MiB")); + + gchar *types_str = NULL; + int i; + for(i = 1; i < N_RAM_TYPES; i++) { + int bit = 1 << (i-1); + if (a->ram_types & bit) + types_str = appfsp(types_str, "%s", GET_RAM_TYPE_STR(i)); + } + + gchar *details = g_strdup_printf("[%s]\n" + "%s=0x%"PRIx32"\n" + "%s=%s\n" + "%s=%s\n" + "%s=%s\n" + "%s=%s\n" + "%s=%d / %d\n" + "%s=[0x%x] %s\n" + "%s=%s\n", + _("Memory Array"), + _("DMI Handle"), a->array_handle, + _("Locator"), a->locator ? a->locator : ".", + _("Use"), UNKIFNULL2(a->use), + _("Error Correction Type"), UNKIFNULL2(a->ecc), + _("Size (Present / Max)"), size_str, + _("Devices (Populated / Sockets)"), a->devs_populated, a->devs, + _("Types Present"), a->ram_types, UNKIFNULL2(types_str), + _("ROM Size"), rom_size_str + ); + moreinfo_add_with_prefix(tag_prefix, tag, details); /* moreinfo now owns *details */ + ret = h_strdup_cprintf("$!%s$%s=%s|%s\n", + ret, + tag, a->locator, UNKIFNULL2(types_str), size_str + ); + icons = h_strdup_cprintf("Icon$%s$=%s\n", icons, tag, array_icon); + g_free(tag); + g_free(size_str); + g_free(rom_size_str); + g_free(types_str); + } + + /* Sockets */ + for(l = mem->sockets; l; l = l->next) { + dmi_mem_socket *s = (dmi_mem_socket*)l->data; + gchar *tag = g_strdup_printf("%s", s->full_locator); + tag_make_safe_inplace(tag); + + if (s->populated) { + gchar *size_str = NULL; + if (!s->size_str) + size_str = g_strdup(_("(Unknown)")); + else if (!s->size_MiB) + size_str = g_strdup(s->size_str); + else + size_str = g_strdup_printf("%"PRId64" %s", s->size_MiB, _("MiB") ); + + gchar *spd = s->spd ? make_spd_section(s->spd) : NULL; + + gchar *details = g_strdup_printf("[%s]\n" + "%s=0x%"PRIx32", 0x%"PRIx32"\n" + "%s=%s\n" + "%s=%s\n" + "%s=%s\n" + "%s=%s / %s\n" + "$^$%s=[%02x%02x] %s\n" + "%s=%s\n" + "%s=%s\n" + "%s=%s\n" + "%s=%s\n" + "%s=%s / %s\n" + "%s=%s\n" + "%s=%s\n" + "%s=%s\n" + "%s=%s\n" + "%s", /* spd */ + _("Memory Socket"), + _("DMI Handles (Array, Socket)"), s->array_handle, s->handle, + _("Locator"), s->full_locator, + _("Bank Locator"), UNKIFNULL2(s->bank_locator), + _("Form Factor"), UNKIFNULL2(s->form_factor), + _("Type"), UNKIFNULL2(s->type), UNKIFNULL2(s->type_detail), + _("Vendor"), + s->mfgr_bank, s->mfgr_index, UNKIFNULL2(s->mfgr), + _("Part Number"), UNKIFNULL2(s->partno), + _("Size"), size_str, + _("Rated Speed"), UNKIFNULL2(s->speed_str), + _("Configured Speed"), UNKIFNULL2(s->configured_clock_str), + _("Data Width/Total Width"), UNKIFNULL2(s->data_width), UNKIFNULL2(s->total_width), + _("Rank"), UNKIFNULL2(s->rank), + _("Minimum Voltage"), UNKIFNULL2(s->voltage_min_str), + _("Maximum Voltage"), UNKIFNULL2(s->voltage_max_str), + _("Configured Voltage"), UNKIFNULL2(s->voltage_conf_str), + spd ? spd : "" + ); + g_free(spd); + moreinfo_add_with_prefix(tag_prefix, tag, details); /* moreinfo now owns *details */ + gchar *mfgr = s->mfgr ? vendor_match_tag(s->mfgr, params.fmt_opts) : NULL; + ret = h_strdup_cprintf("$!%s$%s=%s|%s|%s\n", + ret, + tag, + mem->unique_short_locators ? s->short_locator : s->full_locator, + UNKIFNULL2(s->partno), size_str, UNKIFNULL2(mfgr) + ); + icons = h_strdup_cprintf("Icon$%s$=%s\n", icons, tag, mem_icon); + g_free(size_str); + g_free(mfgr); + } else { + gchar *details = g_strdup_printf("[%s]\n" + "%s=0x%"PRIx32", 0x%"PRIx32"\n" + "%s=%s\n" + "%s=%s\n" + "%s=%s\n", + _("Memory Socket"), + _("DMI Handles (Array, Socket)"), s->array_handle, s->handle, + _("Locator"), s->full_locator, + _("Bank Locator"), UNKIFNULL2(s->bank_locator), + _("Size"), _("(Empty)") + ); + moreinfo_add_with_prefix(tag_prefix, tag, details); /* moreinfo now owns *details */ + ret = h_strdup_cprintf("$%s$%s=|%s\n", + ret, + tag, + mem->unique_short_locators ? s->short_locator : s->full_locator, + _("(Empty)") + ); + icons = h_strdup_cprintf("Icon$%s$=%s\n", icons, tag, empty_icon); + } + g_free(tag); + } + + /* No DMI Array, show SPD totals */ + if (!mem->arrays && mem->spd) { + gchar *key = g_strdup("SPD:*"); + gchar *tag = g_strdup(key); + tag_make_safe_inplace(tag); + gchar *types_str = NULL; + gchar *size_str = NULL; + + if (mem->spd_size_MiB > 1024 && (mem->spd_size_MiB % 1024 == 0) ) + size_str = g_strdup_printf("%"PRId64" %s", mem->spd_size_MiB / 1024, _("GiB")); + else + size_str = g_strdup_printf("%"PRId64" %s", mem->spd_size_MiB, _("MiB")); + + int i; + for(i = 1; i < N_RAM_TYPES; i++) { + int bit = 1 << (i-1); + if (mem->spd_ram_types & bit) + types_str = appfsp(types_str, "%s", GET_RAM_TYPE_STR(i)); + } + + gchar *details = g_strdup_printf("[%s]\n" + "%s=%s\n" + "%s=%d\n" + "%s=[0x%x] %s\n", + _("Serial Presence Detect (SPD) Summary"), + _("Size"), size_str, + _("Devices"), g_slist_length(mem->spd), + _("Types Present"), mem->spd_ram_types, UNKIFNULL2(types_str) + ); + moreinfo_add_with_prefix(tag_prefix, tag, details); /* moreinfo now owns *details */ + ret = h_strdup_cprintf("$!%s$%s=%s|%s\n", + ret, + tag, key, UNKIFNULL2(types_str), size_str + ); + icons = h_strdup_cprintf("Icon$%s$=%s\n", icons, tag, array_icon); + g_free(key); + g_free(tag); + g_free(size_str); + g_free(types_str); + } + + /* Unmatched SPD */ + for(l = mem->spd; l; l = l->next) { + spd_data *s = (spd_data*)l->data; + if (s->dmi_socket) continue; /* claimed by DMI */ + gchar *key = g_strdup_printf("SPD:%s", s->dev); + gchar *tag = g_strdup(key); + tag_make_safe_inplace(tag); + + gchar *vendor_str = NULL; + if (s->vendor) { + vendor_str = vendor_get_link_from_vendor(s->vendor); + } + gchar *size_str = NULL; + if (!s->size_MiB) + size_str = g_strdup(_("(Unknown)")); + else + size_str = g_strdup_printf("%"PRId64" %s", s->size_MiB, _("MiB") ); + + gchar *details = make_spd_section(s); + + moreinfo_add_with_prefix(tag_prefix, tag, details); /* moreinfo now owns *details */ + const gchar *mfgr = s->vendor_str ? vendor_get_shortest_name(s->vendor_str) : NULL; + ret = h_strdup_cprintf("$!%s$%s%s=%s|%s|%s\n", + ret, + tag, key, problem_marker(), UNKIFEMPTY2(s->partno), size_str, UNKIFNULL2(mfgr) + ); + icons = h_strdup_cprintf("Icon$%s$=%s\n", icons, tag, mem_icon); + g_free(vendor_str); + g_free(size_str); + g_free(key); + g_free(tag); + } + + no_handles = FALSE; + if(mem->empty) { + no_handles = TRUE; + g_free(ret); + ret = g_strdup_printf("[%s]\n%s=%s\n" "[$ShellParam$]\nViewType=0\n", + _("Memory Device List"), _("Result"), + (getuid() == 0) + ? _("(Not available)") + : _("(Not available; Perhaps try running HardInfo as root.)") ); + } else { + ret = h_strdup_cprintf( + "[$ShellParam$]\nViewType=1\n" + "ColumnTitle$TextValue=%s\n" /* Locator */ + "ColumnTitle$Extra1=%s\n" /* Size */ + "ColumnTitle$Extra2=%s\n" /* Vendor */ + "ColumnTitle$Value=%s\n" /* Part */ + "ShowColumnHeaders=true\n" + "%s", + ret, + _("Locator"), + _("Size"), + _("Vendor"), + _("Part"), + icons + ); + } + + g_free(icons); + dmi_mem_free(mem); + return ret; +} + +gchar *memory_devices_get_system_memory_types_str() { + gchar *ret = NULL, *types_str = NULL; + int i, rtypes; + + dmi_mem *lmem = dmi_mem_new(); + rtypes = lmem->system_memory_ram_types; + dmi_mem_free(lmem); + + for(i = 1; i < N_RAM_TYPES; i++) { + int bit = 1 << (i-1); + if (rtypes & bit) + types_str = appfsp(types_str, "%s", GET_RAM_TYPE_STR(i)); + } + + if (types_str) + ret = g_strdup(types_str); + else + ret = g_strdup(UNKNOWN_MEM_TYPE_STRING); + g_free(types_str); + return ret; +} + +uint64_t memory_devices_get_system_memory_MiB() { + dmi_mem *mem = dmi_mem_new(); + int ret = (int)mem->system_memory_MiB; + dmi_mem_free(mem); + return ret; +} + +gchar *memory_devices_get_system_memory_str() { + gchar *ret = NULL; + dmi_mem_size m = memory_devices_get_system_memory_MiB(); + if (m) { + if (m > 1024 && (m % 1024 == 0) ) + ret = g_strdup_printf("%"PRId64" %s", m/1024, _("GiB")); + else + ret = g_strdup_printf("%"PRId64" %s", m, _("MiB")); + } + return ret; +} + +static gchar note_state[note_max_len] = ""; + +gboolean memory_devices_hinote(const char **msg) { + gchar *want_dmi = _(" dmidecode utility available"); + gchar *want_root = _(" ... and HardInfo running with superuser privileges"); + gchar *want_at24 = _(" at24 (or eeprom) module loaded (for SDR, DDR, DDR2, DDR3)"); + gchar *want_ee1004 = _(" ... or ee1004 module loaded and configured! (for DDR4)"); + + gboolean has_root = (getuid() == 0); + gboolean has_dmi = !no_handles; + gboolean has_at24eep = g_file_test("/sys/bus/i2c/drivers/at24", G_FILE_TEST_IS_DIR) || + g_file_test("/sys/bus/i2c/drivers/eeprom", G_FILE_TEST_IS_DIR); + gboolean has_ee1004 = g_file_test("/sys/bus/i2c/drivers/ee1004", G_FILE_TEST_IS_DIR); + + *note_state = 0; /* clear */ + note_printf(note_state, "%s\n", _("Memory information requires one or both of the following:")); + note_print(note_state, "1. "); + note_cond_bullet(has_dmi, note_state, want_dmi); + note_print(note_state, " "); + note_cond_bullet(has_root, note_state, want_root); + note_print(note_state, "2. "); + note_cond_bullet(has_at24eep, note_state, want_at24); + note_print(note_state, " "); + note_cond_bullet(has_ee1004, note_state, want_ee1004); + g_strstrip(note_state); /* remove last \n */ + + gboolean ddr3_ee1004 = ((dmi_ram_types & (1<<(DDR3_SDRAM-1))) && has_ee1004); + + gboolean best_state = FALSE; + if (has_dmi && has_root && + ((has_at24eep && !spd_ddr4_partial_data) + || (has_ee1004 && !ddr3_ee1004) ) ) + best_state = TRUE; + + if (!best_state) { + *msg = note_state; + return TRUE; + } + + if (sketchy_info) { + *msg = g_strdup( + _("\"More often than not, information contained in the DMI tables is inaccurate,\n" + "incomplete or simply wrong.\" -dmidecode manual page")); + return TRUE; + } + + return FALSE; +} diff --git a/modules/devices/e2k/processor.c b/modules/devices/e2k/processor.c new file mode 100644 index 00000000..74476853 --- /dev/null +++ b/modules/devices/e2k/processor.c @@ -0,0 +1,420 @@ +/* + * HardInfo - Displays System Information + * Copyright (C) 2020 EntityFX and MCST Elbrus Team + * modified by Boris Afonot (2022) + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 2. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include "hardinfo.h" +#include "devices.h" +#include "cpu_util.h" + +static gchar *__cache_get_info_as_string(Processor *processor) +{ + gchar *result = g_strdup(""); + GSList *cache_list; + ProcessorCache *cache; + + if (!processor->cache) { + return g_strdup(_("Cache information not available=\n")); + } + + for (cache_list = processor->cache; cache_list; cache_list = cache_list->next) { + cache = (ProcessorCache *)cache_list->data; + + result = h_strdup_cprintf(_("Level %d (%s)=%d-way set-associative, %d sets, %dKB size\n"), + result, + cache->level, + C_("cache-type", cache->type), + cache->ways_of_associativity, + cache->number_of_sets, + cache->size); + } + + return result; +} + +/* This is not used directly, but creates translatable strings for + * the type string returned from /sys/.../cache */ +static const char* cache_types[] = { + NC_("cache-type", /*/cache type, as appears in: Level 1 (Data)*/ "Data"), + NC_("cache-type", /*/cache type, as appears in: Level 1 (Instruction)*/ "Instruction"), + NC_("cache-type", /*/cache type, as appears in: Level 2 (Unified)*/ "Unified") +}; + +static void __cache_obtain_info(Processor *processor) +{ + ProcessorCache *cache; + gchar *endpoint, *entry, *index; + gchar *uref = NULL; + gint i; + gint processor_number = processor->id; + + endpoint = g_strdup_printf("/sys/devices/system/cpu/cpu%d/cache", processor_number); + + for (i = 0; ; i++) { + cache = g_new0(ProcessorCache, 1); + + index = g_strdup_printf("index%d/", i); + + entry = g_strconcat(index, "type", NULL); + cache->type = h_sysfs_read_string(endpoint, entry); + g_free(entry); + + if (!cache->type) { + g_free(cache); + g_free(index); + goto fail; + } + + entry = g_strconcat(index, "level", NULL); + cache->level = h_sysfs_read_int(endpoint, entry); + g_free(entry); + + entry = g_strconcat(index, "number_of_sets", NULL); + cache->number_of_sets = h_sysfs_read_int(endpoint, entry); + g_free(entry); + + entry = g_strconcat(index, "physical_line_partition", NULL); + cache->physical_line_partition = h_sysfs_read_int(endpoint, entry); + g_free(entry); + + entry = g_strconcat(index, "size", NULL); + cache->size = h_sysfs_read_int(endpoint, entry); + g_free(entry); + + entry = g_strconcat(index, "ways_of_associativity", NULL); + cache->ways_of_associativity = h_sysfs_read_int(endpoint, entry); + g_free(entry); + + /* unique cache references: id is nice, but share_cpu_list can be + * used if it is not available. */ + entry = g_strconcat(index, "id", NULL); + uref = h_sysfs_read_string(endpoint, entry); + g_free(entry); + if (uref != NULL && *uref != 0 ) + cache->uid = atoi(uref); + else + cache->uid = -1; + g_free(uref); + entry = g_strconcat(index, "shared_cpu_list", NULL); + cache->shared_cpu_list = h_sysfs_read_string(endpoint, entry); + g_free(entry); + + /* reacharound */ + entry = g_strconcat(index, "../../topology/physical_package_id", NULL); + cache->phy_sock = h_sysfs_read_int(endpoint, entry); + g_free(entry); + + g_free(index); + + processor->cache = g_slist_append(processor->cache, cache); + } + +fail: + g_free(endpoint); +} + +#define cmp_cache_test(f) if (a->f < b->f) return -1; if (a->f > b->f) return 1; + +static gint cmp_cache(ProcessorCache *a, ProcessorCache *b) { + gint i = 0; + cmp_cache_test(phy_sock); + i = g_strcmp0(a->type, b->type); if (i!=0) return i; + cmp_cache_test(level); + cmp_cache_test(size); + cmp_cache_test(uid); /* uid is unique among caches with the same (type, level) */ + if (a->uid == -1) { + /* if id wasn't available, use shared_cpu_list as a unique ref */ + i = g_strcmp0(a->shared_cpu_list, b->shared_cpu_list); if (i!=0) + return i; + } + return 0; +} + +static gint cmp_cache_ignore_id(ProcessorCache *a, ProcessorCache *b) { + gint i = 0; + cmp_cache_test(phy_sock); + i = g_strcmp0(a->type, b->type); if (i!=0) return i; + cmp_cache_test(level); + cmp_cache_test(size); + return 0; +} + +gchar *caches_summary(GSList * processors) +{ + gchar *ret = g_strdup_printf("[%s]\n", _("Caches")); + GSList *all_cache = NULL, *uniq_cache = NULL; + GSList *tmp, *l; + Processor *p; + ProcessorCache *c, *cur = NULL; + gint cur_count = 0, i = 0; + + /* create list of all cache references */ + for (l = processors; l; l = l->next) { + p = (Processor*)l->data; + if (p->cache) { + tmp = g_slist_copy(p->cache); + if (all_cache) { + all_cache = g_slist_concat(all_cache, tmp); + } else { + all_cache = tmp; + } + } + } + + if (g_slist_length(all_cache) == 0) { + ret = h_strdup_cprintf("%s=\n", ret, _("(Not Available)") ); + g_slist_free(all_cache); + return ret; + } + + /* ignore duplicate references */ + all_cache = g_slist_sort(all_cache, (GCompareFunc)cmp_cache); + for (l = all_cache; l; l = l->next) { + c = (ProcessorCache*)l->data; + if (!cur) { + cur = c; + } else { + if (cmp_cache(cur, c) != 0) { + uniq_cache = g_slist_prepend(uniq_cache, cur); + cur = c; + } + } + } + uniq_cache = g_slist_prepend(uniq_cache, cur); + uniq_cache = g_slist_reverse(uniq_cache); + cur = 0, cur_count = 0; + + /* count and list caches */ + for (l = uniq_cache; l; l = l->next) { + c = (ProcessorCache*)l->data; + if (!cur) { + cur = c; + cur_count = 1; + } else { + if (cmp_cache_ignore_id(cur, c) != 0) { + ret = h_strdup_cprintf(_("Level %d (%s)#%d=%dx %dKB (%dKB), %d-way set-associative, %d sets\n"), + ret, + cur->level, + C_("cache-type", cur->type), + cur->phy_sock, + cur_count, + cur->size, + cur->size * cur_count, + cur->ways_of_associativity, + cur->number_of_sets); + cur = c; + cur_count = 1; + } else { + cur_count++; + } + } + } + ret = h_strdup_cprintf(_("Level %d (%s)#%d=%dx %dKB (%dKB), %d-way set-associative, %d sets\n"), + ret, + cur->level, + C_("cache-type", cur->type), + cur->phy_sock, + cur_count, + cur->size, + cur->size * cur_count, + cur->ways_of_associativity, + cur->number_of_sets); + + g_slist_free(all_cache); + g_slist_free(uniq_cache); + return ret; +} + +static gchar *processor_get_full_name(const gchar *model_name) +{ + if(g_strcmp0(model_name ,"E2S") == 0) + return "Elbrus-4C"; + else if(g_strcmp0(model_name ,"E1C+") == 0) + return "Elbrus-1C+"; + else if(g_strcmp0(model_name ,"E2C+DSP") == 0) + return "Elbrus-2C+"; + else if(g_strcmp0(model_name ,"E8C") == 0) + return "Elbrus-8C"; + else if(g_strcmp0(model_name ,"E8C2") == 0) + return "Elbrus-8CB"; + else if(g_strcmp0(model_name ,"E12C") == 0) + return "Elbrus-12C"; + else if(g_strcmp0(model_name ,"E16C") == 0) + return "Elbrus-16C"; + else if(g_strcmp0(model_name ,"E2C3") == 0) + return "Elbrus-2C3"; + else + return (gchar *)model_name; +} + +GSList *processor_scan(void) +{ + GSList *procs = NULL, *l = NULL; + Processor *processor = NULL; + FILE *cpuinfo; + gchar buffer[1024]; + + cpuinfo = fopen(PROC_CPUINFO, "r"); + if (!cpuinfo) + return NULL; + + while (fgets(buffer, 1024, cpuinfo)) { + gchar **tmp = g_strsplit(buffer, ":", 2); + if (!tmp[1] || !tmp[0]) { + g_strfreev(tmp); + continue; + } + + tmp[0] = g_strstrip(tmp[0]); + tmp[1] = g_strstrip(tmp[1]); + + if (g_str_has_prefix(tmp[0], "processor")) { + /* finish previous */ + if (processor) + procs = g_slist_append(procs, processor); + + /* start next */ + processor = g_new0(Processor, 1); + processor->id = atol(tmp[1]); + g_strfreev(tmp); + continue; + } + + if (processor) { + if (g_str_has_prefix(tmp[0], "model name")) { + const gchar *model_name = processor_get_full_name(tmp[1]); + processor->model_name = g_strdup(model_name); + g_strfreev(tmp); + continue; + } + + get_str("vendor_id", processor->vendor_id); + get_int("cpu family", processor->family); + get_int("model", processor->model); + get_int("revision", processor->revision); + + get_float("cpu MHz", processor->cpu_mhz); + get_float("bogomips", processor->bogomips); + } + + //populate processor structure + g_strfreev(tmp); + } + + //appent to the list + if (processor) + procs = g_slist_append(procs, processor); + + for (l = procs; l; l = l->next) { + processor = (Processor *) l->data; + __cache_obtain_info(processor); + } + + fclose(cpuinfo); + + return procs; +} + +gchar *processor_name(GSList * processors) { + return processor_name_default(processors); +} + +gchar *processor_describe(GSList * processors) { + return processor_describe_default(processors); +} + +gchar * +processor_get_detailed_info(Processor *processor) +{ + gchar *ret; + gchar *cache_info; + cache_info = __cache_get_info_as_string(processor); + + ret = g_strdup_printf("[%s]\n" + "$^$%s=%s\n" /* name */ + "$^$%s=%s\n" /* vendor */ + "%s=%d\n" /* family */ + "%s=%d\n" /* model */ + "%s=%d\n" /* revision */ + "%s=%.2f %s\n" /* frequency */ + "%s=%.2f\n" /* bogomips */ + "%s=%s\n" /* byte order */ + "[%s]\n" /* cache */ + "%s\n", + _("Processor"), + _("Name"), processor->model_name, + _("Vendor"), processor->vendor_id, + _("Family"), processor->family, + _("Model"), processor->model, + _("Revision"), processor->revision, + _("Frequency"), processor->cpu_mhz, _("MHz"), + _("BogoMips"), processor->bogomips, + _("Byte Order"), byte_order_str(), + _("Cache"), cache_info + ); + g_free(cache_info); + return ret; +} + +//prepare processor info for all cpus +gchar *processor_get_info(GSList * processors) +{ + Processor *processor; + + gchar *ret, *tmp, *hashkey; + GSList *l; + + tmp = g_strdup(""); + + for (l = processors; l; l = l->next) { + processor = (Processor *) l->data; + gchar *model_name = g_strdup_printf("MCST %s", processor->model_name); + + /* change vendor id of 8CB processor for correct parse from vendor.ids */ + if (!g_strcmp0(processor->vendor_id, "E8C")) { + gchar *orig_vendor_id = processor->vendor_id; + processor->vendor_id = g_strdup_printf("%s-SWTX", orig_vendor_id); + free(orig_vendor_id); + } + + const Vendor *v = vendor_match(processor->vendor_id, NULL); + if (v) + tag_vendor(&model_name, 0, v->name_short ? v->name_short : v->name, v->ansi_color, params.fmt_opts); + + tmp = g_strdup_printf("%s$CPU%d$cpu%d=%.2f %s|%s\n", + tmp, processor->id, + processor->id, + processor->cpu_mhz, _("MHz"), + model_name); + + hashkey = g_strdup_printf("CPU%d", processor->id); + moreinfo_add_with_prefix("DEV", hashkey, + processor_get_detailed_info(processor)); + g_free(hashkey); + } + + ret = g_strdup_printf("[$ShellParam$]\n" + "ViewType=1\n" + "ColumnTitle$TextValue=%s\n" + "ColumnTitle$Value=%s\n" + "ColumnTitle$Extra1=%s\n" + "ShowColumnHeaders=true\n" + "[Processors]\n" + "%s", _("Device"), _("Frequency"), _("Model"), tmp); + g_free(tmp); + + return ret; +} diff --git a/modules/devices/firmware.c b/modules/devices/firmware.c new file mode 100644 index 00000000..ea6ce532 --- /dev/null +++ b/modules/devices/firmware.c @@ -0,0 +1,261 @@ +/* + * HardInfo - Displays System Information + * Copyright (C) 2003-2019 L. A. F. Pereira + * Copyright (C) 2019 Burt P. + * Copyright (C) 2020 Ondrej Čerman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 2 or later. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include "hardinfo.h" +#include "devices.h" +#include +#include +#include "util_sysobj.h" /* for SEQ() and appf() */ + +#define fw_msg(msg, ...) fprintf (stderr, "[%s] " msg "\n", __FUNCTION__, ##__VA_ARGS__) /**/ + +#define FWUPT_INTERFACE "org.freedesktop.fwupd" + +gboolean fail_no_fwupd = TRUE; + +char *decode_flags(guint64 flags) { + /* https://github.com/hughsie/fwupd/blob/master/libfwupd/fwupd-enums.{h,c} */ + static const struct { guint64 b; char *flag, *def; } flag_defs[] = { + { (1u << 0), "internal", N_("Device cannot be removed easily") }, + { (1u << 1), "updatable", N_("Device is updatable in this or any other mode") }, + { (1u << 2), "only-offline", N_("Update can only be done from offline mode") }, + { (1u << 3), "require-ac", N_("Requires AC power") }, + { (1u << 4), "locked", N_("Is locked and can be unlocked") }, + { (1u << 5), "supported", N_("Is found in current metadata") }, + { (1u << 6), "needs-bootloader", N_("Requires a bootloader mode to be manually enabled by the user") }, + { (1u << 7), "registered", N_("Has been registered with other plugins") }, + { (1u << 8), "needs-reboot", N_("Requires a reboot to apply firmware or to reload hardware") }, + { (1u << 17), "needs-shutdown", N_("Requires system shutdown to apply firmware") }, + { (1u << 9), "reported", N_("Has been reported to a metadata server") }, + { (1u << 10), "notified", N_("User has been notified") }, + { (1u << 11), "use-runtime-version", N_("Always use the runtime version rather than the bootloader") }, + { (1u << 12), "install-parent-first", N_("Install composite firmware on the parent before the child") }, + { (1u << 13), "is-bootloader", N_("Is currently in bootloader mode") }, + { (1u << 14), "wait-for-replug", N_("The hardware is waiting to be replugged") }, + { (1u << 15), "ignore-validation", N_("Ignore validation safety checks when flashing this device") }, + { (1u << 18), "another-write-required", N_("Requires the update to be retried with a new plugin") }, + { (1u << 19), "no-auto-instance-ids", N_("Do not add instance IDs from the device baseclass") }, + { (1u << 20), "needs-activation", N_("Device update needs to be separately activated") }, + { (1u << 21), "ensure-semver", N_("Ensure the version is a valid semantic version, e.g. numbers separated with dots") }, + { (1u << 16), "trusted", N_("Extra metadata can be exposed about this device") }, + { 0, NULL } + }; + + gchar *flag_list = g_strdup(""); + + int i; + for (i = 0; flag_defs[i].flag; i++) { + if (flags & flag_defs[i].b) + flag_list = appfnl(flag_list, "[%s] %s", flag_defs[i].flag, flag_defs[i].def); + } + return flag_list; +} + +const char *find_translation(const char *str) { + /* TODO: https://github.com/hughsie/fwupd/blob/master/src/README.md */ + static const char *translatable[] = { + N_("DeviceId"), N_("Guid"), N_("Summary"), N_("Plugin"), N_("Flags"), + N_("Vendor"), N_("VendorId"), N_("Version"), N_("VersionBootloader"), + N_("Icon"), N_("InstallDuration"), N_("Created"), + NULL + }; + int i; + if (!str) return NULL; + for (i = 0; translatable[i]; i++) { + if (SEQ(str, translatable[i])) + return _(translatable[i]); + } + return str; +}; + +/* map lvfs icon names to hardinfo icon names */ +const char *find_icon(const char *lvfs_name) { + /* icon names found by looking for fu_device_add_icon () + * in the fwupd source. */ + static const + struct { char *lvfs, *hi; } imap[] = { + { "applications-internet", "dns.png" }, + { "audio-card", "audio.png" }, + { "computer", "computer.png" }, + { "drive-harddisk", "hdd.png" }, + { "input-gaming", "joystick.png" }, + { "input-tablet", NULL }, + { "network-modem", "wireless.png" }, + { "preferences-desktop-keyboard", "keyboard.png" }, + { "thunderbolt", NULL }, + { "touchpad-disabled", NULL }, + /* default */ + { NULL, "memory.png" } /* a device with firmware maybe */ + }; + unsigned int i = 0; + for(; imap[i].lvfs; i++) { + if (SEQ(imap[i].lvfs, lvfs_name) && imap[i].hi) + return imap[i].hi; + } + return imap[i].hi; +} + +gchar *fwupdmgr_get_devices_info() { + struct Info *info = info_new(); + struct InfoGroup *this_group = NULL; + gboolean has_vendor_field = FALSE; + gboolean updatable = FALSE; + const Vendor *gv = NULL; + int gc = 0; + + GDBusConnection *conn; + GDBusProxy *proxy; + GVariant *devices, *value; + GVariantIter *deviter, *dictiter, *iter; + const gchar *key, *tmpstr; + + conn = g_bus_get_sync(G_BUS_TYPE_SYSTEM, NULL, NULL); + if (!conn) + return g_strdup(""); + + proxy = g_dbus_proxy_new_sync(conn, G_DBUS_PROXY_FLAGS_NONE, NULL, + FWUPT_INTERFACE, "/", FWUPT_INTERFACE, + NULL, NULL); + if (!proxy) { + g_object_unref(conn); + return g_strdup(""); + } + + fail_no_fwupd = FALSE; + devices = g_dbus_proxy_call_sync(proxy, "GetDevices", NULL, + G_DBUS_CALL_FLAGS_NONE, -1, NULL, NULL); + + if (devices) { + g_variant_get(devices, "(aa{sv})", &deviter); + while(g_variant_iter_loop(deviter, "a{sv}", &dictiter)){ + + this_group = info_add_group(info, _("Unknown"), info_field_last()); + this_group->sort = INFO_GROUP_SORT_NAME_DESCENDING; + has_vendor_field = FALSE; + updatable = FALSE; + gv = NULL; + + while (g_variant_iter_loop(dictiter, "{&sv}", &key, &value)) { + if (SEQ(key, "Name")) { + tmpstr = g_variant_get_string(value, NULL); + this_group->name = hardinfo_clean_grpname(tmpstr, 0); + gv = vendor_match(tmpstr, NULL); + } else if (SEQ(key, "Vendor")) { + has_vendor_field = TRUE; + tmpstr = g_variant_get_string(value, NULL); + + const Vendor* v = vendor_match(tmpstr, NULL); + if (v) { + info_group_add_field(this_group, + info_field(_("Vendor"), v->name, + .value_has_vendor = TRUE, + .free_value_on_flatten = FALSE) ); + } else { + info_group_add_field(this_group, + info_field(_("Vendor"), g_strdup(tmpstr), + .free_value_on_flatten = TRUE) ); + } + } else if (SEQ(key, "Icon")) { + g_variant_get(value, "as", &iter); + while (g_variant_iter_loop(iter, "s", &tmpstr)) { + info_group_add_field(this_group, + info_field(_("Icon"), g_strdup(tmpstr), + .free_value_on_flatten = TRUE, + .icon = g_strdup(find_icon(tmpstr)) ) ); + } + } else if (SEQ(key, "Guid")) { + g_variant_get(value, "as", &iter); + while (g_variant_iter_loop(iter, "s", &tmpstr)) { + info_group_add_field(this_group, + info_field(_("Guid"), g_strdup(tmpstr), + .tag = g_strdup_printf("guid%d", gc++), + .free_value_on_flatten = TRUE) ); + } + g_variant_iter_free(iter); + } else if (SEQ(key, "Created")) { + guint64 created = g_variant_get_uint64(value); + GDateTime *dt = g_date_time_new_from_unix_local(created); + if (dt) { + info_group_add_field(this_group, + info_field(_("Created"), g_date_time_format(dt, "%x"), + .free_value_on_flatten = TRUE) ); + g_date_time_unref(dt); + } + } else if (SEQ(key, "Flags")) { + guint64 flags = g_variant_get_uint64(value); + updatable = (gboolean)(flags & (1u << 1)); + info_group_add_field(this_group, + info_field(_("Flags"), decode_flags(flags), + .free_value_on_flatten = TRUE) ); + } else { + if (g_variant_is_of_type(value, G_VARIANT_TYPE_STRING)) { + info_group_add_field(this_group, + info_field(find_translation(key), + g_variant_dup_string(value, NULL), + .free_value_on_flatten = TRUE) ); + } + } + } + + if (gv && !has_vendor_field) { + info_group_add_field(this_group, + info_field(_("Vendor"), gv->name, + .value_has_vendor = TRUE, + .free_value_on_flatten = FALSE) ); + } + + // hide devices that are not updatable + if (!updatable) { + info_remove_group(info, info->groups->len - 1); + } + } + g_variant_iter_free(deviter); + g_variant_unref(devices); + } + + g_object_unref(proxy); + g_object_unref(conn); + + gchar *ret = NULL; + if (info->groups->len) { + info_set_view_type(info, SHELL_VIEW_DETAIL); + //fw_msg("flatten..."); + ret = info_flatten(info); + //fw_msg("ret: %s", ret); + } else { + ret = g_strdup_printf("[%s]\n%s=%s\n" "[$ShellParam$]\nViewType=0\n", + _("Firmware List"), + _("Result"), _("(Not available)") ); + } + return ret; +} + +gchar *firmware_get_info() { + return fwupdmgr_get_devices_info(); +} + +gboolean firmware_hinote(const char **msg) { + if (fail_no_fwupd) { + *msg = g_strdup( + _("Requires the fwupd daemon.")); + return TRUE; + } + return FALSE; +} diff --git a/modules/devices/gpu.c b/modules/devices/gpu.c new file mode 100644 index 00000000..96520161 --- /dev/null +++ b/modules/devices/gpu.c @@ -0,0 +1,291 @@ +/* + * HardInfo - Displays System Information + * Copyright (C) 2003-2017 L. A. F. Pereira + * This file + * Copyright (C) 2018 Burt P. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 2 or later. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include + +#include "hardinfo.h" +#include "devices.h" +#include "gpu_util.h" + +gchar *gpu_list = NULL; +gchar *gpu_summary = NULL; + +void gpu_summary_add(const char *gpu_name) { + if (strlen(gpu_summary) == 0) { + /* first one */ + gpu_summary = h_strdup_cprintf("%s", gpu_summary, gpu_name); + } else { + /* additional */ + gpu_summary = h_strdup_cprintf(" + %s", gpu_summary, gpu_name); + } +} + +#define UNKIFNULL_AC(f) (f != NULL) ? f : _("(Unknown)"); + +static void _gpu_pci_dev(gpud* gpu) { + pcid *p = gpu->pci_dev; + gchar *str; + gchar *vendor, *svendor, *product, *sproduct; + gchar *name, *key; + gchar *drm_path = NULL; + + gboolean vendor_is_svendor = (p->vendor_id == p->sub_vendor_id && p->device_id == p->sub_device_id); + + vendor = UNKIFNULL_AC(p->vendor_id_str); + svendor = UNKIFNULL_AC(p->sub_vendor_id_str); + product = UNKIFNULL_AC(p->device_id_str); + sproduct = UNKIFNULL_AC(p->sub_device_id_str); + if (gpu->drm_dev) + drm_path = g_strdup_printf("/dev/dri/%s", gpu->drm_dev); + else + drm_path = g_strdup(_("(Unknown)")); + + gchar *ven_tag = vendor_match_tag(p->vendor_id_str, params.fmt_opts); + gchar *sven_tag = vendor_match_tag(p->sub_vendor_id_str, params.fmt_opts); + if (ven_tag) { + if (sven_tag && !vendor_is_svendor) { + name = g_strdup_printf("%s %s %s", sven_tag, ven_tag, product); + } else { + name = g_strdup_printf("%s %s", ven_tag, product); + } + } else { + name = g_strdup_printf("%s %s", vendor, product); + } + g_free(ven_tag); + g_free(sven_tag); + + key = g_strdup_printf("GPU%s", gpu->id); + + gpu_summary_add((gpu->nice_name) ? gpu->nice_name : name); + gpu_list = h_strdup_cprintf("$!%s$%s=%s\n", gpu_list, key, gpu->id, name); + + gchar *vendor_device_str; + if (p->vendor_id == p->sub_vendor_id && p->device_id == p->sub_device_id) { + vendor_device_str = g_strdup_printf( + /* Vendor */ "$^$%s=[%04x] %s\n" + /* Device */ "%s=[%04x] %s\n", + _("Vendor"), p->vendor_id, vendor, + _("Device"), p->device_id, product); + } else { + vendor_device_str = g_strdup_printf( + /* Vendor */ "$^$%s=[%04x] %s\n" + /* Device */ "%s=[%04x] %s\n" + /* Sub-device vendor */ "$^$%s=[%04x] %s\n" + /* Sub-device */ "%s=[%04x] %s\n", + _("Vendor"), p->vendor_id, vendor, + _("Device"), p->device_id, product, + _("SVendor"), p->sub_vendor_id, svendor, + _("SDevice"), p->sub_device_id, sproduct); + } + + gchar *pcie_str; + if (p->pcie_width_curr) { + pcie_str = g_strdup_printf("[%s]\n" + /* Width (max) */ "%s=x%u\n" + /* Speed (max) */ "%s=%0.1f %s\n", + _("PCI Express"), + _("Maximum Link Width"), p->pcie_width_max, + _("Maximum Link Speed"), p->pcie_speed_max, _("GT/s") ); + } else + pcie_str = strdup(""); + + gchar *nv_str; + if (gpu->nv_info) { + nv_str = g_strdup_printf("[%s]\n" + /* model */ "%s=%s\n" + /* bios */ "%s=%s\n" + /* uuid */ "%s=%s\n", + _("NVIDIA"), + _("Model"), gpu->nv_info->model, + _("BIOS Version"), gpu->nv_info->bios_version, + _("UUID"), gpu->nv_info->uuid ); + } else + nv_str = strdup(""); + + gchar *freq = g_strdup(_("(Unknown)")); + if (gpu->khz_max > 0) { + if (gpu->khz_min > 0 && gpu->khz_min != gpu->khz_max) + freq = g_strdup_printf("%0.2f-%0.2f %s", (double) gpu->khz_min / 1000, (double) gpu->khz_max / 1000, _("MHz")); + else + freq = g_strdup_printf("%0.2f %s", (double) gpu->khz_max / 1000, _("MHz")); + } + + gchar *mem_freq = g_strdup(_("(Unknown)")); + if (gpu->mem_khz_max > 0) { + if (gpu->mem_khz_min > 0 && gpu->mem_khz_min != gpu->mem_khz_max) + mem_freq = g_strdup_printf("%0.2f-%0.2f %s", (double) gpu->mem_khz_min / 1000, (double) gpu->mem_khz_max / 1000, _("MHz")); + else + mem_freq = g_strdup_printf("%0.2f %s", (double) gpu->mem_khz_max / 1000, _("MHz")); + } + + str = g_strdup_printf("[%s]\n" + /* Location */ "%s=%s\n" + /* DRM Dev */ "%s=%s\n" + /* Class */ "%s=[%04x] %s\n" + "%s" + /* Revision */ "%s=%02x\n" + "[%s]\n" + /* Core freq */ "%s=%s\n" + /* Mem freq */ "%s=%s\n" + /* NV */ "%s" + /* PCIe */ "%s" + "[%s]\n" + /* Driver */ "%s=%s\n" + /* Modules */ "%s=%s\n", + _("Device Information"), + _("Location"), gpu->location, + _("DRM Device"), drm_path, + _("Class"), p->class, p->class_str, + vendor_device_str, + _("Revision"), p->revision, + _("Clocks"), + _("Core"), freq, + _("Memory"), mem_freq, + nv_str, + pcie_str, + _("Driver"), + _("In Use"), (p->driver) ? p->driver : _("(Unknown)"), + _("Kernel Modules"), (p->driver_list) ? p->driver_list : _("(Unknown)") + ); + + moreinfo_add_with_prefix("DEV", key, str); /* str now owned by morinfo */ + + g_free(drm_path); + g_free(pcie_str); + g_free(nv_str); + g_free(vendor_device_str); + g_free(name); + g_free(key); +} + +int _dt_soc_gpu(gpud *gpu) { + static char UNKSOC[] = "(Unknown)"; /* don't translate this */ + gchar *vendor = gpu->vendor_str; + gchar *device = gpu->device_str; + if (vendor == NULL) vendor = UNKSOC; + if (device == NULL) device = UNKSOC; + gchar *freq = g_strdup(_("(Unknown)")); + if (gpu->khz_max > 0) { + if (gpu->khz_min > 0) + freq = g_strdup_printf("%0.2f-%0.2f %s", (double) gpu->khz_min / 1000, (double) gpu->khz_max / 1000, _("MHz")); + else + freq = g_strdup_printf("%0.2f %s", (double) gpu->khz_max / 1000, _("MHz")); + } + gchar *key = g_strdup(gpu->id); + + gchar *name = NULL; + gchar *vtag = vendor_match_tag(gpu->vendor_str, params.fmt_opts); + if (vtag) { + name = g_strdup_printf("%s %s", vtag, device); + } else { + name = (vendor == UNKSOC && device == UNKSOC) + ? g_strdup(_("Unknown integrated GPU")) + : g_strdup_printf("%s %s", vendor, device); + } + g_free(vtag); + + gchar *opp_str; + if (gpu->dt_opp) { + static const char *freq_src[] = { + N_("clock-frequency property"), + N_("Operating Points (OPPv1)"), + N_("Operating Points (OPPv2)"), + }; + opp_str = g_strdup_printf("[%s]\n" + /* MinFreq */ "%s=%d %s\n" + /* MaxFreq */ "%s=%d %s\n" + /* Latency */ "%s=%d %s\n" + /* Source */ "%s=%s\n", + _("Frequency Scaling"), + _("Minimum"), gpu->dt_opp->khz_min, _("kHz"), + _("Maximum"), gpu->dt_opp->khz_max, _("kHz"), + _("Transition Latency"), gpu->dt_opp->clock_latency_ns, _("ns"), + _("Source"), _(freq_src[gpu->dt_opp->version]) ); + } else + opp_str = strdup(""); + + gpu_summary_add((gpu->nice_name) ? gpu->nice_name : name); + gpu_list = h_strdup_cprintf("$!%s$%s=%s\n", gpu_list, key, key, name); + gchar *str = g_strdup_printf("[%s]\n" + /* Location */ "%s=%s\n" + /* Vendor */ "$^$%s=%s\n" + /* Device */ "%s=%s\n" + "[%s]\n" + /* Freq */ "%s=%s\n" + /* opp-v2 */ "%s" + "[%s]\n" + /* Path */ "%s=%s\n" + /* Compat */ "%s=%s\n" + /* Status */ "%s=%s\n" + /* Name */ "%s=%s\n", + _("Device Information"), + _("Location"), gpu->location, + _("Vendor"), vendor, + _("Device"), device, + _("Clocks"), + _("Core"), freq, + opp_str, + _("Device Tree Node"), + _("Path"), gpu->dt_path, + _("Compatible"), gpu->dt_compat, + _("Status"), gpu->dt_status, + _("Name"), gpu->dt_name + ); + moreinfo_add_with_prefix("DEV", key, str); /* str now owned by morinfo */ + g_free(freq); + g_free(opp_str); + return 1; +} + +void scan_gpu_do(void) { + if (gpu_summary) + g_free(gpu_summary); + if (gpu_list) { + moreinfo_del_with_prefix("DEV:GPU"); + g_free(gpu_list); + } + gpu_summary = strdup(""); + gpu_list = g_strdup_printf("[%s]\n", _("GPUs")); + + gpud *gpus = gpu_get_device_list(); + gpud *curr = gpus; + + int c = gpud_list_count(gpus); + + if (c > 0) { + while(curr) { + if (curr->pci_dev) { + _gpu_pci_dev(curr); + } + if (curr->dt_compat) { + _dt_soc_gpu(curr); + } + curr=curr->next; + } + } + gpud_list_free(gpus); + + if (c) + gpu_list = g_strconcat(gpu_list, "[$ShellParam$]\n", "ViewType=1\n", NULL); + else { + /* NO GPU? */ + gpu_list = g_strconcat(gpu_list, _("No GPU devices found"), "=\n", NULL); + } +} diff --git a/modules/devices/ia64/processor.c b/modules/devices/ia64/processor.c index c4d06a71..f31813bc 100644 --- a/modules/devices/ia64/processor.c +++ b/modules/devices/ia64/processor.c @@ -1,10 +1,10 @@ /* * HardInfo - Displays System Information - * Copyright (C) 2003-2006 Leandro A. F. Pereira + * Copyright (C) 2003-2006 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, version 2. + * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of diff --git a/modules/devices/inputdevices.c b/modules/devices/inputdevices.c index cf1728a9..301641d4 100644 --- a/modules/devices/inputdevices.c +++ b/modules/devices/inputdevices.c @@ -1,10 +1,10 @@ /* * HardInfo - Displays System Information - * Copyright (C) 2003-2006 Leandro A. F. Pereira + * Copyright (C) 2003-2006 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, version 2. + * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -20,6 +20,7 @@ #include "hardinfo.h" #include "devices.h" +#include "usb_util.h" gchar *input_icons = NULL; @@ -27,113 +28,143 @@ static struct { char *name; char *icon; } input_devices[] = { + { NULL, "module.png" }, // UNKNOWN { "Keyboard", "keyboard.png" }, { "Joystick", "joystick.png" }, { "Mouse", "mouse.png" }, - { "Speaker", "audio.png" }, - { "Unknown", "module.png" }, + { "Speaker", "audio.png" }, + { "Audio", "audio.png" } }; +// source: https://elixir.bootlin.com/linux/v5.9/source/include/uapi/linux/input.h#L251 +static const gchar *bus_types[] = { + NULL, "PCI", "ISA PnP", "USB", // 0x0 - 0x3 + "HIL", "Bluetooth", "Virtual", NULL, // 0x4 - 0x7 + NULL, NULL, NULL, NULL, // 0x8 - 0xB + NULL, NULL, NULL, NULL, // 0xC - 0xF + "ISA", "i8042", "XT Keyboard bus", "RS232", // 0x10 - 0x13 + "Game port", "Parallel port", "Amiga bus", "ADB", // 0x14 - 0x17 + "I²C", "HOST", "GSC", "Atari bus", // 0x18 - 0x1B + "SPI", "RMI", "CEC", "Intel ISHTP" // 0x1C - 0x1F +}; + +#define UNKWNIFNULL(f) ((f) ? f : _("(Unknown)")) +#define EMPTYIFNULL(f) ((f) ? f : "") + void __scan_input_devices(void) { FILE *dev; gchar buffer[1024]; + vendor_list vl = NULL; gchar *tmp, *name = NULL, *phys = NULL; + gchar *vendor_str = NULL, *product_str = NULL, *vendor_tags = NULL; gint bus = 0, vendor = 0, product = 0, version = 0; + const gchar *bus_str = NULL; int d = 0, n = 0; dev = fopen("/proc/bus/input/devices", "r"); if (!dev) - return; + return; if (input_list) { moreinfo_del_with_prefix("DEV:INP"); - g_free(input_list); - g_free(input_icons); + g_free(input_list); + g_free(input_icons); } input_list = g_strdup(""); input_icons = g_strdup(""); while (fgets(buffer, sizeof(buffer), dev)) { - tmp = buffer; - - switch (*tmp) { - case 'N': - tmp = strreplacechr(tmp + strlen("N: Name="), "=", ':'); - name = g_strdup(tmp); - remove_quotes(name); - break; - case 'P': - phys = g_strdup(tmp + strlen("P: Phys=")); - break; - case 'I': - sscanf(tmp, "I: Bus=%x Vendor=%x Product=%x Version=%x", - &bus, &vendor, &product, &version); - break; - case 'H': - if (strstr(tmp, "kbd")) - d = 0; //INPUT_KEYBOARD; - else if (strstr(tmp, "js")) - d = 1; //INPUT_JOYSTICK; - else if (strstr(tmp, "mouse")) - d = 2; //INPUT_MOUSE; - else - d = 4; //INPUT_UNKNOWN; - break; - case '\n': - if (name && strstr(name, "PC Speaker")) { - d = 3; // INPUT_PCSPKR - } - - tmp = g_strdup_printf("INP%d", ++n); - input_list = h_strdup_cprintf("$%s$%s=\n", - input_list, - tmp, name); - input_icons = h_strdup_cprintf("Icon$%s$%s=%s\n", - input_icons, - tmp, name, - input_devices[d].icon); - - const gchar *v_url = (gchar*)vendor_get_url(name); - const gchar *v_name = (gchar*)vendor_get_name(name); - gchar *v_str = NULL; - if (v_url != NULL) - v_str = g_strdup_printf("[0x%x] %s (%s)", vendor, v_name, v_url); - else - v_str = g_strdup_printf("0x%x", vendor); - v_str = hardinfo_clean_value(v_str, 1); - name = hardinfo_clean_value(name, 1); - - gchar *strhash = g_strdup_printf("[%s]\n" - /* Name */ "%s=%s\n" - /* Type */ "%s=%s\n" - /* Bus */ "%s=0x%x\n" - /* Vendor */ "%s=%s\n" - /* Product */"%s=0x%x\n" - /* Version */"%s=0x%x\n", - _("Device Information"), - _("Name"), name, - _("Type"), input_devices[d].name, - _("Bus"), bus, - _("Vendor"), v_str, - _("Product"), product, - _("Version"), version ); - - if (phys && phys[1] != 0) { - strhash = h_strdup_cprintf("%s=%s\n", strhash, _("Connected to"), phys); + tmp = buffer; + + switch (*tmp) { + case 'N': + tmp = strreplacechr(tmp + strlen("N: Name="), "=", ':'); + name = g_strdup(tmp); + remove_quotes(name); + break; + case 'P': + phys = g_strdup(tmp + strlen("P: Phys=")); + break; + case 'I': + sscanf(tmp, "I: Bus=%x Vendor=%x Product=%x Version=%x", + &bus, &vendor, &product, &version); + break; + case 'H': + if (strstr(tmp, "kbd")) + d = 1; //INPUT_KEYBOARD; + else if (strstr(tmp, "js")) + d = 2; //INPUT_JOYSTICK; + else if (strstr(tmp, "mouse")) + d = 3; //INPUT_MOUSE; + else + d = 0; //INPUT_UNKNOWN; + break; + case '\n': + if (name && strstr(name, "PC Speaker")) { + d = 4; // INPUT_PCSPKR + } + if (d == 0 && g_strcmp0(phys, "ALSA")) { + d = 5; // INPUT_AUDIO + } + + if (vendor > 0 && product > 0 && g_str_has_prefix(phys, "usb-")) { + usb_lookup_ids_vendor_product_str(vendor, product, &vendor_str, &product_str); + } + + if (bus >= 0 && (guint)bus < sizeof(bus_types) / sizeof(gchar*)) { + bus_str = bus_types[bus]; + } + + vl = vendor_list_remove_duplicates_deep(vendors_match(name, vendor_str, NULL)); + vendor_tags = vendor_list_ribbon(vl, params.fmt_opts); + + tmp = g_strdup_printf("INP%d", ++n); + input_list = h_strdup_cprintf("$%s$%s=%s|%s\n", + input_list, + tmp, name, EMPTYIFNULL(vendor_tags), + EMPTYIFNULL(input_devices[d].name)); + input_icons = h_strdup_cprintf("Icon$%s$%s=%s\n", + input_icons, + tmp, name, + input_devices[d].icon); + + gchar *strhash = g_strdup_printf("[%s]\n" + /* Name */ "$^$%s=%s\n" + /* Type */ "%s=%s\n" + /* Bus */ "%s=[0x%x] %s\n" + /* Vendor */ "$^$%s=[0x%x] %s\n" + /* Product */"%s=[0x%x] %s\n" + /* Version */"%s=0x%x\n", + _("Device Information"), + _("Name"), name, + _("Type"), UNKWNIFNULL(input_devices[d].name), + _("Bus"), bus, UNKWNIFNULL(bus_str), + _("Vendor"), vendor, UNKWNIFNULL(vendor_str), + _("Product"), product, UNKWNIFNULL(product_str), + _("Version"), version ); + + if (phys && phys[1] != 0) { + strhash = h_strdup_cprintf("%s=%s\n", strhash, _("Connected to"), phys); + } + + if (phys && strstr(phys, "ir")) { + strhash = h_strdup_cprintf("%s=%s\n", strhash, _("InfraRed port"), _("Yes") ); + } + + moreinfo_add_with_prefix("DEV", tmp, strhash); + g_free(tmp); + g_free(phys); + g_free(name); + g_free(vendor_str); + g_free(vendor_tags); + g_free(product_str); + bus_str = NULL; + vendor_str = NULL; + product_str = NULL; + vendor_tags = NULL; } - - if (phys && strstr(phys, "ir")) { - strhash = h_strdup_cprintf("%s=%s\n", strhash, _("InfraRed port"), _("Yes") ); - } - - moreinfo_add_with_prefix("DEV", tmp, strhash); - g_free(tmp); - g_free(v_str); - g_free(phys); - g_free(name); - } } fclose(dev); diff --git a/modules/devices/loongarch64/processor.c b/modules/devices/loongarch64/processor.c new file mode 100644 index 00000000..08f3645e --- /dev/null +++ b/modules/devices/loongarch64/processor.c @@ -0,0 +1,90 @@ +/* + * HardInfo - Displays System Information + * Copyright (C) 2003-2006 L. A. F. Pereira + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 2 or later. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include "hardinfo.h" +#include "devices.h" +#include "cpu_util.h" + +GSList * +processor_scan(void) +{ + Processor *processor; + FILE *cpuinfo; + gchar buffer[128]; + + cpuinfo = fopen(PROC_CPUINFO, "r"); + if (!cpuinfo) + return NULL; + + processor = g_new0(Processor, 1); + while (fgets(buffer, 128, cpuinfo)) { + gchar **tmp = g_strsplit(buffer, ":", 2); + + if (tmp[0] && tmp[1]) { + tmp[0] = g_strstrip(tmp[0]); + tmp[1] = g_strstrip(tmp[1]); + + get_str("system type", processor->vendor_id); + get_str("CPU Family", processor->family); + get_str("Model Name", processor->model_name); + get_int("CPU Revision", processor->revision); + get_float("CPU MHz", processor->cpu_mhz); + get_float("BogoMIPS", processor->bogomips); + get_str("Features", processor->features); + } + g_strfreev(tmp); + } + + fclose(cpuinfo); + + return g_slist_append(NULL, processor); +} + +gchar *processor_name(GSList * processors) { + return processor_name_default(processors); +} + +gchar *processor_describe(GSList * processors) { + return processor_describe_default(processors); +} + +gchar * +processor_get_info(GSList *processors) +{ + Processor *processor = (Processor *)processors->data; + + return g_strdup_printf("[%s]\n" + "%s=%s\n" /* vendor */ + "%s=%s\n" /* family */ + "%s=%s\n" /* name */ + "%s=%d\n" /* revision */ + "%s=%.2f %s\n" /* frequency */ + "%s=%.2f\n" /* bogoMIPS */ + "%s=%s\n" /* features */ + "%s=%s\n", /* byte order */ + _("Processor"), + _("System Type"), processor->vendor_id, + _("Family"), processor->family, + _("Model"), processor->model_name, + _("Revision"), processor->revision, + _("Frequency"), processor->cpu_mhz, _("MHz"), + _("BogoMIPS"), processor->bogomips, + _("Features"), processor->features, + _("Byte Order"), byte_order_str() + ); +} diff --git a/modules/devices/m68k/processor.c b/modules/devices/m68k/processor.c index e030732a..a9d71835 100644 --- a/modules/devices/m68k/processor.c +++ b/modules/devices/m68k/processor.c @@ -1,10 +1,10 @@ /* * HardInfo - Displays System Information - * Copyright (C) 2003-2006 Leandro A. F. Pereira + * Copyright (C) 2003-2006 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, version 2. + * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of diff --git a/modules/devices/mips/processor.c b/modules/devices/mips/processor.c index b31af7dd..112a3c3b 100644 --- a/modules/devices/mips/processor.c +++ b/modules/devices/mips/processor.c @@ -1,10 +1,10 @@ /* * HardInfo - Displays System Information - * Copyright (C) 2003-2006 Leandro A. F. Pereira + * Copyright (C) 2003-2006 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, version 2. + * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of diff --git a/modules/devices/monitors.c b/modules/devices/monitors.c new file mode 100644 index 00000000..02fb1d67 --- /dev/null +++ b/modules/devices/monitors.c @@ -0,0 +1,515 @@ +/* + * HardInfo - Displays System Information + * Copyright (C) 2003-2019 L. A. F. Pereira + * Copyright (C) 2019 Burt P. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 2 or later. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include "devices.h" +#include "util_sysobj.h" +#include "util_edid.h" +#include "util_ids.h" + +static const char monitor_icon[] = "monitor.png"; + +#define UNKIFNULL2(f) ((f) ? f : _("(Unknown)")) +#define UNKIFEMPTY2(f) ((*f) ? f : _("(Unknown)")) +#define UNSPECIFNULL2(f) ((f) ? f : _("(Unspecified)")) + +gboolean no_monitors = FALSE; + +gchar *edid_ids_file = NULL; +gchar *ieee_oui_ids_file = NULL; + +void find_edid_ids_file() { + if (edid_ids_file) return; + char *file_search_order[] = { + g_build_filename(g_get_user_config_dir(), "hardinfo2", "edid.ids", NULL), + g_build_filename(params.path_data, "edid.ids", NULL), + NULL + }; + int n; + for(n = 0; file_search_order[n]; n++) { + if (!edid_ids_file && !access(file_search_order[n], R_OK)) + edid_ids_file = file_search_order[n]; + else + g_free(file_search_order[n]); + } + auto_free(edid_ids_file); +} + +void find_ieee_oui_ids_file() { + if (ieee_oui_ids_file) return; + char *file_search_order[] = { + g_build_filename(g_get_user_config_dir(), "hardinfo2", "ieee_oui.ids", NULL), + g_build_filename(params.path_data, "ieee_oui.ids", NULL), + NULL + }; + int n; + for(n = 0; file_search_order[n]; n++) { + if (!ieee_oui_ids_file && !access(file_search_order[n], R_OK)) + ieee_oui_ids_file = file_search_order[n]; + else + g_free(file_search_order[n]); + } + auto_free(ieee_oui_ids_file); +} + +typedef struct { + gchar *drm_path; + gchar *drm_connection; + gchar *drm_status; + gchar *drm_enabled; + edid *e; + gchar *_vstr; /* use monitor_vendor_str() */ +} monitor; +#define monitor_new() g_new0(monitor, 1) + +monitor *monitor_new_from_sysfs(const gchar *sysfs_edid_file) { + gchar *edid_bin = NULL; + gsize edid_len = 0; + if (!sysfs_edid_file || !*sysfs_edid_file) return NULL; + monitor *m = monitor_new(); + m->drm_path = g_path_get_dirname(sysfs_edid_file); + m->drm_connection = g_path_get_basename(m->drm_path); + gchar *drm_enabled_file = g_strdup_printf("%s/%s", m->drm_path, "enabled"); + gchar *drm_status_file = g_strdup_printf("%s/%s", m->drm_path, "status"); + g_file_get_contents(drm_enabled_file, &m->drm_enabled, NULL, NULL); + if (m->drm_enabled) g_strstrip(m->drm_enabled); + g_file_get_contents(drm_status_file, &m->drm_status, NULL, NULL); + if (m->drm_status) g_strstrip(m->drm_status); + g_file_get_contents(sysfs_edid_file, &edid_bin, &edid_len, NULL); + if (edid_len) + m->e = edid_new(edid_bin, edid_len); + g_free(drm_enabled_file); + g_free(drm_status_file); + return m; +} + +void monitor_free(monitor *m) { + if (m) { + g_free(m->_vstr); + g_free(m->drm_connection); + edid_free(m->e); + g_free(m); + } +} + +gchar *monitor_vendor_str(monitor *m, gboolean include_value, gboolean link_name) { + if (!m || !m->e) return NULL; + edid_ven ven = m->e->ven; + gchar v[20] = "", t[4] = ""; + ids_query_result result;// = {}; + + memset(&result,0,sizeof(ids_query_result)); + if (ven.type == VEN_TYPE_PNP) { + strcpy(v, ven.pnp); + strcpy(t, "PNP"); + } else if (ven.type == VEN_TYPE_OUI) { + strcpy(v, ven.oui_str); + strcpy(t, "OUI"); + } + + if (!m->_vstr) { + if (ven.type == VEN_TYPE_PNP) { + if (!edid_ids_file) + find_edid_ids_file(); + scan_ids_file(edid_ids_file, v, &result, -1); + if (result.results[0]) + m->_vstr = g_strdup(result.results[0]); + } else if (ven.type == VEN_TYPE_OUI) { + if (!ieee_oui_ids_file) + find_ieee_oui_ids_file(); + scan_ids_file(ieee_oui_ids_file, v, &result, -1); + if (result.results[0]) + m->_vstr = g_strdup(result.results[0]); + } + } + + gchar *ret = NULL; + if (include_value) + ret = g_strdup_printf("[%s:%s]", t, v); + if (m->_vstr) { + if (link_name) { + gchar *lv = vendor_get_link(m->_vstr); + ret = appfsp(ret, "%s", lv); + g_free(lv); + } else + ret = appfsp(ret, "%s", m->_vstr); + } else if (!include_value && ven.type == VEN_TYPE_PNP) { + ret = appfsp(ret, "%s", ven.pnp); + } else + ret = appfsp(ret, "%s", _("(Unknown)")); + return ret; +} + +gchar *monitor_name(monitor *m, gboolean include_vendor) { + if (!m) return NULL; + gchar *desc = NULL; + edid *e = m->e; + if (!e) + return g_strdup(_("(Unknown)")); + + if (include_vendor) { + if (e->ven.type != VEN_TYPE_INVALID) { + gchar *vstr = monitor_vendor_str(m, FALSE, FALSE); + gchar *vtag = vendor_match_tag(vstr, params.fmt_opts); + desc = appfsp(desc, "%s", vtag ? vtag : vstr); + g_free(vstr); + g_free(vtag); + } else + desc = appfsp(desc, "%s", "Unknown"); + } + + if (e->img_max.diag_in) + desc = appfsp(desc, "%s", e->img_max.class_inch); + + if (e->name) + desc = appfsp(desc, "%s", e->name); + else + desc = appfsp(desc, "%s %s", e->a_or_d ? "Digital" : "Analog", "Display"); + + return desc; +} + +gchar **get_output_lines(const char *cmd_line) { + gboolean spawned; + gchar *out, *err; + gchar **ret = NULL; + + spawned = g_spawn_command_line_sync(cmd_line, + &out, &err, NULL, NULL); + if (spawned) { + ret = g_strsplit(out, "\n", -1); + g_free(out); + g_free(err); + } + return ret; +} + +static gchar *tag_make_safe_inplace(gchar *tag) { + if (!tag) + return tag; + if (!g_utf8_validate(tag, -1, NULL)) + return tag; //TODO: reconsider + gchar *p = tag, *pd = tag; + while(*p) { + gchar *np = g_utf8_next_char(p); + gunichar c = g_utf8_get_char_validated(p, -1); + int l = g_unichar_to_utf8(c, NULL); + if (l == 1 && g_unichar_isalnum(c)) { + g_unichar_to_utf8(c, pd); + } else { + *pd = '_'; + } + p = np; + pd++; + } + return tag; +} + +static gchar *make_edid_section(monitor *m) { + int i; + edid *e = m->e; + if (e->len) { + gchar *vstr = monitor_vendor_str(m, TRUE, FALSE); + + gchar *dom = NULL; + if (!e->dom.is_model_year && e->dom.week && e->dom.year) + dom = g_strdup_printf(_("Week %d of %d"), e->dom.week, e->dom.year); + else if (e->dom.year) + dom = g_strdup_printf("%d", e->dom.year); + + gchar *bpcc = NULL; + if (e->bpc) + bpcc = g_strdup_printf("%d", e->bpc); + + int aok = e->checksum_ok; + if (e->ext_blocks_fail) aok = 0; + gchar *csum = aok ? _("Ok") : _("Fail"); + + gchar *iface; + if (e->interface && e->di.exists) { + gchar *tmp = g_strdup_printf("[%x] %s\n[DI-EXT:%x] %s", + e->interface, _(edid_interface(e->interface)), + e->di.interface, _(edid_di_interface(e->di.interface)) ); + iface = gg_key_file_parse_string_as_value(tmp, '|'); + g_free(tmp); + } else if (e->di.exists) { + iface = g_strdup_printf("[DI-EXT:%x] %s", + e->di.interface, _(edid_di_interface(e->di.interface)) ); + } else { + iface = g_strdup_printf("[%x] %s", + e->interface, + e->interface ? _(edid_interface(e->interface)) : _("(Unspecified)") ); + } + + gchar *d_list, *ext_list, *dtd_list, *cea_list, + *etb_list, *std_list, *svd_list, *sad_list, + *didt_list, *did_string_list; + + etb_list = NULL; + for(i = 0; i < e->etb_count; i++) { + char *desc = edid_output_describe(&e->etbs[i]); + etb_list = appfnl(etb_list, "etb%d=%s", i, desc); + g_free(desc); + } + if (!etb_list) etb_list = g_strdup_printf("%s=\n", _("(Empty List)")); + + std_list = NULL; + for(i = 0; i < e->std_count; i++) { + char *desc = edid_output_describe(&e->stds[i].out); + std_list = appfnl(std_list, "std%d=%s", i, desc); + g_free(desc); + } + if (!std_list) std_list = g_strdup_printf("%s=\n", _("(Empty List)")); + + d_list = NULL; + for(i = 0; i < 4; i++) { + char *desc = edid_base_descriptor_describe(&e->d[i]); + d_list = appfnl(d_list, "descriptor%d=%s", i, desc); + g_free(desc); + } + if (!d_list) d_list = g_strdup_printf("%s=\n", _("(Empty List)")); + + ext_list = NULL; + for(i = 0; i < e->ext_blocks; i++) { + int type = e->u8[(i+1)*128]; + int version = e->u8[(i+1)*128 + 1]; + ext_list = appfnl(ext_list, "ext%d = ([%02x:v%02x] %s) %s", i, + type, version, _(edid_ext_block_type(type)), + e->ext_ok[i] ? "ok" : "fail" + ); + } + if (!ext_list) ext_list = g_strdup_printf("%s=\n", _("(Empty List)")); + + dtd_list = NULL; + for(i = 0; i < e->dtd_count; i++) { + char *desc = edid_dtd_describe(&e->dtds[i], 0); + dtd_list = appfnl(dtd_list, "dtd%d = %s", i, desc); + free(desc); + } + if (!dtd_list) dtd_list = g_strdup_printf("%s=\n", _("(Empty List)")); + + cea_list = NULL; + for(i = 0; i < e->cea_block_count; i++) { + char *desc = edid_cea_block_describe(&e->cea_blocks[i]); + cea_list = appfnl(cea_list, "cea_block%d = %s", i, desc); + } + if (!cea_list) cea_list = g_strdup_printf("%s=\n", _("(Empty List)")); + + svd_list = NULL; + for(i = 0; i < e->svd_count; i++) { + char *desc = edid_output_describe(&e->svds[i].out); + svd_list = appfnl(svd_list, "svd%d=%s", i, desc); + g_free(desc); + } + if (!svd_list) svd_list = g_strdup_printf("%s=\n", _("(Empty List)")); + + sad_list = NULL; + for(i = 0; i < e->sad_count; i++) { + char *desc = edid_cea_audio_describe(&e->sads[i]); + sad_list = appfnl(sad_list, "sad%d=%s", i, desc); + g_free(desc); + } + if (!sad_list) sad_list = g_strdup_printf("%s=\n", _("(Empty List)")); + + didt_list = NULL; + for(i = 0; i < e->didt_count; i++) { + char *desc = edid_output_describe(&e->didts[i]); + didt_list = appfnl(didt_list, "didt%d=%s", i, desc); + g_free(desc); + } + if (!didt_list) didt_list = g_strdup_printf("%s=\n", _("(Empty List)")); + + did_string_list = NULL; + for(i = 0; i < e->did_string_count; i++) { + did_string_list = appfnl(did_string_list, "did_string%d=%s", i, e->did_strings[i].str); + } + if (!did_string_list) did_string_list = g_strdup_printf("%s=\n", _("(Empty List)")); + + gchar *speakers = NULL; + if (e->speaker_alloc_bits) { + gchar *spk_tmp = edid_cea_speaker_allocation_describe(e->speaker_alloc_bits, 0); + speakers = gg_key_file_parse_string_as_value(spk_tmp, '|'); + g_free(spk_tmp); + } else + speakers = g_strdup(_("(Unspecified)")); + + gchar *hex = edid_dump_hex(e, 0, 1); + gchar *hex_esc = gg_key_file_parse_string_as_value(hex, '|'); + g_free(hex); + if (params.markup_ok) + hex = g_strdup_printf("%s", hex_esc); + else + hex = g_strdup(hex_esc); + g_free(hex_esc); + + gchar *ret = g_strdup_printf( + /* extending "Connection" section */ + "%s=%s\n" /* sig type */ + "%s=%s\n" /* interface */ + "%s=%s\n" /* bpcc */ + "%s=%s\n" /* speakers */ + "[%s]\n" + "%s=%s\n" /* base out */ + "%s=%s\n" /* ext out */ + "[%s]\n" + "$^$%s=%s\n" /* vendor */ + "%s=%s\n" /* name */ + "%s=[%04x-%08x] %u-%u\n" /* model, n_serial */ + "%s=%s\n" /* serial */ + "%s=%s\n" /* dom */ + "[%s]\n" + "%s=%d %s\n" /* size */ + "%s=%d.%d\n" /* version */ + "%s=%d\n" /* ext block */ + "%s=%s\n" /* ext to */ + "%s=%s %s\n" /* checksum */ + "[%s]\n%s\n" + "[%s]\n%s\n" + "[%s]\n%s\n" + "[%s]\n%s\n" + "[%s]\n%s\n" + "[%s]\n%s\n" + "[%s]\n%s\n" + "[%s]\n%s\n" + "[%s]\n%s\n" + "[%s]\n%s\n" + "[%s]\n%s=%s\n" + , + _("Signal Type"), e->a_or_d ? _("Digital") : _("Analog"), + _("Interface"), iface, + _("Bits per Color Channel"), UNSPECIFNULL2(bpcc), + _("Speaker Allocation"), speakers, + _("Output (Max)"), + edid_output_src(e->img.src), edid_output_describe(&e->img), + edid_output_src(e->img_max.src), edid_output_describe(&e->img_max), + _("EDID Device"), + _("Vendor"), vstr, + _("Name"), e->name, + _("Model"), e->product, e->n_serial, e->product, e->n_serial, + _("Serial"), UNKIFNULL2(e->serial), + _("Manufacture Date"), UNKIFNULL2(dom), + _("EDID Meta"), + _("Data Size"), e->len, _("bytes"), + _("Version"), (int)e->ver_major, (int)e->ver_minor, + _("Extension Blocks"), e->ext_blocks, + _("Extended to"), e->std ? _(edid_standard(e->std)) : _("(None)"), + _("Checksum"), csum, aok ? "" : problem_marker(), + _("EDID Descriptors"), d_list, + _("Detailed Timing Descriptors (DTD)"), dtd_list, + _("Established Timings Bitmap (ETB)"), etb_list, + _("Standard Timings (STD)"), std_list, + _("E-EDID Extension Blocks"), ext_list, + _("EIA/CEA-861 Data Blocks"), cea_list, + _("EIA/CEA-861 Short Audio Descriptors"), sad_list, + _("EIA/CEA-861 Short Video Descriptors"), svd_list, + _("DisplayID Timings"), didt_list, + _("DisplayID Strings"), did_string_list, + _("Hex Dump"), _("Data"), hex + ); + g_free(bpcc); + g_free(dom); + + g_free(d_list); + g_free(ext_list); + g_free(etb_list); + g_free(std_list); + g_free(dtd_list); + g_free(cea_list); + g_free(sad_list); + g_free(svd_list); + g_free(didt_list); + g_free(did_string_list); + g_free(iface); + g_free(vstr); + g_free(hex); + //printf("ret: %s\n", ret); + return ret; + } else + return g_strdup(""); +} + +gchar *monitors_get_info() { + gchar *icons = g_strdup(""); + gchar *ret = g_strdup_printf("[%s]\n", _("Monitors")); + gchar tag_prefix[] = "DEV"; + + gchar **edid_files = get_output_lines("find /sys/devices -name edid"); + //gchar **edid_files = get_output_lines("find /home/pburt/github/verbose-spork/junk/testing/.testing/edid2/ -name edid.*"); + int i, found = 0; + for(i = 0; edid_files[i]; i++) { + monitor *m = monitor_new_from_sysfs(edid_files[i]); + //if (m && m->e->std < STD_DISPLAYID) continue; + //if (m && !m->e->interface) continue; + //if (m && m->e->interface != 1) continue; + if (m && !SEQ(m->drm_status, "disconnected")) { + gchar *tag = g_strdup_printf("%d-%s", found, m->drm_connection); + tag_make_safe_inplace(tag); + gchar *desc = monitor_name(m, TRUE); + gchar *edid_section = NULL; + edid *e = m->e; + if (e && e->checksum_ok) + edid_section = make_edid_section(m); + + gchar *details = g_strdup_printf("[%s]\n" + "%s=%s\n" + "%s=%s %s\n" + "%s\n", + _("Connection"), + _("DRM"), m->drm_connection, + _("Status"), m->drm_status, m->drm_enabled, + edid_section ? edid_section : "" + ); + moreinfo_add_with_prefix(tag_prefix, tag, details); /* moreinfo now owns *details */ + ret = h_strdup_cprintf("$!%s$%s=%s\n", + ret, tag, m->drm_connection, desc); + icons = h_strdup_cprintf("Icon$%s$=%s\n", icons, tag, monitor_icon); + g_free(desc); + g_free(edid_section); + found++; + } + monitor_free(m); + } + g_strfreev(edid_files); + + no_monitors = FALSE; + if(!found) { + no_monitors = TRUE; + g_free(ret); + ret = g_strdup_printf("[%s]\n%s=%s\n" "[$ShellParam$]\nViewType=0\n", + _("Monitors"), _("Result"), _("(Empty)") ); + } else { + ret = h_strdup_cprintf( + "[$ShellParam$]\nViewType=1\n" + "ColumnTitle$TextValue=%s\n" /* DRM connection */ + "ColumnTitle$Value=%s\n" /* Name */ + "ShowColumnHeaders=true\n" + "%s", + ret, + _("Connection"), + _("Name"), + icons + ); + } + + return ret; +} + +gboolean monitors_hinote(const char **msg) { + PARAM_NOT_UNUSED(msg); + return FALSE; +} diff --git a/modules/devices/parisc/processor.c b/modules/devices/parisc/processor.c index 9ca38d12..c749bc5a 100644 --- a/modules/devices/parisc/processor.c +++ b/modules/devices/parisc/processor.c @@ -1,10 +1,10 @@ /* * HardInfo - Displays System Information - * Copyright (C) 2003-2006 Leandro A. F. Pereira + * Copyright (C) 2003-2006 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, version 2. + * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of diff --git a/modules/devices/pci.c b/modules/devices/pci.c index c1965a63..859fa339 100644 --- a/modules/devices/pci.c +++ b/modules/devices/pci.c @@ -1,10 +1,10 @@ /* * HardInfo - Displays System Information - * Copyright (C) 2003-2006 Leandro A. F. Pereira + * Copyright (C) 2003-2006 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, version 2. + * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -16,239 +16,185 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ -/* - * TODO: This thing must be rewritten. We really should have a struct with all the - * PCI stuff we'll present to the user, and hash them by the PCI ID - * (domain:bus:device.function). - * This way we'll have ways to better organize the output, instead of relying - * on the order the information appears on lspci's output. - * Also, the "Resources" thing might be better implemented (and we won't need - * copies of information scattered everywhere like we do today). - */ - #include #include "hardinfo.h" #include "devices.h" - -GHashTable *_pci_devices = NULL; - -void -scan_pci_do(void) +#include "pci_util.h" + +#define UNKIFNULL_AC(f) (f != NULL) ? f : _("(Unknown)"); + +static const struct { + const gchar *icon; + uint32_t class; +} class2icon[] = { + { .class = 0x0200, .icon = "network-interface.png" }, + { .class = 0x0c03, .icon = "usb.png" }, + { .class = 0x0403, .icon = "audio.png" }, + { .class = 0x0805, .icon = "usbfldisk.png" }, + { .class = 0x0d11, .icon = "bluetooth.png" }, + { .class = 0x0703, .icon = "modem.png" }, + { .class = 0x01, .icon = "hdd.png" }, + { .class = 0x02, .icon = "network.png" }, + { .class = 0x03, .icon = "monitor.png" }, + { .class = 0x05, .icon = "memory.png" }, + { .class = 0x07, .icon = "network-connections.png" }, + { .class = 0x09, .icon = "inputdevices.png" }, + { .class = 0x10, .icon = "cryptohash.png" }, +}; + +static const gchar *find_icon_for_class(uint32_t class) { - FILE *lspci; - gchar buffer[256], *buf, *strhash = NULL, *strdevice = NULL; - gchar *category = NULL, *name = NULL, *icon, *lspci_path, *command_line = NULL; - gint n = 0, x = 0; + guint i; + + for (i = 0; i < G_N_ELEMENTS(class2icon); i++) { + if (class2icon[i].class <= 0xff) { + if ((class & 0xff00) == class2icon[i].class << 8) + return class2icon[i].icon; + } else if (class == class2icon[i].class) { + return class2icon[i].icon; + } + } - if ((lspci_path = find_program("lspci")) == NULL) { - goto pci_error; + return "devices.png"; +} + +static gchar *_pci_dev(const pcid *p, gchar *icons) { + gchar *str; + const gchar *class, *vendor, *svendor, *product, *sproduct, *lproduct; + gchar *name, *key; + + gboolean device_is_sdevice = (p->vendor_id == p->sub_vendor_id && p->device_id == p->sub_device_id); + + class = UNKIFNULL_AC(p->class_str); + vendor = UNKIFNULL_AC(p->vendor_id_str); + svendor = UNKIFNULL_AC(p->sub_vendor_id_str); + product = UNKIFNULL_AC(p->device_id_str); + sproduct = UNKIFNULL_AC(p->sub_device_id_str); + lproduct = p->device_id_str ? p->device_id_str : p->class_str; + lproduct = UNKIFNULL_AC(lproduct); + + gchar *ven_tag = vendor_match_tag(p->vendor_id_str, params.fmt_opts); + gchar *sven_tag = vendor_match_tag(p->sub_vendor_id_str, params.fmt_opts); + if (ven_tag) { + if (sven_tag && p->vendor_id != p->sub_vendor_id) { + name = g_strdup_printf("%s %s %s", sven_tag, ven_tag, lproduct); + } else { + name = g_strdup_printf("%s %s", ven_tag, lproduct); + } } else { - command_line = g_strdup_printf("%s -v", lspci_path); + name = g_strdup_printf("%s %s", vendor, lproduct); } + g_free(ven_tag); + g_free(sven_tag); - if (!_pci_devices) { - _pci_devices = g_hash_table_new(g_str_hash, g_str_equal); - } + key = g_strdup_printf("PCI%04x:%02x:%02x.%01x", p->domain, p->bus, p->device, p->function); - buf = g_build_filename(g_get_home_dir(), ".hardinfo", "pci.ids", NULL); - if (!g_file_test(buf, G_FILE_TEST_EXISTS)) { - DEBUG("using system-provided PCI IDs"); - g_free(buf); - if (!(lspci = popen(command_line, "r"))) { - goto pci_error; - } + pci_list = h_strdup_cprintf("$%s$%04x:%02x:%02x.%01x=%s\n", pci_list, key, p->domain, p->bus, p->device, p->function, name); + icons = h_strdup_cprintf("Icon$%s$%04x:%02x:%02x.%01x=%s\n", icons, key, p->domain, p->bus, p->device, p->function, find_icon_for_class(p->class)); + + gchar *vendor_device_str; + if (device_is_sdevice) { + vendor_device_str = g_strdup_printf( + /* Vendor */ "$^$%s=[%04x] %s\n" + /* Device */ "%s=[%04x] %s\n", + _("Vendor"), p->vendor_id, vendor, + _("Device"), p->device_id, product); } else { - gchar *tmp; - - tmp = g_strdup_printf("%s -i '%s'", command_line, buf); - g_free(buf); - buf = tmp; - - DEBUG("using updated PCI IDs (from %s)", buf); - if (!(lspci = popen(tmp, "r"))) { - g_free(buf); - goto pci_error; - } else { - g_free(buf); - } + vendor_device_str = g_strdup_printf( + /* Vendor */ "$^$%s=[%04x] %s\n" + /* Device */ "%s=[%04x] %s\n" + /* Sub-device vendor */ "$^$%s=[%04x] %s\n" + /* Sub-device */ "%s=[%04x] %s\n", + _("Vendor"), p->vendor_id, vendor, + _("Device"), p->device_id, product, + _("SVendor"), p->sub_vendor_id, svendor, + _("SDevice"), p->sub_device_id, sproduct); } - while (fgets(buffer, 256, lspci)) { - buf = g_strstrip(buffer); - - if (!strncmp(buf, "Flags", 5)) { - gint irq = 0, freq = 0, latency = 0, i; - gchar **list; - gboolean bus_master; - - buf += 7; - - bus_master = FALSE; - - list = g_strsplit(buf, ", ", 10); - for (i = 0; i <= 10; i++) { - if (!list[i]) - break; - - if (!strncmp(list[i], "IRQ", 3)) - sscanf(list[i], "IRQ %d", &irq); - else if (strstr(list[i], "Mhz")) - sscanf(list[i], "%dMhz", &freq); - else if (!strncmp(list[i], "bus master", 10)) - bus_master = TRUE; - else if (!strncmp(list[i], "latency", 7)) - sscanf(list[i], "latency %d", &latency); - } - g_strfreev(list); - - if (irq) - strdevice = h_strdup_cprintf("%s=%d\n", strdevice, _("IRQ"), irq); - if (freq) - strdevice = h_strdup_cprintf("%s=%d %s\n", strdevice, _("Frequency"), freq, _("MHz") ); - if (latency) - strdevice = h_strdup_cprintf("%s=%d\n", strdevice, _("Latency"), latency); - - strdevice = h_strdup_cprintf("%s=%s\n", strdevice, _("Bus Master"), bus_master ? _("Yes") : _("No") ); - } else if (!strncmp(buf, "Kernel modules", 14)) { - WALK_UNTIL(' '); - WALK_UNTIL(':'); - buf++; - - strdevice = h_strdup_cprintf("%s=%s\n", strdevice, _("Kernel modules"), buf); - } else if (!strncmp(buf, "Subsystem", 9)) { - WALK_UNTIL(' '); - buf++; - const gchar *oem_vendor_url = vendor_get_url(buf); - if (oem_vendor_url) - strdevice = h_strdup_cprintf(_("%s=%s (%s)\n"), - strdevice, - _("OEM Vendor"), - vendor_get_name(buf), - oem_vendor_url); - } else if (!strncmp(buf, "Capabilities", 12) - && !strstr(buf, "only to root") && - !strstr(buf, "access denied")) { - WALK_UNTIL(' '); - WALK_UNTIL(']'); - buf++; - strdevice = h_strdup_cprintf("Capability#%d=%s\n", strdevice, ++x, buf); - } else if (!strncmp(buf, "Memory at", 9) && strstr(buf, "[size=")) { - gint mem; - gchar unit; - gboolean prefetch; - gboolean _32bit; - - prefetch = strstr(buf, "non-prefetchable") ? FALSE : TRUE; - _32bit = strstr(buf, "32-bit") ? TRUE : FALSE; - - WALK_UNTIL('['); - sscanf(buf, "[size=%d%c", &mem, &unit); - - strdevice = h_strdup_cprintf("%s#%d=%d%cB (%s%s)\n", - strdevice, _("Memory"), ++x, - mem, - (unit == ']') ? ' ' : unit, - _32bit ? "32-bit, " : "", - prefetch ? _("prefetchable") : - _("non-prefetchable") ); - - } else if (!strncmp(buf, "I/O ports at", 12)) { - guint io_addr, io_size; - - sscanf(buf, "I/O ports at %x [size=%d]", &io_addr, &io_size); - - strdevice = - h_strdup_cprintf("%s#%d=0x%x - 0x%x\n", - strdevice, _("I/O ports at"), ++x, io_addr, - io_addr + io_size - 1); - } else if ((buf[0] >= '0' && buf[0] <= '9') && (buf[4] == ':' || buf[2] == ':')) { - gint bus, device, function, domain; - gpointer start, end; - - if (strdevice != NULL && strhash != NULL) { - moreinfo_add_with_prefix("DEV", strhash, strdevice); - g_free(strhash); - g_free(category); - g_free(name); - } - - if (buf[4] == ':') { - sscanf(buf, "%x:%x:%x.%d", &domain, &bus, &device, &function); - } else { - /* lspci without domain field */ - sscanf(buf, "%x:%x.%x", &bus, &device, &function); - domain = 0; - } - - WALK_UNTIL(' '); - - start = buf; - - WALK_UNTIL(':'); - end = buf + 1; - *buf = 0; - - buf = start + 1; - category = g_strdup(buf); - - buf = end; - - if (strstr(category, "RAM memory")) icon = "mem"; - else if (strstr(category, "Multimedia")) icon = "media"; - else if (strstr(category, "USB")) icon = "usb"; - else icon = "pci"; - - name = g_strdup(buf); - g_hash_table_insert(_pci_devices, - g_strdup_printf("0000:%02x:%02x.%x", bus, device, function), - name); - - strhash = g_strdup_printf("PCI%d", n); - strdevice = g_strdup_printf("[%s]\n" - /* Name */ "%s=%s\n" - /* Class */ "%s=%s\n" - /* Domain */ "%s=%d\n" - /* Bus, device, function */ - "%s=%d, %d, %d\n", - _("Device Information"), - _("Name"), name, - _("Class"), category, - _("Domain"), domain, - _("Bus, device, function"), - bus, device, function); - - const gchar *url = vendor_get_url(name); - if (url) { - strdevice = h_strdup_cprintf("%s=%s (%s)\n", - strdevice, - _("Vendor"), - vendor_get_name(name), - url); - } - - g_hash_table_insert(_pci_devices, - g_strdup_printf("0000:%02x:%02x.%x", bus, device, function), - g_strdup(name)); - - pci_list = h_strdup_cprintf("$PCI%d$%s=%s\n", pci_list, n, category, name); - - n++; - } + gchar *pcie_str; + if (p->pcie_width_curr) { + pcie_str = g_strdup_printf("[%s]\n" + /* Width */ "%s=x%u\n" + /* Width (max) */ "%s=x%u\n" + /* Speed */ "%s=%0.1f %s\n" + /* Speed (max) */ "%s=%0.1f %s\n", + _("PCI Express"), + _("Link Width"), p->pcie_width_curr, + _("Maximum Link Width"), p->pcie_width_max, + _("Link Speed"), p->pcie_speed_curr, _("GT/s"), + _("Maximum Link Speed"), p->pcie_speed_max, _("GT/s") ); + } else + pcie_str = strdup(""); + + str = g_strdup_printf("[%s]\n" + /* Class */ "%s=[%04x] %s\n" + "%s" + /* Revision */ "%s=%02x\n" + /* PCIE? */ "%s" + "[%s]\n" + /* Driver */ "%s=%s\n" + /* Modules */ "%s=%s\n" + "[%s]\n" + /* Domain */ "%s=%04x\n" + /* Bus */ "%s=%02x\n" + /* Device */ "%s=%02x\n" + /* Function */ "%s=%01x\n", + _("Device Information"), + _("Class"), p->class, class, + vendor_device_str, + _("Revision"), p->revision, + pcie_str, + _("Driver"), + _("In Use"), (p->driver) ? p->driver : _("(Unknown)"), + _("Kernel Modules"), (p->driver_list) ? p->driver_list : _("(Unknown)"), + _("Connection"), + _("Domain"), p->domain, + _("Bus"), p->bus, + _("Device"), p->device, + _("Function"), p->function + ); + + g_free(pcie_str); + + moreinfo_add_with_prefix("DEV", key, str); /* str now owned by morinfo */ + + g_free(vendor_device_str); + g_free(name); + g_free(key); + + return icons; +} + +void scan_pci_do(void) { + + if (pci_list) { + moreinfo_del_with_prefix("DEV:PCI"); + g_free(pci_list); + } + pci_list = g_strdup_printf("[%s]\n", _("PCI Devices")); + + gchar *pci_icons = g_strdup(""); + + pcid_list list = pci_get_device_list(0,0); + list = g_slist_sort(list, (GCompareFunc)pcid_cmp_by_addy); + GSList *l = list; + + int c = 0; + while(l) { + pcid *curr = (pcid*)l->data; + pci_icons = _pci_dev(curr, pci_icons); + c++; + l=l->next; } + pcid_list_free(list); - if (pclose(lspci)) { -pci_error: - /* error (no pci, perhaps?) */ + if (c) { + pci_list = g_strconcat(pci_list, "[$ShellParam$]\n", "ViewType=1\n", pci_icons, NULL); + } else { + /* NO PCI? */ pci_list = g_strconcat(pci_list, _("No PCI devices found"), "=\n", NULL); - } else if (strhash) { - /* insert the last device */ - moreinfo_add_with_prefix("DEV", strhash, strdevice); - g_free(strhash); - g_free(category); - g_free(name); } - g_free(lspci_path); - g_free(command_line); + g_free(pci_icons); } diff --git a/modules/devices/ppc/processor.c b/modules/devices/ppc/processor.c index 3360a136..12c575a6 100644 --- a/modules/devices/ppc/processor.c +++ b/modules/devices/ppc/processor.c @@ -1,10 +1,10 @@ /* * HardInfo - Displays System Information - * Copyright (C) 2003-2006 Leandro A. F. Pereira + * Copyright (C) 2003-2006 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, version 2. + * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of diff --git a/modules/devices/printers.c b/modules/devices/printers.c index 77b52a43..fb9389ac 100644 --- a/modules/devices/printers.c +++ b/modules/devices/printers.c @@ -1,10 +1,10 @@ /* * HardInfo - Displays System Information - * Copyright (C) 2003-2007 Leandro A. F. Pereira + * Copyright (C) 2003-2007 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, version 2. + * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -16,6 +16,10 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ +#ifndef _XOPEN_SOURCE + #define _XOPEN_SOURCE +#endif + #include #include #include @@ -33,7 +37,7 @@ struct _CUPSDest { char *name, *instance; int is_default; int num_options; - CUPSOption *options; + CUPSOption *options; }; static int (*cups_dests_get) (CUPSDest **dests) = NULL; @@ -49,13 +53,13 @@ init_cups(void) if (!(cups_dests_get && cups_dests_free)) { int i; - + for (i = 0; libcups[i] != NULL; i++) { cups = g_module_open(libcups[i], G_MODULE_BIND_LAZY); if (cups) - break; + break; } - + if (!cups) { cups_init = FALSE; return; @@ -63,11 +67,11 @@ init_cups(void) if (!g_module_symbol(cups, "cupsGetDests", (gpointer) & cups_dests_get) || !g_module_symbol(cups, "cupsFreeDests", (gpointer) & cups_dests_free)) { - g_module_close(cups); + if(cups) g_module_close(cups); cups_init = FALSE; } } - + cups_init = TRUE; } @@ -76,7 +80,7 @@ gchar *__cups_callback_ptype(gchar *strvalue) if (strvalue) { unsigned value = atoi(strvalue); gchar *output = g_strdup("\n"); - + if (value & 0x0004) output = h_strdup_cprintf(_("\342\232\254 Can do black and white printing=\n"), output); if (value & 0x0008) @@ -121,7 +125,7 @@ gchar *__cups_callback_state_change_time(gchar *value) { struct tm tm; char buf[255]; - + if (value) { strptime(value, "%s", &tm); strftime(buf, sizeof(buf), "%c", &tm); @@ -144,29 +148,30 @@ gchar *__cups_callback_boolean(gchar *value) const struct { char *key, *name; gchar *(*callback)(gchar *value); + gboolean maybe_vendor; } cups_fields[] = { { "Printer Information", NULL, NULL }, { "printer-info", "Destination Name", NULL }, - { "printer-make-and-model", "Make and Model", NULL }, - + { "printer-make-and-model", "Make and Model", NULL, TRUE }, + { "Capabilities", NULL, NULL }, { "printer-type", "#", __cups_callback_ptype }, - + { "Printer State", NULL, NULL }, { "printer-state", "State", __cups_callback_state }, { "printer-state-change-time", "Change Time", __cups_callback_state_change_time }, { "printer-state-reasons", "State Reasons" }, - + { "Sharing Information", NULL, NULL }, { "printer-is-shared", "Shared?", __cups_callback_boolean }, { "printer-location", "Physical Location" }, { "auth-info-required", "Authentication Required", __cups_callback_boolean }, - + { "Jobs", NULL, NULL }, { "job-hold-until", "Hold Until", NULL }, { "job-priority", "Priority", NULL }, { "printer-is-accepting-jobs", "Accepting Jobs", __cups_callback_boolean }, - + { "Media", NULL, NULL }, { "media", "Media", NULL }, { "finishings", "Finishings", NULL }, @@ -176,7 +181,7 @@ const struct { void scan_printers_do(void) { - int num_dests, i, j; + guint num_dests, j, i; CUPSDest *dests; gchar *prn_id, *prn_moreinfo; @@ -185,7 +190,7 @@ scan_printers_do(void) if (!cups_init) { init_cups(); - + printer_icons = g_strdup(""); printer_list = g_strdup(_("[Printers]\n" "No suitable CUPS library found=")); @@ -201,22 +206,22 @@ scan_printers_do(void) printer_icons = g_strdup(""); for (i = 0; i < num_dests; i++) { GHashTable *options; - + options = g_hash_table_new(g_str_hash, g_str_equal); - - for (j = 0; j < dests[i].num_options; j++) { + + for (j = 0; (int)j < dests[i].num_options; j++) { g_hash_table_insert(options, g_strdup(dests[i].options[j].name), g_strdup(dests[i].options[j].value)); } - + prn_id = g_strdup_printf("PRN%d", i); - + printer_list = h_strdup_cprintf("\n$%s$%s=%s\n", printer_list, - prn_id, + prn_id, dests[i].name, - dests[i].is_default ? "Default" : ""); + dests[i].is_default ? ((params.markup_ok) ? "Default" : "(Default)") : ""); printer_icons = h_strdup_cprintf("\nIcon$%s$%s=printer.png", printer_icons, prn_id, @@ -230,9 +235,9 @@ scan_printers_do(void) cups_fields[j].key); } else { gchar *temp; - + temp = g_hash_table_lookup(options, cups_fields[j].key); - + if (cups_fields[j].callback) { temp = cups_fields[j].callback(temp); } else { @@ -243,21 +248,22 @@ scan_printers_do(void) temp = g_strdup(_("Unknown")); } } - - prn_moreinfo = h_strdup_cprintf("%s=%s\n", + + prn_moreinfo = h_strdup_cprintf("%s%s=%s\n", prn_moreinfo, + cups_fields[j].maybe_vendor ? "$^$" : "", cups_fields[j].name, temp); - + g_free(temp); } } - + moreinfo_add_with_prefix("DEV", prn_id, prn_moreinfo); g_free(prn_id); g_hash_table_destroy(options); } - + cups_dests_free(num_dests, dests); } else { printer_list = g_strdup(_("[Printers]\n" diff --git a/modules/devices/resources.c b/modules/devices/resources.c index 15cb8f21..c9d1ccb5 100644 --- a/modules/devices/resources.c +++ b/modules/devices/resources.c @@ -1,10 +1,10 @@ /* * HardInfo - Displays System Information - * Copyright (C) 2003-2008 Leandro A. F. Pereira + * Copyright (C) 2003-2008 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, version 2. + * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -37,21 +37,27 @@ static gchar *_resource_obtain_name(gchar *name) 0, 0, NULL); _regex_module = g_regex_new("^[0-9a-zA-Z\\_\\-]+$", 0, 0, NULL); } - + name = g_strstrip(name); - + if (g_regex_match(_regex_pci, name, 0, NULL)) { temp = module_call_method_param("devices::getPCIDeviceDescription", name); if (temp) { + if (params.markup_ok) return g_strdup_printf("PCI %s", (gchar *)idle_free(temp)); + else + return g_strdup_printf("PCI %s", (gchar *)idle_free(temp)); } } else if (g_regex_match(_regex_module, name, 0, NULL)) { temp = module_call_method_param("computer::getKernelModuleDescription", name); if (temp) { + if (params.markup_ok) return g_strdup_printf("Module %s", (gchar *)idle_free(temp)); + else + return g_strdup_printf("Module %s", (gchar *)idle_free(temp)); } } - + return g_strdup(name); } #else @@ -66,7 +72,7 @@ void scan_device_resources(gboolean reload) SCAN_START(); FILE *io; gchar buffer[256]; - gint i; + guint i; gint zero_to_zero_addr = 0; struct { @@ -77,10 +83,10 @@ void scan_device_resources(gboolean reload) { "/proc/iomem", "[Memory]\n" }, { "/proc/dma", "[DMA]\n" } }; - + g_free(_resources); _resources = g_strdup(""); - + for (i = 0; i < G_N_ELEMENTS(resources); i++) { if ((io = fopen(resources[i].file, "r"))) { _resources = h_strconcat(_resources, resources[i].description, NULL); @@ -92,8 +98,12 @@ void scan_device_resources(gboolean reload) if (strstr(temp[0], "0000-0000")) zero_to_zero_addr++; - _resources = h_strdup_cprintf("%s=%s\n", _resources, - temp[0], name); + if (params.markup_ok) + _resources = h_strdup_cprintf("%s=%s\n", _resources, + temp[0], name); + else + _resources = h_strdup_cprintf(">%s=%s\n", _resources, + temp[0], name); g_strfreev(temp); g_free(name); diff --git a/modules/devices/riscv/processor.c b/modules/devices/riscv/processor.c index afddf89d..f2e51c91 100644 --- a/modules/devices/riscv/processor.c +++ b/modules/devices/riscv/processor.c @@ -1,10 +1,10 @@ /* * HardInfo - Displays System Information - * Copyright (C) 2003-2006 Leandro A. F. Pereira + * Copyright (C) 2003-2006 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, version 2. + * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of diff --git a/modules/devices/riscv/riscv_data.c b/modules/devices/riscv/riscv_data.c index 4ae68ef4..917e8e06 100644 --- a/modules/devices/riscv/riscv_data.c +++ b/modules/devices/riscv/riscv_data.c @@ -93,7 +93,7 @@ const char *riscv_ext_meaning(const char *ext) { /* see RISC-V spec 2.2: Chapter 22: ISA Subset Naming Conventions */ -/* Spec says case-insensitve, but I prefer single-letter extensions +/* Spec says case-insensitive, but I prefer single-letter extensions * capped and version string (like "2p1") with a lowercase p. */ #define RV_FIX_CASE(fstr,vo) \ p = fstr; while (*p != 0 && *p != ':') { if (!vo) *p = toupper(*p); p++; } \ diff --git a/modules/devices/s390/processor.c b/modules/devices/s390/processor.c index cf45c33c..e4f2b303 100644 --- a/modules/devices/s390/processor.c +++ b/modules/devices/s390/processor.c @@ -1,10 +1,10 @@ /* * HardInfo - Displays System Information - * Copyright (C) 2003-2006 Leandro A. F. Pereira + * Copyright (C) 2003-2006 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, version 2. + * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of diff --git a/modules/devices/sensors.c b/modules/devices/sensors.c index c9d78ff7..095f0bc4 100644 --- a/modules/devices/sensors.c +++ b/modules/devices/sensors.c @@ -1,10 +1,10 @@ /* * HardInfo - Displays System Information - * Copyright (C) 2003-2006 Leandro A. F. Pereira + * Copyright (C) 2003-2006 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, version 2. + * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -22,12 +22,21 @@ #include "expr.h" #include "hardinfo.h" #include "socket.h" +#include "udisks2_util.h" + +#if defined(HAS_LIBSENSORS) && HAS_LIBSENSORS +#include +#endif gchar *sensors = NULL; +gchar *sensor_icons = NULL; GHashTable *sensor_compute = NULL; GHashTable *sensor_labels = NULL; +gboolean hwmon_first_run = TRUE; + +static gchar *last_group = NULL; -static void read_sensor_labels(gchar *driver) { +static void read_sensor_labels(gchar *devname) { FILE *conf; gchar buf[256], *line, *p; gboolean lock = FALSE; @@ -55,14 +64,14 @@ static void read_sensor_labels(gchar *driver) { continue; } else if (lock && strstr(line, "label")) { /* label lines */ gchar **names = g_strsplit(strstr(line, "label") + 5, " ", 0); - gchar *name = NULL, *value = NULL; + gchar *key = NULL, *value = NULL; for (i = 0; names[i]; i++) { if (names[i][0] == '\0') continue; - if (!name) - name = g_strdup(names[i]); + if (!key) + key = g_strdup_printf("%s/%s", devname, names[i]); else if (!value) value = g_strdup(names[i]); else @@ -70,7 +79,7 @@ static void read_sensor_labels(gchar *driver) { } remove_quotes(value); - g_hash_table_insert(sensor_labels, name, value); + g_hash_table_insert(sensor_labels, key, g_strstrip(value)); g_strfreev(names); } else if (lock && strstr(line, "ignore")) { /* ignore lines */ @@ -80,19 +89,18 @@ static void read_sensor_labels(gchar *driver) { while (*p == ' ') p++; - g_hash_table_insert(sensor_labels, g_strdup(p), "ignore"); + g_hash_table_insert(sensor_labels, g_strdup_printf("%s/%s", devname, p), "ignore"); } else if (lock && strstr(line, "compute")) { /* compute lines */ + strend(line, ','); gchar **formulas = g_strsplit(strstr(line, "compute") + 7, " ", 0); - gchar *name = NULL, *formula = NULL; + gchar *key = NULL, *formula = NULL; for (i = 0; formulas[i]; i++) { if (formulas[i][0] == '\0') continue; - if (formulas[i][0] == ',') - break; - if (!name) - name = g_strdup(formulas[i]); + if (!key) + key = g_strdup_printf("%s/%s", devname, formulas[i]); else if (!formula) formula = g_strdup(formulas[i]); else @@ -100,7 +108,7 @@ static void read_sensor_labels(gchar *driver) { } g_strfreev(formulas); - g_hash_table_insert(sensor_compute, name, + g_hash_table_insert(sensor_compute, key, math_string_to_postfix(formula)); } else if (g_str_has_prefix(line, "chip")) { /* chip lines (delimiter) */ @@ -110,7 +118,7 @@ static void read_sensor_labels(gchar *driver) { for (i = 1; chips[i]; i++) { strend(chips[i], '*'); - if (g_str_has_prefix(chips[i] + 1, driver)) { + if (g_str_has_prefix(chips[i] + 1, devname)) { lock = TRUE; break; } @@ -128,36 +136,59 @@ static void read_sensor_labels(gchar *driver) { static void add_sensor(const char *type, const char *sensor, - const char *driver, + const char *parent, double value, - const char *unit) { + const char *unit, + const char *icon) { char key[64]; - sensors = h_strdup_cprintf("%s/%s=%.2f%s|%s\n", sensors, - driver, sensor, value, unit, type); + snprintf(key, sizeof(key), "%s/%s", parent, sensor); + + if (SENSORS_GROUP_BY_TYPE) { + // group by type + if (g_strcmp0(last_group, type) != 0) { + sensors = h_strdup_cprintf("[%s]\n", sensors, type); + g_free(last_group); + last_group = g_strdup(type); + } + sensors = h_strdup_cprintf("$%s$%s=%.2f%s|%s\n", sensors, + key, sensor, value, unit, parent); + } + else { + // group by device source / driver + if (g_strcmp0(last_group, parent) != 0) { + sensors = h_strdup_cprintf("[%s]\n", sensors, parent); + g_free(last_group); + last_group = g_strdup(parent); + } + sensors = h_strdup_cprintf("$%s$%s=%.2f%s|%s\n", sensors, + key, sensor, value, unit, type); + } + + if (icon != NULL) { + sensor_icons = h_strdup_cprintf("Icon$%s$%s=%s.png\n", sensor_icons, + key, sensor, icon); + } - snprintf(key, sizeof(key), "%s/%s", driver, sensor); moreinfo_add_with_prefix("DEV", key, g_strdup_printf("%.2f%s", value, unit)); lginterval = h_strdup_cprintf("UpdateInterval$%s=1000\n", lginterval, key); } -static gchar *get_sensor_label(gchar *sensor) { +static gchar *get_sensor_label_from_conf(gchar *key) { gchar *ret; + ret = g_hash_table_lookup(sensor_labels, key); - ret = g_hash_table_lookup(sensor_labels, sensor); - if (!ret) - ret = g_strdup(sensor); - else - ret = g_strdup(ret); + if (ret) + return g_strdup(ret); - return ret; + return NULL; } -static float adjust_sensor(gchar *name, float value) { +static float adjust_sensor(gchar *key, float value) { GSList *postfix; - postfix = g_hash_table_lookup(sensor_compute, name); + postfix = g_hash_table_lookup(sensor_compute, key); if (!postfix) return value; @@ -168,79 +199,137 @@ static char *get_sensor_path(int number, const char *prefix) { return g_strdup_printf("/sys/class/hwmon/hwmon%d/%s", number, prefix); } -static char *determine_driver_for_hwmon_path(char *path) { - char *tmp, *driver; +static char *determine_devname_for_hwmon_path(char *path) { + char *tmp, *devname = NULL; + + // device name + tmp = g_strdup_printf("%s/name", path); + g_file_get_contents(tmp, &devname, NULL, NULL); + g_free(tmp); + if (devname) + return g_strstrip(devname); + // fallback: driver name (from driver link) tmp = g_strdup_printf("%s/device/driver", path); - driver = g_file_read_link(tmp, NULL); + devname = g_file_read_link(tmp, NULL); g_free(tmp); - if (driver) { - tmp = g_path_get_basename(driver); - g_free(driver); - driver = tmp; - } else { + if (!devname) { + // fallback: device folder name (from device link) tmp = g_strdup_printf("%s/device", path); - driver = g_file_read_link(tmp, NULL); + devname = g_file_read_link(tmp, NULL); g_free(tmp); } - if (!driver) { - tmp = g_strdup_printf("%s/name", path); - if (!g_file_get_contents(tmp, &driver, NULL, NULL)) { - driver = g_strdup("unknown"); - } else { - driver = g_strstrip(driver); - } - g_free(tmp); + if (devname) { + tmp = g_path_get_basename(devname); + g_free(devname); + return tmp; } - return driver; + return g_strdup("unknown"); } struct HwmonSensor { const char *friendly_name; - const char *path_format; + const char *value_file_regex; + const char *value_path_format; + const char *label_path_format; const char *key_format; const char *unit; const float adjust_ratio; - const int begin_at; + const char *icon; }; static const struct HwmonSensor hwmon_sensors[] = { { - "Fan", + "Fan Speed", + "^fan([0-9]+)_input$", "%s/fan%d_input", + "%s/fan%d_label", "fan%d", - "RPM", + " RPM", 1.0, - 1 + "fan" }, { "Temperature", + "^temp([0-9]+)_input$", "%s/temp%d_input", + "%s/temp%d_label", "temp%d", "\302\260C", 1000.0, - 1 + "therm" }, { "Voltage", + "^in([0-9]+)_input$", "%s/in%d_input", + "%s/in%d_label", "in%d", "V", 1000.0, - 0 + "bolt" + }, + { + "Current", + "^curr([0-9]+)_input$", + "%s/curr%d_input", + "%s/curr%d_label", + "curr%d", + " A", + 1000.0, + "bolt" + }, + { + "Power", + "^power([0-9]+)_input$", + "%s/power%d_input", + "%s/power%d_label", + "power%d", + " W", + 1000000.0, + "bolt" + }, + { + "CPU Voltage", + "^cpu([0-9]+)_vid$", + "%s/cpu%d_vid", + NULL, + "cpu%d_vid", + " V", + 1000.0, + "bolt" }, { } }; static const char *hwmon_prefix[] = {"device", "", NULL}; +static gboolean read_raw_hwmon_value(gchar *path_hwmon, const gchar *item_path_format, int item_id, gchar **result){ + gchar *full_path; + gboolean file_result; + + if (item_path_format == NULL) + return FALSE; + + full_path = g_strdup_printf(item_path_format, path_hwmon, item_id); + file_result = g_file_get_contents(full_path, result, NULL, NULL); + + g_free(full_path); + + return file_result; +} + static void read_sensors_hwmon(void) { - int hwmon, count; - gchar *path_hwmon, *path_sensor, *tmp, *driver, *name, *mon; - const char **prefix; + int hwmon, count, min, max; + gchar *path_hwmon, *tmp, *devname, *name, *mon, *key; + const char **prefix, *entry; + GDir *dir; + GRegex *regex; + GMatchInfo *match_info; + GError *err = NULL; for (prefix = hwmon_prefix; *prefix; prefix++) { hwmon = 0; @@ -248,56 +337,92 @@ static void read_sensors_hwmon(void) { while (path_hwmon && g_file_test(path_hwmon, G_FILE_TEST_EXISTS)) { const struct HwmonSensor *sensor; - driver = determine_driver_for_hwmon_path(path_hwmon); - DEBUG("hwmon%d has driver=%s", hwmon, driver); - - if (!sensor_labels) { - read_sensor_labels(driver); + devname = determine_devname_for_hwmon_path(path_hwmon); + DEBUG("hwmon%d has device=%s", hwmon, devname); + if (hwmon_first_run) { + read_sensor_labels(devname); } + dir = g_dir_open(path_hwmon, 0, NULL); + if (!dir) + continue; + for (sensor = hwmon_sensors; sensor->friendly_name; sensor++) { DEBUG("current sensor type=%s", sensor->friendly_name); + regex = g_regex_new (sensor->value_file_regex, 0, 0, &err); + if (err != NULL){ + g_free(err); + err = NULL; + continue; + } - for (count = sensor->begin_at;; count++) { - path_sensor = - g_strdup_printf(sensor->path_format, path_hwmon, count); - DEBUG("should be reading from %s", path_sensor); - if (!g_file_get_contents(path_sensor, &tmp, NULL, NULL)) { - g_free(path_sensor); - if (count < 256) - continue; // brute-force find all - else - break; + g_dir_rewind(dir); + min = 999; + max = -1; + + while ((entry = g_dir_read_name(dir))) { + g_regex_match(regex, entry, 0, &match_info); + if (g_match_info_matches(match_info)) { + tmp = g_match_info_fetch(match_info, 1); + count = atoi(tmp); + g_free (tmp); + + if (count < min){ + min = count; + } + if (count > max){ + max = count; + } + } + g_match_info_free(match_info); + } + g_regex_unref(regex); + + for (count = min; count <= max; count++) { + if (!read_raw_hwmon_value(path_hwmon, sensor->value_path_format, count, &tmp)) { + continue; } mon = g_strdup_printf(sensor->key_format, count); - name = get_sensor_label(mon); + key = g_strdup_printf("%s/%s", devname, mon); + name = get_sensor_label_from_conf(key); + if (name == NULL){ + if (read_raw_hwmon_value(path_hwmon, sensor->label_path_format, count, &name)){ + name = g_strchomp(name); + } + else{ + name = g_strdup(mon); + } + } + if (!g_str_equal(name, "ignore")) { - float adjusted = adjust_sensor(mon, + float adjusted = adjust_sensor(key, atof(tmp) / sensor->adjust_ratio); add_sensor(sensor->friendly_name, name, - driver, + devname, adjusted, - sensor->unit); + sensor->unit, + sensor->icon); } g_free(tmp); g_free(mon); + g_free(key); g_free(name); - g_free(path_sensor); } } + g_dir_close(dir); g_free(path_hwmon); - g_free(driver); + g_free(devname); path_hwmon = get_sensor_path(++hwmon, *prefix); } - g_free(path_hwmon); } + hwmon_first_run = FALSE; } static void read_sensors_acpi(void) { @@ -323,7 +448,8 @@ static void read_sensors_acpi(void) { entry, "ACPI Thermal Zone", temperature, - "\302\260C"); + "\302\260C", + "therm"); } } @@ -332,6 +458,78 @@ static void read_sensors_acpi(void) { } } +// Sensors for Apple PowerPC devices using Windfarm driver. +struct WindfarmSensorType { + const char *type; + const char *icon; + const char *file_regex; + const char *unit; + gboolean with_decimal_p; +}; +static const struct WindfarmSensorType windfarm_sensor_types[] = { + {"Fan", "fan", "^[a-z-]+-fan(-[0-9]+)?$", " RPM", FALSE}, + {"Temperature", "therm", "^[a-z-]+-temp(-[0-9]+)?$", "\302\260C", TRUE}, + {"Power", "bolt", "^[a-z-]+-power(-[0-9]+)?$", " W", TRUE}, + {"Current", "bolt", "^[a-z-]+-current(-[0-9]+)?$", " A", TRUE}, + {"Voltage", "bolt", "^[a-z-]+-voltage(-[0-9]+)?$", " V", TRUE}, + { } +}; +static void read_sensors_windfarm(void) +{ + const gchar *path_wf = "/sys/devices/platform/windfarm.0"; + GDir *wf; + gchar *tmp = NULL; + gint v1, v2; + double value; + + wf = g_dir_open(path_wf, 0, NULL); + if (wf) { + GRegex *regex; + GError *err = NULL; + const gchar *entry; + const struct WindfarmSensorType *sensor; + + for (sensor = windfarm_sensor_types; sensor->type; sensor++) { + DEBUG("current windfarm sensor type=%s", sensor->type); + regex = g_regex_new(sensor->file_regex, 0, 0, &err); + if (err != NULL) { + g_free(err); + err = NULL; + continue; + } + + g_dir_rewind(wf); + + while ((entry = g_dir_read_name(wf))) { + if (g_regex_match(regex, entry, 0, NULL)) { + gchar *path = g_strdup_printf("%s/%s", path_wf, entry); + if (g_file_get_contents(path, &tmp, NULL, NULL)) { + + if (sensor->with_decimal_p) { + // format source + // https://elixir.free-electrons.com/linux/v5.14/source/drivers/macintosh/windfarm_core.c#L301 + sscanf(tmp, "%d.%03d", &v1, &v2); + value = v1 + (v2 / 1000.0); + } else { + value = (double)atoi(tmp); + } + g_free(tmp); + + tmp = g_strdup(entry); + add_sensor(sensor->type, g_strdelimit(tmp, "-", ' '), + "windfarm", value, sensor->unit, + sensor->icon); + g_free(tmp); + } + g_free(path); + } + } + g_regex_unref(regex); + } + g_dir_close(wf); + } +} + static void read_sensors_sys_thermal(void) { const gchar *path_tz = "/sys/class/thermal"; @@ -355,7 +553,8 @@ static void read_sensors_sys_thermal(void) { entry, "thermal", temperature / 1000.0, - "\302\260C"); + "\302\260C", + "therm"); g_free(contents); } @@ -379,7 +578,8 @@ static void read_sensors_omnibook(void) { "CPU", "omnibook", temperature, - "\302\260C\n"); + "\302\260C", + "therm"); g_free(contents); } @@ -401,7 +601,7 @@ static void read_sensors_hddtemp(void) { gchar **disks; int i; - disks = g_strsplit(buffer, "\n", 0); + disks = g_strsplit(buffer, "||", 0); for (i = 0; disks[i]; i++) { gchar **fields = g_strsplit(disks[i] + 1, "|", 5); @@ -412,12 +612,13 @@ static void read_sensors_hddtemp(void) { * 3 -> C */ const gchar *unit = strcmp(fields[3], "C") - ? "\302\260C" : "\302\260F"; - add_sensor("Hard Drive", + ? "\302\260F" : "\302\260C"; + add_sensor("Drive Temperature", fields[1], "hddtemp", atoi(fields[2]), - unit); + unit, + "therm"); g_strfreev(fields); } @@ -426,28 +627,144 @@ static void read_sensors_hddtemp(void) { } } +static void read_sensors_udisks2(void) { + GSList *node; + GSList *temps; + udiskt *disk; + + temps = get_udisks2_temps(); + if (temps == NULL) + return; + + for (node = temps; node != NULL; node = node->next) { + disk = (udiskt *)node->data; + add_sensor("Drive Temperature", + disk->drive, + "udisks2", + disk->temperature, + "\302\260C", + "therm"); + udiskt_free(disk); + } + g_slist_free(temps); +} + +#if HAS_LIBSENSORS +static const struct libsensors_feature_type { + const char *type_name; + const char *icon; + const char *unit; + sensors_subfeature_type input; +} libsensors_feature_types[SENSORS_FEATURE_MAX] = { + [SENSORS_FEATURE_FAN] = {"Fan", "fan", "RPM", + SENSORS_SUBFEATURE_FAN_INPUT}, + [SENSORS_FEATURE_TEMP] = {"Temperature", "therm", "\302\260C", + SENSORS_SUBFEATURE_TEMP_INPUT}, + [SENSORS_FEATURE_POWER] = {"Power", "bolt", "W", + SENSORS_SUBFEATURE_POWER_INPUT}, + [SENSORS_FEATURE_CURR] = {"Current", "bolt", "A", + SENSORS_SUBFEATURE_CURR_INPUT}, + [SENSORS_FEATURE_IN] = {"Voltage", "bolt", "V", + SENSORS_SUBFEATURE_IN_INPUT}, + [SENSORS_FEATURE_VID] = {"CPU Voltage", "bolt", "V", + SENSORS_SUBFEATURE_VID}, +}; +static gboolean libsensors_initialized; + +static int read_sensors_libsensors(void) { + char chip_name_buf[512]; + const sensors_chip_name *name; + int chip_nr = 0; + int added_sensors = 0; + + if (!libsensors_initialized) + return 0; + + while ((name = sensors_get_detected_chips(NULL, &chip_nr))) { + const struct sensors_feature *feat; + int feat_nr = 0; + + sensors_snprintf_chip_name(chip_name_buf, 512, name); + + while ((feat = sensors_get_features(name, &feat_nr))) { + const struct libsensors_feature_type *feat_descr; + const struct sensors_subfeature *subfeat; + double value; + + feat_descr = &libsensors_feature_types[feat->type]; + if (!feat_descr->type_name) + continue; + + subfeat = sensors_get_subfeature(name, feat, feat_descr->input); + if (!subfeat) + continue; + + if (!sensors_get_value(name, subfeat->number, &value)) { + char *label = sensors_get_label(name, feat); + gchar *label_with_chip = g_strdup_printf("%s (%s)", label, chip_name_buf); + + add_sensor(feat_descr->type_name, + label_with_chip, + "libsensors", + value, + feat_descr->unit, + feat_descr->icon); + + free(label_with_chip); + free(label); + + added_sensors++; + } + } + } + + return added_sensors; +} +#else +static int read_sensors_libsensors(void) +{ + return 0; +} +#endif + void scan_sensors_do(void) { g_free(sensors); + g_free(sensor_icons); + g_free(last_group); + last_group = NULL; sensors = g_strdup(""); + sensor_icons = g_strdup(""); g_free(lginterval); lginterval = g_strdup(""); - read_sensors_hwmon(); - read_sensors_acpi(); - read_sensors_sys_thermal(); - read_sensors_omnibook(); + if (read_sensors_libsensors() == 0) { + read_sensors_hwmon(); + read_sensors_acpi(); + read_sensors_sys_thermal(); + read_sensors_omnibook(); + } + + read_sensors_windfarm(); read_sensors_hddtemp(); - /* FIXME: Add support for ibm acpi and more sensors */ + read_sensors_udisks2(); } -void sensors_init(void) { +void sensor_init(void) { +#if HAS_LIBSENSORS + libsensors_initialized = sensors_init(NULL) == 0; +#endif + sensor_labels = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free); sensor_compute = g_hash_table_new(g_str_hash, g_str_equal); } -void sensors_shutdown(void) { +void sensor_shutdown(void) { +#if HAS_LIBSENSORS + sensors_cleanup(); +#endif + g_hash_table_destroy(sensor_labels); g_hash_table_destroy(sensor_compute); } diff --git a/modules/devices/sh/processor.c b/modules/devices/sh/processor.c index 9da2f9b0..a5ce3e0a 100644 --- a/modules/devices/sh/processor.c +++ b/modules/devices/sh/processor.c @@ -1,10 +1,10 @@ /* * HardInfo - Displays System Information - * Copyright (C) 2003-2006 Leandro A. F. Pereira + * Copyright (C) 2003-2006 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, version 2. + * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of diff --git a/modules/devices/sparc/processor.c b/modules/devices/sparc/processor.c index 32c7aa94..76f4b0e0 100644 --- a/modules/devices/sparc/processor.c +++ b/modules/devices/sparc/processor.c @@ -1,10 +1,10 @@ /* * HardInfo - Displays System Information - * Copyright (C) 2003-2006 Leandro A. F. Pereira + * Copyright (C) 2003-2006 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, version 2. + * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of diff --git a/modules/devices/spd-decode.c b/modules/devices/spd-decode.c index 2db4895b..511504b2 100644 --- a/modules/devices/spd-decode.c +++ b/modules/devices/spd-decode.c @@ -1,6 +1,8 @@ /* - * spd-decode.c - * Copyright (c) 2010 Leandro A. F. Pereira + * spd-decode.c, spd-vendors.c + * Copyright (c) 2010 L. A. F. Pereira + * modified by Ondrej Čerman (2019) + * modified by Burt P. (2019) * * Based on decode-dimms.pl * Copyright 1998, 1999 Philip Edelbrock @@ -27,602 +29,91 @@ #include #include -#include "hardinfo.h" #include "devices.h" +#include "hardinfo.h" + +gboolean spd_no_driver = FALSE; +gboolean spd_no_support = FALSE; +gboolean spd_ddr4_partial_data = FALSE; +int spd_ram_types = 0; /* bits using enum RamType */ typedef enum { - UNKNOWN, - DIRECT_RAMBUS, - RAMBUS, - FPM_DRAM, - EDO, - PIPELINED_NIBBLE, - SDR_SDRAM, - MULTIPLEXED_ROM, - DDR_SGRAM, - DDR_SDRAM, - DDR2_SDRAM, - DDR3_SDRAM + UNKNOWN = 0, + DIRECT_RAMBUS = 1, + RAMBUS = 2, + FPM_DRAM = 3, + EDO = 4, + PIPELINED_NIBBLE = 5, + SDR_SDRAM = 6, + MULTIPLEXED_ROM = 7, + DDR_SGRAM = 8, + DDR_SDRAM = 9, + DDR2_SDRAM = 10, + DDR3_SDRAM = 11, + DDR4_SDRAM = 12, + N_RAM_TYPES = 13 } RamType; -char *spd_info = NULL; - -static const char *ram_types[] = { - "Unknown", - "Direct Rambus", - "Rambus", - "FPM DRAM", - "EDO", - "Pipelined Nibble", - "SDR SDRAM", - "Multiplexed ROM", - "DDR SGRAM", - "DDR SDRAM", - "DDR2 SDRAM", - "DDR3 SDRAM" -}; +static const char *ram_types[] = {"Unknown", "Direct Rambus", "Rambus", "FPM DRAM", + "EDO", "Pipelined Nibble", "SDR SDRAM", "Multiplexed ROM", + "DDR SGRAM", "DDR SDRAM", "DDR2 SDRAM", "DDR3 SDRAM", + "DDR4 SDRAM"}; +#define GET_RAM_TYPE_STR(rt) (ram_types[(rt < N_RAM_TYPES) ? rt : 0]) -static const char *vendors1[] = { "AMD", "AMI", "Fairchild", "Fujitsu", - "GTE", "Harris", "Hitachi", "Inmos", - "Intel", "I.T.T.", "Intersil", - "Monolithic Memories", - "Mostek", - "Freescale (former Motorola)", - "National", "NEC", - "RCA", "Raytheon", - "Conexant (Rockwell)", "Seeq", - "NXP (former Signetics, Philips Semi.)", - "Synertek", - "Texas Instruments", "Toshiba", - "Xicor", "Zilog", "Eurotechnique", - "Mitsubishi", - "Lucent (AT&T)", "Exel", "Atmel", - "SGS/Thomson", - "Lattice Semi.", "NCR", - "Wafer Scale Integration", "IBM", - "Tristar", "Visic", - "Intl. CMOS Technology", "SSSI", - "MicrochipTechnology", "Ricoh Ltd.", - "VLSI", "Micron Technology", - "Hyundai Electronics", - "OKI Semiconductor", "ACTEL", - "Sharp", - "Catalyst", "Panasonic", "IDT", - "Cypress", - "DEC", "LSI Logic", - "Zarlink (former Plessey)", "UTMC", - "Thinking Machine", "Thomson CSF", - "Integrated CMOS (Vertex)", - "Honeywell", - "Tektronix", "Sun Microsystems", - "SST", "ProMos/Mosel Vitelic", - "Infineon (former Siemens)", - "Macronix", "Xerox", "Plus Logic", - "SunDisk", "Elan Circuit Tech.", - "European Silicon Str.", - "Apple Computer", - "Xilinx", "Compaq", - "Protocol Engines", "SCI", - "Seiko Instruments", "Samsung", - "I3 Design System", "Klic", - "Crosspoint Solutions", - "Alliance Semiconductor", "Tandem", - "Hewlett-Packard", - "Intg. Silicon Solutions", - "Brooktree", "New Media", - "MHS Electronic", - "Performance Semi.", - "Winbond Electronic", - "Kawasaki Steel", - "Bright Micro", - "TECMAR", "Exar", "PCMCIA", - "LG Semi (former Goldstar)", - "Northern Telecom", "Sanyo", - "Array Microsystems", - "Crystal Semiconductor", - "Analog Devices", "PMC-Sierra", - "Asparix", "Convex Computer", - "Quality Semiconductor", - "Nimbus Technology", "Transwitch", - "Micronas (ITT Intermetall)", - "Cannon", "Altera", "NEXCOM", - "QUALCOMM", - "Sony", "Cray Research", - "AMS(Austria Micro)", "Vitesse", - "Aster Electronics", - "Bay Networks (Synoptic)", - "Zentrum or ZMD", - "TRW", - "Thesys", "Solbourne Computer", - "Allied-Signal", "Dialog", - "Media Vision", - "Level One Communication" -}; +#include "spd-vendors.c" -static const char *vendors2[] = { "Cirrus Logic", - "National Instruments", - "ILC Data Device", - "Alcatel Mietec", - "Micro Linear", - "Univ. of NC", - "JTAG Technologies", - "BAE Systems", - "Nchip", - "Galileo Tech", - "Bestlink Systems", - "Graychip", - "GENNUM", - "VideoLogic", - "Robert Bosch", - "Chip Express", - "DATARAM", - "United Microelec Corp.", - "TCSI", - "Smart Modular", - "Hughes Aircraft", - "Lanstar Semiconductor", - "Qlogic", "Kingston", - "Music Semi", - "Ericsson Components", - "SpaSE", - "Eon Silicon Devices", - "Programmable Micro Corp", - "DoD", - "Integ. Memories Tech.", - "Corollary Inc.", - "Dallas Semiconductor", - "Omnivision", - "EIV(Switzerland)", - "Novatel Wireless", - "Zarlink (former Mitel)", - "Clearpoint", - "Cabletron", - "STEC (former Silicon Technology)", - "Vanguard", - "Hagiwara Sys-Com", - "Vantis", "Celestica", - "Century", - "Hal Computers", - "Rohm Company Ltd.", - "Juniper Networks", - "Libit Signal Processing", - "Mushkin Enhanced Memory", - "Tundra Semiconductor", - "Adaptec Inc.", - "LightSpeed Semi.", - "ZSP Corp.", - "AMIC Technology", - "Adobe Systems", - "Dynachip", - "PNY Electronics", - "Newport Digital", - "MMC Networks", - "T Square", - "Seiko Epson", - "Broadcom", - "Viking Components", - "V3 Semiconductor", - "Flextronics (former Orbit)", - "Suwa Electronics", - "Transmeta", - "Micron CMS", - "American Computer & Digital Components Inc", - "Enhance 3000 Inc", - "Tower Semiconductor", - "CPU Design", - "Price Point", - "Maxim Integrated Product", - "Tellabs", - "Centaur Technology", - "Unigen Corporation", - "Transcend Information", - "Memory Card Technology", - "CKD Corporation Ltd.", - "Capital Instruments, Inc.", - "Aica Kogyo, Ltd.", - "Linvex Technology", - "MSC Vertriebs GmbH", - "AKM Company, Ltd.", - "Dynamem, Inc.", - "NERA ASA", - "GSI Technology", - "Dane-Elec (C Memory)", - "Acorn Computers", - "Lara Technology", - "Oak Technology, Inc.", - "Itec Memory", - "Tanisys Technology", - "Truevision", - "Wintec Industries", - "Super PC Memory", - "MGV Memory", - "Galvantech", - "Gadzoox Nteworks", - "Multi Dimensional Cons.", - "GateField", - "Integrated Memory System", - "Triscend", "XaQti", - "Goldenram", - "Clear Logic", - "Cimaron Communications", - "Nippon Steel Semi. Corp.", - "Advantage Memory", - "AMCC", - "LeCroy", - "Yamaha Corporation", - "Digital Microwave", - "NetLogic Microsystems", - "MIMOS Semiconductor", - "Advanced Fibre", - "BF Goodrich Data.", - "Epigram", - "Acbel Polytech Inc.", - "Apacer Technology", - "Admor Memory", - "FOXCONN", - "Quadratics Superconductor", - "3COM", -}; +struct dmi_mem_socket; +typedef struct { + unsigned char bytes[512]; + char dev[32]; /* %1d-%04d\0 */ + const char *spd_driver; + int spd_size; -static const char *vendors3[] = { "Camintonn Corporation", "ISOA Incorporated", - "Agate Semiconductor", "ADMtek Incorporated", - "HYPERTEC", "Adhoc Technologies", "MOSAID Technologies", - "Ardent Technologies", - "Switchcore", "Cisco Systems, Inc.", "Allayer Technologies", - "WorkX AG", - "Oasis Semiconductor", "Novanet Semiconductor", "E-M Solutions", - "Power General", - "Advanced Hardware Arch.", "Inova Semiconductors GmbH", "Telocity", - "Delkin Devices", - "Symagery Microsystems", "C-Port Corporation", - "SiberCore Technologies", "Southland Microsystems", - "Malleable Technologies", "Kendin Communications", - "Great Technology Microcomputer", "Sanmina Corporation", - "HADCO Corporation", "Corsair", "Actrans System Inc.", - "ALPHA Technologies", - "Silicon Laboratories, Inc. (Cygnal)", "Artesyn Technologies", - "Align Manufacturing", "Peregrine Semiconductor", - "Chameleon Systems", "Aplus Flash Technology", "MIPS Technologies", - "Chrysalis ITS", - "ADTEC Corporation", "Kentron Technologies", "Win Technologies", - "Tachyon Semiconductor (former ASIC Designs Inc.)", - "Extreme Packet Devices", "RF Micro Devices", "Siemens AG", - "Sarnoff Corporation", - "Itautec Philco SA", "Radiata Inc.", "Benchmark Elect. (AVEX)", - "Legend", - "SpecTek Incorporated", "Hi/fn", "Enikia Incorporated", - "SwitchOn Networks", - "AANetcom Incorporated", "Micro Memory Bank", "ESS Technology", - "Virata Corporation", - "Excess Bandwidth", "West Bay Semiconductor", "DSP Group", - "Newport Communications", - "Chip2Chip Incorporated", "Phobos Corporation", - "Intellitech Corporation", "Nordic VLSI ASA", - "Ishoni Networks", "Silicon Spice", "Alchemy Semiconductor", - "Agilent Technologies", - "Centillium Communications", "W.L. Gore", "HanBit Electronics", - "GlobeSpan", - "Element 14", "Pycon", "Saifun Semiconductors", "Sibyte, Incorporated", - "MetaLink Technologies", "Feiya Technology", "I & C Technology", - "Shikatronics", - "Elektrobit", "Megic", "Com-Tier", "Malaysia Micro Solutions", - "Hyperchip", "Gemstone Communications", "Anadigm (former Anadyne)", - "3ParData", - "Mellanox Technologies", "Tenx Technologies", "Helix AG", "Domosys", - "Skyup Technology", "HiNT Corporation", "Chiaro", - "MDT Technologies GmbH (former MCI Computer GMBH)", - "Exbit Technology A/S", "Integrated Technology Express", "AVED Memory", - "Legerity", - "Jasmine Networks", "Caspian Networks", "nCUBE", - "Silicon Access Networks", - "FDK Corporation", "High Bandwidth Access", "MultiLink Technology", - "BRECIS", - "World Wide Packets", "APW", "Chicory Systems", "Xstream Logic", - "Fast-Chip", "Zucotto Wireless", "Realchip", "Galaxy Power", - "eSilicon", "Morphics Technology", "Accelerant Networks", - "Silicon Wave", - "SandCraft", "Elpida" -}; + RamType type; -static const char *vendors4[] = { "Solectron", "Optosys Technologies", - "Buffalo (former Melco)", - "TriMedia Technologies", - "Cyan Technologies", "Global Locate", - "Optillion", - "Terago Communications", - "Ikanos Communications", - "Princeton Technology", - "Nanya Technology", - "Elite Flash Storage", - "Mysticom", "LightSand Communications", - "ATI Technologies", - "Agere Systems", - "NeoMagic", "AuroraNetics", "Golden Empire", - "Mushkin", - "Tioga Technologies", "Netlist", "TeraLogic", - "Cicada Semiconductor", - "Centon Electronics", "Tyco Electronics", - "Magis Works", "Zettacom", - "Cogency Semiconductor", "Chipcon AS", - "Aspex Technology", - "F5 Networks", - "Programmable Silicon Solutions", - "ChipWrights", - "Acorn Networks", - "Quicklogic", - "Kingmax Semiconductor", "BOPS", "Flasys", - "BitBlitz Communications", - "eMemory Technology", "Procket Networks", - "Purple Ray", - "Trebia Networks", - "Delta Electronics", "Onex Communications", - "Ample Communications", - "Memory Experts Intl", - "Astute Networks", "Azanda Network Devices", - "Dibcom", "Tekmos", - "API NetWorks", "Bay Microsystems", - "Firecron Ltd", - "Resonext Communications", - "Tachys Technologies", "Equator Technology", - "Concept Computer", - "SILCOM", - "3Dlabs", "c't Magazine", "Sanera Systems", - "Silicon Packets", - "Viasystems Group", "Simtek", - "Semicon Devices Singapore", - "Satron Handelsges", - "Improv Systems", "INDUSYS GmbH", "Corrent", - "Infrant Technologies", - "Ritek Corp", "empowerTel Networks", - "Hypertec", - "Cavium Networks", - "PLX Technology", "Massana Design", - "Intrinsity", - "Valence Semiconductor", - "Terawave Communications", - "IceFyre Semiconductor", "Primarion", - "Picochip Designs Ltd", - "Silverback Systems", - "Jade Star Technologies", - "Pijnenburg Securealink", - "TakeMS International AG", - "Cambridge Silicon Radio", - "Swissbit", "Nazomi Communications", - "eWave System", - "Rockwell Collins", "Picocel Co., Ltd.", - "Alphamosaic Ltd", - "Sandburst", - "SiCon Video", "NanoAmp Solutions", - "Ericsson Technology", - "PrairieComm", - "Mitac International", "Layer N Networks", - "MtekVision", - "Allegro Networks", - "Marvell Semiconductors", - "Netergy Microelectronic", "NVIDIA", - "Internet Machines", - "Peak Electronics", - "Litchfield Communication", - "Accton Technology", - "Teradiant Networks", - "Europe Technologies", "Cortina Systems", - "RAM Components", - "Raqia Networks", - "ClearSpeed", "Matsushita Battery", - "Xelerated", - "SimpleTech", - "Utron Technology", "Astec International", - "AVM gmbH", - "Redux Communications", - "Dot Hill Systems", "TeraChip" -}; + int vendor_bank; + int vendor_index; + const char *vendor_str; + const Vendor *vendor; -static const char *vendors5[] = { "T-RAM Incorporated", - "Innovics Wireless", "Teknovus", "KeyEye Communications", - "Runcom Technologies", "RedSwitch", "Dotcast", - "Silicon Mountain Memory", - "Signia Technologies", "Pixim", "Galazar Networks", - "White Electronic Designs", - "Patriot Scientific", "Neoaxiom Corporation", "3Y Power Technology", - "Europe Technologies", - "Potentia Power Systems", "C-guys Incorporated", - "Digital Communications Technology Incorporated", - "Silicon-Based Technology", - "Fulcrum Microsystems", "Positivo Informatica Ltd", - "XIOtech Corporation", "PortalPlayer", - "Zhiying Software", "Direct2Data", "Phonex Broadband", - "Skyworks Solutions", - "Entropic Communications", "Pacific Force Technology", "Zensys A/S", - "Legend Silicon Corp.", - "sci-worx GmbH", "SMSC (former Oasis Silicon Systems)", - "Renesas Technology", "Raza Microelectronics", - "Phyworks", "MediaTek", "Non-cents Productions", "US Modular", - "Wintegra Ltd", "Mathstar", "StarCore", "Oplus Technologies", - "Mindspeed", "Just Young Computer", "Radia Communications", "OCZ", - "Emuzed", "LOGIC Devices", "Inphi Corporation", "Quake Technologies", - "Vixel", "SolusTek", "Kongsberg Maritime", "Faraday Technology", - "Altium Ltd.", "Insyte", "ARM Ltd.", "DigiVision", - "Vativ Technologies", "Endicott Interconnect Technologies", "Pericom", - "Bandspeed", - "LeWiz Communications", "CPU Technology", "Ramaxel Technology", - "DSP Group", - "Axis Communications", "Legacy Electronics", "Chrontel", - "Powerchip Semiconductor", - "MobilEye Technologies", "Excel Semiconductor", "A-DATA Technology", - "VirtualDigm", - "G Skill Intl", "Quanta Computer", "Yield Microelectronics", - "Afa Technologies", - "KINGBOX Technology Co. Ltd.", "Ceva", "iStor Networks", - "Advance Modules", - "Microsoft", "Open-Silicon", "Goal Semiconductor", - "ARC International", - "Simmtec", "Metanoia", "Key Stream", "Lowrance Electronics", - "Adimos", "SiGe Semiconductor", "Fodus Communications", - "Credence Systems Corp.", - "Genesis Microchip Inc.", "Vihana, Inc.", "WIS Technologies", - "GateChange Technologies", - "High Density Devices AS", "Synopsys", "Gigaram", - "Enigma Semiconductor Inc.", - "Century Micro Inc.", "Icera Semiconductor", - "Mediaworks Integrated Systems", "O'Neil Product Development", - "Supreme Top Technology Ltd.", "MicroDisplay Corporation", - "Team Group Inc.", "Sinett Corporation", - "Toshiba Corporation", "Tensilica", "SiRF Technology", "Bacoc Inc.", - "SMaL Camera Technologies", "Thomson SC", "Airgo Networks", - "Wisair Ltd.", - "SigmaTel", "Arkados", "Compete IT gmbH Co. KG", - "Eudar Technology Inc.", - "Focus Enhancements", "Xyratex" -}; + int dram_vendor_bank; + int dram_vendor_index; + const char *dram_vendor_str; + const Vendor *dram_vendor; -static const char *vendors6[] = { "Specular Networks", - "Patriot Memory", - "U-Chip Technology Corp.", - "Silicon Optix", - "Greenfield Networks", - "CompuRAM GmbH", "Stargen, Inc.", - "NetCell Corporation", - "Excalibrus Technologies Ltd", - "SCM Microsystems", - "Xsigo Systems, Inc.", - "CHIPS & Systems Inc", - "Tier 1 Multichip Solutions", - "CWRL Labs", "Teradici", - "Gigaram, Inc.", - "g2 Microsystems", - "PowerFlash Semiconductor", - "P.A. Semi, Inc.", - "NovaTech Solutions, S.A.", - "c2 Microsystems, Inc.", - "Level5 Networks", - "COS Memory AG", - "Innovasic Semiconductor", - "02IC Co. Ltd", "Tabula, Inc.", - "Crucial Technology", - "Chelsio Communications", - "Solarflare Communications", - "Xambala Inc.", "EADS Astrium", - "ATO Semicon Co. Ltd.", - "Imaging Works, Inc.", - "Astute Networks, Inc.", "Tzero", - "Emulex", - "Power-One", "Pulse~LINK Inc.", - "Hon Hai Precision Industry", - "White Rock Networks Inc.", - "Telegent Systems USA, Inc.", - "Atrua Technologies, Inc.", - "Acbel Polytech Inc.", - "eRide Inc.", - "ULi Electronics Inc.", - "Magnum Semiconductor Inc.", - "neoOne Technology, Inc.", - "Connex Technology, Inc.", - "Stream Processors, Inc.", - "Focus Enhancements", - "Telecis Wireless, Inc.", - "uNav Microelectronics", - "Tarari, Inc.", "Ambric, Inc.", - "Newport Media, Inc.", "VMTS", - "Enuclia Semiconductor, Inc.", - "Virtium Technology Inc.", - "Solid State System Co., Ltd.", - "Kian Tech LLC", - "Artimi", - "Power Quotient International", - "Avago Technologies", - "ADTechnology", "Sigma Designs", - "SiCortex, Inc.", - "Ventura Technology Group", - "eASIC", "M.H.S. SAS", - "Micro Star International", - "Rapport Inc.", - "Makway International", - "Broad Reach Engineering Co.", - "Semiconductor Mfg Intl Corp", - "SiConnect", "FCI USA Inc.", - "Validity Sensors", - "Coney Technology Co. Ltd.", - "Spans Logic", "Neterion Inc.", - "Qimonda", - "New Japan Radio Co. Ltd.", - "Velogix", "Montalvo Systems", - "iVivity Inc.", - "Walton Chaintech", - "AENEON", - "Lorom Industrial Co. Ltd.", - "Radiospire Networks", - "Sensio Technologies, Inc.", - "Nethra Imaging", - "Hexon Technology Pte Ltd", - "CompuStocx (CSX)", - "Methode Electronics, Inc.", - "Connect One Ltd.", - "Opulan Technologies", - "Septentrio NV", - "Goldenmars Technology Inc.", - "Kreton Corporation", - "Cochlear Ltd.", - "Altair Semiconductor", - "NetEffect, Inc.", - "Spansion, Inc.", - "Taiwan Semiconductor Mfg", - "Emphany Systems Inc.", - "ApaceWave Technologies", - "Mobilygen Corporation", "Tego", - "Cswitch Corporation", - "Haier (Beijing) IC Design Co.", - "MetaRAM", - "Axel Electronics Co. Ltd.", - "Tilera Corporation", - "Aquantia", - "Vivace Semiconductor", - "Redpine Signals", "Octalica", - "InterDigital Communications", - "Avant Technology", - "Asrock, Inc.", "Availink", - "Quartics, Inc.", - "Element CXI", - "Innovaciones Microelectronicas", - "VeriSilicon Microelectronics", - "W5 Networks" -}; + char partno[32]; + const char *form_factor; + char type_detail[256]; -static const char *vendors7[] = { "MOVEKING", "Mavrix Technology, Inc.", - "CellGuide Ltd.", "Faraday Technology", - "Diablo Technologies, Inc.", "Jennic", "Octasic", - "Molex Incorporated", - "3Leaf Networks", - "Bright Micron Technology", "Netxen", "NextWave Broadband Inc.", - "DisplayLink", "ZMOS Technology", - "Tec-Hill", "Multigig, Inc.", "Amimon", "Euphonic Technologies, Inc.", - "BRN Phoenix", - "InSilica", "Ember Corporation", "Avexir Technologies Corporation", - "Echelon Corporation", - "Edgewater Computer Systems", "XMOS Semiconductor Ltd.", - "GENUSION, Inc.", "Memory Corp NV", - "SiliconBlue Technologies", "Rambus Inc." -}; + dmi_mem_size size_MiB; -static const char **vendors[7] = { vendors1, vendors2, vendors3, vendors4, vendors5, vendors6, - vendors7 -}; + int spd_rev_major; // bytes[1] >> 4 + int spd_rev_minor; // bytes[1] & 0xf + + int week, year; + + gboolean ddr4_no_ee1004; + + struct dmi_mem_socket *dmi_socket; + int match_score; +} spd_data; + +#define spd_data_new() g_new0(spd_data, 1) +void spd_data_free(spd_data *s) { g_free(s); } /* * We consider that no data was written to this area of the SPD EEPROM if * all bytes read 0x00 or all bytes read 0xff */ -static int spd_written(unsigned char *bytes, int len) -{ +static int spd_written(unsigned char *bytes, int len) { do { - if (*bytes == 0x00 || *bytes == 0xFF) - return 1; + if (*bytes == 0x00 || *bytes == 0xFF) return 1; } while (--len && bytes++); return 0; } -static int parity(int value) -{ +static int parity(int value) { value ^= value >> 16; value ^= value >> 8; value ^= value >> 4; @@ -631,235 +122,152 @@ static int parity(int value) return (0x6996 >> value) & 1; } -static void decode_sdr_module_size(unsigned char *bytes, int *size) -{ - int i, k = 0; +static void decode_sdr_module_size(unsigned char *bytes, dmi_mem_size *size) { + unsigned short i, k = 0; i = (bytes[3] & 0x0f) + (bytes[4] & 0x0f) - 17; - if (bytes[5] <= 8 && bytes[17] <= 8) { - k = bytes[5] * bytes[17]; - } + if (bytes[5] <= 8 && bytes[17] <= 8) { k = bytes[5] * bytes[17]; } if (i > 0 && i <= 12 && k > 0) { - if (size) { - *size = (1 << i) * k; - } + if (size) { *size = (dmi_mem_size)k * (unsigned short)(1 << i); } } else { - if (size) { - *size = -1; - } + if (size) { *size = -1; } } } -static void decode_sdr_module_timings(unsigned char *bytes, float *tcl, float *trcd, float *trp, float *tras) -{ +static void decode_sdr_module_timings(unsigned char *bytes, float *tcl, float *trcd, float *trp, + float *tras) { float cas[3], ctime; int i, j; for (i = 0, j = 0; j < 7; j++) { - if (bytes[18] & 1 << j) { - cas[i++] = j + 1; - } + if (bytes[18] & 1 << j) { cas[i++] = j + 1; } } - ctime = (bytes[9] >> 4 + bytes[9] & 0xf) * 0.1; + ctime = ((bytes[9] >> 4) + (bytes[9] & 0xf)) * 0.1; - if (trcd) { - *trcd = ceil(bytes[29] / ctime); - } - if (trp) { - *trp = ceil(bytes[27] / ctime); - } - if (tras) { - *tras = ceil(bytes[30] / ctime); - } - if (tcl) { - *tcl = cas[i]; - } + if (trcd) { *trcd = ceil(bytes[29] / ctime); } + if (trp) { *trp = ceil(bytes[27] / ctime); } + if (tras) { *tras = ceil(bytes[30] / ctime); } + if (tcl) { *tcl = cas[i]; } } -static void decode_sdr_module_row_address_bits(unsigned char *bytes, char **bits) -{ +static void decode_sdr_module_row_address_bits(unsigned char *bytes, char **bits) { char *temp; switch (bytes[3]) { - case 0: - temp = "Undefined"; - break; - case 1: - temp = "1/16"; - break; - case 2: - temp = "2/27"; - break; - case 3: - temp = "3/18"; - break; + case 0: temp = "Undefined"; break; + case 1: temp = "1/16"; break; + case 2: temp = "2/27"; break; + case 3: temp = "3/18"; break; default: - /* printf("%d\n", bytes[3]); */ - temp = "Unknown"; + /* printf("%d\n", bytes[3]); */ + temp = NULL; } - if (bits) { - *bits = temp; - } + if (bits) { *bits = temp; } } -static void decode_sdr_module_col_address_bits(unsigned char *bytes, char **bits) -{ +static void decode_sdr_module_col_address_bits(unsigned char *bytes, char **bits) { char *temp; switch (bytes[4]) { - case 0: - temp = "Undefined"; - break; - case 1: - temp = "1/16"; - break; - case 2: - temp = "2/17"; - break; - case 3: - temp = "3/18"; - break; + case 0: temp = "Undefined"; break; + case 1: temp = "1/16"; break; + case 2: temp = "2/17"; break; + case 3: temp = "3/18"; break; default: - /*printf("%d\n", bytes[4]); */ - temp = "Unknown"; + /*printf("%d\n", bytes[4]); */ + temp = NULL; } - if (bits) { - *bits = temp; - } + if (bits) { *bits = temp; } } -static void decode_sdr_module_number_of_rows(unsigned char *bytes, int *rows) -{ - if (rows) { - *rows = bytes[5]; - } +static void decode_sdr_module_number_of_rows(unsigned char *bytes, int *rows) { + if (rows) { *rows = bytes[5]; } } -static void decode_sdr_module_data_with(unsigned char *bytes, int *width) -{ +static void decode_sdr_module_data_with(unsigned char *bytes, int *width) { if (width) { - if (bytes[7] > 1) { - *width = 0; - } else { - *width = (bytes[7] * 0xff) + bytes[6]; - } + if (bytes[7] > 1) { + *width = 0; + } else { + *width = (bytes[7] * 0xff) + bytes[6]; + } } } -static void decode_sdr_module_interface_signal_levels(unsigned char *bytes, char **signal_levels) -{ +static void decode_sdr_module_interface_signal_levels(unsigned char *bytes, char **signal_levels) { char *temp; switch (bytes[8]) { - case 0: - temp = "5.0 Volt/TTL"; - break; - case 1: - temp = "LVTTL"; - break; - case 2: - temp = "HSTL 1.5"; - break; - case 3: - temp = "SSTL 3.3"; - break; - case 4: - temp = "SSTL 2.5"; - break; - case 255: - temp = "New Table"; - break; - default: - temp = "Undefined"; + case 0: temp = "5.0 Volt/TTL"; break; + case 1: temp = "LVTTL"; break; + case 2: temp = "HSTL 1.5"; break; + case 3: temp = "SSTL 3.3"; break; + case 4: temp = "SSTL 2.5"; break; + case 255: temp = "New Table"; break; + default: temp = NULL; } - if (signal_levels) { - *signal_levels = temp; - } + if (signal_levels) { *signal_levels = temp; } } -static void decode_sdr_module_configuration_type(unsigned char *bytes, char **module_config_type) -{ +static void decode_sdr_module_configuration_type(unsigned char *bytes, char **module_config_type) { char *temp; switch (bytes[11]) { - case 0: - temp = "No parity"; - break; - case 1: - temp = "Parity"; - break; - case 2: - temp = "ECC"; - break; - default: - temp = "Undefined"; + case 0: temp = "No parity"; break; + case 1: temp = "Parity"; break; + case 2: temp = "ECC"; break; + default: temp = NULL; } - if (module_config_type) { - *module_config_type = temp; - } + if (module_config_type) { *module_config_type = temp; } } -static void decode_sdr_module_refresh_type(unsigned char *bytes, char **refresh_type) -{ +static void decode_sdr_module_refresh_type(unsigned char *bytes, char **refresh_type) { char *temp; if (bytes[12] & 0x80) { - temp = "Self refreshing"; + temp = "Self refreshing"; } else { - temp = "Not self refreshing"; + temp = "Not self refreshing"; } - if (refresh_type) { - *refresh_type = temp; - } + if (refresh_type) { *refresh_type = temp; } } -static void decode_sdr_module_refresh_rate(unsigned char *bytes, char **refresh_rate) -{ +static void decode_sdr_module_refresh_rate(unsigned char *bytes, char **refresh_rate) { char *temp; switch (bytes[12] & 0x7f) { - case 0: - temp = "Normal (15.625us)"; - break; - case 1: - temp = "Reduced (3.9us)"; - break; - case 2: - temp = "Reduced (7.8us)"; - break; - case 3: - temp = "Extended (31.3us)"; - break; - case 4: - temp = "Extended (62.5us)"; - break; - case 5: - temp = "Extended (125us)"; - break; - default: - temp = "Undefined"; + case 0: temp = "Normal (15.625us)"; break; + case 1: temp = "Reduced (3.9us)"; break; + case 2: temp = "Reduced (7.8us)"; break; + case 3: temp = "Extended (31.3us)"; break; + case 4: temp = "Extended (62.5us)"; break; + case 5: temp = "Extended (125us)"; break; + default: temp = NULL; } - if (refresh_rate) { - *refresh_rate = temp; + if (refresh_rate) { *refresh_rate = temp; } +} + +static void decode_sdr_module_detail(unsigned char *bytes, char *type_detail) { + bytes = bytes; /* silence unused warning */ + if (type_detail) { + snprintf(type_detail, 255, "SDR"); } } -static gchar *decode_sdr_sdram(unsigned char *bytes, int *size) -{ +static gchar *decode_sdr_sdram_extra(unsigned char *bytes) { int rows, data_width; float tcl, trcd, trp, tras; char *row_address_bits, *col_address_bits, *signal_level; char *module_config_type, *refresh_type, *refresh_rate; - decode_sdr_module_size(bytes, size); decode_sdr_module_timings(bytes, &tcl, &trcd, &trp, &tras); decode_sdr_module_row_address_bits(bytes, &row_address_bits); decode_sdr_module_col_address_bits(bytes, &col_address_bits); @@ -882,29 +290,30 @@ static gchar *decode_sdr_sdram(unsigned char *bytes, int *size) - Other misc stuff */ - return g_strdup_printf("[Module Information]\n" - "Module type=SDR\n" - "SPD revision=%d\n" - "Row address bits=%s\n" - "Column address bits=%s\n" - "Number of rows=%d\n" - "Data width=%d bits\n" - "Interface signal levels=%s\n" - "Configuration type=%s\n" - "Refresh=%s (%s)\n" - "[Timings]\n" - "tCL=%.2f\n" - "tRCD=%.2f\n" - "tRP=%.2f\n" - "tRAS=%.2f\n", - bytes[62], - row_address_bits, col_address_bits, rows, - data_width, signal_level, module_config_type, - refresh_type, refresh_rate, tcl, trcd, trp, tras); + /* expected to continue an [SPD] section */ + return g_strdup_printf("%s=%s\n" + "%s=%s\n" + "%s=%d\n" + "%s=%d bits\n" + "%s=%s\n" + "%s=%s\n" + "%s=%s (%s)\n" + "[%s]\n" + "tCL=%.2f\n" + "tRCD=%.2f\n" + "tRP=%.2f\n" + "tRAS=%.2f\n", + _("Row address bits"), row_address_bits ? row_address_bits : _("(Unknown)"), + _("Column address bits"), col_address_bits ? col_address_bits : _("(Unknown)"), + _("Number of rows"), rows, + _("Data width"), data_width, + _("Interface signal levels"), signal_level ? signal_level : _("(Unknown)"), + _("Configuration type"), module_config_type ? module_config_type : _("(Unknown)"), + _("Refresh"), refresh_type, refresh_rate ? refresh_rate : _("Unknown"), + _("Timings"), tcl, trcd, trp, tras); } -static void decode_ddr_module_speed(unsigned char *bytes, float *ddrclk, int *pcclk) -{ +static void decode_ddr_module_speed(unsigned char *bytes, float *ddrclk, int *pcclk) { float temp, clk; int tbits, pc; @@ -912,601 +321,952 @@ static void decode_ddr_module_speed(unsigned char *bytes, float *ddrclk, int *pc clk = 2 * (1000 / temp); tbits = (bytes[7] * 256) + bytes[6]; - if (bytes[11] == 2 || bytes[11] == 1) { - tbits -= 8; - } + if (bytes[11] == 2 || bytes[11] == 1) { tbits -= 8; } pc = clk * tbits / 8; - if (pc % 100 > 50) { - pc += 100; - } + if (pc % 100 > 50) { pc += 100; } pc -= pc % 100; - if (ddrclk) - *ddrclk = (int) clk; + if (ddrclk) *ddrclk = (int)clk; - if (pcclk) - *pcclk = pc; + if (pcclk) *pcclk = pc; } -static void decode_ddr_module_size(unsigned char *bytes, int *size) -{ - int i, k; +static void decode_ddr_module_size(unsigned char *bytes, dmi_mem_size *size) { + unsigned short i, k; i = (bytes[3] & 0x0f) + (bytes[4] & 0x0f) - 17; k = (bytes[5] <= 8 && bytes[17] <= 8) ? bytes[5] * bytes[17] : 0; if (i > 0 && i <= 12 && k > 0) { - if (size) { - *size = (1 << i) * k; - } + if (size) { *size = (dmi_mem_size)k * (unsigned short)(1 << i); } } else { - if (size) { - *size = -1; - } + if (size) { *size = -1; } } } -static void *decode_ddr_module_timings(unsigned char *bytes, float *tcl, float *trcd, float *trp, float *tras) -{ +static void decode_ddr_module_timings(unsigned char *bytes, float *tcl, float *trcd, float *trp, + float *tras) { float ctime; float highest_cas = 0; int i; for (i = 0; i < 7; i++) { - if (bytes[18] & (1 << i)) { - highest_cas = 1 + i * 0.5f; - } + if (bytes[18] & (1 << i)) { highest_cas = 1 + i * 0.5f; } } ctime = (bytes[9] >> 4) + (bytes[9] & 0xf) * 0.1; if (trcd) { - *trcd = (bytes[29] >> 2) + ((bytes[29] & 3) * 0.25); - *trcd = ceil(*trcd / ctime); + *trcd = (bytes[29] >> 2) + ((bytes[29] & 3) * 0.25); + *trcd = ceil(*trcd / ctime); } if (trp) { - *trp = (bytes[27] >> 2) + ((bytes[27] & 3) * 0.25); - *trp = ceil(*trp / ctime); + *trp = (bytes[27] >> 2) + ((bytes[27] & 3) * 0.25); + *trp = ceil(*trp / ctime); } if (tras) { - *tras = bytes[30]; - *tras = ceil(*tras / ctime); + *tras = bytes[30]; + *tras = ceil(*tras / ctime); } - if (tcl) { - *tcl = highest_cas; - } + if (tcl) { *tcl = highest_cas; } } -static gchar *decode_ddr_sdram(unsigned char *bytes, int *size) -{ +static void decode_ddr_module_detail(unsigned char *bytes, char *type_detail) { float ddr_clock; - float tcl, trcd, trp, tras; int pc_speed; + if (type_detail) { + decode_ddr_module_speed(bytes, &ddr_clock, &pc_speed); + snprintf(type_detail, 255, "DDR-%.0f (PC-%d)", ddr_clock, pc_speed); + } +} + +static gchar *decode_ddr_sdram_extra(unsigned char *bytes) { + float tcl, trcd, trp, tras; - decode_ddr_module_speed(bytes, &ddr_clock, &pc_speed); - decode_ddr_module_size(bytes, size); decode_ddr_module_timings(bytes, &tcl, &trcd, &trp, &tras); - return g_strdup_printf("[Module Information]\n" - "Module type=DDR %.2fMHz (PC%d)\n" - "SPD revision=%d.%d\n" - "[Timings]\n" - "tCL=%.2f\n" - "tRCD=%.2f\n" - "tRP=%.2f\n" - "tRAS=%.2f\n", ddr_clock, pc_speed, bytes[62] >> 4, bytes[62] & 0xf, tcl, trcd, trp, tras); + return g_strdup_printf("[%s]\n" + "tCL=%.2f\n" + "tRCD=%.2f\n" + "tRP=%.2f\n" + "tRAS=%.2f\n", + _("Timings"), tcl, trcd, trp, tras); } -static float decode_ddr2_module_ctime(unsigned char byte) -{ +static float decode_ddr2_module_ctime(unsigned char byte) { float ctime; ctime = (byte >> 4); byte &= 0xf; if (byte <= 9) { - ctime += byte * 0.1; + ctime += byte * 0.1; } else if (byte == 10) { - ctime += 0.25; + ctime += 0.25; } else if (byte == 11) { - ctime += 0.33; + ctime += 0.33; } else if (byte == 12) { - ctime += 0.66; + ctime += 0.66; } else if (byte == 13) { - ctime += 0.75; + ctime += 0.75; } return ctime; } -static void decode_ddr2_module_speed(unsigned char *bytes, float *ddr_clock, int *pc2_speed) -{ +static void decode_ddr2_module_speed(unsigned char *bytes, float *ddr_clock, int *pc2_speed) { float ctime; float ddrclk; int tbits, pcclk; - ctime = decode_ddr2_module_ctime(bytes[9]); ddrclk = 2 * (1000 / ctime); tbits = (bytes[7] * 256) + bytes[6]; - if (bytes[11] & 0x03) { - tbits -= 8; - } + if (bytes[11] & 0x03) { tbits -= 8; } pcclk = ddrclk * tbits / 8; pcclk -= pcclk % 100; - if (ddr_clock) { - *ddr_clock = (int) ddrclk; - } - if (pc2_speed) { - *pc2_speed = pcclk; - } + if (ddr_clock) { *ddr_clock = (int)ddrclk; } + if (pc2_speed) { *pc2_speed = pcclk; } } -static void decode_ddr2_module_size(unsigned char *bytes, int *size) -{ - int i, k; +static void decode_ddr2_module_size(unsigned char *bytes, dmi_mem_size *size) { + unsigned short i, k; i = (bytes[3] & 0x0f) + (bytes[4] & 0x0f) - 17; k = ((bytes[5] & 0x7) + 1) * bytes[17]; if (i > 0 && i <= 12 && k > 0) { - if (*size) { - *size = ((1 << i) * k); - } + if (size) { *size = (dmi_mem_size)k * (unsigned short)(1 << i); } } else { - if (*size) { - *size = 0; - } + if (size) { *size = 0; } } } -static void decode_ddr2_module_timings(unsigned char *bytes, float *trcd, float *trp, float *tras, float *tcl) -{ - float ctime; - float highest_cas = 0; - int i; - - for (i = 0; i < 7; i++) { - if (bytes[18] & (1 << i)) { - highest_cas = i; - } +static void decode_ddr2_module_type(unsigned char *bytes, const char **type) { + switch (bytes[20]) { + case 0x01: *type = "RDIMM (Registered DIMM)"; break; + case 0x02: *type = "UDIMM (Unbuffered DIMM)"; break; + case 0x04: *type = "SO-DIMM (Small Outline DIMM)"; break; + case 0x06: *type = "72b-SO-CDIMM (Small Outline Clocked DIMM, 72-bit data bus)"; break; + case 0x07: *type = "72b-SO-RDIMM (Small Outline Registered DIMM, 72-bit data bus)"; break; + case 0x08: *type = "Micro-DIMM"; break; + case 0x10: *type = "Mini-RDIMM (Mini Registered DIMM)"; break; + case 0x20: *type = "Mini-UDIMM (Mini Unbuffered DIMM)"; break; + default: *type = NULL; } +} - ctime = decode_ddr2_module_ctime(bytes[9]); +static void decode_ddr2_module_timings(float ctime, unsigned char *bytes, float *trcd, float *trp, float *tras) { - if (trcd) { - *trcd = ceil(((bytes[29] >> 2) + ((bytes[29] & 3) * 0.25)) / ctime); - } + if (trcd) { *trcd = ceil(((bytes[29] >> 2) + ((bytes[29] & 3) * 0.25)) / ctime); } - if (trp) { - *trp = ceil(((bytes[27] >> 2) + ((bytes[27] & 3) * 0.25)) / ctime); - } + if (trp) { *trp = ceil(((bytes[27] >> 2) + ((bytes[27] & 3) * 0.25)) / ctime); } - if (tras) { - *tras = ceil(bytes[30] / ctime); + if (tras) { *tras = ceil(bytes[30] / ctime); } +} + +static gboolean decode_ddr2_module_ctime_for_casx(int casx_minus, unsigned char *bytes, float *ctime, float *tcl){ + int highest_cas, i, bytei; + float ctimev = 0; + + switch (casx_minus){ + case 0: + bytei = 9; + break; + case 1: + bytei = 23; + break; + case 2: + bytei = 25; + break; + default: + return FALSE; } - if (tcl) { - *tcl = highest_cas; + for (i = 0; i < 7; i++) { + if (bytes[18] & (1 << i)) { highest_cas = i; } } + + if ((bytes[18] & (1 << (highest_cas-casx_minus))) == 0) + return FALSE; + + ctimev = decode_ddr2_module_ctime(bytes[bytei]); + if (ctimev == 0) + return FALSE; + + if (tcl) { *tcl = highest_cas-casx_minus; } + if (ctime) { *ctime = ctimev; } + + return TRUE; } -static gchar *decode_ddr2_sdram(unsigned char *bytes, int *size) -{ +static void decode_ddr2_module_detail(unsigned char *bytes, char *type_detail) { float ddr_clock; - float trcd, trp, tras, tcl; int pc2_speed; + if (type_detail) { + decode_ddr2_module_speed(bytes, &ddr_clock, &pc2_speed); + snprintf(type_detail, 255, "DDR2-%.0f (PC2-%d)", ddr_clock, pc2_speed); + } +} - decode_ddr2_module_speed(bytes, &ddr_clock, &pc2_speed); - decode_ddr2_module_size(bytes, size); - decode_ddr2_module_timings(bytes, &trcd, &trp, &tras, &tcl); - - return g_strdup_printf("[Module Information]\n" - "Module type=DDR2 %.2f MHz (PC2-%d)\n" - "SPD revision=%d.%d\n" - "[Timings]\n" - "tCL=%.2f\n" - "tRCD=%.2f\n" - "tRP=%.2f\n" - "tRAS=%.2f\n", ddr_clock, pc2_speed, bytes[62] >> 4, bytes[62] & 0xf, tcl, trcd, trp, tras); +static gchar *decode_ddr2_sdram_extra(unsigned char *bytes) { + float trcd, trp, tras, ctime, tcl; + const char* voltage; + gchar *out; + int i; + + switch(bytes[8]){ + case 0x0: + voltage = "TTL/5 V tolerant"; + break; + case 0x1: + voltage = "LVTTL"; + break; + case 0x2: + voltage = "HSTL 1.5 V"; + break; + case 0x3: + voltage = "SSTL 3.3 V"; + break; + case 0x4: + voltage = "SSTL 2.5 V"; + break; + case 0x5: + voltage = "SSTL 1.8 V"; + break; + default: + voltage = _("(Unknown)"); + } + + /* expected to continue an [SPD] section */ + out = g_strdup_printf("%s=%s\n" + "[%s]\n", + _("Voltage"), voltage, + _("JEDEC Timings")); + + for (i = 0; i <= 2; i++) { + if (!decode_ddr2_module_ctime_for_casx(i, bytes, &ctime, &tcl)) + break; + decode_ddr2_module_timings(ctime, bytes, &trcd, &trp, &tras); + out = h_strdup_cprintf("DDR2-%d=%.0f-%.0f-%.0f-%.0f\n", + out, + (int)(2 * (1000 / ctime)), tcl, trcd, trp, tras); + } + + return out; } -static void decode_ddr3_module_speed(unsigned char *bytes, float *ddr_clock, int *pc3_speed) -{ +static void decode_ddr3_module_speed(unsigned char *bytes, float *ddr_clock, int *pc3_speed) { float ctime; float ddrclk; int tbits, pcclk; float mtb = 0.125; - if (bytes[10] == 1 && bytes[11] == 8) - mtb = 0.125; - if (bytes[10] == 1 && bytes[11] == 15) - mtb = 0.0625; + if (bytes[10] == 1 && bytes[11] == 8) mtb = 0.125; + if (bytes[10] == 1 && bytes[11] == 15) mtb = 0.0625; ctime = mtb * bytes[12]; ddrclk = 2 * (1000 / ctime); tbits = 64; switch (bytes[8]) { - case 1: - tbits = 16; - break; - case 4: - tbits = 32; - break; + case 1: tbits = 16; break; + case 4: tbits = 32; break; case 3: - case 0xb: - tbits = 64; - break; + case 0xb: tbits = 64; break; } pcclk = ddrclk * tbits / 8; pcclk -= pcclk % 100; - if (ddr_clock) { - *ddr_clock = (int) ddrclk; - } - if (pc3_speed) { - *pc3_speed = pcclk; - } + if (ddr_clock) { *ddr_clock = (int)ddrclk; } + if (pc3_speed) { *pc3_speed = pcclk; } } -static void decode_ddr3_module_size(unsigned char *bytes, int *size) -{ - *size = 512 << bytes[4]; +static void decode_ddr3_module_size(unsigned char *bytes, dmi_mem_size *size) { + unsigned int sdr_capacity = 256 << (bytes[4] & 0xF); + unsigned int sdr_width = 4 << (bytes[7] & 0x7); + unsigned int bus_width = 8 << (bytes[8] & 0x7); + unsigned int ranks = 1 + ((bytes[7] >> 3) & 0x7); + + *size = (dmi_mem_size)sdr_capacity / 8 * bus_width / sdr_width * ranks; } -static void decode_ddr3_module_timings(unsigned char *bytes, float *trcd, float *trp, float *tras, float *tcl) -{ +static void decode_ddr3_module_timings(unsigned char *bytes, float *trcd, float *trp, float *tras, + float *tcl) { float ctime; - float highest_cas = 0; - int i; float mtb = 0.125; + float taa; - if (bytes[10] == 1 && bytes[11] == 8) - mtb = 0.125; - if (bytes[10] == 1 && bytes[11] == 15) - mtb = 0.0625; + if (bytes[10] == 1 && bytes[11] == 8) mtb = 0.125; + if (bytes[10] == 1 && bytes[11] == 15) mtb = 0.0625; ctime = mtb * bytes[12]; + taa = bytes[16] * mtb; - switch (bytes[14]) { - case 6: - highest_cas = 5; - break; - case 4: - highest_cas = 6; - break; - case 0xc: - highest_cas = 7; - break; - case 0x1e: - highest_cas = 8; - break; - } - if (trcd) { - *trcd = bytes[18] * mtb; - } + if (trcd) { *trcd = bytes[18] * mtb; } - if (trp) { - *trp = bytes[20] * mtb; - } + if (trp) { *trp = bytes[20] * mtb; } - if (tras) { - *tras = (bytes[22] + bytes[21] & 0xf) * mtb; - } + if (tras) { *tras = (bytes[22] + (bytes[21] & 0xf)) * mtb; } - if (tcl) { - *tcl = highest_cas; - } + if (tcl) { *tcl = ceil(taa/ctime); } } -static void decode_ddr3_module_type(unsigned char *bytes, const char **type) -{ +static void decode_ddr3_module_type(unsigned char *bytes, const char **type) { switch (bytes[3]) { - case 0x00: - *type = "Undefined"; - break; - case 0x01: - *type = "RDIMM (Registered Long DIMM)"; - break; - case 0x02: - *type = "UDIMM (Unbuffered Long DIMM)"; - break; - case 0x03: - *type = "SODIMM (Small Outline DIMM)"; - break; - default: - *type = "Unknown"; + case 0x01: *type = "RDIMM (Registered Long DIMM)"; break; + case 0x02: *type = "UDIMM (Unbuffered Long DIMM)"; break; + case 0x03: *type = "SODIMM (Small Outline DIMM)"; break; + default: *type = NULL; } } -static gchar *decode_ddr3_sdram(unsigned char *bytes, int *size) -{ +static void decode_ddr3_module_detail(unsigned char *bytes, char *type_detail) { float ddr_clock; - float trcd, trp, tras, tcl; int pc3_speed; - const char *type; + if (type_detail) { + decode_ddr3_module_speed(bytes, &ddr_clock, &pc3_speed); + snprintf(type_detail, 255, "DDR3-%.0f (PC3-%d)", ddr_clock, pc3_speed); + } +} + +static gchar *decode_ddr3_sdram_extra(unsigned char *bytes) { + float trcd, trp, tras, tcl; - decode_ddr3_module_speed(bytes, &ddr_clock, &pc3_speed); - decode_ddr3_module_size(bytes, size); decode_ddr3_module_timings(bytes, &trcd, &trp, &tras, &tcl); - decode_ddr3_module_type(bytes, &type); - - return g_strdup_printf("[Module Information]\n" - "Module type=DDR3 %.2f MHz (PC3-%d)\n" - "SPD revision=%d.%d\n" - "Type=%s\n" - "[Timings]\n" - "tCL=%.2f\n" - "tRCD=%.3fns\n" - "tRP=%.3fns\n" - "tRAS=%.3fns\n", - ddr_clock, pc3_speed, - bytes[1] >> 4, bytes[1] & 0xf, - type, - tcl, - trcd, - trp, - tras); + + int ranks = 1 + ((bytes[7] >> 3) & 0x7); + int pins = 4 << (bytes[7] & 0x7); + int die_count = (bytes[33] >> 4) & 0x7; + int ts = !!(bytes[32] & 0x80); + + /* expected to continue an [SPD] section */ + return g_strdup_printf("%s=%d\n" + "%s=%d\n" + "%s=%d %s\n" + "%s=[%02x] %s\n" + "%s=%s%s%s\n" + "%s=" + "%s%s%s%s%s%s%s%s" + "%s%s%s%s%s%s%s\n" + "[%s]\n" + "tCL=%.0f\n" + "tRCD=%.3fns\n" + "tRP=%.3fns\n" + "tRAS=%.3fns\n", + _("Ranks"), ranks, + _("IO Pins per Chip"), pins, + _("Die count"), die_count, die_count ? "" : _("(Unspecified)"), + _("Thermal Sensor"), bytes[32], ts ? _("Present") : _("Not present"), + _("Supported Voltages"), + (bytes[6] & 4) ? "1.25V " : "", + (bytes[6] & 2) ? "1.35V " : "", + (bytes[6] & 1) ? "" : "1.5V", + _("Supported CAS Latencies"), + (bytes[15] & 0x40) ? "18 " : "", + (bytes[15] & 0x20) ? "17 " : "", + (bytes[15] & 0x10) ? "16 " : "", + (bytes[15] & 0x08) ? "15 " : "", + (bytes[15] & 0x04) ? "14 " : "", + (bytes[15] & 0x02) ? "13 " : "", + (bytes[15] & 0x01) ? "12 " : "", + (bytes[14] & 0x80) ? "11 " : "", + (bytes[14] & 0x40) ? "10 " : "", + (bytes[14] & 0x20) ? "9 " : "", + (bytes[14] & 0x10) ? "8 " : "", + (bytes[14] & 0x08) ? "7 " : "", + (bytes[14] & 0x04) ? "6 " : "", + (bytes[14] & 0x02) ? "5 " : "", + (bytes[14] & 0x01) ? "4" : "", + _("Timings"), tcl, trcd, trp, tras + ); } -static void decode_ddr3_part_number(unsigned char *bytes, char *part_number) -{ +static void decode_ddr3_part_number(unsigned char *bytes, char *part_number) { int i; if (part_number) { - for (i = 128; i <= 145; i++) - *part_number++ = bytes[i]; - *part_number = '\0'; + for (i = 128; i <= 145; i++) *part_number++ = bytes[i]; + *part_number = '\0'; } } -static void decode_ddr3_manufacturer(unsigned char *bytes, char **manufacturer) -{ - char *out = "Unknown"; +static void decode_ddr34_manufacturer(unsigned char count, unsigned char code, char **manufacturer, int *bank, int *index) { + if (!manufacturer) return; + + if (code == 0x00 || code == 0xFF) { + *manufacturer = NULL; + return; + } + + if (parity(count) != 1 || parity(code) != 1) { + *manufacturer = _("Invalid"); + return; + } - end: - if (manufacturer) { - *manufacturer = out; + *bank = count & 0x7f; + *index = code & 0x7f; + if (*bank >= VENDORS_BANKS) { + *manufacturer = NULL; + return; } + + *manufacturer = (char *)JEDEC_MFG_STR(*bank, *index - 1); +} + +static void decode_ddr3_manufacturer(unsigned char *bytes, char **manufacturer, int *bank, int *index) { + decode_ddr34_manufacturer(bytes[117], bytes[118], (char **) manufacturer, bank, index); } -static void decode_module_manufacturer(unsigned char *bytes, char **manufacturer) -{ +static void decode_module_manufacturer(unsigned char *bytes, char **manufacturer) { char *out = "Unknown"; unsigned char first; int ai = 0; int len = 8; - unsigned char *initial = bytes; if (!spd_written(bytes, 8)) { - out = "Undefined"; - goto end; + out = "Undefined"; + goto end; } - do { - ai++; - } while ((--len && (*bytes++ == 0x7f))); + do { ai++; } while ((--len && (*bytes++ == 0x7f))); first = *--bytes; if (ai == 0) { - out = "Invalid"; - goto end; + out = "Invalid"; + goto end; } if (parity(first) != 1) { - out = "Invalid"; - goto end; + out = "Invalid"; + goto end; } - out = (char *) vendors[ai - 1][(first & 0x7f) - 1]; + out = (char*)JEDEC_MFG_STR(ai - 1, (first & 0x7f) - 1); - end: - if (manufacturer) { - *manufacturer = out; - } +end: + if (manufacturer) { *manufacturer = out; } } -static void decode_module_part_number(unsigned char *bytes, char *part_number) -{ +static void decode_module_part_number(unsigned char *bytes, char *part_number) { if (part_number) { - bytes += 8 + 64; + bytes += 8 + 64; + + while (*++bytes && *bytes >= 32 && *bytes < 127) { *part_number++ = *bytes; } + *part_number = '\0'; + } +} + +static char *print_spd_timings(int speed, float cas, float trcd, float trp, float tras, + float ctime) { + return g_strdup_printf("DDR4-%d=%.0f-%.0f-%.0f-%.0f\n", speed, cas, ceil(trcd / ctime - 0.025), + ceil(trp / ctime - 0.025), ceil(tras / ctime - 0.025)); +} + +static void decode_ddr4_module_type(unsigned char *bytes, const char **type) { + switch (bytes[3]) { + case 0x01: *type = "RDIMM (Registered DIMM)"; break; + case 0x02: *type = "UDIMM (Unbuffered DIMM)"; break; + case 0x03: *type = "SODIMM (Small Outline Unbuffered DIMM)"; break; + case 0x04: *type = "LRDIMM (Load-Reduced DIMM)"; break; + case 0x05: *type = "Mini-RDIMM (Mini Registered DIMM)"; break; + case 0x06: *type = "Mini-UDIMM (Mini Unbuffered DIMM)"; break; + case 0x08: *type = "72b-SO-RDIMM (Small Outline Registered DIMM, 72-bit data bus)"; break; + case 0x09: *type = "72b-SO-UDIMM (Small Outline Unbuffered DIMM, 72-bit data bus)"; break; + case 0x0c: *type = "16b-SO-UDIMM (Small Outline Unbuffered DIMM, 16-bit data bus)"; break; + case 0x0d: *type = "32b-SO-UDIMM (Small Outline Unbuffered DIMM, 32-bit data bus)"; break; + default: *type = NULL; + } +} + +static float ddr4_mtb_ftb_calc(unsigned char b1, signed char b2) { + float mtb = 0.125; + float ftb = 0.001; + return b1 * mtb + b2 * ftb; +} + +static void decode_ddr4_module_speed(unsigned char *bytes, float *ddr_clock, int *pc4_speed) { + float ctime; + float ddrclk; + int tbits, pcclk; + + ctime = ddr4_mtb_ftb_calc(bytes[18], bytes[125]); + ddrclk = 2 * (1000 / ctime); + tbits = 8 << (bytes[13] & 7); + + pcclk = ddrclk * tbits / 8; + pcclk -= pcclk % 100; + + if (ddr_clock) { *ddr_clock = (int)ddrclk; } + if (pc4_speed) { *pc4_speed = pcclk; } +} + +static void decode_ddr4_module_spd_timings(unsigned char *bytes, float speed, char **str) { + float ctime, ctime_max, pctime, taa, trcd, trp, tras; + int pcas, best_cas, base_cas, ci, i, j; + unsigned char cas_support[] = {bytes[20], bytes[21], bytes[22], bytes[23] & 0x1f}; + float possible_ctimes[] = {15 / 24.0, 15 / 22.0, 15 / 20.0, 15 / 18.0, + 15 / 16.0, 15 / 14.0, 15 / 12.0}; + + base_cas = bytes[23] & 0x80 ? 23 : 7; + + ctime = ddr4_mtb_ftb_calc(bytes[18], bytes[125]); + ctime_max = ddr4_mtb_ftb_calc(bytes[19], bytes[124]); + + taa = ddr4_mtb_ftb_calc(bytes[24], bytes[123]); + trcd = ddr4_mtb_ftb_calc(bytes[25], bytes[122]); + trp = ddr4_mtb_ftb_calc(bytes[26], bytes[121]); + tras = (((bytes[27] & 0x0f) << 8) + bytes[28]) * 0.125; + + *str = print_spd_timings((int)speed, ceil(taa / ctime - 0.025), trcd, trp, tras, ctime); + + for (ci = 0; ci < 7; ci++) { + best_cas = 0; + pctime = possible_ctimes[ci]; + + for (i = 3; i >= 0; i--) { + for (j = 7; j >= 0; j--) { + if ((cas_support[i] & (1 << j)) != 0) { + pcas = base_cas + 8 * i + j; + if (ceil(taa / pctime) - 0.025 <= pcas) { best_cas = pcas; } + } + } + } + + if (best_cas > 0 && pctime <= ctime_max && pctime >= ctime) { + *str = h_strdup_cprintf( + "%s\n", *str, + print_spd_timings((int)(2000.0 / pctime), best_cas, trcd, trp, tras, pctime)); + } + } +} + +static void decode_ddr4_module_size(unsigned char *bytes, dmi_mem_size *size) { + int sdrcap = 256 << (bytes[4] & 15); + int buswidth = 8 << (bytes[13] & 7); + int sdrwidth = 4 << (bytes[12] & 7); + int signal_loading = bytes[6] & 3; + int lranks_per_dimm = ((bytes[12] >> 3) & 7) + 1; + + if (signal_loading == 2) lranks_per_dimm *= ((bytes[6] >> 4) & 7) + 1; + + *size = (dmi_mem_size)sdrcap / 8 * buswidth / sdrwidth * lranks_per_dimm; +} + + +static void decode_ddr234_module_date(unsigned char weekb, unsigned char yearb, int *week, int *year) { + if (yearb == 0x0 || yearb == 0xff || + weekb == 0x0 || weekb == 0xff) { + return; + } + *week = (weekb>>4) & 0xf; + *week *= 10; + *week += weekb & 0xf; + *year = (yearb>>4) & 0xf; + *year *= 10; + *year += yearb & 0xf; + *year += 2000; +} + +static void decode_ddr2_module_date(unsigned char *bytes, int *week, int *year) { + decode_ddr234_module_date(bytes[94], bytes[93], week, year); +} - while (*bytes++ && *bytes >= 32 && *bytes < 127) { - *part_number++ = *bytes; - } - *part_number = '\0'; +static void decode_ddr3_module_date(unsigned char *bytes, int *week, int *year) { + decode_ddr234_module_date(bytes[121], bytes[120], week, year); +} + +static void decode_ddr4_module_date(unsigned char *bytes, int spd_size, int *week, int *year) { + if (spd_size < 324) + return; + decode_ddr234_module_date(bytes[324], bytes[323], week, year); +} + +static void decode_ddr3_dram_manufacturer(unsigned char *bytes, + char **manufacturer, int *bank, int *index) { + decode_ddr34_manufacturer(bytes[94], bytes[95], (char **) manufacturer, bank, index); +} + +static void decode_ddr4_dram_manufacturer(unsigned char *bytes, int spd_size, + char **manufacturer, int *bank, int *index) { + if (spd_size < 351) { + *manufacturer = NULL; + return; + } + + decode_ddr34_manufacturer(bytes[350], bytes[351], (char **) manufacturer, bank, index); +} + +static void detect_ddr4_xmp(unsigned char *bytes, int spd_size, int *majv, int *minv) { + if (spd_size < 387) + return; + + *majv = 0; *minv = 0; + + if (bytes[384] != 0x0c || bytes[385] != 0x4a) // XMP magic number + return; + + if (majv) + *majv = bytes[387] >> 4; + if (minv) + *minv = bytes[387] & 0xf; +} + +static void decode_ddr4_xmp(unsigned char *bytes, int spd_size, char **str) { + float ctime; + float ddrclk, taa, trcd, trp, tras; + + if (spd_size < 405) + return; + + ctime = ddr4_mtb_ftb_calc(bytes[396], bytes[431]); + ddrclk = 2 * (1000 / ctime); + taa = ddr4_mtb_ftb_calc(bytes[401], bytes[430]); + trcd = ddr4_mtb_ftb_calc(bytes[402], bytes[429]); + trp = ddr4_mtb_ftb_calc(bytes[403], bytes[428]); + tras = (((bytes[404] & 0x0f) << 8) + bytes[405]) * 0.125; + + *str = g_strdup_printf("[%s]\n" + "%s=DDR4 %d MHz\n" + "%s=%d.%d V\n" + "[%s]\n" + "%s", + _("XMP Profile"), + _("Speed"), (int) ddrclk, + _("Voltage"), bytes[393] >> 7, bytes[393] & 0x7f, + _("XMP Timings"), + print_spd_timings((int) ddrclk, ceil(taa/ctime - 0.025), trcd, trp, tras, ctime)); +} + +static void decode_ddr4_module_detail(unsigned char *bytes, char *type_detail) { + float ddr_clock; + int pc4_speed; + if (type_detail) { + decode_ddr4_module_speed(bytes, &ddr_clock, &pc4_speed); + snprintf(type_detail, 255, "DDR4-%.0f (PC4-%d)", ddr_clock, pc4_speed); + } +} + +static gchar *decode_ddr4_sdram_extra(unsigned char *bytes, int spd_size) { + float ddr_clock; + int pc4_speed, xmp_majv = -1, xmp_minv = -1; + char *speed_timings = NULL, *xmp_profile = NULL, *xmp = NULL, *manf_date = NULL; + static gchar *out; + + decode_ddr4_module_speed(bytes, &ddr_clock, &pc4_speed); + decode_ddr4_module_spd_timings(bytes, ddr_clock, &speed_timings); + detect_ddr4_xmp(bytes, spd_size, &xmp_majv, &xmp_minv); + + if (xmp_majv == -1 && xmp_minv == -1) { + xmp = NULL; + } + else if (xmp_majv <= 0 && xmp_minv <= 0) { + xmp = g_strdup(_("No")); + } + else { + xmp = g_strdup_printf("%s (revision %d.%d)", _("Yes"), xmp_majv, xmp_minv); + if (xmp_majv == 2 && xmp_minv == 0) + decode_ddr4_xmp(bytes, spd_size, &xmp_profile); + } + + /* expected to continue an [SPD] section */ + out = g_strdup_printf("%s=%s\n" + "%s=%s\n" + "[%s]\n" + "%s\n" + "%s", + _("Voltage"), bytes[11] & 0x01 ? "1.2 V": _("(Unknown)"), + _("XMP"), xmp ? xmp : _("(Unknown)"), + _("JEDEC Timings"), speed_timings, + xmp_profile ? xmp_profile: ""); + + g_free(speed_timings); + g_free(manf_date); + g_free(xmp); + g_free(xmp_profile); + + return out; +} + +static void decode_ddr4_part_number(unsigned char *bytes, int spd_size, char *part_number) { + int i; + if (!part_number) return; + + if (spd_size < 348) { + *part_number++ = '\0'; + return; } + + for (i = 329; i <= 348; i++) + *part_number++ = bytes[i]; + *part_number = '\0'; +} + +static void decode_ddr4_module_manufacturer(unsigned char *bytes, int spd_size, + char **manufacturer, int *bank, int *index) { + if (spd_size < 321) { + *manufacturer = NULL; + return; + } + + decode_ddr34_manufacturer(bytes[320], bytes[321], manufacturer, bank, index); } -static int decode_ram_type(unsigned char *bytes) -{ +static int decode_ram_type(unsigned char *bytes) { if (bytes[0] < 4) { - switch (bytes[2]) { - case 1: - return DIRECT_RAMBUS; - case 17: - return RAMBUS; - } + switch (bytes[2]) { + case 1: return DIRECT_RAMBUS; + case 17: return RAMBUS; + } } else { - switch (bytes[2]) { - case 1: - return FPM_DRAM; - case 2: - return EDO; - case 3: - return PIPELINED_NIBBLE; - case 4: - return SDR_SDRAM; - case 5: - return MULTIPLEXED_ROM; - case 6: - return DDR_SGRAM; - case 7: - return DDR_SDRAM; - case 8: - return DDR2_SDRAM; - case 11: - return DDR3_SDRAM; - } + switch (bytes[2]) { + case 1: return FPM_DRAM; + case 2: return EDO; + case 3: return PIPELINED_NIBBLE; + case 4: return SDR_SDRAM; + case 5: return MULTIPLEXED_ROM; + case 6: return DDR_SGRAM; + case 7: return DDR_SDRAM; + case 8: return DDR2_SDRAM; + case 11: return DDR3_SDRAM; + case 12: return DDR4_SDRAM; + } } return UNKNOWN; } -static void read_spd(char *spd_path, int offset, size_t size, int use_sysfs, unsigned char *bytes_out) -{ +static int read_spd(char *spd_path, int offset, size_t size, int use_sysfs, + unsigned char *bytes_out) { + int data_size = 0; if (use_sysfs) { - FILE *spd; - gchar *temp_path; + FILE *spd; + gchar *temp_path; - temp_path = g_strdup_printf("%s/eeprom", spd_path); - if ((spd = fopen(temp_path, "rb"))) { - fseek(spd, offset, SEEK_SET); - fread(bytes_out, 1, size, spd); - fclose(spd); - } + temp_path = g_strdup_printf("%s/eeprom", spd_path); + if ((spd = fopen(temp_path, "rb"))) { + fseek(spd, offset, SEEK_SET); + data_size = fread(bytes_out, 1, size, spd); + fclose(spd); + } - g_free(temp_path); + g_free(temp_path); } else { - int i; + int i; - for (i = 0; i <= 3; i++) { - FILE *spd; - char *temp_path; + for (i = 0; i <= 3; i++) { + FILE *spd; + char *temp_path; - temp_path = g_strdup_printf("%s/%02x", spd_path, offset + i * 16); - if ((spd = fopen(temp_path, "rb"))) { - fread(bytes_out + i * 16, 1, 16, spd); - fclose(spd); - } + temp_path = g_strdup_printf("%s/%02x", spd_path, offset + i * 16); + if ((spd = fopen(temp_path, "rb"))) { + data_size += fread(bytes_out + i * 16, 1, 16, spd); + fclose(spd); + } - g_free(temp_path); - } + g_free(temp_path); + } } + + return data_size; } -static gchar *decode_dimms(GSList * dimm_list, gboolean use_sysfs) -{ - GSList *dimm; - GString *output; - gint count = 0; - - output = g_string_new(""); - - for (dimm = dimm_list; dimm; dimm = dimm->next, count++) { - gchar *spd_path = (gchar *) dimm->data; - gchar *manufacturer; - gchar *detailed_info; - gchar *moreinfo_key; - gchar part_number[32]; - unsigned char bytes[256]; - int module_size; - RamType ram_type; - - shell_status_pulse(); - - read_spd(spd_path, 0, 256, use_sysfs, bytes); - ram_type = decode_ram_type(bytes); - - switch (ram_type) { - case DDR2_SDRAM: - detailed_info = decode_ddr2_sdram(bytes, &module_size); - decode_module_part_number(bytes, part_number); - decode_module_manufacturer(bytes + 64, &manufacturer); - break; - case DDR3_SDRAM: - detailed_info = decode_ddr3_sdram(bytes, &module_size); - decode_ddr3_part_number(bytes, part_number); - decode_ddr3_manufacturer(bytes, &manufacturer); - break; - case DDR_SDRAM: - detailed_info = decode_ddr_sdram(bytes, &module_size); - decode_module_part_number(bytes, part_number); - decode_module_manufacturer(bytes + 64, &manufacturer); - break; - case SDR_SDRAM: - detailed_info = decode_sdr_sdram(bytes, &module_size); - decode_module_part_number(bytes, part_number); - decode_module_manufacturer(bytes + 64, &manufacturer); - break; - default: - DEBUG("Unsupported EEPROM type: %s\n", ram_types[ram_type]); - continue; - } - - - - gchar *key = g_strdup_printf("MEM%d", count); - moreinfo_add_with_prefix("DEV", key, g_strdup(detailed_info)); - g_free(key); - g_string_append_printf(output, "$MEM%d$%d=%s|%d MB|%s\n", count, count, part_number, module_size, manufacturer); - - g_free(spd_path); - g_free(detailed_info); +static GSList *decode_dimms2(GSList *eeprom_list, const gchar *driver, gboolean use_sysfs, int max_size) { + GSList *eeprom, *dimm_list = NULL; + int count = 0; + int spd_size = 0; + unsigned char bytes[512] = {0}; + spd_data *s = NULL; + + for (eeprom = eeprom_list; eeprom; eeprom = eeprom->next, count++) { + gchar *spd_path = (gchar*)eeprom->data; + s = NULL; + + RamType ram_type; + + memset(bytes, 0, 512); /* clear */ + spd_size = read_spd(spd_path, 0, max_size, use_sysfs, bytes); + ram_type = decode_ram_type(bytes); + + switch (ram_type) { + case SDR_SDRAM: + s = spd_data_new(); + memcpy(s->bytes, bytes, 512); + decode_module_part_number(bytes, s->partno); + decode_module_manufacturer(bytes + 64, (char**)&s->vendor_str); + decode_sdr_module_size(bytes, &s->size_MiB); + decode_sdr_module_detail(bytes, s->type_detail); + break; + case DDR_SDRAM: + s = spd_data_new(); + memcpy(s->bytes, bytes, 512); + decode_module_part_number(bytes, s->partno); + decode_module_manufacturer(bytes + 64, (char**)&s->vendor_str); + decode_ddr_module_size(bytes, &s->size_MiB); + decode_ddr_module_detail(bytes, s->type_detail); + break; + case DDR2_SDRAM: + s = spd_data_new(); + memcpy(s->bytes, bytes, 512); + decode_module_part_number(bytes, s->partno); + decode_module_manufacturer(bytes + 64, (char**)&s->vendor_str); + decode_ddr2_module_size(bytes, &s->size_MiB); + decode_ddr2_module_detail(bytes, s->type_detail); + decode_ddr2_module_type(bytes, &s->form_factor); + decode_ddr2_module_date(bytes, &s->week, &s->year); + break; + case DDR3_SDRAM: + s = spd_data_new(); + memcpy(s->bytes, bytes, 512); + decode_ddr3_part_number(bytes, s->partno); + decode_ddr3_manufacturer(bytes, (char**)&s->vendor_str, + &s->vendor_bank, &s->vendor_index); + decode_ddr3_dram_manufacturer(bytes, (char**)&s->dram_vendor_str, + &s->dram_vendor_bank, &s->dram_vendor_index); + decode_ddr3_module_size(bytes, &s->size_MiB); + decode_ddr3_module_type(bytes, &s->form_factor); + decode_ddr3_module_detail(bytes, s->type_detail); + decode_ddr3_module_date(bytes, &s->week, &s->year); + break; + case DDR4_SDRAM: + s = spd_data_new(); + memcpy(s->bytes, bytes, 512); + decode_ddr4_part_number(bytes, spd_size, s->partno); + decode_ddr4_module_manufacturer(bytes, spd_size, (char**)&s->vendor_str, + &s->vendor_bank, &s->vendor_index); + decode_ddr4_dram_manufacturer(bytes, spd_size, (char**)&s->dram_vendor_str, + &s->dram_vendor_bank, &s->dram_vendor_index); + decode_ddr4_module_size(bytes, &s->size_MiB); + decode_ddr4_module_type(bytes, &s->form_factor); + decode_ddr4_module_detail(bytes, s->type_detail); + decode_ddr4_module_date(bytes, spd_size, &s->week, &s->year); + s->ddr4_no_ee1004 = s->ddr4_no_ee1004 || (spd_size < 512); + spd_ddr4_partial_data = spd_ddr4_partial_data || s->ddr4_no_ee1004; + break; + case UNKNOWN: + break; + default: + DEBUG("Unsupported EEPROM type: %s for %s\n", GET_RAM_TYPE_STR(ram_type), spd_path); continue; + if (ram_type) { + /* some kind of RAM that we can't decode, but exists */ + s = spd_data_new(); + memcpy(s->bytes, bytes, 512); + } + } + + if (s) { + strncpy(s->dev, g_basename(spd_path), 31); + s->spd_driver = driver; + s->spd_size = spd_size; + s->type = ram_type; + spd_ram_types |= (1 << (ram_type-1)); + switch (ram_type) { + case SDR_SDRAM: + case DDR_SDRAM: + case DDR2_SDRAM: + s->spd_rev_major = bytes[62] >> 4; + s->spd_rev_minor = bytes[62] & 0xf; + break; + case DDR3_SDRAM: + case DDR4_SDRAM: + s->spd_rev_major = bytes[1] >> 4; + s->spd_rev_minor = bytes[1] & 0xf; + break; + } + s->vendor = vendor_match(s->vendor_str, NULL); + s->dram_vendor = vendor_match(s->dram_vendor_str, NULL); + dimm_list = g_slist_append(dimm_list, s); + } } - return g_string_free(output, FALSE); + return dimm_list; } -void scan_spd_do(void) -{ - GDir *dir = NULL; - GSList *dimm_list = NULL; - gboolean use_sysfs = FALSE; - gchar *dir_entry; - gchar *list; - - if (g_file_test("/sys/bus/i2c/drivers/eeprom", G_FILE_TEST_EXISTS)) { - dir = g_dir_open("/sys/bus/i2c/drivers/eeprom", 0, NULL); - use_sysfs = TRUE; - } else if (g_file_test("/proc/sys/dev/sensors", G_FILE_TEST_EXISTS)) { - dir = g_dir_open("/proc/sys/dev/sensors", 0, NULL); - } +struct SpdDriver { + const char *driver; + const char *dir_path; + const gint max_size; + const gboolean use_sysfs; + const char *spd_name; +}; - if (!dir) { - g_free(spd_info); - if (!g_file_test("/sys/module/eeprom", G_FILE_TEST_EXISTS)) { - spd_info = g_strdup(_("[SPD]\n" - "Please load the eeprom module to obtain information about memory SPD=\n" - "[$ShellParam$]\n" - "ReloadInterval=500\n")); - } else { - spd_info = g_strdup(_("[SPD]\n" "Reading memory SPD not supported on this system=\n")); - } - - return; +static const struct SpdDriver spd_drivers[] = { + { "ee1004", "/sys/bus/i2c/drivers/ee1004", 512, TRUE, "ee1004"}, + { "at24", "/sys/bus/i2c/drivers/at24" , 256, TRUE, "spd"}, + { "eeprom", "/sys/bus/i2c/drivers/eeprom", 256, TRUE, "eeprom"}, + { "eeprom-proc", "/proc/sys/dev/sensors" , 256, FALSE, NULL}, + { NULL } +}; + +GSList *spd_scan() { + GDir *dir = NULL; + GSList *eeprom_list = NULL, *dimm_list = NULL; + gchar *dimm_list_entry, *dir_entry, *name_file, *name; + const struct SpdDriver *driver; + gboolean driver_found = FALSE; + gboolean is_spd = FALSE; + + spd_ddr4_partial_data = FALSE; + spd_no_driver = FALSE; + spd_no_support = FALSE; + + for (driver = spd_drivers; driver->dir_path; driver++) { + if (g_file_test(driver->dir_path, G_FILE_TEST_EXISTS)) { + dir = g_dir_open(driver->dir_path, 0, NULL); + if (!dir) continue; + + driver_found = TRUE; + while ((dir_entry = (char *)g_dir_read_name(dir))) { + is_spd = FALSE; + + if (driver->use_sysfs) { + name_file = NULL; + name = NULL; + + if (isdigit(dir_entry[0])) { + name_file = g_build_filename(driver->dir_path, dir_entry, "name", NULL); + g_file_get_contents(name_file, &name, NULL, NULL); + + is_spd = g_strcmp0(name, driver->spd_name); + + g_free(name_file); + g_free(name); + } + } + else { + is_spd = g_str_has_prefix(dir_entry, "eeprom-"); + } + + if (is_spd){ + dimm_list_entry = g_strdup_printf("%s/%s", driver->dir_path, dir_entry); + eeprom_list = g_slist_prepend(eeprom_list, dimm_list_entry); + } + } + + g_dir_close(dir); + + if (eeprom_list) { + dimm_list = decode_dimms2(eeprom_list, driver->driver, driver->use_sysfs, driver->max_size); + g_slist_free(eeprom_list); + eeprom_list = NULL; + } + if (dimm_list) break; + } } - while ((dir_entry = (char *) g_dir_read_name(dir))) { - if (use_sysfs && isdigit(dir_entry[0])) { - dimm_list = g_slist_prepend(dimm_list, g_strdup_printf("/sys/bus/i2c/drivers/eeprom/%s", dir_entry)); - } else if (g_str_has_prefix(dir_entry, "eeprom-")) { - dimm_list = g_slist_prepend(dimm_list, g_strdup_printf("/proc/sys/dev/sensors/%s", dir_entry)); - } + if (!driver_found) { + if (!g_file_test("/sys/module/eeprom", G_FILE_TEST_EXISTS) && + !g_file_test("/sys/module/at24", G_FILE_TEST_EXISTS)) { + spd_no_driver = TRUE; /* trigger hinote for no eeprom driver */ + } else { + spd_no_support = TRUE; /* trigger hinote for unsupported system */ + } } - g_dir_close(dir); - - list = decode_dimms(dimm_list, use_sysfs); - g_slist_free(dimm_list); - - g_free(spd_info); - spd_info = g_strdup_printf("[%s]\n" - "%s\n" - "[$ShellParam$]\n" - "ViewType=1\n" - "ColumnTitle$TextValue=%s\n" /* Bank */ - "ColumnTitle$Extra1=%s\n" /* Size */ - "ColumnTitle$Extra2=%s\n" /* Manufacturer */ - "ColumnTitle$Value=%s\n" /* Model */ - "ShowColumnHeaders=true\n", - _("SPD"), list, - _("Bank"), _("Size"), _("Manufacturer"), _("Model") ); - g_free(list); + return dimm_list; } diff --git a/modules/devices/spd-vendors.c b/modules/devices/spd-vendors.c new file mode 100644 index 00000000..80b2a6a4 --- /dev/null +++ b/modules/devices/spd-vendors.c @@ -0,0 +1,292 @@ +/* + * spd-decode.c, spd-vendors.c + * Copyright (c) 2010 L. A. F. Pereira + * modified by Ondrej Čerman (2019) + * modified by Burt P. (2019) + * + * Based on decode-dimms.pl + * Copyright 1998, 1999 Philip Edelbrock + * modified by Christian Zuckschwerdt + * modified by Burkart Lingner + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +/* from decode-dimms, in the i2c-tools package: + * https://github.com/angeloc/i2c-tools/blob/master/eeprom/decode-dimms + * + * STANDARD MANUFACTURERS IDENTIFICATION CODEs + * as defined in JEP106 + * + * As of: 28 June 2019 + * + */ + +#define VENDORS_BANKS 8 +#define VENDORS_ITEMS 128 +#define JEDEC_MFG_STR(b,i) ( (b >= 0 && b < VENDORS_BANKS && i < VENDORS_ITEMS) ? vendors[(b)][(i)] : NULL ) +static const char* vendors[VENDORS_BANKS][VENDORS_ITEMS] = +{ +{"AMD", "AMI", "Fairchild", "Fujitsu", + "GTE", "Harris", "Hitachi", "Inmos", + "Intel", "I.T.T.", "Intersil", "Monolithic Memories", + "Mostek", "Freescale (former Motorola)", "National", "NEC", + "RCA", "Raytheon", "Conexant (Rockwell)", "Seeq", + "NXP (former Signetics, Philips Semi.)", "Synertek", "Texas Instruments", "Toshiba", + "Xicor", "Zilog", "Eurotechnique", "Mitsubishi", + "Lucent (AT&T)", "Exel", "Atmel", "SGS/Thomson", + "Lattice Semi.", "NCR", "Wafer Scale Integration", "IBM", + "Tristar", "Visic", "Intl. CMOS Technology", "SSSI", + "MicrochipTechnology", "Ricoh Ltd.", "VLSI", "Micron Technology", + "SK Hynix (former Hyundai Electronics)", "OKI Semiconductor", "ACTEL", "Sharp", + "Catalyst", "Panasonic", "IDT", "Cypress", + "DEC", "LSI Logic", "Zarlink (former Plessey)", "UTMC", + "Thinking Machine", "Thomson CSF", "Integrated CMOS (Vertex)", "Honeywell", + "Tektronix", "Oracle Corporation (former Sun Microsystems)", "Silicon Storage Technology", "ProMos/Mosel Vitelic", + "Infineon (former Siemens)", "Macronix", "Xerox", "Plus Logic", + "SunDisk", "Elan Circuit Tech.", "European Silicon Str.", "Apple Computer", + "Xilinx", "Compaq", "Protocol Engines", "SCI", + "Seiko Instruments", "Samsung", "I3 Design System", "Klic", + "Crosspoint Solutions", "Alliance Semiconductor", "Tandem", "Hewlett-Packard", + "Integrated Silicon Solutions", "Brooktree", "New Media", "MHS Electronic", + "Performance Semi.", "Winbond Electronic", "Kawasaki Steel", "Bright Micro", + "TECMAR", "Exar", "PCMCIA", "LG Semi (former Goldstar)", + "Northern Telecom", "Sanyo", "Array Microsystems", "Crystal Semiconductor", + "Analog Devices", "PMC-Sierra", "Asparix", "Convex Computer", + "Quality Semiconductor", "Nimbus Technology", "Transwitch", "Micronas (ITT Intermetall)", + "Cannon", "Altera", "NEXCOM", "QUALCOMM", + "Sony", "Cray Research", "AMS(Austria Micro)", "Vitesse", + "Aster Electronics", "Bay Networks (Synoptic)", "Zentrum or ZMD", "TRW", + "Thesys", "Solbourne Computer", "Allied-Signal", "Dialog", + "Media Vision", "Numonyx Corporation (former Level One Communication)"}, +{"Cirrus Logic", "National Instruments", "ILC Data Device", "Alcatel Mietec", + "Micro Linear", "Univ. of NC", "JTAG Technologies", "BAE Systems", + "Nchip", "Galileo Tech", "Bestlink Systems", "Graychip", + "GENNUM", "VideoLogic", "Robert Bosch", "Chip Express", + "DATARAM", "United Microelec Corp.", "TCSI", "Smart Modular", + "Hughes Aircraft", "Lanstar Semiconductor", "Qlogic", "Kingston", + "Music Semi", "Ericsson Components", "SpaSE", "Eon Silicon Devices", + "Programmable Micro Corp", "DoD", "Integ. Memories Tech.", "Corollary Inc.", + "Dallas Semiconductor", "Omnivision", "EIV(Switzerland)", "Novatel Wireless", + "Zarlink (former Mitel)", "Clearpoint", "Cabletron", "STEC (former Silicon Technology)", + "Vanguard", "Hagiwara Sys-Com", "Vantis", "Celestica", + "Century", "Hal Computers", "Rohm Company Ltd.", "Juniper Networks", + "Libit Signal Processing", "Mushkin Enhanced Memory", "Tundra Semiconductor", "Adaptec Inc.", + "LightSpeed Semi.", "ZSP Corp.", "AMIC Technology", "Adobe Systems", + "Dynachip", "PNY Electronics", "Newport Digital", "MMC Networks", + "T Square", "Seiko Epson", "Broadcom", "Viking Components", + "V3 Semiconductor", "Flextronics (former Orbit)", "Suwa Electronics", "Transmeta", + "Micron CMS", "American Computer & Digital Components Inc", "Enhance 3000 Inc", "Tower Semiconductor", + "CPU Design", "Price Point", "Maxim Integrated Product", "Tellabs", + "Centaur Technology", "Unigen Corporation", "Transcend Information", "Memory Card Technology", + "CKD Corporation Ltd.", "Capital Instruments, Inc.", "Aica Kogyo, Ltd.", "Linvex Technology", + "MSC Vertriebs GmbH", "AKM Company, Ltd.", "Dynamem, Inc.", "NERA ASA", + "GSI Technology", "Dane-Elec (C Memory)", "Acorn Computers", "Lara Technology", + "Oak Technology, Inc.", "Itec Memory", "Tanisys Technology", "Truevision", + "Wintec Industries", "Super PC Memory", "MGV Memory", "Galvantech", + "Gadzoox Nteworks", "Multi Dimensional Cons.", "GateField", "Integrated Memory System", + "Triscend", "XaQti", "Goldenram", "Clear Logic", + "Cimaron Communications", "Nippon Steel Semi. Corp.", "Advantage Memory", "AMCC", + "LeCroy", "Yamaha Corporation", "Digital Microwave", "NetLogic Microsystems", + "MIMOS Semiconductor", "Advanced Fibre", "BF Goodrich Data.", "Epigram", + "Acbel Polytech Inc.", "Apacer Technology", "Admor Memory", "FOXCONN", + "Quadratics Superconductor", "3COM"}, +{"Camintonn Corporation", "ISOA Incorporated", "Agate Semiconductor", "ADMtek Incorporated", + "HYPERTEC", "Adhoc Technologies", "MOSAID Technologies", "Ardent Technologies", + "Switchcore", "Cisco Systems, Inc.", "Allayer Technologies", "WorkX AG (Wichman)", + "Oasis Semiconductor", "Novanet Semiconductor", "E-M Solutions", "Power General", + "Advanced Hardware Arch.", "Inova Semiconductors GmbH", "Telocity", "Delkin Devices", + "Symagery Microsystems", "C-Port Corporation", "SiberCore Technologies", "Southland Microsystems", + "Malleable Technologies", "Kendin Communications", "Great Technology Microcomputer", "Sanmina Corporation", + "HADCO Corporation", "Corsair", "Actrans System Inc.", "ALPHA Technologies", + "Silicon Laboratories, Inc. (Cygnal)", "Artesyn Technologies", "Align Manufacturing", "Peregrine Semiconductor", + "Chameleon Systems", "Aplus Flash Technology", "MIPS Technologies", "Chrysalis ITS", + "ADTEC Corporation", "Kentron Technologies", "Win Technologies", "Tachyon Semiconductor (former ASIC Designs Inc.)", + "Extreme Packet Devices", "RF Micro Devices", "Siemens AG", "Sarnoff Corporation", + "Itautec SA (former Itautec Philco SA)", "Radiata Inc.", "Benchmark Elect. (AVEX)", "Legend", + "SpecTek Incorporated", "Hi/fn", "Enikia Incorporated", "SwitchOn Networks", + "AANetcom Incorporated", "Micro Memory Bank", "ESS Technology", "Virata Corporation", + "Excess Bandwidth", "West Bay Semiconductor", "DSP Group", "Newport Communications", + "Chip2Chip Incorporated", "Phobos Corporation", "Intellitech Corporation", "Nordic VLSI ASA", + "Ishoni Networks", "Silicon Spice", "Alchemy Semiconductor", "Agilent Technologies", + "Centillium Communications", "W.L. Gore", "HanBit Electronics", "GlobeSpan", + "Element 14", "Pycon", "Saifun Semiconductors", "Sibyte, Incorporated", + "MetaLink Technologies", "Feiya Technology", "I & C Technology", "Shikatronics", + "Elektrobit", "Megic", "Com-Tier", "Malaysia Micro Solutions", + "Hyperchip", "Gemstone Communications", "Anadigm (former Anadyne)", "3ParData", + "Mellanox Technologies", "Tenx Technologies", "Helix AG", "Domosys", + "Skyup Technology", "HiNT Corporation", "Chiaro", "MDT Technologies GmbH (former MCI Computer GMBH)", + "Exbit Technology A/S", "Integrated Technology Express", "AVED Memory", "Legerity", + "Jasmine Networks", "Caspian Networks", "nCUBE", "Silicon Access Networks", + "FDK Corporation", "High Bandwidth Access", "MultiLink Technology", "BRECIS", + "World Wide Packets", "APW", "Chicory Systems", "Xstream Logic", + "Fast-Chip", "Zucotto Wireless", "Realchip", "Galaxy Power", + "eSilicon", "Morphics Technology", "Accelerant Networks", "Silicon Wave", + "SandCraft", "Elpida"}, +{"Solectron", "Optosys Technologies", "Buffalo (former Melco)", "TriMedia Technologies", + "Cyan Technologies", "Global Locate", "Optillion", "Terago Communications", + "Ikanos Communications", "Princeton Technology", "Nanya Technology", "Elite Flash Storage", + "Mysticom", "LightSand Communications", "ATI Technologies", "Agere Systems", + "NeoMagic", "AuroraNetics", "Golden Empire", "Mushkin", + "Tioga Technologies", "Netlist", "TeraLogic", "Cicada Semiconductor", + "Centon Electronics", "Tyco Electronics", "Magis Works", "Zettacom", + "Cogency Semiconductor", "Chipcon AS", "Aspex Technology", "F5 Networks", + "Programmable Silicon Solutions", "ChipWrights", "Acorn Networks", "Quicklogic", + "Kingmax Semiconductor", "BOPS", "Flasys", "BitBlitz Communications", + "eMemory Technology", "Procket Networks", "Purple Ray", "Trebia Networks", + "Delta Electronics", "Onex Communications", "Ample Communications", "Memory Experts Intl", + "Astute Networks", "Azanda Network Devices", "Dibcom", "Tekmos", + "API NetWorks", "Bay Microsystems", "Firecron Ltd", "Resonext Communications", + "Tachys Technologies", "Equator Technology", "Concept Computer", "SILCOM", + "3Dlabs", "c't Magazine", "Sanera Systems", "Silicon Packets", + "Viasystems Group", "Simtek", "Semicon Devices Singapore", "Satron Handelsges", + "Improv Systems", "INDUSYS GmbH", "Corrent", "Infrant Technologies", + "Ritek Corp", "empowerTel Networks", "Hypertec", "Cavium Networks", + "PLX Technology", "Massana Design", "Intrinsity", "Valence Semiconductor", + "Terawave Communications", "IceFyre Semiconductor", "Primarion", "Picochip Designs Ltd", + "Silverback Systems", "Jade Star Technologies", "Pijnenburg Securealink", + "takeMS - Ultron AG (former Memorysolution GmbH)", "Cambridge Silicon Radio", + "Swissbit", "Nazomi Communications", "eWave System", + "Rockwell Collins", "Picocel Co., Ltd.", "Alphamosaic Ltd", "Sandburst", + "SiCon Video", "NanoAmp Solutions", "Ericsson Technology", "PrairieComm", + "Mitac International", "Layer N Networks", "MtekVision", "Allegro Networks", + "Marvell Semiconductors", "Netergy Microelectronic", "NVIDIA", "Internet Machines", + "Peak Electronics", "Litchfield Communication", "Accton Technology", "Teradiant Networks", + "Scaleo Chip (former Europe Technologies)", "Cortina Systems", "RAM Components", "Raqia Networks", + "ClearSpeed", "Matsushita Battery", "Xelerated", "SimpleTech", + "Utron Technology", "Astec International", "AVM gmbH", "Redux Communications", + "Dot Hill Systems", "TeraChip"}, +{"T-RAM Incorporated", "Innovics Wireless", "Teknovus", "KeyEye Communications", + "Runcom Technologies", "RedSwitch", "Dotcast", "Silicon Mountain Memory", + "Signia Technologies", "Pixim", "Galazar Networks", "White Electronic Designs", + "Patriot Scientific", "Neoaxiom Corporation", "3Y Power Technology", "Scaleo Chip (former Europe Technologies)", + "Potentia Power Systems", "C-guys Incorporated", "Digital Communications Technology Incorporated", "Silicon-Based Technology", + "Fulcrum Microsystems", "Positivo Informatica Ltd", "XIOtech Corporation", "PortalPlayer", + "Zhiying Software", "Parker Vision, Inc. (former Direct2Data)", "Phonex Broadband", "Skyworks Solutions", + "Entropic Communications", "Pacific Force Technology", "Zensys A/S", "Legend Silicon Corp.", + "sci-worx GmbH", "SMSC (former Oasis Silicon Systems)", "Renesas Electronics (former Renesas Technology)", "Raza Microelectronics", + "Phyworks", "MediaTek", "Non-cents Productions", "US Modular", + "Wintegra Ltd", "Mathstar", "StarCore", "Oplus Technologies", + "Mindspeed", "Just Young Computer", "Radia Communications", "OCZ", + "Emuzed", "LOGIC Devices", "Inphi Corporation", "Quake Technologies", + "Vixel", "SolusTek", "Kongsberg Maritime", "Faraday Technology", + "Altium Ltd.", "Insyte", "ARM Ltd.", "DigiVision", + "Vativ Technologies", "Endicott Interconnect Technologies", "Pericom", "Bandspeed", + "LeWiz Communications", "CPU Technology", "Ramaxel Technology", "DSP Group", + "Axis Communications", "Legacy Electronics", "Chrontel", "Powerchip Semiconductor", + "MobilEye Technologies", "Excel Semiconductor", "A-DATA Technology", "VirtualDigm", + "G.Skill Intl", "Quanta Computer", "Yield Microelectronics", "Afa Technologies", + "KINGBOX Technology Co. Ltd.", "Ceva", "iStor Networks", "Advance Modules", + "Microsoft", "Open-Silicon", "Goal Semiconductor", "ARC International", + "Simmtec", "Metanoia", "Key Stream", "Lowrance Electronics", + "Adimos", "SiGe Semiconductor", "Fodus Communications", "Credence Systems Corp.", + "Genesis Microchip Inc.", "Vihana, Inc.", "WIS Technologies", "GateChange Technologies", + "High Density Devices AS", "Synopsys", "Gigaram", "Enigma Semiconductor Inc.", + "Century Micro Inc.", "Icera Semiconductor", "Mediaworks Integrated Systems", "O'Neil Product Development", + "Supreme Top Technology Ltd.", "MicroDisplay Corporation", "Team Group Inc.", "Sinett Corporation", + "Toshiba Corporation", "Tensilica", "SiRF Technology", "Bacoc Inc.", + "SMaL Camera Technologies", "Thomson SC", "Airgo Networks", "Wisair Ltd.", + "SigmaTel", "Arkados", "Compete IT gmbH Co. KG", "Eudar Technology Inc.", + "Focus Enhancements", "Xyratex"}, +{"Specular Networks", "Patriot Memory", "U-Chip Technology Corp.", "Silicon Optix", + "Greenfield Networks", "CompuRAM GmbH", "Stargen, Inc.", "NetCell Corporation", + "Excalibrus Technologies Ltd", "SCM Microsystems", "Xsigo Systems, Inc.", "CHIPS & Systems Inc", + "Tier 1 Multichip Solutions", "CWRL Labs", "Teradici", "Gigaram, Inc.", + "g2 Microsystems", "PowerFlash Semiconductor", "P.A. Semi, Inc.", "NovaTech Solutions, S.A.", + "c2 Microsystems, Inc.", "Level5 Networks", "COS Memory AG", "Innovasic Semiconductor", + "02IC Co. Ltd", "Tabula, Inc.", "Crucial Technology", "Chelsio Communications", + "Solarflare Communications", "Xambala Inc.", "EADS Astrium", "Terra Semiconductor Inc. (former ATO Semicon Co. Ltd.)", + "Imaging Works, Inc.", "Astute Networks, Inc.", "Tzero", "Emulex", + "Power-One", "Pulse~LINK Inc.", "Hon Hai Precision Industry", "White Rock Networks Inc.", + "Telegent Systems USA, Inc.", "Atrua Technologies, Inc.", "Acbel Polytech Inc.", + "eRide Inc.","ULi Electronics Inc.", "Magnum Semiconductor Inc.", "neoOne Technology, Inc.", + "Connex Technology, Inc.", "Stream Processors, Inc.", "Focus Enhancements", "Telecis Wireless, Inc.", + "uNav Microelectronics", "Tarari, Inc.", "Ambric, Inc.", "Newport Media, Inc.", "VMTS", + "Enuclia Semiconductor, Inc.", "Virtium Technology Inc.", "Solid State System Co., Ltd.", "Kian Tech LLC", + "Artimi", "Power Quotient International", "Avago Technologies", "ADTechnology", "Sigma Designs", + "SiCortex, Inc.", "Ventura Technology Group", "eASIC", "M.H.S. SAS", "Micro Star International", + "Rapport Inc.", "Makway International", "Broad Reach Engineering Co.", + "Semiconductor Mfg Intl Corp", "SiConnect", "FCI USA Inc.", "Validity Sensors", + "Coney Technology Co. Ltd.", "Spans Logic", "Neterion Inc.", "Qimonda", + "New Japan Radio Co. Ltd.", "Velogix", "Montalvo Systems", "iVivity Inc.", "Walton Chaintech", + "AENEON", "Lorom Industrial Co. Ltd.", "Radiospire Networks", "Sensio Technologies, Inc.", + "Nethra Imaging", "Hexon Technology Pte Ltd", "CompuStocx (CSX)", "Methode Electronics, Inc.", + "Connect One Ltd.", "Opulan Technologies", "Septentrio NV", "Goldenmars Technology Inc.", + "Kreton Corporation", "Cochlear Ltd.", "Altair Semiconductor", "NetEffect, Inc.", + "Spansion, Inc.", "Taiwan Semiconductor Mfg", "Emphany Systems Inc.", + "ApaceWave Technologies", "Mobilygen Corporation", "Tego", "Cswitch Corporation", + "Haier (Beijing) IC Design Co.", "MetaRAM", "Axel Electronics Co. Ltd.", "Tilera Corporation", + "Aquantia", "Vivace Semiconductor", "Redpine Signals", "Octalica", "InterDigital Communications", + "Avant Technology", "Asrock, Inc.", "Availink", "Quartics, Inc.", "Element CXI", + "Innovaciones Microelectronicas", "VeriSilicon Microelectronics", "W5 Networks"}, +{"MOVEKING", "Mavrix Technology, Inc.", "CellGuide Ltd.", "Faraday Technology", + "Diablo Technologies, Inc.", "Jennic", "Octasic", "Molex Incorporated", "3Leaf Networks", + "Bright Micron Technology", "Netxen", "NextWave Broadband Inc.", "DisplayLink", "ZMOS Technology", + "Tec-Hill", "Multigig, Inc.", "Amimon", "Euphonic Technologies, Inc.", "BRN Phoenix", + "InSilica", "Ember Corporation", "Avexir Technologies Corporation", "Echelon Corporation", + "Edgewater Computer Systems", "XMOS Semiconductor Ltd.", "GENUSION, Inc.", "Memory Corp NV", + "SiliconBlue Technologies", "Rambus Inc.", "Andes Technology Corporation", "Coronis Systems", + "Achronix Semiconductor", "Siano Mobile Silicon Ltd.", "Semtech Corporation", "Pixelworks Inc.", + "Gaisler Research AB", "Teranetics", "Toppan Printing Co. Ltd.", "Kingxcon", + "Silicon Integrated Systems", "I-O Data Device, Inc.", "NDS Americas Inc.", "Solomon Systech Limited", + "On Demand Microelectronics", "Amicus Wireless Inc.", "SMARDTV SNC", "Comsys Communication Ltd.", + "Movidia Ltd.", "Javad GNSS, Inc.", "Montage Technology Group", "Trident Microsystems", "Super Talent", + "Optichron, Inc.", "Future Waves UK Ltd.", "SiBEAM, Inc.", "Inicore, Inc.", "Virident Systems", + "M2000, Inc.", "ZeroG Wireless, Inc.", "Gingle Technology Co. Ltd.", "Space Micro Inc.", "Wilocity", + "Novafora, Inc.", "iKoa Corporation", "ASint Technology", "Ramtron", "Plato Networks Inc.", + "IPtronics AS", "Infinite-Memories", "Parade Technologies Inc.", "Dune Networks", + "GigaDevice Semiconductor", "Modu Ltd.", "CEITEC", "Northrop Grumman", "XRONET Corporation", + "Sicon Semiconductor AB", "Atla Electronics Co. Ltd.", "TOPRAM Technology", "Silego Technology Inc.", + "Kinglife", "Ability Industries Ltd.", "Silicon Power Computer & Communications", + "Augusta Technology, Inc.", "Nantronics Semiconductors", "Hilscher Gesellschaft", "Quixant Ltd.", + "Percello Ltd.", "NextIO Inc.", "Scanimetrics Inc.", "FS-Semi Company Ltd.", "Infinera Corporation", + "SandForce Inc.", "Lexar Media", "Teradyne Inc.", "Memory Exchange Corp.", "Suzhou Smartek Electronics", + "Avantium Corporation", "ATP Electronics Inc.", "Valens Semiconductor Ltd", "Agate Logic, Inc.", + "Netronome", "Zenverge, Inc.", "N-trig Ltd", "SanMax Technologies Inc.", "Contour Semiconductor Inc.", + "TwinMOS", "Silicon Systems, Inc.", "V-Color Technology Inc.", "Certicom Corporation", "JSC ICC Milandr", + "PhotoFast Global Inc.", "InnoDisk Corporation", "Muscle Power", "Energy Micro", "Innofidei", + "CopperGate Communications", "Holtek Semiconductor Inc.", "Myson Century, Inc.", "FIDELIX", + "Red Digital Cinema", "Densbits Technology", "Zempro", "MoSys", "Provigent", "Triad Semiconductor, Inc."}, +{"Siklu Communication Ltd.", "A Force Manufacturing Ltd.", "Strontium", "Abilis Systems", "Siglead, Inc.", + "Ubicom, Inc.", "Unifosa Corporation", "Stretch, Inc.", "Lantiq Deutschland GmbH", "Visipro", + "EKMemory", "Microelectronics Institute ZTE", "Cognovo Ltd.", "Carry Technology Co. Ltd.", "Nokia", + "King Tiger Technology", "Sierra Wireless", "HT Micron", "Albatron Technology Co. Ltd.", + "Leica Geosystems AG", "BroadLight", "AEXEA", "ClariPhy Communications, Inc.", "Green Plug", + "Design Art Networks", "Mach Xtreme Technology Ltd.", "ATO Solutions Co. Ltd.", "Ramsta", + "Greenliant Systems, Ltd.", "Teikon", "Antec Hadron", "NavCom Technology, Inc.", + "Shanghai Fudan Microelectronics", "Calxeda, Inc.", "JSC EDC Electronics", "Kandit Technology Co. Ltd.", + "Ramos Technology", "Goldenmars Technology", "XeL Technology Inc.", "Newzone Corporation", + "ShenZhen MercyPower Tech", "Nanjing Yihuo Technology", "Nethra Imaging Inc.", "SiTel Semiconductor BV", + "SolidGear Corporation", "Topower Computer Ind Co Ltd.", "Wilocity", "Profichip GmbH", + "Gerad Technologies", "Ritek Corporation", "Gomos Technology Limited", "Memoright Corporation", + "D-Broad, Inc.", "HiSilicon Technologies", "Syndiant Inc.", "Enverv Inc.", "Cognex", + "Xinnova Technology Inc.", "Ultron AG", "Concord Idea Corporation", "AIM Corporation", + "Lifetime Memory Products", "Ramsway", "Recore Systems BV", "Haotian Jinshibo Science Tech", + "Being Advanced Memory", "Adesto Technologies", "Giantec Semiconductor, Inc.", "HMD Electronics AG", + "Gloway International (HK)", "Kingcore", "Anucell Technology Holding", + "Accord Software & Systems Pvt. Ltd.", "Active-Semi Inc.", "Denso Corporation", "TLSI Inc.", + "Shenzhen Daling Electronic Co. Ltd.", "Mustang", "Orca Systems", "Passif Semiconductor", + "GigaDevice Semiconductor (Beijing) Inc.", "Memphis Electronic", "Beckhoff Automation GmbH", + "Harmony Semiconductor Corp (former ProPlus Design Solutions)", "Air Computers SRL", "TMT Memory", + "Eorex Corporation", "Xingtera", "Netsol", "Bestdon Technology Co. Ltd.", "Baysand Inc.", + "Uroad Technology Co. Ltd. (former Triple Grow Industrial Ltd.)", "Wilk Elektronik S.A.", + "AAI", "Harman", "Berg Microelectronics Inc.", "ASSIA, Inc.", "Visiontek Products LLC", + "OCMEMORY", "Welink Solution Inc.", "Shark Gaming", "Avalanche Technology", + "R&D Center ELVEES OJSC", "KingboMars Technology Co. Ltd.", + "High Bridge Solutions Industria Eletronica", "Transcend Technology Co. Ltd.", + "Everspin Technologies", "Hon-Hai Precision", "Smart Storage Systems", "Toumaz Group", + "Zentel Electronics Corporation", "Panram International Corporation", + "Silicon Space Technology"} +}; diff --git a/modules/devices/storage.c b/modules/devices/storage.c index 0c393682..bbf9b195 100644 --- a/modules/devices/storage.c +++ b/modules/devices/storage.c @@ -1,10 +1,11 @@ /* * HardInfo - Displays System Information - * Copyright (C) 2003-2006 Leandro A. F. Pereira + * Copyright (C) 2003-2006 L. A. F. Pereira + * modified by Ondrej Čerman (2019-2021) * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, version 2. + * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -20,12 +21,464 @@ #include "hardinfo.h" #include "devices.h" +#include "udisks2_util.h" +#include "storage_util.h" + +#define UNKIFNULL_AC(f) (f != NULL) ? f : _("(Unknown)"); gchar *storage_icons = NULL; +gchar *nvme_pci_sections(pcid *p) { + const gchar *vendor, *svendor, *product, *sproduct; + + if (!p) return NULL; + + vendor = UNKIFNULL_AC(p->vendor_id_str); + svendor = UNKIFNULL_AC(p->sub_vendor_id_str); + product = UNKIFNULL_AC(p->device_id_str); + sproduct = UNKIFNULL_AC(p->sub_device_id_str); + + gchar *vendor_device_str; + if (p->vendor_id == p->sub_vendor_id && p->device_id == p->sub_device_id) { + vendor_device_str = g_strdup_printf("[%s]\n" + /* Vendor */ "$^$%s=[%04x] %s\n" + /* Device */ "%s=[%04x] %s\n", + _("NVMe Controller"), + _("Vendor"), p->vendor_id, vendor, + _("Device"), p->device_id, product); + } else { + vendor_device_str = g_strdup_printf("[%s]\n" + /* Vendor */ "$^$%s=[%04x] %s\n" + /* Device */ "%s=[%04x] %s\n" + /* Sub-device vendor */ "$^$%s=[%04x] %s\n" + /* Sub-device */ "%s=[%04x] %s\n", + _("NVMe Controller"), + _("Vendor"), p->vendor_id, vendor, + _("Device"), p->device_id, product, + _("SVendor"), p->sub_vendor_id, svendor, + _("SDevice"), p->sub_device_id, sproduct); + } + + gchar *pcie_str; + if (p->pcie_width_curr) { + pcie_str = g_strdup_printf("[%s]\n" + /* Addy */ "%s=PCI/%s\n" + /* Width (max) */ "%s=x%u\n" + /* Speed (max) */ "%s=%0.1f %s\n", + _("PCI Express"), + _("Location"), p->slot_str, + _("Maximum Link Width"), p->pcie_width_max, + _("Maximum Link Speed"), p->pcie_speed_max, _("GT/s") ); + } else + pcie_str = strdup(""); + + gchar *ret = g_strdup_printf("%s%s", vendor_device_str, pcie_str); + g_free(vendor_device_str); + g_free(pcie_str); + return ret; +} + +gboolean __scan_udisks2_devices(void) { + GSList *node, *drives; + u2driveext *ext; + udiskd *disk; + udiskp *part; + udisksa *attrib; + gchar *udisks2_storage_list = NULL, *features = NULL, *moreinfo = NULL; + gchar *devid, *size, *tmp = NULL, *media_comp = NULL, *ven_tag = NULL; + const gchar *url, *media_label, *alabel, *icon, *media_curr = NULL; + int n = 0, i, j, m; + + // http://storaged.org/doc/udisks2-api/latest/gdbus-org.freedesktop.UDisks2.Drive.html#gdbus-property-org-freedesktop-UDisks2-Drive.MediaCompatibility + static struct { + char *media; + char *label; + char *icon; + } media_info[] = { + { "thumb", "Thumb-drive", "usbfldisk" }, + { "flash", "Flash Card", "usbfldisk" }, + { "flash_cf", "CompactFlash", "usbfldisk" }, + { "flash_ms", "MemoryStick", "usbfldisk" }, + { "flash_sm", "SmartMedia", "usbfldisk" }, + { "flash_sd", "SD", "usbfldisk" }, + { "flash_sdhc", "SDHC", "usbfldisk" }, + { "flash_sdxc", "SDXC", "usbfldisk" }, + { "flash_mmc", "MMC", "usbfldisk" }, + { "floppy", "Floppy Disk", "media-floppy" }, + { "floppy_zip", "Zip Disk", "media-floppy" }, + { "floppy_jaz", "Jaz Disk", "media-floppy" }, + { "optical", "Optical Disc", "cdrom" }, + { "optical_cd", "CD-ROM", "cdrom" }, + { "optical_cd_r", "CD-R", "cdrom" }, + { "optical_cd_rw", "CD-RW", "cdrom" }, + { "optical_dvd", "DVD-ROM", "cdrom" }, + { "optical_dvd_r", "DVD-R", "cdrom" }, + { "optical_dvd_rw", "DVD-RW", "cdrom" }, + { "optical_dvd_ram", "DVD-RAM", "cdrom" }, + { "optical_dvd_plus_r", "DVD+R" , "cdrom" }, + { "optical_dvd_plus_rw", "DVD+RW" , "cdrom" }, + { "optical_dvd_plus_r_dl", "DVD+R DL", "cdrom" }, + { "optical_dvd_plus_rw_dl", "DVD+RW DL", "cdrom" }, + { "optical_bd", "BD-ROM", "cdrom" }, + { "optical_bd_r", "BD-R", "cdrom" }, + { "optical_bd_re", "BD-RE", "cdrom" }, + { "optical_hddvd", "HD DVD-ROM", "cdrom" }, + { "optical_hddvd_r", "HD DVD-R", "cdrom" }, + { "optical_hddvd_rw", "HD DVD-RW", "cdrom" }, + { "optical_mo", "MO Disc", "cdrom" }, + { "optical_mrw", "MRW Media", "cdrom" }, + { "optical_mrw_w", "MRW Media (write)", "cdrom" }, + { NULL, NULL } + }; + + struct { + char *identifier; + char *label; + } smart_attrib_info[] = { + { "raw-read-error-rate", _("Read Error Rate" ) }, + { "throughput-performance", _("Throughput Performance") }, + { "spin-up-time", _("Spin-Up Time") }, + { "start-stop-count", _("Start/Stop Count") }, + { "reallocated-sector-count", _("Reallocated Sector Count") }, + { "read-channel-margin", _("Read Channel Margin") }, + { "seek-error-rate", _("Seek Error Rate") }, + { "seek-time-performance", _("Seek Timer Performance") }, + { "power-on-hours", _("Power-On Hours") }, + { "spin-retry-count", _("Spin Retry Count") }, + { "calibration-retry-count", _("Calibration Retry Count") }, + { "power-cycle-count", _("Power Cycle Count") }, + { "read-soft-error-rate", _("Soft Read Error Rate") }, + { "runtime-bad-block-total", _("Runtime Bad Block") }, + { "end-to-end-error", _("End-to-End error") }, + { "reported-uncorrect", _("Reported Uncorrectable Errors") }, + { "command-timeout", _("Command Timeout") }, + { "high-fly-writes", _("High Fly Writes") }, + { "airflow-temperature-celsius", _("Airflow Temperature") }, + { "g-sense-error-rate", _("G-sense Error Rate") }, + { "power-off-retract-count", _("Power-off Retract Count") }, + { "load-cycle-count", _("Load Cycle Count") }, + { "temperature-celsius-2", _("Temperature") }, + { "hardware-ecc-recovered", _("Hardware ECC Recovered") }, + { "reallocated-event-count", _("Reallocation Event Count") }, + { "current-pending-sector", _("Current Pending Sector Count") }, + { "offline-uncorrectable", _("Uncorrectable Sector Count") }, + { "udma-crc-error-count", _("UltraDMA CRC Error Count") }, + { "multi-zone-error-rate", _("Multi-Zone Error Rate") }, + { "soft-read-error-rate", _("Soft Read Error Rate") }, + { "run-out-cancel", _("Run Out Cancel") }, + { "flying-height", _("Flying Height") }, + { "spin-high-current", _("Spin High Current") }, + { "spin-buzz", _("Spin Buzz") }, + { "offline-seek-performance", _("Offline Seek Performance") }, + { "disk-shift", _("Disk Shift") }, + { "g-sense-error-rate-2", _("G-Sense Error Rate") }, + { "loaded-hours", _("Loaded Hours") }, + { "load-retry-count", _("Load/Unload Retry Count") }, + { "load-friction", _("Load Friction") }, + { "load-cycle-count-2", _("Load/Unload Cycle Count") }, + { "load-in-time", _("Load-in time") }, + { "torq-amp-count", _("Torque Amplification Count") }, + { "power-off-retract-count-2", _("Power-Off Retract Count") }, + { "head-amplitude", _("GMR Head Amplitude") }, + { "temperature-celsius", _("Temperature") }, + { "endurance-remaining", _("Endurance Remaining") }, + { "power-on-seconds-2", _("Power-On Hours") }, + { "good-block-rate", _("Good Block Rate") }, + { "head-flying-hours", _("Head Flying Hours") }, + { "read-error-retry-rate", _("Read Error Retry Rate") }, + { "total-lbas-written", _("Total LBAs Written") }, + { "total-lbas-read", _("Total LBAs Read") }, + { "wear-leveling-count", _("Wear leveling Count") }, + { "used-reserved-blocks-total", _("Total Used Reserved Block Count") }, + { "program-fail-count-total", _("Total Program Fail Count") }, + { "erase-fail-count-total", _("Total Erase Fail Count") }, + { "available-reserved-space", _("Available Reserved Space") }, + { "program-fail-count", _("Program Fail Count") }, + { "erase-fail-count", _("Erase Fail Count") }, + { "ta-increase-count", _("TA Counter Increased") }, + { "unused-reserved-blocks", _("Total Unused Reserved Block Count") }, + { NULL, NULL } + }; + + moreinfo_del_with_prefix("DEV:UDISKS"); + udisks2_storage_list = g_strdup(_("\n[UDisks2]\n")); + + drives = get_udisks2_drives_ext(); + for (node = drives; node != NULL; node = node->next) { + ext = (u2driveext *)node->data; + disk = ext->d; + devid = g_strdup_printf("UDISKS%d", n++); + + icon = NULL; + + media_curr = disk->media; + if (disk->media){ + for (j = 0; media_info[j].media != NULL; j++) { + if (g_strcmp0(disk->media, media_info[j].media) == 0) { + media_curr = media_info[j].label; + break; + } + } + } + + if (disk->media_compatibility){ + for (i = 0; disk->media_compatibility[i] != NULL; i++){ + media_label = disk->media_compatibility[i]; + + for (j = 0; media_info[j].media != NULL; j++) { + if (g_strcmp0(disk->media_compatibility[i], media_info[j].media) == 0) { + media_label = media_info[j].label; + if (icon == NULL) + icon = media_info[j].icon; + break; + } + } + + if (media_comp == NULL){ + media_comp = g_strdup(media_label); + } + else{ + media_comp = h_strdup_cprintf(", %s", media_comp, media_label); + } + } + } + if (icon == NULL && disk->ejectable && g_strcmp0(disk->connection_bus, "usb") == 0) { + icon = "usbfldisk"; + } + if (icon == NULL){ + icon = "hdd"; + } + + size = size_human_readable((gfloat) disk->size); + ven_tag = vendor_list_ribbon(ext->vendors, params.fmt_opts); + + udisks2_storage_list = h_strdup_cprintf("$%s$%s=%s|%s %s\n", udisks2_storage_list, devid, disk->block_dev, size, ven_tag ? ven_tag : "", disk->model); + storage_icons = h_strdup_cprintf("Icon$%s$%s=%s.png\n", storage_icons, devid, disk->model, icon); + features = h_strdup_cprintf("%s", features, disk->removable ? _("Removable"): _("Fixed")); + + if (disk->ejectable) { + features = h_strdup_cprintf(", %s", features, _("Ejectable")); + } + if (disk->smart_supported) { + features = h_strdup_cprintf(", %s", features, _("Self-monitoring (S.M.A.R.T.)")); + } + if (disk->pm_supported) { + features = h_strdup_cprintf(", %s", features, _("Power Management")); + } + if (disk->apm_supported) { + features = h_strdup_cprintf(", %s", features, _("Advanced Power Management")); + } + if (disk->aam_supported) { + features = h_strdup_cprintf(", %s", features, _("Automatic Acoustic Management")); + } + + moreinfo = g_strdup_printf(_("[Drive Information]\n" + "Model=%s\n"), + disk->model); + + if (disk->vendor && *disk->vendor) { + moreinfo = h_strdup_cprintf("$^$%s=%s\n", + moreinfo, + _("Vendor"), disk->vendor); + } + + moreinfo = h_strdup_cprintf(_("Revision=%s\n" + "Block Device=%s\n" + "Serial=%s\n" + "Size=%s\n" + "Features=%s\n"), + moreinfo, + disk->revision, + disk->block_dev, + disk->serial, + size, + features); + g_free(size); + g_free(ven_tag); + + if (disk->rotation_rate > 0) { + moreinfo = h_strdup_cprintf(_("Rotation Rate=%d RPM\n"), moreinfo, disk->rotation_rate); + } + if (media_comp || media_curr) { + moreinfo = h_strdup_cprintf(_("Media=%s\n" + "Media compatibility=%s\n"), + moreinfo, + media_curr ? media_curr : _("(None)"), + media_comp ? media_comp : _("(Unknown)")); + } + if (disk->connection_bus && strlen(disk->connection_bus) > 0) { + moreinfo = h_strdup_cprintf(_("Connection bus=%s\n"), moreinfo, disk->connection_bus); + } + + tmp = NULL; + if (disk->wwid) { + m = strlen(disk->wwid); + if (m > 2 && m % 2 == 0){ + for (j = 4; j < m; j = j + 2) { + tmp = h_strdup_cprintf("%s%c%c", tmp, j > 4 ? "-": "", disk->wwid[j], disk->wwid[j+1]); + } + } + moreinfo = h_strdup_cprintf("%s=%s\n", moreinfo, + g_str_has_prefix(disk->wwid, "nna.") ? _("WWN"): + (g_str_has_prefix(disk->wwid, "eui.") ? _("EUI "): "Unknown ID"), + tmp); + g_free(tmp); + } + else{ + moreinfo = h_strdup_cprintf("%s=%s\n", moreinfo, _("WWN / EUI"), _("(None)")); + } + + if (ext->wwid_oui.oui) { + moreinfo = h_strdup_cprintf(_("$^$%s=[%s] %s\n"), + moreinfo, + _("IEEE OUI"), ext->wwid_oui.oui, + ext->wwid_oui.vendor ? + ext->wwid_oui.vendor : _("(Unknown)")); + } + + if (ext->nvme_controller) { + gchar *nvme = nvme_pci_sections(ext->nvme_controller); + if (nvme) + moreinfo = h_strdup_cprintf("%s", moreinfo, nvme); + g_free(nvme); + } + if (disk->smart_enabled) { + moreinfo = h_strdup_cprintf(_("[Self-monitoring (S.M.A.R.T.)]\n" + "Status=%s\n" + "Bad Sectors=%" G_GINT64_FORMAT "\n" + "Power on time=%" G_GUINT64_FORMAT " days %" G_GUINT64_FORMAT " hours\n" + "Temperature=%d°C\n"), + moreinfo, + disk->smart_failing ? _("Failing"): _("OK"), + disk->smart_bad_sectors, + disk->smart_poweron/(60*60*24), (disk->smart_poweron/60/60) % 24, + disk->smart_temperature); + + if (disk->smart_attributes != NULL) { + moreinfo = h_strdup_cprintf(_("[S.M.A.R.T. Attributes]\n" + "Attribute=Value / Normalized / Worst / Threshold\n"), + moreinfo); + + attrib = disk->smart_attributes; + + while (attrib != NULL){ + tmp = g_strdup(""); + + switch (attrib->interpreted_unit){ + case UDSK_INTPVAL_SKIP: + tmp = h_strdup_cprintf("-", tmp); + break; + case UDSK_INTPVAL_MILISECONDS: + tmp = h_strdup_cprintf("%" G_GINT64_FORMAT " ms", tmp, attrib->interpreted); + break; + case UDSK_INTPVAL_HOURS: + tmp = h_strdup_cprintf("%" G_GINT64_FORMAT " h", tmp, attrib->interpreted); + break; + case UDSK_INTPVAL_CELSIUS: + tmp = h_strdup_cprintf("%" G_GINT64_FORMAT "°C", tmp, attrib->interpreted); + break; + case UDSK_INTPVAL_SECTORS: + tmp = h_strdup_cprintf(ngettext("%" G_GINT64_FORMAT " sector", + "%" G_GINT64_FORMAT " sectors", attrib->interpreted), + tmp, attrib->interpreted); + break; + case UDSK_INTPVAL_DIMENSIONLESS: + default: + tmp = h_strdup_cprintf("%" G_GINT64_FORMAT, tmp, attrib->interpreted); + break; + } + + // pad spaces to next col + j = g_utf8_strlen(tmp, -1); + if (j < 13) tmp = h_strdup_cprintf("%*c", tmp, 13 - j, ' '); + + if (attrib->value != -1) + tmp = h_strdup_cprintf("%-13d", tmp, attrib->value); + else + tmp = h_strdup_cprintf("%-13s", tmp, "???"); + + if (attrib->worst != -1) + tmp = h_strdup_cprintf("%-8d", tmp, attrib->worst); + else + tmp = h_strdup_cprintf("%-8s", tmp, "???"); + + if (attrib->threshold != -1) + tmp = h_strdup_cprintf("%d", tmp, attrib->threshold); + else + tmp = h_strdup_cprintf("???", tmp); + + + alabel = attrib->identifier; + for (i = 0; smart_attrib_info[i].identifier != NULL; i++) { + if (g_strcmp0(attrib->identifier, smart_attrib_info[i].identifier) == 0) { + alabel = smart_attrib_info[i].label; + break; + } + } + + moreinfo = h_strdup_cprintf(_("(%d) %s=%s\n"), + moreinfo, + attrib->id, alabel, tmp); + g_free(tmp); + attrib = attrib->next; + } + } + } + if (disk->partition_table || disk->partitions) { + moreinfo = h_strdup_cprintf(_("[Partition table]\n" + "Type=%s\n"), + moreinfo, + disk->partition_table ? disk->partition_table : _("(Unknown)")); + + if (disk->partitions != NULL) { + part = disk->partitions; + while (part != NULL){ + + tmp = size_human_readable((gfloat) part->size); + if (part->label) { + tmp = h_strdup_cprintf(" - %s", tmp, part->label); + } + if (part->type && part->version) { + tmp = h_strdup_cprintf(" (%s %s)", tmp, part->type, part->version); + } + else if (part->type) { + tmp = h_strdup_cprintf(" (%s)", tmp, part->type); + } + moreinfo = h_strdup_cprintf(_("Partition %s=%s\n"), + moreinfo, + part->block, tmp); + g_free(tmp); + part = part->next; + } + } + } + + moreinfo_add_with_prefix("DEV", devid, moreinfo); + g_free(devid); + g_free(features); + g_free(media_comp); + media_comp = NULL; + + features = NULL; + moreinfo = NULL; + devid = NULL; + + u2driveext_free(ext); + } + g_slist_free(drives); + + if (n) { + storage_list = h_strconcat(storage_list, udisks2_storage_list, NULL); + g_free(udisks2_storage_list); + return TRUE; + } + + g_free(udisks2_storage_list); + return FALSE; +} + /* SCSI support by Pascal F.Martin */ -void -__scan_scsi_devices(void) +void __scan_scsi_devices(void) { FILE *proc_scsi; gchar buffer[256], *buf; @@ -40,12 +493,16 @@ __scan_scsi_devices(void) /* remove old devices from global device table */ moreinfo_del_with_prefix("DEV:SCSI"); - if (!g_file_test("/proc/scsi/scsi", G_FILE_TEST_EXISTS)) - return; - scsi_storage_list = g_strdup(_("\n[SCSI Disks]\n")); - if ((proc_scsi = fopen("/proc/scsi/scsi", "r"))) { + int otype = 0; + if (proc_scsi = fopen("/proc/scsi/scsi", "r")) { + otype = 1; + } else if (proc_scsi = popen("lsscsi -c", "r")) { + otype = 2; + } + + if (otype) { while (fgets(buffer, 256, proc_scsi)) { buf = g_strstrip(buffer); if (!strncmp(buf, "Host: scsi", 10)) { @@ -104,23 +561,15 @@ __scan_scsi_devices(void) } gchar *devid = g_strdup_printf("SCSI%d", n); - scsi_storage_list = h_strdup_cprintf("$%s$%s=\n", scsi_storage_list, devid, model); + scsi_storage_list = h_strdup_cprintf("$%s$scsi%d=|%s\n", scsi_storage_list, devid, scsi_controller, model); storage_icons = h_strdup_cprintf("Icon$%s$%s=%s.png\n", storage_icons, devid, model, icon); gchar *strhash = g_strdup_printf(_("[Device Information]\n" "Model=%s\n"), model); - const gchar *url = vendor_get_url(model); - if (url) { - strhash = h_strdup_cprintf(_("Vendor=%s (%s)\n"), - strhash, - vendor_get_name(model), - url); - } else { - strhash = h_strdup_cprintf(_("Vendor=%s\n"), - strhash, - vendor_get_name(model)); - } + strhash = h_strdup_cprintf("$^$%s=%s\n", + strhash, + _("Vendor"), model); strhash = h_strdup_cprintf(_("Type=%s\n" "Revision=%s\n" @@ -135,6 +584,7 @@ __scan_scsi_devices(void) scsi_channel, scsi_id, scsi_lun); + moreinfo_add_with_prefix("DEV", devid, strhash); g_free(devid); @@ -145,7 +595,10 @@ __scan_scsi_devices(void) scsi_controller = scsi_channel = scsi_id = scsi_lun = 0; } } - fclose(proc_scsi); + if (otype == 1) + fclose(proc_scsi); + else if (otype == 2) + pclose(proc_scsi); } if (n) { @@ -157,7 +610,8 @@ __scan_scsi_devices(void) void __scan_ide_devices(void) { FILE *proc_ide; - gchar *device, iface, *model, *media, *pgeometry = NULL, *lgeometry = NULL; + gchar *device, *model, *media, *pgeometry = NULL, *lgeometry = NULL; + gchar iface; gint n = 0, i = 0, cache, nn = 0; gchar *capab = NULL, *speed = NULL, *driver = NULL, *ide_storage_list; @@ -305,7 +759,7 @@ void __scan_ide_devices(void) gchar *devid = g_strdup_printf("IDE%d", n); - ide_storage_list = h_strdup_cprintf("$%s$%s=\n", ide_storage_list, devid, model); + ide_storage_list = h_strdup_cprintf("$%s$hd%c=|%s\n", ide_storage_list, devid, iface, model); storage_icons = h_strdup_cprintf("Icon$%s$%s=%s.png\n", storage_icons, devid, model, g_str_equal(media, "cdrom") ? "cdrom" : "hdd"); @@ -313,13 +767,8 @@ void __scan_ide_devices(void) gchar *strhash = g_strdup_printf(_("[Device Information]\n" "Model=%s\n"), model); - const gchar *url = vendor_get_url(model); - - if (url) { - strhash = h_strdup_cprintf(_("Vendor=%s (%s)\n"), strhash, vendor_get_name(model), url); - } else { - strhash = h_strdup_cprintf(_("Vendor=%s\n"), strhash, vendor_get_name(model)); - } + strhash = h_strdup_cprintf("$^$%s=%s\n", + strhash, _("Vendor"), model); strhash = h_strdup_cprintf(_("Device Name=hd%c\n" "Media=%s\n" "Cache=%dkb\n"), strhash, iface, media, cache); diff --git a/modules/devices/usb.c b/modules/devices/usb.c index 9366c7ce..c6a5ab39 100644 --- a/modules/devices/usb.c +++ b/modules/devices/usb.c @@ -1,10 +1,10 @@ /* * HardInfo - Displays System Information - * Copyright (C) 2003-2008 Leandro A. F. Pereira + * Copyright (C) 2003-2008 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, version 2. + * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -15,422 +15,210 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ -/* - * FIXME: - * - listing with sysfs does not generate device hierarchy - */ #include +#include "cpu_util.h" #include "hardinfo.h" #include "devices.h" +#include "usb_util.h" gchar *usb_list = NULL; - -void __scan_usb_sysfs_add_device(gchar * endpoint, int n) -{ - gchar *manufacturer, *product, *mxpwr, *tmp, *strhash; - gint bus, classid, vendor, prodid; - gfloat version, speed; - - classid = h_sysfs_read_int(endpoint, "bDeviceClass"); - vendor = h_sysfs_read_int(endpoint, "idVendor"); - prodid = h_sysfs_read_int(endpoint, "idProduct"); - bus = h_sysfs_read_int(endpoint, "busnum"); - speed = h_sysfs_read_float(endpoint, "speed"); - version = h_sysfs_read_float(endpoint, "version"); - - if (!(mxpwr = h_sysfs_read_string(endpoint, "bMaxPower"))) { - mxpwr = g_strdup_printf("%d %s", 0 , _("mA") ); - } - - if (!(manufacturer = h_sysfs_read_string(endpoint, "manufacturer"))) { - manufacturer = g_strdup(_("(Unknown)")); - } - - if (!(product = h_sysfs_read_string(endpoint, "product"))) { - if (classid == 9) { - product = g_strdup_printf(_(/*/%.2f is version*/ "USB %.2f Hub"), version); - } else { - product = g_strdup_printf(_("Unknown USB %.2f Device (class %d)"), version, classid); +gchar *usb_icons = NULL; + +#define UNKIFNULL_AC(f) (f != NULL) ? f : _("(Unknown)") +#define IARR_END -2 +#define IARR_ANY -1 + +static struct { + int class; + char *icon; +} usb_class_icons[] = { + { 0x1, "audio"}, /* Audio */ + { 0x2, "modem"}, /* Communications and CDC Control */ + { 0x3, "inputdevices"}, /* HID (Human Interface Device) */ + { 0x6, "camera-photo"}, /* Still Imaging */ + { 0x7, "printer"}, /* Printer */ + { 0x8, "media-removable"}, /* Mass storage */ + { 0x9, "usb"}, /* Hub */ + { 0xe, "camera-web"}, /* Video */ + {IARR_END, NULL} +}; + +static struct { + int class, subclass, protocol; + char *icon; +} usb_type_icons[] = { + { 0x2, 0x6, IARR_ANY, "network-interface"}, /* Ethernet Networking Control Model */ + { 0x3, 0x1, 0x1, "keyboard"}, /* Keyboard */ + { 0x3, 0x1, 0x2, "mouse"}, /* Mouse */ + {0xe0, 0x1, 0x1, "bluetooth"}, /* Bluetooth Programming Interface */ + {IARR_END, IARR_END, IARR_END, NULL}, +}; + +static const char* get_class_icon(int class){ + int i = 0; + while (usb_class_icons[i].class != IARR_END) { + if (usb_class_icons[i].class == class) { + return usb_class_icons[i].icon; } + i++; } - - const gchar *v_url = vendor_get_url(manufacturer); - const gchar *v_name = vendor_get_name(manufacturer); - gchar *v_str; - if (v_url != NULL) { - v_str = g_strdup_printf("%s (%s)", v_name, v_url); - } else { - v_str = g_strdup_printf("%s", manufacturer); - } - - tmp = g_strdup_printf("USB%d", n); - usb_list = h_strdup_cprintf("$%s$%s=\n", usb_list, tmp, product); - - strhash = g_strdup_printf("[%s]\n" - /* Product */ "%s=%s\n" - /* Manufacturer */ "%s=%s\n" - /* Speed */ "%s=%.2f %s\n" - /* Max Current */ "%s=%s\n" - "[%s]\n" - /* USB Version */ "%s=%.2f\n" - /* Class */ "%s=0x%x\n" - /* Vendor */ "%s=0x%x\n" - /* Product ID */ "%s=0x%x\n" - /* Bus */ "%s=%d\n", - _("Device Information"), - _("Product"), product, - _("Manufacturer"), v_str, - _("Speed"), speed, _("Mbit/s"), - _("Max Current"), mxpwr, - _("Misc"), - _("USB Version"), version, - _("Class"), classid, - _("Vendor ID"), vendor, - _("Product ID"), prodid, - _("Bus"), bus); - - moreinfo_add_with_prefix("DEV", tmp, strhash); - g_free(tmp); - g_free(v_str); - g_free(manufacturer); - g_free(product); - g_free(mxpwr); + return NULL; } -gboolean __scan_usb_sysfs(void) -{ - GDir *sysfs; - gchar *filename; - const gchar *sysfs_path = "/sys/class/usb_endpoint"; - gint usb_device_number = 0; - - if (!(sysfs = g_dir_open(sysfs_path, 0, NULL))) { - return FALSE; - } - - if (usb_list) { - moreinfo_del_with_prefix("DEV:USB"); - g_free(usb_list); - } - usb_list = g_strdup_printf("[%s]\n", _("USB Devices")); - - while ((filename = (gchar *) g_dir_read_name(sysfs))) { - gchar *endpoint = - g_build_filename(sysfs_path, filename, "device", NULL); - gchar *temp; +static const char* get_usbif_icon(const usbi *usbif) { + int i = 0; + while (usb_type_icons[i].class != IARR_END) { + if (usb_type_icons[i].class == usbif->if_class && usb_type_icons[i].subclass == usbif->if_subclass && + (usb_type_icons[i].protocol == IARR_ANY || usb_type_icons[i].protocol == usbif->if_protocol)) { - temp = g_build_filename(endpoint, "idVendor", NULL); - if (g_file_test(temp, G_FILE_TEST_EXISTS)) { - __scan_usb_sysfs_add_device(endpoint, ++usb_device_number); - } - - g_free(temp); - g_free(endpoint); + return usb_type_icons[i].icon; + } + i++; } - g_dir_close(sysfs); - - return usb_device_number > 0; + return get_class_icon(usbif->if_class); } -gboolean __scan_usb_procfs(void) -{ - FILE *dev; - gchar buffer[128]; - gchar *tmp, *manuf = NULL, *product = NULL, *mxpwr = NULL; - gint bus = 0, level = 0, port = 0, classid = 0, trash; - gint vendor = 0, prodid = 0; - gfloat ver = 0.0f, rev = 0.0f, speed = 0.0f; - int n = 0; - - dev = fopen("/proc/bus/usb/devices", "r"); - if (!dev) - return 0; +static const char* get_usbdev_icon(const usbd *u) { + const char * icon = NULL; + usbi *curr_if; - if (usb_list) { - moreinfo_del_with_prefix("DEV:USB"); - g_free(usb_list); + curr_if = u->if_list; + while (icon == NULL && curr_if != NULL){ + icon = get_usbif_icon(curr_if); + curr_if = curr_if->next; } - usb_list = g_strdup_printf("[%s]\n", _("USB Devices")); - - while (fgets(buffer, 128, dev)) { - tmp = buffer; - switch (*tmp) { - case 'T': - sscanf(tmp, - "T: Bus=%d Lev=%d Prnt=%d Port=%d Cnt=%d Dev#=%d Spd=%f", - &bus, &level, &trash, &port, &trash, &trash, &speed); - break; - case 'D': - sscanf(tmp, "D: Ver=%f Cls=%x", &ver, &classid); - break; - case 'P': - sscanf(tmp, "P: Vendor=%x ProdID=%x Rev=%f", &vendor, &prodid, &rev); - break; - case 'S': - if (strstr(tmp, "Manufacturer=")) { - manuf = g_strdup(strchr(tmp, '=') + 1); - remove_linefeed(manuf); - } else if (strstr(tmp, "Product=")) { - product = g_strdup(strchr(tmp, '=') + 1); - remove_linefeed(product); - } - break; - case 'C': - mxpwr = strstr(buffer, "MxPwr=") + 6; - - tmp = g_strdup_printf("USB%d", ++n); - - if (product && *product == '\0') { - g_free(product); - if (classid == 9) { - product = g_strdup_printf(_("USB %.2f Hub"), ver); - } else { - product = g_strdup_printf(_("Unknown USB %.2f Device (class %d)"), ver, classid); - } - } - - if (classid == 9) { /* hub */ - usb_list = h_strdup_cprintf("[%s#%d]\n", usb_list, product, n); - } else { /* everything else */ - usb_list = h_strdup_cprintf("$%s$%s=\n", usb_list, tmp, product); - - EMPIFNULL(manuf); - const gchar *v_url = vendor_get_url(manuf); - const gchar *v_name = vendor_get_name(manuf); - gchar *v_str = NULL; - if (strlen(manuf)) { - if (v_url != NULL) - v_str = g_strdup_printf("%s (%s)", v_name, v_url); - else - v_str = g_strdup_printf("%s", manuf); - } - UNKIFNULL(v_str); - UNKIFNULL(product); - - gchar *strhash = g_strdup_printf("[%s]\n" "%s=%s\n" "%s=%s\n", - _("Device Information"), - _("Product"), product, - _("Manufacturer"), v_str); - - strhash = h_strdup_cprintf("[%s #%d]\n" - /* Speed */ "%s=%.2f %s\n" - /* Max Current */ "%s=%s\n" - "[%s]\n" - /* USB Version */ "%s=%.2f\n" - /* Revision */ "%s=%.2f\n" - /* Class */ "%s=0x%x\n" - /* Vendor */ "%s=0x%x\n" - /* Product ID */ "%s=0x%x\n" - /* Bus */ "%s=%d\n" - /* Level */ "%s=%d\n", - strhash, - _("Port"), port, - _("Speed"), speed, _("Mbit/s"), - _("Max Current"), mxpwr, - _("Misc"), - _("USB Version"), ver, - _("Revision"), rev, - _("Class"), classid, - _("Vendor ID"), vendor, - _("Product ID"), prodid, - _("Bus"), bus, - _("Level"), level); - - moreinfo_add_with_prefix("DEV", tmp, strhash); - g_free(v_str); - g_free(tmp); - } - - g_free(manuf); - g_free(product); - manuf = NULL; - product = NULL; - port = classid = 0; - } + if (icon == NULL){ + icon = get_class_icon(u->dev_class); } - fclose(dev); - - return n > 0; + return icon; } - -void __scan_usb_lsusb_add_device(char *buffer, int bufsize, FILE * lsusb, int usb_device_number) -{ - gint bus, device, vendor_id, product_id; - gchar *version = NULL, *product = NULL, *vendor = NULL, *dev_class = NULL, *int_class = NULL; - gchar *max_power = NULL, *name = NULL; - gchar *tmp, *strhash; - long position = 0; - - g_strstrip(buffer); - sscanf(buffer, "Bus %d Device %d: ID %x:%x", &bus, &device, &vendor_id, &product_id); - name = g_strdup(buffer + 33); - - for (fgets(buffer, bufsize, lsusb); position >= 0 && fgets(buffer, bufsize, lsusb); position = ftell(lsusb)) { - g_strstrip(buffer); - - if (g_str_has_prefix(buffer, "idVendor")) { - g_free(vendor); - vendor = g_strdup(buffer + 26); - } else if (g_str_has_prefix(buffer, "idProduct")) { - g_free(product); - product = g_strdup(buffer + 26); - } else if (g_str_has_prefix(buffer, "MaxPower")) { - g_free(max_power); - max_power = g_strdup(buffer + 9); - } else if (g_str_has_prefix(buffer, "bcdUSB")) { - g_free(version); - version = g_strdup(buffer + 7); - } else if (g_str_has_prefix(buffer, "bDeviceClass")) { - g_free(dev_class); - dev_class = g_strdup(buffer + 14); - } else if (g_str_has_prefix(buffer, "bInterfaceClass")) { - g_free(int_class); - int_class = g_strdup(buffer + 16); - } else if (g_str_has_prefix(buffer, "Bus ")) { - /* device separator */ - fseek(lsusb, position, SEEK_SET); - break; - } - } - - if (dev_class && strstr(dev_class, "0 (Defined at Interface level)")) { - g_free(dev_class); - if (int_class) { - dev_class = int_class; - } else { - dev_class = g_strdup(_("(Unknown)")); - } - } else - dev_class = g_strdup(_("(Unknown)")); - - tmp = g_strdup_printf("USB%d", usb_device_number); - usb_list = h_strdup_cprintf("$%s$%s=\n", usb_list, tmp, name); - - const gchar *v_url = vendor_get_url(vendor); - const gchar *v_name = vendor_get_name(vendor); - gchar *v_str; - if (v_url != NULL) { - v_str = g_strdup_printf("%s (%s)", v_name, v_url); +static void _usb_dev(const usbd *u) { + gchar *name, *key, *label, *str, *speed; + gchar *product, *vendor, *manufacturer, *device; /* don't free */ + gchar *interfaces = strdup(""); + usbi *i; + const char* icon; + + vendor = UNKIFNULL_AC(u->vendor); + product = UNKIFNULL_AC(u->product); + manufacturer = UNKIFNULL_AC(u->manufacturer); + device = UNKIFNULL_AC(u->device); + + if (u->vendors) { + gchar *ribbon = vendor_list_ribbon(u->vendors, params.fmt_opts); + name = g_strdup_printf("%s %s", ribbon, u->product? product: device); } else { - v_str = g_strdup_printf("%s", g_strstrip(vendor) ); + name = g_strdup_printf("%s %s", u->vendor? vendor: manufacturer, u->product? product: device); + } + key = g_strdup_printf("USB%03d:%03d:%03d", u->bus, u->dev, 0); + label = g_strdup_printf("%03d:%03d", u->bus, u->dev); + icon = get_usbdev_icon(u); + + usb_list = h_strdup_cprintf("$%s$%s=%s\n", usb_list, key, label, name); + usb_icons = h_strdup_cprintf("Icon$%s$%s=%s.png\n", usb_icons, key, label, icon ? icon: "usb"); + + if (u->if_list != NULL) { + i = u->if_list; + while (i != NULL){ + interfaces = h_strdup_cprintf("[%s %d %s]\n" + /* Class */ "%s=[%d] %s\n" + /* Sub-class */ "%s=[%d] %s\n" + /* Protocol */ "%s=[%d] %s\n" + /* Driver */ "%s=%s\n", + interfaces, + _("Interface"), i->if_number, i->if_label? i->if_label: "", + _("Class"), i->if_class, UNKIFNULL_AC(i->if_class_str), + _("Sub-class"), i->if_subclass, UNKIFNULL_AC(i->if_subclass_str), + _("Protocol"), i->if_protocol, UNKIFNULL_AC(i->if_protocol_str), + _("Driver"), UNKIFNULL_AC(i->driver) + ); + i = i->next; + } } - if (max_power != NULL) { - int mA = atoi(g_strstrip(max_power)); - gchar *trent_steel = g_strdup_printf("%d %s", mA, _("mA")); - g_free(max_power); - max_power = trent_steel; + if (u->speed_mbs > 0){ + speed = g_strdup_printf("%d %s", u->speed_mbs, _("Mb/s")); + } + else{ + speed = g_strdup(_("Unknown")); } - UNKIFNULL(product); - UNKIFNULL(v_str); - UNKIFNULL(max_power); - UNKIFNULL(version); - UNKIFNULL(dev_class); - - strhash = g_strdup_printf("[%s]\n" - /* Product */ "%s=%s\n" - /* Manufacturer */ "%s=%s\n" - /* Max Current */ "%s=%s\n" - "[%s]\n" + str = g_strdup_printf("[%s]\n" + /* Product */ "%s=[0x%04x] %s\n" + /* Vendor */ "$^$%s=[0x%04x] %s\n" + /* Device */ "%s=%s\n" + /* Manufacturer */ "$^$%s=%s\n" + /* Max Current */ "%s=%d %s\n" /* USB Version */ "%s=%s\n" - /* Class */ "%s=%s\n" - /* Vendor ID */ "%s=0x%x\n" - /* Product ID */ "%s=0x%x\n" - /* Bus */ "%s=%d\n", + /* Speed */ "%s=%s\n" + /* Class */ "%s=[%d] %s\n" + /* Sub-class */ "%s=[%d] %s\n" + /* Protocol */ "%s=[%d] %s\n" + /* Dev Version */ "%s=%s\n" + /* Serial */ "%s=%s\n" + "[%s]\n" + /* Bus */ "%s=%03d\n" + /* Device */ "%s=%03d\n" + /* Interfaces */ "%s", _("Device Information"), - _("Product"), g_strstrip(product), - _("Vendor"), v_str, - _("Max Current"), g_strstrip(max_power), - _("Misc"), - _("USB Version"), g_strstrip(version), - _("Class"), g_strstrip(dev_class), - _("Vendor ID"), vendor_id, - _("Product ID"), product_id, - _("Bus"), bus); - - moreinfo_add_with_prefix("DEV", tmp, strhash); - g_free(v_str); - g_free(vendor); - g_free(product); - g_free(max_power); - g_free(dev_class); - g_free(version); - g_free(tmp); + _("Product"), u->product_id, product, + _("Vendor"), u->vendor_id, vendor, + _("Device"), device, + _("Manufacturer"), manufacturer, + _("Max Current"), u->max_curr_ma, _("mA"), + _("USB Version"), u->usb_version, + _("Speed"), speed, + _("Class"), u->dev_class, UNKIFNULL_AC(u->dev_class_str), + _("Sub-class"), u->dev_subclass, UNKIFNULL_AC(u->dev_subclass_str), + _("Protocol"), u->dev_protocol, UNKIFNULL_AC(u->dev_protocol_str), + _("Device Version"), UNKIFNULL_AC(u->device_version), + _("Serial Number"), UNKIFNULL_AC(u->serial), + _("Connection"), + _("Bus"), u->bus, + _("Device"), u->dev, + interfaces + ); + + moreinfo_add_with_prefix("DEV", key, str); /* str now owned by morinfo */ + + g_free(speed); g_free(name); + g_free(key); + g_free(label); + g_free(interfaces); } -gboolean __scan_usb_lsusb(void) -{ - static gchar *lsusb_path = NULL; - int usb_device_number = 0; - FILE *lsusb; - FILE *temp_lsusb; - char buffer[512], *temp; +void __scan_usb(void) { + usbd *list = usb_get_device_list(); + usbd *curr = list; - if (!lsusb_path) { - if (!(lsusb_path = find_program("lsusb"))) { - DEBUG("lsusb not found"); - - return FALSE; - } - } - - temp = g_strdup_printf("%s -v | tr '[]' '()'", lsusb_path); - if (!(lsusb = popen(temp, "r"))) { - DEBUG("cannot run %s", lsusb_path); - - g_free(temp); - return FALSE; - } - - temp_lsusb = tmpfile(); - if (!temp_lsusb) { - DEBUG("cannot create temporary file for lsusb"); - pclose(lsusb); - g_free(temp); - return FALSE; - } - - while (fgets(buffer, sizeof(buffer), lsusb)) { - fputs(buffer, temp_lsusb); - } - - pclose(lsusb); - - // rewind file so we can read from it - fseek(temp_lsusb, 0, SEEK_SET); - - g_free(temp); + int c = usbd_list_count(list); if (usb_list) { - moreinfo_del_with_prefix("DEV:USB"); + moreinfo_del_with_prefix("DEV:USB"); g_free(usb_list); } + if (usb_icons){ + g_free(usb_icons); + usb_icons = NULL; + } usb_list = g_strdup_printf("[%s]\n", _("USB Devices")); - while (fgets(buffer, sizeof(buffer), temp_lsusb)) { - if (g_str_has_prefix(buffer, "Bus ")) { - __scan_usb_lsusb_add_device(buffer, sizeof(buffer), temp_lsusb, ++usb_device_number); + if (c > 0) { + while(curr) { + _usb_dev(curr); + curr=curr->next; } - } - - fclose(temp_lsusb); - return usb_device_number > 0; -} - -void __scan_usb(void) -{ - if (!__scan_usb_procfs()) { - if (!__scan_usb_sysfs()) { - __scan_usb_lsusb(); - } + usbd_list_free(list); + } else { + /* No USB? */ + usb_list = g_strconcat(usb_list, _("No USB devices found."), "=\n", NULL); } } diff --git a/modules/devices/x86/processor.c b/modules/devices/x86/processor.c index f1c2b6e9..4141f051 100644 --- a/modules/devices/x86/processor.c +++ b/modules/devices/x86/processor.c @@ -1,10 +1,10 @@ /* * HardInfo - Displays System Information - * Copyright (C) 2003-2006 Leandro A. F. Pereira + * Copyright (C) 2003-2006 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, version 2. + * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -19,7 +19,7 @@ #include "hardinfo.h" #include "devices.h" #include "cpu_util.h" - +#include "nice_name.h" #include "x86_data.h" #include "x86_data.c" @@ -275,7 +275,7 @@ gchar *clocks_summary(GSList * processors) /* create list of all clock references */ for (l = processors; l; l = l->next) { p = (Processor*)l->data; - if (p->cpufreq) { + if (p->cpufreq && p->cpufreq->cpukhz_max > 0) { all_clocks = g_slist_prepend(all_clocks, p->cpufreq); } } @@ -448,14 +448,15 @@ gchar *caches_summary(GSList * processors) return ret; } -#define PROC_SCAN_READ_BUFFER_SIZE 896 +#define PROC_SCAN_READ_BUFFER_SIZE 1024 GSList *processor_scan(void) { GSList *procs = NULL, *l = NULL; Processor *processor = NULL; FILE *cpuinfo; - gchar buffer[PROC_SCAN_READ_BUFFER_SIZE]; + gchar *buffer; + buffer = g_malloc(PROC_SCAN_READ_BUFFER_SIZE); cpuinfo = fopen(PROC_CPUINFO, "r"); if (!cpuinfo) return NULL; @@ -513,6 +514,7 @@ GSList *processor_scan(void) } fclose(cpuinfo); + g_free(buffer); /* finish last */ if (processor) @@ -567,6 +569,8 @@ GSList *processor_scan(void) if (processor->cpufreq->cpukhz_max) processor->cpu_mhz = processor->cpufreq->cpukhz_max / 1000; + + nice_name_x86_cpuid_model_string(processor->model_name); } return procs; @@ -584,7 +588,7 @@ gchar *processor_get_capabilities_from_flags(gchar *strflags, gchar *lookup_pref old = flags; while (flags[j]) { - if ( sscanf(flags[j], "[%d]", &i) ) { + if ( sscanf(flags[j], "[%d]", &i)==1 ) { /* Some flags are indexes, like [13], and that looks like * a new section to hardinfo shell */ tmp = h_strdup_cprintf("(%s%d)=\n", tmp, @@ -624,7 +628,7 @@ gchar *processor_get_detailed_info(Processor * processor) ret = g_strdup_printf("[%s]\n" "%s=%s\n" "%s=%d, %d, %d (%s)\n" /* family, model, stepping (decoded name) */ - "%s=%s\n" /* vendor */ + "$^$%s=%s\n" /* vendor */ "%s=%s\n" /* microcode */ "[%s]\n" /* configuration */ "%s=%d %s\n" /* cache size (from cpuinfo) */ @@ -648,7 +652,7 @@ gchar *processor_get_detailed_info(Processor * processor) processor->model, processor->stepping, processor->strmodel, - _("Vendor"), vendor_get_name(processor->vendor_id), + _("Vendor"), processor->vendor_id, _("Microcode Version"), processor->microcode, _("Configuration"), _("Cache Size"), processor->cache_size, _("kb"), @@ -678,12 +682,62 @@ gchar *processor_describe(GSList * processors) { return processor_describe_default(processors); } +gchar *dmi_socket_info() { + gchar *ret; + dmi_type dt = 4; + guint i; + dmi_handle_list *hl = dmidecode_handles(&dt); + + if (!hl) { + ret = g_strdup_printf("[%s]\n%s=%s\n", + _("Socket Information"), _("Result"), + (getuid() == 0) + ? _("(Not available)") + : _("(Not available; Perhaps try running HardInfo as root.)") ); + } else { + ret = g_strdup(""); + for(i = 0; i < hl->count; i++) { + dmi_handle h = hl->handles[i]; + gchar *upgrade = dmidecode_match("Upgrade", &dt, &h); + gchar *socket = dmidecode_match("Socket Designation", &dt, &h); + gchar *bus_clock_str = dmidecode_match("External Clock", &dt, &h); + gchar *voltage_str = dmidecode_match("Voltage", &dt, &h); + gchar *max_speed_str = dmidecode_match("Max Speed", &dt, &h); + + ret = h_strdup_cprintf("[%s (%d) %s]\n" + "%s=0x%x\n" + "%s=%s\n" + "%s=%s\n" + "%s=%s\n" + "%s=%s\n", + ret, + _("CPU Socket"), i, socket, + _("DMI Handle"), h, + _("Type"), upgrade, + _("Voltage"), voltage_str, + _("External Clock"), bus_clock_str, + _("Max Frequency"), max_speed_str + ); + g_free(upgrade); + g_free(socket); + g_free(bus_clock_str); + g_free(voltage_str); + g_free(max_speed_str); + } + + dmi_handle_list_free(hl); + } + + return ret; +} + gchar *processor_meta(GSList * processors) { gchar *meta_cpu_name = processor_name(processors); gchar *meta_cpu_desc = processor_describe(processors); gchar *meta_freq_desc = processor_frequency_desc(processors); gchar *meta_clocks = clocks_summary(processors); gchar *meta_caches = caches_summary(processors); + gchar *meta_dmi = dmi_socket_info(); gchar *ret = NULL; UNKIFNULL(meta_cpu_desc); ret = g_strdup_printf("[%s]\n" @@ -691,13 +745,15 @@ gchar *processor_meta(GSList * processors) { "%s=%s\n" "%s=%s\n" "%s" + "%s" "%s", _("Package Information"), _("Name"), meta_cpu_name, _("Topology"), meta_cpu_desc, _("Logical CPU Config"), meta_freq_desc, meta_clocks, - meta_caches); + meta_caches, + meta_dmi); g_free(meta_cpu_desc); g_free(meta_freq_desc); g_free(meta_clocks); @@ -711,8 +767,9 @@ gchar *processor_get_info(GSList * processors) gchar *ret, *tmp, *hashkey; gchar *meta; /* becomes owned by more_info? no need to free? */ GSList *l; + gchar *icons=g_strdup(""); - tmp = g_strdup_printf("$CPU_META$%s=\n", _("Package Information") ); + tmp = g_strdup_printf("$!CPU_META$%s=|Summary\n", "all"); meta = processor_meta(processors); moreinfo_add_with_prefix("DEV", "CPU_META", meta); @@ -720,27 +777,46 @@ gchar *processor_get_info(GSList * processors) for (l = processors; l; l = l->next) { processor = (Processor *) l->data; - tmp = g_strdup_printf("%s$CPU%d$%s=%.2f %s|%d:%d|%d\n", + gchar *model_name = g_strdup(processor->model_name); + const Vendor *v = vendor_match(processor->vendor_id, NULL); + if (v) + tag_vendor(&model_name, 0, v->name_short ? v->name_short : v->name, v->ansi_color, params.fmt_opts); + + // bp: not convinced it looks good, but here's how it would be done... + //icons = h_strdup_cprintf("Icon$CPU%d$cpu%d=processor.png\n", icons, processor->id, processor->id); + + tmp = g_strdup_printf("%s$CPU%d$cpu%d=%.2f %s|%s|%d:%d\n", tmp, processor->id, - processor->model_name, + processor->id, processor->cpu_mhz, _("MHz"), + model_name, processor->cputopo->socket_id, - processor->cputopo->core_id, - processor->cputopo->id ); + processor->cputopo->core_id); hashkey = g_strdup_printf("CPU%d", processor->id); moreinfo_add_with_prefix("DEV", hashkey, processor_get_detailed_info(processor)); g_free(hashkey); + g_free(model_name); } ret = g_strdup_printf("[$ShellParam$]\n" "ViewType=1\n" + "ColumnTitle$TextValue=%s\n" + "ColumnTitle$Value=%s\n" "ColumnTitle$Extra1=%s\n" "ColumnTitle$Extra2=%s\n" + "ShowColumnHeaders=true\n" + "%s" "[Processors]\n" - "%s", _("Socket:Core"), _("Thread" /*TODO: +s*/), tmp); + "%s", _("Device"), _("Frequency"), _("Model"), _("Socket:Core"), icons, tmp); g_free(tmp); + g_free(icons); + + // now here's something fun... + struct Info *i = info_unflatten(ret); + g_free(ret); + ret = info_flatten(i); return ret; } diff --git a/modules/devices/x86/x86_data.c b/modules/devices/x86/x86_data.c index c052f4e1..f56e8668 100644 --- a/modules/devices/x86/x86_data.c +++ b/modules/devices/x86/x86_data.c @@ -18,6 +18,7 @@ * */ +#include #include #include #include @@ -35,9 +36,13 @@ * https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git/tree/arch/x86/include/asm/cpufeatures.h?id=refs/tags/v4.9 * hardinfo: modules/devices/x86/processor.c */ -static struct { - char *name, *meaning; -} tab_flag_meaning[] = { + +struct flag_to_meaning { + char *name; + char *meaning; +}; + +static const struct flag_to_meaning builtin_tab_flag_meaning[] = { /* Intel-defined CPU features, CPUID level 0x00000001 (edx) * See also Wikipedia and table 2-27 in Intel Advanced Vector Extensions Programming Reference */ { "fpu", NC_("x86-flag", /*/flag:fpu*/ "Onboard FPU (floating point support)") }, @@ -282,6 +287,8 @@ static struct { { "bug:cpu_meltdown", NC_("x86-flag", /*/bug:cpu_insecure & bug:cpu_meltdown*/ "CPU is affected by meltdown attack and needs kernel page table isolation") }, { "bug:spectre_v1", NC_("x86-flag", /*/bug:spectre_v1*/ "CPU is affected by Spectre variant 1 attack with conditional branches") }, { "bug:spectre_v2", NC_("x86-flag", /*/bug:spectre_v2*/ "CPU is affected by Spectre variant 2 attack with indirect branches") }, + { "bug:spec_store_bypass", NC_("x86-flag", /*/bug:spec_store_bypass*/ "CPU is affected by speculative store bypass attack") }, + { "bug:l1tf", NC_("x86-flag", /*/bug:l1tf*/ "CPU is affected by L1 Terminal Fault") }, /* power management * ... from arch/x86/kernel/cpu/powerflags.h */ { "pm:ts", NC_("x86-flag", /*/flag:pm:ts*/ "temperature sensor") }, @@ -299,32 +306,77 @@ static struct { { NULL, NULL}, }; +static struct flag_to_meaning *tab_flag_meaning; + static char all_flags[4096] = ""; -#define APPEND_FLAG(f) strcat(all_flags, f); strcat(all_flags, " "); -const char *x86_flag_list() { - int i = 0, built = 0; - built = strlen(all_flags); - if (!built) { - while(tab_flag_meaning[i].name != NULL) { - APPEND_FLAG(tab_flag_meaning[i].name); - i++; - } - } - return all_flags; +static void build_meaning_table_iter(JsonObject *object, + const gchar *member_name, + JsonNode *member_node, + gpointer user_data) +{ + int *i = user_data; + + tab_flag_meaning[*i] = (struct flag_to_meaning) { + .name = g_strdup(member_name), + .meaning = g_strdup(json_node_get_string(member_node)), + }; + + (*i)++; } -const char *x86_flag_meaning(const char *flag) { +void cpuflags_x86_init(void) +{ + gchar *flag_json = g_build_filename(g_get_user_config_dir(), "hardinfo2", + "cpuflags.json", NULL); + gboolean use_builtin_table = TRUE; + + if (!g_file_test(flag_json, G_FILE_TEST_EXISTS)) + goto use_builtin_table; + + JsonParser *parser = json_parser_new(); + if (!json_parser_load_from_file(parser, flag_json, NULL)) + goto use_builtin_table_with_json; + + JsonNode *root = json_parser_get_root(parser); + if (json_node_get_node_type(root) != JSON_NODE_OBJECT) + goto use_builtin_table_with_json; + + JsonObject *x86_flags = + json_object_get_object_member(json_node_get_object(root), "x86"); + if (!x86_flags) + goto use_builtin_table_with_json; + + tab_flag_meaning = + g_new(struct flag_to_meaning, json_object_get_size(x86_flags) + 1); int i = 0; - if (flag) - while(tab_flag_meaning[i].name != NULL) { + json_object_foreach_member(x86_flags, build_meaning_table_iter, &i); + tab_flag_meaning[i] = (struct flag_to_meaning){NULL, NULL}; + use_builtin_table = FALSE; + +use_builtin_table_with_json: + g_object_unref(parser); +use_builtin_table: + g_free(flag_json); + + if (use_builtin_table) + tab_flag_meaning = (struct flag_to_meaning *)builtin_tab_flag_meaning; +} + +const char *x86_flag_meaning(const char *flag) { + int i; + + if (!flag) + return NULL; + + for (i = 0; tab_flag_meaning[i].name; i++) { if (strcmp(tab_flag_meaning[i].name, flag) == 0) { if (tab_flag_meaning[i].meaning != NULL) return C_("x86-flag", tab_flag_meaning[i].meaning); else return NULL; } - i++; } + return NULL; } diff --git a/modules/network.c b/modules/network.c index f27a159a..4b65e0aa 100644 --- a/modules/network.c +++ b/modules/network.c @@ -1,10 +1,10 @@ /* * HardInfo - Displays System Information - * Copyright (C) 2003-2008 Leandro A. F. Pereira + * Copyright (C) 2003-2008 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, version 2. + * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -27,6 +27,8 @@ #include #include +#include +#include #include #include @@ -106,8 +108,13 @@ void scan_statistics(gboolean reload) gchar *tmp = buffer; while (*tmp && isspace(*tmp)) tmp++; - - __statistics = h_strdup_cprintf(" #%d=%s\n", + /* the bolded-space/dot used here is a hardinfo shell hack */ + if (params.markup_ok) + __statistics = h_strdup_cprintf(" #%d=%s\n", + __statistics, + line++, tmp); + else + __statistics = h_strdup_cprintf(">#%d=%s\n", __statistics, line++, tmp); } @@ -154,7 +161,6 @@ void scan_dns(gboolean reload) __nameservers = h_strdup_cprintf("%s=%s\n", __nameservers, ip, hbuf); - } shell_status_pulse(); @@ -427,15 +433,15 @@ void hi_module_deinit(void) g_free(__connections); } -ModuleAbout *hi_module_get_about(void) +const ModuleAbout *hi_module_get_about(void) { - static ModuleAbout ma[] = { - { - .author = "Leandro A. F. Pereira", - .description = N_("Gathers information about this computer's network connection"), - .version = VERSION, - .license = "GNU GPL version 2"} + static const ModuleAbout ma = { + .author = "L. A. F. Pereira", + .description = + N_("Gathers information about this computer's network connection"), + .version = VERSION, + .license = "GNU GPL version 2 or later.", }; - return ma; + return &ma; } diff --git a/modules/network/net.c b/modules/network/net.c index a75cf8b6..9a5cb5f1 100644 --- a/modules/network/net.c +++ b/modules/network/net.c @@ -1,10 +1,10 @@ /* * HardInfo - Displays System Information - * Copyright (C) 2003-2008 Leandro A. F. Pereira + * Copyright (C) 2003-2008 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, version 2. + * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -146,7 +146,7 @@ void get_wireless_info(int fd, NetInfo *netinfo) if (ioctl(fd, SIOCGIWMODE, &wi_req) < 0) { netinfo->wi_mode = 0; } else { - if (wi_req.u.mode >= 0 && wi_req.u.mode < 6) { + if (wi_req.u.mode < 6) { netinfo->wi_mode = wi_req.u.mode; } else { netinfo->wi_mode = 6; diff --git a/modules/network/nfs.c b/modules/network/nfs.c index 54bbfe0e..67095f92 100644 --- a/modules/network/nfs.c +++ b/modules/network/nfs.c @@ -1,10 +1,10 @@ /* * HardInfo - Displays System Information - * Copyright (C) 2003-2009 Leandro A. F. Pereira + * Copyright (C) 2003-2009 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, version 2. + * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of diff --git a/modules/network/samba.c b/modules/network/samba.c index 7e8dc46c..e14742ea 100644 --- a/modules/network/samba.c +++ b/modules/network/samba.c @@ -1,10 +1,10 @@ /* * HardInfo - Displays System Information - * Copyright (C) 2003-2009 Leandro A. F. Pereira + * Copyright (C) 2003-2009 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, version 2. + * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -57,7 +57,7 @@ scan_samba_usershares(void) gchar *usershare, *cmdline; gsize length; - spawned = g_spawn_command_line_sync("net usershare list", + spawned = hardinfo_spawn_command_line_sync("net usershare list", &out, &err, &status, NULL); if (spawned && status == 0 && out != NULL) { @@ -66,7 +66,7 @@ scan_samba_usershares(void) while(next_nl = strchr(p, '\n')) { cmdline = g_strdup_printf("net usershare info '%s'", strend(p, '\n')); - if (g_spawn_command_line_sync(cmdline, + if (hardinfo_spawn_command_line_sync(cmdline, &usershare, NULL, NULL, NULL)) { length = strlen(usershare); scan_samba_from_string(usershare, length); @@ -74,7 +74,6 @@ scan_samba_usershares(void) } g_free(cmdline); - shell_status_pulse(); p = next_nl + 1; } g_free(out); @@ -105,8 +104,6 @@ scan_samba_from_string(gchar *str, gsize length) groups = g_key_file_get_groups(keyfile, NULL); while (groups[i]) { - shell_status_pulse(); - if (g_key_file_has_key(keyfile, groups[i], "path", NULL)) { gchar *path = g_key_file_get_string(keyfile, groups[i], "path", NULL); smb_shares_list = h_strdup_cprintf("%s=%s\n", diff --git a/pixmaps/bolt.png b/pixmaps/bolt.png new file mode 100644 index 00000000..6569e7d3 Binary files /dev/null and b/pixmaps/bolt.png differ diff --git a/pixmaps/camera-photo.png b/pixmaps/camera-photo.png new file mode 100644 index 00000000..e3b4e618 Binary files /dev/null and b/pixmaps/camera-photo.png differ diff --git a/pixmaps/camera-web.png b/pixmaps/camera-web.png new file mode 100644 index 00000000..5691c549 Binary files /dev/null and b/pixmaps/camera-web.png differ diff --git a/pixmaps/circle_green_check.svg b/pixmaps/circle_green_check.svg new file mode 100644 index 00000000..88f6b567 --- /dev/null +++ b/pixmaps/circle_green_check.svg @@ -0,0 +1 @@ + diff --git a/pixmaps/circle_red_x.svg b/pixmaps/circle_red_x.svg new file mode 100644 index 00000000..05ae1600 --- /dev/null +++ b/pixmaps/circle_red_x.svg @@ -0,0 +1 @@ + diff --git a/pixmaps/circle_yellow_exclaim.svg b/pixmaps/circle_yellow_exclaim.svg new file mode 100644 index 00000000..40424f4c --- /dev/null +++ b/pixmaps/circle_yellow_exclaim.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/pixmaps/clipboard.png b/pixmaps/clipboard.png new file mode 100755 index 00000000..a5124bcc Binary files /dev/null and b/pixmaps/clipboard.png differ diff --git a/pixmaps/distros/arch.svg b/pixmaps/distros/arch.svg new file mode 100644 index 00000000..350295b8 --- /dev/null +++ b/pixmaps/distros/arch.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/pixmaps/distros/clear-linux-os.svg b/pixmaps/distros/clear-linux-os.svg new file mode 100644 index 00000000..87cd71e3 --- /dev/null +++ b/pixmaps/distros/clear-linux-os.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/pixmaps/distros/debian.svg b/pixmaps/distros/debian.svg new file mode 100644 index 00000000..506556af --- /dev/null +++ b/pixmaps/distros/debian.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/pixmaps/distros/fedora.svg b/pixmaps/distros/fedora.svg new file mode 100644 index 00000000..ae0153ca --- /dev/null +++ b/pixmaps/distros/fedora.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/pixmaps/distros/kubuntu.svg b/pixmaps/distros/kubuntu.svg new file mode 100644 index 00000000..39626d9d --- /dev/null +++ b/pixmaps/distros/kubuntu.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/pixmaps/distros/ubuntu.svg b/pixmaps/distros/ubuntu.svg new file mode 100644 index 00000000..c7a7ed06 --- /dev/null +++ b/pixmaps/distros/ubuntu.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/pixmaps/distros/xubuntu.svg b/pixmaps/distros/xubuntu.svg new file mode 100644 index 00000000..cce15022 --- /dev/null +++ b/pixmaps/distros/xubuntu.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/pixmaps/fan.png b/pixmaps/fan.png new file mode 100644 index 00000000..6878d845 Binary files /dev/null and b/pixmaps/fan.png differ diff --git a/pixmaps/file-roller.png b/pixmaps/file-roller.png index 5c17e91b..59444474 100644 Binary files a/pixmaps/file-roller.png and b/pixmaps/file-roller.png differ diff --git a/pixmaps/hardinfo.png b/pixmaps/hardinfo.png new file mode 100644 index 00000000..9d0484a5 Binary files /dev/null and b/pixmaps/hardinfo.png differ diff --git a/pixmaps/hardinfo2.png b/pixmaps/hardinfo2.png new file mode 100755 index 00000000..32a3c5f0 Binary files /dev/null and b/pixmaps/hardinfo2.png differ diff --git a/pixmaps/logo.png b/pixmaps/logo.png deleted file mode 100644 index 9d0484a5..00000000 Binary files a/pixmaps/logo.png and /dev/null differ diff --git a/pixmaps/media-floppy.png b/pixmaps/media-floppy.png new file mode 100644 index 00000000..4c4c74a0 Binary files /dev/null and b/pixmaps/media-floppy.png differ diff --git a/pixmaps/media-removable.png b/pixmaps/media-removable.png new file mode 100644 index 00000000..9e1a6636 Binary files /dev/null and b/pixmaps/media-removable.png differ diff --git a/pixmaps/os.png b/pixmaps/os.png index 2c07199b..9ff8777a 100644 Binary files a/pixmaps/os.png and b/pixmaps/os.png differ diff --git a/pixmaps/refresh.png b/pixmaps/refresh.png new file mode 100755 index 00000000..cb9c755d Binary files /dev/null and b/pixmaps/refresh.png differ diff --git a/pixmaps/security.png b/pixmaps/security.png new file mode 100644 index 00000000..1466e13f Binary files /dev/null and b/pixmaps/security.png differ diff --git a/pixmaps/server_sync.png b/pixmaps/server_sync.png new file mode 100755 index 00000000..99651a14 Binary files /dev/null and b/pixmaps/server_sync.png differ diff --git a/pixmaps/syncmanager-small.png b/pixmaps/syncmanager-small.png index 2a522619..3f2e00e1 100644 Binary files a/pixmaps/syncmanager-small.png and b/pixmaps/syncmanager-small.png differ diff --git a/pixmaps/syncmanager.png b/pixmaps/syncmanager.png index 46da6412..54dfc0f7 100644 Binary files a/pixmaps/syncmanager.png and b/pixmaps/syncmanager.png differ diff --git a/po/CMakeLists.txt b/po/CMakeLists.txt index 95dbdfea..06e251ce 100644 --- a/po/CMakeLists.txt +++ b/po/CMakeLists.txt @@ -1,3 +1,3 @@ include(Translations) -add_translations_directory("hardinfo") -add_translations_catalog("hardinfo" ../shell/ ../modules/ ../hardinfo/ ../remote/ ../help-viewer/ ) \ No newline at end of file +add_translations_directory("hardinfo2") +add_translations_catalog("hardinfo2" ../shell/ ../modules/ ../hardinfo/ ../remote/ ../help-viewer/ ) diff --git a/po/HOWTO.txt b/po/HOWTO.txt deleted file mode 100644 index afe9a8c2..00000000 --- a/po/HOWTO.txt +++ /dev/null @@ -1,9 +0,0 @@ -Translators -=========== - -IF POSSIBLE, run `bash updatepo.sh` in the po/ directory before begining. -This will regenerate hardinfo.pot and update all the .po files. -NOTHING IS LOST if this isn't done, but it prevents wasting time translating -strings that have changed, or are no longer used. - -DO NOT use `make pot`! diff --git a/po/de.po b/po/de.po index 623b5e09..9c584234 100644 --- a/po/de.po +++ b/po/de.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-08-14 22:23-0500\n" +"POT-Creation-Date: 2019-10-24 15:16-0500\n" "PO-Revision-Date: 2016-06-10 12:11+0200\n" "Last-Translator: Alexander Münch \n" "Language-Team: German\n" @@ -20,37 +20,450 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Poedit 1.8.7.1\n" +#: hardinfo/cpu_util.c:30 +msgid "Little Endian" +msgstr "" + +#: hardinfo/cpu_util.c:32 +msgid "Big Endian" +msgstr "" + +#: hardinfo/cpu_util.c:184 hardinfo/cpu_util.c:195 modules/devices/gpu.c:200 +msgid "Frequency Scaling" +msgstr "" + +#: hardinfo/cpu_util.c:185 modules/devices/gpu.c:201 +msgid "Minimum" +msgstr "" + +#: hardinfo/cpu_util.c:185 hardinfo/cpu_util.c:186 hardinfo/cpu_util.c:187 +#: hardinfo/dt_util.c:589 modules/devices/gpu.c:201 modules/devices/gpu.c:202 +msgid "kHz" +msgstr "" + +#: hardinfo/cpu_util.c:186 modules/devices/gpu.c:202 +msgid "Maximum" +msgstr "" + +#: hardinfo/cpu_util.c:187 +msgid "Zurzeit" +msgstr "" + +#: hardinfo/cpu_util.c:188 modules/devices/gpu.c:203 +msgid "Transition Latency" +msgstr "Übergangslatenz" + +#: hardinfo/cpu_util.c:188 modules/devices/gpu.c:203 +msgid "ns" +msgstr "" + +#: hardinfo/cpu_util.c:189 +msgid "Governor" +msgstr "" + +#: hardinfo/cpu_util.c:190 hardinfo/cpu_util.c:196 modules/devices/gpu.c:153 +#: modules/devices/pci.c:134 modules/devices/usb.c:136 +msgid "Driver" +msgstr "Treiber" + +#: hardinfo/cpu_util.c:202 modules/computer.c:737 +#: modules/devices/arm/processor.c:256 modules/devices/x86/processor.c:284 +#: modules/devices/x86/processor.c:388 modules/devices/x86/processor.c:524 +msgid "(Not Available)" +msgstr "(Nicht verfügbar)" + +#: hardinfo/cpu_util.c:210 hardinfo/cpu_util.c:212 +msgid "Socket" +msgstr "Sockel" + +#: hardinfo/cpu_util.c:215 hardinfo/cpu_util.c:217 modules/devices/gpu.c:149 +#: modules/devices/gpu.c:227 +msgid "Core" +msgstr "Kern" + +#: hardinfo/cpu_util.c:220 +msgid "Book" +msgstr "" + +#: hardinfo/cpu_util.c:222 +msgid "Drawer" +msgstr "Zeichner" + +#: hardinfo/cpu_util.c:228 modules/devices/arm/processor.c:471 +#: modules/devices/x86/processor.c:750 +msgid "Topology" +msgstr "Topologie" + +#: hardinfo/cpu_util.c:229 +msgid "ID" +msgstr "" + +#: hardinfo/dmi_util.c:25 +msgid "BIOS Information" +msgstr "" + +#: hardinfo/dmi_util.c:26 modules/devices/parisc/processor.c:157 +msgid "System" +msgstr "" + +#: hardinfo/dmi_util.c:27 +msgid "Base Board" +msgstr "Basisplatine" + +#: hardinfo/dmi_util.c:28 modules/devices/dmi.c:53 +msgid "Chassis" +msgstr "" + +#: hardinfo/dmi_util.c:29 modules/computer.c:529 modules/computer.c:1000 +#: modules/devices/alpha/processor.c:87 modules/devices/arm/processor.c:341 +#: modules/devices.c:99 modules/devices/ia64/processor.c:159 +#: modules/devices/m68k/processor.c:83 modules/devices/mips/processor.c:74 +#: modules/devices/parisc/processor.c:154 modules/devices/ppc/processor.c:157 +#: modules/devices/riscv/processor.c:181 modules/devices/s390/processor.c:131 +#: modules/devices/sh/processor.c:83 modules/devices/sparc/processor.c:74 +#: modules/devices/x86/processor.c:646 +msgid "Processor" +msgstr "Prozessor" + +#: hardinfo/dmi_util.c:30 +msgid "Memory Controller" +msgstr "Speichercontroller" + +#: hardinfo/dmi_util.c:31 +msgid "Memory Module" +msgstr "Speichermodul" + +#: hardinfo/dmi_util.c:32 modules/devices/parisc/processor.c:163 +#: modules/devices/x86/processor.c:662 +msgid "Cache" +msgstr "" + +#: hardinfo/dmi_util.c:33 +msgid "Port Connector" +msgstr "Port-Anschluss" + +#: hardinfo/dmi_util.c:34 +msgid "System Slots" +msgstr "Systemsteckplätze" + +#: hardinfo/dmi_util.c:35 +msgid "On Board Devices" +msgstr "Onboard-Geräte" + +#: hardinfo/dmi_util.c:36 +msgid "OEM Strings" +msgstr "" + +#: hardinfo/dmi_util.c:37 +msgid "System Configuration Options" +msgstr "Systemkonfigurationsoptionen" + +#: hardinfo/dmi_util.c:38 +msgid "BIOS Language" +msgstr "BIOS Sprache" + +#: hardinfo/dmi_util.c:39 +msgid "Group Associations" +msgstr "Gruppenverbände" + +#: hardinfo/dmi_util.c:40 +msgid "System Event Log" +msgstr "Systemereignisprotokoll" + +#: hardinfo/dmi_util.c:41 +msgid "Physical Memory Array" +msgstr "Physisches Speicher-Array" + +#: hardinfo/dmi_util.c:42 +msgid "Memory Device" +msgstr "Speichergerät" + +#: hardinfo/dmi_util.c:43 +msgid "32-bit Memory Error" +msgstr "32-bit Speicherfehler" + +#: hardinfo/dmi_util.c:44 +msgid "Memory Array Mapped Address" +msgstr "Zugeordnete Speicher-Array Adresse" + +#: hardinfo/dmi_util.c:45 +msgid "Memory Device Mapped Address" +msgstr "Zugeordnete Adresse des Speichergeräts" + +#: hardinfo/dmi_util.c:46 +msgid "Built-in Pointing Device" +msgstr "Eingebautes Zeigegerät" + +#: hardinfo/dmi_util.c:47 +msgid "Portable Battery" +msgstr "Portable Batterie" + +#: hardinfo/dmi_util.c:48 +msgid "System Reset" +msgstr "Systemrücksetzung" + +#: hardinfo/dmi_util.c:49 +msgid "Hardware Security" +msgstr "Hardware-Sicherheit" + +#: hardinfo/dmi_util.c:50 +msgid "System Power Controls" +msgstr "Systemenergiekontrolle" + +#: hardinfo/dmi_util.c:51 +msgid "Voltage Probe" +msgstr "Spannungssonde" + +#: hardinfo/dmi_util.c:52 +msgid "Cooling Device" +msgstr "Kühlgerät" + +#: hardinfo/dmi_util.c:53 +msgid "Temperature Probe" +msgstr "Temperaturprobe" + +#: hardinfo/dmi_util.c:54 +msgid "Electrical Current Probe" +msgstr "Elektrische Stromsonde" + +#: hardinfo/dmi_util.c:55 +msgid "Out-of-band Remote Access" +msgstr "'Out-of-band' Fernzugriff" + +#: hardinfo/dmi_util.c:56 +msgid "Boot Integrity Services" +msgstr "Boot-Integritätsdienste" + +#: hardinfo/dmi_util.c:57 +msgid "System Boot" +msgstr "Systemstart" + +#: hardinfo/dmi_util.c:58 +msgid "64-bit Memory Error" +msgstr "64-bit Speicherfehler" + +#: hardinfo/dmi_util.c:59 +msgid "Management Device" +msgstr "Verwaltungsgerät" + +#: hardinfo/dmi_util.c:60 +msgid "Management Device Component" +msgstr "Verwaltungsgerätkomponente" + +#: hardinfo/dmi_util.c:61 +msgid "Management Device Threshold Data" +msgstr "Schwellenwertdaten des Verwaltungsgeräts" + +#: hardinfo/dmi_util.c:62 +msgid "Memory Channel" +msgstr "Speicherkanal" + +#: hardinfo/dmi_util.c:63 +msgid "IPMI Device" +msgstr "IPMI Gerät" + +#: hardinfo/dmi_util.c:64 +msgid "Power Supply" +msgstr "Energieversorgung" + +#: hardinfo/dmi_util.c:65 +msgid "Additional Information" +msgstr "Zusätzliche Information" + +#: hardinfo/dmi_util.c:66 +msgid "Onboard Device" +msgstr "Onboard-Gerät" + +#: hardinfo/dmi_util.c:226 +msgid "Invalid chassis type (0)" +msgstr "Ungültiger Gehäusetyp (0)" + +#: hardinfo/dmi_util.c:227 hardinfo/dmi_util.c:228 +msgid "Unknown chassis type" +msgstr "Ungültiger Gehäusetyp" + +#: hardinfo/dmi_util.c:229 +msgid "Desktop" +msgstr "" + +#: hardinfo/dmi_util.c:230 +msgid "Low-profile Desktop" +msgstr "" + +#: hardinfo/dmi_util.c:231 +msgid "Pizza Box" +msgstr "" + +#: hardinfo/dmi_util.c:232 +msgid "Mini Tower" +msgstr "" + +#: hardinfo/dmi_util.c:233 +msgid "Tower" +msgstr "" + +#: hardinfo/dmi_util.c:234 +msgid "Portable" +msgstr "" + +#: hardinfo/dmi_util.c:235 modules/computer.c:391 modules/computer.c:400 +#: modules/computer.c:422 +msgid "Laptop" +msgstr "" + +#: hardinfo/dmi_util.c:236 +msgid "Notebook" +msgstr "" + +#: hardinfo/dmi_util.c:237 +msgid "Handheld" +msgstr "" + +#: hardinfo/dmi_util.c:238 +msgid "Docking Station" +msgstr "" + +#: hardinfo/dmi_util.c:239 +msgid "All-in-one" +msgstr "" + +#: hardinfo/dmi_util.c:240 +msgid "Subnotebook" +msgstr "" + +#: hardinfo/dmi_util.c:241 +msgid "Space-saving" +msgstr "" + +#: hardinfo/dmi_util.c:242 +msgid "Lunch Box" +msgstr "" + +#: hardinfo/dmi_util.c:243 +msgid "Main Server Chassis" +msgstr "Hauptservergehäuse " + +#: hardinfo/dmi_util.c:244 +msgid "Expansion Chassis" +msgstr "Erweiterungsgehäuse" + +#: hardinfo/dmi_util.c:245 +msgid "Sub Chassis" +msgstr "" + +#: hardinfo/dmi_util.c:246 +msgid "Bus Expansion Chassis" +msgstr "Buserweiterungs-Chassis" + +#: hardinfo/dmi_util.c:247 +msgid "Peripheral Chassis" +msgstr "Peripheriegehäuse" + +#: hardinfo/dmi_util.c:248 +msgid "RAID Chassis" +msgstr "RAID-Gehäuse" + +#: hardinfo/dmi_util.c:249 +msgid "Rack Mount Chassis" +msgstr "Rackmontage-Chassis" + +#: hardinfo/dmi_util.c:250 +msgid "Sealed-case PC" +msgstr "Versiegeltes Gehäuse" + +#: hardinfo/dmi_util.c:251 +msgid "Multi-system" +msgstr "Multisystem" + +#: hardinfo/dmi_util.c:252 +msgid "CompactPCI" +msgstr "" + +#: hardinfo/dmi_util.c:253 +msgid "AdvancedTCA" +msgstr "" + +#: hardinfo/dmi_util.c:254 +msgid "Blade" +msgstr "" + +#: hardinfo/dmi_util.c:255 +msgid "Blade Enclosing" +msgstr "" + +#: hardinfo/dmi_util.c:256 +msgid "Tablet" +msgstr "" + +#: hardinfo/dmi_util.c:257 +msgid "Convertible" +msgstr "" + +#: hardinfo/dmi_util.c:258 +msgid "Detachable" +msgstr "Abnehmbar" + +#: hardinfo/dmi_util.c:259 +msgid "IoT Gateway" +msgstr "" + +#: hardinfo/dmi_util.c:260 +msgid "Embedded PC" +msgstr "" + +#: hardinfo/dmi_util.c:261 +msgid "Mini PC" +msgstr "" + +#: hardinfo/dmi_util.c:262 +msgid "Stick PC" +msgstr "" + +#: hardinfo/dt_util.c:1179 +msgid "phandle Map" +msgstr "phandle-Karte" + +#: hardinfo/dt_util.c:1180 +msgid "Alias Map" +msgstr "Alias-Karte" + +#: hardinfo/dt_util.c:1181 +msgid "Symbol Map" +msgstr "Symbol-Karte" + #. / %d will be latest year of copyright -#: hardinfo/hardinfo.c:49 +#: hardinfo/hardinfo.c:50 #, c-format msgid "" -"Copyright (C) 2003-%d Leandro A. F. Pereira. See COPYING for details.\n" +"Copyright (C) 2003-%d L. A. F. Pereira. See COPYING for details.\n" "\n" msgstr "" -#: hardinfo/hardinfo.c:51 +#: hardinfo/hardinfo.c:52 #, c-format msgid "" "Compile-time options:\n" -" Release version: %s (%s)\n" +" Release-Version: %s (%s)\n" " BinReloc enabled: %s\n" " Data prefix: %s\n" " Library prefix: %s\n" " Compiled for: %s\n" msgstr "" -#: hardinfo/hardinfo.c:57 hardinfo/hardinfo.c:58 modules/computer.c:605 -#: modules/devices/inputdevices.c:128 modules/devices/pci.c:112 -#: modules/devices/printers.c:138 +#: hardinfo/hardinfo.c:58 hardinfo/hardinfo.c:59 modules/computer.c:785 +#: modules/computer/modules.c:131 modules/computer/modules.c:132 +#: modules/devices/inputdevices.c:123 modules/devices/printers.c:138 +#: modules/devices/spd-decode.c:903 msgid "Yes" msgstr "Ja" -#: hardinfo/hardinfo.c:58 modules/computer.c:605 modules/devices/pci.c:112 -#: modules/devices/printers.c:138 +#: hardinfo/hardinfo.c:59 modules/computer.c:785 modules/computer/modules.c:131 +#: modules/computer/modules.c:132 modules/devices/printers.c:138 +#: modules/devices/spd-decode.c:900 msgid "No" msgstr "Nein" -#: hardinfo/hardinfo.c:69 +#: hardinfo/hardinfo.c:70 #, c-format msgid "" "Failed to find runtime data.\n" @@ -59,56 +472,68 @@ msgid "" "• See if %s and %s exists and you have read permission." msgstr "" -#: hardinfo/hardinfo.c:76 +#: hardinfo/hardinfo.c:77 #, c-format msgid "" "Modules:\n" "%-20s %-15s %-12s\n" msgstr "" +"Module:\n" +"%-20s %-15s %-12s\n" -#: hardinfo/hardinfo.c:77 +#: hardinfo/hardinfo.c:78 msgid "File Name" -msgstr "" - -#: hardinfo/hardinfo.c:77 modules/computer.c:534 modules/computer.c:562 -#: modules/computer.c:630 modules/computer/languages.c:104 -#: modules/computer/modules.c:146 modules/devices/arm/processor.c:336 -#: modules/devices/ia64/processor.c:160 modules/devices/inputdevices.c:116 -#: modules/devices/pci.c:215 modules/devices/sh/processor.c:84 -#: modules/devices/x86/processor.c:455 modules/network.c:326 +msgstr "Dateiname" + +#: hardinfo/hardinfo.c:78 modules/computer.c:666 modules/computer.c:694 +#: modules/computer.c:815 modules/computer/languages.c:95 +#: modules/computer/modules.c:149 modules/devices/arm/processor.c:469 +#: modules/devices/dmi.c:37 modules/devices/dmi.c:48 modules/devices/gpu.c:233 +#: modules/devices/ia64/processor.c:160 modules/devices/inputdevices.c:111 +#: modules/devices/monitors.c:399 modules/devices/monitors.c:502 +#: modules/devices/sh/processor.c:84 modules/devices/x86/processor.c:749 +#: modules/network.c:332 msgid "Name" msgstr "Name" -#: hardinfo/hardinfo.c:77 modules/computer.c:296 modules/computer.c:505 -#: modules/computer.c:507 modules/computer.c:595 modules/computer.c:603 -#: modules/devices/inputdevices.c:121 +#: hardinfo/hardinfo.c:78 modules/computer.c:347 modules/computer.c:572 +#: modules/computer.c:574 modules/computer.c:743 modules/computer/modules.c:151 +#: modules/devices/dmi.c:40 modules/devices/dmi.c:46 modules/devices/dmi.c:50 +#: modules/devices/dmi.c:56 modules/devices/firmware.c:105 +#: modules/devices/inputdevices.c:116 modules/devices/monitors.c:405 msgid "Version" msgstr "" -#: hardinfo/hardinfo.c:124 +#: hardinfo/hardinfo.c:129 #, c-format -msgid "Unknown benchmark ``%s'' or libbenchmark.so not loaded" -msgstr "" +msgid "Unknown benchmark ``%s'' or benchmark.so not loaded" +msgstr "Unbekannter Benchmark ``%s'' oder benchmark.so nicht geladen" -#: hardinfo/hardinfo.c:152 +#: hardinfo/hardinfo.c:159 msgid "Don't know what to do. Exiting." -msgstr "" +msgstr "Weiß nicht was zu tun ist. Beende." -#: hardinfo/util.c:104 modules/computer/uptime.c:53 +#: hardinfo/usb_util.c:290 modules/devices/devicetree.c:91 +#: modules/devices/devicetree.c:92 modules/devices/monitors.c:407 +#: modules/devices/storage.c:246 +msgid "(None)" +msgstr "(Nichts)" + +#: hardinfo/util.c:104 modules/computer/uptime.c:54 #, c-format msgid "%d day" msgid_plural "%d days" msgstr[0] "%d Tag" msgstr[1] "%d Tage" -#: hardinfo/util.c:105 modules/computer/uptime.c:54 +#: hardinfo/util.c:105 modules/computer/uptime.c:55 #, c-format msgid "%d hour" msgid_plural "%d hours" msgstr[0] "%d Stunde" msgstr[1] "%d Stunden" -#: hardinfo/util.c:106 modules/computer/uptime.c:55 +#: hardinfo/util.c:106 modules/computer/uptime.c:56 #, c-format msgid "%d minute" msgid_plural "%d minutes" @@ -164,89 +589,117 @@ msgstr "Warnung" msgid "Fatal Error" msgstr "Kritischer Fehler" -#: hardinfo/util.c:401 +#: hardinfo/util.c:406 msgid "creates a report and prints to standard output" -msgstr "" +msgstr "Erstellt einen Report und leitet ihn zum 'Standard-Output' weiter" -#: hardinfo/util.c:407 -msgid "chooses a report format (text, html)" -msgstr "" +#: hardinfo/util.c:412 +msgid "chooses a report format ([text], html)" +msgstr "Wählt ein Reportformat ([text], html)" -#: hardinfo/util.c:413 +#: hardinfo/util.c:418 msgid "run benchmark; requires benchmark.so to be loaded" -msgstr "" +msgstr "Starte Benchmark; benchmark.so muss geladen sein" + +#: hardinfo/util.c:424 +msgid "note attached to benchmark results" +msgstr "Hinweis angehängt an Benchmark-Ergebnisse" + +#: hardinfo/util.c:430 +msgid "benchmark result format ([short], conf, shell)" +msgstr "Benchmarkergebnisformat ([short], conf, shell)" + +#: hardinfo/util.c:436 +msgid "" +"maximum number of benchmark results to include (-1 for no limit, default is " +"10)" +msgstr "Maximale Anzahl an Benchmark-Ergebnissen zum einbeziehen (-1 für kein Limit, Standard ist " +"10)" -#: hardinfo/util.c:419 +#: hardinfo/util.c:442 msgid "lists modules" -msgstr "" +msgstr "listet Module auf" -#: hardinfo/util.c:425 +#: hardinfo/util.c:448 msgid "specify module to load" -msgstr "" +msgstr "gibt Modul zum laden an" -#: hardinfo/util.c:431 +#: hardinfo/util.c:454 msgid "automatically load module dependencies" -msgstr "" +msgstr "Lädt Modul-Abhängigkeiten automatisch" -#: hardinfo/util.c:438 +#: hardinfo/util.c:461 msgid "run in XML-RPC server mode" -msgstr "" +msgstr "Starte in XML-RPC server Modus" -#: hardinfo/util.c:445 +#: hardinfo/util.c:468 msgid "shows program version and quit" -msgstr "" +msgstr "Zeigt Programmversion und beendet" + +#: hardinfo/util.c:474 +msgid "do not run benchmarks" +msgstr "Keine Benchmarks ausführen" + +#: hardinfo/util.c:480 +msgid "show all details" +msgstr "Alle Details anzeigen" -#: hardinfo/util.c:450 +#: hardinfo/util.c:485 msgid "- System Profiler and Benchmark tool" msgstr "- System-Profiler und Benchmark-Werkzeug" -#: hardinfo/util.c:460 +#: hardinfo/util.c:495 #, c-format msgid "" "Unrecognized arguments.\n" "Try ``%s --help'' for more information.\n" msgstr "" +"Argumente nicht erkannt.\n" +"Versuche ``%s --help'' für mehr Informationen.\n" -#: hardinfo/util.c:526 -#, c-format -msgid "Couldn't find a Web browser to open URL %s." -msgstr "Konnte keinen Web-Browser finden, um die URL %s zu öffnen." - -#: hardinfo/util.c:875 +#: hardinfo/util.c:903 #, c-format msgid "Module \"%s\" depends on module \"%s\", load it?" -msgstr "" +msgstr "Module \"%s\" ist von Modul \"%s\" abhängig, lade Modul?" -#: hardinfo/util.c:898 +#: hardinfo/util.c:926 #, c-format msgid "Module \"%s\" depends on module \"%s\"." -msgstr "" +msgstr "Modul \"%s\" ist von Modul \"%s\" abhängig" -#: hardinfo/util.c:943 +#: hardinfo/util.c:971 #, c-format msgid "No module could be loaded. Check permissions on \"%s\" and try again." -msgstr "" +msgstr "Kein Modul konnte geladen werden. Überprüfe Berechtigung von \"%s\" und versuche es erneut" -#: hardinfo/util.c:947 +#: hardinfo/util.c:975 msgid "" "No module could be loaded. Please use hardinfo -l to list all available " "modules and try again with a valid module list." msgstr "" +"Kein Modul konnte geladen werden. Bitte führe hardinfo -l aus um alle " +"Module anzuzeigen und versuche es mit einer gültigen Liste erneut" -#: hardinfo/util.c:1024 +#: hardinfo/util.c:1030 #, c-format msgid "Scanning: %s..." -msgstr "" +msgstr "Scanne: %s..." -#: hardinfo/util.c:1034 shell/shell.c:301 shell/shell.c:760 shell/shell.c:1795 -#: modules/benchmark.c:449 modules/benchmark.c:457 +#: hardinfo/util.c:1040 shell/shell.c:310 shell/shell.c:795 shell/shell.c:1962 +#: modules/benchmark.c:583 modules/benchmark.c:591 msgid "Done." msgstr "Fertig." -#: shell/callbacks.c:117 -#, c-format -msgid "%s Module" -msgstr "" +#: hardinfo/vendor.c:440 modules/computer.c:573 modules/computer.c:765 +#: modules/computer/os.c:79 modules/computer/os.c:263 modules/computer/os.c:300 +#: modules/computer/os.c:499 modules/computer/os.c:569 modules/devices.c:359 +#: modules/devices.c:505 modules/devices/printers.c:99 +#: modules/devices/printers.c:106 modules/devices/printers.c:116 +#: modules/devices/printers.c:131 modules/devices/printers.c:140 +#: modules/devices/printers.c:243 modules/devices/spd-decode.c:312 +#: modules/devices/usb.c:146 +msgid "Unknown" +msgstr "Unbekannt" #: shell/callbacks.c:128 #, c-format @@ -260,7 +713,7 @@ msgstr "" #: shell/callbacks.c:142 #, c-format msgid "No about information is associated with the %s module." -msgstr "" +msgstr "Keine 'Über' Information ist mit dem Modul %s verbunden" #: shell/callbacks.c:158 msgid "Author:" @@ -270,63 +723,63 @@ msgstr "" msgid "Contributors:" msgstr "Mitwirkende:" -#: shell/callbacks.c:166 +#: shell/callbacks.c:167 msgid "Based on work by:" -msgstr "" +msgstr "Basierend auf der Arbeit von:" -#: shell/callbacks.c:167 +#: shell/callbacks.c:168 msgid "MD5 implementation by Colin Plumb (see md5.c for details)" -msgstr "" +msgstr "MD5 Implementierung von Colin Plumb (md5.c für Details)" -#: shell/callbacks.c:168 +#: shell/callbacks.c:169 msgid "SHA1 implementation by Steve Reid (see sha1.c for details)" -msgstr "" +msgstr "SHA1 Implementierung von Steve Reid (sha1.c für Details)" -#: shell/callbacks.c:169 +#: shell/callbacks.c:170 msgid "Blowfish implementation by Paul Kocher (see blowfich.c for details)" -msgstr "" +msgstr "Blowfish Implementierung von Paul Kocher (blowfich.c für Details)" -#: shell/callbacks.c:170 +#: shell/callbacks.c:171 msgid "Raytracing benchmark by John Walker (see fbench.c for details)" -msgstr "" +msgstr "Raytracing Benchmark von John Walker (fbench.c für Details)" -#: shell/callbacks.c:171 +#: shell/callbacks.c:172 msgid "FFT benchmark by Scott Robert Ladd (see fftbench.c for details)" -msgstr "" +msgstr "FFT Benchmark von Scott Robert Ladd (fftbench.c für Details)" -#: shell/callbacks.c:172 +#: shell/callbacks.c:173 msgid "Some code partly based on x86cpucaps by Osamu Kayasono" -msgstr "" +msgstr "Einiger code teilweise basierend auf x86cpucaps von Osamu Kayasono" -#: shell/callbacks.c:173 +#: shell/callbacks.c:174 msgid "Vendor list based on GtkSysInfo by Pissens Sebastien" -msgstr "" +msgstr "Verkäuferliste basiert auf GtkSysInfo von Pissens Sebastien" -#: shell/callbacks.c:174 +#: shell/callbacks.c:175 msgid "DMI support based on code by Stewart Adam" -msgstr "" +msgstr "DMI Support basiert auf Code von Stewart Adam" -#: shell/callbacks.c:175 +#: shell/callbacks.c:176 msgid "SCSI support based on code by Pascal F. Martin" -msgstr "" +msgstr "SCSI Support basiert auf code von Pascal F. Martin" -#: shell/callbacks.c:180 +#: shell/callbacks.c:181 msgid "Tango Project" -msgstr "" +msgstr "Tango Projekt" -#: shell/callbacks.c:181 +#: shell/callbacks.c:182 msgid "The GNOME Project" -msgstr "" +msgstr "Das GNOME Projekt" -#: shell/callbacks.c:182 +#: shell/callbacks.c:183 msgid "VMWare, Inc. (USB icon from VMWare Workstation 6)" -msgstr "" +msgstr "VMWare, Inc. (USB icon von VMWare Workstation 6)" -#: shell/callbacks.c:200 +#: shell/callbacks.c:201 msgid "System information and benchmark tool" msgstr "System-Informationen und Benchmark-Werkzeug" -#: shell/callbacks.c:205 +#: shell/callbacks.c:206 msgid "" "HardInfo is free software; you can redistribute it and/or modify it under " "the terms of the GNU General Public License as published by the Free " @@ -342,115 +795,131 @@ msgid "" "Franklin St, Fifth Floor, Boston, MA 02110-1301 USA" msgstr "" -#: shell/callbacks.c:220 +#: shell/callbacks.c:221 msgid "translator-credits" -msgstr "" +msgstr "Übersetzer-Anerkennungen" -#: shell/menu.c:35 +#: shell/menu.c:43 msgid "_Information" msgstr "_Informationen" -#: shell/menu.c:36 +#: shell/menu.c:44 msgid "_Remote" msgstr "" -#: shell/menu.c:37 +#: shell/menu.c:45 msgid "_View" msgstr "_Ansicht" -#: shell/menu.c:38 +#: shell/menu.c:46 msgid "_Help" msgstr "_Hilfe" -#: shell/menu.c:39 +#: shell/menu.c:47 msgid "About _Modules" msgstr "Über _Module" -#: shell/menu.c:43 +#: shell/menu.c:51 msgid "Generate _Report" msgstr "_Bericht generieren" -#: shell/menu.c:48 +#: shell/menu.c:56 msgid "_Network Updater..." msgstr "_Netzwerk-Updater…" -#: shell/menu.c:53 +#: shell/menu.c:61 msgid "_Open..." -msgstr "" +msgstr "_Öffnen..." -#: shell/menu.c:58 +#: shell/menu.c:66 msgid "_Copy to Clipboard" msgstr "In die Zwischenablage _kopieren" -#: shell/menu.c:59 +#: shell/menu.c:67 msgid "Copy to clipboard" msgstr "In die Zwischenablage kopieren" -#: shell/menu.c:63 +#: shell/menu.c:71 msgid "_Refresh" msgstr "_Aktualisieren" -#: shell/menu.c:68 +#: shell/menu.c:76 msgid "_Open HardInfo Web Site" msgstr "HardInfo-_Webseite öffnen" -#: shell/menu.c:73 +#: shell/menu.c:81 msgid "_Report bug" msgstr "Fehler _melden" -#: shell/menu.c:78 +#: shell/menu.c:86 msgid "_About HardInfo" msgstr "_Über HardInfo" -#: shell/menu.c:79 +#: shell/menu.c:87 msgid "Displays program version information" msgstr "" -#: shell/menu.c:83 +#: shell/menu.c:91 msgid "_Quit" msgstr "_Beenden" -#: shell/menu.c:90 +#: shell/menu.c:98 msgid "_Side Pane" msgstr "_Seitenleiste" -#: shell/menu.c:91 +#: shell/menu.c:99 msgid "Toggles side pane visibility" msgstr "" -#: shell/menu.c:94 +#: shell/menu.c:102 msgid "_Toolbar" msgstr "_Symbolleiste" -#: shell/report.c:494 shell/report.c:502 +#: shell/report.c:769 shell/report.c:777 msgid "Save File" msgstr "Datei speichern" -#: shell/report.c:629 +#: shell/report.c:772 shell/report.c:1243 shell/syncmanager.c:748 +msgid "_Cancel" +msgstr "_Abbrechen" + +#: shell/report.c:774 +msgid "_Save" +msgstr "_Speichern" + +#: shell/report.c:943 msgid "Cannot create ReportContext. Programming bug?" -msgstr "" +msgstr "Kann 'ReportContext' nicht erstellen. Programmierbug?" -#: shell/report.c:648 +#: shell/report.c:962 msgid "Open the report with your web browser?" msgstr "Den Bericht in deinem Webbrowser öffnen?" -#: shell/report.c:682 +#: shell/report.c:965 +msgid "_No" +msgstr "_Nein" + +#: shell/report.c:966 +msgid "_Open" +msgstr "_Öffnen" + +#: shell/report.c:996 msgid "Generating report..." msgstr "Generiere Bericht…" -#: shell/report.c:692 +#: shell/report.c:1006 msgid "Report saved." msgstr "Bericht gespeichert." -#: shell/report.c:694 +#: shell/report.c:1008 msgid "Error while creating the report." msgstr "Fehler beim Erzeugen des Berichts." -#: shell/report.c:796 +#: shell/report.c:1110 msgid "Generate Report" msgstr "Bericht generieren" -#: shell/report.c:821 +#: shell/report.c:1135 msgid "" "Generate Report\n" "Please choose the information that you wish to view in your report:" @@ -458,52 +927,48 @@ msgstr "" "Bericht generieren\n" "Bitte wähle die Informationen, die du in deinen Bereich einbeziehen möchtest:" -#: shell/report.c:893 +#: shell/report.c:1207 msgid "Select _None" msgstr "_Nichts auswählen" -#: shell/report.c:904 +#: shell/report.c:1218 msgid "Select _All" msgstr "_Alles auswählen" -#: shell/report.c:929 shell/syncmanager.c:748 -msgid "_Cancel" -msgstr "" - -#: shell/report.c:939 +#: shell/report.c:1253 msgid "_Generate" msgstr "_Generieren" -#: shell/shell.c:402 +#: shell/shell.c:407 #, c-format msgid "%s - System Information" msgstr "%s - System-Informationen" -#: shell/shell.c:407 +#: shell/shell.c:412 msgid "System Information" msgstr "System-Informationen" -#: shell/shell.c:747 +#: shell/shell.c:782 msgid "Loading modules..." -msgstr "" +msgstr "Lade Module..." -#: shell/shell.c:1660 +#: shell/shell.c:1828 #, c-format msgid "%s → Summary" msgstr "%s → Zusammenfassung" -#: shell/shell.c:1769 +#: shell/shell.c:1936 msgid "Updating..." msgstr "Aktualisiere…" #: shell/syncmanager.c:69 msgid "" "Synchronize with Central Database\n" -"The following information may be synchronized with the HardInfo central " +"The following information may be synchronized\nwith the HardInfo central " "database." msgstr "" "Synchronisieren mit zentraler Datenbank\n" -"Die folgenden Informationen können mit der zentralen HardInfo-Datenbank " +"Die folgenden Informationen können mit der\nzentralen HardInfo-Datenbank " "synchronisiert werden." #: shell/syncmanager.c:72 @@ -518,6 +983,7 @@ msgstr "" msgid "" "HardInfo was compiled without libsoup support. (Network Updater requires it.)" msgstr "" +"HardInfo wurde ohne libsoup-Support kompiliert. (Netzwerk-Updater benötigt es.)" #: shell/syncmanager.c:161 shell/syncmanager.c:189 #, c-format @@ -526,7 +992,7 @@ msgstr "%s (Fehlercode #%d)" #: shell/syncmanager.c:170 shell/syncmanager.c:198 msgid "Could not parse XML-RPC response" -msgstr "" +msgstr "Konnte XML-RPC Antwort nicht parsen" #: shell/syncmanager.c:280 #, c-format @@ -534,6 +1000,8 @@ msgid "" "Server says it supports API version %d, but this version of HardInfo only " "supports API version %d." msgstr "" +"Server sagt er supportet API Version %d, aber diese Version von Hardinfo " +"unterstützt nur API Version %d" #: shell/syncmanager.c:375 msgid "Contacting HardInfo Central Database" @@ -575,839 +1043,1214 @@ msgstr "Netzwerk-Updater" msgid "_Synchronize" msgstr "_Synchronisieren" -#: modules/benchmark.c:52 -msgid "CPU Blowfish" -msgstr "CPU Blowfish" +#: modules/benchmark/benches.c:82 +msgid "CPU Blowfish (Single-thread)" +msgstr "" + +#: modules/benchmark/benches.c:84 +msgid "CPU Blowfish (Multi-thread)" +msgstr "" + +#: modules/benchmark/benches.c:86 +msgid "CPU Blowfish (Multi-core)" +msgstr "" + +#: modules/benchmark/benches.c:88 +msgid "CPU Zlib" +msgstr "" -#: modules/benchmark.c:53 +#: modules/benchmark/benches.c:90 msgid "CPU CryptoHash" msgstr "CPU Crypto-Hash" -#: modules/benchmark.c:54 +#: modules/benchmark/benches.c:92 msgid "CPU Fibonacci" msgstr "CPU Fibonacci" -#: modules/benchmark.c:55 +#: modules/benchmark/benches.c:94 msgid "CPU N-Queens" msgstr "CPU Damenproblem" -#: modules/benchmark.c:56 -msgid "CPU Zlib" -msgstr "" - -#: modules/benchmark.c:57 +#: modules/benchmark/benches.c:96 msgid "FPU FFT" msgstr "FPU FFT" -#: modules/benchmark.c:58 +#: modules/benchmark/benches.c:98 msgid "FPU Raytracing" msgstr "FPU Raytracing" -#: modules/benchmark.c:60 +#: modules/benchmark/benches.c:100 +msgid "SysBench CPU (Single-thread)" +msgstr "" + +#: modules/benchmark/benches.c:102 +msgid "SysBench CPU (Multi-thread)" +msgstr "" + +#: modules/benchmark/benches.c:104 +msgid "SysBench CPU (Four threads)" +msgstr "SysBench CPU (Vier threads)" + +#: modules/benchmark/benches.c:106 +msgid "SysBench Memory (Single-thread)" +msgstr "" + +#: modules/benchmark/benches.c:108 +msgid "SysBench Memory (Two threads)" +msgstr "SysBench Memory (Zwei threads)" + +#: modules/benchmark/benches.c:110 +msgid "SysBench Memory" +msgstr "" + +#: modules/benchmark/benches.c:113 msgid "GPU Drawing" msgstr "GPU Zeichnen" -#: modules/benchmark.c:239 modules/benchmark.c:255 +#: modules/benchmark/benches.c:126 +msgid "" +"Alexey Kopytov's sysbench is required.\n" +"Results in events/second. Higher is better." +msgstr "" +"Alexey Kopytov's sysbench wird benötigt.\n" +"Ergebnisse in events/Sekunde. Höhere Werte sind besser." + +#: modules/benchmark/benches.c:132 +msgid "" +"Alexey Kopytov's sysbench is required.\n" +"Results in MiB/second. Higher is better." +msgstr "" +"Alexey Kopytov's sysbench wird benötigt.\n" +"Ergebnisse in MiB/Sekunde. Höhere Werte sind besser." + +#: modules/benchmark/benches.c:136 +msgid "Results in MiB/second. Higher is better." +msgstr "Ergebnisse in MiB/Sekunde. Höhere Werte sind besser." + +#: modules/benchmark/benches.c:143 +msgid "Results in HIMarks. Higher is better." +msgstr "Ergebnisse in HIMarks. Höhere Werte sind besser." + +#: modules/benchmark/benches.c:149 +msgid "Results in seconds. Lower is better." +msgstr "Ergebnisse in Sekunden. Niedrigere Werte sind besser." + +#. /or modify +#. * it under the terms of the GNU General Public License as published by +#. * the Free Software Foundation, version 2. +#. * +#. * This program is distributed in the hope that it will be useful, +#. * but WITHOUT ANY WARRANTY; without even the implied warranty of +#. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +#. * GNU General Public License for more details. +#. * +#. * You should have received a copy of the GNU General Public License +#. * along with this program; if not, write to the Free Software +#. * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +#. +#. / Used for an unknown value. Having it in only one place cleans up the .po line references +#: modules/benchmark/bench_results.c:22 modules/computer.c:41 +#: modules/computer/display.c:41 modules/computer/display.c:58 +#: modules/computer/os.c:286 modules/computer/os.c:346 modules/devices.c:488 +#: modules/devices/dmi_memory.c:52 modules/devices/dmi_memory.c:53 +#: modules/devices/dmi_memory.c:579 modules/devices/dmi_memory.c:719 +#: modules/devices/dmi_memory.c:855 modules/devices/gpu.c:42 +#: modules/devices/gpu.c:58 modules/devices/gpu.c:112 modules/devices/gpu.c:120 +#: modules/devices/gpu.c:154 modules/devices/gpu.c:155 +#: modules/devices/gpu.c:176 modules/devices/monitors.c:27 +#: modules/devices/monitors.c:28 modules/devices/monitors.c:153 +#: modules/devices/monitors.c:162 modules/devices/pci.c:25 +#: modules/devices/pci.c:135 modules/devices/pci.c:136 +#: modules/devices/spd-decode.c:306 modules/devices/spd-decode.c:307 +#: modules/devices/spd-decode.c:310 modules/devices/spd-decode.c:311 +#: modules/devices/spd-decode.c:914 modules/devices/spd-decode.c:915 +#: modules/devices/storage.c:247 modules/devices/storage.c:309 +#: modules/devices/usb.c:28 modules/network/net.c:437 includes/cpu_util.h:11 +msgid "(Unknown)" +msgstr "" + +#: modules/benchmark/bench_results.c:49 modules/benchmark/bench_results.c:330 +#: modules/devices/alpha/processor.c:90 modules/devices/arm/processor.c:290 +#: modules/devices/arm/processor.c:303 modules/devices/arm/processor.c:345 +#: modules/devices/arm/processor.c:500 modules/devices.c:325 +#: modules/devices.c:333 modules/devices.c:361 modules/devices/gpu.c:115 +#: modules/devices/gpu.c:117 modules/devices/gpu.c:123 +#: modules/devices/gpu.c:125 modules/devices/gpu.c:179 +#: modules/devices/gpu.c:181 modules/devices/ia64/processor.c:167 +#: modules/devices/ia64/processor.c:196 modules/devices/m68k/processor.c:87 +#: modules/devices/mips/processor.c:77 modules/devices/parisc/processor.c:158 +#: modules/devices/parisc/processor.c:191 modules/devices/ppc/processor.c:160 +#: modules/devices/ppc/processor.c:187 modules/devices/riscv/processor.c:186 +#: modules/devices/riscv/processor.c:214 modules/devices/s390/processor.c:160 +#: modules/devices/sh/processor.c:87 modules/devices/sh/processor.c:88 +#: modules/devices/sh/processor.c:89 modules/devices/x86/processor.c:318 +#: modules/devices/x86/processor.c:331 modules/devices/x86/processor.c:657 +#: modules/devices/x86/processor.c:780 +msgid "MHz" +msgstr "" + +#: modules/benchmark/bench_results.c:396 modules/benchmark/bench_results.c:495 +msgid "kiB" +msgstr "" + +#: modules/benchmark/bench_results.c:403 modules/benchmark/bench_results.c:453 +#, c-format +msgid "%d-bit" +msgstr "" + +#: modules/benchmark/bench_results.c:422 modules/benchmark/bench_results.c:477 +msgid "Benchmark Result" +msgstr "Benchmark Ergebnisse" + +#: modules/benchmark/bench_results.c:423 modules/benchmark/bench_results.c:479 +msgid "Threads" +msgstr "" + +#: modules/benchmark/bench_results.c:424 modules/benchmark/bench_results.c:481 +msgid "Elapsed Time" +msgstr "Vergangene Zeit" + +#: modules/benchmark/bench_results.c:424 modules/benchmark/bench_results.c:481 +msgid "seconds" +msgstr "Sekunden" + +#: modules/benchmark/bench_results.c:425 modules/computer/languages.c:101 +#: modules/devices/arm/processor.c:355 modules/devices/gpu.c:147 +#: modules/devices/ia64/processor.c:166 modules/devices/pci.c:132 +#: modules/devices/ppc/processor.c:159 +msgid "Revision" +msgstr "" + +#: modules/benchmark/bench_results.c:426 modules/benchmark/bench_results.c:482 +msgid "Extra Information" +msgstr "Zusätzliche Information" + +#: modules/benchmark/bench_results.c:427 modules/benchmark/bench_results.c:483 +msgid "User Note" +msgstr "User-Hinweis" + +#: modules/benchmark/bench_results.c:429 modules/benchmark/bench_results.c:485 +msgid "Note" +msgstr "Hinweis" + +#: modules/benchmark/bench_results.c:430 modules/benchmark/bench_results.c:486 +msgid "" +"This result is from an old version of HardInfo. Results might not be " +"comparable to current version. Some details are missing." +msgstr "" +"Dieses Ergebnis stammt von einer früheren Version von Hardinfo. " +"Ergebnisse stimmen möglicherweise nicht mit der derzeitigen Version überein" + +#: modules/benchmark/bench_results.c:431 modules/benchmark/bench_results.c:487 +#: modules/devices/devicetree/pmac_data.c:81 modules/devices/sh/processor.c:85 +msgid "Machine" +msgstr "Maschine" + +#: modules/benchmark/bench_results.c:432 modules/benchmark/bench_results.c:488 +#: modules/devices/devicetree.c:208 modules/devices/dmi.c:47 +msgid "Board" +msgstr "" + +#: modules/benchmark/bench_results.c:433 modules/benchmark/bench_results.c:489 +msgid "CPU Name" +msgstr "" + +#: modules/benchmark/bench_results.c:434 modules/benchmark/bench_results.c:490 +msgid "CPU Description" +msgstr "CPU Beschreibung" + +#: modules/benchmark/bench_results.c:435 modules/benchmark/bench_results.c:491 +#: modules/benchmark.c:442 msgid "CPU Config" +msgstr "CPU Konfiguration" + +#: modules/benchmark/bench_results.c:436 modules/benchmark/bench_results.c:492 +msgid "Threads Available" +msgstr "Threads verfügbar" + +#: modules/benchmark/bench_results.c:437 modules/benchmark/bench_results.c:493 +msgid "GPU" +msgstr "" + +#: modules/benchmark/bench_results.c:438 modules/benchmark/bench_results.c:494 +#: modules/computer.c:542 +msgid "OpenGL Renderer" +msgstr "OpenGL-Renderer" + +#: modules/benchmark/bench_results.c:439 modules/benchmark/bench_results.c:495 +#: modules/computer.c:123 modules/computer.c:531 modules/computer.c:1000 +#: modules/devices/gpu.c:150 +msgid "Memory" +msgstr "Hauptspeicher" + +#: modules/benchmark/bench_results.c:440 modules/benchmark/bench_results.c:496 +msgid "Pointer Size" +msgstr "" + +#: modules/benchmark/bench_results.c:478 +msgid "Benchmark" +msgstr "" + +#: modules/benchmark/bench_results.c:480 modules/devices/dmi_memory.c:879 +#: modules/devices/firmware.c:246 modules/devices/monitors.c:492 +#: modules/devices/x86/processor.c:691 +msgid "Result" +msgstr "Ergebnis" + +#: modules/benchmark/bench_results.c:498 +msgid "Handles" +msgstr "" + +#: modules/benchmark/bench_results.c:499 +msgid "mid" +msgstr "" + +#: modules/benchmark/bench_results.c:500 +msgid "cfg_val" msgstr "" -#: modules/benchmark.c:239 modules/benchmark.c:255 +#: modules/benchmark.c:442 msgid "Results" msgstr "Ergebnisse" -#: modules/benchmark.c:239 modules/benchmark.c:255 modules/computer.c:751 -#: modules/devices/sparc/processor.c:75 +#: modules/benchmark.c:442 modules/devices/sparc/processor.c:75 msgid "CPU" msgstr "" -#: modules/benchmark.c:381 +#: modules/benchmark.c:513 #, c-format msgid "Benchmarking: %s." msgstr "Benchmarke: %s." -#: modules/benchmark.c:395 -msgid "Benchmarking. Please do not move your mouse or press any keys." -msgstr "Benchmarke. Bitte bewege den Mauszeiger nicht und drücke keine Tasten." +#: modules/benchmark.c:527 +msgid "Benchmarking. Please do not move your mouse\nor press any keys." +msgstr "Benchmarke. Bitte bewege den Mauszeiger nicht\nund drücke keine Tasten." -#: modules/benchmark.c:399 +#: modules/benchmark.c:530 msgid "Cancel" msgstr "Abbrechen" -#: modules/benchmark.c:536 -msgid "Results in MiB/second. Higher is better." -msgstr "Ergebnisse in MiB/Sekunde. Höhere Werte sind besser." - -#: modules/benchmark.c:540 -msgid "Results in HIMarks. Higher is better." -msgstr "Ergebnisse in HIMarks. Höhere Werte sind besser." - -#: modules/benchmark.c:547 -msgid "Results in seconds. Lower is better." -msgstr "Ergebnisse in Sekunden. Niedrigere Werte sind besser." - -#: modules/benchmark.c:555 +#: modules/benchmark.c:601 msgid "Benchmarks" msgstr "Benchmarks" -#: modules/benchmark.c:573 +#: modules/benchmark.c:619 msgid "Perform tasks and compare with other systems" msgstr "Erledigt Aufgaben und vergleicht die Ergebnisse mit anderen Systemen" -#: modules/benchmark.c:663 +#: modules/benchmark.c:730 msgid "Send benchmark results" msgstr "Übermittle Benchmark-Ergebnisse" -#: modules/benchmark.c:668 +#: modules/benchmark.c:735 msgid "Receive benchmark results" msgstr "Lade Benchmark-Ergebnisse" -#: modules/computer/alsa.c:26 modules/computer.c:489 +#: modules/computer/alsa.c:26 modules/computer.c:546 msgid "Audio Devices" msgstr "Audio-Geräte" #: modules/computer/alsa.c:34 msgid "Audio Adapter" -msgstr "" - -#: modules/computer/boots.c:33 modules/computer.c:73 modules/computer.c:546 -msgid "Boots" -msgstr "Systemstarts" +msgstr "Audio-Adapter" -#: modules/computer.c:70 +#: modules/computer.c:80 modules/devices/firmware.c:104 msgid "Summary" msgstr "Zusammenfassung" -#: modules/computer.c:71 modules/computer.c:476 modules/computer.c:750 +#: modules/computer.c:81 modules/computer.c:534 modules/computer.c:999 msgid "Operating System" msgstr "Betriebssystem" -#: modules/computer.c:72 +#: modules/computer.c:82 +msgid "Security" +msgstr "Sicherheit" + +#: modules/computer.c:83 modules/devices/gpu.c:155 modules/devices/pci.c:136 msgid "Kernel Modules" msgstr "Kernel-Module" -#: modules/computer.c:74 +#: modules/computer.c:84 modules/computer.c:678 +msgid "Boots" +msgstr "Systemstarts" + +#: modules/computer.c:85 msgid "Languages" msgstr "Sprachen" -#: modules/computer.c:75 +#: modules/computer.c:86 +msgid "Memory Usage" +msgstr "SPeicherbenutzung" + +#: modules/computer.c:87 msgid "Filesystems" msgstr "Dateisysteme" -#: modules/computer.c:76 modules/computer.c:481 modules/computer.c:590 +#: modules/computer.c:88 modules/computer.c:539 msgid "Display" msgstr "Anzeige" -#: modules/computer.c:77 modules/computer/environment.c:32 +#: modules/computer.c:89 modules/computer/environment.c:32 msgid "Environment Variables" msgstr "Umgebungsvariablen" -#: modules/computer.c:79 +#: modules/computer.c:91 msgid "Development" msgstr "Entwicklung" -#: modules/computer.c:81 modules/computer.c:617 +#: modules/computer.c:93 modules/computer.c:802 msgid "Users" msgstr "Benutzer" -#: modules/computer.c:82 +#: modules/computer.c:94 msgid "Groups" msgstr "Gruppen" -#: modules/computer.c:104 modules/computer.c:473 modules/devices.c:96 -#: modules/devices/pci.c:149 -msgid "Memory" -msgstr "Hauptspeicher" - -#: modules/computer.c:106 +#: modules/computer.c:125 #, c-format msgid "%dMB (%dMB used)" -msgstr "" +msgstr "%dMB (%dMB benutzt)" -#: modules/computer.c:108 modules/computer.c:520 +#: modules/computer.c:127 modules/computer.c:594 msgid "Uptime" -msgstr "" +msgstr "Betriebszeit" -#: modules/computer.c:110 modules/computer.c:478 +#: modules/computer.c:129 modules/computer.c:536 msgid "Date/Time" -msgstr "" +msgstr "Datum/Zeit" -#: modules/computer.c:115 modules/computer.c:521 +#: modules/computer.c:134 modules/computer.c:595 msgid "Load Average" -msgstr "" - -#: modules/computer.c:117 modules/computer.c:522 -msgid "Available entropy in /dev/random" -msgstr "" +msgstr "Durchschnittliche Belastung" -#: modules/computer.c:203 +#: modules/computer.c:247 msgid "Scripting Languages" msgstr "Script-Sprachen" -#: modules/computer.c:204 +#: modules/computer.c:248 msgid "Gambas3 (gbr3)" msgstr "" -#: modules/computer.c:205 -msgid "Python" -msgstr "" +#: modules/computer.c:249 +msgid "Python (default)" +msgstr "Python (Voreinstellung)" -#: modules/computer.c:206 +#: modules/computer.c:250 msgid "Python2" msgstr "" -#: modules/computer.c:207 +#: modules/computer.c:251 msgid "Python3" msgstr "" -#: modules/computer.c:208 +#: modules/computer.c:252 msgid "Perl" msgstr "Perl" -#: modules/computer.c:209 +#: modules/computer.c:253 msgid "Perl6 (VM)" msgstr "" -#: modules/computer.c:210 +#: modules/computer.c:254 msgid "Perl6" msgstr "" -#: modules/computer.c:211 +#: modules/computer.c:255 msgid "PHP" msgstr "PHP" -#: modules/computer.c:212 +#: modules/computer.c:256 msgid "Ruby" msgstr "Ruby" -#: modules/computer.c:213 +#: modules/computer.c:257 msgid "Bash" msgstr "Bash" -#: modules/computer.c:214 +#: modules/computer.c:258 +msgid "JavaScript (Node.js)" +msgstr "" + +#: modules/computer.c:259 +msgid "awk" +msgstr "" + +#: modules/computer.c:260 msgid "Compilers" msgstr "Compiler" -#: modules/computer.c:215 +#: modules/computer.c:261 msgid "C (GCC)" msgstr "C (GCC)" -#: modules/computer.c:216 +#: modules/computer.c:262 msgid "C (Clang)" msgstr "C (Clang)" -#: modules/computer.c:217 +#: modules/computer.c:263 msgid "D (dmd)" msgstr "D (dmd)" -#: modules/computer.c:218 +#: modules/computer.c:264 msgid "Gambas3 (gbc3)" msgstr "" -#: modules/computer.c:219 +#: modules/computer.c:265 msgid "Java" msgstr "Java" -#: modules/computer.c:220 -msgid "CSharp (Mono, old)" -msgstr "CSharp (Mono, old)" - -#: modules/computer.c:221 -msgid "CSharp (Mono)" -msgstr "CSharp (Mono)" +#: modules/computer.c:266 +msgid "C♯ (mcs)" +msgstr "" -#: modules/computer.c:222 +#: modules/computer.c:267 msgid "Vala" msgstr "Vala" -#: modules/computer.c:223 +#: modules/computer.c:268 msgid "Haskell (GHC)" msgstr "Haskell (GHC)" -#: modules/computer.c:224 +#: modules/computer.c:269 msgid "FreePascal" msgstr "FreePascal" -#: modules/computer.c:225 +#: modules/computer.c:270 msgid "Go" msgstr "" -#: modules/computer.c:226 +#: modules/computer.c:271 +msgid "Rust" +msgstr "" + +#: modules/computer.c:272 msgid "Tools" -msgstr "Werkzeug-Programme" +msgstr "Werkzeuge" -#: modules/computer.c:227 +#: modules/computer.c:273 msgid "make" msgstr "make" -#: modules/computer.c:228 +#: modules/computer.c:274 +msgid "ninja" +msgstr "" + +#: modules/computer.c:275 msgid "GDB" msgstr "GDB" -#: modules/computer.c:229 +#: modules/computer.c:276 +msgid "LLDB" +msgstr "" + +#: modules/computer.c:277 msgid "strace" msgstr "strace" -#: modules/computer.c:230 +#: modules/computer.c:278 msgid "valgrind" msgstr "valgrind" -#: modules/computer.c:231 +#: modules/computer.c:279 msgid "QMake" msgstr "QMake" -#: modules/computer.c:232 +#: modules/computer.c:280 msgid "CMake" msgstr "" -#: modules/computer.c:233 +#: modules/computer.c:281 msgid "Gambas3 IDE" msgstr "" -#: modules/computer.c:274 +#: modules/computer.c:282 +msgid "Radare2" +msgstr "" + +#: modules/computer.c:283 +msgid "ltrace" +msgstr "" + +#: modules/computer.c:324 msgid "Not found" msgstr "Nicht gefunden" -#: modules/computer.c:279 +#: modules/computer.c:329 #, c-format msgid "Detecting version: %s" msgstr "" -#: modules/computer.c:296 +#: modules/computer.c:347 msgid "Program" msgstr "Programm" -#: modules/computer.c:308 -msgid "Invalid chassis type (0)" -msgstr "" - -#: modules/computer.c:309 modules/computer.c:310 -msgid "Unknown chassis type" -msgstr "" - -#: modules/computer.c:311 -msgid "Desktop" -msgstr "" - -#: modules/computer.c:312 -msgid "Low-profile Desktop" -msgstr "" - -#: modules/computer.c:313 -msgid "Pizza Box" -msgstr "" - -#: modules/computer.c:314 -msgid "Mini Tower" -msgstr "" - -#: modules/computer.c:315 -msgid "Tower" -msgstr "" - -#: modules/computer.c:316 -msgid "Portable" -msgstr "" - -#: modules/computer.c:317 modules/computer.c:341 modules/computer.c:350 -#: modules/computer.c:372 -msgid "Laptop" -msgstr "" - -#: modules/computer.c:318 -msgid "Notebook" -msgstr "" - -#: modules/computer.c:319 -msgid "Handheld" -msgstr "" - -#: modules/computer.c:320 -msgid "Docking Station" -msgstr "" - -#: modules/computer.c:321 -msgid "All-in-one" -msgstr "" - -#: modules/computer.c:322 -msgid "Subnotebook" -msgstr "" - -#: modules/computer.c:323 -msgid "Space-saving" +#: modules/computer.c:365 +msgid "Field" msgstr "" -#: modules/computer.c:324 -msgid "Lunch Box" -msgstr "" +#: modules/computer.c:365 modules/computer.c:667 modules/computer/modules.c:149 +#: modules/computer/modules.c:150 modules/devices/arm/processor.c:470 +msgid "Description" +msgstr "Beschreibung" -#: modules/computer.c:325 -msgid "Main Server Chassis" -msgstr "" +#: modules/computer.c:365 modules/devices.c:726 +msgid "Value" +msgstr "Wert" -#: modules/computer.c:326 -msgid "Expansion Chassis" +#: modules/computer.c:385 +msgid "Single-board computer" msgstr "" -#: modules/computer.c:327 -msgid "Sub Chassis" -msgstr "" +#. /proc/apm +#: modules/computer.c:434 +msgid "Unknown physical machine type" +msgstr "Unbekannter physischer Maschinentyp" -#: modules/computer.c:328 -msgid "Bus Expansion Chassis" -msgstr "" +#: modules/computer.c:454 modules/computer.c:455 +msgid "Virtual (VMware)" +msgstr "Virtuell (VMware)" -#: modules/computer.c:329 -msgid "Peripheral Chassis" -msgstr "" +#: modules/computer.c:457 modules/computer.c:458 modules/computer.c:459 +#: modules/computer.c:460 +msgid "Virtual (QEMU)" +msgstr "Virtuell (QEMU)" -#: modules/computer.c:330 -msgid "RAID Chassis" -msgstr "" +#: modules/computer.c:462 modules/computer.c:463 +msgid "Virtual (Unknown)" +msgstr "Virtuell (Unbekannt)" -#: modules/computer.c:331 -msgid "Rack Mount Chassis" -msgstr "" +#: modules/computer.c:465 modules/computer.c:466 modules/computer.c:467 +#: modules/computer.c:488 +msgid "Virtual (VirtualBox)" +msgstr "Virtuell (VirtualBox)" -#: modules/computer.c:332 -msgid "Sealed-case PC" -msgstr "" +#: modules/computer.c:469 modules/computer.c:470 modules/computer.c:471 +#: modules/computer.c:482 +msgid "Virtual (Xen)" +msgstr "Virtuell (Xen)" -#. /proc/apm -#. FIXME: use dmidecode if available to get chassis type -#: modules/computer.c:386 -msgid "Unknown physical machine type" -msgstr "" +#: modules/computer.c:473 +msgid "Virtual (hypervisor present)" +msgstr "Virtuell (Hypervisor vorhanden)" -#: modules/computer.c:470 modules/computer.c:709 +#: modules/computer.c:528 modules/computer.c:953 msgid "Computer" msgstr "Computer" -#: modules/computer.c:471 modules/devices/alpha/processor.c:87 -#: modules/devices/arm/processor.c:236 modules/devices.c:95 -#: modules/devices/ia64/processor.c:159 modules/devices/m68k/processor.c:83 -#: modules/devices/mips/processor.c:74 modules/devices/parisc/processor.c:154 -#: modules/devices/ppc/processor.c:157 modules/devices/riscv/processor.c:181 -#: modules/devices/s390/processor.c:131 modules/devices/sh/processor.c:83 -#: modules/devices/sparc/processor.c:74 modules/devices/x86/processor.c:409 -msgid "Processor" -msgstr "Prozessor" - -#: modules/computer.c:474 +#: modules/computer.c:532 msgid "Machine Type" msgstr "Maschinen-Typ" -#: modules/computer.c:477 modules/computer.c:514 +#: modules/computer.c:535 modules/computer.c:588 msgid "User Name" msgstr "Benutzername" -#: modules/computer.c:482 modules/computer.c:591 +#: modules/computer.c:540 msgid "Resolution" msgstr "Auflösung" -#: modules/computer.c:483 modules/computer.c:592 +#: modules/computer.c:540 modules/computer.c:748 #, c-format msgid "%dx%d pixels" -msgstr "" - -#: modules/computer.c:485 -msgid "OpenGL Renderer" -msgstr "OpenGL-Renderer" +msgstr "%dx%d Pixel" -#: modules/computer.c:486 -msgid "X11 Vendor" -msgstr "X11-Hersteller" +#: modules/computer.c:543 +msgid "Session Display Server" +msgstr "Sitzungsanzeigeserver" -#: modules/computer.c:491 modules/devices.c:102 +#: modules/computer.c:548 modules/devices.c:108 msgid "Input Devices" msgstr "Eingabegeräte" -#: modules/computer.c:493 modules/computer.c:752 modules/devices.c:99 -msgid "Printers" -msgstr "Drucker" - -#: modules/computer.c:495 modules/computer.c:752 modules/devices.c:103 -msgid "Storage" -msgstr "Speicher" - -#: modules/computer.c:506 +#: modules/computer.c:572 msgid "Kernel" msgstr "" -#: modules/computer.c:508 +#: modules/computer.c:573 +msgid "Command Line" +msgstr "Befehlszeile" + +#: modules/computer.c:575 msgid "C Library" msgstr "C-Library" -#: modules/computer.c:509 +#: modules/computer.c:576 msgid "Distribution" msgstr "" -#: modules/computer.c:512 +#: modules/computer.c:582 +msgid "Spin/Flavor" +msgstr "" + +#: modules/computer.c:586 msgid "Current Session" msgstr "Aktuelle Sitzung" -#: modules/computer.c:513 +#: modules/computer.c:587 msgid "Computer Name" msgstr "Computername" -#: modules/computer.c:515 modules/computer/languages.c:108 +#: modules/computer.c:589 modules/computer/languages.c:99 msgid "Language" msgstr "Sprache" -#: modules/computer.c:516 modules/computer/users.c:50 +#: modules/computer.c:590 modules/computer/users.c:50 msgid "Home Directory" msgstr "Stammverzeichnis" -#: modules/computer.c:519 modules/devices/usb.c:87 modules/devices/usb.c:234 -#: modules/devices/usb.c:351 +#: modules/computer.c:591 +msgid "Desktop Environment" +msgstr "Desktop-Umgebung" + +#: modules/computer.c:594 msgid "Misc" msgstr "Verschiedenes" -#: modules/computer.c:532 +#: modules/computer.c:607 +msgid "HardInfo" +msgstr "" + +#: modules/computer.c:608 +msgid "HardInfo running as" +msgstr "HardInfo läuft als" + +#: modules/computer.c:609 +msgid "Superuser" +msgstr "" + +#: modules/computer.c:609 +msgid "User" +msgstr "Benutzer" + +#: modules/computer.c:613 +msgid "Health" +msgstr "Gesundheit" + +#: modules/computer.c:614 +msgid "Available entropy in /dev/random" +msgstr "Verfügbare Entropie in /dev/random" + +#: modules/computer.c:618 +msgid "Hardening Features" +msgstr "Härtungsmerkmale" + +#: modules/computer.c:619 +msgid "ASLR" +msgstr "" + +#: modules/computer.c:620 +msgid "dmesg" +msgstr "" + +#: modules/computer.c:624 +msgid "Linux Security Modules" +msgstr "Linux Sicherheitsmodule" + +#: modules/computer.c:625 +msgid "Modules available" +msgstr "Module verfügbar" + +#: modules/computer.c:626 +msgid "SELinux status" +msgstr "" + +#: modules/computer.c:632 +msgid "CPU Vulnerabilities" +msgstr "CPU Schwachstellen" + +#: modules/computer.c:664 msgid "Loaded Modules" msgstr "Geladene Module" -#: modules/computer.c:535 modules/computer/modules.c:145 -#: modules/computer/modules.c:147 modules/devices/arm/processor.c:337 -#: modules/devices.c:559 modules/devices/x86/processor.c:456 -msgid "Description" -msgstr "Beschreibung" - -#: modules/computer.c:548 +#: modules/computer.c:680 msgid "Date & Time" msgstr "Datum & Uhrzeit" -#: modules/computer.c:549 +#: modules/computer.c:681 msgid "Kernel Version" msgstr "Kernel-Version" -#: modules/computer.c:559 +#: modules/computer.c:691 msgid "Available Languages" msgstr "" -#: modules/computer.c:561 +#: modules/computer.c:693 msgid "Language Code" msgstr "Sprach-Code" -#: modules/computer.c:573 +#: modules/computer.c:705 msgid "Mounted File Systems" -msgstr "" +msgstr "Gemountete Dateisysteme" -#: modules/computer.c:575 modules/computer/filesystem.c:85 +#: modules/computer.c:707 modules/computer/filesystem.c:85 msgid "Mount Point" msgstr "Mount-Punkt" -#: modules/computer.c:576 +#: modules/computer.c:708 msgid "Usage" msgstr "Verwendung" -#: modules/computer.c:577 +#: modules/computer.c:709 modules/devices/gpu.c:75 modules/devices/gpu.c:83 +#: modules/devices/gpu.c:225 modules/devices/pci.c:88 modules/devices/pci.c:96 +#: modules/devices/pci.c:140 modules/devices/usb.c:169 +#: modules/devices/usb.c:181 msgid "Device" msgstr "Gerät" -#: modules/computer.c:594 modules/computer.c:601 -#: modules/devices/ia64/processor.c:161 modules/devices/inputdevices.c:119 -#: modules/devices/pci.c:225 modules/devices/usb.c:349 -#: modules/devices/x86/processor.c:416 +#: modules/computer.c:731 +msgid "Session" +msgstr "Sitzung" + +#: modules/computer.c:732 modules/devices.c:726 modules/devices/dmi.c:55 +#: modules/devices/dmi_memory.c:603 modules/devices/dmi_memory.c:749 +#: modules/devices/inputdevices.c:112 modules/devices/x86/processor.c:714 +msgid "Type" +msgstr "Typ" + +#: modules/computer.c:735 +msgid "Wayland" +msgstr "" + +#: modules/computer.c:736 modules/computer.c:741 +msgid "Current Display Name" +msgstr "Derzeitiger Display-Name" + +#: modules/computer.c:740 +msgid "X Server" +msgstr "" + +#: modules/computer.c:742 modules/computer.c:782 modules/devices/dmi.c:39 +#: modules/devices/dmi.c:45 modules/devices/dmi.c:49 modules/devices/dmi.c:54 +#: modules/devices/dmi_memory.c:750 modules/devices/dmi_memory.c:895 +#: modules/devices/firmware.c:105 modules/devices/firmware.c:168 +#: modules/devices/firmware.c:190 modules/devices/firmware.c:228 +#: modules/devices/gpu.c:74 modules/devices/gpu.c:82 modules/devices/gpu.c:224 +#: modules/devices/ia64/processor.c:161 modules/devices/inputdevices.c:114 +#: modules/devices/monitors.c:398 modules/devices/pci.c:87 +#: modules/devices/pci.c:95 modules/devices/usb.c:168 +#: modules/devices/x86/processor.c:653 msgid "Vendor" msgstr "Hersteller" -#: modules/computer.c:598 -msgid "Monitors" +#: modules/computer.c:744 +msgid "Release Number" +msgstr "Release-Nummer" + +#: modules/computer.c:752 +msgid "Screens" msgstr "Bildschirme" -#: modules/computer.c:600 -msgid "OpenGL" +#: modules/computer.c:758 +msgid "Disconnected" +msgstr "Getrennt" + +#: modules/computer.c:761 +msgid "Connected" +msgstr "Verbunden" + +#: modules/computer.c:769 +msgid "Unused" +msgstr "Unbenutzt" + +#: modules/computer.c:770 +#, c-format +msgid "%dx%d pixels, offset (%d, %d)" +msgstr "" + +#: modules/computer.c:779 +msgid "Outputs (XRandR)" +msgstr "" + +#: modules/computer.c:781 +msgid "OpenGL (GLX)" msgstr "" -#: modules/computer.c:602 +#: modules/computer.c:783 msgid "Renderer" msgstr "" -#: modules/computer.c:604 +#: modules/computer.c:784 msgid "Direct Rendering" msgstr "Direct-Rendering" -#: modules/computer.c:608 -msgid "Extensions" -msgstr "Erweiterungen" +#: modules/computer.c:786 +msgid "Version (Compatibility)" +msgstr "Version (Kompatibilität)" -#: modules/computer.c:628 -msgid "Group" +#: modules/computer.c:787 +msgid "Shading Language Version (Compatibility)" +msgstr "Shading Sprachversion (Kompatibilität)" + +#: modules/computer.c:788 +msgid "Version (Core)" +msgstr "Version (Kern)" + +#: modules/computer.c:789 +msgid "Shading Language Version (Core)" +msgstr "Shading-Sprachversion (Kern)" + +#: modules/computer.c:790 +msgid "Version (ES)" msgstr "" -#: modules/computer.c:631 modules/computer/users.c:49 +#: modules/computer.c:791 +msgid "Shading Language Version (ES)" +msgstr "Shading-Sprachversion (ES)" + +#: modules/computer.c:792 +msgid "GLX Version" +msgstr "" + +#: modules/computer.c:813 +msgid "Group" +msgstr "Gruppe" + +#: modules/computer.c:816 modules/computer/users.c:49 msgid "Group ID" msgstr "Gruppen-ID" -#: modules/computer.c:751 -msgid "RAM" +#. / "usable memory" +#: modules/computer.c:909 +#, c-format +msgid "%0.1f %s available to Linux" +msgstr "%0.1f %s verfügbar bei Linux" + +#: modules/computer.c:911 modules/devices/dmi_memory.c:661 +#: modules/devices/dmi_memory.c:809 modules/devices/dmi_memory.c:936 +msgid "GiB" +msgstr "" + +#: modules/computer.c:913 modules/devices/dmi_memory.c:581 +#: modules/devices/dmi_memory.c:663 modules/devices/dmi_memory.c:723 +#: modules/devices/dmi_memory.c:811 modules/devices/dmi_memory.c:857 +#: modules/devices/dmi_memory.c:938 modules/network/net.c:395 +#: modules/network/net.c:417 modules/network/net.c:418 +msgid "MiB" +msgstr "" + +#: modules/computer.c:915 modules/computer/memory_usage.c:77 +#: modules/computer/modules.c:149 +msgid "KiB" msgstr "" -#: modules/computer.c:751 modules/devices/devicetree/pmac_data.c:82 +#: modules/computer.c:972 modules/devices/devicetree/pmac_data.c:82 msgid "Motherboard" msgstr "" -#: modules/computer.c:751 +#: modules/computer.c:1000 msgid "Graphics" -msgstr "" +msgstr "Grafik" -#: modules/computer.c:752 +#: modules/computer.c:1001 modules/devices.c:109 +msgid "Storage" +msgstr "Speicher" + +#: modules/computer.c:1001 modules/devices.c:105 +msgid "Printers" +msgstr "Drucker" + +#: modules/computer.c:1001 msgid "Audio" msgstr "" -#: modules/computer.c:807 +#: modules/computer.c:1050 msgid "Gathers high-level computer information" msgstr "Sammelt high-level Computer-Informationen" -#: modules/computer/display.c:122 -#, c-format -msgid "Monitor %d=%dx%d pixels\n" -msgstr "Bildschirm %d=%dx%d Pixel\n" - #: modules/computer/filesystem.c:83 msgid "Filesystem" -msgstr "" +msgstr "Dateisystem" #: modules/computer/filesystem.c:84 msgid "Mounted As" -msgstr "" +msgstr "Gemounted als" #: modules/computer/filesystem.c:84 msgid "Read-Write" -msgstr "" +msgstr "Lesen-Schreiben" #: modules/computer/filesystem.c:84 msgid "Read-Only" -msgstr "" +msgstr "Nur lesen" -#: modules/computer/filesystem.c:86 modules/devices/spd-decode.c:1510 +#: modules/computer/filesystem.c:86 modules/devices/dmi_memory.c:609 +#: modules/devices/dmi_memory.c:754 modules/devices/dmi_memory.c:786 +#: modules/devices/dmi_memory.c:825 modules/devices/dmi_memory.c:894 msgid "Size" -msgstr "" +msgstr "Größe" #: modules/computer/filesystem.c:87 msgid "Used" -msgstr "" +msgstr "Benutzt" #: modules/computer/filesystem.c:88 msgid "Available" -msgstr "" +msgstr "Verfügbar" -#: modules/computer/languages.c:103 +#: modules/computer/languages.c:94 msgid "Locale Information" -msgstr "" +msgstr "Lokale Information" -#: modules/computer/languages.c:105 +#: modules/computer/languages.c:96 modules/devices/dmi_memory.c:599 +#: modules/devices/gpu.c:204 msgid "Source" -msgstr "" +msgstr "Quelle" -#: modules/computer/languages.c:106 +#: modules/computer/languages.c:97 msgid "Address" -msgstr "" +msgstr "Adresse" -#: modules/computer/languages.c:107 +#: modules/computer/languages.c:98 msgid "E-mail" msgstr "" -#: modules/computer/languages.c:109 +#: modules/computer/languages.c:100 msgid "Territory" -msgstr "" +msgstr "Gebiet" -#: modules/computer/languages.c:110 modules/devices/arm/processor.c:250 -#: modules/devices/ia64/processor.c:166 modules/devices/ppc/processor.c:159 -#: modules/devices/usb.c:236 -msgid "Revision" -msgstr "" - -#: modules/computer/languages.c:111 +#: modules/computer/languages.c:102 modules/devices/dmi.c:44 msgid "Date" -msgstr "" +msgstr "Datum" -#: modules/computer/languages.c:112 +#: modules/computer/languages.c:103 msgid "Codeset" msgstr "" #: modules/computer/loadavg.c:64 msgid "Couldn't obtain load average" +msgstr "Konnte Durchschnittsbelastung nicht abrufen" + +#: modules/computer/memory_usage.c:106 +msgid "Total Memory" +msgstr "Gesamter Speicher" + +#: modules/computer/memory_usage.c:107 +msgid "Free Memory" +msgstr "Freier Speicher" + +#: modules/computer/memory_usage.c:108 +msgid "Cached Swap" msgstr "" -#: modules/computer/modules.c:125 modules/computer/modules.c:126 -#: modules/computer/modules.c:127 modules/computer/modules.c:128 -#: modules/computer/modules.c:129 +#: modules/computer/memory_usage.c:109 +msgid "High Memory" +msgstr "Hoher Speicher" + +#: modules/computer/memory_usage.c:110 +msgid "Free High Memory" +msgstr "Freier hoher Speicher" + +#: modules/computer/memory_usage.c:111 +msgid "Low Memory" +msgstr "Geringer Speicher" + +#: modules/computer/memory_usage.c:112 +msgid "Free Low Memory" +msgstr "freier geringer Speicher" + +#: modules/computer/memory_usage.c:113 +msgid "Virtual Memory" +msgstr "Virtueller Speicher" + +#: modules/computer/memory_usage.c:114 +msgid "Free Virtual Memory" +msgstr "Freier virtueller Speicher" + +#: modules/computer/modules.c:117 modules/computer/modules.c:118 +#: modules/computer/modules.c:119 modules/computer/modules.c:120 +#: modules/computer/modules.c:121 modules/computer/modules.c:122 +#: modules/devices/dmi.c:111 modules/devices/dmi_memory.c:881 +#: modules/devices/firmware.c:246 modules/devices/x86/processor.c:693 msgid "(Not available)" -msgstr "" +msgstr "(Nicht verfübar)" -#: modules/computer/modules.c:142 +#: modules/computer/modules.c:148 msgid "Module Information" -msgstr "" +msgstr "Modul-Information" -#: modules/computer/modules.c:143 +#: modules/computer/modules.c:148 modules/devices/gpu.c:230 msgid "Path" -msgstr "" +msgstr "Pfad" -#: modules/computer/modules.c:144 +#: modules/computer/modules.c:148 msgid "Used Memory" -msgstr "" +msgstr "Benutzter Speicher" -#: modules/computer/modules.c:144 -msgid "KiB" +#: modules/computer/modules.c:150 +msgid "Version Magic" msgstr "" -#: modules/computer/modules.c:148 -msgid "Version Magic" +#: modules/computer/modules.c:151 +msgid "In Linus' Tree" msgstr "" -#: modules/computer/modules.c:149 +#: modules/computer/modules.c:152 +msgid "Retpoline Enabled" +msgstr "Retpoline aktiviert" + +#: modules/computer/modules.c:152 msgid "Copyright" -msgstr "" +msgstr "Urheberrechte" -#: modules/computer/modules.c:150 +#: modules/computer/modules.c:152 msgid "Author" -msgstr "" +msgstr "Autor" -#: modules/computer/modules.c:151 +#: modules/computer/modules.c:153 msgid "License" -msgstr "" +msgstr "Lizenz" -#: modules/computer/modules.c:158 +#: modules/computer/modules.c:159 msgid "Dependencies" -msgstr "" +msgstr "Abhängigkeiten" -#: modules/computer/os.c:35 modules/computer/os.c:36 modules/computer/os.c:37 -#: modules/computer/os.c:38 +#: modules/computer/os.c:36 modules/computer/os.c:37 modules/computer/os.c:38 +#: modules/computer/os.c:39 msgid "GNU C Library" msgstr "" -#: modules/computer/os.c:39 +#: modules/computer/os.c:40 msgid "uClibc or uClibc-ng" -msgstr "" +msgstr "uClibc oder uClibc-ng" -#: modules/computer/os.c:40 +#: modules/computer/os.c:41 msgid "diet libc" msgstr "" -#: modules/computer/os.c:78 modules/computer/os.c:234 modules/computer/os.c:359 -#: modules/devices.c:333 modules/devices.c:387 modules/devices/printers.c:99 -#: modules/devices/printers.c:106 modules/devices/printers.c:116 -#: modules/devices/printers.c:131 modules/devices/printers.c:140 -#: modules/devices/printers.c:243 -msgid "Unknown" -msgstr "" - -#: modules/computer/os.c:112 modules/computer/os.c:115 +#: modules/computer/os.c:113 modules/computer/os.c:116 msgid "GNOME Shell " msgstr "" -#: modules/computer/os.c:123 modules/computer/os.c:126 +#: modules/computer/os.c:124 modules/computer/os.c:127 msgid "Version: " msgstr "" -#: modules/computer/os.c:157 +#: modules/computer/os.c:146 modules/computer/os.c:149 +msgid "MATE Desktop Environment " +msgstr "" + +#: modules/computer/os.c:180 #, c-format msgid "Unknown (Window Manager: %s)" -msgstr "" +msgstr "Unbekannt (Fenstermanager: %s)" #. /{desktop environment} on {session type} -#: modules/computer/os.c:168 +#: modules/computer/os.c:191 #, c-format msgid "%s on %s" -msgstr "" +msgstr "%s auf %s" -#: modules/computer/os.c:232 +#: modules/computer/os.c:261 msgid "Terminal" msgstr "" +#: modules/computer/os.c:278 +msgid "User access allowed" +msgstr "Benutzerzugriff erlaubt" + +#: modules/computer/os.c:280 +msgid "User access forbidden" +msgstr "Benutzerzugriff verboten" + +#: modules/computer/os.c:282 +msgid "Access allowed (running as superuser)" +msgstr "Zugriff erlaubt (läuft als superuser)" + +#: modules/computer/os.c:284 +msgid "Access forbidden? (running as superuser)" +msgstr "Zugriff verboten? (läuft als superuser)" + +#: modules/computer/os.c:294 modules/computer/os.c:560 +msgid "Disabled" +msgstr "Deaktiviert" + +#: modules/computer/os.c:296 +msgid "Partially enabled (mmap base+stack+VDSO base)" +msgstr "Teilweise aktiviert (mmap base+stack+VDSO Basis)" + +#: modules/computer/os.c:298 +msgid "Fully enabled (mmap base+stack+VDSO base+heap)" +msgstr "Voll aktiviert (mmap base+stack+VDSO base+heap)" + #. /bits of entropy for rng (0) -#: modules/computer/os.c:241 +#: modules/computer/os.c:308 msgid "(None or not available)" -msgstr "" +msgstr "(Keiner oder keiner verfügbar)" #. /bits of entropy for rng (low/poor value) -#: modules/computer/os.c:242 +#: modules/computer/os.c:309 #, c-format msgid "%d bits (low)" -msgstr "" +msgstr "%d bits (klein)" #. /bits of entropy for rng (medium value) -#: modules/computer/os.c:243 +#: modules/computer/os.c:310 #, c-format msgid "%d bits (medium)" msgstr "" #. /bits of entropy for rng (high/good value) -#: modules/computer/os.c:244 +#: modules/computer/os.c:311 #, c-format msgid "%d bits (healthy)" -msgstr "" +msgstr "%d bits (gesund)" -#: modules/computer/os.c:279 modules/devices/usb.c:48 modules/devices/usb.c:307 -#: modules/devices/usb.c:310 modules/network/net.c:442 includes/cpu_util.h:11 -msgid "(Unknown)" -msgstr "" +#: modules/computer/os.c:555 +msgid "Not installed" +msgstr "Nicht installiert" + +#: modules/computer/os.c:558 +msgid "Enabled" +msgstr "Aktiviert" #: modules/computer/users.c:47 msgid "User Information" -msgstr "" +msgstr "Benutzerinformation" #: modules/computer/users.c:48 msgid "User ID" -msgstr "" +msgstr "Benutzer-ID" #: modules/computer/users.c:51 msgid "Default Shell" msgstr "" -#: modules/devices/alpha/processor.c:88 modules/devices/devicetree.c:141 -#: modules/devices/devicetree.c:176 modules/devices/devicetree/pmac_data.c:80 -#: modules/devices/ia64/processor.c:165 modules/devices/m68k/processor.c:84 -#: modules/devices/mips/processor.c:75 modules/devices/parisc/processor.c:155 +#: modules/devices/alpha/processor.c:88 modules/devices/devicetree.c:163 +#: modules/devices/devicetree.c:209 modules/devices/devicetree/pmac_data.c:80 +#: modules/devices/gpu.c:106 modules/devices/ia64/processor.c:165 +#: modules/devices/m68k/processor.c:84 modules/devices/mips/processor.c:75 +#: modules/devices/monitors.c:400 modules/devices/parisc/processor.c:155 #: modules/devices/ppc/processor.c:158 modules/devices/riscv/processor.c:182 -#: modules/devices/s390/processor.c:132 modules/devices/spd-decode.c:1510 +#: modules/devices/s390/processor.c:132 msgid "Model" -msgstr "" +msgstr "Modell" #: modules/devices/alpha/processor.c:89 msgid "Platform String" msgstr "" -#: modules/devices/alpha/processor.c:90 modules/devices/arm/processor.c:240 +#: modules/devices/alpha/processor.c:90 modules/devices/arm/processor.c:345 #: modules/devices/ia64/processor.c:167 modules/devices/m68k/processor.c:87 #: modules/devices/mips/processor.c:77 modules/devices/parisc/processor.c:158 -#: modules/devices/pci.c:108 modules/devices/ppc/processor.c:160 -#: modules/devices/riscv/processor.c:186 modules/devices/sh/processor.c:87 -#: modules/devices/x86/processor.c:420 +#: modules/devices/ppc/processor.c:160 modules/devices/riscv/processor.c:186 +#: modules/devices/sh/processor.c:87 modules/devices/x86/processor.c:657 msgid "Frequency" msgstr "Taktfrequenz" -#: modules/devices/alpha/processor.c:90 modules/devices/arm/processor.c:240 -#: modules/devices/arm/processor.c:365 modules/devices.c:299 -#: modules/devices.c:307 modules/devices.c:335 -#: modules/devices/ia64/processor.c:167 modules/devices/ia64/processor.c:196 -#: modules/devices/m68k/processor.c:87 modules/devices/mips/processor.c:77 -#: modules/devices/parisc/processor.c:158 -#: modules/devices/parisc/processor.c:191 modules/devices/pci.c:108 -#: modules/devices/ppc/processor.c:160 modules/devices/ppc/processor.c:187 -#: modules/devices/riscv/processor.c:186 modules/devices/riscv/processor.c:214 -#: modules/devices/s390/processor.c:160 modules/devices/sh/processor.c:87 -#: modules/devices/sh/processor.c:88 modules/devices/sh/processor.c:89 -#: modules/devices/x86/processor.c:420 modules/devices/x86/processor.c:479 -msgid "MHz" -msgstr "" - -#: modules/devices/alpha/processor.c:91 modules/devices/arm/processor.c:241 +#: modules/devices/alpha/processor.c:91 modules/devices/arm/processor.c:346 #: modules/devices/ia64/processor.c:168 modules/devices/m68k/processor.c:88 #: modules/devices/mips/processor.c:78 modules/devices/parisc/processor.c:159 #: modules/devices/ppc/processor.c:161 modules/devices/s390/processor.c:134 -#: modules/devices/sh/processor.c:90 modules/devices/x86/processor.c:421 +#: modules/devices/sh/processor.c:90 modules/devices/x86/processor.c:658 msgid "BogoMips" msgstr "" -#: modules/devices/alpha/processor.c:92 modules/devices/arm/processor.c:242 +#: modules/devices/alpha/processor.c:92 modules/devices/arm/processor.c:347 #: modules/devices/ia64/processor.c:169 modules/devices/m68k/processor.c:89 #: modules/devices/mips/processor.c:79 modules/devices/parisc/processor.c:160 #: modules/devices/ppc/processor.c:162 modules/devices/riscv/processor.c:187 #: modules/devices/s390/processor.c:135 modules/devices/sh/processor.c:91 -#: modules/devices/sparc/processor.c:77 modules/devices/x86/processor.c:422 +#: modules/devices/sparc/processor.c:77 modules/devices/x86/processor.c:659 msgid "Byte Order" msgstr "Byte-Reihenfolge" @@ -1422,7 +2265,7 @@ msgstr "" #: modules/devices/arm/arm_data.c:43 msgctxt "arm-flag" msgid "Half-word loads and stores" -msgstr "" +msgstr "Halbwörter-Ladung und Lagerung" #. /flag:thumb #: modules/devices/arm/arm_data.c:44 @@ -1434,19 +2277,19 @@ msgstr "" #: modules/devices/arm/arm_data.c:45 msgctxt "arm-flag" msgid "26-Bit Model (Processor status register folded into program counter)" -msgstr "" +msgstr "26-Bit Modell (Prozessor-Status register zusammengeklappt im Programmzähler)" #. /flag:fastmult #: modules/devices/arm/arm_data.c:46 msgctxt "arm-flag" msgid "32x32->64-bit multiplication" -msgstr "" +msgstr "32x32->64-bit Multiplikation" #. /flag:fpa #: modules/devices/arm/arm_data.c:47 msgctxt "arm-flag" msgid "Floating point accelerator" -msgstr "" +msgstr "Floating point Beschleuniger" #. /flag:vfp #: modules/devices/arm/arm_data.c:48 @@ -1464,19 +2307,19 @@ msgstr "" #: modules/devices/arm/arm_data.c:50 msgctxt "arm-flag" msgid "Jazelle (Java bytecode accelerator)" -msgstr "" +msgstr "Jazelle (Java bytecode Beschleuniger)" #. /flag:iwmmxt #: modules/devices/arm/arm_data.c:51 msgctxt "arm-flag" msgid "SIMD instructions similar to Intel MMX" -msgstr "" +msgstr "SIMD Anweisung ähnlich zu Intel MMX" #. /flag:crunch #: modules/devices/arm/arm_data.c:52 msgctxt "arm-flag" msgid "MaverickCrunch coprocessor (if kernel support enabled)" -msgstr "" +msgstr "MaverickCrunch coprocessor (falls kernel Unterstützung aktiviert)" #. /flag:thumbee #: modules/devices/arm/arm_data.c:53 @@ -1488,13 +2331,13 @@ msgstr "" #: modules/devices/arm/arm_data.c:54 msgctxt "arm-flag" msgid "Advanced SIMD/NEON on AArch32" -msgstr "" +msgstr "Erweitertes SIMD/NEON auf AArch32" #. /flag:evtstrm #: modules/devices/arm/arm_data.c:55 msgctxt "arm-flag" msgid "Kernel event stream using generic architected timer" -msgstr "" +msgstr "Kernel event stream benutzt generischen architektonischen timer" #. /flag:vfpv3 #: modules/devices/arm/arm_data.c:56 @@ -1506,37 +2349,37 @@ msgstr "" #: modules/devices/arm/arm_data.c:57 msgctxt "arm-flag" msgid "VFP version 3 with 16 D-registers" -msgstr "" +msgstr "VFP Version 3 mit 16 D-Registern" #. /flag:vfpv4 #: modules/devices/arm/arm_data.c:58 msgctxt "arm-flag" msgid "VFP version 4 with fast context switching" -msgstr "" +msgstr "VFP version 4 mit schnellen Kontextwechsel" #. /flag:vfpd32 #: modules/devices/arm/arm_data.c:59 msgctxt "arm-flag" msgid "VFP with 32 D-registers" -msgstr "" +msgstr "VFP mit 32 D-Registern" #. /flag:tls #: modules/devices/arm/arm_data.c:60 msgctxt "arm-flag" msgid "TLS register" -msgstr "" +msgstr "TLS Register" #. /flag:idiva #: modules/devices/arm/arm_data.c:61 msgctxt "arm-flag" msgid "SDIV and UDIV hardware division in ARM mode" -msgstr "" +msgstr "SDIV und UDIV hardware Teilung in ARM mode" #. /flag:idivt #: modules/devices/arm/arm_data.c:62 msgctxt "arm-flag" msgid "SDIV and UDIV hardware division in Thumb mode" -msgstr "" +msgstr "SDIV und UDIV hardware Teilung in Thumb mode" #. /flag:lpae #: modules/devices/arm/arm_data.c:63 @@ -1573,78 +2416,85 @@ msgstr "" #: modules/devices/arm/arm_data.c:69 msgctxt "arm-flag" msgid "CRC32 checksum instructions (arch>8)" -msgstr "" +msgstr "CRC32 checksum Anweisungen (arch>8)" #. /flag:asimd #: modules/devices/arm/arm_data.c:72 msgctxt "arm-flag" msgid "Advanced SIMD/NEON on AArch64 (arch>8)" -msgstr "" +msgstr "Erweitertes SIMD/NEON auf AArch64 (arch>8)" -#: modules/devices/arm/processor.c:142 +#: modules/devices/arm/processor.c:143 msgid "ARM Processor" msgstr "ARM Prozessor" -#: modules/devices/arm/processor.c:200 modules/devices/riscv/processor.c:147 -#: modules/devices/x86/processor.c:371 +#: modules/devices/arm/processor.c:214 modules/devices/riscv/processor.c:147 +#: modules/devices/x86/processor.c:608 msgid "Empty List" +msgstr "Leere Liste" + +#: modules/devices/arm/processor.c:240 modules/devices/gpu.c:148 +#: modules/devices/gpu.c:226 modules/devices/x86/processor.c:268 +msgid "Clocks" +msgstr "" + +#: modules/devices/arm/processor.c:286 modules/devices/arm/processor.c:299 +#: modules/devices/x86/processor.c:314 modules/devices/x86/processor.c:327 +#, c-format +msgid "%.2f-%.2f %s=%dx\n" msgstr "" -#: modules/devices/arm/processor.c:237 +#: modules/devices/arm/processor.c:342 msgid "Linux Name" msgstr "" -#: modules/devices/arm/processor.c:238 +#: modules/devices/arm/processor.c:343 msgid "Decoded Name" -msgstr "" +msgstr "Dekodierter Name" -#: modules/devices/arm/processor.c:239 modules/network/net.c:458 +#: modules/devices/arm/processor.c:344 modules/network/net.c:453 msgid "Mode" -msgstr "" +msgstr "Modus" -#: modules/devices/arm/processor.c:245 +#: modules/devices/arm/processor.c:350 msgid "ARM" msgstr "" -#: modules/devices/arm/processor.c:246 +#: modules/devices/arm/processor.c:351 msgid "Implementer" -msgstr "" +msgstr "Implementierer" -#: modules/devices/arm/processor.c:247 +#: modules/devices/arm/processor.c:352 modules/devices/dmi_memory.c:896 msgid "Part" msgstr "" -#: modules/devices/arm/processor.c:248 modules/devices/ia64/processor.c:162 +#: modules/devices/arm/processor.c:353 modules/devices/ia64/processor.c:162 #: modules/devices/parisc/processor.c:156 modules/devices/riscv/processor.c:183 msgid "Architecture" -msgstr "" +msgstr "Architektur" -#: modules/devices/arm/processor.c:249 +#: modules/devices/arm/processor.c:354 msgid "Variant" -msgstr "" +msgstr "Variante" -#: modules/devices/arm/processor.c:251 modules/devices/riscv/processor.c:190 -#: modules/devices/sparc/processor.c:78 modules/devices/x86/processor.c:428 +#: modules/devices/arm/processor.c:356 modules/devices/riscv/processor.c:190 +#: modules/devices/sparc/processor.c:78 modules/devices/x86/processor.c:665 msgid "Capabilities" msgstr "Fähigkeiten" -#: modules/devices/arm/processor.c:335 +#: modules/devices/arm/processor.c:468 msgid "SOC/Package" msgstr "" -#: modules/devices/arm/processor.c:338 modules/devices/cpu_util.c:222 -msgid "Topology" -msgstr "" - -#: modules/devices/arm/processor.c:339 -msgid "Clocks" -msgstr "" +#: modules/devices/arm/processor.c:472 modules/devices/x86/processor.c:751 +msgid "Logical CPU Config" +msgstr "Logische CPU Konfiguration" -#: modules/devices/arm/processor.c:354 +#: modules/devices/arm/processor.c:489 msgid "SOC/Package Information" msgstr "" -#: modules/devices/battery.c:181 +#: modules/devices/battery.c:178 #, c-format msgid "" "\n" @@ -1665,7 +2515,7 @@ msgstr "" "Modellnummer=%s\n" "Seriennummer=%s\n" -#: modules/devices/battery.c:258 +#: modules/devices/battery.c:255 #, c-format msgid "" "\n" @@ -1686,7 +2536,7 @@ msgstr "" "Modellnummer=%s\n" "Seriennummer=%s\n" -#: modules/devices/battery.c:346 +#: modules/devices/battery.c:343 #, fuzzy, c-format msgid "" "\n" @@ -1705,7 +2555,7 @@ msgstr "" "APM Driver-Version=%s\n" "APM BIOS-Version=%s\n" -#: modules/devices/battery.c:358 +#: modules/devices/battery.c:355 #, fuzzy, c-format msgid "" "\n" @@ -1722,7 +2572,7 @@ msgstr "" "APM Driver-Version=%s\n" "APM BIOS-Version=%s\n" -#: modules/devices/battery.c:385 +#: modules/devices/battery.c:382 msgid "" "[No batteries]\n" "No batteries found on this system=\n" @@ -1730,54 +2580,66 @@ msgstr "" "[Keine Akkus]\n" "Keine Akkus in diesem System gefunden=\n" -#: modules/devices.c:97 +#: modules/devices.c:100 +msgid "Graphics Processors" +msgstr "Grafikprozessoren" + +#: modules/devices.c:101 modules/devices/monitors.c:445 +#: modules/devices/monitors.c:492 +msgid "Monitors" +msgstr "Bildschirme" + +#: modules/devices.c:102 modules/devices/pci.c:163 msgid "PCI Devices" msgstr "PCI-Geräte" -#: modules/devices.c:98 modules/devices/usb.c:117 modules/devices/usb.c:156 -#: modules/devices/usb.c:415 +#: modules/devices.c:103 modules/devices/usb.c:210 msgid "USB Devices" msgstr "USB-Geräte" -#: modules/devices.c:100 +#: modules/devices.c:104 +msgid "Firmware" +msgstr "" + +#: modules/devices.c:106 msgid "Battery" msgstr "Akku" -#: modules/devices.c:101 +#: modules/devices.c:107 msgid "Sensors" msgstr "Sensoren" -#: modules/devices.c:105 -msgid "DMI" -msgstr "DMI" - -#: modules/devices.c:106 -msgid "Memory SPD" -msgstr "Hauptspeicher (SPD)" +#: modules/devices.c:110 +msgid "System DMI" +msgstr "" #: modules/devices.c:111 +msgid "Memory Devices" +msgstr "Speichergeräte" + +#: modules/devices.c:113 modules/devices.c:115 msgid "Device Tree" msgstr "" -#: modules/devices.c:113 +#: modules/devices.c:117 msgid "Resources" msgstr "Ressourcen" -#: modules/devices.c:151 +#: modules/devices.c:177 #, c-format msgid "%d physical processor" msgid_plural "%d physical processors" msgstr[0] "" msgstr[1] "" -#: modules/devices.c:152 +#: modules/devices.c:178 #, c-format msgid "%d core" msgid_plural "%d cores" msgstr[0] "" msgstr[1] "" -#: modules/devices.c:153 +#: modules/devices.c:179 #, c-format msgid "%d thread" msgid_plural "%d threads" @@ -1785,324 +2647,585 @@ msgstr[0] "" msgstr[1] "" #. /NP procs; NC cores; NT threads -#: modules/devices.c:154 +#: modules/devices.c:180 #, c-format msgid "%s; %s; %s" msgstr "" -#: modules/devices.c:372 -msgid " (model unknown)" -msgstr " (unbekanntes Modell)" - -#: modules/devices.c:374 -msgid " (vendor unknown)" -msgstr " (unbekannter Hersteller)" - -#: modules/devices.c:559 -msgid "Field" -msgstr "" - -#: modules/devices.c:559 modules/devices.c:591 -msgid "Value" -msgstr "" - -#: modules/devices.c:591 +#: modules/devices.c:726 msgid "Sensor" msgstr "" -#: modules/devices.c:591 modules/devices/inputdevices.c:117 -msgid "Type" -msgstr "" - -#: modules/devices.c:637 +#: modules/devices.c:773 modules/devices/dmi_memory.c:826 msgid "Devices" msgstr "Geräte" -#: modules/devices.c:649 +#: modules/devices.c:785 msgid "Update PCI ID listing" msgstr "" -#: modules/devices.c:661 +#: modules/devices.c:797 msgid "Update CPU feature database" -msgstr "" +msgstr "Aktualisiere CPU-Merkmale Datenbank" -#: modules/devices.c:689 +#: modules/devices.c:825 msgid "Gathers information about hardware devices" msgstr "Sammelt Informationen über die Hardware-Geräte" -#: modules/devices.c:708 -msgid "Resource information requires superuser privileges" -msgstr "" +#: modules/devices.c:844 +msgid "Ressource information requires superuser privileges" +msgstr "Ressourceinformation benötigt Superuser Rechte" -#: modules/devices/cpu_util.c:30 -msgid "Little Endian" +#: modules/devices.c:850 +msgid "" +"Any NVMe storage devices present are not listed.\n" +"udisksd is required for NVMe devices." msgstr "" -#: modules/devices/cpu_util.c:32 -msgid "Big Endian" -msgstr "" +#: modules/devices/devicetree.c:52 +msgid "Properties" +msgstr "Eigenschaften" -#: modules/devices/cpu_util.c:178 modules/devices/cpu_util.c:189 -msgid "Frequency Scaling" +#: modules/devices/devicetree.c:53 +msgid "Children" msgstr "" -#: modules/devices/cpu_util.c:179 -msgid "Minimum" +#: modules/devices/devicetree.c:89 +msgid "Node" msgstr "" -#: modules/devices/cpu_util.c:179 modules/devices/cpu_util.c:180 -#: modules/devices/cpu_util.c:181 -msgid "kHz" +#: modules/devices/devicetree.c:90 +msgid "Node Path" msgstr "" -#: modules/devices/cpu_util.c:180 -msgid "Maximum" +#: modules/devices/devicetree.c:91 +msgid "Alias" msgstr "" -#: modules/devices/cpu_util.c:181 -msgid "Current" +#: modules/devices/devicetree.c:92 +msgid "Symbol" msgstr "" -#: modules/devices/cpu_util.c:182 -msgid "Transition Latency" -msgstr "" +#: modules/devices/devicetree.c:145 modules/devices/devicetree/pmac_data.c:79 +msgid "Platform" +msgstr "Plattform" -#: modules/devices/cpu_util.c:182 -msgid "ns" -msgstr "" +#: modules/devices/devicetree.c:146 modules/devices/devicetree.c:211 +#: modules/devices/gpu.c:231 +msgid "Compatible" +msgstr "Kompatibel" -#: modules/devices/cpu_util.c:183 -msgid "Governor" -msgstr "" +#: modules/devices/devicetree.c:147 +msgid "GPU-compatible" +msgstr "GPU-kompatibel" -#: modules/devices/cpu_util.c:184 modules/devices/cpu_util.c:190 -msgid "Driver" -msgstr "Treiber" +#: modules/devices/devicetree.c:162 +msgid "Raspberry Pi or Compatible" +msgstr "Raspberry Pi oder kompatibles" -#: modules/devices/cpu_util.c:196 modules/devices/x86/processor.c:297 -msgid "(Not Available)" -msgstr "" +#: modules/devices/devicetree.c:164 modules/devices/devicetree.c:191 +#: modules/devices/devicetree.c:210 modules/devices/devicetree/rpi_data.c:168 +#: modules/devices/dmi.c:41 modules/devices/dmi.c:51 modules/devices/dmi.c:57 +#: modules/devices/usb.c:178 +msgid "Serial Number" +msgstr "Seriennummer" -#: modules/devices/cpu_util.c:204 modules/devices/cpu_util.c:206 -msgid "Socket" +#: modules/devices/devicetree.c:165 modules/devices/devicetree/rpi_data.c:165 +msgid "RCode" msgstr "" -#: modules/devices/cpu_util.c:209 modules/devices/cpu_util.c:211 -msgid "Core" -msgstr "" +#: modules/devices/devicetree.c:165 +msgid "No revision code available; unable to lookup model details." +msgstr "Kein Revisionscode verfügbar; unfähig Modelldetails abzurufen" -#: modules/devices/cpu_util.c:214 -msgid "Book" -msgstr "" +#: modules/devices/devicetree.c:190 +msgid "More" +msgstr "Mehr" -#: modules/devices/cpu_util.c:216 -msgid "Drawer" +#: modules/devices/devicetree.c:271 +msgid "Messages" +msgstr "Nachrichten" + +#: modules/devices/devicetree/pmac_data.c:78 +msgid "Apple Power Macintosh" msgstr "" -#: modules/devices/cpu_util.c:223 -msgid "ID" +#: modules/devices/devicetree/pmac_data.c:83 +msgid "Detected as" +msgstr "Erkannt als" + +#: modules/devices/devicetree/pmac_data.c:84 +msgid "PMAC Flags" msgstr "" -#: modules/devices/devicetree.c:47 -msgid "Properties" +#: modules/devices/devicetree/pmac_data.c:85 +msgid "L2 Cache" msgstr "" -#: modules/devices/devicetree.c:48 -msgid "Children" +#: modules/devices/devicetree/pmac_data.c:86 +msgid "PMAC Generation" msgstr "" -#: modules/devices/devicetree.c:84 -msgid "Node" +#: modules/devices/devicetree/rpi_data.c:160 +#: modules/devices/devicetree/rpi_data.c:161 +msgid "Raspberry Pi" msgstr "" -#: modules/devices/devicetree.c:85 -msgid "Node Path" +#: modules/devices/devicetree/rpi_data.c:161 +msgid "Board Name" msgstr "" -#: modules/devices/devicetree.c:86 -msgid "Alias" +#: modules/devices/devicetree/rpi_data.c:162 +msgid "PCB Revision" msgstr "" -#: modules/devices/devicetree.c:86 modules/devices/devicetree.c:87 -msgid "(None)" +#: modules/devices/devicetree/rpi_data.c:163 +msgid "Introduction" +msgstr "Einführung" + +#: modules/devices/devicetree/rpi_data.c:164 modules/devices/usb.c:170 +msgid "Manufacturer" +msgstr "Hersteller" + +#: modules/devices/devicetree/rpi_data.c:166 +msgid "SOC (spec)" +msgstr "SOC (Spezifikation)" + +#: modules/devices/devicetree/rpi_data.c:167 +msgid "Memory (spec)" +msgstr "Speicher (Spezifikation)" + +#: modules/devices/devicetree/rpi_data.c:169 +msgid "Permanent overvolt bit" +msgstr "Permanenter Überspannungsbit " + +#: modules/devices/devicetree/rpi_data.c:169 +msgctxt "rpi-ov-bit" +msgid "Set" +msgstr "Eingestellt" + +#: modules/devices/devicetree/rpi_data.c:169 +msgctxt "rpi-ov-bit" +msgid "Not set" +msgstr "Nicht eingestellt" + +#: modules/devices/dmi.c:36 modules/devices/inputdevices.c:115 +#: modules/devices/usb.c:167 +msgid "Product" +msgstr "Produkt" + +#: modules/devices/dmi.c:38 modules/devices/ia64/processor.c:164 +#: modules/devices/sh/processor.c:86 +msgid "Family" +msgstr "Familie" + +#: modules/devices/dmi.c:42 +msgid "SKU" msgstr "" -#: modules/devices/devicetree.c:87 -msgid "Symbol" +#: modules/devices/dmi.c:43 +msgid "BIOS" msgstr "" -#: modules/devices/devicetree.c:132 modules/devices/devicetree/pmac_data.c:79 -msgid "Platform" +#: modules/devices/dmi.c:52 modules/devices/dmi.c:58 +msgid "Asset Tag" msgstr "" -#: modules/devices/devicetree.c:133 modules/devices/devicetree.c:178 -msgid "Compatible" +#: modules/devices/dmi.c:115 modules/devices/dmi_memory.c:882 +#: modules/devices/x86/processor.c:694 +msgid "(Not available; Perhaps try running HardInfo as root.)" +msgstr "(Nicht verfügbar; Vielleicht versuchen Hardinfo als root zu starten.)" + +#: modules/devices/dmi.c:156 +msgid "DMI Unavailable" +msgstr "DMI nicht verfügbar" + +#: modules/devices/dmi.c:158 +msgid "DMI is not avaliable. Perhaps this platform does not provide DMI." +msgstr "DMI ist nicht verfügbar. Vielleicht stellt diese Plattform DMI nicht bereit." + +#: modules/devices/dmi.c:159 +msgid "DMI is not available; Perhaps try running HardInfo as root." +msgstr "DMI nicht verfügbar; Vielleicht versuchen HardInfo als root zu starten." + +#: modules/devices/dmi_memory.c:598 +msgid "Serial Presence Detect (SPD)" msgstr "" -#: modules/devices/devicetree.c:134 -msgid "GPU-compatible" +#: modules/devices/dmi_memory.c:601 +msgid "SPD Revision" msgstr "" -#: modules/devices/devicetree.c:140 -msgid "Raspberry Pi or Compatible" +#: modules/devices/dmi_memory.c:602 modules/devices/dmi_memory.c:748 +msgid "Form Factor" +msgstr "Formfaktor" + +#: modules/devices/dmi_memory.c:604 +msgid "Module Vendor" +msgstr "Modulhersteller" + +#: modules/devices/dmi_memory.c:606 +msgid "DRAM Vendor" +msgstr "DRAM Hersteller" + +#: modules/devices/dmi_memory.c:608 modules/devices/dmi_memory.c:753 +msgid "Part Number" +msgstr "Artikelnummer" + +#: modules/devices/dmi_memory.c:610 +msgid "Manufacturing Date (Week / Year)" +msgstr "Herstellungsdatum (Woche / Jahr)" + +#: modules/devices/dmi_memory.c:644 modules/devices/dmi_memory.c:879 +msgid "Memory Device List" +msgstr "Speichergeräteliste" + +#: modules/devices/dmi_memory.c:686 +msgid "Memory Array" +msgstr "Speicher Array" + +#: modules/devices/dmi_memory.c:687 modules/devices/x86/processor.c:713 +msgid "DMI Handle" msgstr "" -#: modules/devices/devicetree.c:142 modules/devices/devicetree.c:160 -#: modules/devices/devicetree.c:177 modules/devices/devicetree/rpi_data.c:160 -msgid "Serial Number" +#: modules/devices/dmi_memory.c:688 modules/devices/dmi_memory.c:746 +#: modules/devices/dmi_memory.c:784 modules/devices/dmi_memory.c:893 +msgid "Locator" msgstr "" -#: modules/devices/devicetree.c:143 modules/devices/devicetree/rpi_data.c:157 -msgid "RCode" +#: modules/devices/dmi_memory.c:689 +msgid "Use" msgstr "" -#: modules/devices/devicetree.c:143 -msgid "No revision code available; unable to lookup model details." +#: modules/devices/dmi_memory.c:690 +msgid "Error Correction Type" +msgstr "Fehlerkorrekturtyp" + +#: modules/devices/dmi_memory.c:691 +msgid "Size (Present / Max)" +msgstr "Größe (Present / Max)" + +#: modules/devices/dmi_memory.c:692 +msgid "Devices (Populated / Sockets)" msgstr "" -#: modules/devices/devicetree.c:159 -msgid "More" +#: modules/devices/dmi_memory.c:693 modules/devices/dmi_memory.c:827 +msgid "Types Present" msgstr "" -#: modules/devices/devicetree.c:175 -msgid "Board" +#: modules/devices/dmi_memory.c:744 modules/devices/dmi_memory.c:782 +msgid "Memory Socket" +msgstr "Speichersockel" + +#: modules/devices/dmi_memory.c:745 modules/devices/dmi_memory.c:783 +msgid "DMI Handles (Array, Socket)" msgstr "" -#: modules/devices/devicetree.c:234 -msgid "Messages" +#: modules/devices/dmi_memory.c:747 modules/devices/dmi_memory.c:785 +msgid "Bank Locator" msgstr "" -#: modules/devices/devicetree/dt_util.c:1013 -msgid "phandle Map" +#: modules/devices/dmi_memory.c:755 +msgid "Rated Speed" +msgstr "Nenngeschwindigkeit" + +#: modules/devices/dmi_memory.c:756 +msgid "Configured Speed" +msgstr "Konfigurierte Geschwindigkeit" + +#: modules/devices/dmi_memory.c:757 +msgid "Data Width/Total Width" +msgstr "Datenbreite/Gesamtbreite" + +#: modules/devices/dmi_memory.c:758 +msgid "Rank" msgstr "" -#: modules/devices/devicetree/dt_util.c:1014 -msgid "Alias Map" +#: modules/devices/dmi_memory.c:759 +msgid "Minimum Voltage" +msgstr "Minimale Spannung" + +#: modules/devices/dmi_memory.c:760 +msgid "Maximum Voltage" +msgstr "Maximale Spannung" + +#: modules/devices/dmi_memory.c:761 +msgid "Configured Voltage" +msgstr "Konfigurierte Spannung" + +#: modules/devices/dmi_memory.c:786 modules/devices/dmi_memory.c:793 +#: modules/devices/monitors.c:492 +msgid "(Empty)" +msgstr "(Leer)" + +#: modules/devices/dmi_memory.c:824 +msgid "Serial Presence Detect (SPD) Summary" +msgstr "Serial Presence Detect (SPD) Zusammenfassung" + +#: modules/devices/dmi_memory.c:947 +msgid " dmidecode utility available" +msgstr " dmidecode Dienstprogramm verfügbar" + +#: modules/devices/dmi_memory.c:948 +msgid " ... and HardInfo running with superuser privileges" +msgstr "... und HardInfo läuft mit superuser Privilegien" + +#: modules/devices/dmi_memory.c:949 +msgid " eeprom module loaded (for SDR, DDR, DDR2, DDR3)" +msgstr "eeprom Module geladen (für SDR, DDR, DDR2, DDR3)" + +#: modules/devices/dmi_memory.c:950 +msgid "" +" ... or ee1004 module loaded and configured! " +"(for DDR4)" msgstr "" +" ... or ee1004 Module geladen und konfiguriert! " +"(für DDR4)" -#: modules/devices/devicetree/dt_util.c:1015 -msgid "Symbol Map" +#: modules/devices/dmi_memory.c:961 +msgid "Memory information requires one or both of the following:" +msgstr "Speicherinformation benötigt eins oder beides von folgendem:" + +#: modules/devices/dmi_memory.c:982 +msgid "" +"\"More often than not, information contained in the DMI tables is " +"inaccurate,\n" +"incomplete or simply wrong.\" -dmidecode manual page" msgstr "" -#: modules/devices/devicetree/pmac_data.c:78 -msgid "Apple Power Macintosh" +#: modules/devices/firmware.c:69 +msgid "Device cannot be removed easily" +msgstr "Gerät kann nicht einfach entfernt werden" + +#: modules/devices/firmware.c:70 +msgid "Device is updatable in this or any other mode" +msgstr "Gerät ist updatebar in diesem oder jedem anderen Modus" + +#: modules/devices/firmware.c:71 +msgid "Update can only be done from offline mode" +msgstr "Update kann nur im offline Modus ausgeführt werden" + +#: modules/devices/firmware.c:72 +msgid "Requires AC power" +msgstr "Benötigt angestecktes Stromkabel" + +#: modules/devices/firmware.c:73 +msgid "Is locked and can be unlocked" +msgstr "Ist gesperrt und kann nicht entsperrt werden" + +#: modules/devices/firmware.c:74 +msgid "Is found in current metadata" +msgstr "Wurde in derzeitigen Metadaten gefunden" + +#: modules/devices/firmware.c:75 +msgid "Requires a bootloader mode to be manually enabled by the user" +msgstr "Bootloader Modus muss manuell vom Benutzer aktiviert werden" + +#: modules/devices/firmware.c:76 +msgid "Has been registered with other plugins" msgstr "" -#: modules/devices/devicetree/pmac_data.c:81 modules/devices/sh/processor.c:85 -msgid "Machine" +#: modules/devices/firmware.c:77 +msgid "Requires a reboot to apply firmware or to reload hardware" +msgstr "Benötigt einen Neustart um Firmware zu verwenden oder neu laden der Hardware" + +#: modules/devices/firmware.c:78 +msgid "Requires system shutdown to apply firmware" +msgstr "Benötigt Systemabschaltung um Firmware zu aktivieren" + +#: modules/devices/firmware.c:79 +msgid "Has been reported to a metadata server" +msgstr "Wurde an einen Metadaten Server übermittelt" + +#: modules/devices/firmware.c:80 +msgid "User has been notified" +msgstr "Benutzer wurde informiert" + +#: modules/devices/firmware.c:81 +msgid "Always use the runtime version rather than the bootloader" +msgstr "Benutze immer die Laufzeitversion anstelle des Bootloaders" + +#: modules/devices/firmware.c:82 +msgid "Install composite firmware on the parent before the child" msgstr "" -#: modules/devices/devicetree/pmac_data.c:83 -msgid "Detected as" +#: modules/devices/firmware.c:83 +msgid "Is currently in bootloader mode" +msgstr "Ist zurzeit im Bootloader-Modus" + +#: modules/devices/firmware.c:84 +msgid "The hardware is waiting to be replugged" +msgstr "Die Hardware wartet darauf wieder eingesteckt zu werden" + +#: modules/devices/firmware.c:85 +msgid "Ignore validation safety checks when flashing this device" +msgstr "Ignoriere Validierungs-Sicherheitschecks wenn dieses Gerät geflashed wird" + +#: modules/devices/firmware.c:86 +msgid "Requires the update to be retried with a new plugin" msgstr "" -#: modules/devices/devicetree/pmac_data.c:84 -msgid "PMAC Flags" +#: modules/devices/firmware.c:87 +msgid "Do not add instance IDs from the device baseclass" msgstr "" -#: modules/devices/devicetree/pmac_data.c:85 -msgid "L2 Cache" +#: modules/devices/firmware.c:88 +msgid "Device update needs to be separately activated" msgstr "" -#: modules/devices/devicetree/pmac_data.c:86 -msgid "PMAC Generation" +#: modules/devices/firmware.c:89 +msgid "" +"Ensure the version is a valid semantic version, e.g. numbers separated with " +"dots" msgstr "" -#: modules/devices/devicetree/rpi_data.c:152 -#: modules/devices/devicetree/rpi_data.c:153 -msgid "Raspberry Pi" +#: modules/devices/firmware.c:90 +msgid "Extra metadata can be exposed about this device" msgstr "" -#: modules/devices/devicetree/rpi_data.c:153 -msgid "Board Name" +#: modules/devices/firmware.c:104 +msgid "DeviceId" msgstr "" -#: modules/devices/devicetree/rpi_data.c:154 -msgid "PCB Revision" +#: modules/devices/firmware.c:104 +msgid "Guid" msgstr "" -#: modules/devices/devicetree/rpi_data.c:155 -msgid "Introduction" +#: modules/devices/firmware.c:104 +msgid "Plugin" msgstr "" -#: modules/devices/devicetree/rpi_data.c:156 modules/devices/spd-decode.c:1510 -#: modules/devices/usb.c:84 modules/devices/usb.c:217 -msgid "Manufacturer" +#: modules/devices/firmware.c:104 modules/network.c:380 +msgid "Flags" msgstr "" -#: modules/devices/devicetree/rpi_data.c:158 -msgid "SOC (spec)" +#: modules/devices/firmware.c:105 +msgid "VendorId" msgstr "" -#: modules/devices/devicetree/rpi_data.c:159 -msgid "Memory (spec)" +#: modules/devices/firmware.c:105 +msgid "VersionBootloader" msgstr "" -#: modules/devices/devicetree/rpi_data.c:161 -msgid "Permanent overvolt bit" +#: modules/devices/firmware.c:106 +msgid "Icon" msgstr "" -#: modules/devices/devicetree/rpi_data.c:161 -msgctxt "rpi-ov-bit" -msgid "Set" +#: modules/devices/firmware.c:106 +msgid "InstallDuration" +msgstr "Installationsdauer" + +#: modules/devices/firmware.c:106 +msgid "Created" +msgstr "Erstellt" + +#: modules/devices/firmware.c:245 +msgid "Firmware List" +msgstr "Firmware Liste" + +#: modules/devices/firmware.c:258 +msgid "Requires the fwupdmgr utility." +msgstr "Benötigt das fwupdmgr Dienstprogramm" + +#: modules/devices/gpu.c:84 modules/devices/pci.c:97 +msgid "SVendor" msgstr "" -#: modules/devices/devicetree/rpi_data.c:161 -msgctxt "rpi-ov-bit" -msgid "Not set" +#: modules/devices/gpu.c:85 modules/devices/pci.c:98 +msgid "SDevice" msgstr "" -#: modules/devices/devmemory.c:93 -msgid "Total Memory" +#: modules/devices/gpu.c:93 modules/devices/pci.c:108 +msgid "PCI Express" msgstr "" -#: modules/devices/devmemory.c:94 -msgid "Free Memory" +#: modules/devices/gpu.c:94 modules/devices/pci.c:110 +msgid "Maximum Link Width" +msgstr "Maximale Linkbreite" + +#: modules/devices/gpu.c:95 modules/devices/pci.c:112 +msgid "Maximum Link Speed" +msgstr "Maximale Linkgeschwindigkeit" + +#: modules/devices/gpu.c:95 modules/devices/pci.c:111 modules/devices/pci.c:112 +msgid "GT/s" msgstr "" -#: modules/devices/devmemory.c:95 -msgid "Cached Swap" +#: modules/devices/gpu.c:105 +msgid "NVIDIA" msgstr "" -#: modules/devices/devmemory.c:96 -msgid "High Memory" +#: modules/devices/gpu.c:107 +msgid "BIOS Version" msgstr "" -#: modules/devices/devmemory.c:97 -msgid "Free High Memory" +#: modules/devices/gpu.c:108 +msgid "UUID" msgstr "" -#: modules/devices/devmemory.c:98 -msgid "Low Memory" +#: modules/devices/gpu.c:142 modules/devices/gpu.c:222 +#: modules/devices/inputdevices.c:110 modules/devices/pci.c:129 +#: modules/devices/usb.c:166 +msgid "Device Information" +msgstr "Geräteinformation" + +#: modules/devices/gpu.c:143 modules/devices/gpu.c:223 +msgid "Location" +msgstr "Ort" + +#: modules/devices/gpu.c:144 +msgid "DRM Device" +msgstr "DRM Gerät" + +#: modules/devices/gpu.c:145 modules/devices/pci.c:130 +#: modules/devices/usb.c:133 modules/devices/usb.c:174 +msgid "Class" +msgstr "Klasse" + +#: modules/devices/gpu.c:154 modules/devices/pci.c:135 +msgid "In Use" +msgstr "In Benutzung" + +#: modules/devices/gpu.c:185 +msgid "Unknown integrated GPU" +msgstr "Unbekannte integrierte GPU" + +#: modules/devices/gpu.c:191 +msgid "clock-frequency property" +msgstr "Taktfrequenz Eigenschaft" + +#: modules/devices/gpu.c:192 +msgid "Operating Points (OPPv1)" msgstr "" -#: modules/devices/devmemory.c:99 -msgid "Free Low Memory" +#: modules/devices/gpu.c:193 +msgid "Operating Points (OPPv2)" msgstr "" -#: modules/devices/devmemory.c:100 -msgid "Virtual Memory" +#: modules/devices/gpu.c:229 +msgid "Device Tree Node" msgstr "" -#: modules/devices/devmemory.c:101 -msgid "Free Virtual Memory" +#: modules/devices/gpu.c:232 modules/devices/monitors.c:471 +#: modules/network/net.c:454 +msgid "Status" msgstr "" -#: modules/devices/dmi.c:188 -msgid "(Not available; Perhaps try running HardInfo as root.)" +#: modules/devices/gpu.c:249 +msgid "GPUs" msgstr "" +#: modules/devices/gpu.c:273 +msgid "No GPU devices found" +msgstr "Keine GPU-Geräte gefunden" + #: modules/devices/ia64/processor.c:108 msgid "IA64 Processor" -msgstr "" +msgstr "IA64 Prozessor" #: modules/devices/ia64/processor.c:163 msgid "Architecture Revision" -msgstr "" - -#: modules/devices/ia64/processor.c:164 modules/devices/sh/processor.c:86 -msgid "Family" -msgstr "" +msgstr "Architektur-Revision" #: modules/devices/ia64/processor.c:170 msgid "CPU regs" @@ -2112,28 +3235,18 @@ msgstr "" msgid "Features" msgstr "Funktionen" -#: modules/devices/inputdevices.c:115 modules/devices/pci.c:214 -#: modules/devices/usb.c:82 modules/devices/usb.c:215 modules/devices/usb.c:347 -msgid "Device Information" -msgstr "" - -#: modules/devices/inputdevices.c:118 modules/devices/usb.c:92 -#: modules/devices/usb.c:240 modules/devices/usb.c:356 +#: modules/devices/inputdevices.c:113 modules/devices/pci.c:139 +#: modules/devices/usb.c:180 msgid "Bus" msgstr "" -#: modules/devices/inputdevices.c:120 modules/devices/usb.c:83 -#: modules/devices/usb.c:216 modules/devices/usb.c:348 -msgid "Product" -msgstr "" - -#: modules/devices/inputdevices.c:124 +#: modules/devices/inputdevices.c:119 msgid "Connected to" -msgstr "" +msgstr "Verbunden mit" -#: modules/devices/inputdevices.c:128 +#: modules/devices/inputdevices.c:123 msgid "InfraRed port" -msgstr "" +msgstr "Infrarot Port" #: modules/devices/m68k/processor.c:85 modules/devices/riscv/processor.c:185 msgid "MMU" @@ -2145,85 +3258,191 @@ msgstr "" #: modules/devices/m68k/processor.c:90 msgid "Calibration" -msgstr "" +msgstr "Kalibration" #: modules/devices/mips/processor.c:76 msgid "System Type" +msgstr "Systemtyp" + +#: modules/devices/monitors.c:29 modules/devices/monitors.c:253 +#: modules/devices/monitors.c:346 modules/devices/spd-decode.c:595 +msgid "(Unspecified)" +msgstr "(Nicht spezifiziert)" + +#: modules/devices/monitors.c:228 +#, c-format +msgid "Week %d of %d" +msgstr "Woche %d von %d" + +#: modules/devices/monitors.c:238 +msgid "Ok" msgstr "" -#: modules/devices/parisc/processor.c:107 -msgid "PA-RISC Processor" +#: modules/devices/monitors.c:238 +msgid "Fail" msgstr "" -#: modules/devices/parisc/processor.c:157 -msgid "System" +#: modules/devices/monitors.c:266 modules/devices/monitors.c:274 +#: modules/devices/monitors.c:282 modules/devices/monitors.c:293 +#: modules/devices/monitors.c:301 modules/devices/monitors.c:308 +#: modules/devices/monitors.c:316 modules/devices/monitors.c:324 +#: modules/devices/monitors.c:332 modules/devices/monitors.c:338 +msgid "(Empty List)" +msgstr "(Leere Liste)" + +#: modules/devices/monitors.c:390 +msgid "Signal Type" +msgstr "Signaltyp" + +#: modules/devices/monitors.c:390 +msgid "Digital" msgstr "" -#: modules/devices/parisc/processor.c:161 -msgid "HVersion" +#: modules/devices/monitors.c:390 +msgid "Analog" msgstr "" -#: modules/devices/parisc/processor.c:162 -msgid "SVersion" +#: modules/devices/monitors.c:391 modules/devices/usb.c:132 +#: modules/network.c:310 modules/network.c:363 modules/network.c:380 +msgid "Interface" +msgstr "Schnittstelle" + +#: modules/devices/monitors.c:392 +msgid "Bits per Color Channel" +msgstr "Bits pro Farbkanal" + +#: modules/devices/monitors.c:393 +msgid "Speaker Allocation" +msgstr "Lautsprecherzuordnung" + +#: modules/devices/monitors.c:394 +msgid "Output (Max)" +msgstr "Ausgang (Max)" + +#: modules/devices/monitors.c:397 +msgid "EDID Device" +msgstr "EDID Geräte" + +#: modules/devices/monitors.c:401 +msgid "Serial" +msgstr "Seriell" + +#: modules/devices/monitors.c:402 +msgid "Manufacture Date" +msgstr "Herstellungsdatum" + +#: modules/devices/monitors.c:403 +msgid "EDID Meta" msgstr "" -#: modules/devices/parisc/processor.c:163 modules/devices/x86/processor.c:425 -msgid "Cache" +#: modules/devices/monitors.c:404 +msgid "Data Size" +msgstr "Datengröße" + +#: modules/devices/monitors.c:404 +msgid "bytes" msgstr "" -#: modules/devices/pci.c:106 -msgid "IRQ" +#: modules/devices/monitors.c:406 +msgid "Extension Blocks" +msgstr "Erweiterungsblöcke" + +#: modules/devices/monitors.c:407 +msgid "Extended to" +msgstr "Erweitert um" + +#: modules/devices/monitors.c:408 +msgid "Checksum" +msgstr "Prüfsumme" + +#: modules/devices/monitors.c:409 +msgid "EDID Descriptors" +msgstr "EDID-Deskriptoren" + +#: modules/devices/monitors.c:410 +msgid "Detailed Timing Descriptors (DTD)" +msgstr "Detaillierte Timing-Deskriptoren (DTD)" + +#: modules/devices/monitors.c:411 +msgid "Established Timings Bitmap (ETB)" +msgstr "Etablierte Timings Bitmap (ETB)" + +#: modules/devices/monitors.c:412 +msgid "Standard Timings (STD)" msgstr "" -#: modules/devices/pci.c:110 -msgid "Latency" +#: modules/devices/monitors.c:413 +msgid "E-EDID Extension Blocks" msgstr "" -#: modules/devices/pci.c:112 -msgid "Bus Master" +#: modules/devices/monitors.c:414 +msgid "EIA/CEA-861 Data Blocks" +msgstr "EIA/CEA-861 Datenblöcke" + +#: modules/devices/monitors.c:415 +msgid "EIA/CEA-861 Short Audio Descriptors" msgstr "" -#: modules/devices/pci.c:118 -msgid "Kernel modules" +#: modules/devices/monitors.c:416 +msgid "EIA/CEA-861 Short Video Descriptors" msgstr "" -#: modules/devices/pci.c:124 -#, c-format -msgid "%s=%s (%s)\n" +#: modules/devices/monitors.c:417 +msgid "DisplayID Timings" msgstr "" -#: modules/devices/pci.c:126 -msgid "OEM Vendor" +#: modules/devices/monitors.c:418 +msgid "DisplayID Strings" msgstr "" -#: modules/devices/pci.c:153 -msgid "prefetchable" +#: modules/devices/monitors.c:419 +msgid "Hex Dump" msgstr "" -#: modules/devices/pci.c:154 -msgid "non-prefetchable" +#: modules/devices/monitors.c:419 +msgid "Data" +msgstr "Daten" + +#: modules/devices/monitors.c:469 modules/devices/monitors.c:501 +#: modules/devices/pci.c:137 modules/devices/usb.c:179 +msgid "Connection" +msgstr "Verbindung" + +#: modules/devices/monitors.c:470 +msgid "DRM" msgstr "" -#: modules/devices/pci.c:163 -msgid "I/O ports at" +#: modules/devices/parisc/processor.c:107 +msgid "PA-RISC Processor" msgstr "" -#: modules/devices/pci.c:216 modules/devices/usb.c:89 modules/devices/usb.c:237 -#: modules/devices/usb.c:353 -msgid "Class" +#: modules/devices/parisc/processor.c:161 +msgid "HVersion" msgstr "" -#: modules/devices/pci.c:217 -msgid "Domain" +#: modules/devices/parisc/processor.c:162 +msgid "SVersion" msgstr "" -#: modules/devices/pci.c:218 -msgid "Bus, device, function" +#: modules/devices/pci.c:109 +msgid "Link Width" +msgstr "Linkbreite" + +#: modules/devices/pci.c:111 +msgid "Link Speed" +msgstr "Linkgeschwindigkeit" + +#: modules/devices/pci.c:138 +msgid "Domain" msgstr "" -#: modules/devices/pci.c:243 +#: modules/devices/pci.c:141 +msgid "Function" +msgstr "Funktion" + +#: modules/devices/pci.c:185 msgid "No PCI devices found" -msgstr "" +msgstr "Keine PCI-Geräte gefunden" #: modules/devices/ppc/processor.c:117 msgid "POWER Processor" @@ -2263,15 +3482,15 @@ msgstr "⚬ Drucker wurde automatisch entdeckt und hinzugefügt=\n" #: modules/devices/printers.c:110 msgid "Idle" -msgstr "" +msgstr "Leerlauf" #: modules/devices/printers.c:112 msgid "Printing a Job" -msgstr "" +msgstr "Drucke einen Auftrag" #: modules/devices/printers.c:114 msgid "Stopped" -msgstr "" +msgstr "Gestoppt" #: modules/devices/printers.c:190 msgid "" @@ -2281,177 +3500,564 @@ msgstr "" "[Drucker]\n" "Keine passende CUPS-Bibliothek gefunden=" -#: modules/devices/printers.c:200 -msgid "[Printers (CUPS)]\n" -msgstr "[Drucker (CUPS)]\n" +#: modules/devices/printers.c:200 +msgid "[Printers (CUPS)]\n" +msgstr "[Drucker (CUPS)]\n" + +#: modules/devices/printers.c:263 +msgid "" +"[Printers]\n" +"No printers found=\n" +msgstr "" +"[Printers]\n" +"Keine Drucker gefunden=\n" + +#: modules/devices/riscv/processor.c:107 +msgid "RISC-V Processor" +msgstr "RISC-V Prozessor" + +#: modules/devices/riscv/processor.c:184 +msgid "uarch" +msgstr "" + +#. /ext:RV32 +#: modules/devices/riscv/riscv_data.c:37 +msgctxt "rv-ext" +msgid "RISC-V 32-bit" +msgstr "" + +#. /ext:RV64 +#: modules/devices/riscv/riscv_data.c:38 +msgctxt "rv-ext" +msgid "RISC-V 64-bit" +msgstr "" + +#. /ext:RV128 +#: modules/devices/riscv/riscv_data.c:39 +msgctxt "rv-ext" +msgid "RISC-V 128-bit" +msgstr "" + +#. /ext:E +#: modules/devices/riscv/riscv_data.c:40 +msgctxt "rv-ext" +msgid "Base embedded integer instructions (15 registers)" +msgstr "Basis eingebetteter Integer-Anweisungen (15 Register)" + +#. /ext:I +#: modules/devices/riscv/riscv_data.c:41 +msgctxt "rv-ext" +msgid "Base integer instructions (31 registers)" +msgstr "Basis eingebetteter Integer-Anweisungen (31 Register)" + +#. /ext:M +#: modules/devices/riscv/riscv_data.c:42 +msgctxt "rv-ext" +msgid "Hardware integer multiply and divide" +msgstr "Hardware Integer multiplizieren und dividieren" + +#. /ext:A +#: modules/devices/riscv/riscv_data.c:43 +msgctxt "rv-ext" +msgid "Atomic memory operations" +msgstr "Atomare Speicheroperationen" + +#. /ext:C +#: modules/devices/riscv/riscv_data.c:44 +msgctxt "rv-ext" +msgid "Compressed 16-bit instructions" +msgstr "Komprimierte 16-bit Instruktionen" + +#. /ext:F +#: modules/devices/riscv/riscv_data.c:45 +msgctxt "rv-ext" +msgid "Floating-point instructions, single-precision" +msgstr "" + +#. /ext:D +#: modules/devices/riscv/riscv_data.c:46 +msgctxt "rv-ext" +msgid "Floating-point instructions, double-precision" +msgstr "" + +#. /ext:Q +#: modules/devices/riscv/riscv_data.c:47 +msgctxt "rv-ext" +msgid "Floating-point instructions, quad-precision" +msgstr "" + +#. /ext:B +#: modules/devices/riscv/riscv_data.c:48 +msgctxt "rv-ext" +msgid "Bit manipulation instructions" +msgstr "" + +#. /ext:V +#: modules/devices/riscv/riscv_data.c:49 +msgctxt "rv-ext" +msgid "Vector operations" +msgstr "" + +#. /ext:T +#: modules/devices/riscv/riscv_data.c:50 +msgctxt "rv-ext" +msgid "Transactional memory" +msgstr "" + +#. /ext:P +#: modules/devices/riscv/riscv_data.c:51 +msgctxt "rv-ext" +msgid "Packed SIMD instructions" +msgstr "" + +#. /ext:L +#: modules/devices/riscv/riscv_data.c:52 +msgctxt "rv-ext" +msgid "Decimal floating-point instructions" +msgstr "" + +#. /ext:J +#: modules/devices/riscv/riscv_data.c:53 +msgctxt "rv-ext" +msgid "Dynamically translated languages" +msgstr "" + +#. /ext:N +#: modules/devices/riscv/riscv_data.c:54 +msgctxt "rv-ext" +msgid "User-level interrupts" +msgstr "" + +#: modules/devices/s390/processor.c:92 +msgid "S390 Processor" +msgstr "" + +#: modules/devices/s390/processor.c:133 +msgid "ID String" +msgstr "" + +#: modules/devices/sh/processor.c:55 +msgid "SuperH Processor" +msgstr "" + +#: modules/devices/sh/processor.c:88 +msgid "Bus Frequency" +msgstr "" + +#: modules/devices/sh/processor.c:89 +msgid "Module Frequency" +msgstr "" + +#: modules/devices/spd-decode.c:306 +msgid "Row address bits" +msgstr "" + +#: modules/devices/spd-decode.c:307 +msgid "Column address bits" +msgstr "" + +#: modules/devices/spd-decode.c:308 +msgid "Number of rows" +msgstr "" + +#: modules/devices/spd-decode.c:309 +msgid "Data width" +msgstr "" + +#: modules/devices/spd-decode.c:310 +msgid "Interface signal levels" +msgstr "" + +#: modules/devices/spd-decode.c:311 +msgid "Configuration type" +msgstr "" + +#: modules/devices/spd-decode.c:312 +msgid "Refresh" +msgstr "" + +#: modules/devices/spd-decode.c:313 modules/devices/spd-decode.c:397 +#: modules/devices/spd-decode.c:492 modules/devices/spd-decode.c:617 +msgid "Timings" +msgstr "" + +#: modules/devices/spd-decode.c:593 +msgid "Ranks" +msgstr "" + +#: modules/devices/spd-decode.c:594 +msgid "IO Pins per Chip" +msgstr "" + +#: modules/devices/spd-decode.c:595 +msgid "Die count" +msgstr "" + +#: modules/devices/spd-decode.c:596 +msgid "Thermal Sensor" +msgstr "" + +#: modules/devices/spd-decode.c:596 +msgid "Present" +msgstr "" + +#: modules/devices/spd-decode.c:596 +msgid "Not present" +msgstr "" + +#: modules/devices/spd-decode.c:597 +msgid "Supported Voltages" +msgstr "" + +#: modules/devices/spd-decode.c:601 +msgid "Supported CAS Latencies" +msgstr "" + +#: modules/devices/spd-decode.c:638 +msgid "Invalid" +msgstr "" + +#: modules/devices/spd-decode.c:870 +msgid "XMP Profile" +msgstr "" + +#: modules/devices/spd-decode.c:871 modules/devices/usb.c:173 +msgid "Speed" +msgstr "" + +#: modules/devices/spd-decode.c:872 modules/devices/spd-decode.c:914 +#: modules/devices/x86/processor.c:715 +msgid "Voltage" +msgstr "" + +#: modules/devices/spd-decode.c:873 +msgid "XMP Timings" +msgstr "" + +#: modules/devices/spd-decode.c:915 +msgid "XMP" +msgstr "" + +#: modules/devices/spd-decode.c:916 +msgid "JEDEC Timings" +msgstr "" + +#: modules/devices/storage.c:84 +msgid "Read Error Rate" +msgstr "" + +#: modules/devices/storage.c:85 +msgid "Throughput Performance" +msgstr "" + +#: modules/devices/storage.c:86 +msgid "Spin-Up Time" +msgstr "" + +#: modules/devices/storage.c:87 +msgid "Start/Stop Count" +msgstr "" + +#: modules/devices/storage.c:88 +msgid "Reallocated Sector Count" +msgstr "" + +#: modules/devices/storage.c:89 +msgid "Read Channel Margin" +msgstr "" + +#: modules/devices/storage.c:90 +msgid "Seek Error Rate" +msgstr "" + +#: modules/devices/storage.c:91 +msgid "Seek Timer Performance" +msgstr "" + +#: modules/devices/storage.c:92 modules/devices/storage.c:131 +msgid "Power-On Hours" +msgstr "" + +#: modules/devices/storage.c:93 +msgid "Spin Retry Count" +msgstr "" + +#: modules/devices/storage.c:94 +msgid "Calibration Retry Count" +msgstr "" + +#: modules/devices/storage.c:95 +msgid "Power Cycle Count" +msgstr "" + +#: modules/devices/storage.c:96 modules/devices/storage.c:113 +msgid "Soft Read Error Rate" +msgstr "" + +#: modules/devices/storage.c:97 +msgid "Runtime Bad Block" +msgstr "" + +#: modules/devices/storage.c:98 +msgid "End-to-End error" +msgstr "" + +#: modules/devices/storage.c:99 +msgid "Reported Uncorrectable Errors" +msgstr "" + +#: modules/devices/storage.c:100 +msgid "Command Timeout" +msgstr "" + +#: modules/devices/storage.c:101 +msgid "High Fly Writes" +msgstr "" + +#: modules/devices/storage.c:102 +msgid "Airflow Temperature" +msgstr "" + +#: modules/devices/storage.c:103 +msgid "G-sense Error Rate" +msgstr "" + +#: modules/devices/storage.c:104 +msgid "Power-off Retract Count" +msgstr "" + +#: modules/devices/storage.c:105 +msgid "Load Cycle Count" +msgstr "" + +#: modules/devices/storage.c:106 modules/devices/storage.c:129 +msgid "Temperature" +msgstr "" + +#: modules/devices/storage.c:107 +msgid "Hardware ECC Recovered" +msgstr "" + +#: modules/devices/storage.c:108 +msgid "Reallocation Event Count" +msgstr "" + +#: modules/devices/storage.c:109 +msgid "Current Pending Sector Count" +msgstr "" + +#: modules/devices/storage.c:110 +msgid "Uncorrectable Sector Count" +msgstr "" + +#: modules/devices/storage.c:111 +msgid "UltraDMA CRC Error Count" +msgstr "" + +#: modules/devices/storage.c:112 +msgid "Multi-Zone Error Rate" +msgstr "" + +#: modules/devices/storage.c:114 +msgid "Run Out Cancel" +msgstr "" + +#: modules/devices/storage.c:115 +msgid "Flying Height" +msgstr "" + +#: modules/devices/storage.c:116 +msgid "Spin High Current" +msgstr "" + +#: modules/devices/storage.c:117 +msgid "Spin Buzz" +msgstr "" + +#: modules/devices/storage.c:118 +msgid "Offline Seek Performance" +msgstr "" + +#: modules/devices/storage.c:119 +msgid "Disk Shift" +msgstr "" + +#: modules/devices/storage.c:120 +msgid "G-Sense Error Rate" +msgstr "" + +#: modules/devices/storage.c:121 +msgid "Loaded Hours" +msgstr "" -#: modules/devices/printers.c:263 -msgid "" -"[Printers]\n" -"No printers found=\n" +#: modules/devices/storage.c:122 +msgid "Load/Unload Retry Count" msgstr "" -"[Printers]\n" -"Keine Drucker gefunden=\n" -#: modules/devices/riscv/processor.c:107 -msgid "RISC-V Processor" +#: modules/devices/storage.c:123 +msgid "Load Friction" msgstr "" -#: modules/devices/riscv/processor.c:184 -msgid "uarch" +#: modules/devices/storage.c:124 +msgid "Load/Unload Cycle Count" msgstr "" -#. /ext:RV32 -#: modules/devices/riscv/riscv_data.c:37 -msgctxt "rv-ext" -msgid "RISC-V 32-bit" +#: modules/devices/storage.c:125 +msgid "Load-in time" msgstr "" -#. /ext:RV64 -#: modules/devices/riscv/riscv_data.c:38 -msgctxt "rv-ext" -msgid "RISC-V 64-bit" +#: modules/devices/storage.c:126 +msgid "Torque Amplification Count" msgstr "" -#. /ext:RV128 -#: modules/devices/riscv/riscv_data.c:39 -msgctxt "rv-ext" -msgid "RISC-V 128-bit" +#: modules/devices/storage.c:127 +msgid "Power-Off Retract Count" msgstr "" -#. /ext:E -#: modules/devices/riscv/riscv_data.c:40 -msgctxt "rv-ext" -msgid "Base embedded integer instructions (15 registers)" +#: modules/devices/storage.c:128 +msgid "GMR Head Amplitude" msgstr "" -#. /ext:I -#: modules/devices/riscv/riscv_data.c:41 -msgctxt "rv-ext" -msgid "Base integer instructions (31 registers)" +#: modules/devices/storage.c:130 +msgid "Endurance Remaining" msgstr "" -#. /ext:M -#: modules/devices/riscv/riscv_data.c:42 -msgctxt "rv-ext" -msgid "Hardware integer multiply and divide" +#: modules/devices/storage.c:132 +msgid "Good Block Rate" msgstr "" -#. /ext:A -#: modules/devices/riscv/riscv_data.c:43 -msgctxt "rv-ext" -msgid "Atomic memory operations" +#: modules/devices/storage.c:133 +msgid "Head Flying Hours" msgstr "" -#. /ext:C -#: modules/devices/riscv/riscv_data.c:44 -msgctxt "rv-ext" -msgid "Compressed 16-bit instructions" +#: modules/devices/storage.c:134 +msgid "Read Error Retry Rate" msgstr "" -#. /ext:F -#: modules/devices/riscv/riscv_data.c:45 -msgctxt "rv-ext" -msgid "Floating-point instructions, single-precision" +#: modules/devices/storage.c:135 +msgid "Total LBAs Written" msgstr "" -#. /ext:D -#: modules/devices/riscv/riscv_data.c:46 -msgctxt "rv-ext" -msgid "Floating-point instructions, double-precision" +#: modules/devices/storage.c:136 +msgid "Total LBAs Read" msgstr "" -#. /ext:Q -#: modules/devices/riscv/riscv_data.c:47 -msgctxt "rv-ext" -msgid "Floating-point instructions, quad-precision" +#: modules/devices/storage.c:141 +msgid "" +"\n" +"[UDisks2]\n" msgstr "" -#. /ext:B -#: modules/devices/riscv/riscv_data.c:48 -msgctxt "rv-ext" -msgid "Bit manipulation instructions" +#: modules/devices/storage.c:199 +msgid "Removable" msgstr "" -#. /ext:V -#: modules/devices/riscv/riscv_data.c:49 -msgctxt "rv-ext" -msgid "Vector operations" +#: modules/devices/storage.c:199 +msgid "Fixed" msgstr "" -#. /ext:T -#: modules/devices/riscv/riscv_data.c:50 -msgctxt "rv-ext" -msgid "Transactional memory" +#: modules/devices/storage.c:202 +msgid "Ejectable" msgstr "" -#. /ext:P -#: modules/devices/riscv/riscv_data.c:51 -msgctxt "rv-ext" -msgid "Packed SIMD instructions" +#: modules/devices/storage.c:205 +msgid "Self-monitoring (S.M.A.R.T.)" msgstr "" -#. /ext:L -#: modules/devices/riscv/riscv_data.c:52 -msgctxt "rv-ext" -msgid "Decimal floating-point instructions" +#: modules/devices/storage.c:208 modules/devices/x86/processor.c:663 +msgid "Power Management" msgstr "" -#. /ext:J -#: modules/devices/riscv/riscv_data.c:53 -msgctxt "rv-ext" -msgid "Dynamically translated languages" +#: modules/devices/storage.c:211 +msgid "Advanced Power Management" msgstr "" -#. /ext:N -#: modules/devices/riscv/riscv_data.c:54 -msgctxt "rv-ext" -msgid "User-level interrupts" +#: modules/devices/storage.c:214 +msgid "Automatic Acoustic Management" msgstr "" -#: modules/devices/s390/processor.c:92 -msgid "S390 Processor" +#: modules/devices/storage.c:217 +#, c-format +msgid "" +"[Drive Information]\n" +"Model=%s\n" msgstr "" -#: modules/devices/s390/processor.c:133 -msgid "ID String" +#: modules/devices/storage.c:221 modules/devices/storage.c:449 +#: modules/devices/storage.c:648 +#, c-format +msgid "Vendor=%s\n" +msgstr "Hersteller=%s\n" + +#: modules/devices/storage.c:226 +#, c-format +msgid "" +"Revision=%s\n" +"Block Device=%s\n" +"Serial=%s\n" +"Size=%s\n" +"Features=%s\n" msgstr "" -#: modules/devices/sh/processor.c:55 -msgid "SuperH Processor" +#: modules/devices/storage.c:240 +#, c-format +msgid "Rotation Rate=%d RPM\n" msgstr "" -#: modules/devices/sh/processor.c:88 -msgid "Bus Frequency" +#: modules/devices/storage.c:243 +#, c-format +msgid "" +"Media=%s\n" +"Media compatibility=%s\n" msgstr "" -#: modules/devices/sh/processor.c:89 -msgid "Module Frequency" +#: modules/devices/storage.c:250 +#, c-format +msgid "Connection bus=%s\n" msgstr "" -#: modules/devices/spd-decode.c:1475 +#: modules/devices/storage.c:253 +#, c-format msgid "" -"[SPD]\n" -"Please load the eeprom module to obtain information about memory SPD=\n" -"[$ShellParam$]\n" -"ReloadInterval=500\n" +"[Self-monitoring (S.M.A.R.T.)]\n" +"Status=%s\n" +"Bad Sectors=%ld\n" +"Power on time=%d days %d hours\n" +"Temperature=%d°C\n" +msgstr "" + +#: modules/devices/storage.c:259 +msgid "Failing" +msgstr "" + +#: modules/devices/storage.c:259 +msgid "OK" msgstr "" -#: modules/devices/spd-decode.c:1480 +#: modules/devices/storage.c:265 msgid "" -"[SPD]\n" -"Reading memory SPD not supported on this system=\n" +"[S.M.A.R.T. Attributes]\n" +"Attribute=Normalized Value / Worst / Threshold\n" +msgstr "" + +#: modules/devices/storage.c:297 +#, c-format +msgid "(%d) %s=%s\n" msgstr "" -#: modules/devices/spd-decode.c:1509 -msgid "SPD" +#: modules/devices/storage.c:306 +#, c-format +msgid "" +"[Partition table]\n" +"Type=%s\n" msgstr "" -#: modules/devices/spd-decode.c:1510 -msgid "Bank" +#: modules/devices/storage.c:325 +#, c-format +msgid "Partition %s=%s\n" msgstr "" -#: modules/devices/storage.c:46 +#: modules/devices/storage.c:375 msgid "" "\n" "[SCSI Disks]\n" @@ -2459,7 +4065,7 @@ msgstr "" "\n" "[SCSI-Geräte]\n" -#: modules/devices/storage.c:110 modules/devices/storage.c:313 +#: modules/devices/storage.c:446 modules/devices/storage.c:645 #, c-format msgid "" "[Device Information]\n" @@ -2468,17 +4074,7 @@ msgstr "" "[Geräte-Informationen]\n" "Modell=%s\n" -#: modules/devices/storage.c:115 modules/devices/storage.c:319 -#, c-format -msgid "Vendor=%s (%s)\n" -msgstr "Hersteller=%s (%s)\n" - -#: modules/devices/storage.c:120 modules/devices/storage.c:321 -#, c-format -msgid "Vendor=%s\n" -msgstr "Hersteller=%s\n" - -#: modules/devices/storage.c:125 +#: modules/devices/storage.c:453 #, c-format msgid "" "Type=%s\n" @@ -2490,7 +4086,7 @@ msgid "" "LUN=%d\n" msgstr "" -#: modules/devices/storage.c:167 +#: modules/devices/storage.c:499 msgid "" "\n" "[IDE Disks]\n" @@ -2498,12 +4094,12 @@ msgstr "" "\n" "[IDE-Geräte]\n" -#: modules/devices/storage.c:250 +#: modules/devices/storage.c:582 #, c-format msgid "Driver=%s\n" msgstr "Treiber=%s\n" -#: modules/devices/storage.c:324 +#: modules/devices/storage.c:650 #, c-format msgid "" "Device Name=hd%c\n" @@ -2511,7 +4107,7 @@ msgid "" "Cache=%dkb\n" msgstr "" -#: modules/devices/storage.c:334 +#: modules/devices/storage.c:660 #, c-format msgid "" "[Geometry]\n" @@ -2522,7 +4118,7 @@ msgstr "" "Physikalisch=%s\n" "Logisch=%s\n" -#: modules/devices/storage.c:344 +#: modules/devices/storage.c:670 #, c-format msgid "" "[Capabilities]\n" @@ -2531,7 +4127,7 @@ msgstr "" "[Fähigkeiten]\n" "%s" -#: modules/devices/storage.c:351 +#: modules/devices/storage.c:677 #, c-format msgid "" "[Speeds]\n" @@ -2540,51 +4136,36 @@ msgstr "" "[Geschwindigkeiten]\n" "%s" -#: modules/devices/usb.c:44 modules/devices/usb.c:326 -msgid "mA" -msgstr "" - -#. /%.2f is version -#: modules/devices/usb.c:53 modules/devices/usb.c:190 -#, c-format -msgid "USB %.2f Hub" -msgstr "" - -#: modules/devices/usb.c:55 modules/devices/usb.c:192 -#, c-format -msgid "Unknown USB %.2f Device (class %d)" +#: modules/devices/usb.c:134 modules/devices/usb.c:175 +msgid "Sub-class" msgstr "" -#: modules/devices/usb.c:85 modules/devices/usb.c:232 -msgid "Speed" -msgstr "" +#: modules/devices/usb.c:135 modules/devices/usb.c:176 modules/network.c:347 +msgid "Protocol" +msgstr "Protokoll" -#: modules/devices/usb.c:85 modules/devices/usb.c:232 -msgid "Mbit/s" +#: modules/devices/usb.c:143 modules/network/net.c:451 +msgid "Mb/s" msgstr "" -#: modules/devices/usb.c:86 modules/devices/usb.c:233 modules/devices/usb.c:350 +#: modules/devices/usb.c:171 msgid "Max Current" msgstr "" -#: modules/devices/usb.c:88 modules/devices/usb.c:235 modules/devices/usb.c:352 -msgid "USB Version" -msgstr "" - -#: modules/devices/usb.c:90 modules/devices/usb.c:238 modules/devices/usb.c:354 -msgid "Vendor ID" +#: modules/devices/usb.c:171 +msgid "mA" msgstr "" -#: modules/devices/usb.c:91 modules/devices/usb.c:239 modules/devices/usb.c:355 -msgid "Product ID" +#: modules/devices/usb.c:172 +msgid "USB Version" msgstr "" -#: modules/devices/usb.c:231 -msgid "Port" +#: modules/devices/usb.c:177 +msgid "Device Version" msgstr "" -#: modules/devices/usb.c:241 -msgid "Level" +#: modules/devices/usb.c:221 +msgid "No USB devices found." msgstr "" #: modules/devices/x86/processor.c:149 @@ -2614,42 +4195,71 @@ msgctxt "cache-type" msgid "Unified" msgstr "" -#: modules/devices/x86/processor.c:410 +#: modules/devices/x86/processor.c:367 +msgid "Caches" +msgstr "" + +#: modules/devices/x86/processor.c:418 modules/devices/x86/processor.c:435 +#, c-format +msgid "Level %d (%s)#%d=%dx %dKB (%dKB), %d-way set-associative, %d sets\n" +msgstr "" + +#: modules/devices/x86/processor.c:647 msgid "Model Name" msgstr "" -#: modules/devices/x86/processor.c:411 +#: modules/devices/x86/processor.c:648 msgid "Family, model, stepping" msgstr "Familie, Modell, Stufung" -#: modules/devices/x86/processor.c:417 +#: modules/devices/x86/processor.c:654 msgid "Microcode Version" msgstr "" -#: modules/devices/x86/processor.c:418 +#: modules/devices/x86/processor.c:655 msgid "Configuration" msgstr "Konfiguration" -#: modules/devices/x86/processor.c:419 +#: modules/devices/x86/processor.c:656 msgid "Cache Size" msgstr "Cache-Größe" -#: modules/devices/x86/processor.c:419 +#: modules/devices/x86/processor.c:656 msgid "kb" msgstr "" -#: modules/devices/x86/processor.c:426 -msgid "Power Management" +#: modules/devices/x86/processor.c:664 +msgid "Bug Workarounds" msgstr "" -#: modules/devices/x86/processor.c:427 -msgid "Bug Workarounds" +#: modules/devices/x86/processor.c:691 +msgid "Socket Information" +msgstr "" + +#: modules/devices/x86/processor.c:712 +msgid "CPU Socket" +msgstr "" + +#: modules/devices/x86/processor.c:716 +msgid "External Clock" +msgstr "" + +#: modules/devices/x86/processor.c:717 +msgid "Max Frequency" msgstr "" -#: modules/devices/x86/processor.c:454 modules/devices/x86/processor.c:468 +#: modules/devices/x86/processor.c:748 modules/devices/x86/processor.c:769 msgid "Package Information" msgstr "" +#: modules/devices/x86/processor.c:796 +msgid "Socket:Core" +msgstr "" + +#: modules/devices/x86/processor.c:796 +msgid "Thread" +msgstr "" + #. /flag:fpu #: modules/devices/x86/x86_data.c:43 msgctxt "x86-flag" @@ -3961,181 +5571,200 @@ msgctxt "x86-flag" msgid "IPI required to wake up remote CPU" msgstr "" +#. /bug:cpu_insecure & bug:cpu_meltdown +#: modules/devices/x86/x86_data.c:281 modules/devices/x86/x86_data.c:282 +msgctxt "x86-flag" +msgid "" +"CPU is affected by meltdown attack and needs kernel page table isolation" +msgstr "" + +#. /bug:spectre_v1 +#: modules/devices/x86/x86_data.c:283 +msgctxt "x86-flag" +msgid "CPU is affected by Spectre variant 1 attack with conditional branches" +msgstr "" + +#. /bug:spectre_v2 +#: modules/devices/x86/x86_data.c:284 +msgctxt "x86-flag" +msgid "CPU is affected by Spectre variant 2 attack with indirect branches" +msgstr "" + +#. /bug:spec_store_bypass +#: modules/devices/x86/x86_data.c:285 +msgctxt "x86-flag" +msgid "CPU is affected by speculative store bypass attack" +msgstr "" + +#. /bug:l1tf +#: modules/devices/x86/x86_data.c:286 +msgctxt "x86-flag" +msgid "CPU is affected by L1 Terminal Fault" +msgstr "" + #. /x86/kernel/cpu/powerflags.h #. /flag:pm:ts -#: modules/devices/x86/x86_data.c:283 +#: modules/devices/x86/x86_data.c:289 msgctxt "x86-flag" msgid "temperature sensor" msgstr "" #. /flag:pm:fid -#: modules/devices/x86/x86_data.c:284 +#: modules/devices/x86/x86_data.c:290 msgctxt "x86-flag" msgid "frequency id control" msgstr "" #. /flag:pm:vid -#: modules/devices/x86/x86_data.c:285 +#: modules/devices/x86/x86_data.c:291 msgctxt "x86-flag" msgid "voltage id control" msgstr "" #. /flag:pm:ttp -#: modules/devices/x86/x86_data.c:286 +#: modules/devices/x86/x86_data.c:292 msgctxt "x86-flag" msgid "thermal trip" msgstr "" #. /flag:pm:tm -#: modules/devices/x86/x86_data.c:287 +#: modules/devices/x86/x86_data.c:293 msgctxt "x86-flag" msgid "hardware thermal control" msgstr "" #. /flag:pm:stc -#: modules/devices/x86/x86_data.c:288 +#: modules/devices/x86/x86_data.c:294 msgctxt "x86-flag" msgid "software thermal control" msgstr "" #. /flag:pm:100mhzsteps -#: modules/devices/x86/x86_data.c:289 +#: modules/devices/x86/x86_data.c:295 msgctxt "x86-flag" msgid "100 MHz multiplier control" msgstr "" #. /flag:pm:hwpstate -#: modules/devices/x86/x86_data.c:290 +#: modules/devices/x86/x86_data.c:296 msgctxt "x86-flag" msgid "hardware P-state control" msgstr "" #. /flag:pm:cpb -#: modules/devices/x86/x86_data.c:291 +#: modules/devices/x86/x86_data.c:297 msgctxt "x86-flag" msgid "core performance boost" msgstr "" #. /flag:pm:eff_freq_ro -#: modules/devices/x86/x86_data.c:292 +#: modules/devices/x86/x86_data.c:298 msgctxt "x86-flag" msgid "Readonly aperf/mperf" msgstr "" #. /flag:pm:proc_feedback -#: modules/devices/x86/x86_data.c:293 +#: modules/devices/x86/x86_data.c:299 msgctxt "x86-flag" msgid "processor feedback interface" msgstr "" #. /flag:pm:acc_power -#: modules/devices/x86/x86_data.c:294 +#: modules/devices/x86/x86_data.c:300 msgctxt "x86-flag" msgid "accumulated power mechanism" msgstr "" -#: modules/network.c:59 +#: modules/network.c:61 msgid "Interfaces" msgstr "Schnittstellen" -#: modules/network.c:60 +#: modules/network.c:62 msgid "IP Connections" msgstr "IP-Verbindungen" -#: modules/network.c:61 +#: modules/network.c:63 msgid "Routing Table" msgstr "Routing-Tabelle" -#: modules/network.c:62 modules/network.c:303 +#: modules/network.c:64 modules/network.c:309 msgid "ARP Table" msgstr "ARP-Tabelle" -#: modules/network.c:63 +#: modules/network.c:65 msgid "DNS Servers" msgstr "DNS-Server" -#: modules/network.c:64 +#: modules/network.c:66 msgid "Statistics" msgstr "Statistiken" -#: modules/network.c:65 +#: modules/network.c:67 msgid "Shared Directories" msgstr "Freigegebene Verzeichnisse" -#: modules/network.c:304 modules/network.c:326 modules/network.c:357 -#: modules/network/net.c:477 +#: modules/network.c:310 modules/network.c:332 modules/network.c:363 +#: modules/network/net.c:472 msgid "IP Address" msgstr "IP-Adresse" -#: modules/network.c:304 modules/network.c:357 modules/network.c:374 -msgid "Interface" -msgstr "Schnittstelle" - -#: modules/network.c:304 +#: modules/network.c:310 msgid "MAC Address" msgstr "MAC-Adresse" -#: modules/network.c:313 +#: modules/network.c:319 msgid "SAMBA" msgstr "" -#: modules/network.c:314 +#: modules/network.c:320 msgid "NFS" msgstr "" -#: modules/network.c:325 +#: modules/network.c:331 msgid "Name Servers" msgstr "DNS-Server" -#: modules/network.c:340 +#: modules/network.c:346 msgid "Connections" msgstr "" -#: modules/network.c:341 +#: modules/network.c:347 msgid "Local Address" msgstr "Lokale Adresse" -#: modules/network.c:341 -msgid "Protocol" -msgstr "Protokoll" - -#: modules/network.c:341 +#: modules/network.c:347 msgid "Foreign Address" msgstr "Fremde Adresse" -#: modules/network.c:341 +#: modules/network.c:347 msgid "State" msgstr "Status" -#: modules/network.c:357 +#: modules/network.c:363 msgid "Sent" msgstr "Gesendet" -#: modules/network.c:357 +#: modules/network.c:363 msgid "Received" msgstr "Empfangen" -#: modules/network.c:373 +#: modules/network.c:379 msgid "IP routing table" msgstr "" -#: modules/network.c:374 +#: modules/network.c:380 msgid "Destination/Gateway" msgstr "Ziel/Vorgaberoute" -#: modules/network.c:374 -msgid "Flags" -msgstr "" - -#: modules/network.c:374 modules/network/net.c:478 +#: modules/network.c:380 modules/network/net.c:473 msgid "Mask" msgstr "Netz-Maske" -#: modules/network.c:402 +#: modules/network.c:408 msgid "Network" msgstr "Netzwerk" -#: modules/network.c:435 +#: modules/network.c:441 msgid "Gathers information about this computer's network connection" msgstr "Sammelt Informationen über die Netzwerk-Verbindung dieses Computers" @@ -4297,106 +5926,126 @@ msgctxt "net-if-type" msgid "(Unknown)" msgstr "" -#: modules/network/net.c:348 modules/network/net.c:358 +#: modules/network/net.c:343 modules/network/net.c:353 msgid "Network Interfaces" msgstr "" -#: modules/network/net.c:348 +#: modules/network/net.c:343 msgid "None Found" msgstr "" -#: modules/network/net.c:400 modules/network/net.c:422 -#: modules/network/net.c:423 -msgid "MiB" -msgstr "" - -#: modules/network/net.c:414 +#: modules/network/net.c:409 msgid "Network Adapter Properties" msgstr "" -#: modules/network/net.c:415 +#: modules/network/net.c:410 msgid "Interface Type" msgstr "" -#: modules/network/net.c:416 +#: modules/network/net.c:411 msgid "Hardware Address (MAC)" msgstr "" -#: modules/network/net.c:420 +#: modules/network/net.c:415 msgid "MTU" msgstr "" -#: modules/network/net.c:421 +#: modules/network/net.c:416 msgid "Transfer Details" msgstr "" -#: modules/network/net.c:422 +#: modules/network/net.c:417 msgid "Bytes Received" msgstr "" -#: modules/network/net.c:423 +#: modules/network/net.c:418 msgid "Bytes Sent" msgstr "" -#: modules/network/net.c:440 modules/network/net.c:462 -#: modules/network/net.c:463 +#: modules/network/net.c:435 modules/network/net.c:457 +#: modules/network/net.c:458 msgid "dBm" msgstr "" -#: modules/network/net.c:440 +#: modules/network/net.c:435 msgid "mW" msgstr "" -#: modules/network/net.c:454 +#: modules/network/net.c:449 msgid "Wireless Properties" msgstr "" -#: modules/network/net.c:455 +#: modules/network/net.c:450 msgid "Network Name (SSID)" msgstr "" -#: modules/network/net.c:456 +#: modules/network/net.c:451 msgid "Bit Rate" msgstr "" -#: modules/network/net.c:456 -msgid "Mb/s" -msgstr "" - -#: modules/network/net.c:457 +#: modules/network/net.c:452 msgid "Transmission Power" msgstr "" -#: modules/network/net.c:459 -msgid "Status" -msgstr "" - -#: modules/network/net.c:460 +#: modules/network/net.c:455 msgid "Link Quality" msgstr "" -#: modules/network/net.c:461 +#: modules/network/net.c:456 msgid "Signal / Noise" msgstr "" -#: modules/network/net.c:476 +#: modules/network/net.c:471 msgid "Internet Protocol (IPv4)" msgstr "" -#: modules/network/net.c:477 modules/network/net.c:478 -#: modules/network/net.c:480 +#: modules/network/net.c:472 modules/network/net.c:473 +#: modules/network/net.c:475 msgid "(Not set)" msgstr "" -#: modules/network/net.c:479 +#: modules/network/net.c:474 msgid "Broadcast Address" msgstr "" +#~ msgid "Couldn't find a Web browser to open URL %s." +#~ msgstr "Konnte keinen Web-Browser finden, um die URL %s zu öffnen." + +#~ msgid "CPU Blowfish" +#~ msgstr "CPU Blowfish" + +#~ msgid "CSharp (Mono, old)" +#~ msgstr "CSharp (Mono, old)" + +#~ msgid "CSharp (Mono)" +#~ msgstr "CSharp (Mono)" + +#~ msgid "DMI" +#~ msgstr "DMI" + +#~ msgid "Memory SPD" +#~ msgstr "Hauptspeicher (SPD)" + +#~ msgid "Vendor=%s (%s)\n" +#~ msgstr "Hersteller=%s (%s)\n" + +#~ msgid "X11 Vendor" +#~ msgstr "X11-Hersteller" + +#~ msgid "Extensions" +#~ msgstr "Erweiterungen" + +#~ msgid "Monitor %d=%dx%d pixels\n" +#~ msgstr "Bildschirm %d=%dx%d Pixel\n" + +#~ msgid " (model unknown)" +#~ msgstr " (unbekanntes Modell)" + +#~ msgid " (vendor unknown)" +#~ msgstr " (unbekannter Hersteller)" + #~ msgid "CPU Clock" #~ msgstr "CPU-Takt" -#~ msgid "Desktop Environment" -#~ msgstr "Desktop-Umgebung" - #~ msgid "%s$CPU%d$%s=%.2fMHz\n" #~ msgstr "%s$CPU%d$%s=%.2fMHz\n" diff --git a/po/es.po b/po/es.po index ddef4a79..a236f027 100644 --- a/po/es.po +++ b/po/es.po @@ -7,28 +7,444 @@ msgid "" msgstr "" "Project-Id-Version: hardinfo\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-08-14 22:23-0500\n" -"PO-Revision-Date: 2017-08-04 00:00-0430\n" -"Last-Translator: PICCORO Lenz McKAY \n" -"Language-Team: Fernando López \n" +"POT-Creation-Date: 2019-10-24 15:16-0500\n" +"PO-Revision-Date: 2020-05-10 16:56+0200\n" +"Last-Translator: micrococo\n" +"Language-Team:\n" "Language: es\n" "X-Poedit-Basepath: ../\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Poedit-Language: Spanish\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Lokalize 20.04.0\n" + +#: hardinfo/cpu_util.c:30 +msgid "Little Endian" +msgstr "Little Endian" + +#: hardinfo/cpu_util.c:32 +msgid "Big Endian" +msgstr "Big Endian" + +#: hardinfo/cpu_util.c:184 hardinfo/cpu_util.c:195 modules/devices/gpu.c:200 +msgid "Frequency Scaling" +msgstr "Escalado de frecuencias" + +#: hardinfo/cpu_util.c:185 modules/devices/gpu.c:201 +msgid "Minimum" +msgstr "Mínimo" + +#: hardinfo/cpu_util.c:185 hardinfo/cpu_util.c:186 hardinfo/cpu_util.c:187 +#: hardinfo/dt_util.c:589 modules/devices/gpu.c:201 modules/devices/gpu.c:202 +msgid "kHz" +msgstr "KHz" + +#: hardinfo/cpu_util.c:186 modules/devices/gpu.c:202 +msgid "Maximum" +msgstr "Máximo" + +#: hardinfo/cpu_util.c:187 +msgid "Current" +msgstr "Actual" + +#: hardinfo/cpu_util.c:188 modules/devices/gpu.c:203 +msgid "Transition Latency" +msgstr "Latencia de transición" + +#: hardinfo/cpu_util.c:188 modules/devices/gpu.c:203 +msgid "ns" +msgstr "ns" + +#: hardinfo/cpu_util.c:189 +msgid "Governor" +msgstr "Gobernador" + +#: hardinfo/cpu_util.c:190 hardinfo/cpu_util.c:196 modules/devices/gpu.c:153 +#: modules/devices/pci.c:134 modules/devices/usb.c:136 +msgid "Driver" +msgstr "Manejador" + +#: hardinfo/cpu_util.c:202 modules/computer.c:737 +#: modules/devices/arm/processor.c:256 modules/devices/x86/processor.c:284 +#: modules/devices/x86/processor.c:388 modules/devices/x86/processor.c:524 +msgid "(Not Available)" +msgstr "(no disponible)" + +#: hardinfo/cpu_util.c:210 hardinfo/cpu_util.c:212 +msgid "Socket" +msgstr "Zócalo" + +#: hardinfo/cpu_util.c:215 hardinfo/cpu_util.c:217 modules/devices/gpu.c:149 +#: modules/devices/gpu.c:227 +msgid "Core" +msgstr "Núcleo" + +#: hardinfo/cpu_util.c:220 +#, fuzzy +msgid "Book" +msgstr "Asentamientos" + +#: hardinfo/cpu_util.c:222 +#, fuzzy +msgid "Drawer" +msgstr "Dibujado" + +#: hardinfo/cpu_util.c:228 modules/devices/arm/processor.c:471 +#: modules/devices/x86/processor.c:750 +msgid "Topology" +msgstr "Topología" + +#: hardinfo/cpu_util.c:229 +msgid "ID" +msgstr "Identificador" + +#: hardinfo/dmi_util.c:25 +msgid "BIOS Information" +msgstr "Información del BIOS" + +#: hardinfo/dmi_util.c:26 modules/devices/parisc/processor.c:157 +msgid "System" +msgstr "Sistema" + +#: hardinfo/dmi_util.c:27 +msgid "Base Board" +msgstr "Placa base" + +#: hardinfo/dmi_util.c:28 modules/devices/dmi.c:53 +msgid "Chassis" +msgstr "Chasis" + +#: hardinfo/dmi_util.c:29 modules/computer.c:529 modules/computer.c:1000 +#: modules/devices/alpha/processor.c:87 modules/devices/arm/processor.c:341 +#: modules/devices.c:99 modules/devices/ia64/processor.c:159 +#: modules/devices/m68k/processor.c:83 modules/devices/mips/processor.c:74 +#: modules/devices/parisc/processor.c:154 modules/devices/ppc/processor.c:157 +#: modules/devices/riscv/processor.c:181 modules/devices/s390/processor.c:131 +#: modules/devices/sh/processor.c:83 modules/devices/sparc/processor.c:74 +#: modules/devices/x86/processor.c:646 +msgid "Processor" +msgstr "Procesador" + +#: hardinfo/dmi_util.c:30 +msgid "Memory Controller" +msgstr "Controlador de memoria" + +#: hardinfo/dmi_util.c:31 +msgid "Memory Module" +msgstr "Módulo de memoria" + +#: hardinfo/dmi_util.c:32 modules/devices/parisc/processor.c:163 +#: modules/devices/x86/processor.c:662 +msgid "Cache" +msgstr "Caché" + +#: hardinfo/dmi_util.c:33 +msgid "Port Connector" +msgstr "Conector de puerto" + +#: hardinfo/dmi_util.c:34 +msgid "System Slots" +msgstr "Zócalos del sistema" + +#: hardinfo/dmi_util.c:35 +msgid "On Board Devices" +msgstr "Dispositivos embebidos" + +#: hardinfo/dmi_util.c:36 +#, fuzzy +msgid "OEM Strings" +msgstr "Textos del fabricante" + +#: hardinfo/dmi_util.c:37 +msgid "System Configuration Options" +msgstr "Opciones de configuración del sistema" + +#: hardinfo/dmi_util.c:38 +msgid "BIOS Language" +msgstr "Idioma del BIOS" + +#: hardinfo/dmi_util.c:39 +msgid "Group Associations" +msgstr "Asociaciones de grupo" + +#: hardinfo/dmi_util.c:40 +msgid "System Event Log" +msgstr "Registro de eventos del sistema" + +#: hardinfo/dmi_util.c:41 +msgid "Physical Memory Array" +msgstr "Matriz de memoria física" + +#: hardinfo/dmi_util.c:42 +msgid "Memory Device" +msgstr "Dispositivo de memoria" + +#: hardinfo/dmi_util.c:43 +msgid "32-bit Memory Error" +msgstr "Error de memoria de 32 bits" + +#: hardinfo/dmi_util.c:44 +msgid "Memory Array Mapped Address" +msgstr "Dirección asignada de matriz de memoria" + +#: hardinfo/dmi_util.c:45 +msgid "Memory Device Mapped Address" +msgstr "Dirección asignada de dispositivo de memoria" + +#: hardinfo/dmi_util.c:46 +msgid "Built-in Pointing Device" +msgstr "Dispositivo apuntador embebido" + +#: hardinfo/dmi_util.c:47 +msgid "Portable Battery" +msgstr "Batería portátil" + +#: hardinfo/dmi_util.c:48 +msgid "System Reset" +msgstr "Reinicio del sistema" + +#: hardinfo/dmi_util.c:49 +msgid "Hardware Security" +msgstr "Seguridad del hardware" + +#: hardinfo/dmi_util.c:50 +msgid "System Power Controls" +msgstr "Controles de energía del sistema" + +#: hardinfo/dmi_util.c:51 +msgid "Voltage Probe" +msgstr "Prueba de voltaje" + +#: hardinfo/dmi_util.c:52 +msgid "Cooling Device" +msgstr "Dispositivo de refrigeración" + +#: hardinfo/dmi_util.c:53 +msgid "Temperature Probe" +msgstr "Prueba de temperatura" + +#: hardinfo/dmi_util.c:54 +msgid "Electrical Current Probe" +msgstr "Prueba de corriente eléctrica" + +#: hardinfo/dmi_util.c:55 +msgid "Out-of-band Remote Access" +msgstr "Acceso remoto fuera de banda" + +#: hardinfo/dmi_util.c:56 +msgid "Boot Integrity Services" +msgstr "Servicios de integridad del arranque" + +#: hardinfo/dmi_util.c:57 +msgid "System Boot" +msgstr "Sistema de arranque" + +#: hardinfo/dmi_util.c:58 +msgid "64-bit Memory Error" +msgstr "Error de memoria de 64 bits" + +#: hardinfo/dmi_util.c:59 +msgid "Management Device" +msgstr "Dispositivo de gestión" + +#: hardinfo/dmi_util.c:60 +msgid "Management Device Component" +msgstr "Componente de dispositivo de gestión" + +#: hardinfo/dmi_util.c:61 +msgid "Management Device Threshold Data" +msgstr "" + +#: hardinfo/dmi_util.c:62 +msgid "Memory Channel" +msgstr "Canal de memoria" + +#: hardinfo/dmi_util.c:63 +msgid "IPMI Device" +msgstr "Dispositivo IPMI" + +#: hardinfo/dmi_util.c:64 +msgid "Power Supply" +msgstr "Fuente de alimentación" + +#: hardinfo/dmi_util.c:65 +msgid "Additional Information" +msgstr "Información adicional" + +#: hardinfo/dmi_util.c:66 +msgid "Onboard Device" +msgstr "Dispositivo embebido" + +#: hardinfo/dmi_util.c:226 +msgid "Invalid chassis type (0)" +msgstr "Tipo de chasis no válido (0)" + +#: hardinfo/dmi_util.c:227 hardinfo/dmi_util.c:228 +msgid "Unknown chassis type" +msgstr "Tipo de chasis desconocido" + +#: hardinfo/dmi_util.c:229 +msgid "Desktop" +msgstr "De escritorio" + +#: hardinfo/dmi_util.c:230 +msgid "Low-profile Desktop" +msgstr "De bajo rendimiento" + +#: hardinfo/dmi_util.c:231 +msgid "Pizza Box" +msgstr "Caja de pizza" + +#: hardinfo/dmi_util.c:232 +msgid "Mini Tower" +msgstr "Minitorre" + +#: hardinfo/dmi_util.c:233 +msgid "Tower" +msgstr "Torre" + +#: hardinfo/dmi_util.c:234 +msgid "Portable" +msgstr "Portátil" + +#: hardinfo/dmi_util.c:235 modules/computer.c:391 modules/computer.c:400 +#: modules/computer.c:422 +msgid "Laptop" +msgstr "Portátil" + +#: hardinfo/dmi_util.c:236 +msgid "Notebook" +msgstr "Portátil" + +#: hardinfo/dmi_util.c:237 +msgid "Handheld" +msgstr "De bolsillo" + +#: hardinfo/dmi_util.c:238 +msgid "Docking Station" +msgstr "Estacion fija" + +#: hardinfo/dmi_util.c:239 +msgid "All-in-one" +msgstr "Todo en uno" + +#: hardinfo/dmi_util.c:240 +msgid "Subnotebook" +msgstr "Subportátil" + +#: hardinfo/dmi_util.c:241 +msgid "Space-saving" +msgstr "PC Espacio-pequeño" + +#: hardinfo/dmi_util.c:242 +msgid "Lunch Box" +msgstr "PC caja" + +#: hardinfo/dmi_util.c:243 +msgid "Main Server Chassis" +msgstr "Servidor principal" + +#: hardinfo/dmi_util.c:244 +msgid "Expansion Chassis" +msgstr "Carcasa de expansión" + +#: hardinfo/dmi_util.c:245 +msgid "Sub Chassis" +msgstr "Sub servidor" + +#: hardinfo/dmi_util.c:246 +msgid "Bus Expansion Chassis" +msgstr "Expansion de bus acoplable" + +#: hardinfo/dmi_util.c:247 +msgid "Peripheral Chassis" +msgstr "Carcasa de periférico" + +#: hardinfo/dmi_util.c:248 +msgid "RAID Chassis" +msgstr "RAID acoplable" + +#: hardinfo/dmi_util.c:249 +msgid "Rack Mount Chassis" +msgstr "Rack de montaje acoplable" + +#: hardinfo/dmi_util.c:250 +msgid "Sealed-case PC" +msgstr "PC sellada" + +#: hardinfo/dmi_util.c:251 +msgid "Multi-system" +msgstr "Multisistema" + +#: hardinfo/dmi_util.c:252 +msgid "CompactPCI" +msgstr "" + +#: hardinfo/dmi_util.c:253 +msgid "AdvancedTCA" +msgstr "" + +#: hardinfo/dmi_util.c:254 +msgid "Blade" +msgstr "" + +#: hardinfo/dmi_util.c:255 +msgid "Blade Enclosing" +msgstr "" + +#: hardinfo/dmi_util.c:256 +msgid "Tablet" +msgstr "Tableta" + +#: hardinfo/dmi_util.c:257 +msgid "Convertible" +msgstr "Convertible" + +#: hardinfo/dmi_util.c:258 +msgid "Detachable" +msgstr "Desmontable" + +#: hardinfo/dmi_util.c:259 +msgid "IoT Gateway" +msgstr "" + +#: hardinfo/dmi_util.c:260 +msgid "Embedded PC" +msgstr "" + +#: hardinfo/dmi_util.c:261 +msgid "Mini PC" +msgstr "" + +#: hardinfo/dmi_util.c:262 +msgid "Stick PC" +msgstr "" + +#: hardinfo/dt_util.c:1179 +msgid "phandle Map" +msgstr "Mapa manejado" + +#: hardinfo/dt_util.c:1180 +msgid "Alias Map" +msgstr "Mapa de alias" + +#: hardinfo/dt_util.c:1181 +msgid "Symbol Map" +msgstr "Mapa de símbolos" #. / %d will be latest year of copyright -#: hardinfo/hardinfo.c:49 +#: hardinfo/hardinfo.c:50 #, c-format msgid "" -"Copyright (C) 2003-%d Leandro A. F. Pereira. See COPYING for details.\n" +"Copyright (C) 2003-%d L. A. F. Pereira. See COPYING for details.\n" "\n" msgstr "" -"Copyright (C) 2003-%d Leandro A. F. Pereira. Vea COPYING para más detalles.\n" +"Copyright (C) 2003-%d L. A. F. Pereira. Vea COPYING para obtener más detalles.\n" "\n" -#: hardinfo/hardinfo.c:51 +#: hardinfo/hardinfo.c:52 #, c-format msgid "" "Compile-time options:\n" @@ -38,25 +454,27 @@ msgid "" " Library prefix: %s\n" " Compiled for: %s\n" msgstr "" -"Opciones de compilado:\n" -" \"Release\" versión: %s (%s)\n" -" BinReloc habilitado: %s\n" -" Prefijo de datos: %s\n" -" Prefijo de bibliotecas: %s\n" -" Compilado en: %s\n" - -#: hardinfo/hardinfo.c:57 hardinfo/hardinfo.c:58 modules/computer.c:605 -#: modules/devices/inputdevices.c:128 modules/devices/pci.c:112 -#: modules/devices/printers.c:138 +"Opciones de compilación:\n" +" Versión de producción: %s (%s)\n" +" BinReloc habilitado: %s\n" +" Prefijo de datos: %s\n" +" Prefijo de biblioteca: %s\n" +" Compilado para: %s\n" + +#: hardinfo/hardinfo.c:58 hardinfo/hardinfo.c:59 modules/computer.c:785 +#: modules/computer/modules.c:131 modules/computer/modules.c:132 +#: modules/devices/inputdevices.c:123 modules/devices/printers.c:138 +#: modules/devices/spd-decode.c:903 msgid "Yes" msgstr "Sí" -#: hardinfo/hardinfo.c:58 modules/computer.c:605 modules/devices/pci.c:112 -#: modules/devices/printers.c:138 +#: hardinfo/hardinfo.c:59 modules/computer.c:785 modules/computer/modules.c:131 +#: modules/computer/modules.c:132 modules/devices/printers.c:138 +#: modules/devices/spd-decode.c:900 msgid "No" -msgstr "_No" +msgstr "No" -#: hardinfo/hardinfo.c:69 +#: hardinfo/hardinfo.c:70 #, c-format msgid "" "Failed to find runtime data.\n" @@ -64,12 +482,12 @@ msgid "" "• Is HardInfo correctly installed?\n" "• See if %s and %s exists and you have read permission." msgstr "" -"Falló en encontrar datos del programa.\n" +"Error al buscar los datos de ejecución.\n" "\n" "• ¿HardInfo está correctamente instalado?\n" -"• Vea si %s y %s existen y tenga accesos para lectura." +"• Vea si %s y %s existen y si tiene permiso para lectura." -#: hardinfo/hardinfo.c:76 +#: hardinfo/hardinfo.c:77 #, c-format msgid "" "Modules:\n" @@ -78,49 +496,59 @@ msgstr "" "Módulos:\n" "%-20s %-15s %-12s\n" -#: hardinfo/hardinfo.c:77 +#: hardinfo/hardinfo.c:78 msgid "File Name" msgstr "Nombre de archivo" -#: hardinfo/hardinfo.c:77 modules/computer.c:534 modules/computer.c:562 -#: modules/computer.c:630 modules/computer/languages.c:104 -#: modules/computer/modules.c:146 modules/devices/arm/processor.c:336 -#: modules/devices/ia64/processor.c:160 modules/devices/inputdevices.c:116 -#: modules/devices/pci.c:215 modules/devices/sh/processor.c:84 -#: modules/devices/x86/processor.c:455 modules/network.c:326 +#: hardinfo/hardinfo.c:78 modules/computer.c:666 modules/computer.c:694 +#: modules/computer.c:815 modules/computer/languages.c:95 +#: modules/computer/modules.c:149 modules/devices/arm/processor.c:469 +#: modules/devices/dmi.c:37 modules/devices/dmi.c:48 modules/devices/gpu.c:233 +#: modules/devices/ia64/processor.c:160 modules/devices/inputdevices.c:111 +#: modules/devices/monitors.c:399 modules/devices/monitors.c:502 +#: modules/devices/sh/processor.c:84 modules/devices/x86/processor.c:749 +#: modules/network.c:332 msgid "Name" msgstr "Nombre" -#: hardinfo/hardinfo.c:77 modules/computer.c:296 modules/computer.c:505 -#: modules/computer.c:507 modules/computer.c:595 modules/computer.c:603 -#: modules/devices/inputdevices.c:121 +#: hardinfo/hardinfo.c:78 modules/computer.c:347 modules/computer.c:572 +#: modules/computer.c:574 modules/computer.c:743 modules/computer/modules.c:151 +#: modules/devices/dmi.c:40 modules/devices/dmi.c:46 modules/devices/dmi.c:50 +#: modules/devices/dmi.c:56 modules/devices/firmware.c:105 +#: modules/devices/inputdevices.c:116 modules/devices/monitors.c:405 msgid "Version" msgstr "Versión" -#: hardinfo/hardinfo.c:124 +#: hardinfo/hardinfo.c:129 #, c-format -msgid "Unknown benchmark ``%s'' or libbenchmark.so not loaded" -msgstr "Benchmark desconocido ``%s'' o no se cargó libbenchmark.so" +msgid "Unknown benchmark ``%s'' or benchmark.so not loaded" +msgstr "Prueba de rendimiento``%s'' desconocida o no está cargado benchmark.so" -#: hardinfo/hardinfo.c:152 +#: hardinfo/hardinfo.c:159 msgid "Don't know what to do. Exiting." -msgstr "No se puede determinar que hacer. Saliendo." +msgstr "No se puede determinar qué hacer. Saliendo." + +#: hardinfo/usb_util.c:290 modules/devices/devicetree.c:91 +#: modules/devices/devicetree.c:92 modules/devices/monitors.c:407 +#: modules/devices/storage.c:246 +msgid "(None)" +msgstr "(ninguno)" -#: hardinfo/util.c:104 modules/computer/uptime.c:53 +#: hardinfo/util.c:104 modules/computer/uptime.c:54 #, c-format msgid "%d day" msgid_plural "%d days" msgstr[0] "%d día" msgstr[1] "%d días" -#: hardinfo/util.c:105 modules/computer/uptime.c:54 +#: hardinfo/util.c:105 modules/computer/uptime.c:55 #, c-format msgid "%d hour" msgid_plural "%d hours" msgstr[0] "%d hora" msgstr[1] "%d horas" -#: hardinfo/util.c:106 modules/computer/uptime.c:55 +#: hardinfo/util.c:106 modules/computer/uptime.c:56 #, c-format msgid "%d minute" msgid_plural "%d minutes" @@ -176,96 +604,123 @@ msgstr "Advertencia" msgid "Fatal Error" msgstr "Error fatal" -#: hardinfo/util.c:401 +#: hardinfo/util.c:406 msgid "creates a report and prints to standard output" msgstr "crea un reporte y lo imprime en la salida estándar" -#: hardinfo/util.c:407 -msgid "chooses a report format (text, html)" -msgstr "elige un formato para el reporte (texto, html)" +#: hardinfo/util.c:412 +msgid "chooses a report format ([text], html)" +msgstr "elige un formato de reporte ([texto], html)" -#: hardinfo/util.c:413 +#: hardinfo/util.c:418 msgid "run benchmark; requires benchmark.so to be loaded" -msgstr "correr benchmark; requiere benchmark.so para ser cargado" +msgstr "ejecutar prueba de rendimiento; requiere la carga de benchmark.so" -#: hardinfo/util.c:419 +#: hardinfo/util.c:424 +msgid "note attached to benchmark results" +msgstr "nota añadida al resultado de la prueba de rendimiento" + +#: hardinfo/util.c:430 +msgid "benchmark result format ([short], conf, shell)" +msgstr "" +"formato del resultado de la prueba de rendimiento ([corto], conf, shell)" + +#: hardinfo/util.c:436 +msgid "" +"maximum number of benchmark results to include (-1 for no limit, default is " +"10)" +msgstr "" +"número máximo de resultados de pruebas de rendimiento a incluir (-1 para" +" ilimitados, 10 " +"por defecto)" + +#: hardinfo/util.c:442 msgid "lists modules" -msgstr "lista los módulos" +msgstr "listas de módulos" -#: hardinfo/util.c:425 +#: hardinfo/util.c:448 msgid "specify module to load" msgstr "especificar módulo a cargar" -#: hardinfo/util.c:431 +#: hardinfo/util.c:454 msgid "automatically load module dependencies" msgstr "cargar automáticamente las dependencias de los módulos" -#: hardinfo/util.c:438 +#: hardinfo/util.c:461 msgid "run in XML-RPC server mode" -msgstr "correr en modo servidor XML-RPC" +msgstr "ejecutar en modo servidor XML-RPC" -#: hardinfo/util.c:445 +#: hardinfo/util.c:468 msgid "shows program version and quit" msgstr "muestra la versión del programa y sale" -#: hardinfo/util.c:450 +#: hardinfo/util.c:474 +msgid "do not run benchmarks" +msgstr "no ejecutar pruebas de rendimiento" + +#: hardinfo/util.c:480 +msgid "show all details" +msgstr "mostrar todos los detalles" + +#: hardinfo/util.c:485 msgid "- System Profiler and Benchmark tool" -msgstr "- Analizador de sistema y herramienta de benchmark" +msgstr "- Analizador de sistema y herramienta de prueba de rendimiento" -#: hardinfo/util.c:460 +#: hardinfo/util.c:495 #, c-format msgid "" "Unrecognized arguments.\n" "Try ``%s --help'' for more information.\n" msgstr "" "Argumentos no reconocidos.\n" -"Intente ``%s --help'' para más información.\n" +"Pruebe ``%s --help'' para obtener más información.\n" -#: hardinfo/util.c:526 -#, c-format -msgid "Couldn't find a Web browser to open URL %s." -msgstr "No se pudo encontrar un navegador Web para abrir la URL %s." - -#: hardinfo/util.c:875 +#: hardinfo/util.c:903 #, c-format msgid "Module \"%s\" depends on module \"%s\", load it?" -msgstr "El módulo \"%s\" depende del módulo \"%s\", ¿desea cargarlo?" +msgstr "El módulo «%s» depende del módulo «%s»; ¿desea cargarlo?" -#: hardinfo/util.c:898 +#: hardinfo/util.c:926 #, c-format msgid "Module \"%s\" depends on module \"%s\"." -msgstr "El módulo \"%s\" depende del módulo \"%s\"." +msgstr "El módulo «%s» depende del módulo «%s»." -#: hardinfo/util.c:943 +#: hardinfo/util.c:971 #, c-format msgid "No module could be loaded. Check permissions on \"%s\" and try again." msgstr "" -"No se puede cargar ningún módulo. Verifique los permisos en \"%s\" y pruebe " +"No se puede cargar ningún módulo. Verifique los permisos en «%s» y pruebe " "de nuevo." -#: hardinfo/util.c:947 +#: hardinfo/util.c:975 msgid "" "No module could be loaded. Please use hardinfo -l to list all available " "modules and try again with a valid module list." msgstr "" -"No se pudo cargar ningún módulo. Por favor use hardinfo -l para listar " -"todoslos módulos disponibles e intente de nuevo con una lista válida de " +"No se puede cargar ningún módulo. Por favor, use hardinfo -l para listar " +"todos los módulos disponibles y pruebe de nuevo con una lista válida de " "módulos." -#: hardinfo/util.c:1024 +#: hardinfo/util.c:1030 #, c-format msgid "Scanning: %s..." msgstr "Escaneando: %s..." -#: hardinfo/util.c:1034 shell/shell.c:301 shell/shell.c:760 shell/shell.c:1795 -#: modules/benchmark.c:449 modules/benchmark.c:457 +#: hardinfo/util.c:1040 shell/shell.c:310 shell/shell.c:795 shell/shell.c:1962 +#: modules/benchmark.c:583 modules/benchmark.c:591 msgid "Done." msgstr "Hecho." -#: shell/callbacks.c:117 -#, c-format -msgid "%s Module" -msgstr "%s módulo" +#: hardinfo/vendor.c:440 modules/computer.c:573 modules/computer.c:765 +#: modules/computer/os.c:79 modules/computer/os.c:263 modules/computer/os.c:300 +#: modules/computer/os.c:499 modules/computer/os.c:569 modules/devices.c:359 +#: modules/devices.c:505 modules/devices/printers.c:99 +#: modules/devices/printers.c:106 modules/devices/printers.c:116 +#: modules/devices/printers.c:131 modules/devices/printers.c:140 +#: modules/devices/printers.c:243 modules/devices/spd-decode.c:312 +#: modules/devices/usb.c:146 +msgid "Unknown" +msgstr "Desconocido" #: shell/callbacks.c:128 #, c-format @@ -279,7 +734,7 @@ msgstr "" #: shell/callbacks.c:142 #, c-format msgid "No about information is associated with the %s module." -msgstr "No hay información \"acerca de\" asociada al módulo %s." +msgstr "No hay información «acerca de» asociada al módulo %s." #: shell/callbacks.c:158 msgid "Author:" @@ -287,67 +742,70 @@ msgstr "Autor:" #: shell/callbacks.c:161 msgid "Contributors:" -msgstr "Contribuyentes:" +msgstr "Colaboradores:" -#: shell/callbacks.c:166 +#: shell/callbacks.c:167 msgid "Based on work by:" msgstr "Basado en el trabajo de:" -#: shell/callbacks.c:167 +#: shell/callbacks.c:168 msgid "MD5 implementation by Colin Plumb (see md5.c for details)" -msgstr "Implementación de MD5 por Colin Plumb (ver md5.c para detalles)" +msgstr "Implementación de MD5 por Colin Plumb (ver md5.c para los detalles)" -#: shell/callbacks.c:168 +#: shell/callbacks.c:169 msgid "SHA1 implementation by Steve Reid (see sha1.c for details)" -msgstr "Implementación de SHA1 por Steve Reid (ver sha1.c para detalles)" +msgstr "Implementación de SHA1 por Steve Reid (ver sha1.c para los detalles)" -#: shell/callbacks.c:169 +#: shell/callbacks.c:170 msgid "Blowfish implementation by Paul Kocher (see blowfich.c for details)" msgstr "" -"Implementación de Blowfish por Paul Kocher (ver blowfich.c para detalles)" +"Implementación de Blowfish por Paul Kocher (ver blowfich.c para los detalles)" -#: shell/callbacks.c:170 +#: shell/callbacks.c:171 msgid "Raytracing benchmark by John Walker (see fbench.c for details)" msgstr "" -"Benchmark de trazado de rayos por John Walker (ver fbench.c para detalles)" +"Prueba de rendimiento de trazado de rayos por John Walker (ver fbench.c para" +" los detalles)" -#: shell/callbacks.c:171 +#: shell/callbacks.c:172 msgid "FFT benchmark by Scott Robert Ladd (see fftbench.c for details)" -msgstr "Benchmark de FFT por Scott Robert Ladd (ver fftbench.c para detalles)" +msgstr "" +"Prueba de rendimiento de FFT por Scott Robert Ladd (ver fftbench.c para los" +" detalles)" -#: shell/callbacks.c:172 +#: shell/callbacks.c:173 msgid "Some code partly based on x86cpucaps by Osamu Kayasono" msgstr "Parte del código parcialmente basado en x86cpucaps por Osamu Kayasono" -#: shell/callbacks.c:173 +#: shell/callbacks.c:174 msgid "Vendor list based on GtkSysInfo by Pissens Sebastien" msgstr "Lista de proveedores basada en GtkSysInfo por Pissens Sebastien" -#: shell/callbacks.c:174 +#: shell/callbacks.c:175 msgid "DMI support based on code by Stewart Adam" msgstr "Soporte DMI basado en código de Stewart Adam" -#: shell/callbacks.c:175 +#: shell/callbacks.c:176 msgid "SCSI support based on code by Pascal F. Martin" msgstr "Soporte SCSI basado en código de Pascal F. Martin" -#: shell/callbacks.c:180 +#: shell/callbacks.c:181 msgid "Tango Project" msgstr "Proyecto Tango" -#: shell/callbacks.c:181 +#: shell/callbacks.c:182 msgid "The GNOME Project" msgstr "El proyecto GNOME" -#: shell/callbacks.c:182 +#: shell/callbacks.c:183 msgid "VMWare, Inc. (USB icon from VMWare Workstation 6)" msgstr "VMWare, Inc. (icono USB de VMWare Workstation 6)" -#: shell/callbacks.c:200 +#: shell/callbacks.c:201 msgid "System information and benchmark tool" -msgstr "Herramienta de Informacion y Pruebas del Sistema" +msgstr "Herramienta de información y pruebas de rendimiento del sistema" -#: shell/callbacks.c:205 +#: shell/callbacks.c:206 msgid "" "HardInfo is free software; you can redistribute it and/or modify it under " "the terms of the GNU General Public License as published by the Free " @@ -363,168 +821,180 @@ msgid "" "Franklin St, Fifth Floor, Boston, MA 02110-1301 USA" msgstr "" -#: shell/callbacks.c:220 +#: shell/callbacks.c:221 msgid "translator-credits" -msgstr "" +msgstr "créditos de traducción" -#: shell/menu.c:35 +#: shell/menu.c:43 msgid "_Information" msgstr "_Información" -#: shell/menu.c:36 +#: shell/menu.c:44 msgid "_Remote" msgstr "_Remoto" -#: shell/menu.c:37 +#: shell/menu.c:45 msgid "_View" msgstr "_Ver" -#: shell/menu.c:38 +#: shell/menu.c:46 msgid "_Help" msgstr "_Ayuda" -#: shell/menu.c:39 +#: shell/menu.c:47 msgid "About _Modules" msgstr "Acerca de los _módulos" -#: shell/menu.c:43 +#: shell/menu.c:51 msgid "Generate _Report" msgstr "Generar _reporte" -#: shell/menu.c:48 +#: shell/menu.c:56 msgid "_Network Updater..." msgstr "_Actualizador por red..." -#: shell/menu.c:53 +#: shell/menu.c:61 msgid "_Open..." msgstr "_Abrir..." -#: shell/menu.c:58 +#: shell/menu.c:66 msgid "_Copy to Clipboard" msgstr "_Copiar al portapapeles" -#: shell/menu.c:59 +#: shell/menu.c:67 msgid "Copy to clipboard" msgstr "Copiar al portapapeles" -#: shell/menu.c:63 +#: shell/menu.c:71 msgid "_Refresh" -msgstr "_Refrescar" +msgstr "_Actualizar" -#: shell/menu.c:68 +#: shell/menu.c:76 msgid "_Open HardInfo Web Site" msgstr "_Abrir sitio web de Hardinfo" -#: shell/menu.c:73 +#: shell/menu.c:81 msgid "_Report bug" msgstr "_Reportar un error" -#: shell/menu.c:78 +#: shell/menu.c:86 msgid "_About HardInfo" msgstr "_Acerca de Hardinfo" -#: shell/menu.c:79 +#: shell/menu.c:87 msgid "Displays program version information" msgstr "Muestra la información de versión del programa" -#: shell/menu.c:83 +#: shell/menu.c:91 msgid "_Quit" msgstr "_Salir" -#: shell/menu.c:90 +#: shell/menu.c:98 msgid "_Side Pane" msgstr "_Panel lateral" -#: shell/menu.c:91 +#: shell/menu.c:99 msgid "Toggles side pane visibility" -msgstr "Cambia la visibilidad del panel lateral" +msgstr "Conmuta la visibilidad del panel lateral" -#: shell/menu.c:94 +#: shell/menu.c:102 msgid "_Toolbar" msgstr "_Barra de herramientas" -#: shell/report.c:494 shell/report.c:502 +#: shell/report.c:769 shell/report.c:777 msgid "Save File" msgstr "Guardar archivo" -#: shell/report.c:629 +#: shell/report.c:772 shell/report.c:1243 shell/syncmanager.c:748 +msgid "_Cancel" +msgstr "_Cancelar" + +#: shell/report.c:774 +msgid "_Save" +msgstr "Guardar" + +#: shell/report.c:943 msgid "Cannot create ReportContext. Programming bug?" msgstr "No se puede crear ReportContext. ¿Error del programa?" -#: shell/report.c:648 +#: shell/report.c:962 msgid "Open the report with your web browser?" msgstr "¿Abrir el reporte en el navegador web?" -#: shell/report.c:682 +#: shell/report.c:965 +msgid "_No" +msgstr "_No" + +#: shell/report.c:966 +msgid "_Open" +msgstr "Abrir" + +#: shell/report.c:996 msgid "Generating report..." msgstr "Generando reporte..." -#: shell/report.c:692 +#: shell/report.c:1006 msgid "Report saved." msgstr "Reporte guardado." -#: shell/report.c:694 +#: shell/report.c:1008 msgid "Error while creating the report." -msgstr "Error creando el reporte." +msgstr "Error al crear el reporte." -#: shell/report.c:796 +#: shell/report.c:1110 msgid "Generate Report" msgstr "Generar reporte" -#: shell/report.c:821 +#: shell/report.c:1135 msgid "" "Generate Report\n" "Please choose the information that you wish to view in your report:" msgstr "" "Generar reporte\n" -"Por favor elija la información que desea ver en el reporte:" +"Por favor, elija la información que desea ver en el reporte:" -#: shell/report.c:893 +#: shell/report.c:1207 msgid "Select _None" msgstr "_Deseleccionar todo" -#: shell/report.c:904 +#: shell/report.c:1218 msgid "Select _All" msgstr "_Seleccionar todo" -#: shell/report.c:929 shell/syncmanager.c:748 -msgid "_Cancel" -msgstr "_Cancelar" - -#: shell/report.c:939 +#: shell/report.c:1253 msgid "_Generate" msgstr "_Generar" -#: shell/shell.c:402 +#: shell/shell.c:407 #, c-format msgid "%s - System Information" msgstr "%s - Información del sistema" -#: shell/shell.c:407 +#: shell/shell.c:412 msgid "System Information" msgstr "Información del sistema" -#: shell/shell.c:747 +#: shell/shell.c:782 msgid "Loading modules..." msgstr "Cargando módulos..." -#: shell/shell.c:1660 +#: shell/shell.c:1828 #, c-format msgid "%s → Summary" msgstr "%s → Resumen" -#: shell/shell.c:1769 +#: shell/shell.c:1936 msgid "Updating..." msgstr "Actualizando..." #: shell/syncmanager.c:69 msgid "" "Synchronize with Central Database\n" -"The following information may be synchronized with the HardInfo central " +"The following information may be synchronized\nwith the HardInfo central " "database." msgstr "" -"Sincronizar con base de datos central\n" -"La siguiente información puede ser sincronizada con la base de datos central " +"Sincronizar con la base de datos central\n" +"La siguiente información puede ser sincronizada\ncon la base de datos central " "de Hardinfo." #: shell/syncmanager.c:72 @@ -533,7 +1003,7 @@ msgid "" "This may take some time." msgstr "" "Sincronizando\n" -"Esto puede tomar algún tiempo." +"Esto puede tardar un poco." #: shell/syncmanager.c:132 msgid "" @@ -549,7 +1019,7 @@ msgstr "%s (error #%d)" #: shell/syncmanager.c:170 shell/syncmanager.c:198 msgid "Could not parse XML-RPC response" -msgstr "No se pudo procesar la respuesta XML-RPC" +msgstr "No se ha podido procesar la respuesta XML-RPC" #: shell/syncmanager.c:280 #, c-format @@ -574,7 +1044,7 @@ msgstr "(cancelado)" #: shell/syncmanager.c:510 msgid "(failed)" -msgstr "(falló)" +msgstr "(error)" #: shell/syncmanager.c:521 #, c-format @@ -584,7 +1054,7 @@ msgid "" "\n" "Details: %s" msgstr "" -"Falló realizando \"%s\". Por favor reporte el error si este problema " +"Error realizando «%s». Por favor, reporte el error si este problema " "persiste. (Use la opción Ayuda→Reportar error.)\n" "\n" "Detalles: %s" @@ -595,7 +1065,7 @@ msgid "" "Failed while performing \"%s\". Please file a bug report if this problem " "persists. (Use the Help→Report bug option.)" msgstr "" -"Falló realizando \"%s\". Por favor reporte el error si este problema " +"Error realizando «%s». Por favor, reporte el error si este problema " "persiste. (Use la opción Ayuda→Reportar error.)" #: shell/syncmanager.c:658 @@ -606,603 +1076,929 @@ msgstr "Actualizador por red" msgid "_Synchronize" msgstr "_Sincronizar" -#: modules/benchmark.c:52 -msgid "CPU Blowfish" -msgstr "" +#: modules/benchmark/benches.c:82 +msgid "CPU Blowfish (Single-thread)" +msgstr "CPU Blowfish (un hilo)" -#: modules/benchmark.c:53 +#: modules/benchmark/benches.c:84 +msgid "CPU Blowfish (Multi-thread)" +msgstr "CPU Blowfish (multihilo)" + +#: modules/benchmark/benches.c:86 +msgid "CPU Blowfish (Multi-core)" +msgstr "CPU Blowfish (multinúcleo)" + +#: modules/benchmark/benches.c:88 +msgid "CPU Zlib" +msgstr "CPU Zlib" + +#: modules/benchmark/benches.c:90 msgid "CPU CryptoHash" msgstr "" -#: modules/benchmark.c:54 +#: modules/benchmark/benches.c:92 msgid "CPU Fibonacci" msgstr "" -#: modules/benchmark.c:55 +#: modules/benchmark/benches.c:94 msgid "CPU N-Queens" msgstr "CPU N-Reinas" -#: modules/benchmark.c:56 -msgid "CPU Zlib" -msgstr "CPU Zlib" - -#: modules/benchmark.c:57 +#: modules/benchmark/benches.c:96 msgid "FPU FFT" msgstr "FPU FFT" -#: modules/benchmark.c:58 +#: modules/benchmark/benches.c:98 msgid "FPU Raytracing" msgstr "FPU trazado de rayos" -#: modules/benchmark.c:60 +#: modules/benchmark/benches.c:100 +msgid "SysBench CPU (Single-thread)" +msgstr "SysBench de CPU (un hilo)" + +#: modules/benchmark/benches.c:102 +msgid "SysBench CPU (Multi-thread)" +msgstr "SysBench de CPU (multihilo)" + +#: modules/benchmark/benches.c:104 +msgid "SysBench CPU (Four threads)" +msgstr "SysBench de CPU (cuatro hilos)" + +#: modules/benchmark/benches.c:106 +msgid "SysBench Memory (Single-thread)" +msgstr "SysBench de memoria (un hilo)" + +#: modules/benchmark/benches.c:108 +msgid "SysBench Memory (Two threads)" +msgstr "SysBench de memoria (dos hilos)" + +#: modules/benchmark/benches.c:110 +msgid "SysBench Memory" +msgstr "SysBench de memoria" + +#: modules/benchmark/benches.c:113 msgid "GPU Drawing" msgstr "GPU dibujado" -#: modules/benchmark.c:239 modules/benchmark.c:255 -msgid "CPU Config" +#: modules/benchmark/benches.c:126 +msgid "" +"Alexey Kopytov's sysbench is required.\n" +"Results in events/second. Higher is better." msgstr "" +"Se requiere sysbench de Alexey Kopytov.\n" +"Resultados en eventos/segundo. Más alto es mejor." -#: modules/benchmark.c:239 modules/benchmark.c:255 +#: modules/benchmark/benches.c:132 +msgid "" +"Alexey Kopytov's sysbench is required.\n" +"Results in MiB/second. Higher is better." +msgstr "" +"Se requiere sysbench de Alexey Kopytov.\n" +"Resultados en MiB/segundo. Más alto es mejor." + +#: modules/benchmark/benches.c:136 +msgid "Results in MiB/second. Higher is better." +msgstr "Resultados en MiB/segundo. Más alto es mejor." + +#: modules/benchmark/benches.c:143 +msgid "Results in HIMarks. Higher is better." +msgstr "Resultados en HIMarks. Más alto es mejor." + +#: modules/benchmark/benches.c:149 +msgid "Results in seconds. Lower is better." +msgstr "Resultados en segundos. Más bajo es mejor." + +#. /or modify +#. * it under the terms of the GNU General Public License as published by +#. * the Free Software Foundation, version 2. +#. * +#. * This program is distributed in the hope that it will be useful, +#. * but WITHOUT ANY WARRANTY; without even the implied warranty of +#. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +#. * GNU General Public License for more details. +#. * +#. * You should have received a copy of the GNU General Public License +#. * along with this program; if not, write to the Free Software +#. * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +#. +#. / Used for an unknown value. Having it in only one place cleans up the .po line references +#: modules/benchmark/bench_results.c:22 modules/computer.c:41 +#: modules/computer/display.c:41 modules/computer/display.c:58 +#: modules/computer/os.c:286 modules/computer/os.c:346 modules/devices.c:488 +#: modules/devices/dmi_memory.c:52 modules/devices/dmi_memory.c:53 +#: modules/devices/dmi_memory.c:579 modules/devices/dmi_memory.c:719 +#: modules/devices/dmi_memory.c:855 modules/devices/gpu.c:42 +#: modules/devices/gpu.c:58 modules/devices/gpu.c:112 modules/devices/gpu.c:120 +#: modules/devices/gpu.c:154 modules/devices/gpu.c:155 +#: modules/devices/gpu.c:176 modules/devices/monitors.c:27 +#: modules/devices/monitors.c:28 modules/devices/monitors.c:153 +#: modules/devices/monitors.c:162 modules/devices/pci.c:25 +#: modules/devices/pci.c:135 modules/devices/pci.c:136 +#: modules/devices/spd-decode.c:306 modules/devices/spd-decode.c:307 +#: modules/devices/spd-decode.c:310 modules/devices/spd-decode.c:311 +#: modules/devices/spd-decode.c:914 modules/devices/spd-decode.c:915 +#: modules/devices/storage.c:247 modules/devices/storage.c:309 +#: modules/devices/usb.c:28 modules/network/net.c:437 includes/cpu_util.h:11 +msgid "(Unknown)" +msgstr "(desconocido)" + +#: modules/benchmark/bench_results.c:49 modules/benchmark/bench_results.c:330 +#: modules/devices/alpha/processor.c:90 modules/devices/arm/processor.c:290 +#: modules/devices/arm/processor.c:303 modules/devices/arm/processor.c:345 +#: modules/devices/arm/processor.c:500 modules/devices.c:325 +#: modules/devices.c:333 modules/devices.c:361 modules/devices/gpu.c:115 +#: modules/devices/gpu.c:117 modules/devices/gpu.c:123 +#: modules/devices/gpu.c:125 modules/devices/gpu.c:179 +#: modules/devices/gpu.c:181 modules/devices/ia64/processor.c:167 +#: modules/devices/ia64/processor.c:196 modules/devices/m68k/processor.c:87 +#: modules/devices/mips/processor.c:77 modules/devices/parisc/processor.c:158 +#: modules/devices/parisc/processor.c:191 modules/devices/ppc/processor.c:160 +#: modules/devices/ppc/processor.c:187 modules/devices/riscv/processor.c:186 +#: modules/devices/riscv/processor.c:214 modules/devices/s390/processor.c:160 +#: modules/devices/sh/processor.c:87 modules/devices/sh/processor.c:88 +#: modules/devices/sh/processor.c:89 modules/devices/x86/processor.c:318 +#: modules/devices/x86/processor.c:331 modules/devices/x86/processor.c:657 +#: modules/devices/x86/processor.c:780 +msgid "MHz" +msgstr "MHz" + +#: modules/benchmark/bench_results.c:396 modules/benchmark/bench_results.c:495 +msgid "kiB" +msgstr "" + +#: modules/benchmark/bench_results.c:403 modules/benchmark/bench_results.c:453 +#, c-format +msgid "%d-bit" +msgstr "" + +#: modules/benchmark/bench_results.c:422 modules/benchmark/bench_results.c:477 +msgid "Benchmark Result" +msgstr "Resultado de la prueba de rendimiento" + +#: modules/benchmark/bench_results.c:423 modules/benchmark/bench_results.c:479 +msgid "Threads" +msgstr "Hilos" + +#: modules/benchmark/bench_results.c:424 modules/benchmark/bench_results.c:481 +msgid "Elapsed Time" +msgstr "Tiempo transcurrido" + +#: modules/benchmark/bench_results.c:424 modules/benchmark/bench_results.c:481 +msgid "seconds" +msgstr "segundos" + +#: modules/benchmark/bench_results.c:425 modules/computer/languages.c:101 +#: modules/devices/arm/processor.c:355 modules/devices/gpu.c:147 +#: modules/devices/ia64/processor.c:166 modules/devices/pci.c:132 +#: modules/devices/ppc/processor.c:159 +msgid "Revision" +msgstr "Revisión" + +#: modules/benchmark/bench_results.c:426 modules/benchmark/bench_results.c:482 +msgid "Extra Information" +msgstr "Información adicional" + +#: modules/benchmark/bench_results.c:427 modules/benchmark/bench_results.c:483 +msgid "User Note" +msgstr "Nota de usuario" + +#: modules/benchmark/bench_results.c:429 modules/benchmark/bench_results.c:485 +msgid "Note" +msgstr "Nota" + +#: modules/benchmark/bench_results.c:430 modules/benchmark/bench_results.c:486 +msgid "" +"This result is from an old version of HardInfo. Results might not be " +"comparable to current version. Some details are missing." +msgstr "" +"El resultado es de una versión antigua de HardInfo. Los resultados pueden " +"no ser comparables con la versión actual. Faltan algunos detalles." + +#: modules/benchmark/bench_results.c:431 modules/benchmark/bench_results.c:487 +#: modules/devices/devicetree/pmac_data.c:81 modules/devices/sh/processor.c:85 +msgid "Machine" +msgstr "Máquina" + +#: modules/benchmark/bench_results.c:432 modules/benchmark/bench_results.c:488 +#: modules/devices/devicetree.c:208 modules/devices/dmi.c:47 +msgid "Board" +msgstr "Tarjeta" + +#: modules/benchmark/bench_results.c:433 modules/benchmark/bench_results.c:489 +msgid "CPU Name" +msgstr "Nombre de la CPU" + +#: modules/benchmark/bench_results.c:434 modules/benchmark/bench_results.c:490 +msgid "CPU Description" +msgstr "Descripción de la CPU" + +#: modules/benchmark/bench_results.c:435 modules/benchmark/bench_results.c:491 +#: modules/benchmark.c:442 +msgid "CPU Config" +msgstr "Características de la CPU" + +#: modules/benchmark/bench_results.c:436 modules/benchmark/bench_results.c:492 +msgid "Threads Available" +msgstr "Hilos disponibles" + +#: modules/benchmark/bench_results.c:437 modules/benchmark/bench_results.c:493 +msgid "GPU" +msgstr "" + +#: modules/benchmark/bench_results.c:438 modules/benchmark/bench_results.c:494 +#: modules/computer.c:542 +msgid "OpenGL Renderer" +msgstr "Renderizador de OpenGL" + +#: modules/benchmark/bench_results.c:439 modules/benchmark/bench_results.c:495 +#: modules/computer.c:123 modules/computer.c:531 modules/computer.c:1000 +#: modules/devices/gpu.c:150 +msgid "Memory" +msgstr "Memoria" + +#: modules/benchmark/bench_results.c:440 modules/benchmark/bench_results.c:496 +msgid "Pointer Size" +msgstr "Tamaño del puntero" + +#: modules/benchmark/bench_results.c:478 +msgid "Benchmark" +msgstr "Prueba de rendimiento" + +#: modules/benchmark/bench_results.c:480 modules/devices/dmi_memory.c:879 +#: modules/devices/firmware.c:246 modules/devices/monitors.c:492 +#: modules/devices/x86/processor.c:691 +msgid "Result" +msgstr "Resultado" + +#: modules/benchmark/bench_results.c:498 +msgid "Handles" +msgstr "" + +#: modules/benchmark/bench_results.c:499 +msgid "mid" +msgstr "" + +#: modules/benchmark/bench_results.c:500 +msgid "cfg_val" +msgstr "" + +#: modules/benchmark.c:442 msgid "Results" msgstr "Resultados" -#: modules/benchmark.c:239 modules/benchmark.c:255 modules/computer.c:751 -#: modules/devices/sparc/processor.c:75 +#: modules/benchmark.c:442 modules/devices/sparc/processor.c:75 msgid "CPU" msgstr "CPU" -#: modules/benchmark.c:381 +#: modules/benchmark.c:513 #, c-format msgid "Benchmarking: %s." -msgstr "Ejecutando benchmark: %s." +msgstr "Ejecutando prueba de rendimiento: %s." -#: modules/benchmark.c:395 -msgid "Benchmarking. Please do not move your mouse or press any keys." -msgstr "Ejecutando benchmarks. Por favor no mueva el mouse ni use el teclado." +#: modules/benchmark.c:527 +msgid "Benchmarking. Please do not move your mouse\nor press any keys." +msgstr "" +"Ejecutando prueba de rendimiento.\nPor favor, no mueva el ratón ni pulse" +" ninguna tecla." -#: modules/benchmark.c:399 +#: modules/benchmark.c:530 msgid "Cancel" msgstr "Cancelar" -#: modules/benchmark.c:536 -msgid "Results in MiB/second. Higher is better." -msgstr "Resultados en MiB/segundo. Más alto es mejor." - -#: modules/benchmark.c:540 -msgid "Results in HIMarks. Higher is better." -msgstr "Resultados en HIMarks. Más alto es mejor." - -#: modules/benchmark.c:547 -msgid "Results in seconds. Lower is better." -msgstr "Resultados en segundos. Más bajo es mejor." - -#: modules/benchmark.c:555 +#: modules/benchmark.c:601 msgid "Benchmarks" -msgstr "Benchmarks" +msgstr "Pruebas de rendimiento" -#: modules/benchmark.c:573 +#: modules/benchmark.c:619 msgid "Perform tasks and compare with other systems" msgstr "Realizar tareas y comparar con otros sistemas" -#: modules/benchmark.c:663 +#: modules/benchmark.c:730 msgid "Send benchmark results" -msgstr "Enviar resultados de los benchmark" +msgstr "Enviar resultados de las pruebas de rendimiento" -#: modules/benchmark.c:668 +#: modules/benchmark.c:735 msgid "Receive benchmark results" -msgstr "Recibir resultados de los benchmark" +msgstr "Recibir resultados de las pruebas de rendimiento" -#: modules/computer/alsa.c:26 modules/computer.c:489 +#: modules/computer/alsa.c:26 modules/computer.c:546 msgid "Audio Devices" -msgstr "Dispositivos de audio" +msgstr "Dispositivos de sonido" #: modules/computer/alsa.c:34 msgid "Audio Adapter" -msgstr "Adaptador de audio" - -#: modules/computer/boots.c:33 modules/computer.c:73 modules/computer.c:546 -msgid "Boots" -msgstr "Arranques" +msgstr "Adaptador de sonido" -#: modules/computer.c:70 +#: modules/computer.c:80 modules/devices/firmware.c:104 msgid "Summary" msgstr "Resumen" -#: modules/computer.c:71 modules/computer.c:476 modules/computer.c:750 +#: modules/computer.c:81 modules/computer.c:534 modules/computer.c:999 msgid "Operating System" msgstr "Sistema operativo" -#: modules/computer.c:72 +#: modules/computer.c:82 +msgid "Security" +msgstr "Seguridad" + +#: modules/computer.c:83 modules/devices/gpu.c:155 modules/devices/pci.c:136 msgid "Kernel Modules" msgstr "Módulos del kernel" -#: modules/computer.c:74 +#: modules/computer.c:84 modules/computer.c:678 +msgid "Boots" +msgstr "Arranques" + +#: modules/computer.c:85 msgid "Languages" msgstr "Idiomas" -#: modules/computer.c:75 +#: modules/computer.c:86 +msgid "Memory Usage" +msgstr "Uso de memoria" + +#: modules/computer.c:87 msgid "Filesystems" msgstr "Sistemas de archivos" -#: modules/computer.c:76 modules/computer.c:481 modules/computer.c:590 +#: modules/computer.c:88 modules/computer.c:539 msgid "Display" msgstr "Pantalla" -#: modules/computer.c:77 modules/computer/environment.c:32 +#: modules/computer.c:89 modules/computer/environment.c:32 msgid "Environment Variables" msgstr "Variables de entorno" -#: modules/computer.c:79 +#: modules/computer.c:91 msgid "Development" msgstr "Desarrollo" -#: modules/computer.c:81 modules/computer.c:617 +#: modules/computer.c:93 modules/computer.c:802 msgid "Users" msgstr "Usuarios" -#: modules/computer.c:82 +#: modules/computer.c:94 msgid "Groups" msgstr "Grupos" -#: modules/computer.c:104 modules/computer.c:473 modules/devices.c:96 -#: modules/devices/pci.c:149 -msgid "Memory" -msgstr "Memoria" - -#: modules/computer.c:106 +#: modules/computer.c:125 #, c-format msgid "%dMB (%dMB used)" msgstr "%dMB (%dMB usados)" -#: modules/computer.c:108 modules/computer.c:520 +#: modules/computer.c:127 modules/computer.c:594 msgid "Uptime" -msgstr "Activo" +msgstr "Tiempo activo" -#: modules/computer.c:110 modules/computer.c:478 +#: modules/computer.c:129 modules/computer.c:536 msgid "Date/Time" msgstr "Fecha/Hora" -#: modules/computer.c:115 modules/computer.c:521 +#: modules/computer.c:134 modules/computer.c:595 msgid "Load Average" msgstr "Promedio de carga" -#: modules/computer.c:117 modules/computer.c:522 -msgid "Available entropy in /dev/random" -msgstr "Entropía disponible en /dev/random" - -#: modules/computer.c:203 +#: modules/computer.c:247 msgid "Scripting Languages" msgstr "Lenguajes de scripting" -#: modules/computer.c:204 +#: modules/computer.c:248 msgid "Gambas3 (gbr3)" msgstr "" -#: modules/computer.c:205 -msgid "Python" +#: modules/computer.c:249 +msgid "Python (default)" msgstr "" -#: modules/computer.c:206 +#: modules/computer.c:250 msgid "Python2" msgstr "" -#: modules/computer.c:207 +#: modules/computer.c:251 msgid "Python3" msgstr "" -#: modules/computer.c:208 +#: modules/computer.c:252 msgid "Perl" msgstr "" -#: modules/computer.c:209 +#: modules/computer.c:253 msgid "Perl6 (VM)" msgstr "" -#: modules/computer.c:210 +#: modules/computer.c:254 msgid "Perl6" msgstr "" -#: modules/computer.c:211 +#: modules/computer.c:255 msgid "PHP" msgstr "" -#: modules/computer.c:212 +#: modules/computer.c:256 msgid "Ruby" msgstr "" -#: modules/computer.c:213 +#: modules/computer.c:257 msgid "Bash" msgstr "" -#: modules/computer.c:214 +#: modules/computer.c:258 +msgid "JavaScript (Node.js)" +msgstr "" + +#: modules/computer.c:259 +msgid "awk" +msgstr "" + +#: modules/computer.c:260 msgid "Compilers" msgstr "Compiladores" -#: modules/computer.c:215 +#: modules/computer.c:261 msgid "C (GCC)" msgstr "" -#: modules/computer.c:216 +#: modules/computer.c:262 msgid "C (Clang)" msgstr "" -#: modules/computer.c:217 +#: modules/computer.c:263 msgid "D (dmd)" msgstr "" -#: modules/computer.c:218 +#: modules/computer.c:264 msgid "Gambas3 (gbc3)" msgstr "" -#: modules/computer.c:219 +#: modules/computer.c:265 msgid "Java" msgstr "" -#: modules/computer.c:220 -msgid "CSharp (Mono, old)" -msgstr "CSharp (Mono, antiguo)" - -#: modules/computer.c:221 -msgid "CSharp (Mono)" +#: modules/computer.c:266 +msgid "C♯ (mcs)" msgstr "" -#: modules/computer.c:222 +#: modules/computer.c:267 msgid "Vala" msgstr "" -#: modules/computer.c:223 +#: modules/computer.c:268 msgid "Haskell (GHC)" msgstr "" -#: modules/computer.c:224 +#: modules/computer.c:269 msgid "FreePascal" msgstr "" -#: modules/computer.c:225 +#: modules/computer.c:270 msgid "Go" msgstr "" -#: modules/computer.c:226 +#: modules/computer.c:271 +msgid "Rust" +msgstr "" + +#: modules/computer.c:272 msgid "Tools" msgstr "Herramientas" -#: modules/computer.c:227 +#: modules/computer.c:273 msgid "make" msgstr "" -#: modules/computer.c:228 +#: modules/computer.c:274 +msgid "ninja" +msgstr "" + +#: modules/computer.c:275 msgid "GDB" msgstr "" -#: modules/computer.c:229 +#: modules/computer.c:276 +msgid "LLDB" +msgstr "" + +#: modules/computer.c:277 msgid "strace" msgstr "" -#: modules/computer.c:230 +#: modules/computer.c:278 msgid "valgrind" msgstr "" -#: modules/computer.c:231 +#: modules/computer.c:279 msgid "QMake" msgstr "" -#: modules/computer.c:232 +#: modules/computer.c:280 msgid "CMake" msgstr "" -#: modules/computer.c:233 +#: modules/computer.c:281 msgid "Gambas3 IDE" msgstr "" -#: modules/computer.c:274 +#: modules/computer.c:282 +msgid "Radare2" +msgstr "" + +#: modules/computer.c:283 +msgid "ltrace" +msgstr "" + +#: modules/computer.c:324 msgid "Not found" msgstr "No encontrado" -#: modules/computer.c:279 +#: modules/computer.c:329 #, c-format msgid "Detecting version: %s" msgstr "Detectando versión: %s" -#: modules/computer.c:296 +#: modules/computer.c:347 msgid "Program" msgstr "Programa" -#: modules/computer.c:308 -msgid "Invalid chassis type (0)" -msgstr "Clasificación maquina invalida (0)" - -#: modules/computer.c:309 modules/computer.c:310 -msgid "Unknown chassis type" -msgstr "Clasificación mauqina desconocida" - -#: modules/computer.c:311 -msgid "Desktop" -msgstr "PC Escritorio" - -#: modules/computer.c:312 -msgid "Low-profile Desktop" -msgstr "PC economico" - -#: modules/computer.c:313 -msgid "Pizza Box" -msgstr "PC caja pizza" - -#: modules/computer.c:314 -msgid "Mini Tower" -msgstr "Torre mediana" - -#: modules/computer.c:315 -msgid "Tower" -msgstr "Torreta" - -#: modules/computer.c:316 -msgid "Portable" -msgstr "Portable" - -#: modules/computer.c:317 modules/computer.c:341 modules/computer.c:350 -#: modules/computer.c:372 -msgid "Laptop" -msgstr "Portatil" - -#: modules/computer.c:318 -msgid "Notebook" -msgstr "Mini portatil" - -#: modules/computer.c:319 -msgid "Handheld" -msgstr "Mini bolsillo" - -#: modules/computer.c:320 -msgid "Docking Station" -msgstr "Estacion fija" - -#: modules/computer.c:321 -msgid "All-in-one" -msgstr "All in one" - -#: modules/computer.c:322 -msgid "Subnotebook" -msgstr "Subportátil" - -#: modules/computer.c:323 -msgid "Space-saving" -msgstr "PC Espacio-pequeño" +#: modules/computer.c:365 +msgid "Field" +msgstr "Campo" -#: modules/computer.c:324 -msgid "Lunch Box" -msgstr "PC caja" +#: modules/computer.c:365 modules/computer.c:667 modules/computer/modules.c:149 +#: modules/computer/modules.c:150 modules/devices/arm/processor.c:470 +msgid "Description" +msgstr "Descripción" -#: modules/computer.c:325 -msgid "Main Server Chassis" -msgstr "Servidor principal" +#: modules/computer.c:365 modules/devices.c:726 +msgid "Value" +msgstr "Valor" -#: modules/computer.c:326 -msgid "Expansion Chassis" -msgstr "Servidor expansion" +#: modules/computer.c:385 +msgid "Single-board computer" +msgstr "" -#: modules/computer.c:327 -msgid "Sub Chassis" -msgstr "Sub servidor" +#. /proc/apm +#: modules/computer.c:434 +msgid "Unknown physical machine type" +msgstr "Tipo de equipo físico desconocido" -#: modules/computer.c:328 -msgid "Bus Expansion Chassis" -msgstr "Expansion de bus acoplable" +#: modules/computer.c:454 modules/computer.c:455 +msgid "Virtual (VMware)" +msgstr "" -#: modules/computer.c:329 -msgid "Peripheral Chassis" -msgstr "Periferico acoplable" +#: modules/computer.c:457 modules/computer.c:458 modules/computer.c:459 +#: modules/computer.c:460 +msgid "Virtual (QEMU)" +msgstr "" -#: modules/computer.c:330 -msgid "RAID Chassis" -msgstr "RAID acoplable" +#: modules/computer.c:462 modules/computer.c:463 +msgid "Virtual (Unknown)" +msgstr "Virtual (desconocido)" -#: modules/computer.c:331 -msgid "Rack Mount Chassis" -msgstr "Rack de montaje acoplable" +#: modules/computer.c:465 modules/computer.c:466 modules/computer.c:467 +#: modules/computer.c:488 +msgid "Virtual (VirtualBox)" +msgstr "" -#: modules/computer.c:332 -msgid "Sealed-case PC" -msgstr "PC sellada" +#: modules/computer.c:469 modules/computer.c:470 modules/computer.c:471 +#: modules/computer.c:482 +msgid "Virtual (Xen)" +msgstr "" -#. /proc/apm -#. FIXME: use dmidecode if available to get chassis type -#: modules/computer.c:386 -msgid "Unknown physical machine type" -msgstr "Equipo fisico no catalogado" +#: modules/computer.c:473 +msgid "Virtual (hypervisor present)" +msgstr "Virtual (hipervisor presente)" -#: modules/computer.c:470 modules/computer.c:709 +#: modules/computer.c:528 modules/computer.c:953 msgid "Computer" msgstr "Equipo" -#: modules/computer.c:471 modules/devices/alpha/processor.c:87 -#: modules/devices/arm/processor.c:236 modules/devices.c:95 -#: modules/devices/ia64/processor.c:159 modules/devices/m68k/processor.c:83 -#: modules/devices/mips/processor.c:74 modules/devices/parisc/processor.c:154 -#: modules/devices/ppc/processor.c:157 modules/devices/riscv/processor.c:181 -#: modules/devices/s390/processor.c:131 modules/devices/sh/processor.c:83 -#: modules/devices/sparc/processor.c:74 modules/devices/x86/processor.c:409 -msgid "Processor" -msgstr "Procesador" - -#: modules/computer.c:474 +#: modules/computer.c:532 msgid "Machine Type" msgstr "Tipo de equipo" -#: modules/computer.c:477 modules/computer.c:514 +#: modules/computer.c:535 modules/computer.c:588 msgid "User Name" msgstr "Nombre de usuario" -#: modules/computer.c:482 modules/computer.c:591 +#: modules/computer.c:540 msgid "Resolution" msgstr "Resolución" -#: modules/computer.c:483 modules/computer.c:592 +#: modules/computer.c:540 modules/computer.c:748 #, c-format msgid "%dx%d pixels" -msgstr "" +msgstr "%dx%d píxeles" -#: modules/computer.c:485 -msgid "OpenGL Renderer" -msgstr "Renderizador OpenGL" - -#: modules/computer.c:486 -msgid "X11 Vendor" -msgstr "Proveedor X11" +#: modules/computer.c:543 +msgid "Session Display Server" +msgstr "Servidor gráfico de la sesión" -#: modules/computer.c:491 modules/devices.c:102 +#: modules/computer.c:548 modules/devices.c:108 msgid "Input Devices" msgstr "Dispositivos de entrada" -#: modules/computer.c:493 modules/computer.c:752 modules/devices.c:99 -msgid "Printers" -msgstr "Impresoras" - -#: modules/computer.c:495 modules/computer.c:752 modules/devices.c:103 -msgid "Storage" -msgstr "Almacenamiento" - -#: modules/computer.c:506 +#: modules/computer.c:572 msgid "Kernel" msgstr "Núcleo" -#: modules/computer.c:508 +#: modules/computer.c:573 +msgid "Command Line" +msgstr "Orden de la terminal" + +#: modules/computer.c:575 msgid "C Library" msgstr "Biblioteca C" -#: modules/computer.c:509 +#: modules/computer.c:576 msgid "Distribution" msgstr "Distribución" -#: modules/computer.c:512 +#: modules/computer.c:582 +msgid "Spin/Flavor" +msgstr "Variante" + +#: modules/computer.c:586 msgid "Current Session" msgstr "Sesión actual" -#: modules/computer.c:513 +#: modules/computer.c:587 msgid "Computer Name" msgstr "Nombre del equipo" -#: modules/computer.c:515 modules/computer/languages.c:108 +#: modules/computer.c:589 modules/computer/languages.c:99 msgid "Language" msgstr "Idioma" -#: modules/computer.c:516 modules/computer/users.c:50 +#: modules/computer.c:590 modules/computer/users.c:50 msgid "Home Directory" msgstr "Directorio personal" -#: modules/computer.c:519 modules/devices/usb.c:87 modules/devices/usb.c:234 -#: modules/devices/usb.c:351 +#: modules/computer.c:591 +msgid "Desktop Environment" +msgstr "Entorno de escritorio" + +#: modules/computer.c:594 msgid "Misc" msgstr "Otras" -#: modules/computer.c:532 +#: modules/computer.c:607 +msgid "HardInfo" +msgstr "" + +#: modules/computer.c:608 +msgid "HardInfo running as" +msgstr "HardInfo funcionando en modo" + +#: modules/computer.c:609 +msgid "Superuser" +msgstr "Administrador" + +#: modules/computer.c:609 +msgid "User" +msgstr "Usuario" + +#: modules/computer.c:613 +msgid "Health" +msgstr "Salud" + +#: modules/computer.c:614 +msgid "Available entropy in /dev/random" +msgstr "Entropía disponible en /dev/random" + +#: modules/computer.c:618 +msgid "Hardening Features" +msgstr "Funciones de protección" + +#: modules/computer.c:619 +msgid "ASLR" +msgstr "" + +#: modules/computer.c:620 +msgid "dmesg" +msgstr "" + +#: modules/computer.c:624 +msgid "Linux Security Modules" +msgstr "Módulos de seguridad de Linux" + +#: modules/computer.c:625 +msgid "Modules available" +msgstr "Módulos disponibles" + +#: modules/computer.c:626 +msgid "SELinux status" +msgstr "Estado de SELinux" + +#: modules/computer.c:632 +msgid "CPU Vulnerabilities" +msgstr "Vulnerabilidades de la CPU" + +#: modules/computer.c:664 msgid "Loaded Modules" msgstr "Módulos cargados" -#: modules/computer.c:535 modules/computer/modules.c:145 -#: modules/computer/modules.c:147 modules/devices/arm/processor.c:337 -#: modules/devices.c:559 modules/devices/x86/processor.c:456 -msgid "Description" -msgstr "Descripción" - -#: modules/computer.c:548 +#: modules/computer.c:680 msgid "Date & Time" msgstr "Fecha y hora" -#: modules/computer.c:549 +#: modules/computer.c:681 msgid "Kernel Version" -msgstr "Versión del núcleo" +msgstr "Versión del kernel" -#: modules/computer.c:559 +#: modules/computer.c:691 msgid "Available Languages" msgstr "Idiomas disponibles" -#: modules/computer.c:561 +#: modules/computer.c:693 msgid "Language Code" msgstr "Código del idioma" -#: modules/computer.c:573 +#: modules/computer.c:705 msgid "Mounted File Systems" msgstr "Sistemas de archivos montados" -#: modules/computer.c:575 modules/computer/filesystem.c:85 +#: modules/computer.c:707 modules/computer/filesystem.c:85 msgid "Mount Point" msgstr "Punto de montaje" -#: modules/computer.c:576 +#: modules/computer.c:708 msgid "Usage" msgstr "Uso" -#: modules/computer.c:577 +#: modules/computer.c:709 modules/devices/gpu.c:75 modules/devices/gpu.c:83 +#: modules/devices/gpu.c:225 modules/devices/pci.c:88 modules/devices/pci.c:96 +#: modules/devices/pci.c:140 modules/devices/usb.c:169 +#: modules/devices/usb.c:181 msgid "Device" msgstr "Dispositivo" -#: modules/computer.c:594 modules/computer.c:601 -#: modules/devices/ia64/processor.c:161 modules/devices/inputdevices.c:119 -#: modules/devices/pci.c:225 modules/devices/usb.c:349 -#: modules/devices/x86/processor.c:416 +#: modules/computer.c:731 +msgid "Session" +msgstr "Sesión" + +#: modules/computer.c:732 modules/devices.c:726 modules/devices/dmi.c:55 +#: modules/devices/dmi_memory.c:603 modules/devices/dmi_memory.c:749 +#: modules/devices/inputdevices.c:112 modules/devices/x86/processor.c:714 +msgid "Type" +msgstr "Tipo" + +#: modules/computer.c:735 +msgid "Wayland" +msgstr "" + +#: modules/computer.c:736 modules/computer.c:741 +msgid "Current Display Name" +msgstr "Nombre de la pantalla actual" + +#: modules/computer.c:740 +msgid "X Server" +msgstr "Servidor X" + +#: modules/computer.c:742 modules/computer.c:782 modules/devices/dmi.c:39 +#: modules/devices/dmi.c:45 modules/devices/dmi.c:49 modules/devices/dmi.c:54 +#: modules/devices/dmi_memory.c:750 modules/devices/dmi_memory.c:895 +#: modules/devices/firmware.c:105 modules/devices/firmware.c:168 +#: modules/devices/firmware.c:190 modules/devices/firmware.c:228 +#: modules/devices/gpu.c:74 modules/devices/gpu.c:82 modules/devices/gpu.c:224 +#: modules/devices/ia64/processor.c:161 modules/devices/inputdevices.c:114 +#: modules/devices/monitors.c:398 modules/devices/pci.c:87 +#: modules/devices/pci.c:95 modules/devices/usb.c:168 +#: modules/devices/x86/processor.c:653 msgid "Vendor" msgstr "Proveedor" -#: modules/computer.c:598 -msgid "Monitors" -msgstr "Monitores" +#: modules/computer.c:744 +msgid "Release Number" +msgstr "Número de versión" + +#: modules/computer.c:752 +msgid "Screens" +msgstr "Pantallas" + +#: modules/computer.c:758 +msgid "Disconnected" +msgstr "Desconectado" -#: modules/computer.c:600 -msgid "OpenGL" -msgstr "OpenGL (3D)" +#: modules/computer.c:761 +msgid "Connected" +msgstr "Conectado" -#: modules/computer.c:602 +#: modules/computer.c:769 +msgid "Unused" +msgstr "Sin usar" + +#: modules/computer.c:770 +#, c-format +msgid "%dx%d pixels, offset (%d, %d)" +msgstr "%dx%d píxeles, desplazamiento (%d, %d)" + +#: modules/computer.c:779 +msgid "Outputs (XRandR)" +msgstr "Salidas (XRandR)" + +#: modules/computer.c:781 +msgid "OpenGL (GLX)" +msgstr "" + +#: modules/computer.c:783 msgid "Renderer" msgstr "Renderizador" -#: modules/computer.c:604 +#: modules/computer.c:784 msgid "Direct Rendering" -msgstr "Renderizado Directo" +msgstr "Renderizado directo" -#: modules/computer.c:608 -msgid "Extensions" -msgstr "Extensiones" +#: modules/computer.c:786 +msgid "Version (Compatibility)" +msgstr "Versión (compatibilidad)" -#: modules/computer.c:628 -msgid "Group" -msgstr "" +#: modules/computer.c:787 +msgid "Shading Language Version (Compatibility)" +msgstr "Versión del lenguaje de sombreado (compatibilidad)" -#: modules/computer.c:631 modules/computer/users.c:49 -msgid "Group ID" -msgstr "ID del grupo" +#: modules/computer.c:788 +msgid "Version (Core)" +msgstr "Versión (núcleo)" -#: modules/computer.c:751 -msgid "RAM" -msgstr "RAM" +#: modules/computer.c:789 +msgid "Shading Language Version (Core)" +msgstr "Versión del lenguaje de sombreado (núcleo)" -#: modules/computer.c:751 modules/devices/devicetree/pmac_data.c:82 -msgid "Motherboard" -msgstr "Tarjeta madre" +#: modules/computer.c:790 +msgid "Version (ES)" +msgstr "Versión (ES)" -#: modules/computer.c:751 -msgid "Graphics" -msgstr "Graficos" +#: modules/computer.c:791 +msgid "Shading Language Version (ES)" +msgstr "Versión del lenguaje de sombreado (ES)" -#: modules/computer.c:752 -msgid "Audio" -msgstr "Audio" +#: modules/computer.c:792 +msgid "GLX Version" +msgstr "Versión de GLX" -#: modules/computer.c:807 -msgid "Gathers high-level computer information" -msgstr "Obtiene información del equipo de alto nivel" +#: modules/computer.c:813 +msgid "Group" +msgstr "Grupo" -#: modules/computer/display.c:122 +#: modules/computer.c:816 modules/computer/users.c:49 +msgid "Group ID" +msgstr "Identificador de grupo" + +#. / "usable memory" +#: modules/computer.c:909 #, c-format -msgid "Monitor %d=%dx%d pixels\n" -msgstr "Monitor %d=%dx%d pixels\n" +msgid "%0.1f %s available to Linux" +msgstr "%0.1f %s disponible para Linux" + +#: modules/computer.c:911 modules/devices/dmi_memory.c:661 +#: modules/devices/dmi_memory.c:809 modules/devices/dmi_memory.c:936 +msgid "GiB" +msgstr "GiB" + +#: modules/computer.c:913 modules/devices/dmi_memory.c:581 +#: modules/devices/dmi_memory.c:663 modules/devices/dmi_memory.c:723 +#: modules/devices/dmi_memory.c:811 modules/devices/dmi_memory.c:857 +#: modules/devices/dmi_memory.c:938 modules/network/net.c:395 +#: modules/network/net.c:417 modules/network/net.c:418 +msgid "MiB" +msgstr "MiB" -#: modules/computer/filesystem.c:83 -msgid "Filesystem" -msgstr "Sistemas de ficheros" +#: modules/computer.c:915 modules/computer/memory_usage.c:77 +#: modules/computer/modules.c:149 +msgid "KiB" +msgstr "KiB" + +#: modules/computer.c:972 modules/devices/devicetree/pmac_data.c:82 +msgid "Motherboard" +msgstr "Placa base" + +#: modules/computer.c:1000 +msgid "Graphics" +msgstr "Gráficos" + +#: modules/computer.c:1001 modules/devices.c:109 +msgid "Storage" +msgstr "Almacenamiento" + +#: modules/computer.c:1001 modules/devices.c:105 +msgid "Printers" +msgstr "Impresoras" + +#: modules/computer.c:1001 +msgid "Audio" +msgstr "Sonido" + +#: modules/computer.c:1050 +msgid "Gathers high-level computer information" +msgstr "Obtiene información de alto nivel del equipo" + +#: modules/computer/filesystem.c:83 +msgid "Filesystem" +msgstr "Sistema de archivos" #: modules/computer/filesystem.c:84 msgid "Mounted As" -msgstr "Montado como" +msgstr "Modo de montaje" #: modules/computer/filesystem.c:84 msgid "Read-Write" @@ -1210,9 +2006,11 @@ msgstr "Lectura-escritura" #: modules/computer/filesystem.c:84 msgid "Read-Only" -msgstr "Solo-lectura" +msgstr "Solo lectura" -#: modules/computer/filesystem.c:86 modules/devices/spd-decode.c:1510 +#: modules/computer/filesystem.c:86 modules/devices/dmi_memory.c:609 +#: modules/devices/dmi_memory.c:754 modules/devices/dmi_memory.c:786 +#: modules/devices/dmi_memory.c:825 modules/devices/dmi_memory.c:894 msgid "Size" msgstr "Tamaño" @@ -1224,176 +2022,241 @@ msgstr "Usado" msgid "Available" msgstr "Disponible" -#: modules/computer/languages.c:103 +#: modules/computer/languages.c:94 msgid "Locale Information" -msgstr "" +msgstr "Información regional" -#: modules/computer/languages.c:105 +#: modules/computer/languages.c:96 modules/devices/dmi_memory.c:599 +#: modules/devices/gpu.c:204 msgid "Source" -msgstr "" +msgstr "Origen" -#: modules/computer/languages.c:106 +#: modules/computer/languages.c:97 msgid "Address" -msgstr "" +msgstr "Dirección" -#: modules/computer/languages.c:107 +#: modules/computer/languages.c:98 msgid "E-mail" -msgstr "" +msgstr "Correo electrónico" -#: modules/computer/languages.c:109 +#: modules/computer/languages.c:100 msgid "Territory" -msgstr "" - -#: modules/computer/languages.c:110 modules/devices/arm/processor.c:250 -#: modules/devices/ia64/processor.c:166 modules/devices/ppc/processor.c:159 -#: modules/devices/usb.c:236 -msgid "Revision" -msgstr "Revision" +msgstr "Territorio" -#: modules/computer/languages.c:111 +#: modules/computer/languages.c:102 modules/devices/dmi.c:44 msgid "Date" -msgstr "" +msgstr "Fecha" -#: modules/computer/languages.c:112 +#: modules/computer/languages.c:103 msgid "Codeset" msgstr "" #: modules/computer/loadavg.c:64 msgid "Couldn't obtain load average" -msgstr "No se pudo obtener estadisticas" +msgstr "No se puede obtener la carga promedio" + +#: modules/computer/memory_usage.c:106 +msgid "Total Memory" +msgstr "Memoria total" + +#: modules/computer/memory_usage.c:107 +msgid "Free Memory" +msgstr "Memoria Libre" + +#: modules/computer/memory_usage.c:108 +msgid "Cached Swap" +msgstr "Intercambio" + +#: modules/computer/memory_usage.c:109 +msgid "High Memory" +msgstr "Memoria alta" + +#: modules/computer/memory_usage.c:110 +msgid "Free High Memory" +msgstr "Memoria alta libre" + +#: modules/computer/memory_usage.c:111 +msgid "Low Memory" +msgstr "Memoria base" + +#: modules/computer/memory_usage.c:112 +msgid "Free Low Memory" +msgstr "Memoria base libre" -#: modules/computer/modules.c:125 modules/computer/modules.c:126 -#: modules/computer/modules.c:127 modules/computer/modules.c:128 -#: modules/computer/modules.c:129 +#: modules/computer/memory_usage.c:113 +msgid "Virtual Memory" +msgstr "Memoria virtual" + +#: modules/computer/memory_usage.c:114 +msgid "Free Virtual Memory" +msgstr "Memoria virtual libre" + +#: modules/computer/modules.c:117 modules/computer/modules.c:118 +#: modules/computer/modules.c:119 modules/computer/modules.c:120 +#: modules/computer/modules.c:121 modules/computer/modules.c:122 +#: modules/devices/dmi.c:111 modules/devices/dmi_memory.c:881 +#: modules/devices/firmware.c:246 modules/devices/x86/processor.c:693 msgid "(Not available)" -msgstr "" +msgstr "(no disponible)" -#: modules/computer/modules.c:142 +#: modules/computer/modules.c:148 msgid "Module Information" -msgstr "" +msgstr "Información del módulo" -#: modules/computer/modules.c:143 +#: modules/computer/modules.c:148 modules/devices/gpu.c:230 msgid "Path" -msgstr "" +msgstr "Ruta" -#: modules/computer/modules.c:144 +#: modules/computer/modules.c:148 msgid "Used Memory" -msgstr "" - -#: modules/computer/modules.c:144 -msgid "KiB" -msgstr "" +msgstr "Memoria usada" -#: modules/computer/modules.c:148 +#: modules/computer/modules.c:150 msgid "Version Magic" -msgstr "" +msgstr "Número mágico de versión" -#: modules/computer/modules.c:149 +#: modules/computer/modules.c:151 +msgid "In Linus' Tree" +msgstr "En el árbol de Linus" + +#: modules/computer/modules.c:152 +msgid "Retpoline Enabled" +msgstr "Retpoline habilitado" + +#: modules/computer/modules.c:152 msgid "Copyright" msgstr "" -#: modules/computer/modules.c:150 +#: modules/computer/modules.c:152 msgid "Author" -msgstr "" +msgstr "Autor" -#: modules/computer/modules.c:151 +#: modules/computer/modules.c:153 msgid "License" -msgstr "" +msgstr "Licencia" -#: modules/computer/modules.c:158 +#: modules/computer/modules.c:159 msgid "Dependencies" -msgstr "" +msgstr "Dependencias" -#: modules/computer/os.c:35 modules/computer/os.c:36 modules/computer/os.c:37 -#: modules/computer/os.c:38 +#: modules/computer/os.c:36 modules/computer/os.c:37 modules/computer/os.c:38 +#: modules/computer/os.c:39 msgid "GNU C Library" -msgstr "Libreria C GNU" +msgstr "Biblioteca C de GNU" -#: modules/computer/os.c:39 +#: modules/computer/os.c:40 msgid "uClibc or uClibc-ng" -msgstr "Libreria uClibc/uClibc-ng" +msgstr "uClibc o uClibc-ng" -#: modules/computer/os.c:40 +#: modules/computer/os.c:41 msgid "diet libc" -msgstr "Libreria diet libc" +msgstr "diet libc" -#: modules/computer/os.c:78 modules/computer/os.c:234 modules/computer/os.c:359 -#: modules/devices.c:333 modules/devices.c:387 modules/devices/printers.c:99 -#: modules/devices/printers.c:106 modules/devices/printers.c:116 -#: modules/devices/printers.c:131 modules/devices/printers.c:140 -#: modules/devices/printers.c:243 -msgid "Unknown" -msgstr "Desconocido" - -#: modules/computer/os.c:112 modules/computer/os.c:115 +#: modules/computer/os.c:113 modules/computer/os.c:116 msgid "GNOME Shell " msgstr "" -#: modules/computer/os.c:123 modules/computer/os.c:126 +#: modules/computer/os.c:124 modules/computer/os.c:127 msgid "Version: " -msgstr "Versión" +msgstr "Versión: " -#: modules/computer/os.c:157 +#: modules/computer/os.c:146 modules/computer/os.c:149 +msgid "MATE Desktop Environment " +msgstr "Entorno de escritorio MATE " + +#: modules/computer/os.c:180 #, c-format msgid "Unknown (Window Manager: %s)" msgstr "Desconocido (Gestor de ventanas: %s)" #. /{desktop environment} on {session type} -#: modules/computer/os.c:168 +#: modules/computer/os.c:191 #, c-format msgid "%s on %s" msgstr "%s en %s" -#: modules/computer/os.c:232 +#: modules/computer/os.c:261 msgid "Terminal" msgstr "Terminal" +#: modules/computer/os.c:278 +msgid "User access allowed" +msgstr "Acceso de usuario permitido" + +#: modules/computer/os.c:280 +msgid "User access forbidden" +msgstr "Acceso de usuario prohibido" + +#: modules/computer/os.c:282 +msgid "Access allowed (running as superuser)" +msgstr "Acceso permitido (en ejecución como administrador)" + +#: modules/computer/os.c:284 +msgid "Access forbidden? (running as superuser)" +msgstr "¿Acceso prohibido? (en ejecución como administrador)" + +#: modules/computer/os.c:294 modules/computer/os.c:560 +msgid "Disabled" +msgstr "Deshabilitado" + +#: modules/computer/os.c:296 +msgid "Partially enabled (mmap base+stack+VDSO base)" +msgstr "Parcialmente habilitado (mmap base+stack+VDSO base)" + +#: modules/computer/os.c:298 +msgid "Fully enabled (mmap base+stack+VDSO base+heap)" +msgstr "Totalmente habilitado (mmap base+stack+VDSO base+heap)" + #. /bits of entropy for rng (0) -#: modules/computer/os.c:241 +#: modules/computer/os.c:308 msgid "(None or not available)" -msgstr "(Ninguno o no disponible)" +msgstr "(ninguno o no disponible)" #. /bits of entropy for rng (low/poor value) -#: modules/computer/os.c:242 +#: modules/computer/os.c:309 #, c-format msgid "%d bits (low)" msgstr "%d bits (bajo)" #. /bits of entropy for rng (medium value) -#: modules/computer/os.c:243 +#: modules/computer/os.c:310 #, c-format msgid "%d bits (medium)" -msgstr "%d bits (promedio)" +msgstr "%d bits (medio)" #. /bits of entropy for rng (high/good value) -#: modules/computer/os.c:244 +#: modules/computer/os.c:311 #, c-format msgid "%d bits (healthy)" msgstr "%d bits (saludable)" -#: modules/computer/os.c:279 modules/devices/usb.c:48 modules/devices/usb.c:307 -#: modules/devices/usb.c:310 modules/network/net.c:442 includes/cpu_util.h:11 -msgid "(Unknown)" -msgstr "(desconocido)" +#: modules/computer/os.c:555 +msgid "Not installed" +msgstr "No instalado" + +#: modules/computer/os.c:558 +msgid "Enabled" +msgstr "Habilitado" #: modules/computer/users.c:47 msgid "User Information" -msgstr "Informacion de usuario" +msgstr "Información de usuario" #: modules/computer/users.c:48 msgid "User ID" -msgstr "ID usuario" +msgstr "Identificador de usuario" #: modules/computer/users.c:51 msgid "Default Shell" -msgstr "Shell principal" +msgstr "Intérprete de órdenes predefinido" -#: modules/devices/alpha/processor.c:88 modules/devices/devicetree.c:141 -#: modules/devices/devicetree.c:176 modules/devices/devicetree/pmac_data.c:80 -#: modules/devices/ia64/processor.c:165 modules/devices/m68k/processor.c:84 -#: modules/devices/mips/processor.c:75 modules/devices/parisc/processor.c:155 +#: modules/devices/alpha/processor.c:88 modules/devices/devicetree.c:163 +#: modules/devices/devicetree.c:209 modules/devices/devicetree/pmac_data.c:80 +#: modules/devices/gpu.c:106 modules/devices/ia64/processor.c:165 +#: modules/devices/m68k/processor.c:84 modules/devices/mips/processor.c:75 +#: modules/devices/monitors.c:400 modules/devices/parisc/processor.c:155 #: modules/devices/ppc/processor.c:158 modules/devices/riscv/processor.c:182 -#: modules/devices/s390/processor.c:132 modules/devices/spd-decode.c:1510 +#: modules/devices/s390/processor.c:132 msgid "Model" msgstr "Modelo" @@ -1401,78 +2264,63 @@ msgstr "Modelo" msgid "Platform String" msgstr "Plataforma" -#: modules/devices/alpha/processor.c:90 modules/devices/arm/processor.c:240 +#: modules/devices/alpha/processor.c:90 modules/devices/arm/processor.c:345 #: modules/devices/ia64/processor.c:167 modules/devices/m68k/processor.c:87 #: modules/devices/mips/processor.c:77 modules/devices/parisc/processor.c:158 -#: modules/devices/pci.c:108 modules/devices/ppc/processor.c:160 -#: modules/devices/riscv/processor.c:186 modules/devices/sh/processor.c:87 -#: modules/devices/x86/processor.c:420 +#: modules/devices/ppc/processor.c:160 modules/devices/riscv/processor.c:186 +#: modules/devices/sh/processor.c:87 modules/devices/x86/processor.c:657 msgid "Frequency" msgstr "Frecuencia" -#: modules/devices/alpha/processor.c:90 modules/devices/arm/processor.c:240 -#: modules/devices/arm/processor.c:365 modules/devices.c:299 -#: modules/devices.c:307 modules/devices.c:335 -#: modules/devices/ia64/processor.c:167 modules/devices/ia64/processor.c:196 -#: modules/devices/m68k/processor.c:87 modules/devices/mips/processor.c:77 -#: modules/devices/parisc/processor.c:158 -#: modules/devices/parisc/processor.c:191 modules/devices/pci.c:108 -#: modules/devices/ppc/processor.c:160 modules/devices/ppc/processor.c:187 -#: modules/devices/riscv/processor.c:186 modules/devices/riscv/processor.c:214 -#: modules/devices/s390/processor.c:160 modules/devices/sh/processor.c:87 -#: modules/devices/sh/processor.c:88 modules/devices/sh/processor.c:89 -#: modules/devices/x86/processor.c:420 modules/devices/x86/processor.c:479 -msgid "MHz" -msgstr "MHz" - -#: modules/devices/alpha/processor.c:91 modules/devices/arm/processor.c:241 +#: modules/devices/alpha/processor.c:91 modules/devices/arm/processor.c:346 #: modules/devices/ia64/processor.c:168 modules/devices/m68k/processor.c:88 #: modules/devices/mips/processor.c:78 modules/devices/parisc/processor.c:159 #: modules/devices/ppc/processor.c:161 modules/devices/s390/processor.c:134 -#: modules/devices/sh/processor.c:90 modules/devices/x86/processor.c:421 +#: modules/devices/sh/processor.c:90 modules/devices/x86/processor.c:658 msgid "BogoMips" msgstr "BogoMips" -#: modules/devices/alpha/processor.c:92 modules/devices/arm/processor.c:242 +#: modules/devices/alpha/processor.c:92 modules/devices/arm/processor.c:347 #: modules/devices/ia64/processor.c:169 modules/devices/m68k/processor.c:89 #: modules/devices/mips/processor.c:79 modules/devices/parisc/processor.c:160 #: modules/devices/ppc/processor.c:162 modules/devices/riscv/processor.c:187 #: modules/devices/s390/processor.c:135 modules/devices/sh/processor.c:91 -#: modules/devices/sparc/processor.c:77 modules/devices/x86/processor.c:422 +#: modules/devices/sparc/processor.c:77 modules/devices/x86/processor.c:659 msgid "Byte Order" -msgstr "Orden Byte" +msgstr "Orden de bytes" #. /hw_cap #. /flag:swp #: modules/devices/arm/arm_data.c:42 msgctxt "arm-flag" msgid "SWP instruction (atomic read-modify-write)" -msgstr "SWP instruction (Atomicidad en leer-alterar-escribir)" +msgstr "Instrucción SWP (lectura-modificación-escritura atómica)" #. /flag:half #: modules/devices/arm/arm_data.c:43 msgctxt "arm-flag" msgid "Half-word loads and stores" -msgstr "Half-word cargar y guardado" +msgstr "Carga y almacenamiento de medias palabras" #. /flag:thumb #: modules/devices/arm/arm_data.c:44 msgctxt "arm-flag" msgid "Thumb (16-bit instruction set)" -msgstr "Thumb (set instrucciones de 16-bit)" +msgstr "Thumb (conjunto de instrucciones de 16 bits)" #. /flag:26bit #: modules/devices/arm/arm_data.c:45 msgctxt "arm-flag" msgid "26-Bit Model (Processor status register folded into program counter)" msgstr "" -"26-Bit Model (Registros de estado de procesador en el contador de programa)" +"Modelo de 26 bits (registro de estado del procesador plegado en el contador" +" del programa)" #. /flag:fastmult #: modules/devices/arm/arm_data.c:46 msgctxt "arm-flag" msgid "32x32->64-bit multiplication" -msgstr "32x32->64-bit multiplicador" +msgstr "Multiplicación 32x32->64-bit" #. /flag:fpa #: modules/devices/arm/arm_data.c:47 @@ -1482,39 +2330,41 @@ msgstr "Acelerador de punto flotante" #. /flag:vfp #: modules/devices/arm/arm_data.c:48 +#, fuzzy msgctxt "arm-flag" msgid "VFP (early SIMD vector floating point instructions)" -msgstr "VFP (vector SIMD temprano de instrucciones de punto flotante" +msgstr "VFP (vector SIMD temprano de instrucciones de punto flotante)" #. /flag:edsp #: modules/devices/arm/arm_data.c:49 msgctxt "arm-flag" msgid "DSP extensions (the 'e' variant of the ARM9 CPUs, and all others above)" -msgstr "DSP (extensiones en el variante 'e' del ARM9 y otros mas nuevos)" +msgstr "" +"Extensiones DSP (la variante 'e' de las CPU ARM9 y todas las posteriores)" #. /flag:java #: modules/devices/arm/arm_data.c:50 msgctxt "arm-flag" msgid "Jazelle (Java bytecode accelerator)" -msgstr "Jazelle (aceletador de bytecode Java)" +msgstr "Jazelle (acelerador de código intermedio de Java)" #. /flag:iwmmxt #: modules/devices/arm/arm_data.c:51 msgctxt "arm-flag" msgid "SIMD instructions similar to Intel MMX" -msgstr "SIMD instrucciones similares a Intel MMX" +msgstr "Instrucciones SIMD parecidas a las MMX de Intel" #. /flag:crunch #: modules/devices/arm/arm_data.c:52 msgctxt "arm-flag" msgid "MaverickCrunch coprocessor (if kernel support enabled)" -msgstr "MaverickCrunch coprocessor (si esta habilitado en el kernel)" +msgstr "Coprocesador MaverickCrunch (si está habilitado en el kernel)" #. /flag:thumbee #: modules/devices/arm/arm_data.c:53 msgctxt "arm-flag" msgid "ThumbEE" -msgstr "thumbEE" +msgstr "" #. /flag:neon #: modules/devices/arm/arm_data.c:54 @@ -1524,10 +2374,11 @@ msgstr "SIMD/NEON avanzado en AArch32" #. /flag:evtstrm #: modules/devices/arm/arm_data.c:55 +#, fuzzy msgctxt "arm-flag" msgid "Kernel event stream using generic architected timer" msgstr "" -"Secuencia de eventos de kernel con temporizador de arquitectura genérico" +"Secuencia de eventos del kernel con temporizador de arquitectura genérico" #. /flag:vfpv3 #: modules/devices/arm/arm_data.c:56 @@ -1539,145 +2390,154 @@ msgstr "VFP versión 3" #: modules/devices/arm/arm_data.c:57 msgctxt "arm-flag" msgid "VFP version 3 with 16 D-registers" -msgstr "VFP versión 3 con 16 D-registros" +msgstr "VFP versión 3 con 16 registros D" #. /flag:vfpv4 #: modules/devices/arm/arm_data.c:58 msgctxt "arm-flag" msgid "VFP version 4 with fast context switching" -msgstr "VFP versión 4 con rapido cambio de contexto" +msgstr "VFP versión 4 con cambio de contexto rápido" #. /flag:vfpd32 #: modules/devices/arm/arm_data.c:59 msgctxt "arm-flag" msgid "VFP with 32 D-registers" -msgstr "VFP con 32 D-registros" +msgstr "VFP con 32 registros D" #. /flag:tls #: modules/devices/arm/arm_data.c:60 msgctxt "arm-flag" msgid "TLS register" -msgstr "Registros TLS" +msgstr "Registro TLS" #. /flag:idiva #: modules/devices/arm/arm_data.c:61 msgctxt "arm-flag" msgid "SDIV and UDIV hardware division in ARM mode" -msgstr "SDIV y UDIV divisores por hardware en modo ARM" +msgstr "División por hardware SDIV y UDIV en modo ARM" #. /flag:idivt #: modules/devices/arm/arm_data.c:62 msgctxt "arm-flag" msgid "SDIV and UDIV hardware division in Thumb mode" -msgstr "SDIV y UDIV divisores por hardware en modo Thumb" +msgstr "División por hardware SDIV y UDIV en modo Thumb" #. /flag:lpae #: modules/devices/arm/arm_data.c:63 +#, fuzzy msgctxt "arm-flag" msgid "40-bit Large Physical Address Extension" -msgstr "40-bit Extencion de direcciones fisica larga" +msgstr "Extensión de direcciones físicas larga de 40-bit" #. /hw_cap2 #. /flag:pmull #: modules/devices/arm/arm_data.c:65 +#, fuzzy msgctxt "arm-flag" msgid "64x64->128-bit F2m multiplication (arch>8)" -msgstr "" +msgstr "64x64->128-bit F2m multiplicadores (arch>8)" #. /flag:aes #: modules/devices/arm/arm_data.c:66 msgctxt "arm-flag" msgid "Crypto:AES (arch>8)" -msgstr "Encriptamiento:AES (arch>8)" +msgstr "Cifrado:AES (arch>8)" #. /flag:sha1 #: modules/devices/arm/arm_data.c:67 msgctxt "arm-flag" msgid "Crypto:SHA1 (arch>8)" -msgstr "Encriptamiento:SHA1 (arch>8)" +msgstr "Cifrado:SHA1 (arch>8)" #. /flag:sha2 #: modules/devices/arm/arm_data.c:68 msgctxt "arm-flag" msgid "Crypto:SHA2 (arch>8)" -msgstr "Encriptamiento:SHA2 (arch>8)" +msgstr "Cifrado:SHA2 (arch>8)" #. /flag:crc32 #: modules/devices/arm/arm_data.c:69 msgctxt "arm-flag" msgid "CRC32 checksum instructions (arch>8)" -msgstr "Instrucciones CRC32 checksum (arch>8)" +msgstr "Instrucciones de suma de comprobación CRC32 (arch>8)" #. /flag:asimd #: modules/devices/arm/arm_data.c:72 msgctxt "arm-flag" msgid "Advanced SIMD/NEON on AArch64 (arch>8)" -msgstr "SIMD/NEON Avanzado en AArch64 (arch>8)" +msgstr "SIMD/NEON avanzado en AArch64 (arch>8)" -#: modules/devices/arm/processor.c:142 +#: modules/devices/arm/processor.c:143 msgid "ARM Processor" msgstr "Procesador ARM" -#: modules/devices/arm/processor.c:200 modules/devices/riscv/processor.c:147 -#: modules/devices/x86/processor.c:371 +#: modules/devices/arm/processor.c:214 modules/devices/riscv/processor.c:147 +#: modules/devices/x86/processor.c:608 msgid "Empty List" -msgstr "Lista vacia" +msgstr "Lista vacía" + +#: modules/devices/arm/processor.c:240 modules/devices/gpu.c:148 +#: modules/devices/gpu.c:226 modules/devices/x86/processor.c:268 +msgid "Clocks" +msgstr "Frecuencias de reloj" + +#: modules/devices/arm/processor.c:286 modules/devices/arm/processor.c:299 +#: modules/devices/x86/processor.c:314 modules/devices/x86/processor.c:327 +#, c-format +msgid "%.2f-%.2f %s=%dx\n" +msgstr "" -#: modules/devices/arm/processor.c:237 +#: modules/devices/arm/processor.c:342 msgid "Linux Name" -msgstr "Nombre Linux" +msgstr "" -#: modules/devices/arm/processor.c:238 +#: modules/devices/arm/processor.c:343 msgid "Decoded Name" msgstr "Nombre decodificado" -#: modules/devices/arm/processor.c:239 modules/network/net.c:458 +#: modules/devices/arm/processor.c:344 modules/network/net.c:453 msgid "Mode" msgstr "Modo" -#: modules/devices/arm/processor.c:245 +#: modules/devices/arm/processor.c:350 msgid "ARM" msgstr "ARM" -#: modules/devices/arm/processor.c:246 +#: modules/devices/arm/processor.c:351 msgid "Implementer" msgstr "Implementador" -#: modules/devices/arm/processor.c:247 +#: modules/devices/arm/processor.c:352 modules/devices/dmi_memory.c:896 msgid "Part" msgstr "Parte" -#: modules/devices/arm/processor.c:248 modules/devices/ia64/processor.c:162 +#: modules/devices/arm/processor.c:353 modules/devices/ia64/processor.c:162 #: modules/devices/parisc/processor.c:156 modules/devices/riscv/processor.c:183 msgid "Architecture" msgstr "Arquitectura" -#: modules/devices/arm/processor.c:249 +#: modules/devices/arm/processor.c:354 msgid "Variant" msgstr "Variante" -#: modules/devices/arm/processor.c:251 modules/devices/riscv/processor.c:190 -#: modules/devices/sparc/processor.c:78 modules/devices/x86/processor.c:428 +#: modules/devices/arm/processor.c:356 modules/devices/riscv/processor.c:190 +#: modules/devices/sparc/processor.c:78 modules/devices/x86/processor.c:665 msgid "Capabilities" msgstr "Capacidades" -#: modules/devices/arm/processor.c:335 +#: modules/devices/arm/processor.c:468 msgid "SOC/Package" -msgstr "" - -#: modules/devices/arm/processor.c:338 modules/devices/cpu_util.c:222 -msgid "Topology" -msgstr "Topologia" +msgstr "SOC/Paquete" -#: modules/devices/arm/processor.c:339 -msgid "Clocks" -msgstr "" +#: modules/devices/arm/processor.c:472 modules/devices/x86/processor.c:751 +msgid "Logical CPU Config" +msgstr "Configuración lógica de la CPU" -#: modules/devices/arm/processor.c:354 +#: modules/devices/arm/processor.c:489 msgid "SOC/Package Information" -msgstr "" +msgstr "Información del SOC/Paquete" -#: modules/devices/battery.c:181 +#: modules/devices/battery.c:178 #, c-format msgid "" "\n" @@ -1695,10 +2555,10 @@ msgstr "" "Capacidad=%s / %s (%.2f%%)\n" "Tecnología de la batería=%s (%s)\n" "Fabricante=%s\n" -"Numero de modelo=%s\n" -"Numero de serie=%s\n" +"Número de modelo=%s\n" +"Número de serie=%s\n" -#: modules/devices/battery.c:258 +#: modules/devices/battery.c:255 #, c-format msgid "" "\n" @@ -1711,15 +2571,15 @@ msgid "" "Serial Number=%s\n" msgstr "" "\n" -"[Bateria: %s]\n" +"[Batería: %s]\n" "Estado=%s\n" "Capacidad=%s / %s\n" -"Technologia de bateria=%s\n" -"Manufacturador=%s\n" -"Numero de modelo=%s\n" -"Numero de serial=%s\n" +"Tecnología de la batería=%s\n" +"Fabricante=%s\n" +"Número de modelo=%s\n" +"Número de serie=%s\n" -#: modules/devices/battery.c:346 +#: modules/devices/battery.c:343 #, c-format msgid "" "\n" @@ -1733,12 +2593,12 @@ msgstr "" "\n" "[Batería (APM)]\n" "Carga=%d%%\n" -"Carga restante=%s of %s\n" -"Usando=%s\n" -"Versión del driver APM=%s\n" -"APM BIOS version=%s\n" +"Carga restante=%s de %s\n" +"En uso=%s\n" +"Versión del controlador de APM=%s\n" +"Versión de APM del BIOS=%s\n" -#: modules/devices/battery.c:358 +#: modules/devices/battery.c:355 #, c-format msgid "" "\n" @@ -1751,287 +2611,200 @@ msgstr "" "\n" "[Batería (APM)]\n" "Carga=%d%%\n" -"Usando=%s\n" -"Versión del driver APM=%s\n" -"Versión del BIOS APM=%s\n" +"En uso=%s\n" +"Versión del controlador de APM=%s\n" +"Versión de APM del BIOS=%s\n" -#: modules/devices/battery.c:385 +#: modules/devices/battery.c:382 msgid "" "[No batteries]\n" "No batteries found on this system=\n" msgstr "" -"[Sin baterías]\n" -"No se encontraron baterías en este sistema=\n" +"[No hay baterías]\n" +"No se han encontrado baterías en el sistema=\n" -#: modules/devices.c:97 +#: modules/devices.c:100 +msgid "Graphics Processors" +msgstr "Procesadores gráficos" + +#: modules/devices.c:101 modules/devices/monitors.c:445 +#: modules/devices/monitors.c:492 +msgid "Monitors" +msgstr "Monitores" + +#: modules/devices.c:102 modules/devices/pci.c:163 msgid "PCI Devices" msgstr "Dispositivos PCI" -#: modules/devices.c:98 modules/devices/usb.c:117 modules/devices/usb.c:156 -#: modules/devices/usb.c:415 +#: modules/devices.c:103 modules/devices/usb.c:210 msgid "USB Devices" msgstr "Dispositivos USB" -#: modules/devices.c:100 +#: modules/devices.c:104 +msgid "Firmware" +msgstr "" + +#: modules/devices.c:106 msgid "Battery" msgstr "Batería" -#: modules/devices.c:101 +#: modules/devices.c:107 msgid "Sensors" msgstr "Sensores" -#: modules/devices.c:105 -msgid "DMI" -msgstr "DMI" - -#: modules/devices.c:106 -msgid "Memory SPD" -msgstr "Memoria SPD" +#: modules/devices.c:110 +msgid "System DMI" +msgstr "Sistema DMI" #: modules/devices.c:111 +msgid "Memory Devices" +msgstr "Dispositivos de memoria" + +#: modules/devices.c:113 modules/devices.c:115 msgid "Device Tree" -msgstr "Arbol de dispositivos" +msgstr "Árbol de dispositivos" -#: modules/devices.c:113 +#: modules/devices.c:117 msgid "Resources" msgstr "Recursos" -#: modules/devices.c:151 +#: modules/devices.c:177 #, c-format msgid "%d physical processor" msgid_plural "%d physical processors" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%d procesador real" +msgstr[1] "%d procesadores reales" -#: modules/devices.c:152 +#: modules/devices.c:178 #, c-format msgid "%d core" msgid_plural "%d cores" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%d núcleo" +msgstr[1] "%d núcleos" -#: modules/devices.c:153 +#: modules/devices.c:179 #, c-format msgid "%d thread" msgid_plural "%d threads" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%d hilo" +msgstr[1] "%d hilos" #. /NP procs; NC cores; NT threads -#: modules/devices.c:154 +#: modules/devices.c:180 #, c-format msgid "%s; %s; %s" msgstr "" -#: modules/devices.c:372 -msgid " (model unknown)" -msgstr " (modelo desconocido)" - -#: modules/devices.c:374 -msgid " (vendor unknown)" -msgstr " (proveedor desconocido)" - -#: modules/devices.c:559 -msgid "Field" -msgstr "Campo" - -#: modules/devices.c:559 modules/devices.c:591 -msgid "Value" -msgstr "Valor" - -#: modules/devices.c:591 +#: modules/devices.c:726 msgid "Sensor" msgstr "Sensor" -#: modules/devices.c:591 modules/devices/inputdevices.c:117 -msgid "Type" -msgstr "Tipo" - -#: modules/devices.c:637 +#: modules/devices.c:773 modules/devices/dmi_memory.c:826 msgid "Devices" msgstr "Dispositivos" -#: modules/devices.c:649 +#: modules/devices.c:785 msgid "Update PCI ID listing" -msgstr "Actualizar listado de ids PCI" +msgstr "Actualizar el listado de identificadores PCI" -#: modules/devices.c:661 +#: modules/devices.c:797 msgid "Update CPU feature database" -msgstr "Actualizar base de datos de características de CPU" +msgstr "Actualizar la base de datos de características de CPU" -#: modules/devices.c:689 +#: modules/devices.c:825 msgid "Gathers information about hardware devices" msgstr "Obtiene información acerca de los dispositivos de hardware" -#: modules/devices.c:708 +#: modules/devices.c:844 msgid "Resource information requires superuser privileges" -msgstr "Informacion de recursos require privilegios de superusuario" - -#: modules/devices/cpu_util.c:30 -msgid "Little Endian" -msgstr "Little Endian" - -#: modules/devices/cpu_util.c:32 -msgid "Big Endian" -msgstr "Big Endian" - -#: modules/devices/cpu_util.c:178 modules/devices/cpu_util.c:189 -msgid "Frequency Scaling" -msgstr "Escalador de frecuencia" - -#: modules/devices/cpu_util.c:179 -msgid "Minimum" -msgstr "Minimo" - -#: modules/devices/cpu_util.c:179 modules/devices/cpu_util.c:180 -#: modules/devices/cpu_util.c:181 -msgid "kHz" -msgstr "Khz" - -#: modules/devices/cpu_util.c:180 -msgid "Maximum" -msgstr "Maximo" - -#: modules/devices/cpu_util.c:181 -msgid "Current" -msgstr "Actual" +msgstr "La información de recursos require privilegios de administrador" -#: modules/devices/cpu_util.c:182 -msgid "Transition Latency" -msgstr "Latencia de transicion" - -#: modules/devices/cpu_util.c:182 -msgid "ns" -msgstr "ns" - -#: modules/devices/cpu_util.c:183 -msgid "Governor" -msgstr "Gobernador" - -#: modules/devices/cpu_util.c:184 modules/devices/cpu_util.c:190 -msgid "Driver" -msgstr "Manejador" - -#: modules/devices/cpu_util.c:196 modules/devices/x86/processor.c:297 -msgid "(Not Available)" -msgstr "(no disponible)" - -#: modules/devices/cpu_util.c:204 modules/devices/cpu_util.c:206 -msgid "Socket" -msgstr "Soket" - -#: modules/devices/cpu_util.c:209 modules/devices/cpu_util.c:211 -msgid "Core" -msgstr "Core" - -#: modules/devices/cpu_util.c:214 -msgid "Book" -msgstr "Asentamientos" - -#: modules/devices/cpu_util.c:216 -msgid "Drawer" -msgstr "Dibujado" - -#: modules/devices/cpu_util.c:223 -msgid "ID" -msgstr "ID" +#: modules/devices.c:850 +msgid "" +"Any NVMe storage devices present are not listed.\n" +"udisksd is required for NVMe devices." +msgstr "" +"Cualquier dispositivo de almacenamiento NVMe presente no está en la lista." +"Se requiere udisksd para los dispositivos NVMe." -#: modules/devices/devicetree.c:47 +#: modules/devices/devicetree.c:52 msgid "Properties" msgstr "Propiedades" -#: modules/devices/devicetree.c:48 +#: modules/devices/devicetree.c:53 msgid "Children" msgstr "Hijos" -#: modules/devices/devicetree.c:84 +#: modules/devices/devicetree.c:89 msgid "Node" msgstr "Nodo" -#: modules/devices/devicetree.c:85 +#: modules/devices/devicetree.c:90 msgid "Node Path" -msgstr "Ruta nodo" +msgstr "Ruta de nodo" -#: modules/devices/devicetree.c:86 +#: modules/devices/devicetree.c:91 msgid "Alias" -msgstr "Alterno" - -#: modules/devices/devicetree.c:86 modules/devices/devicetree.c:87 -msgid "(None)" -msgstr "(ninguno)" +msgstr "Alias" -#: modules/devices/devicetree.c:87 +#: modules/devices/devicetree.c:92 msgid "Symbol" -msgstr "Simbolo" +msgstr "Símbolo" -#: modules/devices/devicetree.c:132 modules/devices/devicetree/pmac_data.c:79 +#: modules/devices/devicetree.c:145 modules/devices/devicetree/pmac_data.c:79 msgid "Platform" msgstr "Plataforma" -#: modules/devices/devicetree.c:133 modules/devices/devicetree.c:178 +#: modules/devices/devicetree.c:146 modules/devices/devicetree.c:211 +#: modules/devices/gpu.c:231 msgid "Compatible" msgstr "Compatible" -#: modules/devices/devicetree.c:134 +#: modules/devices/devicetree.c:147 msgid "GPU-compatible" -msgstr "GPU-compatble" +msgstr "Compatible con GPU" -#: modules/devices/devicetree.c:140 +#: modules/devices/devicetree.c:162 msgid "Raspberry Pi or Compatible" -msgstr "Raspberry Pi o similar" +msgstr "Raspberry Pi o compatible" -#: modules/devices/devicetree.c:142 modules/devices/devicetree.c:160 -#: modules/devices/devicetree.c:177 modules/devices/devicetree/rpi_data.c:160 +#: modules/devices/devicetree.c:164 modules/devices/devicetree.c:191 +#: modules/devices/devicetree.c:210 modules/devices/devicetree/rpi_data.c:168 +#: modules/devices/dmi.c:41 modules/devices/dmi.c:51 modules/devices/dmi.c:57 +#: modules/devices/usb.c:178 msgid "Serial Number" -msgstr "Numero serial" +msgstr "Número de serie" -#: modules/devices/devicetree.c:143 modules/devices/devicetree/rpi_data.c:157 +#: modules/devices/devicetree.c:165 modules/devices/devicetree/rpi_data.c:165 +#, fuzzy msgid "RCode" -msgstr "Codigo R" +msgstr "" -#: modules/devices/devicetree.c:143 +#: modules/devices/devicetree.c:165 msgid "No revision code available; unable to lookup model details." -msgstr "No hay codigo de revision disponible, imposible obtener detalles" +msgstr "" +"No hay código de revisión disponible; no se pueden obtener detalles del" +" modelo." -#: modules/devices/devicetree.c:159 +#: modules/devices/devicetree.c:190 msgid "More" -msgstr "Mas" +msgstr "Más" -#: modules/devices/devicetree.c:175 -msgid "Board" -msgstr "Tarjeta" - -#: modules/devices/devicetree.c:234 +#: modules/devices/devicetree.c:271 msgid "Messages" msgstr "Mensajes" -#: modules/devices/devicetree/dt_util.c:1013 -msgid "phandle Map" -msgstr "Mapa manejado" - -#: modules/devices/devicetree/dt_util.c:1014 -msgid "Alias Map" -msgstr "Mapa alternativo" - -#: modules/devices/devicetree/dt_util.c:1015 -msgid "Symbol Map" -msgstr "Mapa de simbolos" - #: modules/devices/devicetree/pmac_data.c:78 msgid "Apple Power Macintosh" msgstr "Power Macintosh de Apple" -#: modules/devices/devicetree/pmac_data.c:81 modules/devices/sh/processor.c:85 -msgid "Machine" -msgstr "Maquina" - #: modules/devices/devicetree/pmac_data.c:83 msgid "Detected as" -msgstr "detectada como" +msgstr "Detectado como" #: modules/devices/devicetree/pmac_data.c:84 msgid "PMAC Flags" -msgstr "Semaforos PMAC" +msgstr "Indicadores de PMAC" #: modules/devices/devicetree/pmac_data.c:85 msgid "L2 Cache" @@ -2039,135 +2812,507 @@ msgstr "Cache L2" #: modules/devices/devicetree/pmac_data.c:86 msgid "PMAC Generation" -msgstr "PMAC generacion" +msgstr "Generación de PMAC" -#: modules/devices/devicetree/rpi_data.c:152 -#: modules/devices/devicetree/rpi_data.c:153 +#: modules/devices/devicetree/rpi_data.c:160 +#: modules/devices/devicetree/rpi_data.c:161 msgid "Raspberry Pi" msgstr "Raspberry Pi" -#: modules/devices/devicetree/rpi_data.c:153 +#: modules/devices/devicetree/rpi_data.c:161 msgid "Board Name" -msgstr "Nombre Tarjeta" +msgstr "Nombre de la tarjeta" -#: modules/devices/devicetree/rpi_data.c:154 +#: modules/devices/devicetree/rpi_data.c:162 msgid "PCB Revision" -msgstr "Revision PCB" +msgstr "Revisión de PCB" -#: modules/devices/devicetree/rpi_data.c:155 +#: modules/devices/devicetree/rpi_data.c:163 msgid "Introduction" -msgstr "Introducido" +msgstr "Presentado" -#: modules/devices/devicetree/rpi_data.c:156 modules/devices/spd-decode.c:1510 -#: modules/devices/usb.c:84 modules/devices/usb.c:217 +#: modules/devices/devicetree/rpi_data.c:164 modules/devices/usb.c:170 msgid "Manufacturer" -msgstr "Manufacturado" +msgstr "Fabricante" -#: modules/devices/devicetree/rpi_data.c:158 +#: modules/devices/devicetree/rpi_data.c:166 +#, fuzzy msgid "SOC (spec)" -msgstr "SOC (specif)" +msgstr "SOC (specifi)" -#: modules/devices/devicetree/rpi_data.c:159 +#: modules/devices/devicetree/rpi_data.c:167 +#, fuzzy msgid "Memory (spec)" msgstr "Memoria (specif)" -#: modules/devices/devicetree/rpi_data.c:161 +#: modules/devices/devicetree/rpi_data.c:169 msgid "Permanent overvolt bit" msgstr "Bit de sobrevoltage permanente" -#: modules/devices/devicetree/rpi_data.c:161 +#: modules/devices/devicetree/rpi_data.c:169 msgctxt "rpi-ov-bit" msgid "Set" msgstr "Asignado" -#: modules/devices/devicetree/rpi_data.c:161 +#: modules/devices/devicetree/rpi_data.c:169 msgctxt "rpi-ov-bit" msgid "Not set" -msgstr "Sin ajustar" - -#: modules/devices/devmemory.c:93 -msgid "Total Memory" -msgstr "Memoria total" +msgstr "No asignado" -#: modules/devices/devmemory.c:94 -msgid "Free Memory" -msgstr "Memoria Libre" +#: modules/devices/dmi.c:36 modules/devices/inputdevices.c:115 +#: modules/devices/usb.c:167 +msgid "Product" +msgstr "Producto" -#: modules/devices/devmemory.c:95 -msgid "Cached Swap" -msgstr "Intercambio" +#: modules/devices/dmi.c:38 modules/devices/ia64/processor.c:164 +#: modules/devices/sh/processor.c:86 +msgid "Family" +msgstr "Familia" -#: modules/devices/devmemory.c:96 -msgid "High Memory" -msgstr "Memoria alta" +#: modules/devices/dmi.c:42 +msgid "SKU" +msgstr "" -#: modules/devices/devmemory.c:97 -msgid "Free High Memory" -msgstr "Memoria alta libre" +#: modules/devices/dmi.c:43 +msgid "BIOS" +msgstr "" -#: modules/devices/devmemory.c:98 -msgid "Low Memory" -msgstr "Memoria base" +#: modules/devices/dmi.c:52 modules/devices/dmi.c:58 +msgid "Asset Tag" +msgstr "Etiqueta de propiedad" -#: modules/devices/devmemory.c:99 -msgid "Free Low Memory" -msgstr "Memoria base libre" +#: modules/devices/dmi.c:115 modules/devices/dmi_memory.c:882 +#: modules/devices/x86/processor.c:694 +msgid "(Not available; Perhaps try running HardInfo as root.)" +msgstr "" +"(no disponible; puede que funcione ejecutando HardInfo como administrador.)" -#: modules/devices/devmemory.c:100 -msgid "Virtual Memory" -msgstr "Memoria virtual" +#: modules/devices/dmi.c:156 +msgid "DMI Unavailable" +msgstr "DMI no disponible" -#: modules/devices/devmemory.c:101 -msgid "Free Virtual Memory" -msgstr "Memoria virtual libre" +#: modules/devices/dmi.c:158 +msgid "DMI is not avaliable. Perhaps this platform does not provide DMI." +msgstr "DMI no está disponible. Puede que esta plataforma no proporcione DMI." -#: modules/devices/dmi.c:188 -msgid "(Not available; Perhaps try running HardInfo as root.)" +#: modules/devices/dmi.c:159 +msgid "DMI is not available; Perhaps try running HardInfo as root." msgstr "" +"DMI no disponible; puede que funcione ejecutando HardInfo como administrador." -#: modules/devices/ia64/processor.c:108 -msgid "IA64 Processor" -msgstr "Procesador IA64" +#: modules/devices/dmi_memory.c:598 +msgid "Serial Presence Detect (SPD)" +msgstr "Detección de presencia física (SPD)" -#: modules/devices/ia64/processor.c:163 -msgid "Architecture Revision" -msgstr "Revision arquitectura" +#: modules/devices/dmi_memory.c:601 +msgid "SPD Revision" +msgstr "Revisión de SPD" -#: modules/devices/ia64/processor.c:164 modules/devices/sh/processor.c:86 -msgid "Family" -msgstr "Familia" +#: modules/devices/dmi_memory.c:602 modules/devices/dmi_memory.c:748 +msgid "Form Factor" +msgstr "Factor de forma" -#: modules/devices/ia64/processor.c:170 -msgid "CPU regs" -msgstr "Registros" +#: modules/devices/dmi_memory.c:604 +msgid "Module Vendor" +msgstr "Fabricante del módulo" -#: modules/devices/ia64/processor.c:171 -msgid "Features" -msgstr "Capacidades" +#: modules/devices/dmi_memory.c:606 +msgid "DRAM Vendor" +msgstr "Fabricante de la DRAM" -#: modules/devices/inputdevices.c:115 modules/devices/pci.c:214 -#: modules/devices/usb.c:82 modules/devices/usb.c:215 modules/devices/usb.c:347 -msgid "Device Information" +#: modules/devices/dmi_memory.c:608 modules/devices/dmi_memory.c:753 +msgid "Part Number" msgstr "" -#: modules/devices/inputdevices.c:118 modules/devices/usb.c:92 -#: modules/devices/usb.c:240 modules/devices/usb.c:356 -msgid "Bus" -msgstr "" +#: modules/devices/dmi_memory.c:610 +msgid "Manufacturing Date (Week / Year)" +msgstr "Fecha de fabricación (Semana / Año)" -#: modules/devices/inputdevices.c:120 modules/devices/usb.c:83 -#: modules/devices/usb.c:216 modules/devices/usb.c:348 -msgid "Product" -msgstr "" +#: modules/devices/dmi_memory.c:644 modules/devices/dmi_memory.c:879 +msgid "Memory Device List" +msgstr "Lista de dispositivos de memoria" -#: modules/devices/inputdevices.c:124 -msgid "Connected to" +#: modules/devices/dmi_memory.c:686 +msgid "Memory Array" +msgstr "Matriz de memoria" + +#: modules/devices/dmi_memory.c:687 modules/devices/x86/processor.c:713 +msgid "DMI Handle" msgstr "" -#: modules/devices/inputdevices.c:128 -msgid "InfraRed port" +#: modules/devices/dmi_memory.c:688 modules/devices/dmi_memory.c:746 +#: modules/devices/dmi_memory.c:784 modules/devices/dmi_memory.c:893 +msgid "Locator" +msgstr "Localizador" + +#: modules/devices/dmi_memory.c:689 +msgid "Use" +msgstr "" + +#: modules/devices/dmi_memory.c:690 +msgid "Error Correction Type" +msgstr "Tipo de corrección de errores" + +#: modules/devices/dmi_memory.c:691 +msgid "Size (Present / Max)" +msgstr "Tamaño (Presente / Máximo)" + +#: modules/devices/dmi_memory.c:692 +msgid "Devices (Populated / Sockets)" +msgstr "Dispositivos (Usados / Zócalos)" + +#: modules/devices/dmi_memory.c:693 modules/devices/dmi_memory.c:827 +msgid "Types Present" +msgstr "Tipos presentes" + +#: modules/devices/dmi_memory.c:744 modules/devices/dmi_memory.c:782 +msgid "Memory Socket" +msgstr "Zócalo de memoria" + +#: modules/devices/dmi_memory.c:745 modules/devices/dmi_memory.c:783 +msgid "DMI Handles (Array, Socket)" +msgstr "" + +#: modules/devices/dmi_memory.c:747 modules/devices/dmi_memory.c:785 +msgid "Bank Locator" +msgstr "Localizador de banco" + +#: modules/devices/dmi_memory.c:755 +msgid "Rated Speed" +msgstr "Velocidad nominal" + +#: modules/devices/dmi_memory.c:756 +msgid "Configured Speed" +msgstr "Velocidad configurada" + +#: modules/devices/dmi_memory.c:757 +msgid "Data Width/Total Width" +msgstr "Ancho de datos/Ancho total" + +#: modules/devices/dmi_memory.c:758 +msgid "Rank" +msgstr "Rango" + +#: modules/devices/dmi_memory.c:759 +msgid "Minimum Voltage" +msgstr "Voltaje mínimo" + +#: modules/devices/dmi_memory.c:760 +msgid "Maximum Voltage" +msgstr "Voltaje máximo" + +#: modules/devices/dmi_memory.c:761 +msgid "Configured Voltage" +msgstr "Voltaje configurado" + +#: modules/devices/dmi_memory.c:786 modules/devices/dmi_memory.c:793 +#: modules/devices/monitors.c:492 +msgid "(Empty)" +msgstr "(Vacío)" + +#: modules/devices/dmi_memory.c:824 +msgid "Serial Presence Detect (SPD) Summary" +msgstr "Resumen de la Detección de presencia física (SPD)" + +#: modules/devices/dmi_memory.c:947 +msgid " dmidecode utility available" +msgstr " dmidecode utilidad no disponible" + +#: modules/devices/dmi_memory.c:948 +msgid " ... and HardInfo running with superuser privileges" +msgstr " ... y HardInfo ejecutándose con privilegios de administrador" + +#: modules/devices/dmi_memory.c:949 +msgid " eeprom module loaded (for SDR, DDR, DDR2, DDR3)" +msgstr " el módulo eeprom cargado (para SDR, DDR, DDR2, DDR3)" + +#: modules/devices/dmi_memory.c:950 +msgid "" +" ... or ee1004 module loaded and configured! " +"(for DDR4)" +msgstr "" +" ... o el módulo ee1004 cargado ¡y configurado! " +"(para DDR4)" + +#: modules/devices/dmi_memory.c:961 +msgid "Memory information requires one or both of the following:" +msgstr "" +"La información sobre la memoria requiere de al menos uno de lo" +" siguiente:" + +#: modules/devices/dmi_memory.c:982 +msgid "" +"\"More often than not, information contained in the DMI tables is " +"inaccurate,\n" +"incomplete or simply wrong.\" -dmidecode manual page" +msgstr "" +"«La mayoría de las veces, la información contenida en las tablas de DMI es " +"inexacta,\n" +"incompleta o simplemente incorrecta». -página del manual de dmidecode<" +"/b>" + +#: modules/devices/firmware.c:69 +msgid "Device cannot be removed easily" +msgstr "El dispositivo no puede extraerse fácilmente" + +#: modules/devices/firmware.c:70 +msgid "Device is updatable in this or any other mode" +msgstr "El dispositivo se puede actualizar en este o cualquier otro modo" + +#: modules/devices/firmware.c:71 +msgid "Update can only be done from offline mode" +msgstr "" + +#: modules/devices/firmware.c:72 +msgid "Requires AC power" +msgstr "Require corriente alterna" + +#: modules/devices/firmware.c:73 +msgid "Is locked and can be unlocked" +msgstr "Está bloqueado y no puede desbloquearse" + +#: modules/devices/firmware.c:74 +msgid "Is found in current metadata" +msgstr "Se encuentra en los metadatos actuales" + +#: modules/devices/firmware.c:75 +msgid "Requires a bootloader mode to be manually enabled by the user" +msgstr "" +"Requiere que el usuario habilite manualmente un modo del cargador de arranque" + +#: modules/devices/firmware.c:76 +msgid "Has been registered with other plugins" +msgstr "Ha sido registrado con otros complementos" + +#: modules/devices/firmware.c:77 +msgid "Requires a reboot to apply firmware or to reload hardware" +msgstr "Requiere reiniciar para aplicar el firmware o recargar el hardware" + +#: modules/devices/firmware.c:78 +msgid "Requires system shutdown to apply firmware" +msgstr "Requiere apagar el sistema para aplicar el firmware" + +#: modules/devices/firmware.c:79 +msgid "Has been reported to a metadata server" +msgstr "Ha sido reportado a un servidor de metadatos" + +#: modules/devices/firmware.c:80 +msgid "User has been notified" +msgstr "El usuario ha sido notificado" + +#: modules/devices/firmware.c:81 +msgid "Always use the runtime version rather than the bootloader" +msgstr "" + +#: modules/devices/firmware.c:82 +msgid "Install composite firmware on the parent before the child" +msgstr "" + +#: modules/devices/firmware.c:83 +msgid "Is currently in bootloader mode" +msgstr "Está actualmente en modo cargador de arranque" + +#: modules/devices/firmware.c:84 +msgid "The hardware is waiting to be replugged" +msgstr "El hardware está a la espera de ser reconectado" + +#: modules/devices/firmware.c:85 +msgid "Ignore validation safety checks when flashing this device" +msgstr "" +"Ignorar las comprobaciones de seguridad de validación al actualizar este" +" dispositivo" + +#: modules/devices/firmware.c:86 +msgid "Requires the update to be retried with a new plugin" +msgstr "" +"Requiere que la actualización se vuelva a intentar con un nuevo complemento" + +#: modules/devices/firmware.c:87 +msgid "Do not add instance IDs from the device baseclass" +msgstr "" +"No añada identificaciones de instancia de la clase base del dispositivo" + +#: modules/devices/firmware.c:88 +msgid "Device update needs to be separately activated" +msgstr "La actualización del dispositivo debe ser activada por separado" + +#: modules/devices/firmware.c:89 +msgid "" +"Ensure the version is a valid semantic version, e.g. numbers separated with " +"dots" +msgstr "" +"Asegúrese de que la versión es una versión semántica válida, por ejemplo, " +"números separados por puntos" + +#: modules/devices/firmware.c:90 +msgid "Extra metadata can be exposed about this device" +msgstr "Se pueden exponer metadatos adicionales sobre este dispositivo" + +#: modules/devices/firmware.c:104 +msgid "DeviceId" +msgstr "" + +#: modules/devices/firmware.c:104 +msgid "Guid" +msgstr "" + +#: modules/devices/firmware.c:104 +msgid "Plugin" +msgstr "Complemento" + +#: modules/devices/firmware.c:104 modules/network.c:380 +msgid "Flags" +msgstr "Indicadores" + +#: modules/devices/firmware.c:105 +msgid "VendorId" +msgstr "" + +#: modules/devices/firmware.c:105 +msgid "VersionBootloader" +msgstr "" + +#: modules/devices/firmware.c:106 +msgid "Icon" +msgstr "Icono" + +#: modules/devices/firmware.c:106 +msgid "InstallDuration" +msgstr "" + +#: modules/devices/firmware.c:106 +msgid "Created" +msgstr "Creado" + +#: modules/devices/firmware.c:245 +msgid "Firmware List" +msgstr "Lista de firmware" + +#: modules/devices/firmware.c:258 +msgid "Requires the fwupdmgr utility." +msgstr "Requiere la utilidad fwupdmgr." + +#: modules/devices/gpu.c:84 modules/devices/pci.c:97 +msgid "SVendor" +msgstr "" + +#: modules/devices/gpu.c:85 modules/devices/pci.c:98 +msgid "SDevice" +msgstr "" + +#: modules/devices/gpu.c:93 modules/devices/pci.c:108 +msgid "PCI Express" +msgstr "" + +#: modules/devices/gpu.c:94 modules/devices/pci.c:110 +msgid "Maximum Link Width" +msgstr "Ancho máximo del enlace" + +#: modules/devices/gpu.c:95 modules/devices/pci.c:112 +msgid "Maximum Link Speed" +msgstr "Velocidad máxima del enlace" + +#: modules/devices/gpu.c:95 modules/devices/pci.c:111 modules/devices/pci.c:112 +msgid "GT/s" +msgstr "" + +#: modules/devices/gpu.c:105 +msgid "NVIDIA" msgstr "" +#: modules/devices/gpu.c:107 +msgid "BIOS Version" +msgstr "Versión del BIOS" + +#: modules/devices/gpu.c:108 +msgid "UUID" +msgstr "" + +#: modules/devices/gpu.c:142 modules/devices/gpu.c:222 +#: modules/devices/inputdevices.c:110 modules/devices/pci.c:129 +#: modules/devices/usb.c:166 +msgid "Device Information" +msgstr "Información del dispositivo" + +#: modules/devices/gpu.c:143 modules/devices/gpu.c:223 +msgid "Location" +msgstr "Ubicación" + +#: modules/devices/gpu.c:144 +msgid "DRM Device" +msgstr "Dispositivo DRM" + +#: modules/devices/gpu.c:145 modules/devices/pci.c:130 +#: modules/devices/usb.c:133 modules/devices/usb.c:174 +msgid "Class" +msgstr "Clase" + +#: modules/devices/gpu.c:154 modules/devices/pci.c:135 +msgid "In Use" +msgstr "En uso" + +#: modules/devices/gpu.c:185 +msgid "Unknown integrated GPU" +msgstr "GPU integrada desconocida" + +#: modules/devices/gpu.c:191 +msgid "clock-frequency property" +msgstr "" + +#: modules/devices/gpu.c:192 +msgid "Operating Points (OPPv1)" +msgstr "" + +#: modules/devices/gpu.c:193 +msgid "Operating Points (OPPv2)" +msgstr "" + +#: modules/devices/gpu.c:229 +msgid "Device Tree Node" +msgstr "Nodo del árbol de dispositivos" + +#: modules/devices/gpu.c:232 modules/devices/monitors.c:471 +#: modules/network/net.c:454 +msgid "Status" +msgstr "Estado" + +#: modules/devices/gpu.c:249 +msgid "GPUs" +msgstr "" + +#: modules/devices/gpu.c:273 +msgid "No GPU devices found" +msgstr "No se han encontrado procesadores de gráficos (GPU)" + +#: modules/devices/ia64/processor.c:108 +msgid "IA64 Processor" +msgstr "Procesador IA64" + +#: modules/devices/ia64/processor.c:163 +msgid "Architecture Revision" +msgstr "Revisión de la arquitectura" + +#: modules/devices/ia64/processor.c:170 +msgid "CPU regs" +msgstr "Registros de la CPU" + +#: modules/devices/ia64/processor.c:171 +msgid "Features" +msgstr "Características" + +#: modules/devices/inputdevices.c:113 modules/devices/pci.c:139 +#: modules/devices/usb.c:180 +msgid "Bus" +msgstr "Bus" + +#: modules/devices/inputdevices.c:119 +msgid "Connected to" +msgstr "Conectado a" + +#: modules/devices/inputdevices.c:123 +msgid "InfraRed port" +msgstr "Puerto infrarrojo" + #: modules/devices/m68k/processor.c:85 modules/devices/riscv/processor.c:185 msgid "MMU" msgstr "MMU" @@ -2178,85 +3323,191 @@ msgstr "FPU" #: modules/devices/m68k/processor.c:90 msgid "Calibration" -msgstr "Calibracion" +msgstr "Calibración" #: modules/devices/mips/processor.c:76 msgid "System Type" -msgstr "Tipo sistema" +msgstr "Tipo de sistema" -#: modules/devices/parisc/processor.c:107 -msgid "PA-RISC Processor" -msgstr "Procesador PA-RISC" +#: modules/devices/monitors.c:29 modules/devices/monitors.c:253 +#: modules/devices/monitors.c:346 modules/devices/spd-decode.c:595 +msgid "(Unspecified)" +msgstr "(Sin especificar)" -#: modules/devices/parisc/processor.c:157 -msgid "System" -msgstr "Sistema" +#: modules/devices/monitors.c:228 +#, c-format +msgid "Week %d of %d" +msgstr "Semana %d de %d" -#: modules/devices/parisc/processor.c:161 -msgid "HVersion" -msgstr "HVersion" +#: modules/devices/monitors.c:238 +msgid "Ok" +msgstr "Correcto" -#: modules/devices/parisc/processor.c:162 -msgid "SVersion" -msgstr "SVersion" +#: modules/devices/monitors.c:238 +msgid "Fail" +msgstr "Error" -#: modules/devices/parisc/processor.c:163 modules/devices/x86/processor.c:425 -msgid "Cache" -msgstr "Cache" +#: modules/devices/monitors.c:266 modules/devices/monitors.c:274 +#: modules/devices/monitors.c:282 modules/devices/monitors.c:293 +#: modules/devices/monitors.c:301 modules/devices/monitors.c:308 +#: modules/devices/monitors.c:316 modules/devices/monitors.c:324 +#: modules/devices/monitors.c:332 modules/devices/monitors.c:338 +msgid "(Empty List)" +msgstr "(Lista vacía)" -#: modules/devices/pci.c:106 -msgid "IRQ" -msgstr "" +#: modules/devices/monitors.c:390 +msgid "Signal Type" +msgstr "Tipo de señal" -#: modules/devices/pci.c:110 -msgid "Latency" -msgstr "" +#: modules/devices/monitors.c:390 +msgid "Digital" +msgstr "Digital" -#: modules/devices/pci.c:112 -msgid "Bus Master" -msgstr "" +#: modules/devices/monitors.c:390 +msgid "Analog" +msgstr "Analógica" -#: modules/devices/pci.c:118 -msgid "Kernel modules" -msgstr "" +#: modules/devices/monitors.c:391 modules/devices/usb.c:132 +#: modules/network.c:310 modules/network.c:363 modules/network.c:380 +msgid "Interface" +msgstr "Interfaz" -#: modules/devices/pci.c:124 -#, c-format -msgid "%s=%s (%s)\n" -msgstr "" +#: modules/devices/monitors.c:392 +msgid "Bits per Color Channel" +msgstr "Bits por canal de color" -#: modules/devices/pci.c:126 -msgid "OEM Vendor" +#: modules/devices/monitors.c:393 +msgid "Speaker Allocation" msgstr "" -#: modules/devices/pci.c:153 -msgid "prefetchable" +#: modules/devices/monitors.c:394 +msgid "Output (Max)" +msgstr "Salida (Máx.)" + +#: modules/devices/monitors.c:397 +msgid "EDID Device" +msgstr "Dispositivo EDID" + +#: modules/devices/monitors.c:401 +msgid "Serial" +msgstr "Número de serie" + +#: modules/devices/monitors.c:402 +msgid "Manufacture Date" +msgstr "Fecha de fabricación" + +#: modules/devices/monitors.c:403 +msgid "EDID Meta" +msgstr "Metadatos del EDID" + +#: modules/devices/monitors.c:404 +msgid "Data Size" +msgstr "Tamaño de datos" + +#: modules/devices/monitors.c:404 +msgid "bytes" msgstr "" -#: modules/devices/pci.c:154 -msgid "non-prefetchable" +#: modules/devices/monitors.c:406 +msgid "Extension Blocks" +msgstr "Bloques de extensión" + +#: modules/devices/monitors.c:407 +msgid "Extended to" +msgstr "Extendido hasta" + +#: modules/devices/monitors.c:408 +msgid "Checksum" +msgstr "Suma de verificación" + +#: modules/devices/monitors.c:409 +msgid "EDID Descriptors" +msgstr "Descriptores EDID" + +#: modules/devices/monitors.c:410 +msgid "Detailed Timing Descriptors (DTD)" +msgstr "Descriptores de temporización detallados (DTD)" + +#: modules/devices/monitors.c:411 +msgid "Established Timings Bitmap (ETB)" +msgstr "Mapa de bits de tiempos establecidos (ETB)" + +#: modules/devices/monitors.c:412 +msgid "Standard Timings (STD)" +msgstr "Cronometraje estándar (STD)" + +#: modules/devices/monitors.c:413 +msgid "E-EDID Extension Blocks" +msgstr "Bloques de extensión E-EDID" + +#: modules/devices/monitors.c:414 +msgid "EIA/CEA-861 Data Blocks" +msgstr "Bloques de datos EIA/CEA-861" + +#: modules/devices/monitors.c:415 +msgid "EIA/CEA-861 Short Audio Descriptors" +msgstr "Descriptores de audio cortos EIA/CEA-861" + +#: modules/devices/monitors.c:416 +msgid "EIA/CEA-861 Short Video Descriptors" +msgstr "Descriptores de vídeo cortos EIA/CEA-861" + +#: modules/devices/monitors.c:417 +msgid "DisplayID Timings" msgstr "" -#: modules/devices/pci.c:163 -msgid "I/O ports at" +#: modules/devices/monitors.c:418 +msgid "DisplayID Strings" msgstr "" -#: modules/devices/pci.c:216 modules/devices/usb.c:89 modules/devices/usb.c:237 -#: modules/devices/usb.c:353 -msgid "Class" +#: modules/devices/monitors.c:419 +msgid "Hex Dump" +msgstr "Volcado hexadecimal" + +#: modules/devices/monitors.c:419 +msgid "Data" +msgstr "Datos" + +#: modules/devices/monitors.c:469 modules/devices/monitors.c:501 +#: modules/devices/pci.c:137 modules/devices/usb.c:179 +msgid "Connection" +msgstr "Conexión" + +#: modules/devices/monitors.c:470 +msgid "DRM" msgstr "" -#: modules/devices/pci.c:217 +#: modules/devices/parisc/processor.c:107 +msgid "PA-RISC Processor" +msgstr "Procesador PA-RISC" + +#: modules/devices/parisc/processor.c:161 +msgid "HVersion" +msgstr "HVersion" + +#: modules/devices/parisc/processor.c:162 +msgid "SVersion" +msgstr "SVersion" + +#: modules/devices/pci.c:109 +msgid "Link Width" +msgstr "Ancho del enlace" + +#: modules/devices/pci.c:111 +msgid "Link Speed" +msgstr "Velocidad del enlace" + +#: modules/devices/pci.c:138 msgid "Domain" -msgstr "" +msgstr "Dominio" -#: modules/devices/pci.c:218 -msgid "Bus, device, function" -msgstr "" +#: modules/devices/pci.c:141 +msgid "Function" +msgstr "Función" -#: modules/devices/pci.c:243 +#: modules/devices/pci.c:185 msgid "No PCI devices found" -msgstr "" +msgstr "No se han encontrado dispositivos PCI" #: modules/devices/ppc/processor.c:117 msgid "POWER Processor" @@ -2272,11 +3523,11 @@ msgstr "⚬ Puede imprimir en color=\n" #: modules/devices/printers.c:85 msgid "⚬ Can do duplexing=\n" -msgstr "⚬ Can do duplexing=\n" +msgstr "⚬ Puede hacer duplicados=\n" #: modules/devices/printers.c:87 msgid "⚬ Can do staple output=\n" -msgstr "⚬ Puede engrapar la salida=\n" +msgstr "⚬ Puede grapar la salida=\n" #: modules/devices/printers.c:89 msgid "⚬ Can do copies=\n" @@ -2284,7 +3535,7 @@ msgstr "⚬ Puede hacer copias=\n" #: modules/devices/printers.c:91 msgid "⚬ Can collate copies=\n" -msgstr "⚬ Puede compaginar copias=\n" +msgstr "⚬ Puede intercalar copias=\n" #: modules/devices/printers.c:93 msgid "⚬ Printer is rejecting jobs=\n" @@ -2296,7 +3547,7 @@ msgstr "⚬ La impresora fue encontrada automáticamente y agregada=\n" #: modules/devices/printers.c:110 msgid "Idle" -msgstr "Ocioso" +msgstr "En reposo" #: modules/devices/printers.c:112 msgid "Printing a Job" @@ -2312,7 +3563,7 @@ msgid "" "No suitable CUPS library found=" msgstr "" "[Impresoras]\n" -"No se encontró ninguna biblioteca CUPS usable=" +"No se ha encontrado ninguna biblioteca CUPS adecuada=" #: modules/devices/printers.c:200 msgid "[Printers (CUPS)]\n" @@ -2324,7 +3575,7 @@ msgid "" "No printers found=\n" msgstr "" "[Impresoras]\n" -"No se encontraron impresoras=\n" +"No se han encontrado impresoras=\n" #: modules/devices/riscv/processor.c:107 msgid "RISC-V Processor" @@ -2354,12 +3605,14 @@ msgstr "RISC-V 128-bit" #. /ext:E #: modules/devices/riscv/riscv_data.c:40 +#, fuzzy msgctxt "rv-ext" msgid "Base embedded integer instructions (15 registers)" msgstr "Instrucciones de enteros embebidas base (15 registros)" #. /ext:I #: modules/devices/riscv/riscv_data.c:41 +#, fuzzy msgctxt "rv-ext" msgid "Base integer instructions (31 registers)" msgstr "Instrucciones de enteros base (31 registros)" @@ -2368,49 +3621,49 @@ msgstr "Instrucciones de enteros base (31 registros)" #: modules/devices/riscv/riscv_data.c:42 msgctxt "rv-ext" msgid "Hardware integer multiply and divide" -msgstr "Multiplicador y divisor de enteros por hardware" +msgstr "Multiplicación y división de enteros por hardware" #. /ext:A #: modules/devices/riscv/riscv_data.c:43 msgctxt "rv-ext" msgid "Atomic memory operations" -msgstr "Operaciones de memoria unificadas" +msgstr "Operaciones de memoria atómicas" #. /ext:C #: modules/devices/riscv/riscv_data.c:44 msgctxt "rv-ext" msgid "Compressed 16-bit instructions" -msgstr "Intrucciones compresion 16-bit" +msgstr "Instrucciones comprimidas de 16 bits" #. /ext:F #: modules/devices/riscv/riscv_data.c:45 msgctxt "rv-ext" msgid "Floating-point instructions, single-precision" -msgstr "Instrucciones punto-flotante, precision simple" +msgstr "Instrucciones de punto-flotante, precision simple" #. /ext:D #: modules/devices/riscv/riscv_data.c:46 msgctxt "rv-ext" msgid "Floating-point instructions, double-precision" -msgstr "Instrucciones punto-flotante, precision doble" +msgstr "Instrucciones de punto-flotante, precision doble" #. /ext:Q #: modules/devices/riscv/riscv_data.c:47 msgctxt "rv-ext" msgid "Floating-point instructions, quad-precision" -msgstr "Instrucciones punto-flotante, precision cuadruple" +msgstr "Instrucciones de punto-flotante, precision cuádruple" #. /ext:B #: modules/devices/riscv/riscv_data.c:48 msgctxt "rv-ext" msgid "Bit manipulation instructions" -msgstr "Instrucciones de manipulacion de bit" +msgstr "Instrucciones de manipulación de bits" #. /ext:V #: modules/devices/riscv/riscv_data.c:49 msgctxt "rv-ext" msgid "Vector operations" -msgstr "Operaciones de Vector" +msgstr "Operaciones de vectores" #. /ext:T #: modules/devices/riscv/riscv_data.c:50 @@ -2428,69 +3681,466 @@ msgstr "Instrucciones SIMD empaquetadas" #: modules/devices/riscv/riscv_data.c:52 msgctxt "rv-ext" msgid "Decimal floating-point instructions" -msgstr "Instrucciones punto-flotante decimales" +msgstr "Instrucciones de punto-flotante decimales" + +#. /ext:J +#: modules/devices/riscv/riscv_data.c:53 +msgctxt "rv-ext" +msgid "Dynamically translated languages" +msgstr "Idiomas traducidos dinámicamente" + +#. /ext:N +#: modules/devices/riscv/riscv_data.c:54 +msgctxt "rv-ext" +msgid "User-level interrupts" +msgstr "Interrupciones de nivel de usuario" + +#: modules/devices/s390/processor.c:92 +msgid "S390 Processor" +msgstr "Procesador S390" + +#: modules/devices/s390/processor.c:133 +msgid "ID String" +msgstr "Cadena de identificación" + +#: modules/devices/sh/processor.c:55 +msgid "SuperH Processor" +msgstr "Procesador SuperH" + +#: modules/devices/sh/processor.c:88 +msgid "Bus Frequency" +msgstr "Frecuencia del Bus" + +#: modules/devices/sh/processor.c:89 +msgid "Module Frequency" +msgstr "Frecuencia modular" + +#: modules/devices/spd-decode.c:306 +msgid "Row address bits" +msgstr "Bits de dirección de fila" + +#: modules/devices/spd-decode.c:307 +msgid "Column address bits" +msgstr "Bits de dirección de columna" + +#: modules/devices/spd-decode.c:308 +msgid "Number of rows" +msgstr "Número de filas" + +#: modules/devices/spd-decode.c:309 +msgid "Data width" +msgstr "Ancho de datos" + +#: modules/devices/spd-decode.c:310 +msgid "Interface signal levels" +msgstr "Niveles de señal de la interfaz" + +#: modules/devices/spd-decode.c:311 +msgid "Configuration type" +msgstr "Tipo de configuración" + +#: modules/devices/spd-decode.c:312 +msgid "Refresh" +msgstr "Actualizar" + +#: modules/devices/spd-decode.c:313 modules/devices/spd-decode.c:397 +#: modules/devices/spd-decode.c:492 modules/devices/spd-decode.c:617 +msgid "Timings" +msgstr "Cronometraje" + +#: modules/devices/spd-decode.c:593 +msgid "Ranks" +msgstr "Rangos" + +#: modules/devices/spd-decode.c:594 +msgid "IO Pins per Chip" +msgstr "Pines de E/S por chip" + +#: modules/devices/spd-decode.c:595 +msgid "Die count" +msgstr "" + +#: modules/devices/spd-decode.c:596 +msgid "Thermal Sensor" +msgstr "Sensor térmico" + +#: modules/devices/spd-decode.c:596 +msgid "Present" +msgstr "Presente" + +#: modules/devices/spd-decode.c:596 +msgid "Not present" +msgstr "No presente" + +#: modules/devices/spd-decode.c:597 +msgid "Supported Voltages" +msgstr "Voltajes admitidos" + +#: modules/devices/spd-decode.c:601 +msgid "Supported CAS Latencies" +msgstr "Latencias CAS admitidas" + +#: modules/devices/spd-decode.c:638 +msgid "Invalid" +msgstr "Inválido" + +#: modules/devices/spd-decode.c:870 +msgid "XMP Profile" +msgstr "Perfil XMP" + +#: modules/devices/spd-decode.c:871 modules/devices/usb.c:173 +msgid "Speed" +msgstr "Velocidad" + +#: modules/devices/spd-decode.c:872 modules/devices/spd-decode.c:914 +#: modules/devices/x86/processor.c:715 +msgid "Voltage" +msgstr "Voltaje" + +#: modules/devices/spd-decode.c:873 +msgid "XMP Timings" +msgstr "" + +#: modules/devices/spd-decode.c:915 +msgid "XMP" +msgstr "" + +#: modules/devices/spd-decode.c:916 +msgid "JEDEC Timings" +msgstr "" + +#: modules/devices/storage.c:84 +msgid "Read Error Rate" +msgstr "Tasa de errores de lectura" + +#: modules/devices/storage.c:85 +msgid "Throughput Performance" +msgstr "" + +#: modules/devices/storage.c:86 +msgid "Spin-Up Time" +msgstr "" + +#: modules/devices/storage.c:87 +msgid "Start/Stop Count" +msgstr "" + +#: modules/devices/storage.c:88 +msgid "Reallocated Sector Count" +msgstr "Número de sectores reasignados" + +#: modules/devices/storage.c:89 +msgid "Read Channel Margin" +msgstr "" + +#: modules/devices/storage.c:90 +msgid "Seek Error Rate" +msgstr "" + +#: modules/devices/storage.c:91 +msgid "Seek Timer Performance" +msgstr "" + +#: modules/devices/storage.c:92 modules/devices/storage.c:131 +msgid "Power-On Hours" +msgstr "Horas encendido" + +#: modules/devices/storage.c:93 +msgid "Spin Retry Count" +msgstr "" + +#: modules/devices/storage.c:94 +msgid "Calibration Retry Count" +msgstr "" + +#: modules/devices/storage.c:95 +msgid "Power Cycle Count" +msgstr "" + +#: modules/devices/storage.c:96 modules/devices/storage.c:113 +msgid "Soft Read Error Rate" +msgstr "" + +#: modules/devices/storage.c:97 +msgid "Runtime Bad Block" +msgstr "" + +#: modules/devices/storage.c:98 +msgid "End-to-End error" +msgstr "" + +#: modules/devices/storage.c:99 +msgid "Reported Uncorrectable Errors" +msgstr "Errores incorregibles reportados" + +#: modules/devices/storage.c:100 +msgid "Command Timeout" +msgstr "Tiempo de espera del comando" + +#: modules/devices/storage.c:101 +msgid "High Fly Writes" +msgstr "" + +#: modules/devices/storage.c:102 +msgid "Airflow Temperature" +msgstr "Temperatura del aire" + +#: modules/devices/storage.c:103 +msgid "G-sense Error Rate" +msgstr "" + +#: modules/devices/storage.c:104 +msgid "Power-off Retract Count" +msgstr "" + +#: modules/devices/storage.c:105 +msgid "Load Cycle Count" +msgstr "Contador de ciclos de carga" + +#: modules/devices/storage.c:106 modules/devices/storage.c:129 +msgid "Temperature" +msgstr "Temperatura" + +#: modules/devices/storage.c:107 +msgid "Hardware ECC Recovered" +msgstr "" + +#: modules/devices/storage.c:108 +msgid "Reallocation Event Count" +msgstr "Número de eventos de reasignación" + +#: modules/devices/storage.c:109 +msgid "Current Pending Sector Count" +msgstr "Número actual de sectores pendientes" + +#: modules/devices/storage.c:110 +msgid "Uncorrectable Sector Count" +msgstr "Número de sectores incorregibles" + +#: modules/devices/storage.c:111 +msgid "UltraDMA CRC Error Count" +msgstr "" + +#: modules/devices/storage.c:112 +msgid "Multi-Zone Error Rate" +msgstr "" + +#: modules/devices/storage.c:114 +msgid "Run Out Cancel" +msgstr "" + +#: modules/devices/storage.c:115 +msgid "Flying Height" +msgstr "" + +#: modules/devices/storage.c:116 +msgid "Spin High Current" +msgstr "" + +#: modules/devices/storage.c:117 +msgid "Spin Buzz" +msgstr "" + +#: modules/devices/storage.c:118 +msgid "Offline Seek Performance" +msgstr "" + +#: modules/devices/storage.c:119 +msgid "Disk Shift" +msgstr "" + +#: modules/devices/storage.c:120 +msgid "G-Sense Error Rate" +msgstr "" + +#: modules/devices/storage.c:121 +msgid "Loaded Hours" +msgstr "" + +#: modules/devices/storage.c:122 +msgid "Load/Unload Retry Count" +msgstr "Número de reintentos de carga y descarga" + +#: modules/devices/storage.c:123 +msgid "Load Friction" +msgstr "" + +#: modules/devices/storage.c:124 +msgid "Load/Unload Cycle Count" +msgstr "Número de ciclos de carga y descarga" + +#: modules/devices/storage.c:125 +msgid "Load-in time" +msgstr "" + +#: modules/devices/storage.c:126 +msgid "Torque Amplification Count" +msgstr "" + +#: modules/devices/storage.c:127 +msgid "Power-Off Retract Count" +msgstr "" + +#: modules/devices/storage.c:128 +msgid "GMR Head Amplitude" +msgstr "" + +#: modules/devices/storage.c:130 +msgid "Endurance Remaining" +msgstr "" + +#: modules/devices/storage.c:132 +msgid "Good Block Rate" +msgstr "" + +#: modules/devices/storage.c:133 +msgid "Head Flying Hours" +msgstr "" + +#: modules/devices/storage.c:134 +msgid "Read Error Retry Rate" +msgstr "" + +#: modules/devices/storage.c:135 +msgid "Total LBAs Written" +msgstr "Total de LBAs escritas" + +#: modules/devices/storage.c:136 +msgid "Total LBAs Read" +msgstr "Total de LBAs leídas" + +#: modules/devices/storage.c:141 +msgid "" +"\n" +"[UDisks2]\n" +msgstr "" + +#: modules/devices/storage.c:199 +msgid "Removable" +msgstr "Extraíble" + +#: modules/devices/storage.c:199 +msgid "Fixed" +msgstr "Fijo" + +#: modules/devices/storage.c:202 +msgid "Ejectable" +msgstr "Extraíble" + +#: modules/devices/storage.c:205 +msgid "Self-monitoring (S.M.A.R.T.)" +msgstr "" + +#: modules/devices/storage.c:208 modules/devices/x86/processor.c:663 +msgid "Power Management" +msgstr "Gestión de energía" + +#: modules/devices/storage.c:211 +msgid "Advanced Power Management" +msgstr "Gestión de energía avanzada" + +#: modules/devices/storage.c:214 +msgid "Automatic Acoustic Management" +msgstr "Gestión acústica automática" + +#: modules/devices/storage.c:217 +#, c-format +msgid "" +"[Drive Information]\n" +"Model=%s\n" +msgstr "" +"[Información de la unidad]\n" +"Modelo=%s\n" + +#: modules/devices/storage.c:221 modules/devices/storage.c:449 +#: modules/devices/storage.c:648 +#, c-format +msgid "Vendor=%s\n" +msgstr "Fabricante=%s\n" -#. /ext:J -#: modules/devices/riscv/riscv_data.c:53 -msgctxt "rv-ext" -msgid "Dynamically translated languages" -msgstr "Traduccion de lenguajes dinamicamente" +#: modules/devices/storage.c:226 +#, c-format +msgid "" +"Revision=%s\n" +"Block Device=%s\n" +"Serial=%s\n" +"Size=%s\n" +"Features=%s\n" +msgstr "" +"Revisión=%s\n" +"Dispositivo de bloques=%s\n" +"Número de serie=%s\n" +"Tamaño=%s\n" +"Características=%s\n" -#. /ext:N -#: modules/devices/riscv/riscv_data.c:54 -msgctxt "rv-ext" -msgid "User-level interrupts" -msgstr "Interrupciones de nivel de usuario" +#: modules/devices/storage.c:240 +#, c-format +msgid "Rotation Rate=%d RPM\n" +msgstr "Velocidad de rotación=%d RPM\n" -#: modules/devices/s390/processor.c:92 -msgid "S390 Processor" -msgstr "Procesador S390" +#: modules/devices/storage.c:243 +#, c-format +msgid "" +"Media=%s\n" +"Media compatibility=%s\n" +msgstr "" -#: modules/devices/s390/processor.c:133 -msgid "ID String" -msgstr "ID String" +#: modules/devices/storage.c:250 +#, c-format +msgid "Connection bus=%s\n" +msgstr "Bus de conexión=%s\n" -#: modules/devices/sh/processor.c:55 -msgid "SuperH Processor" -msgstr "Procesador SuperH" +#: modules/devices/storage.c:253 +#, c-format +msgid "" +"[Self-monitoring (S.M.A.R.T.)]\n" +"Status=%s\n" +"Bad Sectors=%ld\n" +"Power on time=%d days %d hours\n" +"Temperature=%d°C\n" +msgstr "" +"[Self-monitoring (S.M.A.R.T.)]\n" +"Estado=%s\n" +"Sectores defectuosos=%ld\n" +"Tiempo encendido=%d días %d horas \n" +"Temperatura=%d°C\n" -#: modules/devices/sh/processor.c:88 -msgid "Bus Frequency" -msgstr "Frecuencya de Bus" +#: modules/devices/storage.c:259 +msgid "Failing" +msgstr "Fallando" -#: modules/devices/sh/processor.c:89 -msgid "Module Frequency" -msgstr "Frecuencia modular" +#: modules/devices/storage.c:259 +msgid "OK" +msgstr "Correcto" -#: modules/devices/spd-decode.c:1475 +#: modules/devices/storage.c:265 msgid "" -"[SPD]\n" -"Please load the eeprom module to obtain information about memory SPD=\n" -"[$ShellParam$]\n" -"ReloadInterval=500\n" +"[S.M.A.R.T. Attributes]\n" +"Attribute=Normalized Value / Worst / Threshold\n" msgstr "" -"[SPD]\n" -"Por favor carge el modulo eeprom para obtener informacion de memorias SPD=\n" -"[$ShellParam$]\n" -"ReloadInterval=500\n" +"[Atributos de S.M.A.R.T.]\n" +"Atributo=Valor normalizado / Peor / Umbral\n" -#: modules/devices/spd-decode.c:1480 -msgid "" -"[SPD]\n" -"Reading memory SPD not supported on this system=\n" +#: modules/devices/storage.c:297 +#, c-format +msgid "(%d) %s=%s\n" msgstr "" -"[SPD]\n" -"Lectura de memorias no soportado en este sistema=\n" -#: modules/devices/spd-decode.c:1509 -msgid "SPD" -msgstr "SPD" +#: modules/devices/storage.c:306 +#, c-format +msgid "" +"[Partition table]\n" +"Type=%s\n" +msgstr "" +"[Tabla de particiones]\n" +"Tipo=%s\n" -#: modules/devices/spd-decode.c:1510 -msgid "Bank" -msgstr "Ranura" +#: modules/devices/storage.c:325 +#, c-format +msgid "Partition %s=%s\n" +msgstr "Partición %s=%s\n" -#: modules/devices/storage.c:46 +#: modules/devices/storage.c:375 msgid "" "\n" "[SCSI Disks]\n" @@ -2498,26 +4148,16 @@ msgstr "" "\n" "[Discos SCSI]\n" -#: modules/devices/storage.c:110 modules/devices/storage.c:313 +#: modules/devices/storage.c:446 modules/devices/storage.c:645 #, c-format msgid "" "[Device Information]\n" "Model=%s\n" msgstr "" -"[Información de dispositivo]\n" +"[Información de. dispositivo]\n" "Modelo=%s\n" -#: modules/devices/storage.c:115 modules/devices/storage.c:319 -#, c-format -msgid "Vendor=%s (%s)\n" -msgstr "Proveedor=%s (%s)\n" - -#: modules/devices/storage.c:120 modules/devices/storage.c:321 -#, c-format -msgid "Vendor=%s\n" -msgstr "Proveedor=%s\n" - -#: modules/devices/storage.c:125 +#: modules/devices/storage.c:453 #, c-format msgid "" "Type=%s\n" @@ -2536,7 +4176,7 @@ msgstr "" "ID=%d\n" "LUN=%d\n" -#: modules/devices/storage.c:167 +#: modules/devices/storage.c:499 msgid "" "\n" "[IDE Disks]\n" @@ -2544,12 +4184,12 @@ msgstr "" "\n" "[Discos IDE]\n" -#: modules/devices/storage.c:250 +#: modules/devices/storage.c:582 #, c-format msgid "Driver=%s\n" -msgstr "Driver=%s\n" +msgstr "Controlador=%s\n" -#: modules/devices/storage.c:324 +#: modules/devices/storage.c:650 #, c-format msgid "" "Device Name=hd%c\n" @@ -2558,9 +4198,9 @@ msgid "" msgstr "" "Nombre del dispositivo=hd%c\n" "Medio=%s\n" -"Cache=%dkb\n" +"Caché=%dkb\n" -#: modules/devices/storage.c:334 +#: modules/devices/storage.c:660 #, c-format msgid "" "[Geometry]\n" @@ -2571,7 +4211,7 @@ msgstr "" "Física=%s\n" "Lógica=%s\n" -#: modules/devices/storage.c:344 +#: modules/devices/storage.c:670 #, c-format msgid "" "[Capabilities]\n" @@ -2580,7 +4220,7 @@ msgstr "" "[Capacidades]\n" "%s" -#: modules/devices/storage.c:351 +#: modules/devices/storage.c:677 #, c-format msgid "" "[Speeds]\n" @@ -2589,61 +4229,47 @@ msgstr "" "[Velocidades]\n" "%s" -#: modules/devices/usb.c:44 modules/devices/usb.c:326 -msgid "mA" -msgstr "" - -#. /%.2f is version -#: modules/devices/usb.c:53 modules/devices/usb.c:190 -#, c-format -msgid "USB %.2f Hub" -msgstr "" - -#: modules/devices/usb.c:55 modules/devices/usb.c:192 -#, c-format -msgid "Unknown USB %.2f Device (class %d)" -msgstr "" +#: modules/devices/usb.c:134 modules/devices/usb.c:175 +msgid "Sub-class" +msgstr "Subclase" -#: modules/devices/usb.c:85 modules/devices/usb.c:232 -msgid "Speed" -msgstr "" +#: modules/devices/usb.c:135 modules/devices/usb.c:176 modules/network.c:347 +msgid "Protocol" +msgstr "Protocolo" -#: modules/devices/usb.c:85 modules/devices/usb.c:232 -msgid "Mbit/s" -msgstr "" +#: modules/devices/usb.c:143 modules/network/net.c:451 +msgid "Mb/s" +msgstr "Mb/s" -#: modules/devices/usb.c:86 modules/devices/usb.c:233 modules/devices/usb.c:350 +#: modules/devices/usb.c:171 msgid "Max Current" -msgstr "" - -#: modules/devices/usb.c:88 modules/devices/usb.c:235 modules/devices/usb.c:352 -msgid "USB Version" -msgstr "" +msgstr "Corriente máxima" -#: modules/devices/usb.c:90 modules/devices/usb.c:238 modules/devices/usb.c:354 -msgid "Vendor ID" +#: modules/devices/usb.c:171 +msgid "mA" msgstr "" -#: modules/devices/usb.c:91 modules/devices/usb.c:239 modules/devices/usb.c:355 -msgid "Product ID" -msgstr "" +#: modules/devices/usb.c:172 +msgid "USB Version" +msgstr "Versión de USB" -#: modules/devices/usb.c:231 -msgid "Port" -msgstr "" +#: modules/devices/usb.c:177 +msgid "Device Version" +msgstr "Versión del dispositivo" -#: modules/devices/usb.c:241 -msgid "Level" -msgstr "" +#: modules/devices/usb.c:221 +msgid "No USB devices found." +msgstr "No se han encontrado dispositivos USB." #: modules/devices/x86/processor.c:149 msgid "Cache information not available=\n" -msgstr "Informacion de cache no disponible=\n" +msgstr "Información de caché no disponible=\n" #: modules/devices/x86/processor.c:155 #, c-format msgid "Level %d (%s)=%d-way set-associative, %d sets, %dKB size\n" -msgstr "Nivel %d (%s)=%d-way set-associative, %d sets, %dKB tamaño\n" +msgstr "" +"Nivel %d (%s)=%d-vías asociativa por conjuntos, %d conjuntos, %dKB de tamaño\n" #. /cache type, as appears in: Level 1 (Data) #: modules/devices/x86/processor.c:170 @@ -2655,55 +4281,86 @@ msgstr "Datos" #: modules/devices/x86/processor.c:171 msgctxt "cache-type" msgid "Instruction" -msgstr "Instruccion" +msgstr "Instrucciones" #. /cache type, as appears in: Level 2 (Unified) #: modules/devices/x86/processor.c:172 msgctxt "cache-type" msgid "Unified" -msgstr "Unificado" +msgstr "Unificada" -#: modules/devices/x86/processor.c:410 +#: modules/devices/x86/processor.c:367 +msgid "Caches" +msgstr "Cachés" + +#: modules/devices/x86/processor.c:418 modules/devices/x86/processor.c:435 +#, c-format +msgid "Level %d (%s)#%d=%dx %dKB (%dKB), %d-way set-associative, %d sets\n" +msgstr "" +"Nivel %d (%s)#%d=%dx %dKB (%dKB), %d-vías asociativa por conjuntos, %d" +" conjuntos\n" + +#: modules/devices/x86/processor.c:647 msgid "Model Name" -msgstr "Nombre Modelo" +msgstr "Nombre del modelo" -#: modules/devices/x86/processor.c:411 +#: modules/devices/x86/processor.c:648 msgid "Family, model, stepping" msgstr "Familia, modelo, escalado" -#: modules/devices/x86/processor.c:417 +#: modules/devices/x86/processor.c:654 msgid "Microcode Version" -msgstr "" +msgstr "Versión del microcódigo" -#: modules/devices/x86/processor.c:418 +#: modules/devices/x86/processor.c:655 msgid "Configuration" -msgstr "Configuracion" +msgstr "Configuración" -#: modules/devices/x86/processor.c:419 +#: modules/devices/x86/processor.c:656 msgid "Cache Size" -msgstr "Tamaño cache" +msgstr "Tamaño de la caché" -#: modules/devices/x86/processor.c:419 +#: modules/devices/x86/processor.c:656 msgid "kb" msgstr "kb" -#: modules/devices/x86/processor.c:426 -msgid "Power Management" -msgstr "Manejador energia" - -#: modules/devices/x86/processor.c:427 +#: modules/devices/x86/processor.c:664 msgid "Bug Workarounds" -msgstr "Manejo de errores" +msgstr "" -#: modules/devices/x86/processor.c:454 modules/devices/x86/processor.c:468 +#: modules/devices/x86/processor.c:691 +msgid "Socket Information" +msgstr "Información del zócalo" + +#: modules/devices/x86/processor.c:712 +msgid "CPU Socket" +msgstr "Zócalo de la CPU" + +#: modules/devices/x86/processor.c:716 +msgid "External Clock" +msgstr "Reloj externo" + +#: modules/devices/x86/processor.c:717 +msgid "Max Frequency" +msgstr "Frecuencia máxima" + +#: modules/devices/x86/processor.c:748 modules/devices/x86/processor.c:769 msgid "Package Information" -msgstr "" +msgstr "Información del paquete" + +#: modules/devices/x86/processor.c:796 +msgid "Socket:Core" +msgstr "Zócalo:Núcleo" + +#: modules/devices/x86/processor.c:796 +msgid "Thread" +msgstr "Hilo" #. /flag:fpu #: modules/devices/x86/x86_data.c:43 msgctxt "x86-flag" msgid "Onboard FPU (floating point support)" -msgstr "FPÜ embebido (soporte punto flotante)" +msgstr "FPU embebido (soporte de punto flotante)" #. /flag:vme #: modules/devices/x86/x86_data.c:44 @@ -2715,37 +4372,37 @@ msgstr "Virtual 8086 modo ampliado" #: modules/devices/x86/x86_data.c:45 msgctxt "x86-flag" msgid "Debugging Extensions (CR4.DE)" -msgstr "Extensiuones depurado (CR4.DE)" +msgstr "Extensiones de depuración (CR4.DE)" #. /flag:pse #: modules/devices/x86/x86_data.c:46 msgctxt "x86-flag" msgid "Page Size Extensions (4MB memory pages)" -msgstr "Extensiones de pagina (paginas de 4MB memoria)" +msgstr "Extensiones de tamaño de página (páginas de memoria de 4MB)" #. /flag:tsc #: modules/devices/x86/x86_data.c:47 msgctxt "x86-flag" msgid "Time Stamp Counter (RDTSC)" -msgstr "contador de estampa de tiempo (RDTSC)" +msgstr "" #. /flag:msr #: modules/devices/x86/x86_data.c:48 msgctxt "x86-flag" msgid "Model-Specific Registers (RDMSR, WRMSR)" -msgstr "Registros de modelo-especificos (RDMSR, WRMSR)" +msgstr "Registros específicos del modelo (RDMSR, WRMSR)" #. /flag:pae #: modules/devices/x86/x86_data.c:49 msgctxt "x86-flag" msgid "Physical Address Extensions (support for more than 4GB of RAM)" -msgstr "Extension de direcciones fisicas (soporte de mas de 4GB de RAM)" +msgstr "Extension de direcciones físicas (soporte para más de 4GB de RAM)" #. /flag:mce #: modules/devices/x86/x86_data.c:50 msgctxt "x86-flag" msgid "Machine Check Exception" -msgstr "Excepciones de revision de maquina" +msgstr "" #. /flag:cx8 #: modules/devices/x86/x86_data.c:51 @@ -2763,7 +4420,7 @@ msgstr "APIC embebida" #: modules/devices/x86/x86_data.c:53 msgctxt "x86-flag" msgid "SYSENTER/SYSEXIT" -msgstr "SYSENTER/SYSEXIT" +msgstr "" #. /flag:mtrr #: modules/devices/x86/x86_data.c:54 @@ -2787,34 +4444,35 @@ msgstr "Revisor de arquitectura de maquina" #: modules/devices/x86/x86_data.c:57 msgctxt "x86-flag" msgid "CMOV instructions (conditional move) (also FCMOV)" -msgstr "Instrucciones CMOV (mover condicionalmente) (tambien FCMOV)" +msgstr "Instrucciones CMOV (movimiento condicional) (también FCMOV)" #. /flag:pat #: modules/devices/x86/x86_data.c:58 msgctxt "x86-flag" msgid "Page Attribute Table" -msgstr "Tabla de atributos de pagina" +msgstr "Tabla de atributos de página" #. /flag:pse36 #: modules/devices/x86/x86_data.c:59 msgctxt "x86-flag" msgid "36-bit PSEs (huge pages)" -msgstr "36-bit PSEs (huge pages)" +msgstr "" #. /flag:pn #: modules/devices/x86/x86_data.c:60 msgctxt "x86-flag" msgid "Processor serial number" -msgstr "Numero serial de prosesador" +msgstr "Número de serie del procesador" #. /flag:clflush #: modules/devices/x86/x86_data.c:61 msgctxt "x86-flag" msgid "Cache Line Flush instruction" -msgstr "Cache Line Flush instruction" +msgstr "" #. /flag:dts #: modules/devices/x86/x86_data.c:62 +#, fuzzy msgctxt "x86-flag" msgid "" "Debug Store (buffer for debugging and profiling instructions), or " @@ -2828,7 +4486,7 @@ msgstr "" msgctxt "x86-flag" msgid "ACPI via MSR (temperature monitoring and clock speed modulation)" msgstr "" -"ACPI via MSR (monitor de temperatura y reloj de modulacion de velocidad)" +"ACPI mediante MSR (monitor de temperatura y modulación de velocidad de reloj)" #. /flag:mmx #: modules/devices/x86/x86_data.c:64 @@ -2846,7 +4504,7 @@ msgstr "FXSAVE/FXRSTOR, CR4.OSFXSR" #: modules/devices/x86/x86_data.c:66 msgctxt "x86-flag" msgid "Intel SSE vector instructions" -msgstr "Intel SSE instrucciones de vectorizado" +msgstr "Instrucciones de vectores Intel SSE" #. /flag:sse2 #: modules/devices/x86/x86_data.c:67 @@ -2858,19 +4516,19 @@ msgstr "SSE2" #: modules/devices/x86/x86_data.c:68 msgctxt "x86-flag" msgid "CPU self snoop" -msgstr "CPU self snoop" +msgstr "" #. /flag:ht #: modules/devices/x86/x86_data.c:69 msgctxt "x86-flag" msgid "Hyper-Threading" -msgstr "Hyper-Threading" +msgstr "" #. /flag:tm #: modules/devices/x86/x86_data.c:70 msgctxt "x86-flag" msgid "Automatic clock control (Thermal Monitor)" -msgstr "control automatico de reloj (Monitor de temperatura)" +msgstr "Control automático del reloj (Monitor de temperatura)" #. /flag:ia64 #: modules/devices/x86/x86_data.c:71 @@ -2879,38 +4537,38 @@ msgid "" "Intel Itanium Architecture 64-bit (not to be confused with Intel's 64-bit " "x86 architecture with flag x86-64 or \"AMD64\" bit indicated by flag lm)" msgstr "" -"Intel Itanium Arquitectura 64-bit (no confundir con el 64-bit Intel de " -"architecture x86 con el flag x86-64 o bit \"AMD64\" indicado por flag lm)" +"Arquitectura Intel Itanium 64-bit (no confundir con la arquitectura Intel de " +"64-bit x86 con indicador x86-64 o el bit «AMD64» denotado por el indicador lm)" #. /flag:pbe #: modules/devices/x86/x86_data.c:72 msgctxt "x86-flag" msgid "Pending Break Enable (PBE# pin) wakeup support" -msgstr "Pending Break Enable (PBE# pin) despertado" +msgstr "" #. /flag:syscall #: modules/devices/x86/x86_data.c:75 msgctxt "x86-flag" msgid "SYSCALL (Fast System Call) and SYSRET (Return From Fast System Call)" -msgstr "SYSCALL (Fast System Call) and SYSRET (Return From Fast System Call)" +msgstr "" #. /flag:mp #: modules/devices/x86/x86_data.c:76 msgctxt "x86-flag" msgid "Multiprocessing Capable." -msgstr "Capacidades multiprocesos" +msgstr "Capacidad de multiproceso." #. /flag:nx #: modules/devices/x86/x86_data.c:77 msgctxt "x86-flag" msgid "Execute Disable" -msgstr "Execute Disable" +msgstr "" #. /flag:mmxext #: modules/devices/x86/x86_data.c:78 msgctxt "x86-flag" msgid "AMD MMX extensions" -msgstr "Extensiones AMD MMX" +msgstr "Extensiones MMX de AMD" #. /flag:fxsr_opt #: modules/devices/x86/x86_data.c:79 @@ -2920,6 +4578,7 @@ msgstr "Optimizaciones FXSAVE/FXRSTOR" #. /flag:pdpe1gb #: modules/devices/x86/x86_data.c:80 +#, fuzzy msgctxt "x86-flag" msgid "One GB pages (allows hugepagesz=1G)" msgstr "Paginas One GB (permite hugepagesz=1G)" @@ -2928,90 +4587,92 @@ msgstr "Paginas One GB (permite hugepagesz=1G)" #: modules/devices/x86/x86_data.c:81 msgctxt "x86-flag" msgid "Read Time-Stamp Counter and Processor ID" -msgstr "Read Time-Stamp Counter and Processor ID" +msgstr "" #. /flag:lm #: modules/devices/x86/x86_data.c:82 msgctxt "x86-flag" msgid "Long Mode (x86-64: amd64, also known as Intel 64, i.e. 64-bit capable)" msgstr "" -"Modo Largo (x86-64: amd64, conocido como Intel 64, ejem. compatible 64-bit)" +"Modo largo (x86-64: amd64, también conocido como Intel 64, es decir," +" compatible con 64 bits)" #. /flag:3dnow #: modules/devices/x86/x86_data.c:83 msgctxt "x86-flag" msgid "3DNow! (AMD vector instructions, competing with Intel's SSE1)" msgstr "" -"3DNow! (AMD instrucciones de vectorizado, competidor de las Intel SSE1)" +"3DNow! (Instrucciones de vectores de AMD, competencia a las SSE1 de Intel)" #. /flag:3dnowext #: modules/devices/x86/x86_data.c:84 msgctxt "x86-flag" msgid "AMD 3DNow! extensions" -msgstr "AMD 3DNow! extensions" +msgstr "Extensiones 3DNow! de AMD" #. /flag:recovery #: modules/devices/x86/x86_data.c:86 msgctxt "x86-flag" msgid "CPU in recovery mode" -msgstr "CPU en modo recuperacion" +msgstr "CPU en modo recuperación" #. /flag:longrun #: modules/devices/x86/x86_data.c:87 msgctxt "x86-flag" msgid "Longrun power control" -msgstr "control energia Longrun" +msgstr "Control de energía de Longrun" #. /flag:lrti #: modules/devices/x86/x86_data.c:88 msgctxt "x86-flag" msgid "LongRun table interface" -msgstr "Interfaz de tabla LongRun" +msgstr "Interfaz de tabla de LongRun" #. /flag:cxmmx #: modules/devices/x86/x86_data.c:90 msgctxt "x86-flag" msgid "Cyrix MMX extensions" -msgstr "Cyrix MMX extensions" +msgstr "" #. /flag:k6_mtrr #: modules/devices/x86/x86_data.c:91 msgctxt "x86-flag" msgid "AMD K6 nonstandard MTRRs" -msgstr "AMD K6 nonstandard MTRRs" +msgstr "" #. /flag:cyrix_arr #: modules/devices/x86/x86_data.c:92 msgctxt "x86-flag" msgid "Cyrix ARRs (= MTRRs)" -msgstr "Cyrix ARRs (= MTRRs)" +msgstr "" #. /flag:centaur_mcr #: modules/devices/x86/x86_data.c:93 msgctxt "x86-flag" msgid "Centaur MCRs (= MTRRs)" -msgstr "Centaur MCRs (= MTRRs)" +msgstr "" #. /flag:constant_tsc #: modules/devices/x86/x86_data.c:94 msgctxt "x86-flag" msgid "TSC ticks at a constant rate" -msgstr "TSC ticks a una velocidad constante" +msgstr "El TSC hace tictac a un ritmo constante" #. /flag:up #: modules/devices/x86/x86_data.c:95 msgctxt "x86-flag" msgid "SMP kernel running on UP" -msgstr "Kernel SMP ejecutandose" +msgstr "" #. /flag:art #: modules/devices/x86/x86_data.c:96 msgctxt "x86-flag" msgid "Always-Running Timer" -msgstr "Timer Siempre-ejecutandose" +msgstr "" #. /flag:arch_perfmon #: modules/devices/x86/x86_data.c:97 +#, fuzzy msgctxt "x86-flag" msgid "Intel Architectural PerfMon" msgstr "Arquitectura Intel PerfMon" @@ -3032,49 +4693,49 @@ msgstr "" #: modules/devices/x86/x86_data.c:100 msgctxt "x86-flag" msgid "rep microcode works well" -msgstr "rep microcode trabaja bien" +msgstr "" #. /flag:acc_power #: modules/devices/x86/x86_data.c:101 msgctxt "x86-flag" msgid "AMD accumulated power mechanism" -msgstr "AMD mecanismo de energia acumulada" +msgstr "Mecanismo de energía acumulada de AMD" #. /flag:nopl #: modules/devices/x86/x86_data.c:102 msgctxt "x86-flag" msgid "The NOPL (0F 1F) instructions" -msgstr "Instrucciones NOPL (0F 1F)" +msgstr "Las instrucciones NOPL (0F 1F)" #. /flag:xtopology #: modules/devices/x86/x86_data.c:103 msgctxt "x86-flag" msgid "cpu topology enum extensions" -msgstr "extensiones de enumaracion de cpu" +msgstr "extensiones de enumeración de topología de CPU" #. /flag:tsc_reliable #: modules/devices/x86/x86_data.c:104 msgctxt "x86-flag" msgid "TSC is known to be reliable" -msgstr "TSC esta en modo confiable" +msgstr "Se sabe que el TSC es fiable" #. /flag:nonstop_tsc #: modules/devices/x86/x86_data.c:105 msgctxt "x86-flag" msgid "TSC does not stop in C states" -msgstr "TSC no se detiene en estado C" +msgstr "El TSC no se detiene en los estados C" #. /flag:extd_apicid #: modules/devices/x86/x86_data.c:106 msgctxt "x86-flag" msgid "has extended APICID (8 bits)" -msgstr "tiene extenciones APICID (8 bits)" +msgstr "tiene extensiones APICID (8 bits)" #. /flag:amd_dcm #: modules/devices/x86/x86_data.c:107 msgctxt "x86-flag" msgid "multi-node processor" -msgstr "procesador muti-nodo" +msgstr "procesador mutinodo" #. /flag:aperfmperf #: modules/devices/x86/x86_data.c:108 @@ -3086,25 +4747,25 @@ msgstr "APERFMPERF" #: modules/devices/x86/x86_data.c:109 msgctxt "x86-flag" msgid "Non lazy FPU restore" -msgstr "FPU restauracion tardia" +msgstr "" #. /flag:nonstop_tsc_s3 #: modules/devices/x86/x86_data.c:110 msgctxt "x86-flag" msgid "TSC doesn't stop in S3 state" -msgstr "TSC no se detiene en estado S3" +msgstr "El TSC no se detiene en el estado S3" #. /flag:mce_recovery #: modules/devices/x86/x86_data.c:111 msgctxt "x86-flag" msgid "CPU has recoverable machine checks" -msgstr "CPU tiene corroborador de maquina recuperable" +msgstr "La CPU tiene comprobaciones de máquina recuperables" #. /flag:pni #: modules/devices/x86/x86_data.c:114 msgctxt "x86-flag" msgid "SSE-3 (\"Prescott New Instructions\")" -msgstr "SSE-3 (\"Nuevas Instrucciones Prescott\")" +msgstr "SSE-3 («Nuevas instrucciones Prescott»)" #. /flag:pclmulqdq #: modules/devices/x86/x86_data.c:115 @@ -3113,38 +4774,36 @@ msgid "" "Perform a Carry-Less Multiplication of Quadword instruction - accelerator " "for GCM)" msgstr "" -"Realizar una Multiplicación Vaga de la instrucción - aceleracion Quadword " -"para GCM)" #. /flag:dtes64 #: modules/devices/x86/x86_data.c:116 msgctxt "x86-flag" msgid "64-bit Debug Store" -msgstr "Almacenamiento de depuracion 64-bit" +msgstr "Almacenamiento de depuración de 64 bits" #. /flag:monitor #: modules/devices/x86/x86_data.c:117 msgctxt "x86-flag" msgid "Monitor/Mwait support (Intel SSE3 supplements)" -msgstr "Soporte Monitor/Mwait (suplementos Intel SSE3" +msgstr "" #. /flag:ds_cpl #: modules/devices/x86/x86_data.c:118 msgctxt "x86-flag" msgid "CPL Qual. Debug Store" -msgstr "CPL Qual. Debug Store" +msgstr "" #. /flag:vmx #: modules/devices/x86/x86_data.c:119 msgctxt "x86-flag" msgid "Hardware virtualization, Intel VMX" -msgstr "Virtualizacion de hardware, Intel VMX" +msgstr "Virtualización de hardware, Intel VMX" #. /flag:smx #: modules/devices/x86/x86_data.c:120 msgctxt "x86-flag" msgid "Safer mode TXT (TPM support)" -msgstr "Mode asegurado TXT (soporte TPM)" +msgstr "" #. /flag:est #: modules/devices/x86/x86_data.c:121 @@ -3156,7 +4815,7 @@ msgstr "SpeedStep ampliado" #: modules/devices/x86/x86_data.c:122 msgctxt "x86-flag" msgid "Thermal Monitor 2" -msgstr "Monitor termico 2" +msgstr "Monitor térmico 2" #. /flag:ssse3 #: modules/devices/x86/x86_data.c:123 @@ -3168,13 +4827,13 @@ msgstr "Suplemento SSE-3" #: modules/devices/x86/x86_data.c:124 msgctxt "x86-flag" msgid "Context ID" -msgstr "Contexto ID" +msgstr "Identificador de contexto" #. /flag:sdbg #: modules/devices/x86/x86_data.c:125 msgctxt "x86-flag" msgid "silicon debug" -msgstr "depurador silicon" +msgstr "" #. /flag:fma #: modules/devices/x86/x86_data.c:126 @@ -3192,25 +4851,25 @@ msgstr "CMPXCHG16B" #: modules/devices/x86/x86_data.c:128 msgctxt "x86-flag" msgid "Send Task Priority Messages" -msgstr "Enviador de Mesajes de Prioridad de Tareas" +msgstr "Enviar mensajes de prioridad de la tarea" #. /flag:pdcm #: modules/devices/x86/x86_data.c:129 msgctxt "x86-flag" msgid "Performance Capabilities" -msgstr "Capacidades de Rendimiento" +msgstr "Capacidades de rendimiento" #. /flag:pcid #: modules/devices/x86/x86_data.c:130 msgctxt "x86-flag" msgid "Process Context Identifiers" -msgstr "Identificador de contexto de proceso" +msgstr "Identificadores del contexto del proceso" #. /flag:dca #: modules/devices/x86/x86_data.c:131 msgctxt "x86-flag" msgid "Direct Cache Access" -msgstr "Acceso Directo de Cache" +msgstr "Acceso directo a la caché" #. /flag:sse4_1 #: modules/devices/x86/x86_data.c:132 @@ -3243,14 +4902,14 @@ msgid "" "Return the Count of Number of Bits Set to 1 instruction (Hamming weight, i." "e. bit count)" msgstr "" -"Devuelve la cuenta de número de bits establecida en 1 instrucción (Hamming " -"weight, ex. cuenta bit)" +"Instrucción que devuelve el recuento del número de bits establecidos a 1 " +"(Hamming weight, es decir, recuento de bits)" #. /flag:tsc_deadline_timer #: modules/devices/x86/x86_data.c:137 msgctxt "x86-flag" msgid "Tsc deadline timer" -msgstr "Tsc deadline timer" +msgstr "" #. /flag:aes/aes-ni #: modules/devices/x86/x86_data.c:138 @@ -3263,22 +4922,24 @@ msgstr "Estándar de cifrado avanzado (nuevas instrucciones)" msgctxt "x86-flag" msgid "Save Processor Extended States: also provides XGETBY,XRSTOR,XSETBY" msgstr "" -"Save Processor Extended States: también proporciona XGETBY, XRSTOR, XSETBY" +"Guardar estados extendidos del procesador: también proporciona XGETBY," +" XRSTOR, XSETBY" #. /flag:avx #: modules/devices/x86/x86_data.c:140 msgctxt "x86-flag" msgid "Advanced Vector Extensions" -msgstr "" +msgstr "Extensiones vectoriales avanzadas" #. /flag:f16c #: modules/devices/x86/x86_data.c:141 msgctxt "x86-flag" msgid "16-bit fp conversions (CVT16)" -msgstr "conversiones fp 16-bit (CVT16)" +msgstr "conversiones de punto flotante de 16 bits (CVT16)" #. /flag:rdrand #: modules/devices/x86/x86_data.c:142 +#, fuzzy msgctxt "x86-flag" msgid "Read Random Number from hardware random number generator instruction" msgstr "" @@ -3289,104 +4950,107 @@ msgstr "" #: modules/devices/x86/x86_data.c:143 msgctxt "x86-flag" msgid "Running on a hypervisor" -msgstr "Corriendo en un hipervisor" +msgstr "Ejecutándose en un hipervisor" #. /Cyrix/Centaur-defined CPU features, CPUID level 0xC0000001 #. /flag:rng #: modules/devices/x86/x86_data.c:145 msgctxt "x86-flag" msgid "Random Number Generator present (xstore)" -msgstr "Generador de numeros aleatorios presente (xstore)" +msgstr "Generador de números aleatorios presente (xstore)" #. /flag:rng_en #: modules/devices/x86/x86_data.c:146 msgctxt "x86-flag" msgid "Random Number Generator enabled" -msgstr "Generador de numeros aleatorios activo" +msgstr "Generador de números aleatorios habilitado" #. /flag:ace #: modules/devices/x86/x86_data.c:147 msgctxt "x86-flag" msgid "on-CPU crypto (xcrypt)" -msgstr "encriptacion en-CPU (xcrypt)" +msgstr "Cifrado en CPU (xcrypt)" #. /flag:ace_en #: modules/devices/x86/x86_data.c:148 msgctxt "x86-flag" msgid "on-CPU crypto enabled" -msgstr "encriptacion en-CPU activada" +msgstr "Cifrado en CPU habilitado" #. /flag:ace2 #: modules/devices/x86/x86_data.c:149 msgctxt "x86-flag" msgid "Advanced Cryptography Engine v2" -msgstr "Manejador Encriptamiento Avanzado v2" +msgstr "Motor de criptografía avanzada v2" #. /flag:ace2_en #: modules/devices/x86/x86_data.c:150 msgctxt "x86-flag" msgid "ACE v2 enabled" -msgstr "ACE v2 presente" +msgstr "ACE v2 habilitado" #. /flag:phe #: modules/devices/x86/x86_data.c:151 msgctxt "x86-flag" msgid "PadLock Hash Engine" -msgstr "Manejador PadLock Hash" +msgstr "" #. /flag:phe_en #: modules/devices/x86/x86_data.c:152 msgctxt "x86-flag" msgid "PHE enabled" -msgstr "PHE presente" +msgstr "PHE habilitado" #. /flag:pmm #: modules/devices/x86/x86_data.c:153 msgctxt "x86-flag" msgid "PadLock Montgomery Multiplier" -msgstr "PadLock Montgomery Multiplier" +msgstr "" #. /flag:pmm_en #: modules/devices/x86/x86_data.c:154 msgctxt "x86-flag" msgid "PMM enabled" -msgstr "PMM presente" +msgstr "PMM habilitado" #. /flag:lahf_lm #: modules/devices/x86/x86_data.c:156 +#, fuzzy msgctxt "x86-flag" msgid "Load AH from Flags (LAHF) and Store AH into Flags (SAHF) in long mode" -msgstr "Carga AH desde Flags (LAHF) y almacena AH en Flags (SAHF) en modo long" +msgstr "" +"Carga AH desde indicadores (LAHF) y almacena AH en indicadores (SAHF) en modo" +" largo" #. /flag:cmp_legacy #: modules/devices/x86/x86_data.c:157 msgctxt "x86-flag" msgid "If yes HyperThreading not valid" -msgstr "Si yes/si HyperThreading no valido" +msgstr "En caso afirmativo, HyperThreading no es válido" #. /flag:svm #: modules/devices/x86/x86_data.c:158 msgctxt "x86-flag" msgid "\"Secure virtual machine\": AMD-V" -msgstr "\"Maquina Virtual Segura\": AMD-V" +msgstr "«Maquina virtual segura»: AMD-V" #. /flag:extapic #: modules/devices/x86/x86_data.c:159 msgctxt "x86-flag" msgid "Extended APIC space" -msgstr "Espacio APIC Extendida" +msgstr "" #. /flag:cr8_legacy #: modules/devices/x86/x86_data.c:160 msgctxt "x86-flag" msgid "CR8 in 32-bit mode" -msgstr "CR8 en modo 32-bit" +msgstr "CR8 en modo de 32 bits" #. /flag:abm #: modules/devices/x86/x86_data.c:161 msgctxt "x86-flag" msgid "Advanced Bit Manipulation" -msgstr "Advanced Bit Manipulation" +msgstr "Manipulación avanzada de bits" #. /flag:sse4a #: modules/devices/x86/x86_data.c:162 @@ -3404,13 +5068,13 @@ msgid "" msgstr "" "Indica si se genera una excepción de protección general (#GP) cuando algunas " "instrucciones heredadas de SSE funcionan con datos no alineados. También " -"depende de CR0 y Alignment Checking bit" +"depende de CR0 y del bit de comprobación de alineación" #. /flag:3dnowprefetch #: modules/devices/x86/x86_data.c:164 msgctxt "x86-flag" msgid "3DNow prefetch instructions" -msgstr "Instrucciones 3DNow prefetch" +msgstr "Instrucciones de captación previa de 3DNow" #. /flag:osvw #: modules/devices/x86/x86_data.c:165 @@ -3419,20 +5083,18 @@ msgid "" "indicates OS Visible Workaround, which allows the OS to work around " "processor errata." msgstr "" -"indica medidas visibles al OS, que permitan que el OS pueda manejar erratas " -"del procesador" #. /flag:ibs #: modules/devices/x86/x86_data.c:166 msgctxt "x86-flag" msgid "Instruction Based Sampling" -msgstr "Instruction Based Sampling" +msgstr "" #. /flag:xop #: modules/devices/x86/x86_data.c:167 msgctxt "x86-flag" msgid "extended AVX instructions" -msgstr "Instrucciones AVX extendidas" +msgstr "instrucciones AVX extendidas" #. /flag:skinit #: modules/devices/x86/x86_data.c:168 @@ -3444,7 +5106,7 @@ msgstr "Instrucciones SKINIT/STGI" #: modules/devices/x86/x86_data.c:169 msgctxt "x86-flag" msgid "Watchdog timer" -msgstr "" +msgstr "Temporizador de vigilancia" #. /flag:lwp #: modules/devices/x86/x86_data.c:170 @@ -3492,7 +5154,7 @@ msgstr "" #: modules/devices/x86/x86_data.c:177 msgctxt "x86-flag" msgid "NB Performance Counter Extensions" -msgstr "" +msgstr "Extensiones del contador de rendimiento NB" #. /flag:bpext #: modules/devices/x86/x86_data.c:178 @@ -3510,7 +5172,7 @@ msgstr "" #: modules/devices/x86/x86_data.c:180 msgctxt "x86-flag" msgid "L2 Performance Counter Extensions" -msgstr "" +msgstr "Extensiones del contador de rendimiento L2" #. /flag:mwaitx #: modules/devices/x86/x86_data.c:181 @@ -3642,7 +5304,7 @@ msgstr "" #: modules/devices/x86/x86_data.c:205 msgctxt "x86-flag" msgid "Restricted Transactional Memory" -msgstr "" +msgstr "Memoria transaccional restringida" #. /flag:cqm #: modules/devices/x86/x86_data.c:206 @@ -3654,7 +5316,7 @@ msgstr "" #: modules/devices/x86/x86_data.c:207 msgctxt "x86-flag" msgid "Memory Protection Extension" -msgstr "" +msgstr "Extensión de protección de la memoria" #. /flag:avx512f #: modules/devices/x86/x86_data.c:208 @@ -3672,31 +5334,31 @@ msgstr "" #: modules/devices/x86/x86_data.c:210 msgctxt "x86-flag" msgid "The RDSEED instruction" -msgstr "" +msgstr "La instrucción RDSEED" #. /flag:adx #: modules/devices/x86/x86_data.c:211 msgctxt "x86-flag" msgid "The ADCX and ADOX instructions" -msgstr "" +msgstr "Las instrucciones ADCX y ADOX" #. /flag:smap #: modules/devices/x86/x86_data.c:212 msgctxt "x86-flag" msgid "Supervisor Mode Access Prevention" -msgstr "" +msgstr "Prevención de acceso en modo supervisor" #. /flag:clflushopt #: modules/devices/x86/x86_data.c:213 msgctxt "x86-flag" msgid "CLFLUSHOPT instruction" -msgstr "" +msgstr "Instrucción CLFLUSHOPT" #. /flag:clwb #: modules/devices/x86/x86_data.c:214 msgctxt "x86-flag" msgid "CLWB instruction" -msgstr "" +msgstr "Instrucción CLWB" #. /flag:avx512pf #: modules/devices/x86/x86_data.c:215 @@ -3738,7 +5400,7 @@ msgstr "" #: modules/devices/x86/x86_data.c:222 msgctxt "x86-flag" msgid "Optimized XSAVE" -msgstr "" +msgstr "XSAVE optimizada" #. /flag:xsavec #: modules/devices/x86/x86_data.c:223 @@ -3750,7 +5412,7 @@ msgstr "" #: modules/devices/x86/x86_data.c:224 msgctxt "x86-flag" msgid "XGETBV with ECX = 1" -msgstr "" +msgstr "XGETBV con ECX = 1" #. /flag:xsaves #: modules/devices/x86/x86_data.c:225 @@ -3786,7 +5448,7 @@ msgstr "" #: modules/devices/x86/x86_data.c:233 msgctxt "x86-flag" msgid "CLZERO instruction" -msgstr "" +msgstr "Instrucción CLZERO" #. /flag:irperf #: modules/devices/x86/x86_data.c:234 @@ -3798,13 +5460,13 @@ msgstr "" #: modules/devices/x86/x86_data.c:236 msgctxt "x86-flag" msgid "digital thermal sensor" -msgstr "" +msgstr "sensor térmico digital" #. /flag:ida #: modules/devices/x86/x86_data.c:237 msgctxt "x86-flag" msgid "Intel Dynamic Acceleration" -msgstr "" +msgstr "Aceleración dinámica de Intel" #. /flag:arat #: modules/devices/x86/x86_data.c:238 @@ -3828,25 +5490,25 @@ msgstr "" #: modules/devices/x86/x86_data.c:241 msgctxt "x86-flag" msgid "Intel Hardware P-states" -msgstr "" +msgstr "Hardware de estado de rendimiento (P-state) de Intel" #. /flag:hwp_notify #: modules/devices/x86/x86_data.c:242 msgctxt "x86-flag" msgid "HWP notification" -msgstr "" +msgstr "Notificación del HWP" #. /flag:hwp_act_window #: modules/devices/x86/x86_data.c:243 msgctxt "x86-flag" msgid "HWP Activity Window" -msgstr "" +msgstr "Ventana de actividad del HWP" #. /flag:hwp_epp #: modules/devices/x86/x86_data.c:244 msgctxt "x86-flag" msgid "HWP Energy Performance Preference" -msgstr "" +msgstr "Preferencia de rendimiento energético del HWP" #. /flag:hwp_pkg_req #: modules/devices/x86/x86_data.c:245 @@ -3858,7 +5520,7 @@ msgstr "" #: modules/devices/x86/x86_data.c:247 msgctxt "x86-flag" msgid "AMD Nested Page Table support" -msgstr "" +msgstr "Soporte de tabla de páginas anidadas de AMD" #. /flag:lbrv #: modules/devices/x86/x86_data.c:248 @@ -3918,13 +5580,13 @@ msgstr "" #: modules/devices/x86/x86_data.c:257 msgctxt "x86-flag" msgid "Virtual Interrupt Controller" -msgstr "" +msgstr "Controlador de interrupciones virtuales" #. /flag:pku #: modules/devices/x86/x86_data.c:259 msgctxt "x86-flag" msgid "Protection Keys for Userspace" -msgstr "" +msgstr "Claves de protección para el espacio de usuario" #. /flag:ospke #: modules/devices/x86/x86_data.c:260 @@ -3936,25 +5598,25 @@ msgstr "" #: modules/devices/x86/x86_data.c:262 msgctxt "x86-flag" msgid "MCA overflow recovery support" -msgstr "" +msgstr "Soporte de recuperación de desbordamiento de MCA" #. /flag:succor #: modules/devices/x86/x86_data.c:263 msgctxt "x86-flag" msgid "uncorrectable error containment and recovery" -msgstr "" +msgstr "contención y recuperación de errores no corregibles" #. /flag:smca #: modules/devices/x86/x86_data.c:264 msgctxt "x86-flag" msgid "Scalable MCA" -msgstr "" +msgstr "MCA escalable" #. /bug:f00f #: modules/devices/x86/x86_data.c:267 msgctxt "x86-flag" msgid "Intel F00F bug" -msgstr "" +msgstr "Fallo F00F de Intel" #. /bug:fdiv #: modules/devices/x86/x86_data.c:268 @@ -3985,19 +5647,20 @@ msgstr "" #: modules/devices/x86/x86_data.c:272 msgctxt "x86-flag" msgid "Bad local APIC aka 11AP" -msgstr "" +msgstr "APIC local malo, alias 11AP" #. /bug:fxsave_leak #: modules/devices/x86/x86_data.c:273 +#, fuzzy msgctxt "x86-flag" msgid "FXSAVE leaks FOP/FIP/FOP" -msgstr "" +msgstr "FXSAVE tiene fugas FOP/FIP/FOP" #. /bug:clflush_monitor #: modules/devices/x86/x86_data.c:274 msgctxt "x86-flag" msgid "AAI65, CLFLUSH required before MONITOR" -msgstr "" +msgstr "AAI65, CLFLUSH requeridos antes de MONITOR" #. /bug:sysret_ss_attrs #: modules/devices/x86/x86_data.c:275 @@ -4009,218 +5672,243 @@ msgstr "" #: modules/devices/x86/x86_data.c:276 msgctxt "x86-flag" msgid "IRET to 16-bit SS corrupts ESP/RSP high bits" -msgstr "" +msgstr "IRET a SS de 16 bits corrompe los bits altos ESP/RSP" #. /bug:null_seg #: modules/devices/x86/x86_data.c:277 msgctxt "x86-flag" msgid "Nulling a selector preserves the base" -msgstr "" +msgstr "Anular un selector preserva la base" #. /bug:swapgs_fence #: modules/devices/x86/x86_data.c:278 msgctxt "x86-flag" msgid "SWAPGS without input dep on GS" -msgstr "" +msgstr "SWAPGS sin entrada dep en GS" #. /bug:monitor #: modules/devices/x86/x86_data.c:279 msgctxt "x86-flag" msgid "IPI required to wake up remote CPU" +msgstr "Se requiere IPI para despertar CPU remotas" + +#. /bug:cpu_insecure & bug:cpu_meltdown +#: modules/devices/x86/x86_data.c:281 modules/devices/x86/x86_data.c:282 +msgctxt "x86-flag" +msgid "" +"CPU is affected by meltdown attack and needs kernel page table isolation" msgstr "" +"La CPU está afectada por el ataque meltdown y necesita el aislamiento de" +" tabla de páginas del kernel" + +#. /bug:spectre_v1 +#: modules/devices/x86/x86_data.c:283 +msgctxt "x86-flag" +msgid "CPU is affected by Spectre variant 1 attack with conditional branches" +msgstr "" +"La CPU está afectada por la variante 1 del ataque Spectre con ramificaciones" +" condicionales" + +#. /bug:spectre_v2 +#: modules/devices/x86/x86_data.c:284 +msgctxt "x86-flag" +msgid "CPU is affected by Spectre variant 2 attack with indirect branches" +msgstr "" +"La CPU esta afectada por la variante 2 del ataque Spectre con ramificaciones" +" indirectas" + +#. /bug:spec_store_bypass +#: modules/devices/x86/x86_data.c:285 +msgctxt "x86-flag" +msgid "CPU is affected by speculative store bypass attack" +msgstr "" + +#. /bug:l1tf +#: modules/devices/x86/x86_data.c:286 +msgctxt "x86-flag" +msgid "CPU is affected by L1 Terminal Fault" +msgstr "La CPU está afectada por el fallo de la terminal L1" #. /x86/kernel/cpu/powerflags.h #. /flag:pm:ts -#: modules/devices/x86/x86_data.c:283 +#: modules/devices/x86/x86_data.c:289 msgctxt "x86-flag" msgid "temperature sensor" -msgstr "sensor de temparatura" +msgstr "sensor de temperatura" #. /flag:pm:fid -#: modules/devices/x86/x86_data.c:284 +#: modules/devices/x86/x86_data.c:290 msgctxt "x86-flag" msgid "frequency id control" -msgstr "id de control frecuencia" +msgstr "identificador del control de frecuencia" #. /flag:pm:vid -#: modules/devices/x86/x86_data.c:285 +#: modules/devices/x86/x86_data.c:291 msgctxt "x86-flag" msgid "voltage id control" -msgstr "id control voltage" +msgstr "identificador del control de voltaje" #. /flag:pm:ttp -#: modules/devices/x86/x86_data.c:286 +#: modules/devices/x86/x86_data.c:292 msgctxt "x86-flag" msgid "thermal trip" -msgstr "limite termico" +msgstr "límite térmico" #. /flag:pm:tm -#: modules/devices/x86/x86_data.c:287 +#: modules/devices/x86/x86_data.c:293 msgctxt "x86-flag" msgid "hardware thermal control" -msgstr "control terminco por hardware" +msgstr "control término por hardware" #. /flag:pm:stc -#: modules/devices/x86/x86_data.c:288 +#: modules/devices/x86/x86_data.c:294 msgctxt "x86-flag" msgid "software thermal control" -msgstr "control terminco por software" +msgstr "control término por software" #. /flag:pm:100mhzsteps -#: modules/devices/x86/x86_data.c:289 +#: modules/devices/x86/x86_data.c:295 msgctxt "x86-flag" msgid "100 MHz multiplier control" -msgstr "control multiplicador 100MHz" +msgstr "Control del multiplicador de 100 MHz" #. /flag:pm:hwpstate -#: modules/devices/x86/x86_data.c:290 +#: modules/devices/x86/x86_data.c:296 msgctxt "x86-flag" msgid "hardware P-state control" -msgstr "control hardware de P-state" +msgstr "control del estado de rendimiento del hardware (P-state)" #. /flag:pm:cpb -#: modules/devices/x86/x86_data.c:291 +#: modules/devices/x86/x86_data.c:297 msgctxt "x86-flag" msgid "core performance boost" -msgstr "Impulso de rendimiento básico" +msgstr "aumento del rendimiento del núcleo" #. /flag:pm:eff_freq_ro -#: modules/devices/x86/x86_data.c:292 +#: modules/devices/x86/x86_data.c:298 msgctxt "x86-flag" msgid "Readonly aperf/mperf" -msgstr "" +msgstr "aperf/mperf de solo lectura" #. /flag:pm:proc_feedback -#: modules/devices/x86/x86_data.c:293 +#: modules/devices/x86/x86_data.c:299 msgctxt "x86-flag" msgid "processor feedback interface" -msgstr "interfez de retroalimentacion de procesador" +msgstr "interfaz de retroalimentación del procesador" #. /flag:pm:acc_power -#: modules/devices/x86/x86_data.c:294 +#: modules/devices/x86/x86_data.c:300 msgctxt "x86-flag" msgid "accumulated power mechanism" -msgstr "mecanismo de energia acumulada" +msgstr "mecanismo de energía acumulada" -#: modules/network.c:59 +#: modules/network.c:61 msgid "Interfaces" msgstr "Interfaces" -#: modules/network.c:60 +#: modules/network.c:62 msgid "IP Connections" msgstr "Conexiones IP" -#: modules/network.c:61 +#: modules/network.c:63 msgid "Routing Table" -msgstr "Tabla de ruteo" +msgstr "Tabla de enrutamiento" -#: modules/network.c:62 modules/network.c:303 +#: modules/network.c:64 modules/network.c:309 msgid "ARP Table" msgstr "Tabla ARP" -#: modules/network.c:63 +#: modules/network.c:65 msgid "DNS Servers" msgstr "Servidores DNS" -#: modules/network.c:64 +#: modules/network.c:66 msgid "Statistics" msgstr "Estadísticas" -#: modules/network.c:65 +#: modules/network.c:67 msgid "Shared Directories" msgstr "Directorios compartidos" -#: modules/network.c:304 modules/network.c:326 modules/network.c:357 -#: modules/network/net.c:477 +#: modules/network.c:310 modules/network.c:332 modules/network.c:363 +#: modules/network/net.c:472 msgid "IP Address" msgstr "Dirección IP" -#: modules/network.c:304 modules/network.c:357 modules/network.c:374 -msgid "Interface" -msgstr "Interfaz" - -#: modules/network.c:304 +#: modules/network.c:310 msgid "MAC Address" msgstr "Dirección MAC" -#: modules/network.c:313 +#: modules/network.c:319 msgid "SAMBA" msgstr "SAMBA" -#: modules/network.c:314 +#: modules/network.c:320 msgid "NFS" msgstr "NFS" -#: modules/network.c:325 +#: modules/network.c:331 msgid "Name Servers" msgstr "Servidores de nombres" -#: modules/network.c:340 +#: modules/network.c:346 msgid "Connections" msgstr "Conexiones" -#: modules/network.c:341 +#: modules/network.c:347 msgid "Local Address" -msgstr "Direccion local" - -#: modules/network.c:341 -msgid "Protocol" -msgstr "Protocolo" +msgstr "Dirección local" -#: modules/network.c:341 +#: modules/network.c:347 msgid "Foreign Address" -msgstr "Direccion enlazada" +msgstr "Dirección remota" -#: modules/network.c:341 +#: modules/network.c:347 msgid "State" msgstr "Estado" -#: modules/network.c:357 +#: modules/network.c:363 msgid "Sent" msgstr "Enviado" -#: modules/network.c:357 +#: modules/network.c:363 msgid "Received" msgstr "Recibido" -#: modules/network.c:373 +#: modules/network.c:379 msgid "IP routing table" -msgstr "Tabla de ruteo IP" +msgstr "Tabla de enrutamiento IP" -#: modules/network.c:374 +#: modules/network.c:380 msgid "Destination/Gateway" msgstr "Destino/Puerta de enlace" -#: modules/network.c:374 -msgid "Flags" -msgstr "Marcas" - -#: modules/network.c:374 modules/network/net.c:478 +#: modules/network.c:380 modules/network/net.c:473 msgid "Mask" msgstr "Máscara" -#: modules/network.c:402 +#: modules/network.c:408 msgid "Network" msgstr "Red" -#: modules/network.c:435 +#: modules/network.c:441 msgid "Gathers information about this computer's network connection" -msgstr "Obtiene información sobre la conexión de red de esta computadora" +msgstr "Recopila información sobre la conexión de red de este ordenador" #: modules/network/net.c:72 msgctxt "wi-op-mode" msgid "Auto" -msgstr "Auto" +msgstr "Automático" #: modules/network/net.c:73 msgctxt "wi-op-mode" msgid "Ad-Hoc" -msgstr "Ad-Hoc" +msgstr "Ad hoc" #: modules/network/net.c:74 msgctxt "wi-op-mode" msgid "Managed" -msgstr "Manejada" +msgstr "Gestionada" #: modules/network/net.c:75 msgctxt "wi-op-mode" @@ -4249,6 +5937,7 @@ msgid "Ethernet" msgstr "Ethernet" #: modules/network/net.c:243 +#, fuzzy msgctxt "net-if-type" msgid "Loopback" msgstr "Loopback" @@ -4256,19 +5945,19 @@ msgstr "Loopback" #: modules/network/net.c:244 msgctxt "net-if-type" msgid "Point-to-Point" -msgstr "Punto-a-Punto" +msgstr "Punto a punto" #: modules/network/net.c:245 modules/network/net.c:246 #: modules/network/net.c:247 modules/network/net.c:248 #: modules/network/net.c:272 msgctxt "net-if-type" msgid "Wireless" -msgstr "Inalambrica" +msgstr "Inalámbrica" #: modules/network/net.c:249 msgctxt "net-if-type" msgid "Virtual Point-to-Point (TUN)" -msgstr "Virtual Punto-a-Punto (TUN)" +msgstr "Punto a punto virtual (TUN)" #: modules/network/net.c:250 msgctxt "net-if-type" @@ -4278,42 +5967,42 @@ msgstr "Ethernet (TAP)" #: modules/network/net.c:251 msgctxt "net-if-type" msgid "Parallel Line Internet Protocol" -msgstr "Protocolo Linea Intenet Paralela" +msgstr "Protocolo de internet de línea paralela" #: modules/network/net.c:252 msgctxt "net-if-type" msgid "Infrared" -msgstr "Infraroja" +msgstr "Infrarroja" #: modules/network/net.c:253 modules/network/net.c:271 msgctxt "net-if-type" msgid "Serial Line Internet Protocol" -msgstr "Protocolo Internel Linea Serial" +msgstr "Protocolo de internet de línea serie" #: modules/network/net.c:254 msgctxt "net-if-type" msgid "Integrated Services Digital Network" -msgstr "Red de servicio digital (ISDN)" +msgstr "Red digital de servicios integrados" #: modules/network/net.c:255 msgctxt "net-if-type" msgid "IPv6-over-IPv4 Tunnel" -msgstr "Tunel IPv6-sobre-IPv4" +msgstr "Túnel IPv6 sobre IPv4" #: modules/network/net.c:256 msgctxt "net-if-type" msgid "VMWare Virtual Network Interface (NAT)" -msgstr "Interfaz Red virtual VMWare (NAT)" +msgstr "Interfaz de red virtual de VMWare (NAT)" #: modules/network/net.c:257 msgctxt "net-if-type" msgid "VMWare Virtual Network Interface" -msgstr "Interfaz Red virtual VMWare" +msgstr "Interfaz de red virtual de VMWare" #: modules/network/net.c:258 msgctxt "net-if-type" msgid "Personal Area Network (PAN)" -msgstr "Red de Area Personal (PAN)" +msgstr "Red de área personal (PAN)" #: modules/network/net.c:259 msgctxt "net-if-type" @@ -4323,22 +6012,22 @@ msgstr "Bluetooth" #: modules/network/net.c:260 msgctxt "net-if-type" msgid "Bridge Interface" -msgstr "Interfaz Puente" +msgstr "Interfaz puente" #: modules/network/net.c:261 msgctxt "net-if-type" msgid "Hamachi Virtual Personal Network" -msgstr "Red Virtual Personal Hamachi" +msgstr "Red personal virtual de Hamachi" #: modules/network/net.c:263 msgctxt "net-if-type" msgid "Intermediate Functional Block" -msgstr "Bloque funcional Intermediario" +msgstr "Bloque funcional intermedio" #: modules/network/net.c:264 msgctxt "net-if-type" msgid "GRE Network Tunnel" -msgstr "Tunel Red GRE" +msgstr "Túnel de red GRE" #: modules/network/net.c:265 msgctxt "net-if-type" @@ -4348,120 +6037,207 @@ msgstr "Red de malla" #: modules/network/net.c:266 msgctxt "net-if-type" msgid "Wireless Master Interface" -msgstr "Interfaz Maestra Inalambrica" +msgstr "Interfaz inalámbrica maestra" #: modules/network/net.c:267 msgctxt "net-if-type" msgid "VirtualBox Virtual Network Interface" -msgstr "Interfaz Red Virtual VirtualBox" +msgstr "Interfaz de red virtual de VirtualBox" #: modules/network/net.c:273 msgctxt "net-if-type" msgid "Wireless (WAN)" -msgstr "Inalambrica (WAN)" +msgstr "Inalámbrica (WAN)" #: modules/network/net.c:275 msgctxt "net-if-type" msgid "(Unknown)" msgstr "(desconocida)" -#: modules/network/net.c:348 modules/network/net.c:358 +#: modules/network/net.c:343 modules/network/net.c:353 msgid "Network Interfaces" -msgstr "Interfaces de Red" +msgstr "Interfaces de red" -#: modules/network/net.c:348 +#: modules/network/net.c:343 msgid "None Found" msgstr "Ninguna encontrada" -#: modules/network/net.c:400 modules/network/net.c:422 -#: modules/network/net.c:423 -msgid "MiB" -msgstr "MiB" - -#: modules/network/net.c:414 +#: modules/network/net.c:409 msgid "Network Adapter Properties" -msgstr "Propiedades de adaptador" +msgstr "Propiedades del adaptador de red" -#: modules/network/net.c:415 +#: modules/network/net.c:410 msgid "Interface Type" -msgstr "Tipo interfaz" +msgstr "Tipo de interfaz" -#: modules/network/net.c:416 +#: modules/network/net.c:411 msgid "Hardware Address (MAC)" -msgstr "Direccion fisica" +msgstr "Dirección física (MAC)" -#: modules/network/net.c:420 +#: modules/network/net.c:415 msgid "MTU" msgstr "MTU" -#: modules/network/net.c:421 +#: modules/network/net.c:416 msgid "Transfer Details" -msgstr "Detalles de transferencias" +msgstr "Detalles de la transferencia" -#: modules/network/net.c:422 +#: modules/network/net.c:417 msgid "Bytes Received" -msgstr "Bytes Recividos" +msgstr "Bytes recibidos" -#: modules/network/net.c:423 +#: modules/network/net.c:418 msgid "Bytes Sent" -msgstr "Bytes Enviados" +msgstr "Bytes enviados" -#: modules/network/net.c:440 modules/network/net.c:462 -#: modules/network/net.c:463 +#: modules/network/net.c:435 modules/network/net.c:457 +#: modules/network/net.c:458 msgid "dBm" msgstr "dBm" -#: modules/network/net.c:440 +#: modules/network/net.c:435 msgid "mW" msgstr "mW" -#: modules/network/net.c:454 +#: modules/network/net.c:449 msgid "Wireless Properties" -msgstr "Propiedades de Inalambrica" +msgstr "Propiedades inalámbricas" -#: modules/network/net.c:455 +#: modules/network/net.c:450 msgid "Network Name (SSID)" msgstr "Nombre de red (SSID)" -#: modules/network/net.c:456 +#: modules/network/net.c:451 msgid "Bit Rate" -msgstr "Velocidad de bits" +msgstr "Tasa de bits" -#: modules/network/net.c:456 -msgid "Mb/s" -msgstr "Mb/s" - -#: modules/network/net.c:457 +#: modules/network/net.c:452 msgid "Transmission Power" -msgstr "Intensidad transmision" +msgstr "Potencia de transmisión" -#: modules/network/net.c:459 -msgid "Status" -msgstr "Estado" - -#: modules/network/net.c:460 +#: modules/network/net.c:455 msgid "Link Quality" -msgstr "Calidad enlace" +msgstr "Calidad del enlace" -#: modules/network/net.c:461 +#: modules/network/net.c:456 msgid "Signal / Noise" msgstr "Señal / Ruido" -#: modules/network/net.c:476 +#: modules/network/net.c:471 msgid "Internet Protocol (IPv4)" -msgstr "Protocolo Internet (IPv4)" +msgstr "Protocolo de internet (IPv4)" -#: modules/network/net.c:477 modules/network/net.c:478 -#: modules/network/net.c:480 +#: modules/network/net.c:472 modules/network/net.c:473 +#: modules/network/net.c:475 msgid "(Not set)" msgstr "(sin asignar)" -#: modules/network/net.c:479 +#: modules/network/net.c:474 msgid "Broadcast Address" -msgstr "Dirección de Difusión" +msgstr "Dirección de difusión" + +#~ msgid "chooses a report format (text, html)" +#~ msgstr "elige un formato para el reporte (texto, html)" + +#~ msgid "Couldn't find a Web browser to open URL %s." +#~ msgstr "No se pudo encontrar un navegador Web para abrir la URL %s." + +#~ msgid "CSharp (Mono, old)" +#~ msgstr "CSharp (Mono, antiguo)" + +#~ msgid "RAM" +#~ msgstr "RAM" + +#~ msgid "DMI" +#~ msgstr "DMI" + +#~ msgid "Memory SPD" +#~ msgstr "Memoria SPD" + +#~ msgid "" +#~ "[SPD]\n" +#~ "Please load the eeprom module to obtain information about memory SPD=\n" +#~ "[$ShellParam$]\n" +#~ "ReloadInterval=500\n" +#~ msgstr "" +#~ "[SPD]\n" +#~ "Por favor carge el modulo eeprom para obtener información de memorias " +#~ "SPD=\n" +#~ "[$ShellParam$]\n" +#~ "ReloadInterval=500\n" + +#~ msgid "" +#~ "[SPD]\n" +#~ "Reading memory SPD not supported on this system=\n" +#~ msgstr "" +#~ "[SPD]\n" +#~ "Lectura de memorias no soportado en este sistema=\n" + +#~ msgid "SPD" +#~ msgstr "SPD" + +#~ msgid "Bank" +#~ msgstr "Ranura" + +#~ msgid "Vendor=%s (%s)\n" +#~ msgstr "Proveedor=%s (%s)\n" + +#~ msgid "Unknown benchmark ``%s'' or libbenchmark.so not loaded" +#~ msgstr "Benchmark desconocido ``%s'' o no se cargó libbenchmark.so" + +#~ msgid "%s Module" +#~ msgstr "%s módulo" + +#~ msgid "X11 Vendor" +#~ msgstr "Proveedor X11" + +#~ msgid "OpenGL" +#~ msgstr "OpenGL (3D)" + +#~ msgid "Extensions" +#~ msgstr "Extensiones" + +#~ msgid "Monitor %d=%dx%d pixels\n" +#~ msgstr "Monitor %d=%dx%d pixels\n" + +#~ msgid " (model unknown)" +#~ msgstr " (modelo desconocido)" + +#~ msgid " (vendor unknown)" +#~ msgstr " (proveedor desconocido)" + +#~ msgid "Latency" +#~ msgstr "Latencia" + +#~ msgid "Bus Master" +#~ msgstr "Bus Maestro" + +#~ msgid "Kernel modules" +#~ msgstr "Modulos" + +#~ msgid "OEM Vendor" +#~ msgstr "Vendedor OEM" + +#~ msgid "I/O ports at" +#~ msgstr "Puertos I/O en" + +#~ msgid "Bus, device, function" +#~ msgstr "Bus, dispositivo, funcion" + +#~ msgid "Unknown USB %.2f Device (class %d)" +#~ msgstr "USB desconocido %.2f (class %d)" + +#~ msgid "Vendor ID" +#~ msgstr "ID Vendedor" + +#~ msgid "Product ID" +#~ msgstr "ID Producto" + +#~ msgid "Port" +#~ msgstr "Puerto" + +#~ msgid "Level" +#~ msgstr "Nivel" #~ msgid "pixels" #~ msgstr "pixeles" - -#~ msgid "Desktop Environment" -#~ msgstr "Entorno de escritorio" diff --git a/po/fr.po b/po/fr.po index 627e528f..cef9c58b 100644 --- a/po/fr.po +++ b/po/fr.po @@ -1,15 +1,15 @@ # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# Yo L , 2014. +# Yolateng0 , 2014. # msgid "" msgstr "" "Project-Id-Version: hardinfo\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-08-14 22:23-0500\n" -"PO-Revision-Date: 2014-09-03\n" -"Last-Translator: yolateng0 @olala22000\n" -"Language-Team: LeFlood\n" +"POT-Creation-Date: 2019-10-24 15:16-0500\n" +"PO-Revision-Date: 2019-11-18\n" +"Last-Translator: yolateng0 \n" +"Language-Team: KreizennDafar\n" "Language: fr\n" "X-Poedit-Basepath: ../\n" "MIME-Version: 1.0\n" @@ -18,17 +18,428 @@ msgstr "" "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" "X-Generator: Poedit 1.5.4\n" +#: hardinfo/cpu_util.c:30 +msgid "Little Endian" +msgstr "Little Endian" + +#: hardinfo/cpu_util.c:32 +msgid "Big Endian" +msgstr "Big Endian" + +#: hardinfo/cpu_util.c:184 hardinfo/cpu_util.c:195 modules/devices/gpu.c:200 +msgid "Frequency Scaling" +msgstr "Echelle de Fréquence" + +#: hardinfo/cpu_util.c:185 modules/devices/gpu.c:201 +msgid "Minimum" +msgstr "Minimum" + +#: hardinfo/cpu_util.c:185 hardinfo/cpu_util.c:186 hardinfo/cpu_util.c:187 +#: hardinfo/dt_util.c:589 modules/devices/gpu.c:201 modules/devices/gpu.c:202 +msgid "kHz" +msgstr "kHz" + +#: hardinfo/cpu_util.c:186 modules/devices/gpu.c:202 +msgid "Maximum" +msgstr "Maximum" + +#: hardinfo/cpu_util.c:187 +msgid "Current" +msgstr "Actuel" + +#: hardinfo/cpu_util.c:188 modules/devices/gpu.c:203 +msgid "Transition Latency" +msgstr "Latence de transition" + +#: hardinfo/cpu_util.c:188 modules/devices/gpu.c:203 +msgid "ns" +msgstr "ns" + +#: hardinfo/cpu_util.c:189 +msgid "Governor" +msgstr "Governor" + +#: hardinfo/cpu_util.c:190 hardinfo/cpu_util.c:196 modules/devices/gpu.c:153 +#: modules/devices/pci.c:134 modules/devices/usb.c:136 +msgid "Driver" +msgstr "Driver" + +#: hardinfo/cpu_util.c:202 modules/computer.c:737 +#: modules/devices/arm/processor.c:256 modules/devices/x86/processor.c:284 +#: modules/devices/x86/processor.c:388 modules/devices/x86/processor.c:524 +msgid "(Not Available)" +msgstr "(Non Disponible)" + +#: hardinfo/cpu_util.c:210 hardinfo/cpu_util.c:212 +msgid "Socket" +msgstr "Socket" + +#: hardinfo/cpu_util.c:215 hardinfo/cpu_util.c:217 modules/devices/gpu.c:149 +#: modules/devices/gpu.c:227 +msgid "Core" +msgstr "Coeur" + +#: hardinfo/cpu_util.c:220 +msgid "Book" +msgstr "Book" + +#: hardinfo/cpu_util.c:222 +msgid "Drawer" +msgstr "Drawer" + +#: hardinfo/cpu_util.c:228 modules/devices/arm/processor.c:471 +#: modules/devices/x86/processor.c:750 +msgid "Topology" +msgstr "Topologie" + +#: hardinfo/cpu_util.c:229 +msgid "ID" +msgstr "ID" + +#: hardinfo/dmi_util.c:25 +msgid "BIOS Information" +msgstr "Informations du BIOS" + +#: hardinfo/dmi_util.c:26 modules/devices/parisc/processor.c:157 +msgid "System" +msgstr "Système" + +#: hardinfo/dmi_util.c:27 +msgid "Base Board" +msgstr "Base Carte Mère" + +#: hardinfo/dmi_util.c:28 modules/devices/dmi.c:53 +msgid "Chassis" +msgstr "Châssis" + +#: hardinfo/dmi_util.c:29 modules/computer.c:529 modules/computer.c:1000 +#: modules/devices/alpha/processor.c:87 modules/devices/arm/processor.c:341 +#: modules/devices.c:99 modules/devices/ia64/processor.c:159 +#: modules/devices/m68k/processor.c:83 modules/devices/mips/processor.c:74 +#: modules/devices/parisc/processor.c:154 modules/devices/ppc/processor.c:157 +#: modules/devices/riscv/processor.c:181 modules/devices/s390/processor.c:131 +#: modules/devices/sh/processor.c:83 modules/devices/sparc/processor.c:74 +#: modules/devices/x86/processor.c:646 +msgid "Processor" +msgstr "Processeur" + +#: hardinfo/dmi_util.c:30 +msgid "Memory Controller" +msgstr "Controleur de mémoire" + +#: hardinfo/dmi_util.c:31 +msgid "Memory Module" +msgstr "Module Mémoire" + +#: hardinfo/dmi_util.c:32 modules/devices/parisc/processor.c:163 +#: modules/devices/x86/processor.c:662 +msgid "Cache" +msgstr "Cache" + +#: hardinfo/dmi_util.c:33 +msgid "Port Connector" +msgstr "Connecteur de port" + +#: hardinfo/dmi_util.c:34 +msgid "System Slots" +msgstr "Slots Système" + +#: hardinfo/dmi_util.c:35 +msgid "On Board Devices" +msgstr "Appareils Périphériques" + +#: hardinfo/dmi_util.c:36 +msgid "OEM Strings" +msgstr "Fabricant OEM " + +#: hardinfo/dmi_util.c:37 +msgid "System Configuration Options" +msgstr "Options Configuration Système" + +#: hardinfo/dmi_util.c:38 +msgid "BIOS Language" +msgstr "Langue du BIOS" + +#: hardinfo/dmi_util.c:39 +msgid "Group Associations" +msgstr "Associations" + +#: hardinfo/dmi_util.c:40 +msgid "System Event Log" +msgstr "Log évènement Système" + +#: hardinfo/dmi_util.c:41 +msgid "Physical Memory Array" +msgstr "Tableau Mémoire Physique" + +#: hardinfo/dmi_util.c:42 +msgid "Memory Device" +msgstr "Périphérique Mémoire" + +#: hardinfo/dmi_util.c:43 +msgid "32-bit Memory Error" +msgstr "Erreur Mémoire 32-bit" + +#: hardinfo/dmi_util.c:44 +msgid "Memory Array Mapped Address" +msgstr "Mappage Tableau Mémoire " + +#: hardinfo/dmi_util.c:45 +msgid "Memory Device Mapped Address" +msgstr "Mappage Périphérique Mémoire" + +#: hardinfo/dmi_util.c:46 +msgid "Built-in Pointing Device" +msgstr "Périphérique de Pointage Présent" + +#: hardinfo/dmi_util.c:47 +msgid "Portable Battery" +msgstr "Batterie Portable" + +#: hardinfo/dmi_util.c:48 +msgid "System Reset" +msgstr "Reset Système" + +#: hardinfo/dmi_util.c:49 +msgid "Hardware Security" +msgstr "Sécurité Hardware" + +#: hardinfo/dmi_util.c:50 +msgid "System Power Controls" +msgstr "Contrôle Puissance Système" + +#: hardinfo/dmi_util.c:51 +msgid "Voltage Probe" +msgstr "Sonde de Tension" + +#: hardinfo/dmi_util.c:52 +msgid "Cooling Device" +msgstr "dispositif de refroidissement Cooling" + +#: hardinfo/dmi_util.c:53 +msgid "Temperature Probe" +msgstr "Sonde de Température" + +#: hardinfo/dmi_util.c:54 +msgid "Electrical Current Probe" +msgstr "Sonde Courant Electrique" + +#: hardinfo/dmi_util.c:55 +msgid "Out-of-band Remote Access" +msgstr "Accès Contrôle à Distance" + +#: hardinfo/dmi_util.c:56 +msgid "Boot Integrity Services" +msgstr "Services de Boot" + +#: hardinfo/dmi_util.c:57 +msgid "System Boot" +msgstr "Système de Boot" + +#: hardinfo/dmi_util.c:58 +msgid "64-bit Memory Error" +msgstr "Erreur Mémoire 64-bit" + +#: hardinfo/dmi_util.c:59 +msgid "Management Device" +msgstr "Disposiif Périphérique" + +#: hardinfo/dmi_util.c:60 +msgid "Management Device Component" +msgstr "Dispositif des Composants Périphériques" + +#: hardinfo/dmi_util.c:61 +msgid "Management Device Threshold Data" +msgstr "Dispositif de Seuil Mémoire de Périphériques" + +#: hardinfo/dmi_util.c:62 +msgid "Memory Channel" +msgstr "Canal Mémoire" + +#: hardinfo/dmi_util.c:63 +msgid "IPMI Device" +msgstr "Périphérique IPMI" + +#: hardinfo/dmi_util.c:64 +msgid "Power Supply" +msgstr "Alimentation électrique" + +#: hardinfo/dmi_util.c:65 +msgid "Additional Information" +msgstr "Informations Supplémentaires" + +#: hardinfo/dmi_util.c:66 +msgid "Onboard Device" +msgstr "Périphériques Embarqués" + +#: hardinfo/dmi_util.c:226 +msgid "Invalid chassis type (0)" +msgstr "Type de châssis Invalide (0)" + +#: hardinfo/dmi_util.c:227 hardinfo/dmi_util.c:228 +msgid "Unknown chassis type" +msgstr "Type de châssis inconnu" + +#: hardinfo/dmi_util.c:229 +msgid "Desktop" +msgstr "Ordinateur de bureau" + +#: hardinfo/dmi_util.c:230 +msgid "Low-profile Desktop" +msgstr "PC Low-Profile" + +#: hardinfo/dmi_util.c:231 +msgid "Pizza Box" +msgstr "Pizza Box" + +#: hardinfo/dmi_util.c:232 +msgid "Mini Tower" +msgstr "Mini Tour" + +#: hardinfo/dmi_util.c:233 +msgid "Tower" +msgstr "Tour" + +#: hardinfo/dmi_util.c:234 +msgid "Portable" +msgstr "Portable" + +#: hardinfo/dmi_util.c:235 modules/computer.c:391 modules/computer.c:400 +#: modules/computer.c:422 +msgid "Laptop" +msgstr "Portable" + +#: hardinfo/dmi_util.c:236 +msgid "Notebook" +msgstr "Notebook" + +#: hardinfo/dmi_util.c:237 +msgid "Handheld" +msgstr "Appareil Portatif" + +#: hardinfo/dmi_util.c:238 +msgid "Docking Station" +msgstr "Station d'accueil" + +#: hardinfo/dmi_util.c:239 +msgid "All-in-one" +msgstr "Tout en Un" + +#: hardinfo/dmi_util.c:240 +msgid "Subnotebook" +msgstr "Subnotebook" + +#: hardinfo/dmi_util.c:241 +msgid "Space-saving" +msgstr "Space-saving" + +#: hardinfo/dmi_util.c:242 +msgid "Lunch Box" +msgstr "Lunch Box" + +#: hardinfo/dmi_util.c:243 +msgid "Main Server Chassis" +msgstr "Châssis du serveur principal" + +#: hardinfo/dmi_util.c:244 +msgid "Expansion Chassis" +msgstr "Extension de Châssis" + +#: hardinfo/dmi_util.c:245 +msgid "Sub Chassis" +msgstr "Sous Châssis" + +#: hardinfo/dmi_util.c:246 +msgid "Bus Expansion Chassis" +msgstr "Châssis BUS Extension" + +#: hardinfo/dmi_util.c:247 +msgid "Peripheral Chassis" +msgstr "Châssis Périphériques" + +#: hardinfo/dmi_util.c:248 +msgid "RAID Chassis" +msgstr "Châssis RAID" + +#: hardinfo/dmi_util.c:249 +msgid "Rack Mount Chassis" +msgstr "Châssis de Montage Rack" + +#: hardinfo/dmi_util.c:250 +msgid "Sealed-case PC" +msgstr "Boîtier étanche" + +#: hardinfo/dmi_util.c:251 +msgid "Multi-system" +msgstr "Système Multiple" + +#: hardinfo/dmi_util.c:252 +msgid "CompactPCI" +msgstr "CompactPCI" + +#: hardinfo/dmi_util.c:253 +msgid "AdvancedTCA" +msgstr "AdvancedTCA" + +#: hardinfo/dmi_util.c:254 +msgid "Blade" +msgstr "Blade" + +#: hardinfo/dmi_util.c:255 +msgid "Blade Enclosing" +msgstr "Blade Enclosing" + +#: hardinfo/dmi_util.c:256 +msgid "Tablet" +msgstr "Tablette" + +#: hardinfo/dmi_util.c:257 +msgid "Convertible" +msgstr "Convertible" + +#: hardinfo/dmi_util.c:258 +msgid "Detachable" +msgstr "Detachable" + +#: hardinfo/dmi_util.c:259 +msgid "IoT Gateway" +msgstr "Iot Passerelle" + +#: hardinfo/dmi_util.c:260 +msgid "Embedded PC" +msgstr "PC embarqué" + +#: hardinfo/dmi_util.c:261 +msgid "Mini PC" +msgstr "Mini PC" + +#: hardinfo/dmi_util.c:262 +msgid "Stick PC" +msgstr "Stick PC" + +#: hardinfo/dt_util.c:1179 +msgid "phandle Map" +msgstr "Map Descriptif" + +#: hardinfo/dt_util.c:1180 +msgid "Alias Map" +msgstr "Map Alias" + +#: hardinfo/dt_util.c:1181 +msgid "Symbol Map" +msgstr "Symbol Map" + #. / %d will be latest year of copyright -#: hardinfo/hardinfo.c:49 +#: hardinfo/hardinfo.c:50 #, c-format msgid "" -"Copyright (C) 2003-%d Leandro A. F. Pereira. See COPYING for details.\n" +"Copyright (C) 2003-%d L. A. F. Pereira. See COPYING for details.\n" "\n" msgstr "" -"Copyright (C) 2003-%d Leandro A. F. Pereira. voir COPYING pour les details.\n" +"Copyright (C) 2003-%d L. A. F. Pereira. voir COPYING pour les details.\n" "\n" -#: hardinfo/hardinfo.c:51 +#: hardinfo/hardinfo.c:52 #, c-format msgid "" "Compile-time options:\n" @@ -45,18 +456,20 @@ msgstr "" " Library prefix: %s\n" " Compilation: %s\n" -#: hardinfo/hardinfo.c:57 hardinfo/hardinfo.c:58 modules/computer.c:605 -#: modules/devices/inputdevices.c:128 modules/devices/pci.c:112 -#: modules/devices/printers.c:138 +#: hardinfo/hardinfo.c:58 hardinfo/hardinfo.c:59 modules/computer.c:785 +#: modules/computer/modules.c:131 modules/computer/modules.c:132 +#: modules/devices/inputdevices.c:123 modules/devices/printers.c:138 +#: modules/devices/spd-decode.c:903 msgid "Yes" msgstr "Oui" -#: hardinfo/hardinfo.c:58 modules/computer.c:605 modules/devices/pci.c:112 -#: modules/devices/printers.c:138 +#: hardinfo/hardinfo.c:59 modules/computer.c:785 modules/computer/modules.c:131 +#: modules/computer/modules.c:132 modules/devices/printers.c:138 +#: modules/devices/spd-decode.c:900 msgid "No" msgstr "Non" -#: hardinfo/hardinfo.c:69 +#: hardinfo/hardinfo.c:70 #, c-format msgid "" "Failed to find runtime data.\n" @@ -67,58 +480,68 @@ msgstr "" "Impossible de trouver les données d'exécution.\n" "\n" "• Est ce que HardInfo est correctement installé?\n" -"• Voir si %s et %s existes et que vous avez bien les privilèges." +"• Voir si %s et %s existent et que vous ayez bien les privilèges nécessaires." -#: hardinfo/hardinfo.c:76 +#: hardinfo/hardinfo.c:77 #, c-format msgid "" "Modules:\n" "%-20s %-15s %-12s\n" -msgstr "" +msgstr "Modules:\n" -#: hardinfo/hardinfo.c:77 +#: hardinfo/hardinfo.c:78 msgid "File Name" msgstr "Nom du fichier" -#: hardinfo/hardinfo.c:77 modules/computer.c:534 modules/computer.c:562 -#: modules/computer.c:630 modules/computer/languages.c:104 -#: modules/computer/modules.c:146 modules/devices/arm/processor.c:336 -#: modules/devices/ia64/processor.c:160 modules/devices/inputdevices.c:116 -#: modules/devices/pci.c:215 modules/devices/sh/processor.c:84 -#: modules/devices/x86/processor.c:455 modules/network.c:326 +#: hardinfo/hardinfo.c:78 modules/computer.c:666 modules/computer.c:694 +#: modules/computer.c:815 modules/computer/languages.c:95 +#: modules/computer/modules.c:149 modules/devices/arm/processor.c:469 +#: modules/devices/dmi.c:37 modules/devices/dmi.c:48 modules/devices/gpu.c:233 +#: modules/devices/ia64/processor.c:160 modules/devices/inputdevices.c:111 +#: modules/devices/monitors.c:399 modules/devices/monitors.c:502 +#: modules/devices/sh/processor.c:84 modules/devices/x86/processor.c:749 +#: modules/network.c:332 msgid "Name" msgstr "Nom" -#: hardinfo/hardinfo.c:77 modules/computer.c:296 modules/computer.c:505 -#: modules/computer.c:507 modules/computer.c:595 modules/computer.c:603 -#: modules/devices/inputdevices.c:121 +#: hardinfo/hardinfo.c:78 modules/computer.c:347 modules/computer.c:572 +#: modules/computer.c:574 modules/computer.c:743 modules/computer/modules.c:151 +#: modules/devices/dmi.c:40 modules/devices/dmi.c:46 modules/devices/dmi.c:50 +#: modules/devices/dmi.c:56 modules/devices/firmware.c:105 +#: modules/devices/inputdevices.c:116 modules/devices/monitors.c:405 msgid "Version" msgstr "Version" -#: hardinfo/hardinfo.c:124 +#: hardinfo/hardinfo.c:129 #, c-format -msgid "Unknown benchmark ``%s'' or libbenchmark.so not loaded" -msgstr "Benchmark inconnu ``%s'' ou libbenchmark.so non chargé" +msgid "Unknown benchmark ``%s'' or benchmark.so not loaded" +msgstr "Benchmark inconnu ``%s'' ou benchmark.so non chargé" -#: hardinfo/hardinfo.c:152 +#: hardinfo/hardinfo.c:159 msgid "Don't know what to do. Exiting." -msgstr "Que faire. Sortie." +msgstr "Que faire. Sortir." -#: hardinfo/util.c:104 modules/computer/uptime.c:53 +#: hardinfo/usb_util.c:290 modules/devices/devicetree.c:91 +#: modules/devices/devicetree.c:92 modules/devices/monitors.c:407 +#: modules/devices/storage.c:246 +msgid "(None)" +msgstr "(Aucun)" + +#: hardinfo/util.c:104 modules/computer/uptime.c:54 #, c-format msgid "%d day" msgid_plural "%d days" msgstr[0] "%d jour" msgstr[1] "%d jours" -#: hardinfo/util.c:105 modules/computer/uptime.c:54 +#: hardinfo/util.c:105 modules/computer/uptime.c:55 #, c-format msgid "%d hour" msgid_plural "%d hours" msgstr[0] "%d heure" msgstr[1] "%d heures" -#: hardinfo/util.c:106 modules/computer/uptime.c:55 +#: hardinfo/util.c:106 modules/computer/uptime.c:56 #, c-format msgid "%d minute" msgid_plural "%d minutes" @@ -155,12 +578,12 @@ msgstr "%.1f GiB" #: hardinfo/util.c:136 #, c-format msgid "%.1f TiB" -msgstr "" +msgstr "%.1f TiB" #: hardinfo/util.c:138 #, c-format msgid "%.1f PiB" -msgstr "" +msgstr "%.1f PiB" #: hardinfo/util.c:361 msgid "Error" @@ -174,74 +597,93 @@ msgstr "Attention" msgid "Fatal Error" msgstr "Erreur Fatale" -#: hardinfo/util.c:401 +#: hardinfo/util.c:406 msgid "creates a report and prints to standard output" -msgstr "crée un rapport et imprime sur la sortie standard" +msgstr "créer un rapport et imprimer sur la sortie standard" -#: hardinfo/util.c:407 -msgid "chooses a report format (text, html)" -msgstr "choisir un format de rapport (texte, html)" +#: hardinfo/util.c:412 +msgid "chooses a report format ([text], html)" +msgstr "Choisir format du rapport ([text], html)" -#: hardinfo/util.c:413 +#: hardinfo/util.c:418 msgid "run benchmark; requires benchmark.so to be loaded" -msgstr "Envoyé le benchmark; nécessite benchmark.so" +msgstr "Envoyer le benchmark; nécessite benchmark.so" -#: hardinfo/util.c:419 +#: hardinfo/util.c:424 +msgid "note attached to benchmark results" +msgstr "notes attachées aux résultats du benchmark " + +#: hardinfo/util.c:430 +msgid "benchmark result format ([short], conf, shell)" +msgstr "Format Résultat du benchmark ([court], conf, shell)" + +#: hardinfo/util.c:436 +msgid "" +"maximum number of benchmark results to include (-1 for no limit, default is " +"10)" +msgstr "" +"Nombre max de benchmark à inclure (-1 aucune limite, defaut est " +"10)" + +#: hardinfo/util.c:442 msgid "lists modules" msgstr "Listes des modules" -#: hardinfo/util.c:425 +#: hardinfo/util.c:448 msgid "specify module to load" msgstr "spécifie les modules à charger" -#: hardinfo/util.c:431 +#: hardinfo/util.c:454 msgid "automatically load module dependencies" msgstr "charger automatiquement les dépendances entre modules" -#: hardinfo/util.c:438 +#: hardinfo/util.c:461 msgid "run in XML-RPC server mode" msgstr "fonctionner en mode serveur XML-RPC" -#: hardinfo/util.c:445 +#: hardinfo/util.c:468 msgid "shows program version and quit" msgstr "Affiche la version du programme et quitter" -#: hardinfo/util.c:450 +#: hardinfo/util.c:474 +msgid "do not run benchmarks" +msgstr "Ne pas activer de Benchmark" + +#: hardinfo/util.c:480 +msgid "show all details" +msgstr "Voir tous les détails" + +#: hardinfo/util.c:485 msgid "- System Profiler and Benchmark tool" msgstr "- Profil du Systeme et outil d'évaluation Benchmark" -#: hardinfo/util.c:460 +#: hardinfo/util.c:495 #, c-format msgid "" "Unrecognized arguments.\n" "Try ``%s --help'' for more information.\n" msgstr "" "commandes inconnues.\n" -"taper ``%s --help'' pour plus d'informations.\n" - -#: hardinfo/util.c:526 -#, c-format -msgid "Couldn't find a Web browser to open URL %s." -msgstr "Impossible de trouver un navigateur Web pour ouvrir l'URL %s." +"Essayer ``%s --help'' pour plus d'informations.\n" -#: hardinfo/util.c:875 +#: hardinfo/util.c:903 #, c-format msgid "Module \"%s\" depends on module \"%s\", load it?" msgstr "Module \"%s\" depends du module \"%s\", le charger?" -#: hardinfo/util.c:898 +#: hardinfo/util.c:926 #, c-format msgid "Module \"%s\" depends on module \"%s\"." msgstr "Module \"%s\" depends du module \"%s\"." -#: hardinfo/util.c:943 +#: hardinfo/util.c:971 #, c-format msgid "No module could be loaded. Check permissions on \"%s\" and try again." msgstr "" "Aucun module peut être chargé. Vérifiez les permissions sur \"%s\" et " -"essayez à nouveau." +"essayer à nouveau." -#: hardinfo/util.c:947 +#: hardinfo/util.c:975 msgid "" "No module could be loaded. Please use hardinfo -l to list all available " "modules and try again with a valid module list." @@ -250,20 +692,26 @@ msgstr "" "répertorier tous les modules disponibles et essayez à nouveau avec une liste " "de modules valides." -#: hardinfo/util.c:1024 +#: hardinfo/util.c:1030 #, c-format msgid "Scanning: %s..." msgstr "Scanne: %s..." -#: hardinfo/util.c:1034 shell/shell.c:301 shell/shell.c:760 shell/shell.c:1795 -#: modules/benchmark.c:449 modules/benchmark.c:457 +#: hardinfo/util.c:1040 shell/shell.c:310 shell/shell.c:795 shell/shell.c:1962 +#: modules/benchmark.c:583 modules/benchmark.c:591 msgid "Done." msgstr "Réalisé." -#: shell/callbacks.c:117 -#, c-format -msgid "%s Module" -msgstr "%s Module" +#: hardinfo/vendor.c:440 modules/computer.c:573 modules/computer.c:765 +#: modules/computer/os.c:79 modules/computer/os.c:263 modules/computer/os.c:300 +#: modules/computer/os.c:499 modules/computer/os.c:569 modules/devices.c:359 +#: modules/devices.c:505 modules/devices/printers.c:99 +#: modules/devices/printers.c:106 modules/devices/printers.c:116 +#: modules/devices/printers.c:131 modules/devices/printers.c:140 +#: modules/devices/printers.c:243 modules/devices/spd-decode.c:312 +#: modules/devices/usb.c:146 +msgid "Unknown" +msgstr "Inconnu" #: shell/callbacks.c:128 #, c-format @@ -277,7 +725,7 @@ msgstr "" #: shell/callbacks.c:142 #, c-format msgid "No about information is associated with the %s module." -msgstr "Pas d'information associée au module %s." +msgstr "Pas d'information associée à ce module %s." #: shell/callbacks.c:158 msgid "Author:" @@ -287,67 +735,63 @@ msgstr "Auteur:" msgid "Contributors:" msgstr "Contributeurs:" -#: shell/callbacks.c:166 +#: shell/callbacks.c:167 msgid "Based on work by:" msgstr "Basé sur le travail de:" -#: shell/callbacks.c:167 +#: shell/callbacks.c:168 msgid "MD5 implementation by Colin Plumb (see md5.c for details)" -msgstr "Implémentation MD5 par Colin Plumb (voir md5.c pour les détails)" +msgstr "Implémentation MD5 par Colin Plumb (détails voir md5.c)" -#: shell/callbacks.c:168 +#: shell/callbacks.c:169 msgid "SHA1 implementation by Steve Reid (see sha1.c for details)" -msgstr "implémentation SHA1 par Steve Reid (voir sha1.c pour les détails)" +msgstr "implémentation SHA1 par Steve Reid (détails voir sha1.c)" -#: shell/callbacks.c:169 +#: shell/callbacks.c:170 msgid "Blowfish implementation by Paul Kocher (see blowfich.c for details)" -msgstr "" -"Implémentation Blowfish par Paul Kocher (voir blowchih.c pour de plus amples " -"détails" +msgstr "Implémentation Blowfish par Paul Kocher (voir blowchih.c)" -#: shell/callbacks.c:170 +#: shell/callbacks.c:171 msgid "Raytracing benchmark by John Walker (see fbench.c for details)" -msgstr "" -"Raytracing benchmark par John Walker (voir fbench.c pour de plus amples " -"détails)" +msgstr "Raytracing benchmark par John Walker (détails voir fbench.c)" -#: shell/callbacks.c:171 +#: shell/callbacks.c:172 msgid "FFT benchmark by Scott Robert Ladd (see fftbench.c for details)" -msgstr "FFT benchmark par Scott Robert Ladd (voir fftbench.c pour les détails)" +msgstr "FFT benchmark par Scott Robert Ladd (détails voir fftbench.c)" -#: shell/callbacks.c:172 +#: shell/callbacks.c:173 msgid "Some code partly based on x86cpucaps by Osamu Kayasono" -msgstr "Une partie du code est basé sur x86cpucaps par Osamu Kayasono" +msgstr "Une partie du code est basée sur x86cpucaps par Osamu Kayasono" -#: shell/callbacks.c:173 +#: shell/callbacks.c:174 msgid "Vendor list based on GtkSysInfo by Pissens Sebastien" msgstr "La liste des fabricants est basée sur GtkSysInfo par Pissens Sebastien" -#: shell/callbacks.c:174 +#: shell/callbacks.c:175 msgid "DMI support based on code by Stewart Adam" msgstr "Les supports DMI sont basés sur le code de Stewart Adam" -#: shell/callbacks.c:175 +#: shell/callbacks.c:176 msgid "SCSI support based on code by Pascal F. Martin" msgstr "Les supports SCSI sont basés sur le code de Pascal F. Martin" -#: shell/callbacks.c:180 +#: shell/callbacks.c:181 msgid "Tango Project" msgstr "Projet Tango" -#: shell/callbacks.c:181 +#: shell/callbacks.c:182 msgid "The GNOME Project" -msgstr "Le Projet Gnome" +msgstr "Projet Gnome" -#: shell/callbacks.c:182 +#: shell/callbacks.c:183 msgid "VMWare, Inc. (USB icon from VMWare Workstation 6)" -msgstr "VMWare, Inc. (USB icône sur VMWare Workstation 6)" +msgstr "VMWare, Inc. (icône USB VMWare Workstation 6)" -#: shell/callbacks.c:200 +#: shell/callbacks.c:201 msgid "System information and benchmark tool" msgstr "Information du systeme et outil d'évaluation" -#: shell/callbacks.c:205 +#: shell/callbacks.c:206 msgid "" "HardInfo is free software; you can redistribute it and/or modify it under " "the terms of the GNU General Public License as published by the Free " @@ -362,170 +806,193 @@ msgid "" "this program; if not, write to the Free Software Foundation, Inc., 51 " "Franklin St, Fifth Floor, Boston, MA 02110-1301 USA" msgstr "" +"HardInfo is free software; you can redistribute it and/or modify it under " +"the terms of the GNU General Public License as published by the Free " +"Software Foundation, version 2.\n" +"\n" +"This program is distributed in the hope that it will be useful, but WITHOUT " +"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or " +"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for " +"more details.\n" +"\n" +"Recevoir une copie de GNU General Public License de ce programme ou écrire " +"à the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, " +"MA 02110-1301 USA" -#: shell/callbacks.c:220 +#: shell/callbacks.c:221 msgid "translator-credits" -msgstr "" +msgstr "Crédits Traducteurs" -#: shell/menu.c:35 +#: shell/menu.c:43 msgid "_Information" msgstr "_Information" -#: shell/menu.c:36 +#: shell/menu.c:44 msgid "_Remote" msgstr "_Périphériques distants" -#: shell/menu.c:37 +#: shell/menu.c:45 msgid "_View" msgstr "_Voir" -#: shell/menu.c:38 +#: shell/menu.c:46 msgid "_Help" msgstr "_Aide" -#: shell/menu.c:39 +#: shell/menu.c:47 msgid "About _Modules" msgstr "A propos des _modules" -#: shell/menu.c:43 +#: shell/menu.c:51 msgid "Generate _Report" msgstr "Générer _Rapport" -#: shell/menu.c:48 +#: shell/menu.c:56 msgid "_Network Updater..." msgstr "_Mise à jour des données" -#: shell/menu.c:53 +#: shell/menu.c:61 msgid "_Open..." msgstr "_Ouvrir..." -#: shell/menu.c:58 +#: shell/menu.c:66 msgid "_Copy to Clipboard" msgstr "_Copier dans le presse-papier" -#: shell/menu.c:59 +#: shell/menu.c:67 msgid "Copy to clipboard" msgstr "Copie dans le presse-papier" -#: shell/menu.c:63 +#: shell/menu.c:71 msgid "_Refresh" msgstr "_Rafraichir" -#: shell/menu.c:68 +#: shell/menu.c:76 msgid "_Open HardInfo Web Site" msgstr "_HardInfo Site Web" -#: shell/menu.c:73 +#: shell/menu.c:81 msgid "_Report bug" msgstr "_Rapporter un bug" -#: shell/menu.c:78 +#: shell/menu.c:86 msgid "_About HardInfo" msgstr "_A Propos de HardInfo" -#: shell/menu.c:79 +#: shell/menu.c:87 msgid "Displays program version information" msgstr "Affiche les informations de version du programme" -#: shell/menu.c:83 +#: shell/menu.c:91 msgid "_Quit" msgstr "_Quitter" -#: shell/menu.c:90 +#: shell/menu.c:98 msgid "_Side Pane" msgstr "_Volet latéral" -#: shell/menu.c:91 +#: shell/menu.c:99 msgid "Toggles side pane visibility" msgstr "Basculer visibilité du panneau latéral " -#: shell/menu.c:94 +#: shell/menu.c:102 msgid "_Toolbar" msgstr "_Barre d'outils" -#: shell/report.c:494 shell/report.c:502 +#: shell/report.c:769 shell/report.c:777 msgid "Save File" msgstr "Sauvegarder le fichier" -#: shell/report.c:629 +#: shell/report.c:772 shell/report.c:1243 shell/syncmanager.c:748 +msgid "_Cancel" +msgstr "Annuler" + +#: shell/report.c:774 +msgid "_Save" +msgstr "_Sauvegarder" + +#: shell/report.c:943 msgid "Cannot create ReportContext. Programming bug?" msgstr "Impossible de créer un rapport général. Bug?" -#: shell/report.c:648 +#: shell/report.c:962 msgid "Open the report with your web browser?" -msgstr "Ouvrez le rapport avec votre navigateur Web?" +msgstr "Ouvrez le rapport dans votre navigateur Web?" -#: shell/report.c:682 +#: shell/report.c:965 +msgid "_No" +msgstr "_Non" + +#: shell/report.c:966 +msgid "_Open" +msgstr "_Ouvrir" + +#: shell/report.c:996 msgid "Generating report..." msgstr "Création du rapport..." -#: shell/report.c:692 +#: shell/report.c:1006 msgid "Report saved." msgstr "Rapport sauvegardé" -#: shell/report.c:694 +#: shell/report.c:1008 msgid "Error while creating the report." msgstr "Erreur lors de la création du rapport." -#: shell/report.c:796 +#: shell/report.c:1110 msgid "Generate Report" msgstr "Réalisation du Rapport" -#: shell/report.c:821 +#: shell/report.c:1135 msgid "" "Generate Report\n" "Please choose the information that you wish to view in your report:" msgstr "" -" Générer un rapport \n" -" S'il vous plaît choisissez les informations que vous souhaitez afficher " -"dans votre rapport:" +" Générer un rapport \n" +" Choisissez les informations que vous souhaitez afficher dans votre rapport:" -#: shell/report.c:893 +#: shell/report.c:1207 msgid "Select _None" msgstr "Désélectionner _Tout" -#: shell/report.c:904 +#: shell/report.c:1218 msgid "Select _All" msgstr "Sélectionner _Tout" -#: shell/report.c:929 shell/syncmanager.c:748 -msgid "_Cancel" -msgstr "" - -#: shell/report.c:939 +#: shell/report.c:1253 msgid "_Generate" msgstr "_Création" -#: shell/shell.c:402 +#: shell/shell.c:407 #, c-format msgid "%s - System Information" msgstr "%s - Informations du Système" -#: shell/shell.c:407 +#: shell/shell.c:412 msgid "System Information" msgstr "Informations du Système" -#: shell/shell.c:747 +#: shell/shell.c:782 msgid "Loading modules..." msgstr "Chargement des modules..." -#: shell/shell.c:1660 +#: shell/shell.c:1828 #, c-format msgid "%s → Summary" msgstr "%s → Résumé" -#: shell/shell.c:1769 +#: shell/shell.c:1936 msgid "Updating..." msgstr "Mise à jour..." #: shell/syncmanager.c:69 msgid "" "Synchronize with Central Database\n" -"The following information may be synchronized with the HardInfo central " +"The following information may be synchronized\nwith the HardInfo central " "database." msgstr "" "Synchroniser avec la base de données centrale\n" -"Les informations suivantes seront synchronisées avec la base de données de " +"Les informations suivantes seront synchronisées\navec la base de données de " "HardInfo." #: shell/syncmanager.c:72 @@ -540,8 +1007,8 @@ msgstr "" msgid "" "HardInfo was compiled without libsoup support. (Network Updater requires it.)" msgstr "" -"HARDiNFO a été compilé sans le support libsoup. (Mise à jour des données " -"l'exige.)" +"HARDiNFO a été compilé sans le support libsoup. (Exigé pour mise à jour des " +"données.)" #: shell/syncmanager.c:161 shell/syncmanager.c:189 #, c-format @@ -563,7 +1030,7 @@ msgstr "" #: shell/syncmanager.c:375 msgid "Contacting HardInfo Central Database" -msgstr "En contact avec la base de données centrale du site HARDiNFO" +msgstr "En contact avec la base de données centrale du site HardInfo" #: shell/syncmanager.c:376 msgid "Cleaning up" @@ -575,7 +1042,7 @@ msgstr "(annuler)" #: shell/syncmanager.c:510 msgid "(failed)" -msgstr "(echec)" +msgstr "(échec)" #: shell/syncmanager.c:521 #, c-format @@ -607,841 +1074,1217 @@ msgstr "Mises à jour" msgid "_Synchronize" msgstr "_Synchronisation" -#: modules/benchmark.c:52 -msgid "CPU Blowfish" -msgstr "Test CPU Blowfish" +#: modules/benchmark/benches.c:82 +msgid "CPU Blowfish (Single-thread)" +msgstr "CPU Blowfish (Single-thread)" + +#: modules/benchmark/benches.c:84 +msgid "CPU Blowfish (Multi-thread)" +msgstr "CPU Blowfish (Multi-thread)" -#: modules/benchmark.c:53 +#: modules/benchmark/benches.c:86 +msgid "CPU Blowfish (Multi-core)" +msgstr "CPU Blowfish (Multi-core)" + +#: modules/benchmark/benches.c:88 +msgid "CPU Zlib" +msgstr "Test CPU Zlib" + +#: modules/benchmark/benches.c:90 msgid "CPU CryptoHash" msgstr "Test CPU CryptoHash" -#: modules/benchmark.c:54 +#: modules/benchmark/benches.c:92 msgid "CPU Fibonacci" msgstr "Test CPU Fibonacci " -#: modules/benchmark.c:55 +#: modules/benchmark/benches.c:94 msgid "CPU N-Queens" msgstr "Test CPU N-Queens" -#: modules/benchmark.c:56 -msgid "CPU Zlib" -msgstr "" - -#: modules/benchmark.c:57 +#: modules/benchmark/benches.c:96 msgid "FPU FFT" msgstr "Test FPU FFT" -#: modules/benchmark.c:58 +#: modules/benchmark/benches.c:98 msgid "FPU Raytracing" msgstr "Test FPU Raytracing" -#: modules/benchmark.c:60 -msgid "GPU Drawing" -msgstr "Test GPU Drawing" +#: modules/benchmark/benches.c:100 +msgid "SysBench CPU (Single-thread)" +msgstr "SysBench CPU (Single-thread)" -#: modules/benchmark.c:239 modules/benchmark.c:255 -msgid "CPU Config" -msgstr "" +#: modules/benchmark/benches.c:102 +msgid "SysBench CPU (Multi-thread)" +msgstr "SysBench CPU (Multi-thread)" -#: modules/benchmark.c:239 modules/benchmark.c:255 -msgid "Results" -msgstr "" +#: modules/benchmark/benches.c:104 +msgid "SysBench CPU (Four threads)" +msgstr "SysBench CPU (Four threads)" -#: modules/benchmark.c:239 modules/benchmark.c:255 modules/computer.c:751 -#: modules/devices/sparc/processor.c:75 -msgid "CPU" -msgstr "" +#: modules/benchmark/benches.c:106 +msgid "SysBench Memory (Single-thread)" +msgstr "SysBench Memory (Single-thread)" -#: modules/benchmark.c:381 -#, c-format -msgid "Benchmarking: %s." -msgstr "Benchmarking: %s." +#: modules/benchmark/benches.c:108 +msgid "SysBench Memory (Two threads)" +msgstr "SysBench Memory (Two threads)" + +#: modules/benchmark/benches.c:110 +msgid "SysBench Memory" +msgstr "SysBench Mémoire" + +#: modules/benchmark/benches.c:113 +msgid "GPU Drawing" +msgstr "Test GPU Drawing" -#: modules/benchmark.c:395 -msgid "Benchmarking. Please do not move your mouse or press any keys." +#: modules/benchmark/benches.c:126 +msgid "" +"Alexey Kopytov's sysbench is required.\n" +"Results in events/second. Higher is better." msgstr "" -"Benchmarking. S'il vous plaît ne pas déplacer votre souris ou appuyer sur " -"les touches" +"Alexey Kopytov's sysbench est nécessaire.\n" +"Resultats en événements/second. Plus c'est élevé, meilleur est le résultat." -#: modules/benchmark.c:399 -msgid "Cancel" -msgstr "Annuler" +#: modules/benchmark/benches.c:132 +msgid "" +"Alexey Kopytov's sysbench is required.\n" +"Results in MiB/second. Higher is better." +msgstr "" +"Alexey Kopytov's sysbench est nécessaire.\n" +"Resultats en MiB/second. Plus c'est élevé, meilleur est le résultat." -#: modules/benchmark.c:536 +#: modules/benchmark/benches.c:136 msgid "Results in MiB/second. Higher is better." -msgstr "Résultats en MiB/seconde. Plus c'est élevé meilleur c'est." +msgstr "Résultats en MiB/seconde. Plus c'est élevé, meilleur est le résultat." -#: modules/benchmark.c:540 +#: modules/benchmark/benches.c:143 msgid "Results in HIMarks. Higher is better." -msgstr "Résultats en HIMarks. Plus c'est élevé meilleur c'est." +msgstr "Résultats en HIMarks. Plus c'est élevé, meilleur est le résultat." -#: modules/benchmark.c:547 +#: modules/benchmark/benches.c:149 msgid "Results in seconds. Lower is better." -msgstr "Résultats en secondes. Plus c'est bas meilleur c'est." +msgstr "Résultats en secondes. Plus c'est bas, meilleur est le résultat." + +#. /or modify +#. * it under the terms of the GNU General Public License as published by +#. * the Free Software Foundation, version 2. +#. * +#. * This program is distributed in the hope that it will be useful, +#. * but WITHOUT ANY WARRANTY; without even the implied warranty of +#. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +#. * GNU General Public License for more details. +#. * +#. * You should have received a copy of the GNU General Public License +#. * along with this program; if not, write to the Free Software +#. * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +#. +#. / Used for an unknown value. Having it in only one place cleans up the .po line references +#: modules/benchmark/bench_results.c:22 modules/computer.c:41 +#: modules/computer/display.c:41 modules/computer/display.c:58 +#: modules/computer/os.c:286 modules/computer/os.c:346 modules/devices.c:488 +#: modules/devices/dmi_memory.c:52 modules/devices/dmi_memory.c:53 +#: modules/devices/dmi_memory.c:579 modules/devices/dmi_memory.c:719 +#: modules/devices/dmi_memory.c:855 modules/devices/gpu.c:42 +#: modules/devices/gpu.c:58 modules/devices/gpu.c:112 modules/devices/gpu.c:120 +#: modules/devices/gpu.c:154 modules/devices/gpu.c:155 +#: modules/devices/gpu.c:176 modules/devices/monitors.c:27 +#: modules/devices/monitors.c:28 modules/devices/monitors.c:153 +#: modules/devices/monitors.c:162 modules/devices/pci.c:25 +#: modules/devices/pci.c:135 modules/devices/pci.c:136 +#: modules/devices/spd-decode.c:306 modules/devices/spd-decode.c:307 +#: modules/devices/spd-decode.c:310 modules/devices/spd-decode.c:311 +#: modules/devices/spd-decode.c:914 modules/devices/spd-decode.c:915 +#: modules/devices/storage.c:247 modules/devices/storage.c:309 +#: modules/devices/usb.c:28 modules/network/net.c:437 includes/cpu_util.h:11 +msgid "(Unknown)" +msgstr "(Inconnu)" + +#: modules/benchmark/bench_results.c:49 modules/benchmark/bench_results.c:330 +#: modules/devices/alpha/processor.c:90 modules/devices/arm/processor.c:290 +#: modules/devices/arm/processor.c:303 modules/devices/arm/processor.c:345 +#: modules/devices/arm/processor.c:500 modules/devices.c:325 +#: modules/devices.c:333 modules/devices.c:361 modules/devices/gpu.c:115 +#: modules/devices/gpu.c:117 modules/devices/gpu.c:123 +#: modules/devices/gpu.c:125 modules/devices/gpu.c:179 +#: modules/devices/gpu.c:181 modules/devices/ia64/processor.c:167 +#: modules/devices/ia64/processor.c:196 modules/devices/m68k/processor.c:87 +#: modules/devices/mips/processor.c:77 modules/devices/parisc/processor.c:158 +#: modules/devices/parisc/processor.c:191 modules/devices/ppc/processor.c:160 +#: modules/devices/ppc/processor.c:187 modules/devices/riscv/processor.c:186 +#: modules/devices/riscv/processor.c:214 modules/devices/s390/processor.c:160 +#: modules/devices/sh/processor.c:87 modules/devices/sh/processor.c:88 +#: modules/devices/sh/processor.c:89 modules/devices/x86/processor.c:318 +#: modules/devices/x86/processor.c:331 modules/devices/x86/processor.c:657 +#: modules/devices/x86/processor.c:780 +msgid "MHz" +msgstr "MHz" -#: modules/benchmark.c:555 -msgid "Benchmarks" -msgstr "Benchmarks" +#: modules/benchmark/bench_results.c:396 modules/benchmark/bench_results.c:495 +msgid "kiB" +msgstr "kiB" -#: modules/benchmark.c:573 -msgid "Perform tasks and compare with other systems" -msgstr "Effectuer des tâches et les comparer avec d'autres systèmes" +#: modules/benchmark/bench_results.c:403 modules/benchmark/bench_results.c:453 +#, c-format +msgid "%d-bit" +msgstr "%d-bit" -#: modules/benchmark.c:663 -msgid "Send benchmark results" -msgstr "Envoyer vos résultats de référence" +#: modules/benchmark/bench_results.c:422 modules/benchmark/bench_results.c:477 +msgid "Benchmark Result" +msgstr "Résultats du Benchmark" -#: modules/benchmark.c:668 -msgid "Receive benchmark results" -msgstr "Recevoir les résultats de benchmark" +#: modules/benchmark/bench_results.c:423 modules/benchmark/bench_results.c:479 +msgid "Threads" +msgstr "Threads" -#: modules/computer/alsa.c:26 modules/computer.c:489 -msgid "Audio Devices" -msgstr "" +#: modules/benchmark/bench_results.c:424 modules/benchmark/bench_results.c:481 +msgid "Elapsed Time" +msgstr "Temps écoulé" + +#: modules/benchmark/bench_results.c:424 modules/benchmark/bench_results.c:481 +msgid "seconds" +msgstr "secondes" + +#: modules/benchmark/bench_results.c:425 modules/computer/languages.c:101 +#: modules/devices/arm/processor.c:355 modules/devices/gpu.c:147 +#: modules/devices/ia64/processor.c:166 modules/devices/pci.c:132 +#: modules/devices/ppc/processor.c:159 +msgid "Revision" +msgstr "Révision" + +#: modules/benchmark/bench_results.c:426 modules/benchmark/bench_results.c:482 +msgid "Extra Information" +msgstr "Informations supplémentaires" + +#: modules/benchmark/bench_results.c:427 modules/benchmark/bench_results.c:483 +msgid "User Note" +msgstr "Notes utilisateur" + +#: modules/benchmark/bench_results.c:429 modules/benchmark/bench_results.c:485 +msgid "Note" +msgstr "Notes" + +#: modules/benchmark/bench_results.c:430 modules/benchmark/bench_results.c:486 +msgid "" +"This result is from an old version of HardInfo. Results might not be " +"comparable to current version. Some details are missing." +msgstr "" +"Ce résultat provient d'une ancienne version de HardInfo. Les résultats " +"peuvent ne pas êtrecomparable à la version actuelle. Il manque quelques " +"détails." + +#: modules/benchmark/bench_results.c:431 modules/benchmark/bench_results.c:487 +#: modules/devices/devicetree/pmac_data.c:81 modules/devices/sh/processor.c:85 +msgid "Machine" +msgstr "Machine" + +#: modules/benchmark/bench_results.c:432 modules/benchmark/bench_results.c:488 +#: modules/devices/devicetree.c:208 modules/devices/dmi.c:47 +msgid "Board" +msgstr "Carte" + +#: modules/benchmark/bench_results.c:433 modules/benchmark/bench_results.c:489 +msgid "CPU Name" +msgstr "Nom du CPU" + +#: modules/benchmark/bench_results.c:434 modules/benchmark/bench_results.c:490 +msgid "CPU Description" +msgstr "Description du CPU" + +#: modules/benchmark/bench_results.c:435 modules/benchmark/bench_results.c:491 +#: modules/benchmark.c:442 +msgid "CPU Config" +msgstr "Configuration du CPU" + +#: modules/benchmark/bench_results.c:436 modules/benchmark/bench_results.c:492 +msgid "Threads Available" +msgstr "Sujets disponibles" + +#: modules/benchmark/bench_results.c:437 modules/benchmark/bench_results.c:493 +msgid "GPU" +msgstr "GPU" + +#: modules/benchmark/bench_results.c:438 modules/benchmark/bench_results.c:494 +#: modules/computer.c:542 +msgid "OpenGL Renderer" +msgstr "OpenGL Rendu" + +#: modules/benchmark/bench_results.c:439 modules/benchmark/bench_results.c:495 +#: modules/computer.c:123 modules/computer.c:531 modules/computer.c:1000 +#: modules/devices/gpu.c:150 +msgid "Memory" +msgstr "Mémoire" + +#: modules/benchmark/bench_results.c:440 modules/benchmark/bench_results.c:496 +msgid "Pointer Size" +msgstr "Taille du Pointeur" + +#: modules/benchmark/bench_results.c:478 +msgid "Benchmark" +msgstr "Outil d'évaluation" + +#: modules/benchmark/bench_results.c:480 modules/devices/dmi_memory.c:879 +#: modules/devices/firmware.c:246 modules/devices/monitors.c:492 +#: modules/devices/x86/processor.c:691 +msgid "Result" +msgstr "Résultat" + +#: modules/benchmark/bench_results.c:498 +msgid "Handles" +msgstr "identifiants" + +#: modules/benchmark/bench_results.c:499 +msgid "mid" +msgstr "mid" + +#: modules/benchmark/bench_results.c:500 +msgid "cfg_val" +msgstr "cfg_val" + +#: modules/benchmark.c:442 +msgid "Results" +msgstr "Résultats" + +#: modules/benchmark.c:442 modules/devices/sparc/processor.c:75 +msgid "CPU" +msgstr "CPU" + +#: modules/benchmark.c:513 +#, c-format +msgid "Benchmarking: %s." +msgstr "Benchmarking: %s." + +#: modules/benchmark.c:527 +msgid "Benchmarking. Please do not move your mouse\nor press any keys." +msgstr "" +"Evaluation en court. S'il vous plaît ne pas déplacer\nvotre souris ou appuyer sur " +"les touches" + +#: modules/benchmark.c:530 +msgid "Cancel" +msgstr "Annuler" + +#: modules/benchmark.c:601 +msgid "Benchmarks" +msgstr "Benchmarks" + +#: modules/benchmark.c:619 +msgid "Perform tasks and compare with other systems" +msgstr "Effectuer des tâches et les comparer avec d'autres systèmes" + +#: modules/benchmark.c:730 +msgid "Send benchmark results" +msgstr "Envoyer vos résultats de benchmark" + +#: modules/benchmark.c:735 +msgid "Receive benchmark results" +msgstr "Recevoir les résultats de benchmark" + +#: modules/computer/alsa.c:26 modules/computer.c:546 +msgid "Audio Devices" +msgstr "Matériels Audio" #: modules/computer/alsa.c:34 msgid "Audio Adapter" msgstr "Adapteur Audio" -#: modules/computer/boots.c:33 modules/computer.c:73 modules/computer.c:546 -msgid "Boots" -msgstr "Boots" - -#: modules/computer.c:70 +#: modules/computer.c:80 modules/devices/firmware.c:104 msgid "Summary" msgstr "Résumé" -#: modules/computer.c:71 modules/computer.c:476 modules/computer.c:750 +#: modules/computer.c:81 modules/computer.c:534 modules/computer.c:999 msgid "Operating System" msgstr "Systeme d'exploitation" -#: modules/computer.c:72 +#: modules/computer.c:82 +msgid "Security" +msgstr "Sécurité" + +#: modules/computer.c:83 modules/devices/gpu.c:155 modules/devices/pci.c:136 msgid "Kernel Modules" msgstr "Modules du kernel" -#: modules/computer.c:74 +#: modules/computer.c:84 modules/computer.c:678 +msgid "Boots" +msgstr "Boots" + +#: modules/computer.c:85 msgid "Languages" msgstr "Langues" -#: modules/computer.c:75 +#: modules/computer.c:86 +msgid "Memory Usage" +msgstr "Usage de Mémoire" + +#: modules/computer.c:87 msgid "Filesystems" -msgstr "Fichiers Systeme" +msgstr "Fichiers Système" -#: modules/computer.c:76 modules/computer.c:481 modules/computer.c:590 +#: modules/computer.c:88 modules/computer.c:539 msgid "Display" msgstr "Affichage" -#: modules/computer.c:77 modules/computer/environment.c:32 +#: modules/computer.c:89 modules/computer/environment.c:32 msgid "Environment Variables" msgstr "Variables d'environnement" -#: modules/computer.c:79 +#: modules/computer.c:91 msgid "Development" msgstr "Developpement" -#: modules/computer.c:81 modules/computer.c:617 +#: modules/computer.c:93 modules/computer.c:802 msgid "Users" msgstr "Utilisateurs" -#: modules/computer.c:82 +#: modules/computer.c:94 msgid "Groups" msgstr "Groupes" -#: modules/computer.c:104 modules/computer.c:473 modules/devices.c:96 -#: modules/devices/pci.c:149 -msgid "Memory" -msgstr "Mémoire" - -#: modules/computer.c:106 +#: modules/computer.c:125 #, c-format msgid "%dMB (%dMB used)" -msgstr "%dMB (%dMB utilisé)" +msgstr "%dMB (%dMB utilisées)" -#: modules/computer.c:108 modules/computer.c:520 +#: modules/computer.c:127 modules/computer.c:594 msgid "Uptime" msgstr "durée de fonctionnent" -#: modules/computer.c:110 modules/computer.c:478 +#: modules/computer.c:129 modules/computer.c:536 msgid "Date/Time" msgstr "Date/Heure" -#: modules/computer.c:115 modules/computer.c:521 +#: modules/computer.c:134 modules/computer.c:595 msgid "Load Average" -msgstr "" +msgstr "Nombre de chargements" -#: modules/computer.c:117 modules/computer.c:522 -msgid "Available entropy in /dev/random" -msgstr "" - -#: modules/computer.c:203 +#: modules/computer.c:247 msgid "Scripting Languages" -msgstr "Type de script" +msgstr "Langage de script" -#: modules/computer.c:204 +#: modules/computer.c:248 msgid "Gambas3 (gbr3)" -msgstr "" +msgstr "Gambas3 (gbr3)" -#: modules/computer.c:205 -msgid "Python" -msgstr "" +#: modules/computer.c:249 +msgid "Python (default)" +msgstr "Python (default)" -#: modules/computer.c:206 +#: modules/computer.c:250 msgid "Python2" -msgstr "" +msgstr "Python2" -#: modules/computer.c:207 +#: modules/computer.c:251 msgid "Python3" -msgstr "" +msgstr "Python3" -#: modules/computer.c:208 +#: modules/computer.c:252 msgid "Perl" msgstr "Perl" -#: modules/computer.c:209 +#: modules/computer.c:253 msgid "Perl6 (VM)" -msgstr "" +msgstr "Perl6 (VM)" -#: modules/computer.c:210 +#: modules/computer.c:254 msgid "Perl6" -msgstr "" +msgstr "Perl6" -#: modules/computer.c:211 +#: modules/computer.c:255 msgid "PHP" msgstr "PHP" -#: modules/computer.c:212 +#: modules/computer.c:256 msgid "Ruby" msgstr "Ruby" -#: modules/computer.c:213 +#: modules/computer.c:257 msgid "Bash" msgstr "Bash" -#: modules/computer.c:214 +#: modules/computer.c:258 +msgid "JavaScript (Node.js)" +msgstr "JavaScript (Node.js)" + +#: modules/computer.c:259 +msgid "awk" +msgstr "awk" + +#: modules/computer.c:260 msgid "Compilers" msgstr "Compilateurs" -#: modules/computer.c:215 +#: modules/computer.c:261 msgid "C (GCC)" msgstr "C (GCC)" -#: modules/computer.c:216 +#: modules/computer.c:262 msgid "C (Clang)" -msgstr "" +msgstr "C (Clang)" -#: modules/computer.c:217 +#: modules/computer.c:263 msgid "D (dmd)" -msgstr "" +msgstr "D (dmd)" -#: modules/computer.c:218 +#: modules/computer.c:264 msgid "Gambas3 (gbc3)" -msgstr "" +msgstr "Gambas3 (gbc3)" -#: modules/computer.c:219 +#: modules/computer.c:265 msgid "Java" msgstr "Java" -#: modules/computer.c:220 -msgid "CSharp (Mono, old)" -msgstr "CSharp (Mono, old)" +#: modules/computer.c:266 +msgid "C♯ (mcs)" +msgstr "C♯ (mcs)" -#: modules/computer.c:221 -msgid "CSharp (Mono)" -msgstr "CSharp (Mono)" - -#: modules/computer.c:222 +#: modules/computer.c:267 msgid "Vala" msgstr "Vala" -#: modules/computer.c:223 +#: modules/computer.c:268 msgid "Haskell (GHC)" msgstr "Haskell (GHC)" -#: modules/computer.c:224 +#: modules/computer.c:269 msgid "FreePascal" msgstr "FreePascal" -#: modules/computer.c:225 +#: modules/computer.c:270 msgid "Go" -msgstr "" +msgstr "Go" -#: modules/computer.c:226 +#: modules/computer.c:271 +msgid "Rust" +msgstr "Rust" + +#: modules/computer.c:272 msgid "Tools" msgstr "Outils" -#: modules/computer.c:227 +#: modules/computer.c:273 msgid "make" -msgstr "" +msgstr "make" + +#: modules/computer.c:274 +msgid "ninja" +msgstr "ninja" -#: modules/computer.c:228 +#: modules/computer.c:275 msgid "GDB" msgstr "" -#: modules/computer.c:229 +#: modules/computer.c:276 +msgid "LLDB" +msgstr "" + +#: modules/computer.c:277 msgid "strace" msgstr "" -#: modules/computer.c:230 +#: modules/computer.c:278 msgid "valgrind" msgstr "" -#: modules/computer.c:231 +#: modules/computer.c:279 msgid "QMake" msgstr "" -#: modules/computer.c:232 +#: modules/computer.c:280 msgid "CMake" msgstr "" -#: modules/computer.c:233 +#: modules/computer.c:281 msgid "Gambas3 IDE" msgstr "" -#: modules/computer.c:274 +#: modules/computer.c:282 +msgid "Radare2" +msgstr "" + +#: modules/computer.c:283 +msgid "ltrace" +msgstr "" + +#: modules/computer.c:324 msgid "Not found" msgstr "Non trouvé" -#: modules/computer.c:279 +#: modules/computer.c:329 #, c-format msgid "Detecting version: %s" msgstr "Version détectée: %s" -#: modules/computer.c:296 +#: modules/computer.c:347 msgid "Program" msgstr "Programme" -#: modules/computer.c:308 -msgid "Invalid chassis type (0)" -msgstr "" - -#: modules/computer.c:309 modules/computer.c:310 -msgid "Unknown chassis type" -msgstr "" +#: modules/computer.c:365 +msgid "Field" +msgstr "Champ" -#: modules/computer.c:311 -msgid "Desktop" +#: modules/computer.c:365 modules/computer.c:667 modules/computer/modules.c:149 +#: modules/computer/modules.c:150 modules/devices/arm/processor.c:470 +msgid "Description" msgstr "" -#: modules/computer.c:312 -msgid "Low-profile Desktop" -msgstr "" +#: modules/computer.c:365 modules/devices.c:726 +msgid "Value" +msgstr "Valeur" -#: modules/computer.c:313 -msgid "Pizza Box" -msgstr "" +#: modules/computer.c:385 +msgid "Single-board computer" +msgstr "Ordinateur monocarte" -#: modules/computer.c:314 -msgid "Mini Tower" -msgstr "" +#. /proc/apm +#: modules/computer.c:434 +msgid "Unknown physical machine type" +msgstr "Type de machine inconnu" -#: modules/computer.c:315 -msgid "Tower" -msgstr "" +#: modules/computer.c:454 modules/computer.c:455 +msgid "Virtual (VMware)" +msgstr "Virtualisation (VMware)" -#: modules/computer.c:316 -msgid "Portable" -msgstr "" +#: modules/computer.c:457 modules/computer.c:458 modules/computer.c:459 +#: modules/computer.c:460 +msgid "Virtual (QEMU)" +msgstr "Virtualisation (QEMU)" -#: modules/computer.c:317 modules/computer.c:341 modules/computer.c:350 -#: modules/computer.c:372 -msgid "Laptop" -msgstr "" +#: modules/computer.c:462 modules/computer.c:463 +msgid "Virtual (Unknown)" +msgstr "Virtualisation (Inconnu)" -#: modules/computer.c:318 -msgid "Notebook" -msgstr "" +#: modules/computer.c:465 modules/computer.c:466 modules/computer.c:467 +#: modules/computer.c:488 +msgid "Virtual (VirtualBox)" +msgstr "Virtualisation (VirtualBox)" -#: modules/computer.c:319 -msgid "Handheld" -msgstr "" +#: modules/computer.c:469 modules/computer.c:470 modules/computer.c:471 +#: modules/computer.c:482 +msgid "Virtual (Xen)" +msgstr "Virtualisation (Xen" -#: modules/computer.c:320 -msgid "Docking Station" -msgstr "" +#: modules/computer.c:473 +msgid "Virtual (hypervisor present)" +msgstr "Virtualisation (hypervisor present) " -#: modules/computer.c:321 -msgid "All-in-one" -msgstr "" +#: modules/computer.c:528 modules/computer.c:953 +msgid "Computer" +msgstr "Ordinateur" -#: modules/computer.c:322 -msgid "Subnotebook" -msgstr "" +#: modules/computer.c:532 +msgid "Machine Type" +msgstr "Type de machine" -#: modules/computer.c:323 -msgid "Space-saving" -msgstr "" +#: modules/computer.c:535 modules/computer.c:588 +msgid "User Name" +msgstr "Utilisateur" -#: modules/computer.c:324 -msgid "Lunch Box" -msgstr "" +#: modules/computer.c:540 +msgid "Resolution" +msgstr "Résolution" -#: modules/computer.c:325 -msgid "Main Server Chassis" -msgstr "" +#: modules/computer.c:540 modules/computer.c:748 +#, c-format +msgid "%dx%d pixels" +msgstr "%dx%d pixels" -#: modules/computer.c:326 -msgid "Expansion Chassis" -msgstr "" +#: modules/computer.c:543 +msgid "Session Display Server" +msgstr "Serveur d'affichage de session" -#: modules/computer.c:327 -msgid "Sub Chassis" -msgstr "" +#: modules/computer.c:548 modules/devices.c:108 +msgid "Input Devices" +msgstr "Périphériques d'entrée" -#: modules/computer.c:328 -msgid "Bus Expansion Chassis" +#: modules/computer.c:572 +msgid "Kernel" msgstr "" -#: modules/computer.c:329 -msgid "Peripheral Chassis" +#: modules/computer.c:573 +msgid "Command Line" msgstr "" -#: modules/computer.c:330 -msgid "RAID Chassis" +#: modules/computer.c:575 +msgid "C Library" msgstr "" -#: modules/computer.c:331 -msgid "Rack Mount Chassis" +#: modules/computer.c:576 +msgid "Distribution" msgstr "" -#: modules/computer.c:332 -msgid "Sealed-case PC" +#: modules/computer.c:582 +msgid "Spin/Flavor" msgstr "" -#. /proc/apm -#. FIXME: use dmidecode if available to get chassis type -#: modules/computer.c:386 -msgid "Unknown physical machine type" -msgstr "" +#: modules/computer.c:586 +msgid "Current Session" +msgstr "Session en cours" -#: modules/computer.c:470 modules/computer.c:709 -msgid "Computer" -msgstr "Ordinateur" +#: modules/computer.c:587 +msgid "Computer Name" +msgstr "Nom de l'Ordinateur" -#: modules/computer.c:471 modules/devices/alpha/processor.c:87 -#: modules/devices/arm/processor.c:236 modules/devices.c:95 -#: modules/devices/ia64/processor.c:159 modules/devices/m68k/processor.c:83 -#: modules/devices/mips/processor.c:74 modules/devices/parisc/processor.c:154 -#: modules/devices/ppc/processor.c:157 modules/devices/riscv/processor.c:181 -#: modules/devices/s390/processor.c:131 modules/devices/sh/processor.c:83 -#: modules/devices/sparc/processor.c:74 modules/devices/x86/processor.c:409 -msgid "Processor" -msgstr "Processeur" +#: modules/computer.c:589 modules/computer/languages.c:99 +msgid "Language" +msgstr "Langue" -#: modules/computer.c:474 -msgid "Machine Type" -msgstr "" +#: modules/computer.c:590 modules/computer/users.c:50 +msgid "Home Directory" +msgstr "Dossier Home" -#: modules/computer.c:477 modules/computer.c:514 -msgid "User Name" -msgstr "Utilisateur" +#: modules/computer.c:591 +msgid "Desktop Environment" +msgstr "Environnement de bureau" -#: modules/computer.c:482 modules/computer.c:591 -msgid "Resolution" -msgstr "Résolution" +#: modules/computer.c:594 +msgid "Misc" +msgstr "Divers" -#: modules/computer.c:483 modules/computer.c:592 -#, c-format -msgid "%dx%d pixels" +#: modules/computer.c:607 +msgid "HardInfo" msgstr "" -#: modules/computer.c:485 -msgid "OpenGL Renderer" +#: modules/computer.c:608 +msgid "HardInfo running as" msgstr "" -#: modules/computer.c:486 -msgid "X11 Vendor" +#: modules/computer.c:609 +msgid "Superuser" msgstr "" -#: modules/computer.c:491 modules/devices.c:102 -msgid "Input Devices" -msgstr "Périphériques d'entrée" +#: modules/computer.c:609 +msgid "User" +msgstr "" -#: modules/computer.c:493 modules/computer.c:752 modules/devices.c:99 -msgid "Printers" -msgstr "Imprimantes" +#: modules/computer.c:613 +msgid "Health" +msgstr "" -#: modules/computer.c:495 modules/computer.c:752 modules/devices.c:103 -msgid "Storage" -msgstr "Stockage" +#: modules/computer.c:614 +msgid "Available entropy in /dev/random" +msgstr "Entropie disponible dans /dev/random" -#: modules/computer.c:506 -msgid "Kernel" +#: modules/computer.c:618 +msgid "Hardening Features" msgstr "" -#: modules/computer.c:508 -msgid "C Library" +#: modules/computer.c:619 +msgid "ASLR" msgstr "" -#: modules/computer.c:509 -msgid "Distribution" +#: modules/computer.c:620 +msgid "dmesg" msgstr "" -#: modules/computer.c:512 -msgid "Current Session" +#: modules/computer.c:624 +msgid "Linux Security Modules" msgstr "" -#: modules/computer.c:513 -msgid "Computer Name" -msgstr "Ordinateur" - -#: modules/computer.c:515 modules/computer/languages.c:108 -msgid "Language" +#: modules/computer.c:625 +msgid "Modules available" msgstr "" -#: modules/computer.c:516 modules/computer/users.c:50 -msgid "Home Directory" -msgstr "Dossier Home" - -#: modules/computer.c:519 modules/devices/usb.c:87 modules/devices/usb.c:234 -#: modules/devices/usb.c:351 -msgid "Misc" +#: modules/computer.c:626 +msgid "SELinux status" msgstr "" -#: modules/computer.c:532 -msgid "Loaded Modules" +#: modules/computer.c:632 +msgid "CPU Vulnerabilities" msgstr "" -#: modules/computer.c:535 modules/computer/modules.c:145 -#: modules/computer/modules.c:147 modules/devices/arm/processor.c:337 -#: modules/devices.c:559 modules/devices/x86/processor.c:456 -msgid "Description" -msgstr "" +#: modules/computer.c:664 +msgid "Loaded Modules" +msgstr "Modules chargés" -#: modules/computer.c:548 +#: modules/computer.c:680 msgid "Date & Time" -msgstr "" +msgstr "Date et Heure" -#: modules/computer.c:549 +#: modules/computer.c:681 msgid "Kernel Version" msgstr "" -#: modules/computer.c:559 +#: modules/computer.c:691 msgid "Available Languages" -msgstr "" +msgstr "Langues disponibles" -#: modules/computer.c:561 +#: modules/computer.c:693 msgid "Language Code" -msgstr "Type Code" +msgstr "Langage Code" -#: modules/computer.c:573 +#: modules/computer.c:705 msgid "Mounted File Systems" -msgstr "" +msgstr "Systèmes de fichiers montés" -#: modules/computer.c:575 modules/computer/filesystem.c:85 +#: modules/computer.c:707 modules/computer/filesystem.c:85 msgid "Mount Point" msgstr "Point de montage" -#: modules/computer.c:576 +#: modules/computer.c:708 msgid "Usage" msgstr "" -#: modules/computer.c:577 +#: modules/computer.c:709 modules/devices/gpu.c:75 modules/devices/gpu.c:83 +#: modules/devices/gpu.c:225 modules/devices/pci.c:88 modules/devices/pci.c:96 +#: modules/devices/pci.c:140 modules/devices/usb.c:169 +#: modules/devices/usb.c:181 msgid "Device" msgstr "Périphérique" -#: modules/computer.c:594 modules/computer.c:601 -#: modules/devices/ia64/processor.c:161 modules/devices/inputdevices.c:119 -#: modules/devices/pci.c:225 modules/devices/usb.c:349 -#: modules/devices/x86/processor.c:416 +#: modules/computer.c:731 +msgid "Session" +msgstr "" + +#: modules/computer.c:732 modules/devices.c:726 modules/devices/dmi.c:55 +#: modules/devices/dmi_memory.c:603 modules/devices/dmi_memory.c:749 +#: modules/devices/inputdevices.c:112 modules/devices/x86/processor.c:714 +msgid "Type" +msgstr "" + +#: modules/computer.c:735 +msgid "Wayland" +msgstr "" + +#: modules/computer.c:736 modules/computer.c:741 +msgid "Current Display Name" +msgstr "Nom de l'affichage actuel" + +#: modules/computer.c:740 +msgid "X Server" +msgstr "" + +#: modules/computer.c:742 modules/computer.c:782 modules/devices/dmi.c:39 +#: modules/devices/dmi.c:45 modules/devices/dmi.c:49 modules/devices/dmi.c:54 +#: modules/devices/dmi_memory.c:750 modules/devices/dmi_memory.c:895 +#: modules/devices/firmware.c:105 modules/devices/firmware.c:168 +#: modules/devices/firmware.c:190 modules/devices/firmware.c:228 +#: modules/devices/gpu.c:74 modules/devices/gpu.c:82 modules/devices/gpu.c:224 +#: modules/devices/ia64/processor.c:161 modules/devices/inputdevices.c:114 +#: modules/devices/monitors.c:398 modules/devices/pci.c:87 +#: modules/devices/pci.c:95 modules/devices/usb.c:168 +#: modules/devices/x86/processor.c:653 msgid "Vendor" msgstr "Fabricant" -#: modules/computer.c:598 -msgid "Monitors" +#: modules/computer.c:744 +msgid "Release Number" +msgstr "Numéro de version" + +#: modules/computer.c:752 +msgid "Screens" +msgstr "Ecrans" + +#: modules/computer.c:758 +msgid "Disconnected" +msgstr "Déconnecté" + +#: modules/computer.c:761 +msgid "Connected" +msgstr "Connecté" + +#: modules/computer.c:769 +msgid "Unused" +msgstr "Non utilisé" + +#: modules/computer.c:770 +#, c-format +msgid "%dx%d pixels, offset (%d, %d)" msgstr "" -#: modules/computer.c:600 -msgid "OpenGL" +#: modules/computer.c:779 +msgid "Outputs (XRandR)" msgstr "" -#: modules/computer.c:602 -msgid "Renderer" +#: modules/computer.c:781 +msgid "OpenGL (GLX)" msgstr "" -#: modules/computer.c:604 +#: modules/computer.c:783 +msgid "Renderer" +msgstr "Moteur de rendu" + +#: modules/computer.c:784 msgid "Direct Rendering" msgstr "" -#: modules/computer.c:608 -msgid "Extensions" -msgstr "" +#: modules/computer.c:786 +msgid "Version (Compatibility)" +msgstr "Version (compatible)" -#: modules/computer.c:628 -msgid "Group" -msgstr "" +#: modules/computer.c:787 +msgid "Shading Language Version (Compatibility)" +msgstr "Shading Language Version (Compatibilité)" -#: modules/computer.c:631 modules/computer/users.c:49 -msgid "Group ID" +#: modules/computer.c:788 +msgid "Version (Core)" +msgstr "Version (Coeur)" + +#: modules/computer.c:789 +msgid "Shading Language Version (Core)" msgstr "" -#: modules/computer.c:751 -msgid "RAM" +#: modules/computer.c:790 +msgid "Version (ES)" msgstr "" -#: modules/computer.c:751 modules/devices/devicetree/pmac_data.c:82 -msgid "Motherboard" +#: modules/computer.c:791 +msgid "Shading Language Version (ES)" msgstr "" -#: modules/computer.c:751 -msgid "Graphics" +#: modules/computer.c:792 +msgid "GLX Version" msgstr "" -#: modules/computer.c:752 -msgid "Audio" +#: modules/computer.c:813 +msgid "Group" msgstr "" -#: modules/computer.c:807 -msgid "Gathers high-level computer information" -msgstr "Collecte des informations de l'ordinateur" +#: modules/computer.c:816 modules/computer/users.c:49 +msgid "Group ID" +msgstr "" -#: modules/computer/display.c:122 +#. / "usable memory" +#: modules/computer.c:909 #, c-format -msgid "Monitor %d=%dx%d pixels\n" -msgstr "Moniteur %d=%dx%d pixels\n" +msgid "%0.1f %s available to Linux" +msgstr "" + +#: modules/computer.c:911 modules/devices/dmi_memory.c:661 +#: modules/devices/dmi_memory.c:809 modules/devices/dmi_memory.c:936 +msgid "GiB" +msgstr "" + +#: modules/computer.c:913 modules/devices/dmi_memory.c:581 +#: modules/devices/dmi_memory.c:663 modules/devices/dmi_memory.c:723 +#: modules/devices/dmi_memory.c:811 modules/devices/dmi_memory.c:857 +#: modules/devices/dmi_memory.c:938 modules/network/net.c:395 +#: modules/network/net.c:417 modules/network/net.c:418 +msgid "MiB" +msgstr "" + +#: modules/computer.c:915 modules/computer/memory_usage.c:77 +#: modules/computer/modules.c:149 +msgid "KiB" +msgstr "" + +#: modules/computer.c:972 modules/devices/devicetree/pmac_data.c:82 +msgid "Motherboard" +msgstr "Carte Mère" + +#: modules/computer.c:1000 +msgid "Graphics" +msgstr "Graphiques" + +#: modules/computer.c:1001 modules/devices.c:109 +msgid "Storage" +msgstr "Stockage" + +#: modules/computer.c:1001 modules/devices.c:105 +msgid "Printers" +msgstr "Imprimantes" + +#: modules/computer.c:1001 +msgid "Audio" +msgstr "" + +#: modules/computer.c:1050 +msgid "Gathers high-level computer information" +msgstr "Collecte des informations de l'ordinateur" #: modules/computer/filesystem.c:83 msgid "Filesystem" -msgstr "" +msgstr "Système de fichiers" #: modules/computer/filesystem.c:84 msgid "Mounted As" -msgstr "" +msgstr "Monté sur" #: modules/computer/filesystem.c:84 msgid "Read-Write" -msgstr "" +msgstr "Lecture-Ecriture" #: modules/computer/filesystem.c:84 msgid "Read-Only" -msgstr "" +msgstr "Lecture seule" -#: modules/computer/filesystem.c:86 modules/devices/spd-decode.c:1510 +#: modules/computer/filesystem.c:86 modules/devices/dmi_memory.c:609 +#: modules/devices/dmi_memory.c:754 modules/devices/dmi_memory.c:786 +#: modules/devices/dmi_memory.c:825 modules/devices/dmi_memory.c:894 msgid "Size" -msgstr "" +msgstr "Taille" #: modules/computer/filesystem.c:87 msgid "Used" -msgstr "" +msgstr "Utilisé" #: modules/computer/filesystem.c:88 msgid "Available" -msgstr "" +msgstr "Disponible" -#: modules/computer/languages.c:103 +#: modules/computer/languages.c:94 msgid "Locale Information" -msgstr "" +msgstr "Inforamtion Locale" -#: modules/computer/languages.c:105 +#: modules/computer/languages.c:96 modules/devices/dmi_memory.c:599 +#: modules/devices/gpu.c:204 msgid "Source" msgstr "" -#: modules/computer/languages.c:106 +#: modules/computer/languages.c:97 msgid "Address" -msgstr "" +msgstr "Adresse" -#: modules/computer/languages.c:107 +#: modules/computer/languages.c:98 msgid "E-mail" msgstr "" -#: modules/computer/languages.c:109 +#: modules/computer/languages.c:100 msgid "Territory" -msgstr "" - -#: modules/computer/languages.c:110 modules/devices/arm/processor.c:250 -#: modules/devices/ia64/processor.c:166 modules/devices/ppc/processor.c:159 -#: modules/devices/usb.c:236 -msgid "Revision" -msgstr "" +msgstr "Territoire" -#: modules/computer/languages.c:111 +#: modules/computer/languages.c:102 modules/devices/dmi.c:44 msgid "Date" msgstr "" -#: modules/computer/languages.c:112 +#: modules/computer/languages.c:103 msgid "Codeset" msgstr "" #: modules/computer/loadavg.c:64 msgid "Couldn't obtain load average" +msgstr "Impossible d'obtenir la moyenne de charge" + +#: modules/computer/memory_usage.c:106 +msgid "Total Memory" +msgstr "Mémoire totale" + +#: modules/computer/memory_usage.c:107 +msgid "Free Memory" +msgstr "Mémoire libre" + +#: modules/computer/memory_usage.c:108 +msgid "Cached Swap" +msgstr "Swap Cache" + +#: modules/computer/memory_usage.c:109 +msgid "High Memory" msgstr "" -#: modules/computer/modules.c:125 modules/computer/modules.c:126 -#: modules/computer/modules.c:127 modules/computer/modules.c:128 -#: modules/computer/modules.c:129 -msgid "(Not available)" +#: modules/computer/memory_usage.c:110 +msgid "Free High Memory" msgstr "" -#: modules/computer/modules.c:142 -msgid "Module Information" +#: modules/computer/memory_usage.c:111 +msgid "Low Memory" msgstr "" -#: modules/computer/modules.c:143 -msgid "Path" +#: modules/computer/memory_usage.c:112 +msgid "Free Low Memory" msgstr "" -#: modules/computer/modules.c:144 -msgid "Used Memory" +#: modules/computer/memory_usage.c:113 +msgid "Virtual Memory" msgstr "" -#: modules/computer/modules.c:144 -msgid "KiB" +#: modules/computer/memory_usage.c:114 +msgid "Free Virtual Memory" msgstr "" +#: modules/computer/modules.c:117 modules/computer/modules.c:118 +#: modules/computer/modules.c:119 modules/computer/modules.c:120 +#: modules/computer/modules.c:121 modules/computer/modules.c:122 +#: modules/devices/dmi.c:111 modules/devices/dmi_memory.c:881 +#: modules/devices/firmware.c:246 modules/devices/x86/processor.c:693 +msgid "(Not available)" +msgstr "(Non disponible)" + +#: modules/computer/modules.c:148 +msgid "Module Information" +msgstr "" + +#: modules/computer/modules.c:148 modules/devices/gpu.c:230 +msgid "Path" +msgstr "Chemin" + #: modules/computer/modules.c:148 +msgid "Used Memory" +msgstr "Usage de la mémoire" + +#: modules/computer/modules.c:150 msgid "Version Magic" msgstr "" -#: modules/computer/modules.c:149 +#: modules/computer/modules.c:151 +msgid "In Linus' Tree" +msgstr "" + +#: modules/computer/modules.c:152 +msgid "Retpoline Enabled" +msgstr "" + +#: modules/computer/modules.c:152 msgid "Copyright" msgstr "" -#: modules/computer/modules.c:150 +#: modules/computer/modules.c:152 msgid "Author" -msgstr "" +msgstr "Auteur" -#: modules/computer/modules.c:151 +#: modules/computer/modules.c:153 msgid "License" msgstr "" -#: modules/computer/modules.c:158 +#: modules/computer/modules.c:159 msgid "Dependencies" -msgstr "" +msgstr "Dépendances" -#: modules/computer/os.c:35 modules/computer/os.c:36 modules/computer/os.c:37 -#: modules/computer/os.c:38 +#: modules/computer/os.c:36 modules/computer/os.c:37 modules/computer/os.c:38 +#: modules/computer/os.c:39 msgid "GNU C Library" msgstr "" -#: modules/computer/os.c:39 +#: modules/computer/os.c:40 msgid "uClibc or uClibc-ng" msgstr "" -#: modules/computer/os.c:40 +#: modules/computer/os.c:41 msgid "diet libc" msgstr "" -#: modules/computer/os.c:78 modules/computer/os.c:234 modules/computer/os.c:359 -#: modules/devices.c:333 modules/devices.c:387 modules/devices/printers.c:99 -#: modules/devices/printers.c:106 modules/devices/printers.c:116 -#: modules/devices/printers.c:131 modules/devices/printers.c:140 -#: modules/devices/printers.c:243 -msgid "Unknown" -msgstr "Inconnu" - -#: modules/computer/os.c:112 modules/computer/os.c:115 +#: modules/computer/os.c:113 modules/computer/os.c:116 msgid "GNOME Shell " msgstr "" -#: modules/computer/os.c:123 modules/computer/os.c:126 +#: modules/computer/os.c:124 modules/computer/os.c:127 msgid "Version: " msgstr "" -#: modules/computer/os.c:157 +#: modules/computer/os.c:146 modules/computer/os.c:149 +msgid "MATE Desktop Environment " +msgstr "" + +#: modules/computer/os.c:180 #, c-format msgid "Unknown (Window Manager: %s)" -msgstr "Unknown (gestionnaire de fenêtres: %s)" +msgstr "(gestionnaire de fenêtres: %s) inconnu" #. /{desktop environment} on {session type} -#: modules/computer/os.c:168 +#: modules/computer/os.c:191 #, c-format msgid "%s on %s" msgstr "" -#: modules/computer/os.c:232 +#: modules/computer/os.c:261 msgid "Terminal" msgstr "Terminal" +#: modules/computer/os.c:278 +msgid "User access allowed" +msgstr "" + +#: modules/computer/os.c:280 +msgid "User access forbidden" +msgstr "" + +#: modules/computer/os.c:282 +msgid "Access allowed (running as superuser)" +msgstr "" + +#: modules/computer/os.c:284 +msgid "Access forbidden? (running as superuser)" +msgstr "" + +#: modules/computer/os.c:294 modules/computer/os.c:560 +msgid "Disabled" +msgstr "" + +#: modules/computer/os.c:296 +msgid "Partially enabled (mmap base+stack+VDSO base)" +msgstr "" + +#: modules/computer/os.c:298 +msgid "Fully enabled (mmap base+stack+VDSO base+heap)" +msgstr "" + #. /bits of entropy for rng (0) -#: modules/computer/os.c:241 +#: modules/computer/os.c:308 msgid "(None or not available)" -msgstr "" +msgstr "(Aucun ou non disponible)" #. /bits of entropy for rng (low/poor value) -#: modules/computer/os.c:242 +#: modules/computer/os.c:309 #, c-format msgid "%d bits (low)" -msgstr "" +msgstr "%d bits (lent)" #. /bits of entropy for rng (medium value) -#: modules/computer/os.c:243 +#: modules/computer/os.c:310 #, c-format msgid "%d bits (medium)" -msgstr "" +msgstr "%d bits (moyen)" #. /bits of entropy for rng (high/good value) -#: modules/computer/os.c:244 +#: modules/computer/os.c:311 #, c-format msgid "%d bits (healthy)" +msgstr "%d bits (élévé)" + +#: modules/computer/os.c:555 +msgid "Not installed" msgstr "" -#: modules/computer/os.c:279 modules/devices/usb.c:48 modules/devices/usb.c:307 -#: modules/devices/usb.c:310 modules/network/net.c:442 includes/cpu_util.h:11 -msgid "(Unknown)" +#: modules/computer/os.c:558 +msgid "Enabled" msgstr "" #: modules/computer/users.c:47 msgid "User Information" -msgstr "" +msgstr "Information Utilisateur" #: modules/computer/users.c:48 msgid "User ID" -msgstr "" +msgstr "ID utilisateur" #: modules/computer/users.c:51 msgid "Default Shell" -msgstr "" +msgstr "Shell par défaut" -#: modules/devices/alpha/processor.c:88 modules/devices/devicetree.c:141 -#: modules/devices/devicetree.c:176 modules/devices/devicetree/pmac_data.c:80 -#: modules/devices/ia64/processor.c:165 modules/devices/m68k/processor.c:84 -#: modules/devices/mips/processor.c:75 modules/devices/parisc/processor.c:155 +#: modules/devices/alpha/processor.c:88 modules/devices/devicetree.c:163 +#: modules/devices/devicetree.c:209 modules/devices/devicetree/pmac_data.c:80 +#: modules/devices/gpu.c:106 modules/devices/ia64/processor.c:165 +#: modules/devices/m68k/processor.c:84 modules/devices/mips/processor.c:75 +#: modules/devices/monitors.c:400 modules/devices/parisc/processor.c:155 #: modules/devices/ppc/processor.c:158 modules/devices/riscv/processor.c:182 -#: modules/devices/s390/processor.c:132 modules/devices/spd-decode.c:1510 +#: modules/devices/s390/processor.c:132 msgid "Model" -msgstr "" +msgstr "Modèle" #: modules/devices/alpha/processor.c:89 msgid "Platform String" msgstr "" -#: modules/devices/alpha/processor.c:90 modules/devices/arm/processor.c:240 +#: modules/devices/alpha/processor.c:90 modules/devices/arm/processor.c:345 #: modules/devices/ia64/processor.c:167 modules/devices/m68k/processor.c:87 #: modules/devices/mips/processor.c:77 modules/devices/parisc/processor.c:158 -#: modules/devices/pci.c:108 modules/devices/ppc/processor.c:160 -#: modules/devices/riscv/processor.c:186 modules/devices/sh/processor.c:87 -#: modules/devices/x86/processor.c:420 +#: modules/devices/ppc/processor.c:160 modules/devices/riscv/processor.c:186 +#: modules/devices/sh/processor.c:87 modules/devices/x86/processor.c:657 msgid "Frequency" -msgstr "" +msgstr "Fréquence" -#: modules/devices/alpha/processor.c:90 modules/devices/arm/processor.c:240 -#: modules/devices/arm/processor.c:365 modules/devices.c:299 -#: modules/devices.c:307 modules/devices.c:335 -#: modules/devices/ia64/processor.c:167 modules/devices/ia64/processor.c:196 -#: modules/devices/m68k/processor.c:87 modules/devices/mips/processor.c:77 -#: modules/devices/parisc/processor.c:158 -#: modules/devices/parisc/processor.c:191 modules/devices/pci.c:108 -#: modules/devices/ppc/processor.c:160 modules/devices/ppc/processor.c:187 -#: modules/devices/riscv/processor.c:186 modules/devices/riscv/processor.c:214 -#: modules/devices/s390/processor.c:160 modules/devices/sh/processor.c:87 -#: modules/devices/sh/processor.c:88 modules/devices/sh/processor.c:89 -#: modules/devices/x86/processor.c:420 modules/devices/x86/processor.c:479 -msgid "MHz" -msgstr "" - -#: modules/devices/alpha/processor.c:91 modules/devices/arm/processor.c:241 +#: modules/devices/alpha/processor.c:91 modules/devices/arm/processor.c:346 #: modules/devices/ia64/processor.c:168 modules/devices/m68k/processor.c:88 #: modules/devices/mips/processor.c:78 modules/devices/parisc/processor.c:159 #: modules/devices/ppc/processor.c:161 modules/devices/s390/processor.c:134 -#: modules/devices/sh/processor.c:90 modules/devices/x86/processor.c:421 +#: modules/devices/sh/processor.c:90 modules/devices/x86/processor.c:658 msgid "BogoMips" msgstr "" -#: modules/devices/alpha/processor.c:92 modules/devices/arm/processor.c:242 +#: modules/devices/alpha/processor.c:92 modules/devices/arm/processor.c:347 #: modules/devices/ia64/processor.c:169 modules/devices/m68k/processor.c:89 #: modules/devices/mips/processor.c:79 modules/devices/parisc/processor.c:160 #: modules/devices/ppc/processor.c:162 modules/devices/riscv/processor.c:187 #: modules/devices/s390/processor.c:135 modules/devices/sh/processor.c:91 -#: modules/devices/sparc/processor.c:77 modules/devices/x86/processor.c:422 +#: modules/devices/sparc/processor.c:77 modules/devices/x86/processor.c:659 msgid "Byte Order" msgstr "" @@ -1469,6 +2312,7 @@ msgstr "" msgctxt "arm-flag" msgid "26-Bit Model (Processor status register folded into program counter)" msgstr "" +"26-Bit Model (Registre d'état du cpu incorporé dans le compteur de programme)" #. /flag:fastmult #: modules/devices/arm/arm_data.c:46 @@ -1615,70 +2459,77 @@ msgctxt "arm-flag" msgid "Advanced SIMD/NEON on AArch64 (arch>8)" msgstr "" -#: modules/devices/arm/processor.c:142 +#: modules/devices/arm/processor.c:143 msgid "ARM Processor" -msgstr "" +msgstr "Processeur ARM" -#: modules/devices/arm/processor.c:200 modules/devices/riscv/processor.c:147 -#: modules/devices/x86/processor.c:371 +#: modules/devices/arm/processor.c:214 modules/devices/riscv/processor.c:147 +#: modules/devices/x86/processor.c:608 msgid "Empty List" +msgstr "Liste Vide" + +#: modules/devices/arm/processor.c:240 modules/devices/gpu.c:148 +#: modules/devices/gpu.c:226 modules/devices/x86/processor.c:268 +msgid "Clocks" msgstr "" -#: modules/devices/arm/processor.c:237 -msgid "Linux Name" +#: modules/devices/arm/processor.c:286 modules/devices/arm/processor.c:299 +#: modules/devices/x86/processor.c:314 modules/devices/x86/processor.c:327 +#, c-format +msgid "%.2f-%.2f %s=%dx\n" msgstr "" -#: modules/devices/arm/processor.c:238 +#: modules/devices/arm/processor.c:342 +msgid "Linux Name" +msgstr "Nom version Linux" + +#: modules/devices/arm/processor.c:343 msgid "Decoded Name" msgstr "" -#: modules/devices/arm/processor.c:239 modules/network/net.c:458 +#: modules/devices/arm/processor.c:344 modules/network/net.c:453 msgid "Mode" msgstr "" -#: modules/devices/arm/processor.c:245 +#: modules/devices/arm/processor.c:350 msgid "ARM" msgstr "" -#: modules/devices/arm/processor.c:246 +#: modules/devices/arm/processor.c:351 msgid "Implementer" msgstr "" -#: modules/devices/arm/processor.c:247 +#: modules/devices/arm/processor.c:352 modules/devices/dmi_memory.c:896 msgid "Part" msgstr "" -#: modules/devices/arm/processor.c:248 modules/devices/ia64/processor.c:162 +#: modules/devices/arm/processor.c:353 modules/devices/ia64/processor.c:162 #: modules/devices/parisc/processor.c:156 modules/devices/riscv/processor.c:183 msgid "Architecture" msgstr "" -#: modules/devices/arm/processor.c:249 +#: modules/devices/arm/processor.c:354 msgid "Variant" msgstr "" -#: modules/devices/arm/processor.c:251 modules/devices/riscv/processor.c:190 -#: modules/devices/sparc/processor.c:78 modules/devices/x86/processor.c:428 +#: modules/devices/arm/processor.c:356 modules/devices/riscv/processor.c:190 +#: modules/devices/sparc/processor.c:78 modules/devices/x86/processor.c:665 msgid "Capabilities" -msgstr "" +msgstr "Capacités" -#: modules/devices/arm/processor.c:335 +#: modules/devices/arm/processor.c:468 msgid "SOC/Package" msgstr "" -#: modules/devices/arm/processor.c:338 modules/devices/cpu_util.c:222 -msgid "Topology" -msgstr "" - -#: modules/devices/arm/processor.c:339 -msgid "Clocks" +#: modules/devices/arm/processor.c:472 modules/devices/x86/processor.c:751 +msgid "Logical CPU Config" msgstr "" -#: modules/devices/arm/processor.c:354 +#: modules/devices/arm/processor.c:489 msgid "SOC/Package Information" msgstr "" -#: modules/devices/battery.c:181 +#: modules/devices/battery.c:178 #, c-format msgid "" "\n" @@ -1691,7 +2542,7 @@ msgid "" "Serial Number=%s\n" msgstr "" "\n" -"[Battery: %s]\n" +"[Batterie: %s]\n" "Etat=%s (load: %s)\n" "Capacité=%s / %s (%.2f%%)\n" "Technologie=%s (%s)\n" @@ -1699,7 +2550,7 @@ msgstr "" "Modele=%s\n" "Numéro de série=%s\n" -#: modules/devices/battery.c:258 +#: modules/devices/battery.c:255 #, c-format msgid "" "\n" @@ -1712,7 +2563,7 @@ msgid "" "Serial Number=%s\n" msgstr "" -#: modules/devices/battery.c:346 +#: modules/devices/battery.c:343 #, c-format msgid "" "\n" @@ -1731,7 +2582,7 @@ msgstr "" "APM driver version=%s\n" "APM BIOS version=%s\n" -#: modules/devices/battery.c:358 +#: modules/devices/battery.c:355 #, c-format msgid "" "\n" @@ -1748,7 +2599,7 @@ msgstr "" "APM driver version=%s\n" "APM BIOS version=%s\n" -#: modules/devices/battery.c:385 +#: modules/devices/battery.c:382 msgid "" "[No batteries]\n" "No batteries found on this system=\n" @@ -1756,54 +2607,66 @@ msgstr "" "[Aucune batterie]\n" "Aucune batterie trouvée sur ce système=\n" -#: modules/devices.c:97 +#: modules/devices.c:100 +msgid "Graphics Processors" +msgstr "Processeurs Graphiques" + +#: modules/devices.c:101 modules/devices/monitors.c:445 +#: modules/devices/monitors.c:492 +msgid "Monitors" +msgstr "" + +#: modules/devices.c:102 modules/devices/pci.c:163 msgid "PCI Devices" msgstr "Périphériques PCI" -#: modules/devices.c:98 modules/devices/usb.c:117 modules/devices/usb.c:156 -#: modules/devices/usb.c:415 +#: modules/devices.c:103 modules/devices/usb.c:210 msgid "USB Devices" msgstr "Périphériques USB" -#: modules/devices.c:100 +#: modules/devices.c:104 +msgid "Firmware" +msgstr "" + +#: modules/devices.c:106 msgid "Battery" msgstr "Batterie" -#: modules/devices.c:101 +#: modules/devices.c:107 msgid "Sensors" msgstr "Capteurs" -#: modules/devices.c:105 -msgid "DMI" -msgstr "DMI" - -#: modules/devices.c:106 -msgid "Memory SPD" -msgstr "Mémoire SPD" +#: modules/devices.c:110 +msgid "System DMI" +msgstr "" #: modules/devices.c:111 -msgid "Device Tree" +msgid "Memory Devices" msgstr "" -#: modules/devices.c:113 +#: modules/devices.c:113 modules/devices.c:115 +msgid "Device Tree" +msgstr "Arborescence matériel" + +#: modules/devices.c:117 msgid "Resources" msgstr "Ressources" -#: modules/devices.c:151 +#: modules/devices.c:177 #, c-format msgid "%d physical processor" msgid_plural "%d physical processors" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%d processeur physique" +msgstr[1] "%d processeurs physiques" -#: modules/devices.c:152 +#: modules/devices.c:178 #, c-format msgid "%d core" msgid_plural "%d cores" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%d coeur" +msgstr[1] "%d coeurs" -#: modules/devices.c:153 +#: modules/devices.c:179 #, c-format msgid "%d thread" msgid_plural "%d threads" @@ -1811,216 +2674,116 @@ msgstr[0] "" msgstr[1] "" #. /NP procs; NC cores; NT threads -#: modules/devices.c:154 +#: modules/devices.c:180 #, c-format msgid "%s; %s; %s" msgstr "" -#: modules/devices.c:372 -msgid " (model unknown)" -msgstr " (modèle inconnu)" - -#: modules/devices.c:374 -msgid " (vendor unknown)" -msgstr " (Fabricant inconnu)" - -#: modules/devices.c:559 -msgid "Field" -msgstr "" - -#: modules/devices.c:559 modules/devices.c:591 -msgid "Value" -msgstr "" - -#: modules/devices.c:591 +#: modules/devices.c:726 msgid "Sensor" -msgstr "" - -#: modules/devices.c:591 modules/devices/inputdevices.c:117 -msgid "Type" -msgstr "" +msgstr "Capteur" -#: modules/devices.c:637 +#: modules/devices.c:773 modules/devices/dmi_memory.c:826 msgid "Devices" msgstr "Périphériques" -#: modules/devices.c:649 +#: modules/devices.c:785 msgid "Update PCI ID listing" msgstr "Mise à jour de la liste ID PCI " -#: modules/devices.c:661 +#: modules/devices.c:797 msgid "Update CPU feature database" msgstr "Mise à jour des bases de données caractéristiques CPU" -#: modules/devices.c:689 +#: modules/devices.c:825 msgid "Gathers information about hardware devices" msgstr "Collecte des informations des périphériques" -#: modules/devices.c:708 +#: modules/devices.c:844 msgid "Resource information requires superuser privileges" msgstr "" +"L'information sur ces ressources nécessite des privilèges de super-" +"utilisateur" -#: modules/devices/cpu_util.c:30 -msgid "Little Endian" -msgstr "" - -#: modules/devices/cpu_util.c:32 -msgid "Big Endian" -msgstr "" - -#: modules/devices/cpu_util.c:178 modules/devices/cpu_util.c:189 -msgid "Frequency Scaling" -msgstr "" - -#: modules/devices/cpu_util.c:179 -msgid "Minimum" -msgstr "" - -#: modules/devices/cpu_util.c:179 modules/devices/cpu_util.c:180 -#: modules/devices/cpu_util.c:181 -msgid "kHz" -msgstr "" - -#: modules/devices/cpu_util.c:180 -msgid "Maximum" -msgstr "" - -#: modules/devices/cpu_util.c:181 -msgid "Current" -msgstr "" - -#: modules/devices/cpu_util.c:182 -msgid "Transition Latency" -msgstr "" - -#: modules/devices/cpu_util.c:182 -msgid "ns" -msgstr "" - -#: modules/devices/cpu_util.c:183 -msgid "Governor" -msgstr "" - -#: modules/devices/cpu_util.c:184 modules/devices/cpu_util.c:190 -msgid "Driver" -msgstr "" - -#: modules/devices/cpu_util.c:196 modules/devices/x86/processor.c:297 -msgid "(Not Available)" -msgstr "" - -#: modules/devices/cpu_util.c:204 modules/devices/cpu_util.c:206 -msgid "Socket" -msgstr "" - -#: modules/devices/cpu_util.c:209 modules/devices/cpu_util.c:211 -msgid "Core" -msgstr "" - -#: modules/devices/cpu_util.c:214 -msgid "Book" -msgstr "" - -#: modules/devices/cpu_util.c:216 -msgid "Drawer" -msgstr "" - -#: modules/devices/cpu_util.c:223 -msgid "ID" +#: modules/devices.c:850 +msgid "" +"Any NVMe storage devices present are not listed.\n" +"udisksd is required for NVMe devices." msgstr "" -#: modules/devices/devicetree.c:47 +#: modules/devices/devicetree.c:52 msgid "Properties" -msgstr "" +msgstr "Propriétés" -#: modules/devices/devicetree.c:48 +#: modules/devices/devicetree.c:53 msgid "Children" msgstr "" -#: modules/devices/devicetree.c:84 +#: modules/devices/devicetree.c:89 msgid "Node" msgstr "" -#: modules/devices/devicetree.c:85 +#: modules/devices/devicetree.c:90 msgid "Node Path" msgstr "" -#: modules/devices/devicetree.c:86 +#: modules/devices/devicetree.c:91 msgid "Alias" msgstr "" -#: modules/devices/devicetree.c:86 modules/devices/devicetree.c:87 -msgid "(None)" -msgstr "" - -#: modules/devices/devicetree.c:87 +#: modules/devices/devicetree.c:92 msgid "Symbol" -msgstr "" +msgstr "Symbole" -#: modules/devices/devicetree.c:132 modules/devices/devicetree/pmac_data.c:79 +#: modules/devices/devicetree.c:145 modules/devices/devicetree/pmac_data.c:79 msgid "Platform" -msgstr "" +msgstr "Plateforme" -#: modules/devices/devicetree.c:133 modules/devices/devicetree.c:178 +#: modules/devices/devicetree.c:146 modules/devices/devicetree.c:211 +#: modules/devices/gpu.c:231 msgid "Compatible" -msgstr "" +msgstr "Similaire" -#: modules/devices/devicetree.c:134 +#: modules/devices/devicetree.c:147 msgid "GPU-compatible" msgstr "" -#: modules/devices/devicetree.c:140 +#: modules/devices/devicetree.c:162 msgid "Raspberry Pi or Compatible" -msgstr "" +msgstr "Raspberry Pi ou Similaire" -#: modules/devices/devicetree.c:142 modules/devices/devicetree.c:160 -#: modules/devices/devicetree.c:177 modules/devices/devicetree/rpi_data.c:160 +#: modules/devices/devicetree.c:164 modules/devices/devicetree.c:191 +#: modules/devices/devicetree.c:210 modules/devices/devicetree/rpi_data.c:168 +#: modules/devices/dmi.c:41 modules/devices/dmi.c:51 modules/devices/dmi.c:57 +#: modules/devices/usb.c:178 msgid "Serial Number" -msgstr "" +msgstr "Numéro de série" -#: modules/devices/devicetree.c:143 modules/devices/devicetree/rpi_data.c:157 +#: modules/devices/devicetree.c:165 modules/devices/devicetree/rpi_data.c:165 msgid "RCode" msgstr "" -#: modules/devices/devicetree.c:143 +#: modules/devices/devicetree.c:165 msgid "No revision code available; unable to lookup model details." msgstr "" +"Aucun code de révision n'est disponible; il n'est pas possible de consulter " +"les détails du modèle." -#: modules/devices/devicetree.c:159 +#: modules/devices/devicetree.c:190 msgid "More" -msgstr "" - -#: modules/devices/devicetree.c:175 -msgid "Board" -msgstr "" +msgstr "Plus" -#: modules/devices/devicetree.c:234 +#: modules/devices/devicetree.c:271 msgid "Messages" msgstr "" -#: modules/devices/devicetree/dt_util.c:1013 -msgid "phandle Map" -msgstr "" - -#: modules/devices/devicetree/dt_util.c:1014 -msgid "Alias Map" -msgstr "" - -#: modules/devices/devicetree/dt_util.c:1015 -msgid "Symbol Map" -msgstr "" - #: modules/devices/devicetree/pmac_data.c:78 msgid "Apple Power Macintosh" msgstr "" -#: modules/devices/devicetree/pmac_data.c:81 modules/devices/sh/processor.c:85 -msgid "Machine" -msgstr "" - #: modules/devices/devicetree/pmac_data.c:83 msgid "Detected as" -msgstr "" +msgstr "Détecté comme" #: modules/devices/devicetree/pmac_data.c:84 msgid "PMAC Flags" @@ -2034,88 +2797,456 @@ msgstr "" msgid "PMAC Generation" msgstr "" -#: modules/devices/devicetree/rpi_data.c:152 -#: modules/devices/devicetree/rpi_data.c:153 +#: modules/devices/devicetree/rpi_data.c:160 +#: modules/devices/devicetree/rpi_data.c:161 msgid "Raspberry Pi" msgstr "" -#: modules/devices/devicetree/rpi_data.c:153 +#: modules/devices/devicetree/rpi_data.c:161 msgid "Board Name" -msgstr "" +msgstr "Nom de la carte" -#: modules/devices/devicetree/rpi_data.c:154 +#: modules/devices/devicetree/rpi_data.c:162 msgid "PCB Revision" msgstr "" -#: modules/devices/devicetree/rpi_data.c:155 +#: modules/devices/devicetree/rpi_data.c:163 msgid "Introduction" msgstr "" -#: modules/devices/devicetree/rpi_data.c:156 modules/devices/spd-decode.c:1510 -#: modules/devices/usb.c:84 modules/devices/usb.c:217 +#: modules/devices/devicetree/rpi_data.c:164 modules/devices/usb.c:170 msgid "Manufacturer" -msgstr "" +msgstr "Fabricant" -#: modules/devices/devicetree/rpi_data.c:158 +#: modules/devices/devicetree/rpi_data.c:166 msgid "SOC (spec)" msgstr "" -#: modules/devices/devicetree/rpi_data.c:159 +#: modules/devices/devicetree/rpi_data.c:167 msgid "Memory (spec)" -msgstr "" +msgstr "Memoire (spec)" -#: modules/devices/devicetree/rpi_data.c:161 +#: modules/devices/devicetree/rpi_data.c:169 msgid "Permanent overvolt bit" msgstr "" -#: modules/devices/devicetree/rpi_data.c:161 +#: modules/devices/devicetree/rpi_data.c:169 msgctxt "rpi-ov-bit" msgid "Set" -msgstr "" +msgstr "Sélectionné" -#: modules/devices/devicetree/rpi_data.c:161 +#: modules/devices/devicetree/rpi_data.c:169 msgctxt "rpi-ov-bit" msgid "Not set" +msgstr "Non séléctionné" + +#: modules/devices/dmi.c:36 modules/devices/inputdevices.c:115 +#: modules/devices/usb.c:167 +msgid "Product" +msgstr "Produit" + +#: modules/devices/dmi.c:38 modules/devices/ia64/processor.c:164 +#: modules/devices/sh/processor.c:86 +msgid "Family" +msgstr "Famille" + +#: modules/devices/dmi.c:42 +msgid "SKU" msgstr "" -#: modules/devices/devmemory.c:93 -msgid "Total Memory" -msgstr "Mémoire totale" +#: modules/devices/dmi.c:43 +msgid "BIOS" +msgstr "" -#: modules/devices/devmemory.c:94 -msgid "Free Memory" +#: modules/devices/dmi.c:52 modules/devices/dmi.c:58 +msgid "Asset Tag" msgstr "" -#: modules/devices/devmemory.c:95 -msgid "Cached Swap" +#: modules/devices/dmi.c:115 modules/devices/dmi_memory.c:882 +#: modules/devices/x86/processor.c:694 +msgid "(Not available; Perhaps try running HardInfo as root.)" msgstr "" +"(Non disponible; essayez peut-être d'exécuter HardInfo en tant que root.)" -#: modules/devices/devmemory.c:96 -msgid "High Memory" +#: modules/devices/dmi.c:156 +msgid "DMI Unavailable" msgstr "" -#: modules/devices/devmemory.c:97 -msgid "Free High Memory" +#: modules/devices/dmi.c:158 +msgid "DMI is not avaliable. Perhaps this platform does not provide DMI." msgstr "" -#: modules/devices/devmemory.c:98 -msgid "Low Memory" +#: modules/devices/dmi.c:159 +msgid "DMI is not available; Perhaps try running HardInfo as root." msgstr "" -#: modules/devices/devmemory.c:99 -msgid "Free Low Memory" +#: modules/devices/dmi_memory.c:598 +msgid "Serial Presence Detect (SPD)" msgstr "" -#: modules/devices/devmemory.c:100 -msgid "Virtual Memory" +#: modules/devices/dmi_memory.c:601 +msgid "SPD Revision" msgstr "" -#: modules/devices/devmemory.c:101 -msgid "Free Virtual Memory" +#: modules/devices/dmi_memory.c:602 modules/devices/dmi_memory.c:748 +msgid "Form Factor" msgstr "" -#: modules/devices/dmi.c:188 -msgid "(Not available; Perhaps try running HardInfo as root.)" +#: modules/devices/dmi_memory.c:604 +msgid "Module Vendor" +msgstr "" + +#: modules/devices/dmi_memory.c:606 +msgid "DRAM Vendor" +msgstr "" + +#: modules/devices/dmi_memory.c:608 modules/devices/dmi_memory.c:753 +msgid "Part Number" +msgstr "" + +#: modules/devices/dmi_memory.c:610 +msgid "Manufacturing Date (Week / Year)" +msgstr "" + +#: modules/devices/dmi_memory.c:644 modules/devices/dmi_memory.c:879 +msgid "Memory Device List" +msgstr "" + +#: modules/devices/dmi_memory.c:686 +msgid "Memory Array" +msgstr "" + +#: modules/devices/dmi_memory.c:687 modules/devices/x86/processor.c:713 +msgid "DMI Handle" +msgstr "" + +#: modules/devices/dmi_memory.c:688 modules/devices/dmi_memory.c:746 +#: modules/devices/dmi_memory.c:784 modules/devices/dmi_memory.c:893 +msgid "Locator" +msgstr "" + +#: modules/devices/dmi_memory.c:689 +msgid "Use" +msgstr "" + +#: modules/devices/dmi_memory.c:690 +msgid "Error Correction Type" +msgstr "" + +#: modules/devices/dmi_memory.c:691 +msgid "Size (Present / Max)" +msgstr "" + +#: modules/devices/dmi_memory.c:692 +msgid "Devices (Populated / Sockets)" +msgstr "" + +#: modules/devices/dmi_memory.c:693 modules/devices/dmi_memory.c:827 +msgid "Types Present" +msgstr "" + +#: modules/devices/dmi_memory.c:744 modules/devices/dmi_memory.c:782 +msgid "Memory Socket" +msgstr "" + +#: modules/devices/dmi_memory.c:745 modules/devices/dmi_memory.c:783 +msgid "DMI Handles (Array, Socket)" +msgstr "" + +#: modules/devices/dmi_memory.c:747 modules/devices/dmi_memory.c:785 +msgid "Bank Locator" +msgstr "" + +#: modules/devices/dmi_memory.c:755 +msgid "Rated Speed" +msgstr "" + +#: modules/devices/dmi_memory.c:756 +msgid "Configured Speed" +msgstr "" + +#: modules/devices/dmi_memory.c:757 +msgid "Data Width/Total Width" +msgstr "" + +#: modules/devices/dmi_memory.c:758 +msgid "Rank" +msgstr "" + +#: modules/devices/dmi_memory.c:759 +msgid "Minimum Voltage" +msgstr "" + +#: modules/devices/dmi_memory.c:760 +msgid "Maximum Voltage" +msgstr "" + +#: modules/devices/dmi_memory.c:761 +msgid "Configured Voltage" +msgstr "" + +#: modules/devices/dmi_memory.c:786 modules/devices/dmi_memory.c:793 +#: modules/devices/monitors.c:492 +msgid "(Empty)" +msgstr "" + +#: modules/devices/dmi_memory.c:824 +msgid "Serial Presence Detect (SPD) Summary" +msgstr "" + +#: modules/devices/dmi_memory.c:947 +msgid " dmidecode utility available" +msgstr "" + +#: modules/devices/dmi_memory.c:948 +msgid " ... and HardInfo running with superuser privileges" +msgstr "" + +#: modules/devices/dmi_memory.c:949 +msgid " eeprom module loaded (for SDR, DDR, DDR2, DDR3)" +msgstr "" + +#: modules/devices/dmi_memory.c:950 +msgid "" +" ... or ee1004 module loaded and configured! " +"(for DDR4)" +msgstr "" + +#: modules/devices/dmi_memory.c:961 +msgid "Memory information requires one or both of the following:" +msgstr "" + +#: modules/devices/dmi_memory.c:982 +msgid "" +"\"More often than not, information contained in the DMI tables is " +"inaccurate,\n" +"incomplete or simply wrong.\" -dmidecode manual page" +msgstr "" + +#: modules/devices/firmware.c:69 +msgid "Device cannot be removed easily" +msgstr "" + +#: modules/devices/firmware.c:70 +msgid "Device is updatable in this or any other mode" +msgstr "" + +#: modules/devices/firmware.c:71 +msgid "Update can only be done from offline mode" +msgstr "" + +#: modules/devices/firmware.c:72 +msgid "Requires AC power" +msgstr "" + +#: modules/devices/firmware.c:73 +msgid "Is locked and can be unlocked" +msgstr "" + +#: modules/devices/firmware.c:74 +msgid "Is found in current metadata" +msgstr "" + +#: modules/devices/firmware.c:75 +msgid "Requires a bootloader mode to be manually enabled by the user" +msgstr "" + +#: modules/devices/firmware.c:76 +msgid "Has been registered with other plugins" +msgstr "" + +#: modules/devices/firmware.c:77 +msgid "Requires a reboot to apply firmware or to reload hardware" +msgstr "" + +#: modules/devices/firmware.c:78 +msgid "Requires system shutdown to apply firmware" +msgstr "" + +#: modules/devices/firmware.c:79 +msgid "Has been reported to a metadata server" +msgstr "" + +#: modules/devices/firmware.c:80 +msgid "User has been notified" +msgstr "" + +#: modules/devices/firmware.c:81 +msgid "Always use the runtime version rather than the bootloader" +msgstr "" + +#: modules/devices/firmware.c:82 +msgid "Install composite firmware on the parent before the child" +msgstr "" + +#: modules/devices/firmware.c:83 +msgid "Is currently in bootloader mode" +msgstr "" + +#: modules/devices/firmware.c:84 +msgid "The hardware is waiting to be replugged" +msgstr "" + +#: modules/devices/firmware.c:85 +msgid "Ignore validation safety checks when flashing this device" +msgstr "" + +#: modules/devices/firmware.c:86 +msgid "Requires the update to be retried with a new plugin" +msgstr "" + +#: modules/devices/firmware.c:87 +msgid "Do not add instance IDs from the device baseclass" +msgstr "" + +#: modules/devices/firmware.c:88 +msgid "Device update needs to be separately activated" +msgstr "" + +#: modules/devices/firmware.c:89 +msgid "" +"Ensure the version is a valid semantic version, e.g. numbers separated with " +"dots" +msgstr "" + +#: modules/devices/firmware.c:90 +msgid "Extra metadata can be exposed about this device" +msgstr "" + +#: modules/devices/firmware.c:104 +msgid "DeviceId" +msgstr "" + +#: modules/devices/firmware.c:104 +msgid "Guid" +msgstr "" + +#: modules/devices/firmware.c:104 +msgid "Plugin" +msgstr "" + +#: modules/devices/firmware.c:104 modules/network.c:380 +msgid "Flags" +msgstr "" + +#: modules/devices/firmware.c:105 +msgid "VendorId" +msgstr "" + +#: modules/devices/firmware.c:105 +msgid "VersionBootloader" +msgstr "" + +#: modules/devices/firmware.c:106 +msgid "Icon" +msgstr "" + +#: modules/devices/firmware.c:106 +msgid "InstallDuration" +msgstr "" + +#: modules/devices/firmware.c:106 +msgid "Created" +msgstr "" + +#: modules/devices/firmware.c:245 +msgid "Firmware List" +msgstr "" + +#: modules/devices/firmware.c:258 +msgid "Requires the fwupdmgr utility." +msgstr "" + +#: modules/devices/gpu.c:84 modules/devices/pci.c:97 +msgid "SVendor" +msgstr "" + +#: modules/devices/gpu.c:85 modules/devices/pci.c:98 +msgid "SDevice" +msgstr "" + +#: modules/devices/gpu.c:93 modules/devices/pci.c:108 +msgid "PCI Express" +msgstr "" + +#: modules/devices/gpu.c:94 modules/devices/pci.c:110 +msgid "Maximum Link Width" +msgstr "" + +#: modules/devices/gpu.c:95 modules/devices/pci.c:112 +msgid "Maximum Link Speed" +msgstr "" + +#: modules/devices/gpu.c:95 modules/devices/pci.c:111 modules/devices/pci.c:112 +msgid "GT/s" +msgstr "" + +#: modules/devices/gpu.c:105 +msgid "NVIDIA" +msgstr "" + +#: modules/devices/gpu.c:107 +msgid "BIOS Version" +msgstr "" + +#: modules/devices/gpu.c:108 +msgid "UUID" +msgstr "" + +#: modules/devices/gpu.c:142 modules/devices/gpu.c:222 +#: modules/devices/inputdevices.c:110 modules/devices/pci.c:129 +#: modules/devices/usb.c:166 +msgid "Device Information" +msgstr "Information matériel" + +#: modules/devices/gpu.c:143 modules/devices/gpu.c:223 +msgid "Location" +msgstr "" + +#: modules/devices/gpu.c:144 +msgid "DRM Device" +msgstr "" + +#: modules/devices/gpu.c:145 modules/devices/pci.c:130 +#: modules/devices/usb.c:133 modules/devices/usb.c:174 +msgid "Class" +msgstr "" + +#: modules/devices/gpu.c:154 modules/devices/pci.c:135 +msgid "In Use" +msgstr "En cours" + +#: modules/devices/gpu.c:185 +msgid "Unknown integrated GPU" +msgstr "GPU intégré inconnu" + +#: modules/devices/gpu.c:191 +msgid "clock-frequency property" +msgstr "" + +#: modules/devices/gpu.c:192 +msgid "Operating Points (OPPv1)" +msgstr "" + +#: modules/devices/gpu.c:193 +msgid "Operating Points (OPPv2)" +msgstr "" + +#: modules/devices/gpu.c:229 +msgid "Device Tree Node" +msgstr "" + +#: modules/devices/gpu.c:232 modules/devices/monitors.c:471 +#: modules/network/net.c:454 +msgid "Status" +msgstr "Etats" + +#: modules/devices/gpu.c:249 +msgid "GPUs" +msgstr "" + +#: modules/devices/gpu.c:273 +msgid "No GPU devices found" msgstr "" #: modules/devices/ia64/processor.c:108 @@ -2126,40 +3257,26 @@ msgstr "" msgid "Architecture Revision" msgstr "" -#: modules/devices/ia64/processor.c:164 modules/devices/sh/processor.c:86 -msgid "Family" -msgstr "" - #: modules/devices/ia64/processor.c:170 msgid "CPU regs" msgstr "" #: modules/devices/ia64/processor.c:171 msgid "Features" -msgstr "" +msgstr "Caractéristiques" -#: modules/devices/inputdevices.c:115 modules/devices/pci.c:214 -#: modules/devices/usb.c:82 modules/devices/usb.c:215 modules/devices/usb.c:347 -msgid "Device Information" -msgstr "" - -#: modules/devices/inputdevices.c:118 modules/devices/usb.c:92 -#: modules/devices/usb.c:240 modules/devices/usb.c:356 +#: modules/devices/inputdevices.c:113 modules/devices/pci.c:139 +#: modules/devices/usb.c:180 msgid "Bus" msgstr "" -#: modules/devices/inputdevices.c:120 modules/devices/usb.c:83 -#: modules/devices/usb.c:216 modules/devices/usb.c:348 -msgid "Product" -msgstr "" - -#: modules/devices/inputdevices.c:124 +#: modules/devices/inputdevices.c:119 msgid "Connected to" -msgstr "" +msgstr "Connecté à" -#: modules/devices/inputdevices.c:128 +#: modules/devices/inputdevices.c:123 msgid "InfraRed port" -msgstr "" +msgstr "Port infrarouge" #: modules/devices/m68k/processor.c:85 modules/devices/riscv/processor.c:185 msgid "MMU" @@ -2171,86 +3288,192 @@ msgstr "" #: modules/devices/m68k/processor.c:90 msgid "Calibration" -msgstr "" +msgstr "Calibrage" #: modules/devices/mips/processor.c:76 msgid "System Type" +msgstr "Type de système" + +#: modules/devices/monitors.c:29 modules/devices/monitors.c:253 +#: modules/devices/monitors.c:346 modules/devices/spd-decode.c:595 +msgid "(Unspecified)" msgstr "" -#: modules/devices/parisc/processor.c:107 -msgid "PA-RISC Processor" +#: modules/devices/monitors.c:228 +#, c-format +msgid "Week %d of %d" msgstr "" -#: modules/devices/parisc/processor.c:157 -msgid "System" +#: modules/devices/monitors.c:238 +msgid "Ok" msgstr "" -#: modules/devices/parisc/processor.c:161 -msgid "HVersion" +#: modules/devices/monitors.c:238 +msgid "Fail" msgstr "" -#: modules/devices/parisc/processor.c:162 -msgid "SVersion" +#: modules/devices/monitors.c:266 modules/devices/monitors.c:274 +#: modules/devices/monitors.c:282 modules/devices/monitors.c:293 +#: modules/devices/monitors.c:301 modules/devices/monitors.c:308 +#: modules/devices/monitors.c:316 modules/devices/monitors.c:324 +#: modules/devices/monitors.c:332 modules/devices/monitors.c:338 +msgid "(Empty List)" msgstr "" -#: modules/devices/parisc/processor.c:163 modules/devices/x86/processor.c:425 -msgid "Cache" +#: modules/devices/monitors.c:390 +msgid "Signal Type" +msgstr "" + +#: modules/devices/monitors.c:390 +msgid "Digital" msgstr "" -#: modules/devices/pci.c:106 -msgid "IRQ" +#: modules/devices/monitors.c:390 +msgid "Analog" msgstr "" -#: modules/devices/pci.c:110 -msgid "Latency" +#: modules/devices/monitors.c:391 modules/devices/usb.c:132 +#: modules/network.c:310 modules/network.c:363 modules/network.c:380 +msgid "Interface" msgstr "" -#: modules/devices/pci.c:112 -msgid "Bus Master" +#: modules/devices/monitors.c:392 +msgid "Bits per Color Channel" msgstr "" -#: modules/devices/pci.c:118 -msgid "Kernel modules" +#: modules/devices/monitors.c:393 +msgid "Speaker Allocation" msgstr "" -#: modules/devices/pci.c:124 -#, c-format -msgid "%s=%s (%s)\n" +#: modules/devices/monitors.c:394 +msgid "Output (Max)" msgstr "" -#: modules/devices/pci.c:126 -msgid "OEM Vendor" +#: modules/devices/monitors.c:397 +msgid "EDID Device" msgstr "" -#: modules/devices/pci.c:153 -msgid "prefetchable" +#: modules/devices/monitors.c:401 +msgid "Serial" msgstr "" -#: modules/devices/pci.c:154 -msgid "non-prefetchable" +#: modules/devices/monitors.c:402 +msgid "Manufacture Date" msgstr "" -#: modules/devices/pci.c:163 -msgid "I/O ports at" +#: modules/devices/monitors.c:403 +msgid "EDID Meta" msgstr "" -#: modules/devices/pci.c:216 modules/devices/usb.c:89 modules/devices/usb.c:237 -#: modules/devices/usb.c:353 -msgid "Class" +#: modules/devices/monitors.c:404 +msgid "Data Size" msgstr "" -#: modules/devices/pci.c:217 -msgid "Domain" +#: modules/devices/monitors.c:404 +msgid "bytes" msgstr "" -#: modules/devices/pci.c:218 -msgid "Bus, device, function" +#: modules/devices/monitors.c:406 +msgid "Extension Blocks" msgstr "" -#: modules/devices/pci.c:243 -msgid "No PCI devices found" +#: modules/devices/monitors.c:407 +msgid "Extended to" +msgstr "" + +#: modules/devices/monitors.c:408 +msgid "Checksum" +msgstr "" + +#: modules/devices/monitors.c:409 +msgid "EDID Descriptors" +msgstr "" + +#: modules/devices/monitors.c:410 +msgid "Detailed Timing Descriptors (DTD)" +msgstr "" + +#: modules/devices/monitors.c:411 +msgid "Established Timings Bitmap (ETB)" +msgstr "" + +#: modules/devices/monitors.c:412 +msgid "Standard Timings (STD)" +msgstr "" + +#: modules/devices/monitors.c:413 +msgid "E-EDID Extension Blocks" +msgstr "" + +#: modules/devices/monitors.c:414 +msgid "EIA/CEA-861 Data Blocks" +msgstr "" + +#: modules/devices/monitors.c:415 +msgid "EIA/CEA-861 Short Audio Descriptors" +msgstr "" + +#: modules/devices/monitors.c:416 +msgid "EIA/CEA-861 Short Video Descriptors" +msgstr "" + +#: modules/devices/monitors.c:417 +msgid "DisplayID Timings" +msgstr "" + +#: modules/devices/monitors.c:418 +msgid "DisplayID Strings" +msgstr "" + +#: modules/devices/monitors.c:419 +msgid "Hex Dump" +msgstr "" + +#: modules/devices/monitors.c:419 +msgid "Data" +msgstr "" + +#: modules/devices/monitors.c:469 modules/devices/monitors.c:501 +#: modules/devices/pci.c:137 modules/devices/usb.c:179 +msgid "Connection" +msgstr "" + +#: modules/devices/monitors.c:470 +msgid "DRM" +msgstr "" + +#: modules/devices/parisc/processor.c:107 +msgid "PA-RISC Processor" +msgstr "" + +#: modules/devices/parisc/processor.c:161 +msgid "HVersion" +msgstr "" + +#: modules/devices/parisc/processor.c:162 +msgid "SVersion" +msgstr "" + +#: modules/devices/pci.c:109 +msgid "Link Width" msgstr "" +#: modules/devices/pci.c:111 +msgid "Link Speed" +msgstr "" + +#: modules/devices/pci.c:138 +msgid "Domain" +msgstr "Domaine" + +#: modules/devices/pci.c:141 +msgid "Function" +msgstr "Fonction" + +#: modules/devices/pci.c:185 +msgid "No PCI devices found" +msgstr "Aucun matériel PCI trouvé" + #: modules/devices/ppc/processor.c:117 msgid "POWER Processor" msgstr "" @@ -2285,11 +3508,11 @@ msgstr "⚬ Imprimante rejette cette tâche=\n" #: modules/devices/printers.c:95 msgid "⚬ Printer was automatically discovered and added=\n" -msgstr "⚬ Imprimante a été automatiquement détecté et ajouté=\n" +msgstr "⚬ Imprimante a été automatiquement détectée et ajoutée=\n" #: modules/devices/printers.c:110 msgid "Idle" -msgstr "Inoccupé" +msgstr "Inoccupée" #: modules/devices/printers.c:112 msgid "Printing a Job" @@ -2297,7 +3520,7 @@ msgstr "Impression" #: modules/devices/printers.c:114 msgid "Stopped" -msgstr "Arrêt" +msgstr "Arrêtée" #: modules/devices/printers.c:190 msgid "" @@ -2305,18 +3528,18 @@ msgid "" "No suitable CUPS library found=" msgstr "" "[Printers]\n" -"Aucune suite de librairie CUPS trouvée=" +"Aucune librairie CUPS trouvée=" #: modules/devices/printers.c:200 msgid "[Printers (CUPS)]\n" -msgstr "[Printers (CUPS)]\n" +msgstr "[Imprimantes (CUPS)]\n" #: modules/devices/printers.c:263 msgid "" "[Printers]\n" "No printers found=\n" msgstr "" -"[Printers]\n" +"[Imprimantes]\n" "Aucune imprimante trouvée=\n" #: modules/devices/riscv/processor.c:107 @@ -2349,162 +3572,539 @@ msgstr "" #: modules/devices/riscv/riscv_data.c:40 msgctxt "rv-ext" msgid "Base embedded integer instructions (15 registers)" -msgstr "" +msgstr "Instructions embarquées (15 registres)" #. /ext:I #: modules/devices/riscv/riscv_data.c:41 msgctxt "rv-ext" msgid "Base integer instructions (31 registers)" +msgstr "Instructions intégrées (31 registres)" + +#. /ext:M +#: modules/devices/riscv/riscv_data.c:42 +msgctxt "rv-ext" +msgid "Hardware integer multiply and divide" +msgstr "" + +#. /ext:A +#: modules/devices/riscv/riscv_data.c:43 +msgctxt "rv-ext" +msgid "Atomic memory operations" +msgstr "Opérations de mémoire atomique" + +#. /ext:C +#: modules/devices/riscv/riscv_data.c:44 +msgctxt "rv-ext" +msgid "Compressed 16-bit instructions" +msgstr "Instructions 16 bits compressées" + +#. /ext:F +#: modules/devices/riscv/riscv_data.c:45 +msgctxt "rv-ext" +msgid "Floating-point instructions, single-precision" +msgstr "Floating-point instructions, simple-precision" + +#. /ext:D +#: modules/devices/riscv/riscv_data.c:46 +msgctxt "rv-ext" +msgid "Floating-point instructions, double-precision" +msgstr "" + +#. /ext:Q +#: modules/devices/riscv/riscv_data.c:47 +msgctxt "rv-ext" +msgid "Floating-point instructions, quad-precision" +msgstr "" + +#. /ext:B +#: modules/devices/riscv/riscv_data.c:48 +msgctxt "rv-ext" +msgid "Bit manipulation instructions" +msgstr "" + +#. /ext:V +#: modules/devices/riscv/riscv_data.c:49 +msgctxt "rv-ext" +msgid "Vector operations" +msgstr "" + +#. /ext:T +#: modules/devices/riscv/riscv_data.c:50 +msgctxt "rv-ext" +msgid "Transactional memory" +msgstr "" + +#. /ext:P +#: modules/devices/riscv/riscv_data.c:51 +msgctxt "rv-ext" +msgid "Packed SIMD instructions" +msgstr "" + +#. /ext:L +#: modules/devices/riscv/riscv_data.c:52 +msgctxt "rv-ext" +msgid "Decimal floating-point instructions" +msgstr "" + +#. /ext:J +#: modules/devices/riscv/riscv_data.c:53 +msgctxt "rv-ext" +msgid "Dynamically translated languages" +msgstr "" + +#. /ext:N +#: modules/devices/riscv/riscv_data.c:54 +msgctxt "rv-ext" +msgid "User-level interrupts" +msgstr "" + +#: modules/devices/s390/processor.c:92 +msgid "S390 Processor" +msgstr "" + +#: modules/devices/s390/processor.c:133 +msgid "ID String" +msgstr "" + +#: modules/devices/sh/processor.c:55 +msgid "SuperH Processor" +msgstr "" + +#: modules/devices/sh/processor.c:88 +msgid "Bus Frequency" +msgstr "Fréquence BUS" + +#: modules/devices/sh/processor.c:89 +msgid "Module Frequency" +msgstr "Fréquence Modules" + +#: modules/devices/spd-decode.c:306 +msgid "Row address bits" +msgstr "" + +#: modules/devices/spd-decode.c:307 +msgid "Column address bits" +msgstr "" + +#: modules/devices/spd-decode.c:308 +msgid "Number of rows" +msgstr "" + +#: modules/devices/spd-decode.c:309 +msgid "Data width" +msgstr "" + +#: modules/devices/spd-decode.c:310 +msgid "Interface signal levels" +msgstr "" + +#: modules/devices/spd-decode.c:311 +msgid "Configuration type" +msgstr "" + +#: modules/devices/spd-decode.c:312 +msgid "Refresh" +msgstr "" + +#: modules/devices/spd-decode.c:313 modules/devices/spd-decode.c:397 +#: modules/devices/spd-decode.c:492 modules/devices/spd-decode.c:617 +msgid "Timings" +msgstr "" + +#: modules/devices/spd-decode.c:593 +msgid "Ranks" +msgstr "" + +#: modules/devices/spd-decode.c:594 +msgid "IO Pins per Chip" +msgstr "" + +#: modules/devices/spd-decode.c:595 +msgid "Die count" +msgstr "" + +#: modules/devices/spd-decode.c:596 +msgid "Thermal Sensor" +msgstr "" + +#: modules/devices/spd-decode.c:596 +msgid "Present" +msgstr "" + +#: modules/devices/spd-decode.c:596 +msgid "Not present" +msgstr "" + +#: modules/devices/spd-decode.c:597 +msgid "Supported Voltages" +msgstr "" + +#: modules/devices/spd-decode.c:601 +msgid "Supported CAS Latencies" +msgstr "" + +#: modules/devices/spd-decode.c:638 +msgid "Invalid" +msgstr "" + +#: modules/devices/spd-decode.c:870 +msgid "XMP Profile" +msgstr "" + +#: modules/devices/spd-decode.c:871 modules/devices/usb.c:173 +msgid "Speed" +msgstr "" + +#: modules/devices/spd-decode.c:872 modules/devices/spd-decode.c:914 +#: modules/devices/x86/processor.c:715 +msgid "Voltage" +msgstr "" + +#: modules/devices/spd-decode.c:873 +msgid "XMP Timings" +msgstr "" + +#: modules/devices/spd-decode.c:915 +msgid "XMP" +msgstr "" + +#: modules/devices/spd-decode.c:916 +msgid "JEDEC Timings" +msgstr "" + +#: modules/devices/storage.c:84 +msgid "Read Error Rate" +msgstr "" + +#: modules/devices/storage.c:85 +msgid "Throughput Performance" +msgstr "" + +#: modules/devices/storage.c:86 +msgid "Spin-Up Time" +msgstr "" + +#: modules/devices/storage.c:87 +msgid "Start/Stop Count" +msgstr "" + +#: modules/devices/storage.c:88 +msgid "Reallocated Sector Count" +msgstr "" + +#: modules/devices/storage.c:89 +msgid "Read Channel Margin" +msgstr "" + +#: modules/devices/storage.c:90 +msgid "Seek Error Rate" +msgstr "" + +#: modules/devices/storage.c:91 +msgid "Seek Timer Performance" +msgstr "" + +#: modules/devices/storage.c:92 modules/devices/storage.c:131 +msgid "Power-On Hours" +msgstr "" + +#: modules/devices/storage.c:93 +msgid "Spin Retry Count" +msgstr "" + +#: modules/devices/storage.c:94 +msgid "Calibration Retry Count" +msgstr "" + +#: modules/devices/storage.c:95 +msgid "Power Cycle Count" +msgstr "" + +#: modules/devices/storage.c:96 modules/devices/storage.c:113 +msgid "Soft Read Error Rate" +msgstr "" + +#: modules/devices/storage.c:97 +msgid "Runtime Bad Block" +msgstr "" + +#: modules/devices/storage.c:98 +msgid "End-to-End error" +msgstr "" + +#: modules/devices/storage.c:99 +msgid "Reported Uncorrectable Errors" +msgstr "" + +#: modules/devices/storage.c:100 +msgid "Command Timeout" +msgstr "" + +#: modules/devices/storage.c:101 +msgid "High Fly Writes" +msgstr "" + +#: modules/devices/storage.c:102 +msgid "Airflow Temperature" +msgstr "" + +#: modules/devices/storage.c:103 +msgid "G-sense Error Rate" +msgstr "" + +#: modules/devices/storage.c:104 +msgid "Power-off Retract Count" +msgstr "" + +#: modules/devices/storage.c:105 +msgid "Load Cycle Count" +msgstr "" + +#: modules/devices/storage.c:106 modules/devices/storage.c:129 +msgid "Temperature" +msgstr "" + +#: modules/devices/storage.c:107 +msgid "Hardware ECC Recovered" +msgstr "" + +#: modules/devices/storage.c:108 +msgid "Reallocation Event Count" +msgstr "" + +#: modules/devices/storage.c:109 +msgid "Current Pending Sector Count" +msgstr "" + +#: modules/devices/storage.c:110 +msgid "Uncorrectable Sector Count" +msgstr "" + +#: modules/devices/storage.c:111 +msgid "UltraDMA CRC Error Count" +msgstr "" + +#: modules/devices/storage.c:112 +msgid "Multi-Zone Error Rate" +msgstr "" + +#: modules/devices/storage.c:114 +msgid "Run Out Cancel" +msgstr "" + +#: modules/devices/storage.c:115 +msgid "Flying Height" +msgstr "" + +#: modules/devices/storage.c:116 +msgid "Spin High Current" +msgstr "" + +#: modules/devices/storage.c:117 +msgid "Spin Buzz" +msgstr "" + +#: modules/devices/storage.c:118 +msgid "Offline Seek Performance" +msgstr "" + +#: modules/devices/storage.c:119 +msgid "Disk Shift" +msgstr "" + +#: modules/devices/storage.c:120 +msgid "G-Sense Error Rate" +msgstr "" + +#: modules/devices/storage.c:121 +msgid "Loaded Hours" +msgstr "" + +#: modules/devices/storage.c:122 +msgid "Load/Unload Retry Count" +msgstr "" + +#: modules/devices/storage.c:123 +msgid "Load Friction" +msgstr "" + +#: modules/devices/storage.c:124 +msgid "Load/Unload Cycle Count" +msgstr "" + +#: modules/devices/storage.c:125 +msgid "Load-in time" +msgstr "" + +#: modules/devices/storage.c:126 +msgid "Torque Amplification Count" +msgstr "" + +#: modules/devices/storage.c:127 +msgid "Power-Off Retract Count" +msgstr "" + +#: modules/devices/storage.c:128 +msgid "GMR Head Amplitude" +msgstr "" + +#: modules/devices/storage.c:130 +msgid "Endurance Remaining" +msgstr "" + +#: modules/devices/storage.c:132 +msgid "Good Block Rate" +msgstr "" + +#: modules/devices/storage.c:133 +msgid "Head Flying Hours" msgstr "" -#. /ext:M -#: modules/devices/riscv/riscv_data.c:42 -msgctxt "rv-ext" -msgid "Hardware integer multiply and divide" +#: modules/devices/storage.c:134 +msgid "Read Error Retry Rate" msgstr "" -#. /ext:A -#: modules/devices/riscv/riscv_data.c:43 -msgctxt "rv-ext" -msgid "Atomic memory operations" +#: modules/devices/storage.c:135 +msgid "Total LBAs Written" msgstr "" -#. /ext:C -#: modules/devices/riscv/riscv_data.c:44 -msgctxt "rv-ext" -msgid "Compressed 16-bit instructions" +#: modules/devices/storage.c:136 +msgid "Total LBAs Read" msgstr "" -#. /ext:F -#: modules/devices/riscv/riscv_data.c:45 -msgctxt "rv-ext" -msgid "Floating-point instructions, single-precision" +#: modules/devices/storage.c:141 +msgid "" +"\n" +"[UDisks2]\n" msgstr "" -#. /ext:D -#: modules/devices/riscv/riscv_data.c:46 -msgctxt "rv-ext" -msgid "Floating-point instructions, double-precision" +#: modules/devices/storage.c:199 +msgid "Removable" msgstr "" -#. /ext:Q -#: modules/devices/riscv/riscv_data.c:47 -msgctxt "rv-ext" -msgid "Floating-point instructions, quad-precision" +#: modules/devices/storage.c:199 +msgid "Fixed" msgstr "" -#. /ext:B -#: modules/devices/riscv/riscv_data.c:48 -msgctxt "rv-ext" -msgid "Bit manipulation instructions" +#: modules/devices/storage.c:202 +msgid "Ejectable" msgstr "" -#. /ext:V -#: modules/devices/riscv/riscv_data.c:49 -msgctxt "rv-ext" -msgid "Vector operations" +#: modules/devices/storage.c:205 +msgid "Self-monitoring (S.M.A.R.T.)" msgstr "" -#. /ext:T -#: modules/devices/riscv/riscv_data.c:50 -msgctxt "rv-ext" -msgid "Transactional memory" +#: modules/devices/storage.c:208 modules/devices/x86/processor.c:663 +msgid "Power Management" msgstr "" -#. /ext:P -#: modules/devices/riscv/riscv_data.c:51 -msgctxt "rv-ext" -msgid "Packed SIMD instructions" +#: modules/devices/storage.c:211 +msgid "Advanced Power Management" msgstr "" -#. /ext:L -#: modules/devices/riscv/riscv_data.c:52 -msgctxt "rv-ext" -msgid "Decimal floating-point instructions" +#: modules/devices/storage.c:214 +msgid "Automatic Acoustic Management" msgstr "" -#. /ext:J -#: modules/devices/riscv/riscv_data.c:53 -msgctxt "rv-ext" -msgid "Dynamically translated languages" +#: modules/devices/storage.c:217 +#, c-format +msgid "" +"[Drive Information]\n" +"Model=%s\n" msgstr "" -#. /ext:N -#: modules/devices/riscv/riscv_data.c:54 -msgctxt "rv-ext" -msgid "User-level interrupts" +#: modules/devices/storage.c:221 modules/devices/storage.c:449 +#: modules/devices/storage.c:648 +#, c-format +msgid "Vendor=%s\n" +msgstr "Vendeur=%s\n" + +#: modules/devices/storage.c:226 +#, c-format +msgid "" +"Revision=%s\n" +"Block Device=%s\n" +"Serial=%s\n" +"Size=%s\n" +"Features=%s\n" msgstr "" -#: modules/devices/s390/processor.c:92 -msgid "S390 Processor" +#: modules/devices/storage.c:240 +#, c-format +msgid "Rotation Rate=%d RPM\n" msgstr "" -#: modules/devices/s390/processor.c:133 -msgid "ID String" +#: modules/devices/storage.c:243 +#, c-format +msgid "" +"Media=%s\n" +"Media compatibility=%s\n" msgstr "" -#: modules/devices/sh/processor.c:55 -msgid "SuperH Processor" +#: modules/devices/storage.c:250 +#, c-format +msgid "Connection bus=%s\n" msgstr "" -#: modules/devices/sh/processor.c:88 -msgid "Bus Frequency" +#: modules/devices/storage.c:253 +#, c-format +msgid "" +"[Self-monitoring (S.M.A.R.T.)]\n" +"Status=%s\n" +"Bad Sectors=%ld\n" +"Power on time=%d days %d hours\n" +"Temperature=%d°C\n" msgstr "" -#: modules/devices/sh/processor.c:89 -msgid "Module Frequency" +#: modules/devices/storage.c:259 +msgid "Failing" msgstr "" -#: modules/devices/spd-decode.c:1475 -msgid "" -"[SPD]\n" -"Please load the eeprom module to obtain information about memory SPD=\n" -"[$ShellParam$]\n" -"ReloadInterval=500\n" +#: modules/devices/storage.c:259 +msgid "OK" msgstr "" -#: modules/devices/spd-decode.c:1480 +#: modules/devices/storage.c:265 msgid "" -"[SPD]\n" -"Reading memory SPD not supported on this system=\n" +"[S.M.A.R.T. Attributes]\n" +"Attribute=Normalized Value / Worst / Threshold\n" msgstr "" -#: modules/devices/spd-decode.c:1509 -msgid "SPD" +#: modules/devices/storage.c:297 +#, c-format +msgid "(%d) %s=%s\n" +msgstr "" + +#: modules/devices/storage.c:306 +#, c-format +msgid "" +"[Partition table]\n" +"Type=%s\n" msgstr "" -#: modules/devices/spd-decode.c:1510 -msgid "Bank" +#: modules/devices/storage.c:325 +#, c-format +msgid "Partition %s=%s\n" msgstr "" -#: modules/devices/storage.c:46 +#: modules/devices/storage.c:375 msgid "" "\n" "[SCSI Disks]\n" msgstr "" "\n" -"[SCSI Disks]\n" +"[Disques SCSI]\n" -#: modules/devices/storage.c:110 modules/devices/storage.c:313 +#: modules/devices/storage.c:446 modules/devices/storage.c:645 #, c-format msgid "" "[Device Information]\n" "Model=%s\n" msgstr "" -"[Device Information]\n" +"[Informations des périphériques]\n" "Modele=%s\n" -#: modules/devices/storage.c:115 modules/devices/storage.c:319 -#, c-format -msgid "Vendor=%s (%s)\n" -msgstr "Vendeur=%s (%s)\n" - -#: modules/devices/storage.c:120 modules/devices/storage.c:321 -#, c-format -msgid "Vendor=%s\n" -msgstr "Vendeur=%s\n" - -#: modules/devices/storage.c:125 +#: modules/devices/storage.c:453 #, c-format msgid "" "Type=%s\n" @@ -2523,28 +4123,31 @@ msgstr "" "ID=%d\n" "LUN=%d\n" -#: modules/devices/storage.c:167 +#: modules/devices/storage.c:499 msgid "" "\n" "[IDE Disks]\n" msgstr "" "\n" -"[IDE Disks]\n" +"[Disques IDE]\n" -#: modules/devices/storage.c:250 +#: modules/devices/storage.c:582 #, c-format msgid "Driver=%s\n" msgstr "Driver=%s\n" -#: modules/devices/storage.c:324 +#: modules/devices/storage.c:650 #, c-format msgid "" "Device Name=hd%c\n" "Media=%s\n" "Cache=%dkb\n" msgstr "" +"Nom du Périphérique=hd%c\n" +"Media=%s\n" +"Cache=%dkb\n" -#: modules/devices/storage.c:334 +#: modules/devices/storage.c:660 #, c-format msgid "" "[Geometry]\n" @@ -2555,74 +4158,59 @@ msgstr "" "Physique=%s\n" "Logique=%s\n" -#: modules/devices/storage.c:344 +#: modules/devices/storage.c:670 #, c-format msgid "" "[Capabilities]\n" "%s" msgstr "" -"[Capabilities]\n" +"[Capacités]\n" "%s" -#: modules/devices/storage.c:351 +#: modules/devices/storage.c:677 #, c-format msgid "" "[Speeds]\n" "%s" msgstr "" -"[Speeds]\n" +"[Vitesses]\n" "%s" -#: modules/devices/usb.c:44 modules/devices/usb.c:326 -msgid "mA" -msgstr "" - -#. /%.2f is version -#: modules/devices/usb.c:53 modules/devices/usb.c:190 -#, c-format -msgid "USB %.2f Hub" -msgstr "" - -#: modules/devices/usb.c:55 modules/devices/usb.c:192 -#, c-format -msgid "Unknown USB %.2f Device (class %d)" +#: modules/devices/usb.c:134 modules/devices/usb.c:175 +msgid "Sub-class" msgstr "" -#: modules/devices/usb.c:85 modules/devices/usb.c:232 -msgid "Speed" +#: modules/devices/usb.c:135 modules/devices/usb.c:176 modules/network.c:347 +msgid "Protocol" msgstr "" -#: modules/devices/usb.c:85 modules/devices/usb.c:232 -msgid "Mbit/s" +#: modules/devices/usb.c:143 modules/network/net.c:451 +msgid "Mb/s" msgstr "" -#: modules/devices/usb.c:86 modules/devices/usb.c:233 modules/devices/usb.c:350 +#: modules/devices/usb.c:171 msgid "Max Current" msgstr "" -#: modules/devices/usb.c:88 modules/devices/usb.c:235 modules/devices/usb.c:352 -msgid "USB Version" -msgstr "" - -#: modules/devices/usb.c:90 modules/devices/usb.c:238 modules/devices/usb.c:354 -msgid "Vendor ID" +#: modules/devices/usb.c:171 +msgid "mA" msgstr "" -#: modules/devices/usb.c:91 modules/devices/usb.c:239 modules/devices/usb.c:355 -msgid "Product ID" +#: modules/devices/usb.c:172 +msgid "USB Version" msgstr "" -#: modules/devices/usb.c:231 -msgid "Port" -msgstr "" +#: modules/devices/usb.c:177 +msgid "Device Version" +msgstr "Version du périphériques" -#: modules/devices/usb.c:241 -msgid "Level" -msgstr "" +#: modules/devices/usb.c:221 +msgid "No USB devices found." +msgstr "Aucun périphérique USB trouvé" #: modules/devices/x86/processor.c:149 msgid "Cache information not available=\n" -msgstr "" +msgstr "Information du cache non valable=\n" #: modules/devices/x86/processor.c:155 #, c-format @@ -2633,56 +4221,85 @@ msgstr "" #: modules/devices/x86/processor.c:170 msgctxt "cache-type" msgid "Data" -msgstr "" +msgstr "Données" #. /cache type, as appears in: Level 1 (Instruction) #: modules/devices/x86/processor.c:171 msgctxt "cache-type" msgid "Instruction" -msgstr "" +msgstr "Instructions" #. /cache type, as appears in: Level 2 (Unified) #: modules/devices/x86/processor.c:172 msgctxt "cache-type" msgid "Unified" +msgstr "uniformisé" + +#: modules/devices/x86/processor.c:367 +msgid "Caches" msgstr "" -#: modules/devices/x86/processor.c:410 -msgid "Model Name" +#: modules/devices/x86/processor.c:418 modules/devices/x86/processor.c:435 +#, c-format +msgid "Level %d (%s)#%d=%dx %dKB (%dKB), %d-way set-associative, %d sets\n" msgstr "" -#: modules/devices/x86/processor.c:411 +#: modules/devices/x86/processor.c:647 +msgid "Model Name" +msgstr "Nom du modèle" + +#: modules/devices/x86/processor.c:648 msgid "Family, model, stepping" -msgstr "" +msgstr "Famille, modèle, stepping" -#: modules/devices/x86/processor.c:417 +#: modules/devices/x86/processor.c:654 msgid "Microcode Version" msgstr "" -#: modules/devices/x86/processor.c:418 +#: modules/devices/x86/processor.c:655 msgid "Configuration" msgstr "" -#: modules/devices/x86/processor.c:419 +#: modules/devices/x86/processor.c:656 msgid "Cache Size" -msgstr "" +msgstr "Taille du Cache" -#: modules/devices/x86/processor.c:419 +#: modules/devices/x86/processor.c:656 msgid "kb" msgstr "" -#: modules/devices/x86/processor.c:426 -msgid "Power Management" +#: modules/devices/x86/processor.c:664 +msgid "Bug Workarounds" msgstr "" -#: modules/devices/x86/processor.c:427 -msgid "Bug Workarounds" +#: modules/devices/x86/processor.c:691 +msgid "Socket Information" msgstr "" -#: modules/devices/x86/processor.c:454 modules/devices/x86/processor.c:468 +#: modules/devices/x86/processor.c:712 +msgid "CPU Socket" +msgstr "" + +#: modules/devices/x86/processor.c:716 +msgid "External Clock" +msgstr "" + +#: modules/devices/x86/processor.c:717 +msgid "Max Frequency" +msgstr "" + +#: modules/devices/x86/processor.c:748 modules/devices/x86/processor.c:769 msgid "Package Information" msgstr "" +#: modules/devices/x86/processor.c:796 +msgid "Socket:Core" +msgstr "" + +#: modules/devices/x86/processor.c:796 +msgid "Thread" +msgstr "" + #. /flag:fpu #: modules/devices/x86/x86_data.c:43 msgctxt "x86-flag" @@ -2815,7 +4432,7 @@ msgstr "" #: modules/devices/x86/x86_data.c:64 msgctxt "x86-flag" msgid "Multimedia Extensions" -msgstr "" +msgstr "Plugins Multimédia" #. /flag:fxsr #: modules/devices/x86/x86_data.c:65 @@ -2860,12 +4477,15 @@ msgid "" "Intel Itanium Architecture 64-bit (not to be confused with Intel's 64-bit " "x86 architecture with flag x86-64 or \"AMD64\" bit indicated by flag lm)" msgstr "" +"Intel Itanium Architecture 64-bit (à ne pas confondre avec le 64-bit " +"d'Intel) Architecture x86 avec drapeau x86-64 ou \"AMD64\" bit indiqué par " +"drapeau lm)" #. /flag:pbe #: modules/devices/x86/x86_data.c:72 msgctxt "x86-flag" msgid "Pending Break Enable (PBE# pin) wakeup support" -msgstr "" +msgstr "Prise en charge du réveil Pending Break Enable (broche PBE#)" #. /flag:syscall #: modules/devices/x86/x86_data.c:75 @@ -2931,7 +4551,7 @@ msgstr "" #: modules/devices/x86/x86_data.c:86 msgctxt "x86-flag" msgid "CPU in recovery mode" -msgstr "" +msgstr "CPU en mode recovery" #. /flag:longrun #: modules/devices/x86/x86_data.c:87 @@ -3167,13 +4787,13 @@ msgstr "" #: modules/devices/x86/x86_data.c:128 msgctxt "x86-flag" msgid "Send Task Priority Messages" -msgstr "" +msgstr "Envoyer des messages des tâches prioritaires" #. /flag:pdcm #: modules/devices/x86/x86_data.c:129 msgctxt "x86-flag" msgid "Performance Capabilities" -msgstr "" +msgstr "Capacités de performance" #. /flag:pcid #: modules/devices/x86/x86_data.c:130 @@ -3209,7 +4829,7 @@ msgstr "" #: modules/devices/x86/x86_data.c:135 msgctxt "x86-flag" msgid "Move Data After Swapping Bytes instruction" -msgstr "" +msgstr "Déplacer les données après l'instruction d'échange d'octets" #. /flag:popcnt #: modules/devices/x86/x86_data.c:136 @@ -3218,6 +4838,8 @@ msgid "" "Return the Count of Number of Bits Set to 1 instruction (Hamming weight, i." "e. bit count)" msgstr "" +"Retourne le nombre de bits réglé à 1 instruction (poids de Hamming, i.e. " +"nombre de bits)" #. /flag:tsc_deadline_timer #: modules/devices/x86/x86_data.c:137 @@ -3229,13 +4851,14 @@ msgstr "" #: modules/devices/x86/x86_data.c:138 msgctxt "x86-flag" msgid "Advanced Encryption Standard (New Instructions)" -msgstr "" +msgstr "Norme de chriffrement avancée (nouvelles instructions)" #. /flag:xsave #: modules/devices/x86/x86_data.c:139 msgctxt "x86-flag" msgid "Save Processor Extended States: also provides XGETBY,XRSTOR,XSETBY" msgstr "" +"Save Processor Extended States : fournit également XGETBY,XRSTOR,XSETBY" #. /flag:avx #: modules/devices/x86/x86_data.c:140 @@ -3254,6 +4877,8 @@ msgstr "" msgctxt "x86-flag" msgid "Read Random Number from hardware random number generator instruction" msgstr "" +"Lecture d'un nombre aléatoire à partir de l'instruction du générateur de " +"nombres aléatoires matériel" #. /flag:hypervisor #: modules/devices/x86/x86_data.c:143 @@ -3266,13 +4891,13 @@ msgstr "" #: modules/devices/x86/x86_data.c:145 msgctxt "x86-flag" msgid "Random Number Generator present (xstore)" -msgstr "" +msgstr "Générateur de chriffrement présent (xstore)" #. /flag:rng_en #: modules/devices/x86/x86_data.c:146 msgctxt "x86-flag" msgid "Random Number Generator enabled" -msgstr "" +msgstr "Générateur de chriffrement présent" #. /flag:ace #: modules/devices/x86/x86_data.c:147 @@ -3372,6 +4997,9 @@ msgid "" "legacy SSE instructions operate on unaligned data. Also depends on CR0 and " "Alignment Checking bit" msgstr "" +"indique si une exception de protection générale (#GP) est généréelorsque " +"certaines instructions SSE héritées fonctionnent sur des données non " +"alignées.Dépend aussi de CR0 et contrôle d'alignement des octets" #. /flag:3dnowprefetch #: modules/devices/x86/x86_data.c:164 @@ -3994,181 +5622,200 @@ msgctxt "x86-flag" msgid "IPI required to wake up remote CPU" msgstr "" +#. /bug:cpu_insecure & bug:cpu_meltdown +#: modules/devices/x86/x86_data.c:281 modules/devices/x86/x86_data.c:282 +msgctxt "x86-flag" +msgid "" +"CPU is affected by meltdown attack and needs kernel page table isolation" +msgstr "" + +#. /bug:spectre_v1 +#: modules/devices/x86/x86_data.c:283 +msgctxt "x86-flag" +msgid "CPU is affected by Spectre variant 1 attack with conditional branches" +msgstr "" + +#. /bug:spectre_v2 +#: modules/devices/x86/x86_data.c:284 +msgctxt "x86-flag" +msgid "CPU is affected by Spectre variant 2 attack with indirect branches" +msgstr "" + +#. /bug:spec_store_bypass +#: modules/devices/x86/x86_data.c:285 +msgctxt "x86-flag" +msgid "CPU is affected by speculative store bypass attack" +msgstr "" + +#. /bug:l1tf +#: modules/devices/x86/x86_data.c:286 +msgctxt "x86-flag" +msgid "CPU is affected by L1 Terminal Fault" +msgstr "" + #. /x86/kernel/cpu/powerflags.h #. /flag:pm:ts -#: modules/devices/x86/x86_data.c:283 +#: modules/devices/x86/x86_data.c:289 msgctxt "x86-flag" msgid "temperature sensor" msgstr "" #. /flag:pm:fid -#: modules/devices/x86/x86_data.c:284 +#: modules/devices/x86/x86_data.c:290 msgctxt "x86-flag" msgid "frequency id control" msgstr "" #. /flag:pm:vid -#: modules/devices/x86/x86_data.c:285 +#: modules/devices/x86/x86_data.c:291 msgctxt "x86-flag" msgid "voltage id control" msgstr "" #. /flag:pm:ttp -#: modules/devices/x86/x86_data.c:286 +#: modules/devices/x86/x86_data.c:292 msgctxt "x86-flag" msgid "thermal trip" msgstr "" #. /flag:pm:tm -#: modules/devices/x86/x86_data.c:287 +#: modules/devices/x86/x86_data.c:293 msgctxt "x86-flag" msgid "hardware thermal control" msgstr "" #. /flag:pm:stc -#: modules/devices/x86/x86_data.c:288 +#: modules/devices/x86/x86_data.c:294 msgctxt "x86-flag" msgid "software thermal control" msgstr "" #. /flag:pm:100mhzsteps -#: modules/devices/x86/x86_data.c:289 +#: modules/devices/x86/x86_data.c:295 msgctxt "x86-flag" msgid "100 MHz multiplier control" msgstr "" #. /flag:pm:hwpstate -#: modules/devices/x86/x86_data.c:290 +#: modules/devices/x86/x86_data.c:296 msgctxt "x86-flag" msgid "hardware P-state control" msgstr "" #. /flag:pm:cpb -#: modules/devices/x86/x86_data.c:291 +#: modules/devices/x86/x86_data.c:297 msgctxt "x86-flag" msgid "core performance boost" msgstr "" #. /flag:pm:eff_freq_ro -#: modules/devices/x86/x86_data.c:292 +#: modules/devices/x86/x86_data.c:298 msgctxt "x86-flag" msgid "Readonly aperf/mperf" msgstr "" #. /flag:pm:proc_feedback -#: modules/devices/x86/x86_data.c:293 +#: modules/devices/x86/x86_data.c:299 msgctxt "x86-flag" msgid "processor feedback interface" msgstr "" #. /flag:pm:acc_power -#: modules/devices/x86/x86_data.c:294 +#: modules/devices/x86/x86_data.c:300 msgctxt "x86-flag" msgid "accumulated power mechanism" msgstr "" -#: modules/network.c:59 +#: modules/network.c:61 msgid "Interfaces" msgstr "Interfaces" -#: modules/network.c:60 +#: modules/network.c:62 msgid "IP Connections" msgstr "Connections IP" -#: modules/network.c:61 +#: modules/network.c:63 msgid "Routing Table" msgstr "Table de Routage" -#: modules/network.c:62 modules/network.c:303 +#: modules/network.c:64 modules/network.c:309 msgid "ARP Table" msgstr "Table ARP" -#: modules/network.c:63 +#: modules/network.c:65 msgid "DNS Servers" msgstr "Serveurs DNS" -#: modules/network.c:64 +#: modules/network.c:66 msgid "Statistics" msgstr "Statistiques" -#: modules/network.c:65 +#: modules/network.c:67 msgid "Shared Directories" msgstr "Dossiers d'interopérabilités" -#: modules/network.c:304 modules/network.c:326 modules/network.c:357 -#: modules/network/net.c:477 +#: modules/network.c:310 modules/network.c:332 modules/network.c:363 +#: modules/network/net.c:472 msgid "IP Address" msgstr "Addresse IP" -#: modules/network.c:304 modules/network.c:357 modules/network.c:374 -msgid "Interface" -msgstr "" - -#: modules/network.c:304 +#: modules/network.c:310 msgid "MAC Address" -msgstr "" +msgstr "Adresse MAC" -#: modules/network.c:313 +#: modules/network.c:319 msgid "SAMBA" msgstr "" -#: modules/network.c:314 +#: modules/network.c:320 msgid "NFS" msgstr "" -#: modules/network.c:325 +#: modules/network.c:331 msgid "Name Servers" -msgstr "" +msgstr "Nom des Serveurs" -#: modules/network.c:340 +#: modules/network.c:346 msgid "Connections" msgstr "" -#: modules/network.c:341 +#: modules/network.c:347 msgid "Local Address" -msgstr "" - -#: modules/network.c:341 -msgid "Protocol" -msgstr "" +msgstr "Adresse Locale" -#: modules/network.c:341 +#: modules/network.c:347 msgid "Foreign Address" msgstr "" -#: modules/network.c:341 +#: modules/network.c:347 msgid "State" -msgstr "" +msgstr "Etat" -#: modules/network.c:357 +#: modules/network.c:363 msgid "Sent" msgstr "Envoyé" -#: modules/network.c:357 +#: modules/network.c:363 msgid "Received" msgstr "Reçue" -#: modules/network.c:373 +#: modules/network.c:379 msgid "IP routing table" msgstr "" -#: modules/network.c:374 +#: modules/network.c:380 msgid "Destination/Gateway" msgstr "" -#: modules/network.c:374 -msgid "Flags" -msgstr "" - -#: modules/network.c:374 modules/network/net.c:478 +#: modules/network.c:380 modules/network/net.c:473 msgid "Mask" msgstr "" -#: modules/network.c:402 +#: modules/network.c:408 msgid "Network" msgstr "Réseau" -#: modules/network.c:435 +#: modules/network.c:441 msgid "Gathers information about this computer's network connection" msgstr "Collecte des informations sur les connexions réseau de cet ordinateur" @@ -4205,7 +5852,7 @@ msgstr "" #: modules/network/net.c:78 msgctxt "wi-op-mode" msgid "(Unknown)" -msgstr "" +msgstr "(Inconnu)" #: modules/network/net.c:242 modules/network/net.c:262 #: modules/network/net.c:270 @@ -4248,7 +5895,7 @@ msgstr "" #: modules/network/net.c:252 msgctxt "net-if-type" msgid "Infrared" -msgstr "" +msgstr "InfraRouge" #: modules/network/net.c:253 modules/network/net.c:271 msgctxt "net-if-type" @@ -4308,12 +5955,12 @@ msgstr "" #: modules/network/net.c:265 msgctxt "net-if-type" msgid "Mesh Network" -msgstr "" +msgstr "Réseau Mesh" #: modules/network/net.c:266 msgctxt "net-if-type" msgid "Wireless Master Interface" -msgstr "" +msgstr "Principale Interface Sans Fil" #: modules/network/net.c:267 msgctxt "net-if-type" @@ -4328,102 +5975,135 @@ msgstr "" #: modules/network/net.c:275 msgctxt "net-if-type" msgid "(Unknown)" -msgstr "" +msgstr "(Inconnu)" -#: modules/network/net.c:348 modules/network/net.c:358 +#: modules/network/net.c:343 modules/network/net.c:353 msgid "Network Interfaces" -msgstr "" +msgstr "Interfaces Réseau" -#: modules/network/net.c:348 +#: modules/network/net.c:343 msgid "None Found" -msgstr "" - -#: modules/network/net.c:400 modules/network/net.c:422 -#: modules/network/net.c:423 -msgid "MiB" -msgstr "" +msgstr "Non Trouvé" -#: modules/network/net.c:414 +#: modules/network/net.c:409 msgid "Network Adapter Properties" msgstr "" -#: modules/network/net.c:415 +#: modules/network/net.c:410 msgid "Interface Type" -msgstr "" +msgstr "Type d'Interfaces" -#: modules/network/net.c:416 +#: modules/network/net.c:411 msgid "Hardware Address (MAC)" msgstr "" -#: modules/network/net.c:420 +#: modules/network/net.c:415 msgid "MTU" msgstr "" -#: modules/network/net.c:421 +#: modules/network/net.c:416 msgid "Transfer Details" msgstr "" -#: modules/network/net.c:422 +#: modules/network/net.c:417 msgid "Bytes Received" -msgstr "" +msgstr "Bytes reçues" -#: modules/network/net.c:423 +#: modules/network/net.c:418 msgid "Bytes Sent" -msgstr "" +msgstr "Bytes Envoyées" -#: modules/network/net.c:440 modules/network/net.c:462 -#: modules/network/net.c:463 +#: modules/network/net.c:435 modules/network/net.c:457 +#: modules/network/net.c:458 msgid "dBm" msgstr "" -#: modules/network/net.c:440 +#: modules/network/net.c:435 msgid "mW" msgstr "" -#: modules/network/net.c:454 +#: modules/network/net.c:449 msgid "Wireless Properties" msgstr "" -#: modules/network/net.c:455 +#: modules/network/net.c:450 msgid "Network Name (SSID)" -msgstr "" +msgstr "Nom du Réseau (SSID)" -#: modules/network/net.c:456 +#: modules/network/net.c:451 msgid "Bit Rate" msgstr "" -#: modules/network/net.c:456 -msgid "Mb/s" -msgstr "" - -#: modules/network/net.c:457 +#: modules/network/net.c:452 msgid "Transmission Power" msgstr "" -#: modules/network/net.c:459 -msgid "Status" -msgstr "" - -#: modules/network/net.c:460 +#: modules/network/net.c:455 msgid "Link Quality" msgstr "" -#: modules/network/net.c:461 +#: modules/network/net.c:456 msgid "Signal / Noise" msgstr "" -#: modules/network/net.c:476 +#: modules/network/net.c:471 msgid "Internet Protocol (IPv4)" -msgstr "" +msgstr "Protocol Internet (IPV4)" -#: modules/network/net.c:477 modules/network/net.c:478 -#: modules/network/net.c:480 +#: modules/network/net.c:472 modules/network/net.c:473 +#: modules/network/net.c:475 msgid "(Not set)" -msgstr "" +msgstr "(Aucun)" -#: modules/network/net.c:479 +#: modules/network/net.c:474 msgid "Broadcast Address" -msgstr "" +msgstr "Adresse Broadcast" + +#~ msgid "chooses a report format (text, html)" +#~ msgstr "choisir un format de rapport (texte, html)" + +#~ msgid "Couldn't find a Web browser to open URL %s." +#~ msgstr "Impossible de trouver un navigateur Web pour ouvrir l'URL %s." + +#~ msgid "CPU Blowfish" +#~ msgstr "Test CPU Blowfish" + +#~ msgid "CSharp (Mono, old)" +#~ msgstr "CSharp (Mono, old)" + +#~ msgid "CSharp (Mono)" +#~ msgstr "CSharp (Mono)" + +#~ msgid "DMI" +#~ msgstr "DMI" + +#~ msgid "Memory SPD" +#~ msgstr "Mémoire SPD" + +#~ msgid "" +#~ "[SPD]\n" +#~ "Please load the eeprom module to obtain information about memory SPD=\n" +#~ "[$ShellParam$]\n" +#~ "ReloadInterval=500\n" +#~ msgstr "" +#~ "[SPD]\n" +#~ "Télécharger le module eeprom pour avoir les informations de mémoire SPD=\n" +#~ "[$ShellParam$]\n" + +#~ msgid "Vendor=%s (%s)\n" +#~ msgstr "Vendeur=%s (%s)\n" + +#~ msgid "Unknown benchmark ``%s'' or libbenchmark.so not loaded" +#~ msgstr "Benchmark inconnu ``%s'' ou libbenchmark.so non chargé" + +#~ msgid "%s Module" +#~ msgstr "%s Module" + +#~ msgid "Monitor %d=%dx%d pixels\n" +#~ msgstr "Moniteur %d=%dx%d pixels\n" + +#~ msgid " (model unknown)" +#~ msgstr " (modèle inconnu)" -#~ msgid "Desktop Environment" -#~ msgstr "Environnement de bureau" +#~ msgid " (vendor unknown)" +#~ msgstr " (Fabricant inconnu)" diff --git a/po/hardinfo.pot b/po/hardinfo.pot index a2d37c65..3690889b 100644 --- a/po/hardinfo.pot +++ b/po/hardinfo.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-08-14 22:23-0500\n" +"POT-Creation-Date: 2019-10-24 15:16-0500\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -18,2417 +18,3995 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" -#. / %d will be latest year of copyright -#: hardinfo/hardinfo.c:49 -#, c-format -msgid "" -"Copyright (C) 2003-%d Leandro A. F. Pereira. See COPYING for details.\n" -"\n" +#: hardinfo/cpu_util.c:30 +msgid "Little Endian" msgstr "" -#: hardinfo/hardinfo.c:51 -#, c-format -msgid "" -"Compile-time options:\n" -" Release version: %s (%s)\n" -" BinReloc enabled: %s\n" -" Data prefix: %s\n" -" Library prefix: %s\n" -" Compiled for: %s\n" +#: hardinfo/cpu_util.c:32 +msgid "Big Endian" msgstr "" -#: hardinfo/hardinfo.c:57 hardinfo/hardinfo.c:58 modules/computer.c:605 -#: modules/devices/inputdevices.c:128 modules/devices/pci.c:112 -#: modules/devices/printers.c:138 -msgid "Yes" +#: hardinfo/cpu_util.c:184 hardinfo/cpu_util.c:195 modules/devices/gpu.c:200 +msgid "Frequency Scaling" msgstr "" -#: hardinfo/hardinfo.c:58 modules/computer.c:605 modules/devices/pci.c:112 -#: modules/devices/printers.c:138 -msgid "No" +#: hardinfo/cpu_util.c:185 modules/devices/gpu.c:201 +msgid "Minimum" msgstr "" -#: hardinfo/hardinfo.c:69 -#, c-format -msgid "" -"Failed to find runtime data.\n" -"\n" -"• Is HardInfo correctly installed?\n" -"• See if %s and %s exists and you have read permission." +#: hardinfo/cpu_util.c:185 hardinfo/cpu_util.c:186 hardinfo/cpu_util.c:187 +#: hardinfo/dt_util.c:589 modules/devices/gpu.c:201 modules/devices/gpu.c:202 +msgid "kHz" msgstr "" -#: hardinfo/hardinfo.c:76 -#, c-format -msgid "" -"Modules:\n" -"%-20s %-15s %-12s\n" +#: hardinfo/cpu_util.c:186 modules/devices/gpu.c:202 +msgid "Maximum" msgstr "" -#: hardinfo/hardinfo.c:77 -msgid "File Name" +#: hardinfo/cpu_util.c:187 +msgid "Current" msgstr "" -#: hardinfo/hardinfo.c:77 modules/computer.c:534 modules/computer.c:562 -#: modules/computer.c:630 modules/computer/languages.c:104 -#: modules/computer/modules.c:146 modules/devices/arm/processor.c:336 -#: modules/devices/ia64/processor.c:160 modules/devices/inputdevices.c:116 -#: modules/devices/pci.c:215 modules/devices/sh/processor.c:84 -#: modules/devices/x86/processor.c:455 modules/network.c:326 -msgid "Name" +#: hardinfo/cpu_util.c:188 modules/devices/gpu.c:203 +msgid "Transition Latency" msgstr "" -#: hardinfo/hardinfo.c:77 modules/computer.c:296 modules/computer.c:505 -#: modules/computer.c:507 modules/computer.c:595 modules/computer.c:603 -#: modules/devices/inputdevices.c:121 -msgid "Version" +#: hardinfo/cpu_util.c:188 modules/devices/gpu.c:203 +msgid "ns" msgstr "" -#: hardinfo/hardinfo.c:124 -#, c-format -msgid "Unknown benchmark ``%s'' or libbenchmark.so not loaded" +#: hardinfo/cpu_util.c:189 +msgid "Governor" msgstr "" -#: hardinfo/hardinfo.c:152 -msgid "Don't know what to do. Exiting." +#: hardinfo/cpu_util.c:190 hardinfo/cpu_util.c:196 modules/devices/gpu.c:153 +#: modules/devices/pci.c:134 modules/devices/usb.c:136 +msgid "Driver" msgstr "" -#: hardinfo/util.c:104 modules/computer/uptime.c:53 -#, c-format -msgid "%d day" -msgid_plural "%d days" -msgstr[0] "" -msgstr[1] "" - -#: hardinfo/util.c:105 modules/computer/uptime.c:54 -#, c-format -msgid "%d hour" -msgid_plural "%d hours" -msgstr[0] "" -msgstr[1] "" +#: hardinfo/cpu_util.c:202 modules/computer.c:737 +#: modules/devices/arm/processor.c:256 modules/devices/x86/processor.c:284 +#: modules/devices/x86/processor.c:388 modules/devices/x86/processor.c:524 +msgid "(Not Available)" +msgstr "" -#: hardinfo/util.c:106 modules/computer/uptime.c:55 -#, c-format -msgid "%d minute" -msgid_plural "%d minutes" -msgstr[0] "" -msgstr[1] "" +#: hardinfo/cpu_util.c:210 hardinfo/cpu_util.c:212 +msgid "Socket" +msgstr "" -#: hardinfo/util.c:107 -#, c-format -msgid "%d second" -msgid_plural "%d seconds" -msgstr[0] "" -msgstr[1] "" +#: hardinfo/cpu_util.c:215 hardinfo/cpu_util.c:217 modules/devices/gpu.c:149 +#: modules/devices/gpu.c:227 +msgid "Core" +msgstr "" -#: hardinfo/util.c:128 -#, c-format -msgid "%.1f B" +#: hardinfo/cpu_util.c:220 +msgid "Book" msgstr "" -#: hardinfo/util.c:130 -#, c-format -msgid "%.1f KiB" +#: hardinfo/cpu_util.c:222 +msgid "Drawer" msgstr "" -#: hardinfo/util.c:132 -#, c-format -msgid "%.1f MiB" +#: hardinfo/cpu_util.c:228 modules/devices/arm/processor.c:471 +#: modules/devices/x86/processor.c:750 +msgid "Topology" msgstr "" -#: hardinfo/util.c:134 -#, c-format -msgid "%.1f GiB" +#: hardinfo/cpu_util.c:229 +msgid "ID" msgstr "" -#: hardinfo/util.c:136 -#, c-format -msgid "%.1f TiB" +#: hardinfo/dmi_util.c:25 +msgid "BIOS Information" msgstr "" -#: hardinfo/util.c:138 -#, c-format -msgid "%.1f PiB" +#: hardinfo/dmi_util.c:26 modules/devices/parisc/processor.c:157 +msgid "System" msgstr "" -#: hardinfo/util.c:361 -msgid "Error" +#: hardinfo/dmi_util.c:27 +msgid "Base Board" msgstr "" -#: hardinfo/util.c:361 hardinfo/util.c:377 -msgid "Warning" +#: hardinfo/dmi_util.c:28 modules/devices/dmi.c:53 +msgid "Chassis" msgstr "" -#: hardinfo/util.c:376 -msgid "Fatal Error" +#: hardinfo/dmi_util.c:29 modules/computer.c:529 modules/computer.c:1000 +#: modules/devices/alpha/processor.c:87 modules/devices/arm/processor.c:341 +#: modules/devices.c:99 modules/devices/ia64/processor.c:159 +#: modules/devices/m68k/processor.c:83 modules/devices/mips/processor.c:74 +#: modules/devices/parisc/processor.c:154 modules/devices/ppc/processor.c:157 +#: modules/devices/riscv/processor.c:181 modules/devices/s390/processor.c:131 +#: modules/devices/sh/processor.c:83 modules/devices/sparc/processor.c:74 +#: modules/devices/x86/processor.c:646 +msgid "Processor" msgstr "" -#: hardinfo/util.c:401 -msgid "creates a report and prints to standard output" +#: hardinfo/dmi_util.c:30 +msgid "Memory Controller" msgstr "" -#: hardinfo/util.c:407 -msgid "chooses a report format (text, html)" +#: hardinfo/dmi_util.c:31 +msgid "Memory Module" msgstr "" -#: hardinfo/util.c:413 -msgid "run benchmark; requires benchmark.so to be loaded" +#: hardinfo/dmi_util.c:32 modules/devices/parisc/processor.c:163 +#: modules/devices/x86/processor.c:662 +msgid "Cache" msgstr "" -#: hardinfo/util.c:419 -msgid "lists modules" +#: hardinfo/dmi_util.c:33 +msgid "Port Connector" msgstr "" -#: hardinfo/util.c:425 -msgid "specify module to load" +#: hardinfo/dmi_util.c:34 +msgid "System Slots" msgstr "" -#: hardinfo/util.c:431 -msgid "automatically load module dependencies" +#: hardinfo/dmi_util.c:35 +msgid "On Board Devices" msgstr "" -#: hardinfo/util.c:438 -msgid "run in XML-RPC server mode" +#: hardinfo/dmi_util.c:36 +msgid "OEM Strings" msgstr "" -#: hardinfo/util.c:445 -msgid "shows program version and quit" +#: hardinfo/dmi_util.c:37 +msgid "System Configuration Options" msgstr "" -#: hardinfo/util.c:450 -msgid "- System Profiler and Benchmark tool" +#: hardinfo/dmi_util.c:38 +msgid "BIOS Language" msgstr "" -#: hardinfo/util.c:460 -#, c-format -msgid "" -"Unrecognized arguments.\n" -"Try ``%s --help'' for more information.\n" +#: hardinfo/dmi_util.c:39 +msgid "Group Associations" msgstr "" -#: hardinfo/util.c:526 -#, c-format -msgid "Couldn't find a Web browser to open URL %s." +#: hardinfo/dmi_util.c:40 +msgid "System Event Log" msgstr "" -#: hardinfo/util.c:875 -#, c-format -msgid "Module \"%s\" depends on module \"%s\", load it?" +#: hardinfo/dmi_util.c:41 +msgid "Physical Memory Array" msgstr "" -#: hardinfo/util.c:898 -#, c-format -msgid "Module \"%s\" depends on module \"%s\"." +#: hardinfo/dmi_util.c:42 +msgid "Memory Device" msgstr "" -#: hardinfo/util.c:943 -#, c-format -msgid "No module could be loaded. Check permissions on \"%s\" and try again." +#: hardinfo/dmi_util.c:43 +msgid "32-bit Memory Error" msgstr "" -#: hardinfo/util.c:947 -msgid "" -"No module could be loaded. Please use hardinfo -l to list all available " -"modules and try again with a valid module list." +#: hardinfo/dmi_util.c:44 +msgid "Memory Array Mapped Address" msgstr "" -#: hardinfo/util.c:1024 -#, c-format -msgid "Scanning: %s..." +#: hardinfo/dmi_util.c:45 +msgid "Memory Device Mapped Address" msgstr "" -#: hardinfo/util.c:1034 shell/shell.c:301 shell/shell.c:760 shell/shell.c:1795 -#: modules/benchmark.c:449 modules/benchmark.c:457 -msgid "Done." +#: hardinfo/dmi_util.c:46 +msgid "Built-in Pointing Device" msgstr "" -#: shell/callbacks.c:117 -#, c-format -msgid "%s Module" +#: hardinfo/dmi_util.c:47 +msgid "Portable Battery" msgstr "" -#: shell/callbacks.c:128 -#, c-format -msgid "" -"Written by %s\n" -"Licensed under %s" +#: hardinfo/dmi_util.c:48 +msgid "System Reset" msgstr "" -#: shell/callbacks.c:142 -#, c-format -msgid "No about information is associated with the %s module." +#: hardinfo/dmi_util.c:49 +msgid "Hardware Security" msgstr "" -#: shell/callbacks.c:158 -msgid "Author:" +#: hardinfo/dmi_util.c:50 +msgid "System Power Controls" msgstr "" -#: shell/callbacks.c:161 -msgid "Contributors:" +#: hardinfo/dmi_util.c:51 +msgid "Voltage Probe" msgstr "" -#: shell/callbacks.c:166 -msgid "Based on work by:" +#: hardinfo/dmi_util.c:52 +msgid "Cooling Device" msgstr "" -#: shell/callbacks.c:167 -msgid "MD5 implementation by Colin Plumb (see md5.c for details)" +#: hardinfo/dmi_util.c:53 +msgid "Temperature Probe" msgstr "" -#: shell/callbacks.c:168 -msgid "SHA1 implementation by Steve Reid (see sha1.c for details)" +#: hardinfo/dmi_util.c:54 +msgid "Electrical Current Probe" msgstr "" -#: shell/callbacks.c:169 -msgid "Blowfish implementation by Paul Kocher (see blowfich.c for details)" +#: hardinfo/dmi_util.c:55 +msgid "Out-of-band Remote Access" msgstr "" -#: shell/callbacks.c:170 -msgid "Raytracing benchmark by John Walker (see fbench.c for details)" +#: hardinfo/dmi_util.c:56 +msgid "Boot Integrity Services" msgstr "" -#: shell/callbacks.c:171 -msgid "FFT benchmark by Scott Robert Ladd (see fftbench.c for details)" +#: hardinfo/dmi_util.c:57 +msgid "System Boot" msgstr "" -#: shell/callbacks.c:172 -msgid "Some code partly based on x86cpucaps by Osamu Kayasono" +#: hardinfo/dmi_util.c:58 +msgid "64-bit Memory Error" msgstr "" -#: shell/callbacks.c:173 -msgid "Vendor list based on GtkSysInfo by Pissens Sebastien" +#: hardinfo/dmi_util.c:59 +msgid "Management Device" msgstr "" -#: shell/callbacks.c:174 -msgid "DMI support based on code by Stewart Adam" +#: hardinfo/dmi_util.c:60 +msgid "Management Device Component" msgstr "" -#: shell/callbacks.c:175 -msgid "SCSI support based on code by Pascal F. Martin" +#: hardinfo/dmi_util.c:61 +msgid "Management Device Threshold Data" msgstr "" -#: shell/callbacks.c:180 -msgid "Tango Project" +#: hardinfo/dmi_util.c:62 +msgid "Memory Channel" msgstr "" -#: shell/callbacks.c:181 -msgid "The GNOME Project" +#: hardinfo/dmi_util.c:63 +msgid "IPMI Device" msgstr "" -#: shell/callbacks.c:182 -msgid "VMWare, Inc. (USB icon from VMWare Workstation 6)" +#: hardinfo/dmi_util.c:64 +msgid "Power Supply" msgstr "" -#: shell/callbacks.c:200 -msgid "System information and benchmark tool" +#: hardinfo/dmi_util.c:65 +msgid "Additional Information" msgstr "" -#: shell/callbacks.c:205 -msgid "" -"HardInfo is free software; you can redistribute it and/or modify it under " -"the terms of the GNU General Public License as published by the Free " -"Software Foundation, version 2.\n" -"\n" -"This program is distributed in the hope that it will be useful, but WITHOUT " -"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or " -"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for " -"more details.\n" -"\n" -"You should have received a copy of the GNU General Public License along with " -"this program; if not, write to the Free Software Foundation, Inc., 51 " -"Franklin St, Fifth Floor, Boston, MA 02110-1301 USA" +#: hardinfo/dmi_util.c:66 +msgid "Onboard Device" msgstr "" -#: shell/callbacks.c:220 -msgid "translator-credits" +#: hardinfo/dmi_util.c:226 +msgid "Invalid chassis type (0)" msgstr "" -#: shell/menu.c:35 -msgid "_Information" +#: hardinfo/dmi_util.c:227 hardinfo/dmi_util.c:228 +msgid "Unknown chassis type" msgstr "" -#: shell/menu.c:36 -msgid "_Remote" +#: hardinfo/dmi_util.c:229 +msgid "Desktop" msgstr "" -#: shell/menu.c:37 -msgid "_View" +#: hardinfo/dmi_util.c:230 +msgid "Low-profile Desktop" msgstr "" -#: shell/menu.c:38 -msgid "_Help" +#: hardinfo/dmi_util.c:231 +msgid "Pizza Box" msgstr "" -#: shell/menu.c:39 -msgid "About _Modules" +#: hardinfo/dmi_util.c:232 +msgid "Mini Tower" msgstr "" -#: shell/menu.c:43 -msgid "Generate _Report" +#: hardinfo/dmi_util.c:233 +msgid "Tower" msgstr "" -#: shell/menu.c:48 -msgid "_Network Updater..." +#: hardinfo/dmi_util.c:234 +msgid "Portable" msgstr "" -#: shell/menu.c:53 -msgid "_Open..." +#: hardinfo/dmi_util.c:235 modules/computer.c:391 modules/computer.c:400 +#: modules/computer.c:422 +msgid "Laptop" msgstr "" -#: shell/menu.c:58 -msgid "_Copy to Clipboard" +#: hardinfo/dmi_util.c:236 +msgid "Notebook" msgstr "" -#: shell/menu.c:59 -msgid "Copy to clipboard" +#: hardinfo/dmi_util.c:237 +msgid "Handheld" msgstr "" -#: shell/menu.c:63 -msgid "_Refresh" +#: hardinfo/dmi_util.c:238 +msgid "Docking Station" msgstr "" -#: shell/menu.c:68 -msgid "_Open HardInfo Web Site" +#: hardinfo/dmi_util.c:239 +msgid "All-in-one" msgstr "" -#: shell/menu.c:73 -msgid "_Report bug" +#: hardinfo/dmi_util.c:240 +msgid "Subnotebook" msgstr "" -#: shell/menu.c:78 -msgid "_About HardInfo" +#: hardinfo/dmi_util.c:241 +msgid "Space-saving" msgstr "" -#: shell/menu.c:79 -msgid "Displays program version information" +#: hardinfo/dmi_util.c:242 +msgid "Lunch Box" msgstr "" -#: shell/menu.c:83 -msgid "_Quit" +#: hardinfo/dmi_util.c:243 +msgid "Main Server Chassis" msgstr "" -#: shell/menu.c:90 -msgid "_Side Pane" +#: hardinfo/dmi_util.c:244 +msgid "Expansion Chassis" msgstr "" -#: shell/menu.c:91 -msgid "Toggles side pane visibility" +#: hardinfo/dmi_util.c:245 +msgid "Sub Chassis" msgstr "" -#: shell/menu.c:94 -msgid "_Toolbar" +#: hardinfo/dmi_util.c:246 +msgid "Bus Expansion Chassis" msgstr "" -#: shell/report.c:494 shell/report.c:502 -msgid "Save File" +#: hardinfo/dmi_util.c:247 +msgid "Peripheral Chassis" msgstr "" -#: shell/report.c:629 -msgid "Cannot create ReportContext. Programming bug?" +#: hardinfo/dmi_util.c:248 +msgid "RAID Chassis" msgstr "" -#: shell/report.c:648 -msgid "Open the report with your web browser?" +#: hardinfo/dmi_util.c:249 +msgid "Rack Mount Chassis" msgstr "" -#: shell/report.c:682 -msgid "Generating report..." +#: hardinfo/dmi_util.c:250 +msgid "Sealed-case PC" msgstr "" -#: shell/report.c:692 -msgid "Report saved." +#: hardinfo/dmi_util.c:251 +msgid "Multi-system" msgstr "" -#: shell/report.c:694 -msgid "Error while creating the report." +#: hardinfo/dmi_util.c:252 +msgid "CompactPCI" msgstr "" -#: shell/report.c:796 -msgid "Generate Report" +#: hardinfo/dmi_util.c:253 +msgid "AdvancedTCA" msgstr "" -#: shell/report.c:821 -msgid "" -"Generate Report\n" -"Please choose the information that you wish to view in your report:" +#: hardinfo/dmi_util.c:254 +msgid "Blade" msgstr "" -#: shell/report.c:893 -msgid "Select _None" +#: hardinfo/dmi_util.c:255 +msgid "Blade Enclosing" msgstr "" -#: shell/report.c:904 -msgid "Select _All" +#: hardinfo/dmi_util.c:256 +msgid "Tablet" msgstr "" -#: shell/report.c:929 shell/syncmanager.c:748 -msgid "_Cancel" +#: hardinfo/dmi_util.c:257 +msgid "Convertible" msgstr "" -#: shell/report.c:939 -msgid "_Generate" +#: hardinfo/dmi_util.c:258 +msgid "Detachable" msgstr "" -#: shell/shell.c:402 -#, c-format -msgid "%s - System Information" +#: hardinfo/dmi_util.c:259 +msgid "IoT Gateway" msgstr "" -#: shell/shell.c:407 -msgid "System Information" +#: hardinfo/dmi_util.c:260 +msgid "Embedded PC" msgstr "" -#: shell/shell.c:747 -msgid "Loading modules..." +#: hardinfo/dmi_util.c:261 +msgid "Mini PC" msgstr "" -#: shell/shell.c:1660 -#, c-format -msgid "%s → Summary" +#: hardinfo/dmi_util.c:262 +msgid "Stick PC" msgstr "" -#: shell/shell.c:1769 -msgid "Updating..." +#: hardinfo/dt_util.c:1179 +msgid "phandle Map" msgstr "" -#: shell/syncmanager.c:69 -msgid "" -"Synchronize with Central Database\n" -"The following information may be synchronized with the HardInfo central " -"database." +#: hardinfo/dt_util.c:1180 +msgid "Alias Map" msgstr "" -#: shell/syncmanager.c:72 -msgid "" -"Synchronizing\n" -"This may take some time." +#: hardinfo/dt_util.c:1181 +msgid "Symbol Map" msgstr "" -#: shell/syncmanager.c:132 -msgid "" -"HardInfo was compiled without libsoup support. (Network Updater requires it.)" -msgstr "" - -#: shell/syncmanager.c:161 shell/syncmanager.c:189 +#. / %d will be latest year of copyright +#: hardinfo/hardinfo.c:50 #, c-format -msgid "%s (error #%d)" -msgstr "" - -#: shell/syncmanager.c:170 shell/syncmanager.c:198 -msgid "Could not parse XML-RPC response" +msgid "" +"Copyright (C) 2003-%d L. A. F. Pereira. See COPYING for details.\n" +"\n" msgstr "" -#: shell/syncmanager.c:280 +#: hardinfo/hardinfo.c:52 #, c-format msgid "" -"Server says it supports API version %d, but this version of HardInfo only " -"supports API version %d." -msgstr "" - -#: shell/syncmanager.c:375 -msgid "Contacting HardInfo Central Database" -msgstr "" - -#: shell/syncmanager.c:376 -msgid "Cleaning up" +"Compile-time options:\n" +" Release version: %s (%s)\n" +" BinReloc enabled: %s\n" +" Data prefix: %s\n" +" Library prefix: %s\n" +" Compiled for: %s\n" msgstr "" -#: shell/syncmanager.c:493 -msgid "(canceled)" +#: hardinfo/hardinfo.c:58 hardinfo/hardinfo.c:59 modules/computer.c:785 +#: modules/computer/modules.c:131 modules/computer/modules.c:132 +#: modules/devices/inputdevices.c:123 modules/devices/printers.c:138 +#: modules/devices/spd-decode.c:903 +msgid "Yes" msgstr "" -#: shell/syncmanager.c:510 -msgid "(failed)" +#: hardinfo/hardinfo.c:59 modules/computer.c:785 modules/computer/modules.c:131 +#: modules/computer/modules.c:132 modules/devices/printers.c:138 +#: modules/devices/spd-decode.c:900 +msgid "No" msgstr "" -#: shell/syncmanager.c:521 +#: hardinfo/hardinfo.c:70 #, c-format msgid "" -"Failed while performing \"%s\". Please file a bug report if this problem " -"persists. (Use the Help→Report bug option.)\n" +"Failed to find runtime data.\n" "\n" -"Details: %s" +"• Is HardInfo correctly installed?\n" +"• See if %s and %s exists and you have read permission." msgstr "" -#: shell/syncmanager.c:530 +#: hardinfo/hardinfo.c:77 #, c-format msgid "" -"Failed while performing \"%s\". Please file a bug report if this problem " -"persists. (Use the Help→Report bug option.)" +"Modules:\n" +"%-20s %-15s %-12s\n" msgstr "" -#: shell/syncmanager.c:658 -msgid "Network Updater" +#: hardinfo/hardinfo.c:78 +msgid "File Name" msgstr "" -#: shell/syncmanager.c:757 -msgid "_Synchronize" +#: hardinfo/hardinfo.c:78 modules/computer.c:666 modules/computer.c:694 +#: modules/computer.c:815 modules/computer/languages.c:95 +#: modules/computer/modules.c:149 modules/devices/arm/processor.c:469 +#: modules/devices/dmi.c:37 modules/devices/dmi.c:48 modules/devices/gpu.c:233 +#: modules/devices/ia64/processor.c:160 modules/devices/inputdevices.c:111 +#: modules/devices/monitors.c:399 modules/devices/monitors.c:502 +#: modules/devices/sh/processor.c:84 modules/devices/x86/processor.c:749 +#: modules/network.c:332 +msgid "Name" msgstr "" -#: modules/benchmark.c:52 -msgid "CPU Blowfish" +#: hardinfo/hardinfo.c:78 modules/computer.c:347 modules/computer.c:572 +#: modules/computer.c:574 modules/computer.c:743 modules/computer/modules.c:151 +#: modules/devices/dmi.c:40 modules/devices/dmi.c:46 modules/devices/dmi.c:50 +#: modules/devices/dmi.c:56 modules/devices/firmware.c:105 +#: modules/devices/inputdevices.c:116 modules/devices/monitors.c:405 +msgid "Version" msgstr "" -#: modules/benchmark.c:53 -msgid "CPU CryptoHash" +#: hardinfo/hardinfo.c:129 +#, c-format +msgid "Unknown benchmark ``%s'' or benchmark.so not loaded" msgstr "" -#: modules/benchmark.c:54 -msgid "CPU Fibonacci" +#: hardinfo/hardinfo.c:159 +msgid "Don't know what to do. Exiting." msgstr "" -#: modules/benchmark.c:55 -msgid "CPU N-Queens" +#: hardinfo/usb_util.c:290 modules/devices/devicetree.c:91 +#: modules/devices/devicetree.c:92 modules/devices/monitors.c:407 +#: modules/devices/storage.c:246 +msgid "(None)" msgstr "" -#: modules/benchmark.c:56 -msgid "CPU Zlib" -msgstr "" +#: hardinfo/util.c:104 modules/computer/uptime.c:54 +#, c-format +msgid "%d day" +msgid_plural "%d days" +msgstr[0] "" +msgstr[1] "" -#: modules/benchmark.c:57 -msgid "FPU FFT" -msgstr "" +#: hardinfo/util.c:105 modules/computer/uptime.c:55 +#, c-format +msgid "%d hour" +msgid_plural "%d hours" +msgstr[0] "" +msgstr[1] "" -#: modules/benchmark.c:58 -msgid "FPU Raytracing" -msgstr "" +#: hardinfo/util.c:106 modules/computer/uptime.c:56 +#, c-format +msgid "%d minute" +msgid_plural "%d minutes" +msgstr[0] "" +msgstr[1] "" -#: modules/benchmark.c:60 -msgid "GPU Drawing" +#: hardinfo/util.c:107 +#, c-format +msgid "%d second" +msgid_plural "%d seconds" +msgstr[0] "" +msgstr[1] "" + +#: hardinfo/util.c:128 +#, c-format +msgid "%.1f B" msgstr "" -#: modules/benchmark.c:239 modules/benchmark.c:255 -msgid "CPU Config" +#: hardinfo/util.c:130 +#, c-format +msgid "%.1f KiB" msgstr "" -#: modules/benchmark.c:239 modules/benchmark.c:255 -msgid "Results" +#: hardinfo/util.c:132 +#, c-format +msgid "%.1f MiB" msgstr "" -#: modules/benchmark.c:239 modules/benchmark.c:255 modules/computer.c:751 -#: modules/devices/sparc/processor.c:75 -msgid "CPU" +#: hardinfo/util.c:134 +#, c-format +msgid "%.1f GiB" msgstr "" -#: modules/benchmark.c:381 +#: hardinfo/util.c:136 #, c-format -msgid "Benchmarking: %s." +msgid "%.1f TiB" msgstr "" -#: modules/benchmark.c:395 -msgid "Benchmarking. Please do not move your mouse or press any keys." +#: hardinfo/util.c:138 +#, c-format +msgid "%.1f PiB" msgstr "" -#: modules/benchmark.c:399 -msgid "Cancel" +#: hardinfo/util.c:361 +msgid "Error" msgstr "" -#: modules/benchmark.c:536 -msgid "Results in MiB/second. Higher is better." +#: hardinfo/util.c:361 hardinfo/util.c:377 +msgid "Warning" msgstr "" -#: modules/benchmark.c:540 -msgid "Results in HIMarks. Higher is better." +#: hardinfo/util.c:376 +msgid "Fatal Error" msgstr "" -#: modules/benchmark.c:547 -msgid "Results in seconds. Lower is better." +#: hardinfo/util.c:406 +msgid "creates a report and prints to standard output" msgstr "" -#: modules/benchmark.c:555 -msgid "Benchmarks" +#: hardinfo/util.c:412 +msgid "chooses a report format ([text], html)" msgstr "" -#: modules/benchmark.c:573 -msgid "Perform tasks and compare with other systems" +#: hardinfo/util.c:418 +msgid "run benchmark; requires benchmark.so to be loaded" msgstr "" -#: modules/benchmark.c:663 -msgid "Send benchmark results" +#: hardinfo/util.c:424 +msgid "note attached to benchmark results" msgstr "" -#: modules/benchmark.c:668 -msgid "Receive benchmark results" +#: hardinfo/util.c:430 +msgid "benchmark result format ([short], conf, shell)" msgstr "" -#: modules/computer/alsa.c:26 modules/computer.c:489 -msgid "Audio Devices" +#: hardinfo/util.c:436 +msgid "" +"maximum number of benchmark results to include (-1 for no limit, default is " +"10)" msgstr "" -#: modules/computer/alsa.c:34 -msgid "Audio Adapter" +#: hardinfo/util.c:442 +msgid "lists modules" msgstr "" -#: modules/computer/boots.c:33 modules/computer.c:73 modules/computer.c:546 -msgid "Boots" +#: hardinfo/util.c:448 +msgid "specify module to load" msgstr "" -#: modules/computer.c:70 -msgid "Summary" +#: hardinfo/util.c:454 +msgid "automatically load module dependencies" msgstr "" -#: modules/computer.c:71 modules/computer.c:476 modules/computer.c:750 -msgid "Operating System" +#: hardinfo/util.c:461 +msgid "run in XML-RPC server mode" msgstr "" -#: modules/computer.c:72 -msgid "Kernel Modules" +#: hardinfo/util.c:468 +msgid "shows program version and quit" msgstr "" -#: modules/computer.c:74 -msgid "Languages" +#: hardinfo/util.c:474 +msgid "do not run benchmarks" msgstr "" -#: modules/computer.c:75 -msgid "Filesystems" +#: hardinfo/util.c:480 +msgid "show all details" msgstr "" -#: modules/computer.c:76 modules/computer.c:481 modules/computer.c:590 -msgid "Display" +#: hardinfo/util.c:485 +msgid "- System Profiler and Benchmark tool" msgstr "" -#: modules/computer.c:77 modules/computer/environment.c:32 -msgid "Environment Variables" +#: hardinfo/util.c:495 +#, c-format +msgid "" +"Unrecognized arguments.\n" +"Try ``%s --help'' for more information.\n" msgstr "" -#: modules/computer.c:79 -msgid "Development" +#: hardinfo/util.c:903 +#, c-format +msgid "Module \"%s\" depends on module \"%s\", load it?" msgstr "" -#: modules/computer.c:81 modules/computer.c:617 -msgid "Users" +#: hardinfo/util.c:926 +#, c-format +msgid "Module \"%s\" depends on module \"%s\"." msgstr "" -#: modules/computer.c:82 -msgid "Groups" +#: hardinfo/util.c:971 +#, c-format +msgid "No module could be loaded. Check permissions on \"%s\" and try again." msgstr "" -#: modules/computer.c:104 modules/computer.c:473 modules/devices.c:96 -#: modules/devices/pci.c:149 -msgid "Memory" +#: hardinfo/util.c:975 +msgid "" +"No module could be loaded. Please use hardinfo -l to list all available " +"modules and try again with a valid module list." msgstr "" -#: modules/computer.c:106 +#: hardinfo/util.c:1030 #, c-format -msgid "%dMB (%dMB used)" +msgid "Scanning: %s..." msgstr "" -#: modules/computer.c:108 modules/computer.c:520 -msgid "Uptime" +#: hardinfo/util.c:1040 shell/shell.c:310 shell/shell.c:795 shell/shell.c:1962 +#: modules/benchmark.c:583 modules/benchmark.c:591 +msgid "Done." msgstr "" -#: modules/computer.c:110 modules/computer.c:478 -msgid "Date/Time" +#: hardinfo/vendor.c:440 modules/computer.c:573 modules/computer.c:765 +#: modules/computer/os.c:79 modules/computer/os.c:263 modules/computer/os.c:300 +#: modules/computer/os.c:499 modules/computer/os.c:569 modules/devices.c:359 +#: modules/devices.c:505 modules/devices/printers.c:99 +#: modules/devices/printers.c:106 modules/devices/printers.c:116 +#: modules/devices/printers.c:131 modules/devices/printers.c:140 +#: modules/devices/printers.c:243 modules/devices/spd-decode.c:312 +#: modules/devices/usb.c:146 +msgid "Unknown" msgstr "" -#: modules/computer.c:115 modules/computer.c:521 -msgid "Load Average" +#: shell/callbacks.c:128 +#, c-format +msgid "" +"Written by %s\n" +"Licensed under %s" msgstr "" -#: modules/computer.c:117 modules/computer.c:522 -msgid "Available entropy in /dev/random" +#: shell/callbacks.c:142 +#, c-format +msgid "No about information is associated with the %s module." msgstr "" -#: modules/computer.c:203 -msgid "Scripting Languages" +#: shell/callbacks.c:158 +msgid "Author:" msgstr "" -#: modules/computer.c:204 -msgid "Gambas3 (gbr3)" +#: shell/callbacks.c:161 +msgid "Contributors:" msgstr "" -#: modules/computer.c:205 -msgid "Python" +#: shell/callbacks.c:167 +msgid "Based on work by:" msgstr "" -#: modules/computer.c:206 -msgid "Python2" +#: shell/callbacks.c:168 +msgid "MD5 implementation by Colin Plumb (see md5.c for details)" msgstr "" -#: modules/computer.c:207 -msgid "Python3" +#: shell/callbacks.c:169 +msgid "SHA1 implementation by Steve Reid (see sha1.c for details)" msgstr "" -#: modules/computer.c:208 -msgid "Perl" +#: shell/callbacks.c:170 +msgid "Blowfish implementation by Paul Kocher (see blowfich.c for details)" msgstr "" -#: modules/computer.c:209 -msgid "Perl6 (VM)" +#: shell/callbacks.c:171 +msgid "Raytracing benchmark by John Walker (see fbench.c for details)" msgstr "" -#: modules/computer.c:210 -msgid "Perl6" +#: shell/callbacks.c:172 +msgid "FFT benchmark by Scott Robert Ladd (see fftbench.c for details)" msgstr "" -#: modules/computer.c:211 -msgid "PHP" +#: shell/callbacks.c:173 +msgid "Some code partly based on x86cpucaps by Osamu Kayasono" msgstr "" -#: modules/computer.c:212 -msgid "Ruby" +#: shell/callbacks.c:174 +msgid "Vendor list based on GtkSysInfo by Pissens Sebastien" msgstr "" -#: modules/computer.c:213 -msgid "Bash" +#: shell/callbacks.c:175 +msgid "DMI support based on code by Stewart Adam" msgstr "" -#: modules/computer.c:214 -msgid "Compilers" +#: shell/callbacks.c:176 +msgid "SCSI support based on code by Pascal F. Martin" msgstr "" -#: modules/computer.c:215 -msgid "C (GCC)" +#: shell/callbacks.c:181 +msgid "Tango Project" msgstr "" -#: modules/computer.c:216 -msgid "C (Clang)" +#: shell/callbacks.c:182 +msgid "The GNOME Project" msgstr "" -#: modules/computer.c:217 -msgid "D (dmd)" +#: shell/callbacks.c:183 +msgid "VMWare, Inc. (USB icon from VMWare Workstation 6)" msgstr "" -#: modules/computer.c:218 -msgid "Gambas3 (gbc3)" +#: shell/callbacks.c:201 +msgid "System information and benchmark tool" msgstr "" -#: modules/computer.c:219 -msgid "Java" +#: shell/callbacks.c:206 +msgid "" +"HardInfo is free software; you can redistribute it and/or modify it under " +"the terms of the GNU General Public License as published by the Free " +"Software Foundation, version 2.\n" +"\n" +"This program is distributed in the hope that it will be useful, but WITHOUT " +"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or " +"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for " +"more details.\n" +"\n" +"You should have received a copy of the GNU General Public License along with " +"this program; if not, write to the Free Software Foundation, Inc., 51 " +"Franklin St, Fifth Floor, Boston, MA 02110-1301 USA" msgstr "" -#: modules/computer.c:220 -msgid "CSharp (Mono, old)" +#: shell/callbacks.c:221 +msgid "translator-credits" msgstr "" -#: modules/computer.c:221 -msgid "CSharp (Mono)" +#: shell/menu.c:43 +msgid "_Information" msgstr "" -#: modules/computer.c:222 -msgid "Vala" +#: shell/menu.c:44 +msgid "_Remote" msgstr "" -#: modules/computer.c:223 -msgid "Haskell (GHC)" +#: shell/menu.c:45 +msgid "_View" msgstr "" -#: modules/computer.c:224 -msgid "FreePascal" +#: shell/menu.c:46 +msgid "_Help" msgstr "" -#: modules/computer.c:225 -msgid "Go" +#: shell/menu.c:47 +msgid "About _Modules" msgstr "" -#: modules/computer.c:226 -msgid "Tools" +#: shell/menu.c:51 +msgid "Generate _Report" msgstr "" -#: modules/computer.c:227 -msgid "make" +#: shell/menu.c:56 +msgid "_Network Updater..." msgstr "" -#: modules/computer.c:228 -msgid "GDB" +#: shell/menu.c:61 +msgid "_Open..." msgstr "" -#: modules/computer.c:229 -msgid "strace" +#: shell/menu.c:66 +msgid "_Copy to Clipboard" msgstr "" -#: modules/computer.c:230 -msgid "valgrind" +#: shell/menu.c:67 +msgid "Copy to clipboard" msgstr "" -#: modules/computer.c:231 -msgid "QMake" +#: shell/menu.c:71 +msgid "_Refresh" msgstr "" -#: modules/computer.c:232 -msgid "CMake" +#: shell/menu.c:76 +msgid "_Open HardInfo Web Site" msgstr "" -#: modules/computer.c:233 -msgid "Gambas3 IDE" +#: shell/menu.c:81 +msgid "_Report bug" msgstr "" -#: modules/computer.c:274 -msgid "Not found" +#: shell/menu.c:86 +msgid "_About HardInfo" msgstr "" -#: modules/computer.c:279 -#, c-format -msgid "Detecting version: %s" +#: shell/menu.c:87 +msgid "Displays program version information" msgstr "" -#: modules/computer.c:296 -msgid "Program" +#: shell/menu.c:91 +msgid "_Quit" msgstr "" -#: modules/computer.c:308 -msgid "Invalid chassis type (0)" +#: shell/menu.c:98 +msgid "_Side Pane" msgstr "" -#: modules/computer.c:309 modules/computer.c:310 -msgid "Unknown chassis type" +#: shell/menu.c:99 +msgid "Toggles side pane visibility" msgstr "" -#: modules/computer.c:311 -msgid "Desktop" +#: shell/menu.c:102 +msgid "_Toolbar" msgstr "" -#: modules/computer.c:312 -msgid "Low-profile Desktop" +#: shell/report.c:769 shell/report.c:777 +msgid "Save File" msgstr "" -#: modules/computer.c:313 -msgid "Pizza Box" +#: shell/report.c:772 shell/report.c:1243 shell/syncmanager.c:748 +msgid "_Cancel" msgstr "" -#: modules/computer.c:314 -msgid "Mini Tower" +#: shell/report.c:774 +msgid "_Save" msgstr "" -#: modules/computer.c:315 -msgid "Tower" +#: shell/report.c:943 +msgid "Cannot create ReportContext. Programming bug?" msgstr "" -#: modules/computer.c:316 -msgid "Portable" +#: shell/report.c:962 +msgid "Open the report with your web browser?" msgstr "" -#: modules/computer.c:317 modules/computer.c:341 modules/computer.c:350 -#: modules/computer.c:372 -msgid "Laptop" +#: shell/report.c:965 +msgid "_No" msgstr "" -#: modules/computer.c:318 -msgid "Notebook" +#: shell/report.c:966 +msgid "_Open" msgstr "" -#: modules/computer.c:319 -msgid "Handheld" +#: shell/report.c:996 +msgid "Generating report..." msgstr "" -#: modules/computer.c:320 -msgid "Docking Station" +#: shell/report.c:1006 +msgid "Report saved." msgstr "" -#: modules/computer.c:321 -msgid "All-in-one" +#: shell/report.c:1008 +msgid "Error while creating the report." msgstr "" -#: modules/computer.c:322 -msgid "Subnotebook" +#: shell/report.c:1110 +msgid "Generate Report" msgstr "" -#: modules/computer.c:323 -msgid "Space-saving" +#: shell/report.c:1135 +msgid "" +"Generate Report\n" +"Please choose the information that you wish to view in your report:" msgstr "" -#: modules/computer.c:324 -msgid "Lunch Box" +#: shell/report.c:1207 +msgid "Select _None" msgstr "" -#: modules/computer.c:325 -msgid "Main Server Chassis" +#: shell/report.c:1218 +msgid "Select _All" msgstr "" -#: modules/computer.c:326 -msgid "Expansion Chassis" +#: shell/report.c:1253 +msgid "_Generate" msgstr "" -#: modules/computer.c:327 -msgid "Sub Chassis" +#: shell/shell.c:407 +#, c-format +msgid "%s - System Information" msgstr "" -#: modules/computer.c:328 -msgid "Bus Expansion Chassis" +#: shell/shell.c:412 +msgid "System Information" msgstr "" -#: modules/computer.c:329 -msgid "Peripheral Chassis" +#: shell/shell.c:782 +msgid "Loading modules..." msgstr "" -#: modules/computer.c:330 -msgid "RAID Chassis" +#: shell/shell.c:1828 +#, c-format +msgid "%s → Summary" msgstr "" -#: modules/computer.c:331 -msgid "Rack Mount Chassis" +#: shell/shell.c:1936 +msgid "Updating..." msgstr "" -#: modules/computer.c:332 -msgid "Sealed-case PC" +#: shell/syncmanager.c:69 +msgid "" +"Synchronize with Central Database\n" +"The following information may be synchronized with the HardInfo central " +"database." msgstr "" -#. /proc/apm -#. FIXME: use dmidecode if available to get chassis type -#: modules/computer.c:386 -msgid "Unknown physical machine type" +#: shell/syncmanager.c:72 +msgid "" +"Synchronizing\n" +"This may take some time." msgstr "" -#: modules/computer.c:470 modules/computer.c:709 -msgid "Computer" +#: shell/syncmanager.c:132 +msgid "" +"HardInfo was compiled without libsoup support. (Network Updater requires it.)" msgstr "" -#: modules/computer.c:471 modules/devices/alpha/processor.c:87 -#: modules/devices/arm/processor.c:236 modules/devices.c:95 -#: modules/devices/ia64/processor.c:159 modules/devices/m68k/processor.c:83 -#: modules/devices/mips/processor.c:74 modules/devices/parisc/processor.c:154 -#: modules/devices/ppc/processor.c:157 modules/devices/riscv/processor.c:181 -#: modules/devices/s390/processor.c:131 modules/devices/sh/processor.c:83 -#: modules/devices/sparc/processor.c:74 modules/devices/x86/processor.c:409 -msgid "Processor" +#: shell/syncmanager.c:161 shell/syncmanager.c:189 +#, c-format +msgid "%s (error #%d)" msgstr "" -#: modules/computer.c:474 -msgid "Machine Type" +#: shell/syncmanager.c:170 shell/syncmanager.c:198 +msgid "Could not parse XML-RPC response" msgstr "" -#: modules/computer.c:477 modules/computer.c:514 -msgid "User Name" +#: shell/syncmanager.c:280 +#, c-format +msgid "" +"Server says it supports API version %d, but this version of HardInfo only " +"supports API version %d." msgstr "" -#: modules/computer.c:482 modules/computer.c:591 -msgid "Resolution" +#: shell/syncmanager.c:375 +msgid "Contacting HardInfo Central Database" msgstr "" -#: modules/computer.c:483 modules/computer.c:592 -#, c-format -msgid "%dx%d pixels" +#: shell/syncmanager.c:376 +msgid "Cleaning up" msgstr "" -#: modules/computer.c:485 -msgid "OpenGL Renderer" +#: shell/syncmanager.c:493 +msgid "(canceled)" msgstr "" -#: modules/computer.c:486 -msgid "X11 Vendor" +#: shell/syncmanager.c:510 +msgid "(failed)" msgstr "" -#: modules/computer.c:491 modules/devices.c:102 -msgid "Input Devices" +#: shell/syncmanager.c:521 +#, c-format +msgid "" +"Failed while performing \"%s\". Please file a bug report if this problem " +"persists. (Use the Help→Report bug option.)\n" +"\n" +"Details: %s" msgstr "" -#: modules/computer.c:493 modules/computer.c:752 modules/devices.c:99 -msgid "Printers" +#: shell/syncmanager.c:530 +#, c-format +msgid "" +"Failed while performing \"%s\". Please file a bug report if this problem " +"persists. (Use the Help→Report bug option.)" msgstr "" -#: modules/computer.c:495 modules/computer.c:752 modules/devices.c:103 -msgid "Storage" +#: shell/syncmanager.c:658 +msgid "Network Updater" msgstr "" -#: modules/computer.c:506 -msgid "Kernel" +#: shell/syncmanager.c:757 +msgid "_Synchronize" msgstr "" -#: modules/computer.c:508 -msgid "C Library" +#: modules/benchmark/benches.c:82 +msgid "CPU Blowfish (Single-thread)" msgstr "" -#: modules/computer.c:509 -msgid "Distribution" +#: modules/benchmark/benches.c:84 +msgid "CPU Blowfish (Multi-thread)" msgstr "" -#: modules/computer.c:512 -msgid "Current Session" +#: modules/benchmark/benches.c:86 +msgid "CPU Blowfish (Multi-core)" msgstr "" -#: modules/computer.c:513 -msgid "Computer Name" +#: modules/benchmark/benches.c:88 +msgid "CPU Zlib" msgstr "" -#: modules/computer.c:515 modules/computer/languages.c:108 -msgid "Language" +#: modules/benchmark/benches.c:90 +msgid "CPU CryptoHash" msgstr "" -#: modules/computer.c:516 modules/computer/users.c:50 -msgid "Home Directory" +#: modules/benchmark/benches.c:92 +msgid "CPU Fibonacci" msgstr "" -#: modules/computer.c:519 modules/devices/usb.c:87 modules/devices/usb.c:234 -#: modules/devices/usb.c:351 -msgid "Misc" +#: modules/benchmark/benches.c:94 +msgid "CPU N-Queens" msgstr "" -#: modules/computer.c:532 -msgid "Loaded Modules" +#: modules/benchmark/benches.c:96 +msgid "FPU FFT" msgstr "" -#: modules/computer.c:535 modules/computer/modules.c:145 -#: modules/computer/modules.c:147 modules/devices/arm/processor.c:337 -#: modules/devices.c:559 modules/devices/x86/processor.c:456 -msgid "Description" +#: modules/benchmark/benches.c:98 +msgid "FPU Raytracing" msgstr "" -#: modules/computer.c:548 -msgid "Date & Time" +#: modules/benchmark/benches.c:100 +msgid "SysBench CPU (Single-thread)" msgstr "" -#: modules/computer.c:549 -msgid "Kernel Version" +#: modules/benchmark/benches.c:102 +msgid "SysBench CPU (Multi-thread)" msgstr "" -#: modules/computer.c:559 -msgid "Available Languages" +#: modules/benchmark/benches.c:104 +msgid "SysBench CPU (Four threads)" msgstr "" -#: modules/computer.c:561 -msgid "Language Code" +#: modules/benchmark/benches.c:106 +msgid "SysBench Memory (Single-thread)" msgstr "" -#: modules/computer.c:573 -msgid "Mounted File Systems" +#: modules/benchmark/benches.c:108 +msgid "SysBench Memory (Two threads)" msgstr "" -#: modules/computer.c:575 modules/computer/filesystem.c:85 -msgid "Mount Point" +#: modules/benchmark/benches.c:110 +msgid "SysBench Memory" msgstr "" -#: modules/computer.c:576 -msgid "Usage" +#: modules/benchmark/benches.c:113 +msgid "GPU Drawing" msgstr "" -#: modules/computer.c:577 -msgid "Device" +#: modules/benchmark/benches.c:126 +msgid "" +"Alexey Kopytov's sysbench is required.\n" +"Results in events/second. Higher is better." msgstr "" -#: modules/computer.c:594 modules/computer.c:601 -#: modules/devices/ia64/processor.c:161 modules/devices/inputdevices.c:119 -#: modules/devices/pci.c:225 modules/devices/usb.c:349 -#: modules/devices/x86/processor.c:416 -msgid "Vendor" +#: modules/benchmark/benches.c:132 +msgid "" +"Alexey Kopytov's sysbench is required.\n" +"Results in MiB/second. Higher is better." msgstr "" -#: modules/computer.c:598 -msgid "Monitors" +#: modules/benchmark/benches.c:136 +msgid "Results in MiB/second. Higher is better." msgstr "" -#: modules/computer.c:600 -msgid "OpenGL" +#: modules/benchmark/benches.c:143 +msgid "Results in HIMarks. Higher is better." msgstr "" -#: modules/computer.c:602 -msgid "Renderer" +#: modules/benchmark/benches.c:149 +msgid "Results in seconds. Lower is better." msgstr "" -#: modules/computer.c:604 -msgid "Direct Rendering" +#. /or modify +#. * it under the terms of the GNU General Public License as published by +#. * the Free Software Foundation, version 2. +#. * +#. * This program is distributed in the hope that it will be useful, +#. * but WITHOUT ANY WARRANTY; without even the implied warranty of +#. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +#. * GNU General Public License for more details. +#. * +#. * You should have received a copy of the GNU General Public License +#. * along with this program; if not, write to the Free Software +#. * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +#. +#. / Used for an unknown value. Having it in only one place cleans up the .po line references +#: modules/benchmark/bench_results.c:22 modules/computer.c:41 +#: modules/computer/display.c:41 modules/computer/display.c:58 +#: modules/computer/os.c:286 modules/computer/os.c:346 modules/devices.c:488 +#: modules/devices/dmi_memory.c:52 modules/devices/dmi_memory.c:53 +#: modules/devices/dmi_memory.c:579 modules/devices/dmi_memory.c:719 +#: modules/devices/dmi_memory.c:855 modules/devices/gpu.c:42 +#: modules/devices/gpu.c:58 modules/devices/gpu.c:112 modules/devices/gpu.c:120 +#: modules/devices/gpu.c:154 modules/devices/gpu.c:155 +#: modules/devices/gpu.c:176 modules/devices/monitors.c:27 +#: modules/devices/monitors.c:28 modules/devices/monitors.c:153 +#: modules/devices/monitors.c:162 modules/devices/pci.c:25 +#: modules/devices/pci.c:135 modules/devices/pci.c:136 +#: modules/devices/spd-decode.c:306 modules/devices/spd-decode.c:307 +#: modules/devices/spd-decode.c:310 modules/devices/spd-decode.c:311 +#: modules/devices/spd-decode.c:914 modules/devices/spd-decode.c:915 +#: modules/devices/storage.c:247 modules/devices/storage.c:309 +#: modules/devices/usb.c:28 modules/network/net.c:437 includes/cpu_util.h:11 +msgid "(Unknown)" msgstr "" -#: modules/computer.c:608 -msgid "Extensions" +#: modules/benchmark/bench_results.c:49 modules/benchmark/bench_results.c:330 +#: modules/devices/alpha/processor.c:90 modules/devices/arm/processor.c:290 +#: modules/devices/arm/processor.c:303 modules/devices/arm/processor.c:345 +#: modules/devices/arm/processor.c:500 modules/devices.c:325 +#: modules/devices.c:333 modules/devices.c:361 modules/devices/gpu.c:115 +#: modules/devices/gpu.c:117 modules/devices/gpu.c:123 +#: modules/devices/gpu.c:125 modules/devices/gpu.c:179 +#: modules/devices/gpu.c:181 modules/devices/ia64/processor.c:167 +#: modules/devices/ia64/processor.c:196 modules/devices/m68k/processor.c:87 +#: modules/devices/mips/processor.c:77 modules/devices/parisc/processor.c:158 +#: modules/devices/parisc/processor.c:191 modules/devices/ppc/processor.c:160 +#: modules/devices/ppc/processor.c:187 modules/devices/riscv/processor.c:186 +#: modules/devices/riscv/processor.c:214 modules/devices/s390/processor.c:160 +#: modules/devices/sh/processor.c:87 modules/devices/sh/processor.c:88 +#: modules/devices/sh/processor.c:89 modules/devices/x86/processor.c:318 +#: modules/devices/x86/processor.c:331 modules/devices/x86/processor.c:657 +#: modules/devices/x86/processor.c:780 +msgid "MHz" msgstr "" -#: modules/computer.c:628 -msgid "Group" +#: modules/benchmark/bench_results.c:396 modules/benchmark/bench_results.c:495 +msgid "kiB" msgstr "" -#: modules/computer.c:631 modules/computer/users.c:49 -msgid "Group ID" +#: modules/benchmark/bench_results.c:403 modules/benchmark/bench_results.c:453 +#, c-format +msgid "%d-bit" msgstr "" -#: modules/computer.c:751 -msgid "RAM" +#: modules/benchmark/bench_results.c:422 modules/benchmark/bench_results.c:477 +msgid "Benchmark Result" msgstr "" -#: modules/computer.c:751 modules/devices/devicetree/pmac_data.c:82 -msgid "Motherboard" +#: modules/benchmark/bench_results.c:423 modules/benchmark/bench_results.c:479 +msgid "Threads" msgstr "" -#: modules/computer.c:751 -msgid "Graphics" +#: modules/benchmark/bench_results.c:424 modules/benchmark/bench_results.c:481 +msgid "Elapsed Time" msgstr "" -#: modules/computer.c:752 -msgid "Audio" +#: modules/benchmark/bench_results.c:424 modules/benchmark/bench_results.c:481 +msgid "seconds" msgstr "" -#: modules/computer.c:807 -msgid "Gathers high-level computer information" +#: modules/benchmark/bench_results.c:425 modules/computer/languages.c:101 +#: modules/devices/arm/processor.c:355 modules/devices/gpu.c:147 +#: modules/devices/ia64/processor.c:166 modules/devices/pci.c:132 +#: modules/devices/ppc/processor.c:159 +msgid "Revision" msgstr "" -#: modules/computer/display.c:122 -#, c-format -msgid "Monitor %d=%dx%d pixels\n" +#: modules/benchmark/bench_results.c:426 modules/benchmark/bench_results.c:482 +msgid "Extra Information" msgstr "" -#: modules/computer/filesystem.c:83 -msgid "Filesystem" +#: modules/benchmark/bench_results.c:427 modules/benchmark/bench_results.c:483 +msgid "User Note" msgstr "" -#: modules/computer/filesystem.c:84 -msgid "Mounted As" +#: modules/benchmark/bench_results.c:429 modules/benchmark/bench_results.c:485 +msgid "Note" msgstr "" -#: modules/computer/filesystem.c:84 -msgid "Read-Write" +#: modules/benchmark/bench_results.c:430 modules/benchmark/bench_results.c:486 +msgid "" +"This result is from an old version of HardInfo. Results might not be " +"comparable to current version. Some details are missing." msgstr "" -#: modules/computer/filesystem.c:84 -msgid "Read-Only" +#: modules/benchmark/bench_results.c:431 modules/benchmark/bench_results.c:487 +#: modules/devices/devicetree/pmac_data.c:81 modules/devices/sh/processor.c:85 +msgid "Machine" msgstr "" -#: modules/computer/filesystem.c:86 modules/devices/spd-decode.c:1510 -msgid "Size" +#: modules/benchmark/bench_results.c:432 modules/benchmark/bench_results.c:488 +#: modules/devices/devicetree.c:208 modules/devices/dmi.c:47 +msgid "Board" msgstr "" -#: modules/computer/filesystem.c:87 -msgid "Used" +#: modules/benchmark/bench_results.c:433 modules/benchmark/bench_results.c:489 +msgid "CPU Name" msgstr "" -#: modules/computer/filesystem.c:88 -msgid "Available" +#: modules/benchmark/bench_results.c:434 modules/benchmark/bench_results.c:490 +msgid "CPU Description" msgstr "" -#: modules/computer/languages.c:103 -msgid "Locale Information" +#: modules/benchmark/bench_results.c:435 modules/benchmark/bench_results.c:491 +#: modules/benchmark.c:442 +msgid "CPU Config" msgstr "" -#: modules/computer/languages.c:105 -msgid "Source" +#: modules/benchmark/bench_results.c:436 modules/benchmark/bench_results.c:492 +msgid "Threads Available" msgstr "" -#: modules/computer/languages.c:106 -msgid "Address" +#: modules/benchmark/bench_results.c:437 modules/benchmark/bench_results.c:493 +msgid "GPU" msgstr "" -#: modules/computer/languages.c:107 -msgid "E-mail" +#: modules/benchmark/bench_results.c:438 modules/benchmark/bench_results.c:494 +#: modules/computer.c:542 +msgid "OpenGL Renderer" msgstr "" -#: modules/computer/languages.c:109 -msgid "Territory" +#: modules/benchmark/bench_results.c:439 modules/benchmark/bench_results.c:495 +#: modules/computer.c:123 modules/computer.c:531 modules/computer.c:1000 +#: modules/devices/gpu.c:150 +msgid "Memory" msgstr "" -#: modules/computer/languages.c:110 modules/devices/arm/processor.c:250 -#: modules/devices/ia64/processor.c:166 modules/devices/ppc/processor.c:159 -#: modules/devices/usb.c:236 -msgid "Revision" +#: modules/benchmark/bench_results.c:440 modules/benchmark/bench_results.c:496 +msgid "Pointer Size" msgstr "" -#: modules/computer/languages.c:111 -msgid "Date" +#: modules/benchmark/bench_results.c:478 +msgid "Benchmark" msgstr "" -#: modules/computer/languages.c:112 -msgid "Codeset" +#: modules/benchmark/bench_results.c:480 modules/devices/dmi_memory.c:879 +#: modules/devices/firmware.c:246 modules/devices/monitors.c:492 +#: modules/devices/x86/processor.c:691 +msgid "Result" msgstr "" -#: modules/computer/loadavg.c:64 -msgid "Couldn't obtain load average" +#: modules/benchmark/bench_results.c:498 +msgid "Handles" msgstr "" -#: modules/computer/modules.c:125 modules/computer/modules.c:126 -#: modules/computer/modules.c:127 modules/computer/modules.c:128 -#: modules/computer/modules.c:129 -msgid "(Not available)" +#: modules/benchmark/bench_results.c:499 +msgid "mid" msgstr "" -#: modules/computer/modules.c:142 -msgid "Module Information" +#: modules/benchmark/bench_results.c:500 +msgid "cfg_val" msgstr "" -#: modules/computer/modules.c:143 -msgid "Path" +#: modules/benchmark.c:442 +msgid "Results" msgstr "" -#: modules/computer/modules.c:144 -msgid "Used Memory" +#: modules/benchmark.c:442 modules/devices/sparc/processor.c:75 +msgid "CPU" msgstr "" -#: modules/computer/modules.c:144 -msgid "KiB" +#: modules/benchmark.c:513 +#, c-format +msgid "Benchmarking: %s." msgstr "" -#: modules/computer/modules.c:148 -msgid "Version Magic" +#: modules/benchmark.c:527 +msgid "Benchmarking. Please do not move your mouse or press any keys." msgstr "" -#: modules/computer/modules.c:149 -msgid "Copyright" +#: modules/benchmark.c:530 +msgid "Cancel" msgstr "" -#: modules/computer/modules.c:150 -msgid "Author" +#: modules/benchmark.c:601 +msgid "Benchmarks" msgstr "" -#: modules/computer/modules.c:151 -msgid "License" +#: modules/benchmark.c:619 +msgid "Perform tasks and compare with other systems" msgstr "" -#: modules/computer/modules.c:158 -msgid "Dependencies" +#: modules/benchmark.c:730 +msgid "Send benchmark results" msgstr "" -#: modules/computer/os.c:35 modules/computer/os.c:36 modules/computer/os.c:37 -#: modules/computer/os.c:38 -msgid "GNU C Library" +#: modules/benchmark.c:735 +msgid "Receive benchmark results" msgstr "" -#: modules/computer/os.c:39 -msgid "uClibc or uClibc-ng" +#: modules/computer/alsa.c:26 modules/computer.c:546 +msgid "Audio Devices" msgstr "" -#: modules/computer/os.c:40 -msgid "diet libc" +#: modules/computer/alsa.c:34 +msgid "Audio Adapter" msgstr "" -#: modules/computer/os.c:78 modules/computer/os.c:234 modules/computer/os.c:359 -#: modules/devices.c:333 modules/devices.c:387 modules/devices/printers.c:99 -#: modules/devices/printers.c:106 modules/devices/printers.c:116 -#: modules/devices/printers.c:131 modules/devices/printers.c:140 -#: modules/devices/printers.c:243 -msgid "Unknown" +#: modules/computer.c:80 modules/devices/firmware.c:104 +msgid "Summary" msgstr "" -#: modules/computer/os.c:112 modules/computer/os.c:115 -msgid "GNOME Shell " +#: modules/computer.c:81 modules/computer.c:534 modules/computer.c:999 +msgid "Operating System" msgstr "" -#: modules/computer/os.c:123 modules/computer/os.c:126 -msgid "Version: " +#: modules/computer.c:82 +msgid "Security" msgstr "" -#: modules/computer/os.c:157 -#, c-format -msgid "Unknown (Window Manager: %s)" +#: modules/computer.c:83 modules/devices/gpu.c:155 modules/devices/pci.c:136 +msgid "Kernel Modules" msgstr "" -#. /{desktop environment} on {session type} -#: modules/computer/os.c:168 +#: modules/computer.c:84 modules/computer.c:678 +msgid "Boots" +msgstr "" + +#: modules/computer.c:85 +msgid "Languages" +msgstr "" + +#: modules/computer.c:86 +msgid "Memory Usage" +msgstr "" + +#: modules/computer.c:87 +msgid "Filesystems" +msgstr "" + +#: modules/computer.c:88 modules/computer.c:539 +msgid "Display" +msgstr "" + +#: modules/computer.c:89 modules/computer/environment.c:32 +msgid "Environment Variables" +msgstr "" + +#: modules/computer.c:91 +msgid "Development" +msgstr "" + +#: modules/computer.c:93 modules/computer.c:802 +msgid "Users" +msgstr "" + +#: modules/computer.c:94 +msgid "Groups" +msgstr "" + +#: modules/computer.c:125 #, c-format -msgid "%s on %s" +msgid "%dMB (%dMB used)" msgstr "" -#: modules/computer/os.c:232 -msgid "Terminal" +#: modules/computer.c:127 modules/computer.c:594 +msgid "Uptime" msgstr "" -#. /bits of entropy for rng (0) -#: modules/computer/os.c:241 -msgid "(None or not available)" +#: modules/computer.c:129 modules/computer.c:536 +msgid "Date/Time" msgstr "" -#. /bits of entropy for rng (low/poor value) -#: modules/computer/os.c:242 +#: modules/computer.c:134 modules/computer.c:595 +msgid "Load Average" +msgstr "" + +#: modules/computer.c:247 +msgid "Scripting Languages" +msgstr "" + +#: modules/computer.c:248 +msgid "Gambas3 (gbr3)" +msgstr "" + +#: modules/computer.c:249 +msgid "Python (default)" +msgstr "" + +#: modules/computer.c:250 +msgid "Python2" +msgstr "" + +#: modules/computer.c:251 +msgid "Python3" +msgstr "" + +#: modules/computer.c:252 +msgid "Perl" +msgstr "" + +#: modules/computer.c:253 +msgid "Perl6 (VM)" +msgstr "" + +#: modules/computer.c:254 +msgid "Perl6" +msgstr "" + +#: modules/computer.c:255 +msgid "PHP" +msgstr "" + +#: modules/computer.c:256 +msgid "Ruby" +msgstr "" + +#: modules/computer.c:257 +msgid "Bash" +msgstr "" + +#: modules/computer.c:258 +msgid "JavaScript (Node.js)" +msgstr "" + +#: modules/computer.c:259 +msgid "awk" +msgstr "" + +#: modules/computer.c:260 +msgid "Compilers" +msgstr "" + +#: modules/computer.c:261 +msgid "C (GCC)" +msgstr "" + +#: modules/computer.c:262 +msgid "C (Clang)" +msgstr "" + +#: modules/computer.c:263 +msgid "D (dmd)" +msgstr "" + +#: modules/computer.c:264 +msgid "Gambas3 (gbc3)" +msgstr "" + +#: modules/computer.c:265 +msgid "Java" +msgstr "" + +#: modules/computer.c:266 +msgid "C♯ (mcs)" +msgstr "" + +#: modules/computer.c:267 +msgid "Vala" +msgstr "" + +#: modules/computer.c:268 +msgid "Haskell (GHC)" +msgstr "" + +#: modules/computer.c:269 +msgid "FreePascal" +msgstr "" + +#: modules/computer.c:270 +msgid "Go" +msgstr "" + +#: modules/computer.c:271 +msgid "Rust" +msgstr "" + +#: modules/computer.c:272 +msgid "Tools" +msgstr "" + +#: modules/computer.c:273 +msgid "make" +msgstr "" + +#: modules/computer.c:274 +msgid "ninja" +msgstr "" + +#: modules/computer.c:275 +msgid "GDB" +msgstr "" + +#: modules/computer.c:276 +msgid "LLDB" +msgstr "" + +#: modules/computer.c:277 +msgid "strace" +msgstr "" + +#: modules/computer.c:278 +msgid "valgrind" +msgstr "" + +#: modules/computer.c:279 +msgid "QMake" +msgstr "" + +#: modules/computer.c:280 +msgid "CMake" +msgstr "" + +#: modules/computer.c:281 +msgid "Gambas3 IDE" +msgstr "" + +#: modules/computer.c:282 +msgid "Radare2" +msgstr "" + +#: modules/computer.c:283 +msgid "ltrace" +msgstr "" + +#: modules/computer.c:324 +msgid "Not found" +msgstr "" + +#: modules/computer.c:329 #, c-format -msgid "%d bits (low)" +msgid "Detecting version: %s" +msgstr "" + +#: modules/computer.c:347 +msgid "Program" +msgstr "" + +#: modules/computer.c:365 +msgid "Field" +msgstr "" + +#: modules/computer.c:365 modules/computer.c:667 modules/computer/modules.c:149 +#: modules/computer/modules.c:150 modules/devices/arm/processor.c:470 +msgid "Description" +msgstr "" + +#: modules/computer.c:365 modules/devices.c:726 +msgid "Value" +msgstr "" + +#: modules/computer.c:385 +msgid "Single-board computer" +msgstr "" + +#. /proc/apm +#: modules/computer.c:434 +msgid "Unknown physical machine type" +msgstr "" + +#: modules/computer.c:454 modules/computer.c:455 +msgid "Virtual (VMware)" +msgstr "" + +#: modules/computer.c:457 modules/computer.c:458 modules/computer.c:459 +#: modules/computer.c:460 +msgid "Virtual (QEMU)" +msgstr "" + +#: modules/computer.c:462 modules/computer.c:463 +msgid "Virtual (Unknown)" +msgstr "" + +#: modules/computer.c:465 modules/computer.c:466 modules/computer.c:467 +#: modules/computer.c:488 +msgid "Virtual (VirtualBox)" +msgstr "" + +#: modules/computer.c:469 modules/computer.c:470 modules/computer.c:471 +#: modules/computer.c:482 +msgid "Virtual (Xen)" +msgstr "" + +#: modules/computer.c:473 +msgid "Virtual (hypervisor present)" +msgstr "" + +#: modules/computer.c:528 modules/computer.c:953 +msgid "Computer" +msgstr "" + +#: modules/computer.c:532 +msgid "Machine Type" +msgstr "" + +#: modules/computer.c:535 modules/computer.c:588 +msgid "User Name" +msgstr "" + +#: modules/computer.c:540 +msgid "Resolution" +msgstr "" + +#: modules/computer.c:540 modules/computer.c:748 +#, c-format +msgid "%dx%d pixels" +msgstr "" + +#: modules/computer.c:543 +msgid "Session Display Server" +msgstr "" + +#: modules/computer.c:548 modules/devices.c:108 +msgid "Input Devices" +msgstr "" + +#: modules/computer.c:572 +msgid "Kernel" +msgstr "" + +#: modules/computer.c:573 +msgid "Command Line" +msgstr "" + +#: modules/computer.c:575 +msgid "C Library" +msgstr "" + +#: modules/computer.c:576 +msgid "Distribution" +msgstr "" + +#: modules/computer.c:582 +msgid "Spin/Flavor" +msgstr "" + +#: modules/computer.c:586 +msgid "Current Session" +msgstr "" + +#: modules/computer.c:587 +msgid "Computer Name" +msgstr "" + +#: modules/computer.c:589 modules/computer/languages.c:99 +msgid "Language" +msgstr "" + +#: modules/computer.c:590 modules/computer/users.c:50 +msgid "Home Directory" +msgstr "" + +#: modules/computer.c:591 +msgid "Desktop Environment" +msgstr "" + +#: modules/computer.c:594 +msgid "Misc" +msgstr "" + +#: modules/computer.c:607 +msgid "HardInfo" +msgstr "" + +#: modules/computer.c:608 +msgid "HardInfo running as" +msgstr "" + +#: modules/computer.c:609 +msgid "Superuser" +msgstr "" + +#: modules/computer.c:609 +msgid "User" +msgstr "" + +#: modules/computer.c:613 +msgid "Health" +msgstr "" + +#: modules/computer.c:614 +msgid "Available entropy in /dev/random" +msgstr "" + +#: modules/computer.c:618 +msgid "Hardening Features" +msgstr "" + +#: modules/computer.c:619 +msgid "ASLR" +msgstr "" + +#: modules/computer.c:620 +msgid "dmesg" +msgstr "" + +#: modules/computer.c:624 +msgid "Linux Security Modules" +msgstr "" + +#: modules/computer.c:625 +msgid "Modules available" +msgstr "" + +#: modules/computer.c:626 +msgid "SELinux status" +msgstr "" + +#: modules/computer.c:632 +msgid "CPU Vulnerabilities" +msgstr "" + +#: modules/computer.c:664 +msgid "Loaded Modules" +msgstr "" + +#: modules/computer.c:680 +msgid "Date & Time" +msgstr "" + +#: modules/computer.c:681 +msgid "Kernel Version" +msgstr "" + +#: modules/computer.c:691 +msgid "Available Languages" +msgstr "" + +#: modules/computer.c:693 +msgid "Language Code" +msgstr "" + +#: modules/computer.c:705 +msgid "Mounted File Systems" +msgstr "" + +#: modules/computer.c:707 modules/computer/filesystem.c:85 +msgid "Mount Point" +msgstr "" + +#: modules/computer.c:708 +msgid "Usage" +msgstr "" + +#: modules/computer.c:709 modules/devices/gpu.c:75 modules/devices/gpu.c:83 +#: modules/devices/gpu.c:225 modules/devices/pci.c:88 modules/devices/pci.c:96 +#: modules/devices/pci.c:140 modules/devices/usb.c:169 +#: modules/devices/usb.c:181 +msgid "Device" +msgstr "" + +#: modules/computer.c:731 +msgid "Session" +msgstr "" + +#: modules/computer.c:732 modules/devices.c:726 modules/devices/dmi.c:55 +#: modules/devices/dmi_memory.c:603 modules/devices/dmi_memory.c:749 +#: modules/devices/inputdevices.c:112 modules/devices/x86/processor.c:714 +msgid "Type" +msgstr "" + +#: modules/computer.c:735 +msgid "Wayland" +msgstr "" + +#: modules/computer.c:736 modules/computer.c:741 +msgid "Current Display Name" +msgstr "" + +#: modules/computer.c:740 +msgid "X Server" +msgstr "" + +#: modules/computer.c:742 modules/computer.c:782 modules/devices/dmi.c:39 +#: modules/devices/dmi.c:45 modules/devices/dmi.c:49 modules/devices/dmi.c:54 +#: modules/devices/dmi_memory.c:750 modules/devices/dmi_memory.c:895 +#: modules/devices/firmware.c:105 modules/devices/firmware.c:168 +#: modules/devices/firmware.c:190 modules/devices/firmware.c:228 +#: modules/devices/gpu.c:74 modules/devices/gpu.c:82 modules/devices/gpu.c:224 +#: modules/devices/ia64/processor.c:161 modules/devices/inputdevices.c:114 +#: modules/devices/monitors.c:398 modules/devices/pci.c:87 +#: modules/devices/pci.c:95 modules/devices/usb.c:168 +#: modules/devices/x86/processor.c:653 +msgid "Vendor" +msgstr "" + +#: modules/computer.c:744 +msgid "Release Number" +msgstr "" + +#: modules/computer.c:752 +msgid "Screens" +msgstr "" + +#: modules/computer.c:758 +msgid "Disconnected" +msgstr "" + +#: modules/computer.c:761 +msgid "Connected" +msgstr "" + +#: modules/computer.c:769 +msgid "Unused" +msgstr "" + +#: modules/computer.c:770 +#, c-format +msgid "%dx%d pixels, offset (%d, %d)" +msgstr "" + +#: modules/computer.c:779 +msgid "Outputs (XRandR)" +msgstr "" + +#: modules/computer.c:781 +msgid "OpenGL (GLX)" +msgstr "" + +#: modules/computer.c:783 +msgid "Renderer" +msgstr "" + +#: modules/computer.c:784 +msgid "Direct Rendering" +msgstr "" + +#: modules/computer.c:786 +msgid "Version (Compatibility)" +msgstr "" + +#: modules/computer.c:787 +msgid "Shading Language Version (Compatibility)" +msgstr "" + +#: modules/computer.c:788 +msgid "Version (Core)" +msgstr "" + +#: modules/computer.c:789 +msgid "Shading Language Version (Core)" +msgstr "" + +#: modules/computer.c:790 +msgid "Version (ES)" +msgstr "" + +#: modules/computer.c:791 +msgid "Shading Language Version (ES)" +msgstr "" + +#: modules/computer.c:792 +msgid "GLX Version" +msgstr "" + +#: modules/computer.c:813 +msgid "Group" +msgstr "" + +#: modules/computer.c:816 modules/computer/users.c:49 +msgid "Group ID" +msgstr "" + +#. / "usable memory" +#: modules/computer.c:909 +#, c-format +msgid "%0.1f %s available to Linux" +msgstr "" + +#: modules/computer.c:911 modules/devices/dmi_memory.c:661 +#: modules/devices/dmi_memory.c:809 modules/devices/dmi_memory.c:936 +msgid "GiB" +msgstr "" + +#: modules/computer.c:913 modules/devices/dmi_memory.c:581 +#: modules/devices/dmi_memory.c:663 modules/devices/dmi_memory.c:723 +#: modules/devices/dmi_memory.c:811 modules/devices/dmi_memory.c:857 +#: modules/devices/dmi_memory.c:938 modules/network/net.c:395 +#: modules/network/net.c:417 modules/network/net.c:418 +msgid "MiB" +msgstr "" + +#: modules/computer.c:915 modules/computer/memory_usage.c:77 +#: modules/computer/modules.c:149 +msgid "KiB" +msgstr "" + +#: modules/computer.c:972 modules/devices/devicetree/pmac_data.c:82 +msgid "Motherboard" +msgstr "" + +#: modules/computer.c:1000 +msgid "Graphics" +msgstr "" + +#: modules/computer.c:1001 modules/devices.c:109 +msgid "Storage" +msgstr "" + +#: modules/computer.c:1001 modules/devices.c:105 +msgid "Printers" +msgstr "" + +#: modules/computer.c:1001 +msgid "Audio" +msgstr "" + +#: modules/computer.c:1050 +msgid "Gathers high-level computer information" +msgstr "" + +#: modules/computer/filesystem.c:83 +msgid "Filesystem" +msgstr "" + +#: modules/computer/filesystem.c:84 +msgid "Mounted As" +msgstr "" + +#: modules/computer/filesystem.c:84 +msgid "Read-Write" +msgstr "" + +#: modules/computer/filesystem.c:84 +msgid "Read-Only" +msgstr "" + +#: modules/computer/filesystem.c:86 modules/devices/dmi_memory.c:609 +#: modules/devices/dmi_memory.c:754 modules/devices/dmi_memory.c:786 +#: modules/devices/dmi_memory.c:825 modules/devices/dmi_memory.c:894 +msgid "Size" +msgstr "" + +#: modules/computer/filesystem.c:87 +msgid "Used" +msgstr "" + +#: modules/computer/filesystem.c:88 +msgid "Available" +msgstr "" + +#: modules/computer/languages.c:94 +msgid "Locale Information" +msgstr "" + +#: modules/computer/languages.c:96 modules/devices/dmi_memory.c:599 +#: modules/devices/gpu.c:204 +msgid "Source" +msgstr "" + +#: modules/computer/languages.c:97 +msgid "Address" +msgstr "" + +#: modules/computer/languages.c:98 +msgid "E-mail" +msgstr "" + +#: modules/computer/languages.c:100 +msgid "Territory" +msgstr "" + +#: modules/computer/languages.c:102 modules/devices/dmi.c:44 +msgid "Date" +msgstr "" + +#: modules/computer/languages.c:103 +msgid "Codeset" +msgstr "" + +#: modules/computer/loadavg.c:64 +msgid "Couldn't obtain load average" +msgstr "" + +#: modules/computer/memory_usage.c:106 +msgid "Total Memory" +msgstr "" + +#: modules/computer/memory_usage.c:107 +msgid "Free Memory" +msgstr "" + +#: modules/computer/memory_usage.c:108 +msgid "Cached Swap" +msgstr "" + +#: modules/computer/memory_usage.c:109 +msgid "High Memory" +msgstr "" + +#: modules/computer/memory_usage.c:110 +msgid "Free High Memory" +msgstr "" + +#: modules/computer/memory_usage.c:111 +msgid "Low Memory" +msgstr "" + +#: modules/computer/memory_usage.c:112 +msgid "Free Low Memory" +msgstr "" + +#: modules/computer/memory_usage.c:113 +msgid "Virtual Memory" +msgstr "" + +#: modules/computer/memory_usage.c:114 +msgid "Free Virtual Memory" +msgstr "" + +#: modules/computer/modules.c:117 modules/computer/modules.c:118 +#: modules/computer/modules.c:119 modules/computer/modules.c:120 +#: modules/computer/modules.c:121 modules/computer/modules.c:122 +#: modules/devices/dmi.c:111 modules/devices/dmi_memory.c:881 +#: modules/devices/firmware.c:246 modules/devices/x86/processor.c:693 +msgid "(Not available)" +msgstr "" + +#: modules/computer/modules.c:148 +msgid "Module Information" +msgstr "" + +#: modules/computer/modules.c:148 modules/devices/gpu.c:230 +msgid "Path" +msgstr "" + +#: modules/computer/modules.c:148 +msgid "Used Memory" +msgstr "" + +#: modules/computer/modules.c:150 +msgid "Version Magic" +msgstr "" + +#: modules/computer/modules.c:151 +msgid "In Linus' Tree" +msgstr "" + +#: modules/computer/modules.c:152 +msgid "Retpoline Enabled" +msgstr "" + +#: modules/computer/modules.c:152 +msgid "Copyright" +msgstr "" + +#: modules/computer/modules.c:152 +msgid "Author" +msgstr "" + +#: modules/computer/modules.c:153 +msgid "License" +msgstr "" + +#: modules/computer/modules.c:159 +msgid "Dependencies" +msgstr "" + +#: modules/computer/os.c:36 modules/computer/os.c:37 modules/computer/os.c:38 +#: modules/computer/os.c:39 +msgid "GNU C Library" +msgstr "" + +#: modules/computer/os.c:40 +msgid "uClibc or uClibc-ng" +msgstr "" + +#: modules/computer/os.c:41 +msgid "diet libc" +msgstr "" + +#: modules/computer/os.c:113 modules/computer/os.c:116 +msgid "GNOME Shell " +msgstr "" + +#: modules/computer/os.c:124 modules/computer/os.c:127 +msgid "Version: " +msgstr "" + +#: modules/computer/os.c:146 modules/computer/os.c:149 +msgid "MATE Desktop Environment " +msgstr "" + +#: modules/computer/os.c:180 +#, c-format +msgid "Unknown (Window Manager: %s)" +msgstr "" + +#. /{desktop environment} on {session type} +#: modules/computer/os.c:191 +#, c-format +msgid "%s on %s" +msgstr "" + +#: modules/computer/os.c:261 +msgid "Terminal" +msgstr "" + +#: modules/computer/os.c:278 +msgid "User access allowed" +msgstr "" + +#: modules/computer/os.c:280 +msgid "User access forbidden" +msgstr "" + +#: modules/computer/os.c:282 +msgid "Access allowed (running as superuser)" +msgstr "" + +#: modules/computer/os.c:284 +msgid "Access forbidden? (running as superuser)" +msgstr "" + +#: modules/computer/os.c:294 modules/computer/os.c:560 +msgid "Disabled" +msgstr "" + +#: modules/computer/os.c:296 +msgid "Partially enabled (mmap base+stack+VDSO base)" +msgstr "" + +#: modules/computer/os.c:298 +msgid "Fully enabled (mmap base+stack+VDSO base+heap)" +msgstr "" + +#. /bits of entropy for rng (0) +#: modules/computer/os.c:308 +msgid "(None or not available)" +msgstr "" + +#. /bits of entropy for rng (low/poor value) +#: modules/computer/os.c:309 +#, c-format +msgid "%d bits (low)" +msgstr "" + +#. /bits of entropy for rng (medium value) +#: modules/computer/os.c:310 +#, c-format +msgid "%d bits (medium)" +msgstr "" + +#. /bits of entropy for rng (high/good value) +#: modules/computer/os.c:311 +#, c-format +msgid "%d bits (healthy)" +msgstr "" + +#: modules/computer/os.c:555 +msgid "Not installed" +msgstr "" + +#: modules/computer/os.c:558 +msgid "Enabled" +msgstr "" + +#: modules/computer/users.c:47 +msgid "User Information" +msgstr "" + +#: modules/computer/users.c:48 +msgid "User ID" +msgstr "" + +#: modules/computer/users.c:51 +msgid "Default Shell" +msgstr "" + +#: modules/devices/alpha/processor.c:88 modules/devices/devicetree.c:163 +#: modules/devices/devicetree.c:209 modules/devices/devicetree/pmac_data.c:80 +#: modules/devices/gpu.c:106 modules/devices/ia64/processor.c:165 +#: modules/devices/m68k/processor.c:84 modules/devices/mips/processor.c:75 +#: modules/devices/monitors.c:400 modules/devices/parisc/processor.c:155 +#: modules/devices/ppc/processor.c:158 modules/devices/riscv/processor.c:182 +#: modules/devices/s390/processor.c:132 +msgid "Model" +msgstr "" + +#: modules/devices/alpha/processor.c:89 +msgid "Platform String" +msgstr "" + +#: modules/devices/alpha/processor.c:90 modules/devices/arm/processor.c:345 +#: modules/devices/ia64/processor.c:167 modules/devices/m68k/processor.c:87 +#: modules/devices/mips/processor.c:77 modules/devices/parisc/processor.c:158 +#: modules/devices/ppc/processor.c:160 modules/devices/riscv/processor.c:186 +#: modules/devices/sh/processor.c:87 modules/devices/x86/processor.c:657 +msgid "Frequency" +msgstr "" + +#: modules/devices/alpha/processor.c:91 modules/devices/arm/processor.c:346 +#: modules/devices/ia64/processor.c:168 modules/devices/m68k/processor.c:88 +#: modules/devices/mips/processor.c:78 modules/devices/parisc/processor.c:159 +#: modules/devices/ppc/processor.c:161 modules/devices/s390/processor.c:134 +#: modules/devices/sh/processor.c:90 modules/devices/x86/processor.c:658 +msgid "BogoMips" +msgstr "" + +#: modules/devices/alpha/processor.c:92 modules/devices/arm/processor.c:347 +#: modules/devices/ia64/processor.c:169 modules/devices/m68k/processor.c:89 +#: modules/devices/mips/processor.c:79 modules/devices/parisc/processor.c:160 +#: modules/devices/ppc/processor.c:162 modules/devices/riscv/processor.c:187 +#: modules/devices/s390/processor.c:135 modules/devices/sh/processor.c:91 +#: modules/devices/sparc/processor.c:77 modules/devices/x86/processor.c:659 +msgid "Byte Order" +msgstr "" + +#. /hw_cap +#. /flag:swp +#: modules/devices/arm/arm_data.c:42 +msgctxt "arm-flag" +msgid "SWP instruction (atomic read-modify-write)" +msgstr "" + +#. /flag:half +#: modules/devices/arm/arm_data.c:43 +msgctxt "arm-flag" +msgid "Half-word loads and stores" +msgstr "" + +#. /flag:thumb +#: modules/devices/arm/arm_data.c:44 +msgctxt "arm-flag" +msgid "Thumb (16-bit instruction set)" +msgstr "" + +#. /flag:26bit +#: modules/devices/arm/arm_data.c:45 +msgctxt "arm-flag" +msgid "26-Bit Model (Processor status register folded into program counter)" +msgstr "" + +#. /flag:fastmult +#: modules/devices/arm/arm_data.c:46 +msgctxt "arm-flag" +msgid "32x32->64-bit multiplication" +msgstr "" + +#. /flag:fpa +#: modules/devices/arm/arm_data.c:47 +msgctxt "arm-flag" +msgid "Floating point accelerator" +msgstr "" + +#. /flag:vfp +#: modules/devices/arm/arm_data.c:48 +msgctxt "arm-flag" +msgid "VFP (early SIMD vector floating point instructions)" +msgstr "" + +#. /flag:edsp +#: modules/devices/arm/arm_data.c:49 +msgctxt "arm-flag" +msgid "DSP extensions (the 'e' variant of the ARM9 CPUs, and all others above)" +msgstr "" + +#. /flag:java +#: modules/devices/arm/arm_data.c:50 +msgctxt "arm-flag" +msgid "Jazelle (Java bytecode accelerator)" +msgstr "" + +#. /flag:iwmmxt +#: modules/devices/arm/arm_data.c:51 +msgctxt "arm-flag" +msgid "SIMD instructions similar to Intel MMX" +msgstr "" + +#. /flag:crunch +#: modules/devices/arm/arm_data.c:52 +msgctxt "arm-flag" +msgid "MaverickCrunch coprocessor (if kernel support enabled)" +msgstr "" + +#. /flag:thumbee +#: modules/devices/arm/arm_data.c:53 +msgctxt "arm-flag" +msgid "ThumbEE" +msgstr "" + +#. /flag:neon +#: modules/devices/arm/arm_data.c:54 +msgctxt "arm-flag" +msgid "Advanced SIMD/NEON on AArch32" +msgstr "" + +#. /flag:evtstrm +#: modules/devices/arm/arm_data.c:55 +msgctxt "arm-flag" +msgid "Kernel event stream using generic architected timer" +msgstr "" + +#. /flag:vfpv3 +#: modules/devices/arm/arm_data.c:56 +msgctxt "arm-flag" +msgid "VFP version 3" +msgstr "" + +#. /flag:vfpv3d16 +#: modules/devices/arm/arm_data.c:57 +msgctxt "arm-flag" +msgid "VFP version 3 with 16 D-registers" +msgstr "" + +#. /flag:vfpv4 +#: modules/devices/arm/arm_data.c:58 +msgctxt "arm-flag" +msgid "VFP version 4 with fast context switching" +msgstr "" + +#. /flag:vfpd32 +#: modules/devices/arm/arm_data.c:59 +msgctxt "arm-flag" +msgid "VFP with 32 D-registers" +msgstr "" + +#. /flag:tls +#: modules/devices/arm/arm_data.c:60 +msgctxt "arm-flag" +msgid "TLS register" +msgstr "" + +#. /flag:idiva +#: modules/devices/arm/arm_data.c:61 +msgctxt "arm-flag" +msgid "SDIV and UDIV hardware division in ARM mode" +msgstr "" + +#. /flag:idivt +#: modules/devices/arm/arm_data.c:62 +msgctxt "arm-flag" +msgid "SDIV and UDIV hardware division in Thumb mode" +msgstr "" + +#. /flag:lpae +#: modules/devices/arm/arm_data.c:63 +msgctxt "arm-flag" +msgid "40-bit Large Physical Address Extension" +msgstr "" + +#. /hw_cap2 +#. /flag:pmull +#: modules/devices/arm/arm_data.c:65 +msgctxt "arm-flag" +msgid "64x64->128-bit F2m multiplication (arch>8)" +msgstr "" + +#. /flag:aes +#: modules/devices/arm/arm_data.c:66 +msgctxt "arm-flag" +msgid "Crypto:AES (arch>8)" +msgstr "" + +#. /flag:sha1 +#: modules/devices/arm/arm_data.c:67 +msgctxt "arm-flag" +msgid "Crypto:SHA1 (arch>8)" +msgstr "" + +#. /flag:sha2 +#: modules/devices/arm/arm_data.c:68 +msgctxt "arm-flag" +msgid "Crypto:SHA2 (arch>8)" +msgstr "" + +#. /flag:crc32 +#: modules/devices/arm/arm_data.c:69 +msgctxt "arm-flag" +msgid "CRC32 checksum instructions (arch>8)" +msgstr "" + +#. /flag:asimd +#: modules/devices/arm/arm_data.c:72 +msgctxt "arm-flag" +msgid "Advanced SIMD/NEON on AArch64 (arch>8)" +msgstr "" + +#: modules/devices/arm/processor.c:143 +msgid "ARM Processor" +msgstr "" + +#: modules/devices/arm/processor.c:214 modules/devices/riscv/processor.c:147 +#: modules/devices/x86/processor.c:608 +msgid "Empty List" +msgstr "" + +#: modules/devices/arm/processor.c:240 modules/devices/gpu.c:148 +#: modules/devices/gpu.c:226 modules/devices/x86/processor.c:268 +msgid "Clocks" +msgstr "" + +#: modules/devices/arm/processor.c:286 modules/devices/arm/processor.c:299 +#: modules/devices/x86/processor.c:314 modules/devices/x86/processor.c:327 +#, c-format +msgid "%.2f-%.2f %s=%dx\n" +msgstr "" + +#: modules/devices/arm/processor.c:342 +msgid "Linux Name" +msgstr "" + +#: modules/devices/arm/processor.c:343 +msgid "Decoded Name" +msgstr "" + +#: modules/devices/arm/processor.c:344 modules/network/net.c:453 +msgid "Mode" +msgstr "" + +#: modules/devices/arm/processor.c:350 +msgid "ARM" +msgstr "" + +#: modules/devices/arm/processor.c:351 +msgid "Implementer" +msgstr "" + +#: modules/devices/arm/processor.c:352 modules/devices/dmi_memory.c:896 +msgid "Part" +msgstr "" + +#: modules/devices/arm/processor.c:353 modules/devices/ia64/processor.c:162 +#: modules/devices/parisc/processor.c:156 modules/devices/riscv/processor.c:183 +msgid "Architecture" +msgstr "" + +#: modules/devices/arm/processor.c:354 +msgid "Variant" +msgstr "" + +#: modules/devices/arm/processor.c:356 modules/devices/riscv/processor.c:190 +#: modules/devices/sparc/processor.c:78 modules/devices/x86/processor.c:665 +msgid "Capabilities" +msgstr "" + +#: modules/devices/arm/processor.c:468 +msgid "SOC/Package" +msgstr "" + +#: modules/devices/arm/processor.c:472 modules/devices/x86/processor.c:751 +msgid "Logical CPU Config" +msgstr "" + +#: modules/devices/arm/processor.c:489 +msgid "SOC/Package Information" +msgstr "" + +#: modules/devices/battery.c:178 +#, c-format +msgid "" +"\n" +"[Battery: %s]\n" +"State=%s (load: %s)\n" +"Capacity=%s / %s (%.2f%%)\n" +"Battery Technology=%s (%s)\n" +"Manufacturer=%s\n" +"Model Number=%s\n" +"Serial Number=%s\n" +msgstr "" + +#: modules/devices/battery.c:255 +#, c-format +msgid "" +"\n" +"[Battery: %s]\n" +"State=%s\n" +"Capacity=%s / %s\n" +"Battery Technology=%s\n" +"Manufacturer=%s\n" +"Model Number=%s\n" +"Serial Number=%s\n" +msgstr "" + +#: modules/devices/battery.c:343 +#, c-format +msgid "" +"\n" +"[Battery (APM)]\n" +"Charge=%d%%\n" +"Remaining Charge=%s of %s\n" +"Using=%s\n" +"APM driver version=%s\n" +"APM BIOS version=%s\n" +msgstr "" + +#: modules/devices/battery.c:355 +#, c-format +msgid "" +"\n" +"[Battery (APM)]\n" +"Charge=%d%%\n" +"Using=%s\n" +"APM driver version=%s\n" +"APM BIOS version=%s\n" +msgstr "" + +#: modules/devices/battery.c:382 +msgid "" +"[No batteries]\n" +"No batteries found on this system=\n" +msgstr "" + +#: modules/devices.c:100 +msgid "Graphics Processors" +msgstr "" + +#: modules/devices.c:101 modules/devices/monitors.c:445 +#: modules/devices/monitors.c:492 +msgid "Monitors" +msgstr "" + +#: modules/devices.c:102 modules/devices/pci.c:163 +msgid "PCI Devices" +msgstr "" + +#: modules/devices.c:103 modules/devices/usb.c:210 +msgid "USB Devices" +msgstr "" + +#: modules/devices.c:104 +msgid "Firmware" +msgstr "" + +#: modules/devices.c:106 +msgid "Battery" +msgstr "" + +#: modules/devices.c:107 +msgid "Sensors" +msgstr "" + +#: modules/devices.c:110 +msgid "System DMI" +msgstr "" + +#: modules/devices.c:111 +msgid "Memory Devices" +msgstr "" + +#: modules/devices.c:113 modules/devices.c:115 +msgid "Device Tree" +msgstr "" + +#: modules/devices.c:117 +msgid "Resources" +msgstr "" + +#: modules/devices.c:177 +#, c-format +msgid "%d physical processor" +msgid_plural "%d physical processors" +msgstr[0] "" +msgstr[1] "" + +#: modules/devices.c:178 +#, c-format +msgid "%d core" +msgid_plural "%d cores" +msgstr[0] "" +msgstr[1] "" + +#: modules/devices.c:179 +#, c-format +msgid "%d thread" +msgid_plural "%d threads" +msgstr[0] "" +msgstr[1] "" + +#. /NP procs; NC cores; NT threads +#: modules/devices.c:180 +#, c-format +msgid "%s; %s; %s" +msgstr "" + +#: modules/devices.c:726 +msgid "Sensor" +msgstr "" + +#: modules/devices.c:773 modules/devices/dmi_memory.c:826 +msgid "Devices" +msgstr "" + +#: modules/devices.c:785 +msgid "Update PCI ID listing" +msgstr "" + +#: modules/devices.c:797 +msgid "Update CPU feature database" +msgstr "" + +#: modules/devices.c:825 +msgid "Gathers information about hardware devices" +msgstr "" + +#: modules/devices.c:844 +msgid "Resource information requires superuser privileges" +msgstr "" + +#: modules/devices.c:850 +msgid "" +"Any NVMe storage devices present are not listed.\n" +"udisksd is required for NVMe devices." +msgstr "" + +#: modules/devices/devicetree.c:52 +msgid "Properties" +msgstr "" + +#: modules/devices/devicetree.c:53 +msgid "Children" +msgstr "" + +#: modules/devices/devicetree.c:89 +msgid "Node" +msgstr "" + +#: modules/devices/devicetree.c:90 +msgid "Node Path" +msgstr "" + +#: modules/devices/devicetree.c:91 +msgid "Alias" +msgstr "" + +#: modules/devices/devicetree.c:92 +msgid "Symbol" +msgstr "" + +#: modules/devices/devicetree.c:145 modules/devices/devicetree/pmac_data.c:79 +msgid "Platform" +msgstr "" + +#: modules/devices/devicetree.c:146 modules/devices/devicetree.c:211 +#: modules/devices/gpu.c:231 +msgid "Compatible" +msgstr "" + +#: modules/devices/devicetree.c:147 +msgid "GPU-compatible" +msgstr "" + +#: modules/devices/devicetree.c:162 +msgid "Raspberry Pi or Compatible" +msgstr "" + +#: modules/devices/devicetree.c:164 modules/devices/devicetree.c:191 +#: modules/devices/devicetree.c:210 modules/devices/devicetree/rpi_data.c:168 +#: modules/devices/dmi.c:41 modules/devices/dmi.c:51 modules/devices/dmi.c:57 +#: modules/devices/usb.c:178 +msgid "Serial Number" +msgstr "" + +#: modules/devices/devicetree.c:165 modules/devices/devicetree/rpi_data.c:165 +msgid "RCode" +msgstr "" + +#: modules/devices/devicetree.c:165 +msgid "No revision code available; unable to lookup model details." +msgstr "" + +#: modules/devices/devicetree.c:190 +msgid "More" +msgstr "" + +#: modules/devices/devicetree.c:271 +msgid "Messages" +msgstr "" + +#: modules/devices/devicetree/pmac_data.c:78 +msgid "Apple Power Macintosh" +msgstr "" + +#: modules/devices/devicetree/pmac_data.c:83 +msgid "Detected as" +msgstr "" + +#: modules/devices/devicetree/pmac_data.c:84 +msgid "PMAC Flags" +msgstr "" + +#: modules/devices/devicetree/pmac_data.c:85 +msgid "L2 Cache" +msgstr "" + +#: modules/devices/devicetree/pmac_data.c:86 +msgid "PMAC Generation" +msgstr "" + +#: modules/devices/devicetree/rpi_data.c:160 +#: modules/devices/devicetree/rpi_data.c:161 +msgid "Raspberry Pi" +msgstr "" + +#: modules/devices/devicetree/rpi_data.c:161 +msgid "Board Name" +msgstr "" + +#: modules/devices/devicetree/rpi_data.c:162 +msgid "PCB Revision" +msgstr "" + +#: modules/devices/devicetree/rpi_data.c:163 +msgid "Introduction" +msgstr "" + +#: modules/devices/devicetree/rpi_data.c:164 modules/devices/usb.c:170 +msgid "Manufacturer" +msgstr "" + +#: modules/devices/devicetree/rpi_data.c:166 +msgid "SOC (spec)" +msgstr "" + +#: modules/devices/devicetree/rpi_data.c:167 +msgid "Memory (spec)" +msgstr "" + +#: modules/devices/devicetree/rpi_data.c:169 +msgid "Permanent overvolt bit" +msgstr "" + +#: modules/devices/devicetree/rpi_data.c:169 +msgctxt "rpi-ov-bit" +msgid "Set" +msgstr "" + +#: modules/devices/devicetree/rpi_data.c:169 +msgctxt "rpi-ov-bit" +msgid "Not set" +msgstr "" + +#: modules/devices/dmi.c:36 modules/devices/inputdevices.c:115 +#: modules/devices/usb.c:167 +msgid "Product" +msgstr "" + +#: modules/devices/dmi.c:38 modules/devices/ia64/processor.c:164 +#: modules/devices/sh/processor.c:86 +msgid "Family" +msgstr "" + +#: modules/devices/dmi.c:42 +msgid "SKU" +msgstr "" + +#: modules/devices/dmi.c:43 +msgid "BIOS" +msgstr "" + +#: modules/devices/dmi.c:52 modules/devices/dmi.c:58 +msgid "Asset Tag" +msgstr "" + +#: modules/devices/dmi.c:115 modules/devices/dmi_memory.c:882 +#: modules/devices/x86/processor.c:694 +msgid "(Not available; Perhaps try running HardInfo as root.)" +msgstr "" + +#: modules/devices/dmi.c:156 +msgid "DMI Unavailable" +msgstr "" + +#: modules/devices/dmi.c:158 +msgid "DMI is not avaliable. Perhaps this platform does not provide DMI." +msgstr "" + +#: modules/devices/dmi.c:159 +msgid "DMI is not available; Perhaps try running HardInfo as root." +msgstr "" + +#: modules/devices/dmi_memory.c:598 +msgid "Serial Presence Detect (SPD)" +msgstr "" + +#: modules/devices/dmi_memory.c:601 +msgid "SPD Revision" +msgstr "" + +#: modules/devices/dmi_memory.c:602 modules/devices/dmi_memory.c:748 +msgid "Form Factor" +msgstr "" + +#: modules/devices/dmi_memory.c:604 +msgid "Module Vendor" +msgstr "" + +#: modules/devices/dmi_memory.c:606 +msgid "DRAM Vendor" +msgstr "" + +#: modules/devices/dmi_memory.c:608 modules/devices/dmi_memory.c:753 +msgid "Part Number" +msgstr "" + +#: modules/devices/dmi_memory.c:610 +msgid "Manufacturing Date (Week / Year)" +msgstr "" + +#: modules/devices/dmi_memory.c:644 modules/devices/dmi_memory.c:879 +msgid "Memory Device List" +msgstr "" + +#: modules/devices/dmi_memory.c:686 +msgid "Memory Array" +msgstr "" + +#: modules/devices/dmi_memory.c:687 modules/devices/x86/processor.c:713 +msgid "DMI Handle" +msgstr "" + +#: modules/devices/dmi_memory.c:688 modules/devices/dmi_memory.c:746 +#: modules/devices/dmi_memory.c:784 modules/devices/dmi_memory.c:893 +msgid "Locator" +msgstr "" + +#: modules/devices/dmi_memory.c:689 +msgid "Use" +msgstr "" + +#: modules/devices/dmi_memory.c:690 +msgid "Error Correction Type" +msgstr "" + +#: modules/devices/dmi_memory.c:691 +msgid "Size (Present / Max)" +msgstr "" + +#: modules/devices/dmi_memory.c:692 +msgid "Devices (Populated / Sockets)" +msgstr "" + +#: modules/devices/dmi_memory.c:693 modules/devices/dmi_memory.c:827 +msgid "Types Present" +msgstr "" + +#: modules/devices/dmi_memory.c:744 modules/devices/dmi_memory.c:782 +msgid "Memory Socket" +msgstr "" + +#: modules/devices/dmi_memory.c:745 modules/devices/dmi_memory.c:783 +msgid "DMI Handles (Array, Socket)" +msgstr "" + +#: modules/devices/dmi_memory.c:747 modules/devices/dmi_memory.c:785 +msgid "Bank Locator" +msgstr "" + +#: modules/devices/dmi_memory.c:755 +msgid "Rated Speed" +msgstr "" + +#: modules/devices/dmi_memory.c:756 +msgid "Configured Speed" +msgstr "" + +#: modules/devices/dmi_memory.c:757 +msgid "Data Width/Total Width" +msgstr "" + +#: modules/devices/dmi_memory.c:758 +msgid "Rank" +msgstr "" + +#: modules/devices/dmi_memory.c:759 +msgid "Minimum Voltage" +msgstr "" + +#: modules/devices/dmi_memory.c:760 +msgid "Maximum Voltage" +msgstr "" + +#: modules/devices/dmi_memory.c:761 +msgid "Configured Voltage" +msgstr "" + +#: modules/devices/dmi_memory.c:786 modules/devices/dmi_memory.c:793 +#: modules/devices/monitors.c:492 +msgid "(Empty)" +msgstr "" + +#: modules/devices/dmi_memory.c:824 +msgid "Serial Presence Detect (SPD) Summary" +msgstr "" + +#: modules/devices/dmi_memory.c:947 +msgid " dmidecode utility available" +msgstr "" + +#: modules/devices/dmi_memory.c:948 +msgid " ... and HardInfo running with superuser privileges" +msgstr "" + +#: modules/devices/dmi_memory.c:949 +msgid " eeprom module loaded (for SDR, DDR, DDR2, DDR3)" +msgstr "" + +#: modules/devices/dmi_memory.c:950 +msgid "" +" ... or ee1004 module loaded and configured! " +"(for DDR4)" +msgstr "" + +#: modules/devices/dmi_memory.c:961 +msgid "Memory information requires one or both of the following:" +msgstr "" + +#: modules/devices/dmi_memory.c:982 +msgid "" +"\"More often than not, information contained in the DMI tables is " +"inaccurate,\n" +"incomplete or simply wrong.\" -dmidecode manual page" +msgstr "" + +#: modules/devices/firmware.c:69 +msgid "Device cannot be removed easily" +msgstr "" + +#: modules/devices/firmware.c:70 +msgid "Device is updatable in this or any other mode" +msgstr "" + +#: modules/devices/firmware.c:71 +msgid "Update can only be done from offline mode" +msgstr "" + +#: modules/devices/firmware.c:72 +msgid "Requires AC power" +msgstr "" + +#: modules/devices/firmware.c:73 +msgid "Is locked and can be unlocked" +msgstr "" + +#: modules/devices/firmware.c:74 +msgid "Is found in current metadata" +msgstr "" + +#: modules/devices/firmware.c:75 +msgid "Requires a bootloader mode to be manually enabled by the user" +msgstr "" + +#: modules/devices/firmware.c:76 +msgid "Has been registered with other plugins" +msgstr "" + +#: modules/devices/firmware.c:77 +msgid "Requires a reboot to apply firmware or to reload hardware" +msgstr "" + +#: modules/devices/firmware.c:78 +msgid "Requires system shutdown to apply firmware" +msgstr "" + +#: modules/devices/firmware.c:79 +msgid "Has been reported to a metadata server" +msgstr "" + +#: modules/devices/firmware.c:80 +msgid "User has been notified" +msgstr "" + +#: modules/devices/firmware.c:81 +msgid "Always use the runtime version rather than the bootloader" +msgstr "" + +#: modules/devices/firmware.c:82 +msgid "Install composite firmware on the parent before the child" +msgstr "" + +#: modules/devices/firmware.c:83 +msgid "Is currently in bootloader mode" +msgstr "" + +#: modules/devices/firmware.c:84 +msgid "The hardware is waiting to be replugged" +msgstr "" + +#: modules/devices/firmware.c:85 +msgid "Ignore validation safety checks when flashing this device" +msgstr "" + +#: modules/devices/firmware.c:86 +msgid "Requires the update to be retried with a new plugin" +msgstr "" + +#: modules/devices/firmware.c:87 +msgid "Do not add instance IDs from the device baseclass" msgstr "" -#. /bits of entropy for rng (medium value) -#: modules/computer/os.c:243 -#, c-format -msgid "%d bits (medium)" +#: modules/devices/firmware.c:88 +msgid "Device update needs to be separately activated" msgstr "" -#. /bits of entropy for rng (high/good value) -#: modules/computer/os.c:244 -#, c-format -msgid "%d bits (healthy)" +#: modules/devices/firmware.c:89 +msgid "" +"Ensure the version is a valid semantic version, e.g. numbers separated with " +"dots" msgstr "" -#: modules/computer/os.c:279 modules/devices/usb.c:48 modules/devices/usb.c:307 -#: modules/devices/usb.c:310 modules/network/net.c:442 includes/cpu_util.h:11 -msgid "(Unknown)" +#: modules/devices/firmware.c:90 +msgid "Extra metadata can be exposed about this device" msgstr "" -#: modules/computer/users.c:47 -msgid "User Information" +#: modules/devices/firmware.c:104 +msgid "DeviceId" msgstr "" -#: modules/computer/users.c:48 -msgid "User ID" +#: modules/devices/firmware.c:104 +msgid "Guid" msgstr "" -#: modules/computer/users.c:51 -msgid "Default Shell" +#: modules/devices/firmware.c:104 +msgid "Plugin" msgstr "" -#: modules/devices/alpha/processor.c:88 modules/devices/devicetree.c:141 -#: modules/devices/devicetree.c:176 modules/devices/devicetree/pmac_data.c:80 -#: modules/devices/ia64/processor.c:165 modules/devices/m68k/processor.c:84 -#: modules/devices/mips/processor.c:75 modules/devices/parisc/processor.c:155 -#: modules/devices/ppc/processor.c:158 modules/devices/riscv/processor.c:182 -#: modules/devices/s390/processor.c:132 modules/devices/spd-decode.c:1510 -msgid "Model" +#: modules/devices/firmware.c:104 modules/network.c:380 +msgid "Flags" msgstr "" -#: modules/devices/alpha/processor.c:89 -msgid "Platform String" +#: modules/devices/firmware.c:105 +msgid "VendorId" msgstr "" -#: modules/devices/alpha/processor.c:90 modules/devices/arm/processor.c:240 -#: modules/devices/ia64/processor.c:167 modules/devices/m68k/processor.c:87 -#: modules/devices/mips/processor.c:77 modules/devices/parisc/processor.c:158 -#: modules/devices/pci.c:108 modules/devices/ppc/processor.c:160 -#: modules/devices/riscv/processor.c:186 modules/devices/sh/processor.c:87 -#: modules/devices/x86/processor.c:420 -msgid "Frequency" +#: modules/devices/firmware.c:105 +msgid "VersionBootloader" msgstr "" -#: modules/devices/alpha/processor.c:90 modules/devices/arm/processor.c:240 -#: modules/devices/arm/processor.c:365 modules/devices.c:299 -#: modules/devices.c:307 modules/devices.c:335 -#: modules/devices/ia64/processor.c:167 modules/devices/ia64/processor.c:196 -#: modules/devices/m68k/processor.c:87 modules/devices/mips/processor.c:77 -#: modules/devices/parisc/processor.c:158 -#: modules/devices/parisc/processor.c:191 modules/devices/pci.c:108 -#: modules/devices/ppc/processor.c:160 modules/devices/ppc/processor.c:187 -#: modules/devices/riscv/processor.c:186 modules/devices/riscv/processor.c:214 -#: modules/devices/s390/processor.c:160 modules/devices/sh/processor.c:87 -#: modules/devices/sh/processor.c:88 modules/devices/sh/processor.c:89 -#: modules/devices/x86/processor.c:420 modules/devices/x86/processor.c:479 -msgid "MHz" +#: modules/devices/firmware.c:106 +msgid "Icon" msgstr "" -#: modules/devices/alpha/processor.c:91 modules/devices/arm/processor.c:241 -#: modules/devices/ia64/processor.c:168 modules/devices/m68k/processor.c:88 -#: modules/devices/mips/processor.c:78 modules/devices/parisc/processor.c:159 -#: modules/devices/ppc/processor.c:161 modules/devices/s390/processor.c:134 -#: modules/devices/sh/processor.c:90 modules/devices/x86/processor.c:421 -msgid "BogoMips" +#: modules/devices/firmware.c:106 +msgid "InstallDuration" msgstr "" -#: modules/devices/alpha/processor.c:92 modules/devices/arm/processor.c:242 -#: modules/devices/ia64/processor.c:169 modules/devices/m68k/processor.c:89 -#: modules/devices/mips/processor.c:79 modules/devices/parisc/processor.c:160 -#: modules/devices/ppc/processor.c:162 modules/devices/riscv/processor.c:187 -#: modules/devices/s390/processor.c:135 modules/devices/sh/processor.c:91 -#: modules/devices/sparc/processor.c:77 modules/devices/x86/processor.c:422 -msgid "Byte Order" +#: modules/devices/firmware.c:106 +msgid "Created" msgstr "" -#. /hw_cap -#. /flag:swp -#: modules/devices/arm/arm_data.c:42 -msgctxt "arm-flag" -msgid "SWP instruction (atomic read-modify-write)" +#: modules/devices/firmware.c:245 +msgid "Firmware List" msgstr "" -#. /flag:half -#: modules/devices/arm/arm_data.c:43 -msgctxt "arm-flag" -msgid "Half-word loads and stores" +#: modules/devices/firmware.c:258 +msgid "Requires the fwupdmgr utility." msgstr "" -#. /flag:thumb -#: modules/devices/arm/arm_data.c:44 -msgctxt "arm-flag" -msgid "Thumb (16-bit instruction set)" +#: modules/devices/gpu.c:84 modules/devices/pci.c:97 +msgid "SVendor" msgstr "" -#. /flag:26bit -#: modules/devices/arm/arm_data.c:45 -msgctxt "arm-flag" -msgid "26-Bit Model (Processor status register folded into program counter)" +#: modules/devices/gpu.c:85 modules/devices/pci.c:98 +msgid "SDevice" msgstr "" -#. /flag:fastmult -#: modules/devices/arm/arm_data.c:46 -msgctxt "arm-flag" -msgid "32x32->64-bit multiplication" +#: modules/devices/gpu.c:93 modules/devices/pci.c:108 +msgid "PCI Express" msgstr "" -#. /flag:fpa -#: modules/devices/arm/arm_data.c:47 -msgctxt "arm-flag" -msgid "Floating point accelerator" +#: modules/devices/gpu.c:94 modules/devices/pci.c:110 +msgid "Maximum Link Width" msgstr "" -#. /flag:vfp -#: modules/devices/arm/arm_data.c:48 -msgctxt "arm-flag" -msgid "VFP (early SIMD vector floating point instructions)" +#: modules/devices/gpu.c:95 modules/devices/pci.c:112 +msgid "Maximum Link Speed" msgstr "" -#. /flag:edsp -#: modules/devices/arm/arm_data.c:49 -msgctxt "arm-flag" -msgid "DSP extensions (the 'e' variant of the ARM9 CPUs, and all others above)" +#: modules/devices/gpu.c:95 modules/devices/pci.c:111 modules/devices/pci.c:112 +msgid "GT/s" msgstr "" -#. /flag:java -#: modules/devices/arm/arm_data.c:50 -msgctxt "arm-flag" -msgid "Jazelle (Java bytecode accelerator)" +#: modules/devices/gpu.c:105 +msgid "NVIDIA" msgstr "" -#. /flag:iwmmxt -#: modules/devices/arm/arm_data.c:51 -msgctxt "arm-flag" -msgid "SIMD instructions similar to Intel MMX" +#: modules/devices/gpu.c:107 +msgid "BIOS Version" msgstr "" -#. /flag:crunch -#: modules/devices/arm/arm_data.c:52 -msgctxt "arm-flag" -msgid "MaverickCrunch coprocessor (if kernel support enabled)" +#: modules/devices/gpu.c:108 +msgid "UUID" msgstr "" -#. /flag:thumbee -#: modules/devices/arm/arm_data.c:53 -msgctxt "arm-flag" -msgid "ThumbEE" +#: modules/devices/gpu.c:142 modules/devices/gpu.c:222 +#: modules/devices/inputdevices.c:110 modules/devices/pci.c:129 +#: modules/devices/usb.c:166 +msgid "Device Information" msgstr "" -#. /flag:neon -#: modules/devices/arm/arm_data.c:54 -msgctxt "arm-flag" -msgid "Advanced SIMD/NEON on AArch32" +#: modules/devices/gpu.c:143 modules/devices/gpu.c:223 +msgid "Location" msgstr "" -#. /flag:evtstrm -#: modules/devices/arm/arm_data.c:55 -msgctxt "arm-flag" -msgid "Kernel event stream using generic architected timer" +#: modules/devices/gpu.c:144 +msgid "DRM Device" msgstr "" -#. /flag:vfpv3 -#: modules/devices/arm/arm_data.c:56 -msgctxt "arm-flag" -msgid "VFP version 3" +#: modules/devices/gpu.c:145 modules/devices/pci.c:130 +#: modules/devices/usb.c:133 modules/devices/usb.c:174 +msgid "Class" msgstr "" -#. /flag:vfpv3d16 -#: modules/devices/arm/arm_data.c:57 -msgctxt "arm-flag" -msgid "VFP version 3 with 16 D-registers" +#: modules/devices/gpu.c:154 modules/devices/pci.c:135 +msgid "In Use" msgstr "" -#. /flag:vfpv4 -#: modules/devices/arm/arm_data.c:58 -msgctxt "arm-flag" -msgid "VFP version 4 with fast context switching" +#: modules/devices/gpu.c:185 +msgid "Unknown integrated GPU" msgstr "" -#. /flag:vfpd32 -#: modules/devices/arm/arm_data.c:59 -msgctxt "arm-flag" -msgid "VFP with 32 D-registers" +#: modules/devices/gpu.c:191 +msgid "clock-frequency property" msgstr "" -#. /flag:tls -#: modules/devices/arm/arm_data.c:60 -msgctxt "arm-flag" -msgid "TLS register" +#: modules/devices/gpu.c:192 +msgid "Operating Points (OPPv1)" msgstr "" -#. /flag:idiva -#: modules/devices/arm/arm_data.c:61 -msgctxt "arm-flag" -msgid "SDIV and UDIV hardware division in ARM mode" +#: modules/devices/gpu.c:193 +msgid "Operating Points (OPPv2)" msgstr "" -#. /flag:idivt -#: modules/devices/arm/arm_data.c:62 -msgctxt "arm-flag" -msgid "SDIV and UDIV hardware division in Thumb mode" +#: modules/devices/gpu.c:229 +msgid "Device Tree Node" msgstr "" -#. /flag:lpae -#: modules/devices/arm/arm_data.c:63 -msgctxt "arm-flag" -msgid "40-bit Large Physical Address Extension" +#: modules/devices/gpu.c:232 modules/devices/monitors.c:471 +#: modules/network/net.c:454 +msgid "Status" msgstr "" -#. /hw_cap2 -#. /flag:pmull -#: modules/devices/arm/arm_data.c:65 -msgctxt "arm-flag" -msgid "64x64->128-bit F2m multiplication (arch>8)" +#: modules/devices/gpu.c:249 +msgid "GPUs" msgstr "" -#. /flag:aes -#: modules/devices/arm/arm_data.c:66 -msgctxt "arm-flag" -msgid "Crypto:AES (arch>8)" +#: modules/devices/gpu.c:273 +msgid "No GPU devices found" msgstr "" -#. /flag:sha1 -#: modules/devices/arm/arm_data.c:67 -msgctxt "arm-flag" -msgid "Crypto:SHA1 (arch>8)" +#: modules/devices/ia64/processor.c:108 +msgid "IA64 Processor" msgstr "" -#. /flag:sha2 -#: modules/devices/arm/arm_data.c:68 -msgctxt "arm-flag" -msgid "Crypto:SHA2 (arch>8)" +#: modules/devices/ia64/processor.c:163 +msgid "Architecture Revision" msgstr "" -#. /flag:crc32 -#: modules/devices/arm/arm_data.c:69 -msgctxt "arm-flag" -msgid "CRC32 checksum instructions (arch>8)" +#: modules/devices/ia64/processor.c:170 +msgid "CPU regs" msgstr "" -#. /flag:asimd -#: modules/devices/arm/arm_data.c:72 -msgctxt "arm-flag" -msgid "Advanced SIMD/NEON on AArch64 (arch>8)" +#: modules/devices/ia64/processor.c:171 +msgid "Features" msgstr "" -#: modules/devices/arm/processor.c:142 -msgid "ARM Processor" +#: modules/devices/inputdevices.c:113 modules/devices/pci.c:139 +#: modules/devices/usb.c:180 +msgid "Bus" msgstr "" -#: modules/devices/arm/processor.c:200 modules/devices/riscv/processor.c:147 -#: modules/devices/x86/processor.c:371 -msgid "Empty List" +#: modules/devices/inputdevices.c:119 +msgid "Connected to" msgstr "" -#: modules/devices/arm/processor.c:237 -msgid "Linux Name" +#: modules/devices/inputdevices.c:123 +msgid "InfraRed port" msgstr "" -#: modules/devices/arm/processor.c:238 -msgid "Decoded Name" +#: modules/devices/m68k/processor.c:85 modules/devices/riscv/processor.c:185 +msgid "MMU" msgstr "" -#: modules/devices/arm/processor.c:239 modules/network/net.c:458 -msgid "Mode" +#: modules/devices/m68k/processor.c:86 modules/devices/sparc/processor.c:76 +msgid "FPU" msgstr "" -#: modules/devices/arm/processor.c:245 -msgid "ARM" +#: modules/devices/m68k/processor.c:90 +msgid "Calibration" msgstr "" -#: modules/devices/arm/processor.c:246 -msgid "Implementer" +#: modules/devices/mips/processor.c:76 +msgid "System Type" msgstr "" -#: modules/devices/arm/processor.c:247 -msgid "Part" +#: modules/devices/monitors.c:29 modules/devices/monitors.c:253 +#: modules/devices/monitors.c:346 modules/devices/spd-decode.c:595 +msgid "(Unspecified)" msgstr "" -#: modules/devices/arm/processor.c:248 modules/devices/ia64/processor.c:162 -#: modules/devices/parisc/processor.c:156 modules/devices/riscv/processor.c:183 -msgid "Architecture" +#: modules/devices/monitors.c:228 +#, c-format +msgid "Week %d of %d" msgstr "" -#: modules/devices/arm/processor.c:249 -msgid "Variant" +#: modules/devices/monitors.c:238 +msgid "Ok" msgstr "" -#: modules/devices/arm/processor.c:251 modules/devices/riscv/processor.c:190 -#: modules/devices/sparc/processor.c:78 modules/devices/x86/processor.c:428 -msgid "Capabilities" +#: modules/devices/monitors.c:238 +msgid "Fail" msgstr "" -#: modules/devices/arm/processor.c:335 -msgid "SOC/Package" +#: modules/devices/monitors.c:266 modules/devices/monitors.c:274 +#: modules/devices/monitors.c:282 modules/devices/monitors.c:293 +#: modules/devices/monitors.c:301 modules/devices/monitors.c:308 +#: modules/devices/monitors.c:316 modules/devices/monitors.c:324 +#: modules/devices/monitors.c:332 modules/devices/monitors.c:338 +msgid "(Empty List)" msgstr "" -#: modules/devices/arm/processor.c:338 modules/devices/cpu_util.c:222 -msgid "Topology" +#: modules/devices/monitors.c:390 +msgid "Signal Type" msgstr "" -#: modules/devices/arm/processor.c:339 -msgid "Clocks" +#: modules/devices/monitors.c:390 +msgid "Digital" msgstr "" -#: modules/devices/arm/processor.c:354 -msgid "SOC/Package Information" +#: modules/devices/monitors.c:390 +msgid "Analog" msgstr "" -#: modules/devices/battery.c:181 -#, c-format -msgid "" -"\n" -"[Battery: %s]\n" -"State=%s (load: %s)\n" -"Capacity=%s / %s (%.2f%%)\n" -"Battery Technology=%s (%s)\n" -"Manufacturer=%s\n" -"Model Number=%s\n" -"Serial Number=%s\n" +#: modules/devices/monitors.c:391 modules/devices/usb.c:132 +#: modules/network.c:310 modules/network.c:363 modules/network.c:380 +msgid "Interface" msgstr "" -#: modules/devices/battery.c:258 -#, c-format -msgid "" -"\n" -"[Battery: %s]\n" -"State=%s\n" -"Capacity=%s / %s\n" -"Battery Technology=%s\n" -"Manufacturer=%s\n" -"Model Number=%s\n" -"Serial Number=%s\n" +#: modules/devices/monitors.c:392 +msgid "Bits per Color Channel" msgstr "" -#: modules/devices/battery.c:346 -#, c-format -msgid "" -"\n" -"[Battery (APM)]\n" -"Charge=%d%%\n" -"Remaining Charge=%s of %s\n" -"Using=%s\n" -"APM driver version=%s\n" -"APM BIOS version=%s\n" +#: modules/devices/monitors.c:393 +msgid "Speaker Allocation" msgstr "" -#: modules/devices/battery.c:358 -#, c-format -msgid "" -"\n" -"[Battery (APM)]\n" -"Charge=%d%%\n" -"Using=%s\n" -"APM driver version=%s\n" -"APM BIOS version=%s\n" +#: modules/devices/monitors.c:394 +msgid "Output (Max)" msgstr "" -#: modules/devices/battery.c:385 -msgid "" -"[No batteries]\n" -"No batteries found on this system=\n" +#: modules/devices/monitors.c:397 +msgid "EDID Device" msgstr "" -#: modules/devices.c:97 -msgid "PCI Devices" +#: modules/devices/monitors.c:401 +msgid "Serial" msgstr "" -#: modules/devices.c:98 modules/devices/usb.c:117 modules/devices/usb.c:156 -#: modules/devices/usb.c:415 -msgid "USB Devices" +#: modules/devices/monitors.c:402 +msgid "Manufacture Date" msgstr "" -#: modules/devices.c:100 -msgid "Battery" +#: modules/devices/monitors.c:403 +msgid "EDID Meta" msgstr "" -#: modules/devices.c:101 -msgid "Sensors" +#: modules/devices/monitors.c:404 +msgid "Data Size" msgstr "" -#: modules/devices.c:105 -msgid "DMI" +#: modules/devices/monitors.c:404 +msgid "bytes" msgstr "" -#: modules/devices.c:106 -msgid "Memory SPD" +#: modules/devices/monitors.c:406 +msgid "Extension Blocks" msgstr "" -#: modules/devices.c:111 -msgid "Device Tree" +#: modules/devices/monitors.c:407 +msgid "Extended to" msgstr "" -#: modules/devices.c:113 -msgid "Resources" +#: modules/devices/monitors.c:408 +msgid "Checksum" msgstr "" -#: modules/devices.c:151 -#, c-format -msgid "%d physical processor" -msgid_plural "%d physical processors" -msgstr[0] "" -msgstr[1] "" +#: modules/devices/monitors.c:409 +msgid "EDID Descriptors" +msgstr "" -#: modules/devices.c:152 -#, c-format -msgid "%d core" -msgid_plural "%d cores" -msgstr[0] "" -msgstr[1] "" +#: modules/devices/monitors.c:410 +msgid "Detailed Timing Descriptors (DTD)" +msgstr "" -#: modules/devices.c:153 -#, c-format -msgid "%d thread" -msgid_plural "%d threads" -msgstr[0] "" -msgstr[1] "" +#: modules/devices/monitors.c:411 +msgid "Established Timings Bitmap (ETB)" +msgstr "" -#. /NP procs; NC cores; NT threads -#: modules/devices.c:154 -#, c-format -msgid "%s; %s; %s" +#: modules/devices/monitors.c:412 +msgid "Standard Timings (STD)" msgstr "" -#: modules/devices.c:372 -msgid " (model unknown)" +#: modules/devices/monitors.c:413 +msgid "E-EDID Extension Blocks" msgstr "" -#: modules/devices.c:374 -msgid " (vendor unknown)" +#: modules/devices/monitors.c:414 +msgid "EIA/CEA-861 Data Blocks" msgstr "" -#: modules/devices.c:559 -msgid "Field" +#: modules/devices/monitors.c:415 +msgid "EIA/CEA-861 Short Audio Descriptors" msgstr "" -#: modules/devices.c:559 modules/devices.c:591 -msgid "Value" +#: modules/devices/monitors.c:416 +msgid "EIA/CEA-861 Short Video Descriptors" msgstr "" -#: modules/devices.c:591 -msgid "Sensor" +#: modules/devices/monitors.c:417 +msgid "DisplayID Timings" msgstr "" -#: modules/devices.c:591 modules/devices/inputdevices.c:117 -msgid "Type" +#: modules/devices/monitors.c:418 +msgid "DisplayID Strings" msgstr "" -#: modules/devices.c:637 -msgid "Devices" +#: modules/devices/monitors.c:419 +msgid "Hex Dump" msgstr "" -#: modules/devices.c:649 -msgid "Update PCI ID listing" +#: modules/devices/monitors.c:419 +msgid "Data" msgstr "" -#: modules/devices.c:661 -msgid "Update CPU feature database" +#: modules/devices/monitors.c:469 modules/devices/monitors.c:501 +#: modules/devices/pci.c:137 modules/devices/usb.c:179 +msgid "Connection" msgstr "" -#: modules/devices.c:689 -msgid "Gathers information about hardware devices" +#: modules/devices/monitors.c:470 +msgid "DRM" msgstr "" -#: modules/devices.c:708 -msgid "Resource information requires superuser privileges" +#: modules/devices/parisc/processor.c:107 +msgid "PA-RISC Processor" msgstr "" -#: modules/devices/cpu_util.c:30 -msgid "Little Endian" +#: modules/devices/parisc/processor.c:161 +msgid "HVersion" msgstr "" -#: modules/devices/cpu_util.c:32 -msgid "Big Endian" +#: modules/devices/parisc/processor.c:162 +msgid "SVersion" msgstr "" -#: modules/devices/cpu_util.c:178 modules/devices/cpu_util.c:189 -msgid "Frequency Scaling" +#: modules/devices/pci.c:109 +msgid "Link Width" msgstr "" -#: modules/devices/cpu_util.c:179 -msgid "Minimum" +#: modules/devices/pci.c:111 +msgid "Link Speed" msgstr "" -#: modules/devices/cpu_util.c:179 modules/devices/cpu_util.c:180 -#: modules/devices/cpu_util.c:181 -msgid "kHz" +#: modules/devices/pci.c:138 +msgid "Domain" msgstr "" -#: modules/devices/cpu_util.c:180 -msgid "Maximum" +#: modules/devices/pci.c:141 +msgid "Function" msgstr "" -#: modules/devices/cpu_util.c:181 -msgid "Current" +#: modules/devices/pci.c:185 +msgid "No PCI devices found" msgstr "" -#: modules/devices/cpu_util.c:182 -msgid "Transition Latency" +#: modules/devices/ppc/processor.c:117 +msgid "POWER Processor" msgstr "" -#: modules/devices/cpu_util.c:182 -msgid "ns" +#: modules/devices/printers.c:81 +msgid "⚬ Can do black and white printing=\n" msgstr "" -#: modules/devices/cpu_util.c:183 -msgid "Governor" +#: modules/devices/printers.c:83 +msgid "⚬ Can do color printing=\n" msgstr "" -#: modules/devices/cpu_util.c:184 modules/devices/cpu_util.c:190 -msgid "Driver" +#: modules/devices/printers.c:85 +msgid "⚬ Can do duplexing=\n" msgstr "" -#: modules/devices/cpu_util.c:196 modules/devices/x86/processor.c:297 -msgid "(Not Available)" +#: modules/devices/printers.c:87 +msgid "⚬ Can do staple output=\n" msgstr "" -#: modules/devices/cpu_util.c:204 modules/devices/cpu_util.c:206 -msgid "Socket" +#: modules/devices/printers.c:89 +msgid "⚬ Can do copies=\n" msgstr "" -#: modules/devices/cpu_util.c:209 modules/devices/cpu_util.c:211 -msgid "Core" +#: modules/devices/printers.c:91 +msgid "⚬ Can collate copies=\n" msgstr "" -#: modules/devices/cpu_util.c:214 -msgid "Book" +#: modules/devices/printers.c:93 +msgid "⚬ Printer is rejecting jobs=\n" msgstr "" -#: modules/devices/cpu_util.c:216 -msgid "Drawer" +#: modules/devices/printers.c:95 +msgid "⚬ Printer was automatically discovered and added=\n" msgstr "" -#: modules/devices/cpu_util.c:223 -msgid "ID" +#: modules/devices/printers.c:110 +msgid "Idle" msgstr "" -#: modules/devices/devicetree.c:47 -msgid "Properties" +#: modules/devices/printers.c:112 +msgid "Printing a Job" msgstr "" -#: modules/devices/devicetree.c:48 -msgid "Children" +#: modules/devices/printers.c:114 +msgid "Stopped" msgstr "" -#: modules/devices/devicetree.c:84 -msgid "Node" +#: modules/devices/printers.c:190 +msgid "" +"[Printers]\n" +"No suitable CUPS library found=" msgstr "" -#: modules/devices/devicetree.c:85 -msgid "Node Path" +#: modules/devices/printers.c:200 +msgid "[Printers (CUPS)]\n" msgstr "" -#: modules/devices/devicetree.c:86 -msgid "Alias" +#: modules/devices/printers.c:263 +msgid "" +"[Printers]\n" +"No printers found=\n" msgstr "" -#: modules/devices/devicetree.c:86 modules/devices/devicetree.c:87 -msgid "(None)" +#: modules/devices/riscv/processor.c:107 +msgid "RISC-V Processor" msgstr "" -#: modules/devices/devicetree.c:87 -msgid "Symbol" +#: modules/devices/riscv/processor.c:184 +msgid "uarch" msgstr "" -#: modules/devices/devicetree.c:132 modules/devices/devicetree/pmac_data.c:79 -msgid "Platform" +#. /ext:RV32 +#: modules/devices/riscv/riscv_data.c:37 +msgctxt "rv-ext" +msgid "RISC-V 32-bit" msgstr "" -#: modules/devices/devicetree.c:133 modules/devices/devicetree.c:178 -msgid "Compatible" +#. /ext:RV64 +#: modules/devices/riscv/riscv_data.c:38 +msgctxt "rv-ext" +msgid "RISC-V 64-bit" msgstr "" -#: modules/devices/devicetree.c:134 -msgid "GPU-compatible" +#. /ext:RV128 +#: modules/devices/riscv/riscv_data.c:39 +msgctxt "rv-ext" +msgid "RISC-V 128-bit" msgstr "" -#: modules/devices/devicetree.c:140 -msgid "Raspberry Pi or Compatible" +#. /ext:E +#: modules/devices/riscv/riscv_data.c:40 +msgctxt "rv-ext" +msgid "Base embedded integer instructions (15 registers)" msgstr "" -#: modules/devices/devicetree.c:142 modules/devices/devicetree.c:160 -#: modules/devices/devicetree.c:177 modules/devices/devicetree/rpi_data.c:160 -msgid "Serial Number" +#. /ext:I +#: modules/devices/riscv/riscv_data.c:41 +msgctxt "rv-ext" +msgid "Base integer instructions (31 registers)" msgstr "" -#: modules/devices/devicetree.c:143 modules/devices/devicetree/rpi_data.c:157 -msgid "RCode" +#. /ext:M +#: modules/devices/riscv/riscv_data.c:42 +msgctxt "rv-ext" +msgid "Hardware integer multiply and divide" msgstr "" -#: modules/devices/devicetree.c:143 -msgid "No revision code available; unable to lookup model details." +#. /ext:A +#: modules/devices/riscv/riscv_data.c:43 +msgctxt "rv-ext" +msgid "Atomic memory operations" msgstr "" -#: modules/devices/devicetree.c:159 -msgid "More" +#. /ext:C +#: modules/devices/riscv/riscv_data.c:44 +msgctxt "rv-ext" +msgid "Compressed 16-bit instructions" msgstr "" -#: modules/devices/devicetree.c:175 -msgid "Board" +#. /ext:F +#: modules/devices/riscv/riscv_data.c:45 +msgctxt "rv-ext" +msgid "Floating-point instructions, single-precision" msgstr "" -#: modules/devices/devicetree.c:234 -msgid "Messages" +#. /ext:D +#: modules/devices/riscv/riscv_data.c:46 +msgctxt "rv-ext" +msgid "Floating-point instructions, double-precision" msgstr "" -#: modules/devices/devicetree/dt_util.c:1013 -msgid "phandle Map" +#. /ext:Q +#: modules/devices/riscv/riscv_data.c:47 +msgctxt "rv-ext" +msgid "Floating-point instructions, quad-precision" msgstr "" -#: modules/devices/devicetree/dt_util.c:1014 -msgid "Alias Map" +#. /ext:B +#: modules/devices/riscv/riscv_data.c:48 +msgctxt "rv-ext" +msgid "Bit manipulation instructions" msgstr "" -#: modules/devices/devicetree/dt_util.c:1015 -msgid "Symbol Map" +#. /ext:V +#: modules/devices/riscv/riscv_data.c:49 +msgctxt "rv-ext" +msgid "Vector operations" msgstr "" -#: modules/devices/devicetree/pmac_data.c:78 -msgid "Apple Power Macintosh" +#. /ext:T +#: modules/devices/riscv/riscv_data.c:50 +msgctxt "rv-ext" +msgid "Transactional memory" msgstr "" -#: modules/devices/devicetree/pmac_data.c:81 modules/devices/sh/processor.c:85 -msgid "Machine" +#. /ext:P +#: modules/devices/riscv/riscv_data.c:51 +msgctxt "rv-ext" +msgid "Packed SIMD instructions" msgstr "" -#: modules/devices/devicetree/pmac_data.c:83 -msgid "Detected as" +#. /ext:L +#: modules/devices/riscv/riscv_data.c:52 +msgctxt "rv-ext" +msgid "Decimal floating-point instructions" msgstr "" -#: modules/devices/devicetree/pmac_data.c:84 -msgid "PMAC Flags" +#. /ext:J +#: modules/devices/riscv/riscv_data.c:53 +msgctxt "rv-ext" +msgid "Dynamically translated languages" msgstr "" -#: modules/devices/devicetree/pmac_data.c:85 -msgid "L2 Cache" +#. /ext:N +#: modules/devices/riscv/riscv_data.c:54 +msgctxt "rv-ext" +msgid "User-level interrupts" msgstr "" -#: modules/devices/devicetree/pmac_data.c:86 -msgid "PMAC Generation" +#: modules/devices/s390/processor.c:92 +msgid "S390 Processor" msgstr "" -#: modules/devices/devicetree/rpi_data.c:152 -#: modules/devices/devicetree/rpi_data.c:153 -msgid "Raspberry Pi" +#: modules/devices/s390/processor.c:133 +msgid "ID String" msgstr "" -#: modules/devices/devicetree/rpi_data.c:153 -msgid "Board Name" +#: modules/devices/sh/processor.c:55 +msgid "SuperH Processor" msgstr "" -#: modules/devices/devicetree/rpi_data.c:154 -msgid "PCB Revision" +#: modules/devices/sh/processor.c:88 +msgid "Bus Frequency" msgstr "" -#: modules/devices/devicetree/rpi_data.c:155 -msgid "Introduction" +#: modules/devices/sh/processor.c:89 +msgid "Module Frequency" msgstr "" -#: modules/devices/devicetree/rpi_data.c:156 modules/devices/spd-decode.c:1510 -#: modules/devices/usb.c:84 modules/devices/usb.c:217 -msgid "Manufacturer" +#: modules/devices/spd-decode.c:306 +msgid "Row address bits" msgstr "" -#: modules/devices/devicetree/rpi_data.c:158 -msgid "SOC (spec)" +#: modules/devices/spd-decode.c:307 +msgid "Column address bits" msgstr "" -#: modules/devices/devicetree/rpi_data.c:159 -msgid "Memory (spec)" +#: modules/devices/spd-decode.c:308 +msgid "Number of rows" msgstr "" -#: modules/devices/devicetree/rpi_data.c:161 -msgid "Permanent overvolt bit" +#: modules/devices/spd-decode.c:309 +msgid "Data width" msgstr "" -#: modules/devices/devicetree/rpi_data.c:161 -msgctxt "rpi-ov-bit" -msgid "Set" +#: modules/devices/spd-decode.c:310 +msgid "Interface signal levels" msgstr "" -#: modules/devices/devicetree/rpi_data.c:161 -msgctxt "rpi-ov-bit" -msgid "Not set" +#: modules/devices/spd-decode.c:311 +msgid "Configuration type" msgstr "" -#: modules/devices/devmemory.c:93 -msgid "Total Memory" +#: modules/devices/spd-decode.c:312 +msgid "Refresh" msgstr "" -#: modules/devices/devmemory.c:94 -msgid "Free Memory" +#: modules/devices/spd-decode.c:313 modules/devices/spd-decode.c:397 +#: modules/devices/spd-decode.c:492 modules/devices/spd-decode.c:617 +msgid "Timings" msgstr "" -#: modules/devices/devmemory.c:95 -msgid "Cached Swap" +#: modules/devices/spd-decode.c:593 +msgid "Ranks" msgstr "" -#: modules/devices/devmemory.c:96 -msgid "High Memory" +#: modules/devices/spd-decode.c:594 +msgid "IO Pins per Chip" msgstr "" -#: modules/devices/devmemory.c:97 -msgid "Free High Memory" +#: modules/devices/spd-decode.c:595 +msgid "Die count" msgstr "" -#: modules/devices/devmemory.c:98 -msgid "Low Memory" +#: modules/devices/spd-decode.c:596 +msgid "Thermal Sensor" msgstr "" -#: modules/devices/devmemory.c:99 -msgid "Free Low Memory" +#: modules/devices/spd-decode.c:596 +msgid "Present" msgstr "" -#: modules/devices/devmemory.c:100 -msgid "Virtual Memory" +#: modules/devices/spd-decode.c:596 +msgid "Not present" msgstr "" -#: modules/devices/devmemory.c:101 -msgid "Free Virtual Memory" +#: modules/devices/spd-decode.c:597 +msgid "Supported Voltages" msgstr "" -#: modules/devices/dmi.c:188 -msgid "(Not available; Perhaps try running HardInfo as root.)" +#: modules/devices/spd-decode.c:601 +msgid "Supported CAS Latencies" msgstr "" -#: modules/devices/ia64/processor.c:108 -msgid "IA64 Processor" +#: modules/devices/spd-decode.c:638 +msgid "Invalid" msgstr "" -#: modules/devices/ia64/processor.c:163 -msgid "Architecture Revision" +#: modules/devices/spd-decode.c:870 +msgid "XMP Profile" msgstr "" -#: modules/devices/ia64/processor.c:164 modules/devices/sh/processor.c:86 -msgid "Family" +#: modules/devices/spd-decode.c:871 modules/devices/usb.c:173 +msgid "Speed" msgstr "" -#: modules/devices/ia64/processor.c:170 -msgid "CPU regs" +#: modules/devices/spd-decode.c:872 modules/devices/spd-decode.c:914 +#: modules/devices/x86/processor.c:715 +msgid "Voltage" msgstr "" -#: modules/devices/ia64/processor.c:171 -msgid "Features" +#: modules/devices/spd-decode.c:873 +msgid "XMP Timings" msgstr "" -#: modules/devices/inputdevices.c:115 modules/devices/pci.c:214 -#: modules/devices/usb.c:82 modules/devices/usb.c:215 modules/devices/usb.c:347 -msgid "Device Information" +#: modules/devices/spd-decode.c:915 +msgid "XMP" msgstr "" -#: modules/devices/inputdevices.c:118 modules/devices/usb.c:92 -#: modules/devices/usb.c:240 modules/devices/usb.c:356 -msgid "Bus" +#: modules/devices/spd-decode.c:916 +msgid "JEDEC Timings" msgstr "" -#: modules/devices/inputdevices.c:120 modules/devices/usb.c:83 -#: modules/devices/usb.c:216 modules/devices/usb.c:348 -msgid "Product" +#: modules/devices/storage.c:84 +msgid "Read Error Rate" msgstr "" -#: modules/devices/inputdevices.c:124 -msgid "Connected to" +#: modules/devices/storage.c:85 +msgid "Throughput Performance" msgstr "" -#: modules/devices/inputdevices.c:128 -msgid "InfraRed port" +#: modules/devices/storage.c:86 +msgid "Spin-Up Time" msgstr "" -#: modules/devices/m68k/processor.c:85 modules/devices/riscv/processor.c:185 -msgid "MMU" +#: modules/devices/storage.c:87 +msgid "Start/Stop Count" msgstr "" -#: modules/devices/m68k/processor.c:86 modules/devices/sparc/processor.c:76 -msgid "FPU" +#: modules/devices/storage.c:88 +msgid "Reallocated Sector Count" msgstr "" -#: modules/devices/m68k/processor.c:90 -msgid "Calibration" +#: modules/devices/storage.c:89 +msgid "Read Channel Margin" msgstr "" -#: modules/devices/mips/processor.c:76 -msgid "System Type" +#: modules/devices/storage.c:90 +msgid "Seek Error Rate" msgstr "" -#: modules/devices/parisc/processor.c:107 -msgid "PA-RISC Processor" +#: modules/devices/storage.c:91 +msgid "Seek Timer Performance" msgstr "" -#: modules/devices/parisc/processor.c:157 -msgid "System" +#: modules/devices/storage.c:92 modules/devices/storage.c:131 +msgid "Power-On Hours" msgstr "" -#: modules/devices/parisc/processor.c:161 -msgid "HVersion" +#: modules/devices/storage.c:93 +msgid "Spin Retry Count" msgstr "" -#: modules/devices/parisc/processor.c:162 -msgid "SVersion" +#: modules/devices/storage.c:94 +msgid "Calibration Retry Count" msgstr "" -#: modules/devices/parisc/processor.c:163 modules/devices/x86/processor.c:425 -msgid "Cache" +#: modules/devices/storage.c:95 +msgid "Power Cycle Count" msgstr "" -#: modules/devices/pci.c:106 -msgid "IRQ" +#: modules/devices/storage.c:96 modules/devices/storage.c:113 +msgid "Soft Read Error Rate" msgstr "" -#: modules/devices/pci.c:110 -msgid "Latency" +#: modules/devices/storage.c:97 +msgid "Runtime Bad Block" msgstr "" -#: modules/devices/pci.c:112 -msgid "Bus Master" +#: modules/devices/storage.c:98 +msgid "End-to-End error" msgstr "" -#: modules/devices/pci.c:118 -msgid "Kernel modules" +#: modules/devices/storage.c:99 +msgid "Reported Uncorrectable Errors" msgstr "" -#: modules/devices/pci.c:124 -#, c-format -msgid "%s=%s (%s)\n" +#: modules/devices/storage.c:100 +msgid "Command Timeout" msgstr "" -#: modules/devices/pci.c:126 -msgid "OEM Vendor" +#: modules/devices/storage.c:101 +msgid "High Fly Writes" msgstr "" -#: modules/devices/pci.c:153 -msgid "prefetchable" +#: modules/devices/storage.c:102 +msgid "Airflow Temperature" msgstr "" -#: modules/devices/pci.c:154 -msgid "non-prefetchable" +#: modules/devices/storage.c:103 +msgid "G-sense Error Rate" msgstr "" -#: modules/devices/pci.c:163 -msgid "I/O ports at" +#: modules/devices/storage.c:104 +msgid "Power-off Retract Count" msgstr "" -#: modules/devices/pci.c:216 modules/devices/usb.c:89 modules/devices/usb.c:237 -#: modules/devices/usb.c:353 -msgid "Class" +#: modules/devices/storage.c:105 +msgid "Load Cycle Count" msgstr "" -#: modules/devices/pci.c:217 -msgid "Domain" +#: modules/devices/storage.c:106 modules/devices/storage.c:129 +msgid "Temperature" msgstr "" -#: modules/devices/pci.c:218 -msgid "Bus, device, function" +#: modules/devices/storage.c:107 +msgid "Hardware ECC Recovered" msgstr "" -#: modules/devices/pci.c:243 -msgid "No PCI devices found" +#: modules/devices/storage.c:108 +msgid "Reallocation Event Count" msgstr "" -#: modules/devices/ppc/processor.c:117 -msgid "POWER Processor" +#: modules/devices/storage.c:109 +msgid "Current Pending Sector Count" +msgstr "" + +#: modules/devices/storage.c:110 +msgid "Uncorrectable Sector Count" +msgstr "" + +#: modules/devices/storage.c:111 +msgid "UltraDMA CRC Error Count" msgstr "" -#: modules/devices/printers.c:81 -msgid "⚬ Can do black and white printing=\n" +#: modules/devices/storage.c:112 +msgid "Multi-Zone Error Rate" msgstr "" -#: modules/devices/printers.c:83 -msgid "⚬ Can do color printing=\n" +#: modules/devices/storage.c:114 +msgid "Run Out Cancel" msgstr "" -#: modules/devices/printers.c:85 -msgid "⚬ Can do duplexing=\n" +#: modules/devices/storage.c:115 +msgid "Flying Height" msgstr "" -#: modules/devices/printers.c:87 -msgid "⚬ Can do staple output=\n" +#: modules/devices/storage.c:116 +msgid "Spin High Current" msgstr "" -#: modules/devices/printers.c:89 -msgid "⚬ Can do copies=\n" +#: modules/devices/storage.c:117 +msgid "Spin Buzz" msgstr "" -#: modules/devices/printers.c:91 -msgid "⚬ Can collate copies=\n" +#: modules/devices/storage.c:118 +msgid "Offline Seek Performance" msgstr "" -#: modules/devices/printers.c:93 -msgid "⚬ Printer is rejecting jobs=\n" +#: modules/devices/storage.c:119 +msgid "Disk Shift" msgstr "" -#: modules/devices/printers.c:95 -msgid "⚬ Printer was automatically discovered and added=\n" +#: modules/devices/storage.c:120 +msgid "G-Sense Error Rate" msgstr "" -#: modules/devices/printers.c:110 -msgid "Idle" +#: modules/devices/storage.c:121 +msgid "Loaded Hours" msgstr "" -#: modules/devices/printers.c:112 -msgid "Printing a Job" +#: modules/devices/storage.c:122 +msgid "Load/Unload Retry Count" msgstr "" -#: modules/devices/printers.c:114 -msgid "Stopped" +#: modules/devices/storage.c:123 +msgid "Load Friction" msgstr "" -#: modules/devices/printers.c:190 -msgid "" -"[Printers]\n" -"No suitable CUPS library found=" +#: modules/devices/storage.c:124 +msgid "Load/Unload Cycle Count" msgstr "" -#: modules/devices/printers.c:200 -msgid "[Printers (CUPS)]\n" +#: modules/devices/storage.c:125 +msgid "Load-in time" msgstr "" -#: modules/devices/printers.c:263 -msgid "" -"[Printers]\n" -"No printers found=\n" +#: modules/devices/storage.c:126 +msgid "Torque Amplification Count" msgstr "" -#: modules/devices/riscv/processor.c:107 -msgid "RISC-V Processor" +#: modules/devices/storage.c:127 +msgid "Power-Off Retract Count" msgstr "" -#: modules/devices/riscv/processor.c:184 -msgid "uarch" +#: modules/devices/storage.c:128 +msgid "GMR Head Amplitude" msgstr "" -#. /ext:RV32 -#: modules/devices/riscv/riscv_data.c:37 -msgctxt "rv-ext" -msgid "RISC-V 32-bit" +#: modules/devices/storage.c:130 +msgid "Endurance Remaining" msgstr "" -#. /ext:RV64 -#: modules/devices/riscv/riscv_data.c:38 -msgctxt "rv-ext" -msgid "RISC-V 64-bit" +#: modules/devices/storage.c:132 +msgid "Good Block Rate" msgstr "" -#. /ext:RV128 -#: modules/devices/riscv/riscv_data.c:39 -msgctxt "rv-ext" -msgid "RISC-V 128-bit" +#: modules/devices/storage.c:133 +msgid "Head Flying Hours" msgstr "" -#. /ext:E -#: modules/devices/riscv/riscv_data.c:40 -msgctxt "rv-ext" -msgid "Base embedded integer instructions (15 registers)" +#: modules/devices/storage.c:134 +msgid "Read Error Retry Rate" msgstr "" -#. /ext:I -#: modules/devices/riscv/riscv_data.c:41 -msgctxt "rv-ext" -msgid "Base integer instructions (31 registers)" +#: modules/devices/storage.c:135 +msgid "Total LBAs Written" msgstr "" -#. /ext:M -#: modules/devices/riscv/riscv_data.c:42 -msgctxt "rv-ext" -msgid "Hardware integer multiply and divide" +#: modules/devices/storage.c:136 +msgid "Total LBAs Read" msgstr "" -#. /ext:A -#: modules/devices/riscv/riscv_data.c:43 -msgctxt "rv-ext" -msgid "Atomic memory operations" +#: modules/devices/storage.c:141 +msgid "" +"\n" +"[UDisks2]\n" msgstr "" -#. /ext:C -#: modules/devices/riscv/riscv_data.c:44 -msgctxt "rv-ext" -msgid "Compressed 16-bit instructions" +#: modules/devices/storage.c:199 +msgid "Removable" msgstr "" -#. /ext:F -#: modules/devices/riscv/riscv_data.c:45 -msgctxt "rv-ext" -msgid "Floating-point instructions, single-precision" +#: modules/devices/storage.c:199 +msgid "Fixed" msgstr "" -#. /ext:D -#: modules/devices/riscv/riscv_data.c:46 -msgctxt "rv-ext" -msgid "Floating-point instructions, double-precision" +#: modules/devices/storage.c:202 +msgid "Ejectable" msgstr "" -#. /ext:Q -#: modules/devices/riscv/riscv_data.c:47 -msgctxt "rv-ext" -msgid "Floating-point instructions, quad-precision" +#: modules/devices/storage.c:205 +msgid "Self-monitoring (S.M.A.R.T.)" msgstr "" -#. /ext:B -#: modules/devices/riscv/riscv_data.c:48 -msgctxt "rv-ext" -msgid "Bit manipulation instructions" +#: modules/devices/storage.c:208 modules/devices/x86/processor.c:663 +msgid "Power Management" msgstr "" -#. /ext:V -#: modules/devices/riscv/riscv_data.c:49 -msgctxt "rv-ext" -msgid "Vector operations" +#: modules/devices/storage.c:211 +msgid "Advanced Power Management" msgstr "" -#. /ext:T -#: modules/devices/riscv/riscv_data.c:50 -msgctxt "rv-ext" -msgid "Transactional memory" +#: modules/devices/storage.c:214 +msgid "Automatic Acoustic Management" msgstr "" -#. /ext:P -#: modules/devices/riscv/riscv_data.c:51 -msgctxt "rv-ext" -msgid "Packed SIMD instructions" +#: modules/devices/storage.c:217 +#, c-format +msgid "" +"[Drive Information]\n" +"Model=%s\n" msgstr "" -#. /ext:L -#: modules/devices/riscv/riscv_data.c:52 -msgctxt "rv-ext" -msgid "Decimal floating-point instructions" +#: modules/devices/storage.c:221 modules/devices/storage.c:449 +#: modules/devices/storage.c:648 +#, c-format +msgid "Vendor=%s\n" msgstr "" -#. /ext:J -#: modules/devices/riscv/riscv_data.c:53 -msgctxt "rv-ext" -msgid "Dynamically translated languages" +#: modules/devices/storage.c:226 +#, c-format +msgid "" +"Revision=%s\n" +"Block Device=%s\n" +"Serial=%s\n" +"Size=%s\n" +"Features=%s\n" msgstr "" -#. /ext:N -#: modules/devices/riscv/riscv_data.c:54 -msgctxt "rv-ext" -msgid "User-level interrupts" +#: modules/devices/storage.c:240 +#, c-format +msgid "Rotation Rate=%d RPM\n" msgstr "" -#: modules/devices/s390/processor.c:92 -msgid "S390 Processor" +#: modules/devices/storage.c:243 +#, c-format +msgid "" +"Media=%s\n" +"Media compatibility=%s\n" msgstr "" -#: modules/devices/s390/processor.c:133 -msgid "ID String" +#: modules/devices/storage.c:250 +#, c-format +msgid "Connection bus=%s\n" msgstr "" -#: modules/devices/sh/processor.c:55 -msgid "SuperH Processor" +#: modules/devices/storage.c:253 +#, c-format +msgid "" +"[Self-monitoring (S.M.A.R.T.)]\n" +"Status=%s\n" +"Bad Sectors=%ld\n" +"Power on time=%d days %d hours\n" +"Temperature=%d°C\n" msgstr "" -#: modules/devices/sh/processor.c:88 -msgid "Bus Frequency" +#: modules/devices/storage.c:259 +msgid "Failing" msgstr "" -#: modules/devices/sh/processor.c:89 -msgid "Module Frequency" +#: modules/devices/storage.c:259 +msgid "OK" msgstr "" -#: modules/devices/spd-decode.c:1475 +#: modules/devices/storage.c:265 msgid "" -"[SPD]\n" -"Please load the eeprom module to obtain information about memory SPD=\n" -"[$ShellParam$]\n" -"ReloadInterval=500\n" +"[S.M.A.R.T. Attributes]\n" +"Attribute=Normalized Value / Worst / Threshold\n" msgstr "" -#: modules/devices/spd-decode.c:1480 -msgid "" -"[SPD]\n" -"Reading memory SPD not supported on this system=\n" +#: modules/devices/storage.c:297 +#, c-format +msgid "(%d) %s=%s\n" msgstr "" -#: modules/devices/spd-decode.c:1509 -msgid "SPD" +#: modules/devices/storage.c:306 +#, c-format +msgid "" +"[Partition table]\n" +"Type=%s\n" msgstr "" -#: modules/devices/spd-decode.c:1510 -msgid "Bank" +#: modules/devices/storage.c:325 +#, c-format +msgid "Partition %s=%s\n" msgstr "" -#: modules/devices/storage.c:46 +#: modules/devices/storage.c:375 msgid "" "\n" "[SCSI Disks]\n" msgstr "" -#: modules/devices/storage.c:110 modules/devices/storage.c:313 +#: modules/devices/storage.c:446 modules/devices/storage.c:645 #, c-format msgid "" "[Device Information]\n" "Model=%s\n" msgstr "" -#: modules/devices/storage.c:115 modules/devices/storage.c:319 -#, c-format -msgid "Vendor=%s (%s)\n" -msgstr "" - -#: modules/devices/storage.c:120 modules/devices/storage.c:321 -#, c-format -msgid "Vendor=%s\n" -msgstr "" - -#: modules/devices/storage.c:125 +#: modules/devices/storage.c:453 #, c-format msgid "" "Type=%s\n" @@ -2440,18 +4018,18 @@ msgid "" "LUN=%d\n" msgstr "" -#: modules/devices/storage.c:167 +#: modules/devices/storage.c:499 msgid "" "\n" "[IDE Disks]\n" msgstr "" -#: modules/devices/storage.c:250 +#: modules/devices/storage.c:582 #, c-format msgid "Driver=%s\n" msgstr "" -#: modules/devices/storage.c:324 +#: modules/devices/storage.c:650 #, c-format msgid "" "Device Name=hd%c\n" @@ -2459,7 +4037,7 @@ msgid "" "Cache=%dkb\n" msgstr "" -#: modules/devices/storage.c:334 +#: modules/devices/storage.c:660 #, c-format msgid "" "[Geometry]\n" @@ -2467,65 +4045,50 @@ msgid "" "Logical=%s\n" msgstr "" -#: modules/devices/storage.c:344 +#: modules/devices/storage.c:670 #, c-format msgid "" "[Capabilities]\n" "%s" msgstr "" -#: modules/devices/storage.c:351 +#: modules/devices/storage.c:677 #, c-format msgid "" "[Speeds]\n" "%s" msgstr "" -#: modules/devices/usb.c:44 modules/devices/usb.c:326 -msgid "mA" -msgstr "" - -#. /%.2f is version -#: modules/devices/usb.c:53 modules/devices/usb.c:190 -#, c-format -msgid "USB %.2f Hub" -msgstr "" - -#: modules/devices/usb.c:55 modules/devices/usb.c:192 -#, c-format -msgid "Unknown USB %.2f Device (class %d)" +#: modules/devices/usb.c:134 modules/devices/usb.c:175 +msgid "Sub-class" msgstr "" -#: modules/devices/usb.c:85 modules/devices/usb.c:232 -msgid "Speed" +#: modules/devices/usb.c:135 modules/devices/usb.c:176 modules/network.c:347 +msgid "Protocol" msgstr "" -#: modules/devices/usb.c:85 modules/devices/usb.c:232 -msgid "Mbit/s" +#: modules/devices/usb.c:143 modules/network/net.c:451 +msgid "Mb/s" msgstr "" -#: modules/devices/usb.c:86 modules/devices/usb.c:233 modules/devices/usb.c:350 +#: modules/devices/usb.c:171 msgid "Max Current" msgstr "" -#: modules/devices/usb.c:88 modules/devices/usb.c:235 modules/devices/usb.c:352 -msgid "USB Version" -msgstr "" - -#: modules/devices/usb.c:90 modules/devices/usb.c:238 modules/devices/usb.c:354 -msgid "Vendor ID" +#: modules/devices/usb.c:171 +msgid "mA" msgstr "" -#: modules/devices/usb.c:91 modules/devices/usb.c:239 modules/devices/usb.c:355 -msgid "Product ID" +#: modules/devices/usb.c:172 +msgid "USB Version" msgstr "" -#: modules/devices/usb.c:231 -msgid "Port" +#: modules/devices/usb.c:177 +msgid "Device Version" msgstr "" -#: modules/devices/usb.c:241 -msgid "Level" +#: modules/devices/usb.c:221 +msgid "No USB devices found." msgstr "" #: modules/devices/x86/processor.c:149 @@ -2555,42 +4118,71 @@ msgctxt "cache-type" msgid "Unified" msgstr "" -#: modules/devices/x86/processor.c:410 +#: modules/devices/x86/processor.c:367 +msgid "Caches" +msgstr "" + +#: modules/devices/x86/processor.c:418 modules/devices/x86/processor.c:435 +#, c-format +msgid "Level %d (%s)#%d=%dx %dKB (%dKB), %d-way set-associative, %d sets\n" +msgstr "" + +#: modules/devices/x86/processor.c:647 msgid "Model Name" msgstr "" -#: modules/devices/x86/processor.c:411 +#: modules/devices/x86/processor.c:648 msgid "Family, model, stepping" msgstr "" -#: modules/devices/x86/processor.c:417 +#: modules/devices/x86/processor.c:654 msgid "Microcode Version" msgstr "" -#: modules/devices/x86/processor.c:418 +#: modules/devices/x86/processor.c:655 msgid "Configuration" msgstr "" -#: modules/devices/x86/processor.c:419 +#: modules/devices/x86/processor.c:656 msgid "Cache Size" msgstr "" -#: modules/devices/x86/processor.c:419 +#: modules/devices/x86/processor.c:656 msgid "kb" msgstr "" -#: modules/devices/x86/processor.c:426 -msgid "Power Management" +#: modules/devices/x86/processor.c:664 +msgid "Bug Workarounds" msgstr "" -#: modules/devices/x86/processor.c:427 -msgid "Bug Workarounds" +#: modules/devices/x86/processor.c:691 +msgid "Socket Information" msgstr "" -#: modules/devices/x86/processor.c:454 modules/devices/x86/processor.c:468 +#: modules/devices/x86/processor.c:712 +msgid "CPU Socket" +msgstr "" + +#: modules/devices/x86/processor.c:716 +msgid "External Clock" +msgstr "" + +#: modules/devices/x86/processor.c:717 +msgid "Max Frequency" +msgstr "" + +#: modules/devices/x86/processor.c:748 modules/devices/x86/processor.c:769 msgid "Package Information" msgstr "" +#: modules/devices/x86/processor.c:796 +msgid "Socket:Core" +msgstr "" + +#: modules/devices/x86/processor.c:796 +msgid "Thread" +msgstr "" + #. /flag:fpu #: modules/devices/x86/x86_data.c:43 msgctxt "x86-flag" @@ -3902,181 +5494,200 @@ msgctxt "x86-flag" msgid "IPI required to wake up remote CPU" msgstr "" +#. /bug:cpu_insecure & bug:cpu_meltdown +#: modules/devices/x86/x86_data.c:281 modules/devices/x86/x86_data.c:282 +msgctxt "x86-flag" +msgid "" +"CPU is affected by meltdown attack and needs kernel page table isolation" +msgstr "" + +#. /bug:spectre_v1 +#: modules/devices/x86/x86_data.c:283 +msgctxt "x86-flag" +msgid "CPU is affected by Spectre variant 1 attack with conditional branches" +msgstr "" + +#. /bug:spectre_v2 +#: modules/devices/x86/x86_data.c:284 +msgctxt "x86-flag" +msgid "CPU is affected by Spectre variant 2 attack with indirect branches" +msgstr "" + +#. /bug:spec_store_bypass +#: modules/devices/x86/x86_data.c:285 +msgctxt "x86-flag" +msgid "CPU is affected by speculative store bypass attack" +msgstr "" + +#. /bug:l1tf +#: modules/devices/x86/x86_data.c:286 +msgctxt "x86-flag" +msgid "CPU is affected by L1 Terminal Fault" +msgstr "" + #. /x86/kernel/cpu/powerflags.h #. /flag:pm:ts -#: modules/devices/x86/x86_data.c:283 +#: modules/devices/x86/x86_data.c:289 msgctxt "x86-flag" msgid "temperature sensor" msgstr "" #. /flag:pm:fid -#: modules/devices/x86/x86_data.c:284 +#: modules/devices/x86/x86_data.c:290 msgctxt "x86-flag" msgid "frequency id control" msgstr "" #. /flag:pm:vid -#: modules/devices/x86/x86_data.c:285 +#: modules/devices/x86/x86_data.c:291 msgctxt "x86-flag" msgid "voltage id control" msgstr "" #. /flag:pm:ttp -#: modules/devices/x86/x86_data.c:286 +#: modules/devices/x86/x86_data.c:292 msgctxt "x86-flag" msgid "thermal trip" msgstr "" #. /flag:pm:tm -#: modules/devices/x86/x86_data.c:287 +#: modules/devices/x86/x86_data.c:293 msgctxt "x86-flag" msgid "hardware thermal control" msgstr "" #. /flag:pm:stc -#: modules/devices/x86/x86_data.c:288 +#: modules/devices/x86/x86_data.c:294 msgctxt "x86-flag" msgid "software thermal control" msgstr "" #. /flag:pm:100mhzsteps -#: modules/devices/x86/x86_data.c:289 +#: modules/devices/x86/x86_data.c:295 msgctxt "x86-flag" msgid "100 MHz multiplier control" msgstr "" #. /flag:pm:hwpstate -#: modules/devices/x86/x86_data.c:290 +#: modules/devices/x86/x86_data.c:296 msgctxt "x86-flag" msgid "hardware P-state control" msgstr "" #. /flag:pm:cpb -#: modules/devices/x86/x86_data.c:291 +#: modules/devices/x86/x86_data.c:297 msgctxt "x86-flag" msgid "core performance boost" msgstr "" #. /flag:pm:eff_freq_ro -#: modules/devices/x86/x86_data.c:292 +#: modules/devices/x86/x86_data.c:298 msgctxt "x86-flag" msgid "Readonly aperf/mperf" msgstr "" #. /flag:pm:proc_feedback -#: modules/devices/x86/x86_data.c:293 +#: modules/devices/x86/x86_data.c:299 msgctxt "x86-flag" msgid "processor feedback interface" msgstr "" #. /flag:pm:acc_power -#: modules/devices/x86/x86_data.c:294 +#: modules/devices/x86/x86_data.c:300 msgctxt "x86-flag" msgid "accumulated power mechanism" msgstr "" -#: modules/network.c:59 +#: modules/network.c:61 msgid "Interfaces" msgstr "" -#: modules/network.c:60 +#: modules/network.c:62 msgid "IP Connections" msgstr "" -#: modules/network.c:61 +#: modules/network.c:63 msgid "Routing Table" msgstr "" -#: modules/network.c:62 modules/network.c:303 +#: modules/network.c:64 modules/network.c:309 msgid "ARP Table" msgstr "" -#: modules/network.c:63 +#: modules/network.c:65 msgid "DNS Servers" msgstr "" -#: modules/network.c:64 +#: modules/network.c:66 msgid "Statistics" msgstr "" -#: modules/network.c:65 +#: modules/network.c:67 msgid "Shared Directories" msgstr "" -#: modules/network.c:304 modules/network.c:326 modules/network.c:357 -#: modules/network/net.c:477 +#: modules/network.c:310 modules/network.c:332 modules/network.c:363 +#: modules/network/net.c:472 msgid "IP Address" msgstr "" -#: modules/network.c:304 modules/network.c:357 modules/network.c:374 -msgid "Interface" -msgstr "" - -#: modules/network.c:304 +#: modules/network.c:310 msgid "MAC Address" msgstr "" -#: modules/network.c:313 +#: modules/network.c:319 msgid "SAMBA" msgstr "" -#: modules/network.c:314 +#: modules/network.c:320 msgid "NFS" msgstr "" -#: modules/network.c:325 +#: modules/network.c:331 msgid "Name Servers" msgstr "" -#: modules/network.c:340 +#: modules/network.c:346 msgid "Connections" msgstr "" -#: modules/network.c:341 +#: modules/network.c:347 msgid "Local Address" msgstr "" -#: modules/network.c:341 -msgid "Protocol" -msgstr "" - -#: modules/network.c:341 +#: modules/network.c:347 msgid "Foreign Address" msgstr "" -#: modules/network.c:341 +#: modules/network.c:347 msgid "State" msgstr "" -#: modules/network.c:357 +#: modules/network.c:363 msgid "Sent" msgstr "" -#: modules/network.c:357 +#: modules/network.c:363 msgid "Received" msgstr "" -#: modules/network.c:373 +#: modules/network.c:379 msgid "IP routing table" msgstr "" -#: modules/network.c:374 +#: modules/network.c:380 msgid "Destination/Gateway" msgstr "" -#: modules/network.c:374 -msgid "Flags" -msgstr "" - -#: modules/network.c:374 modules/network/net.c:478 +#: modules/network.c:380 modules/network/net.c:473 msgid "Mask" msgstr "" -#: modules/network.c:402 +#: modules/network.c:408 msgid "Network" msgstr "" -#: modules/network.c:435 +#: modules/network.c:441 msgid "Gathers information about this computer's network connection" msgstr "" @@ -4238,97 +5849,84 @@ msgctxt "net-if-type" msgid "(Unknown)" msgstr "" -#: modules/network/net.c:348 modules/network/net.c:358 +#: modules/network/net.c:343 modules/network/net.c:353 msgid "Network Interfaces" msgstr "" -#: modules/network/net.c:348 +#: modules/network/net.c:343 msgid "None Found" msgstr "" -#: modules/network/net.c:400 modules/network/net.c:422 -#: modules/network/net.c:423 -msgid "MiB" -msgstr "" - -#: modules/network/net.c:414 +#: modules/network/net.c:409 msgid "Network Adapter Properties" msgstr "" -#: modules/network/net.c:415 +#: modules/network/net.c:410 msgid "Interface Type" msgstr "" -#: modules/network/net.c:416 +#: modules/network/net.c:411 msgid "Hardware Address (MAC)" msgstr "" -#: modules/network/net.c:420 +#: modules/network/net.c:415 msgid "MTU" msgstr "" -#: modules/network/net.c:421 +#: modules/network/net.c:416 msgid "Transfer Details" msgstr "" -#: modules/network/net.c:422 +#: modules/network/net.c:417 msgid "Bytes Received" msgstr "" -#: modules/network/net.c:423 +#: modules/network/net.c:418 msgid "Bytes Sent" msgstr "" -#: modules/network/net.c:440 modules/network/net.c:462 -#: modules/network/net.c:463 +#: modules/network/net.c:435 modules/network/net.c:457 +#: modules/network/net.c:458 msgid "dBm" msgstr "" -#: modules/network/net.c:440 +#: modules/network/net.c:435 msgid "mW" msgstr "" -#: modules/network/net.c:454 +#: modules/network/net.c:449 msgid "Wireless Properties" msgstr "" -#: modules/network/net.c:455 +#: modules/network/net.c:450 msgid "Network Name (SSID)" msgstr "" -#: modules/network/net.c:456 +#: modules/network/net.c:451 msgid "Bit Rate" msgstr "" -#: modules/network/net.c:456 -msgid "Mb/s" -msgstr "" - -#: modules/network/net.c:457 +#: modules/network/net.c:452 msgid "Transmission Power" msgstr "" -#: modules/network/net.c:459 -msgid "Status" -msgstr "" - -#: modules/network/net.c:460 +#: modules/network/net.c:455 msgid "Link Quality" msgstr "" -#: modules/network/net.c:461 +#: modules/network/net.c:456 msgid "Signal / Noise" msgstr "" -#: modules/network/net.c:476 +#: modules/network/net.c:471 msgid "Internet Protocol (IPv4)" msgstr "" -#: modules/network/net.c:477 modules/network/net.c:478 -#: modules/network/net.c:480 +#: modules/network/net.c:472 modules/network/net.c:473 +#: modules/network/net.c:475 msgid "(Not set)" msgstr "" -#: modules/network/net.c:479 +#: modules/network/net.c:474 msgid "Broadcast Address" msgstr "" diff --git a/po/ko.po b/po/ko.po new file mode 100644 index 00000000..e6e86b80 --- /dev/null +++ b/po/ko.po @@ -0,0 +1,6100 @@ +msgid "" +msgstr "" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 2.3\n" +"Project-Id-Version: hardinfo\n" +"Language: ko\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"POT-Creation-Date: \n" +"PO-Revision-Date: 2022-09-28\n" +"Last-Translator: Yunji Lee\n" +"Language-Team: \n" + +#: hardinfo/cpu_util.c:29 +msgid "Little Endian" +msgstr "리틀 엔디안" + +#: hardinfo/cpu_util.c:31 +msgid "Big Endian" +msgstr "빅엔디안" + +#: hardinfo/cpu_util.c:204 hardinfo/cpu_util.c:215 modules/devices/gpu.c:218 +msgid "Frequency Scaling" +msgstr "주파수 스케일링" + +#: hardinfo/cpu_util.c:205 modules/devices/gpu.c:219 +msgid "Minimum" +msgstr "최소값" + +#: hardinfo/cpu_util.c:205 hardinfo/cpu_util.c:206 hardinfo/cpu_util.c:207 +#: hardinfo/dt_util.c:589 modules/devices/gpu.c:219 modules/devices/gpu.c:220 +msgid "kHz" +msgstr "kHz" + +#: hardinfo/cpu_util.c:206 modules/devices/gpu.c:220 +msgid "Maximum" +msgstr "최대값" + +#: hardinfo/cpu_util.c:207 +msgid "Current" +msgstr "현재" + +#: hardinfo/cpu_util.c:208 modules/devices/gpu.c:221 +msgid "Transition Latency" +msgstr "전환 지연" + +#: hardinfo/cpu_util.c:208 modules/devices/gpu.c:221 +msgid "ns" +msgstr "ns" + +#: hardinfo/cpu_util.c:209 +msgid "Governor" +msgstr "거버너" + +#: hardinfo/cpu_util.c:210 hardinfo/cpu_util.c:216 modules/devices.c:774 +#: modules/devices/gpu.c:165 modules/devices/pci.c:148 +#: modules/devices/usb.c:139 +msgid "Driver" +msgstr "드라이버" + +#: hardinfo/cpu_util.c:222 modules/computer.c:765 +#: modules/devices/arm/processor.c:256 modules/devices/e2k/processor.c:178 +#: modules/devices/x86/processor.c:284 modules/devices/x86/processor.c:388 +#: modules/devices/x86/processor.c:526 +msgid "(Not Available)" +msgstr "(사용할 수 없습니다)" + +#: hardinfo/cpu_util.c:230 hardinfo/cpu_util.c:232 +msgid "Socket" +msgstr "소켓" + +#: hardinfo/cpu_util.c:235 hardinfo/cpu_util.c:237 modules/devices/gpu.c:161 +#: modules/devices/gpu.c:245 +msgid "Core" +msgstr "코어" + +#: hardinfo/cpu_util.c:240 +msgid "Book" +msgstr "" + +#: hardinfo/cpu_util.c:242 +msgid "Drawer" +msgstr "" + +#: hardinfo/cpu_util.c:248 modules/devices/arm/processor.c:471 +#: modules/devices/x86/processor.c:752 +msgid "Topology" +msgstr "토폴로지" + +#: hardinfo/cpu_util.c:249 +msgid "ID" +msgstr "ID" + +#: hardinfo/dmi_util.c:25 +msgid "BIOS Information" +msgstr "BIOS 정보" + +#: hardinfo/dmi_util.c:26 modules/devices/parisc/processor.c:157 +msgid "System" +msgstr "시스템" + +#: hardinfo/dmi_util.c:27 +msgid "Base Board" +msgstr "베이스 보드" + +#: hardinfo/dmi_util.c:28 modules/devices/dmi.c:54 +msgid "Chassis" +msgstr "시스템 장치" + +#: hardinfo/dmi_util.c:29 modules/computer.c:548 modules/computer.c:1034 +#: modules/devices.c:100 modules/devices/alpha/processor.c:87 +#: modules/devices/arm/processor.c:341 modules/devices/e2k/processor.c:329 +#: modules/devices/ia64/processor.c:159 +#: modules/devices/loongarch64/processor.c:74 +#: modules/devices/m68k/processor.c:83 modules/devices/mips/processor.c:74 +#: modules/devices/parisc/processor.c:154 modules/devices/ppc/processor.c:157 +#: modules/devices/riscv/processor.c:181 modules/devices/s390/processor.c:131 +#: modules/devices/sh/processor.c:83 modules/devices/sparc/processor.c:74 +#: modules/devices/x86/processor.c:648 +msgid "Processor" +msgstr "프로세서" + +#: hardinfo/dmi_util.c:30 +msgid "Memory Controller" +msgstr "메모리 컨트롤러" + +#: hardinfo/dmi_util.c:31 +msgid "Memory Module" +msgstr "메모리 모듈" + +#: hardinfo/dmi_util.c:32 modules/devices/e2k/processor.c:338 +#: modules/devices/parisc/processor.c:163 modules/devices/x86/processor.c:664 +msgid "Cache" +msgstr "캐시" + +#: hardinfo/dmi_util.c:33 +msgid "Port Connector" +msgstr "포트 커넥터" + +#: hardinfo/dmi_util.c:34 +msgid "System Slots" +msgstr "시스템 슬롯" + +#: hardinfo/dmi_util.c:35 +msgid "On Board Devices" +msgstr "온보드 장치" + +#: hardinfo/dmi_util.c:36 +msgid "OEM Strings" +msgstr "OEM 문자열" + +#: hardinfo/dmi_util.c:37 +msgid "System Configuration Options" +msgstr "시스템 구성 옵션" + +#: hardinfo/dmi_util.c:38 +msgid "BIOS Language" +msgstr "BIOS 언어" + +#: hardinfo/dmi_util.c:39 +msgid "Group Associations" +msgstr "그룹 연결" + +#: hardinfo/dmi_util.c:40 +msgid "System Event Log" +msgstr "시스템 이벤트 로그" + +#: hardinfo/dmi_util.c:41 +msgid "Physical Memory Array" +msgstr "물리적 메모리 배열" + +#: hardinfo/dmi_util.c:42 +msgid "Memory Device" +msgstr "메모리 장치" + +#: hardinfo/dmi_util.c:43 +msgid "32-bit Memory Error" +msgstr "32비트 메모리 오류" + +#: hardinfo/dmi_util.c:44 +msgid "Memory Array Mapped Address" +msgstr "메모리 배열 매핑 주소" + +#: hardinfo/dmi_util.c:45 +msgid "Memory Device Mapped Address" +msgstr "메모리 장치 매핑 주소" + +#: hardinfo/dmi_util.c:46 +msgid "Built-in Pointing Device" +msgstr "내장 포인팅 장치" + +#: hardinfo/dmi_util.c:47 +msgid "Portable Battery" +msgstr "휴대용 배터리" + +#: hardinfo/dmi_util.c:48 +msgid "System Reset" +msgstr "시스템 리셋" + +#: hardinfo/dmi_util.c:49 +msgid "Hardware Security" +msgstr "하드웨어 보안" + +#: hardinfo/dmi_util.c:50 +msgid "System Power Controls" +msgstr "시스템 전원 제어" + +#: hardinfo/dmi_util.c:51 +msgid "Voltage Probe" +msgstr "전압 프로브" + +#: hardinfo/dmi_util.c:52 +msgid "Cooling Device" +msgstr "냉각 장치" + +#: hardinfo/dmi_util.c:53 +msgid "Temperature Probe" +msgstr "온도 프로브" + +#: hardinfo/dmi_util.c:54 +msgid "Electrical Current Probe" +msgstr "전류 프로브" + +#: hardinfo/dmi_util.c:55 +msgid "Out-of-band Remote Access" +msgstr "대역 외 원격 액세스" + +#: hardinfo/dmi_util.c:56 +msgid "Boot Integrity Services" +msgstr "부팅 무결성 서비스" + +#: hardinfo/dmi_util.c:57 +msgid "System Boot" +msgstr "시스템 부팅" + +#: hardinfo/dmi_util.c:58 +msgid "64-bit Memory Error" +msgstr "64비트 메모리 오류" + +#: hardinfo/dmi_util.c:59 +msgid "Management Device" +msgstr "관리 장치" + +#: hardinfo/dmi_util.c:60 +msgid "Management Device Component" +msgstr "관리 장치 구성 요소" + +#: hardinfo/dmi_util.c:61 +msgid "Management Device Threshold Data" +msgstr "관리 장치 임계값 데이터" + +#: hardinfo/dmi_util.c:62 +msgid "Memory Channel" +msgstr "메모리 채널" + +#: hardinfo/dmi_util.c:63 +msgid "IPMI Device" +msgstr "IPMI 장치" + +#: hardinfo/dmi_util.c:64 +msgid "Power Supply" +msgstr "전원 공급 장치" + +#: hardinfo/dmi_util.c:65 +msgid "Additional Information" +msgstr "추가 정보" + +#: hardinfo/dmi_util.c:66 +msgid "Onboard Device" +msgstr "온보드 장치" + +#: hardinfo/dmi_util.c:226 +msgid "Invalid chassis type (0)" +msgstr "잘못된 시스템 장치 유형(0)" + +#: hardinfo/dmi_util.c:227 hardinfo/dmi_util.c:228 +msgid "Unknown chassis type" +msgstr "알 수 없는 시스템 장치 유형" + +#: hardinfo/dmi_util.c:229 +msgid "Desktop" +msgstr "데스크탑" + +#: hardinfo/dmi_util.c:230 +msgid "Low-profile Desktop" +msgstr "로우 프로파일 데스크탑" + +#: hardinfo/dmi_util.c:231 +msgid "Pizza Box" +msgstr "" + +#: hardinfo/dmi_util.c:232 +msgid "Mini Tower" +msgstr "" + +#: hardinfo/dmi_util.c:233 +msgid "Tower" +msgstr "" + +#: hardinfo/dmi_util.c:234 +msgid "Portable" +msgstr "휴대용" + +#: hardinfo/dmi_util.c:235 modules/computer.c:410 modules/computer.c:419 +#: modules/computer.c:441 +msgid "Laptop" +msgstr "랩탑" + +#: hardinfo/dmi_util.c:236 +msgid "Notebook" +msgstr "노트북" + +#: hardinfo/dmi_util.c:237 +msgid "Handheld" +msgstr "휴대용" + +#: hardinfo/dmi_util.c:238 +msgid "Docking Station" +msgstr "도킹 스테이션" + +#: hardinfo/dmi_util.c:239 +msgid "All-in-one" +msgstr "올인원" + +#: hardinfo/dmi_util.c:240 +msgid "Subnotebook" +msgstr "서브노트북" + +#: hardinfo/dmi_util.c:241 +msgid "Space-saving" +msgstr "공간 절약" + +#: hardinfo/dmi_util.c:242 +msgid "Lunch Box" +msgstr "" + +#: hardinfo/dmi_util.c:243 +msgid "Main Server Chassis" +msgstr "주 서버 시스템 장치" + +#: hardinfo/dmi_util.c:244 +msgid "Expansion Chassis" +msgstr "확장 시스템 장치" + +#: hardinfo/dmi_util.c:245 +msgid "Sub Chassis" +msgstr "서브 시스템 장치" + +#: hardinfo/dmi_util.c:246 +msgid "Bus Expansion Chassis" +msgstr "버스 확장 시스템 장치" + +#: hardinfo/dmi_util.c:247 +msgid "Peripheral Chassis" +msgstr "주변 시스템 장치" + +#: hardinfo/dmi_util.c:248 +msgid "RAID Chassis" +msgstr "RAID 시스템 장치" + +#: hardinfo/dmi_util.c:249 +msgid "Rack Mount Chassis" +msgstr "랙 마운트 시스템 장치" + +#: hardinfo/dmi_util.c:250 +msgid "Sealed-case PC" +msgstr "밀폐형 PC 케이스" + +#: hardinfo/dmi_util.c:251 +msgid "Multi-system" +msgstr "다중 시스템" + +#: hardinfo/dmi_util.c:252 +msgid "CompactPCI" +msgstr "" + +#: hardinfo/dmi_util.c:253 +msgid "AdvancedTCA" +msgstr "" + +#: hardinfo/dmi_util.c:254 +msgid "Blade" +msgstr "블레이드" + +#: hardinfo/dmi_util.c:255 +msgid "Blade Enclosing" +msgstr "블레이드 인클로징" + +#: hardinfo/dmi_util.c:256 +msgid "Tablet" +msgstr "태블릿" + +#: hardinfo/dmi_util.c:257 +msgid "Convertible" +msgstr "컨버터블" + +#: hardinfo/dmi_util.c:258 +msgid "Detachable" +msgstr "탈부착 가능" + +#: hardinfo/dmi_util.c:259 +msgid "IoT Gateway" +msgstr "IoT 게이트웨이" + +#: hardinfo/dmi_util.c:260 +msgid "Embedded PC" +msgstr "임베디드 PC" + +#: hardinfo/dmi_util.c:261 +msgid "Mini PC" +msgstr "미니 PC" + +#: hardinfo/dmi_util.c:262 +msgid "Stick PC" +msgstr "스틱 PC" + +#: hardinfo/dt_util.c:1179 +msgid "phandle Map" +msgstr "" + +#: hardinfo/dt_util.c:1180 +msgid "Alias Map" +msgstr "별칭 맵" + +#: hardinfo/dt_util.c:1181 +msgid "Symbol Map" +msgstr "심볼 맵" + +#. / %d will be latest year of copyright +#: hardinfo/hardinfo.c:50 +msgid "" +"Copyright (C) 2003-%d L. A. F. Pereira. See COPYING for details.\n" +"\n" +msgstr "" +"Copyright (C) 2003-%d L. A. F. Pereira. 자세한 내용은 복사를 참조하십시오.\n" +"\n" + +#: hardinfo/hardinfo.c:52 +msgid "" +"Compile-time options:\n" +" Release version: %s (%s)\n" +" BinReloc enabled: %s\n" +" Data prefix: %s\n" +" Library prefix: %s\n" +" Compiled for: %s\n" +msgstr "" +"컴파일 시간 옵션:\n" +" 릴리스 버전: %s(%s)\n" +" BinReloc 활성화됨: %s\n" +" 데이터 접두사: %s\n" +" 라이브러리 접두사: %s\n" +" 컴파일 대상: %s\n" + +#: hardinfo/hardinfo.c:58 hardinfo/hardinfo.c:59 modules/computer.c:813 +#: modules/computer/modules.c:206 modules/computer/modules.c:207 +#: modules/devices/inputdevices.c:152 modules/devices/printers.c:138 +#: modules/devices/spd-decode.c:973 +msgid "Yes" +msgstr "네" + +#: hardinfo/hardinfo.c:59 modules/computer.c:813 modules/computer/modules.c:206 +#: modules/computer/modules.c:207 modules/devices/printers.c:138 +#: modules/devices/spd-decode.c:970 +msgid "No" +msgstr "아니오" + +#: hardinfo/hardinfo.c:70 +msgid "" +"Failed to find runtime data.\n" +"\n" +"• Is HardInfo correctly installed?\n" +"• See if %s and %s exists and you have read permission." +msgstr "" +"런타임 데이터를 찾지 못했습니다.\n" +"\n" +"• HardInfo가 올바르게 설치되어 있습니까?\n" +"• %s 및 %s이(가) 존재하고 읽기 권한이 있는지 확인합니다." + +#: hardinfo/hardinfo.c:77 +msgid "" +"Modules:\n" +"%-20s %-15s %-12s\n" +msgstr "" +"모듈:\n" +"%-20초 %-15초 %-12초\n" + +#: hardinfo/hardinfo.c:78 +msgid "File Name" +msgstr "파일 이름" + +#: hardinfo/hardinfo.c:78 modules/computer.c:694 modules/computer.c:722 +#: modules/computer.c:843 modules/computer/languages.c:95 +#: modules/computer/modules.c:224 modules/devices/arm/processor.c:469 +#: modules/devices/dmi.c:38 modules/devices/dmi.c:49 +#: modules/devices/e2k/processor.c:330 modules/devices/gpu.c:251 +#: modules/devices/ia64/processor.c:160 modules/devices/inputdevices.c:140 +#: modules/devices/monitors.c:401 modules/devices/monitors.c:503 +#: modules/devices/sh/processor.c:84 modules/devices/x86/processor.c:751 +#: modules/network.c:332 +msgid "Name" +msgstr "이름" + +#: hardinfo/hardinfo.c:78 modules/computer.c:365 modules/computer.c:598 +#: modules/computer.c:600 modules/computer.c:771 modules/computer/modules.c:226 +#: modules/devices/dmi.c:41 modules/devices/dmi.c:47 modules/devices/dmi.c:51 +#: modules/devices/dmi.c:57 modules/devices/firmware.c:75 +#: modules/devices/inputdevices.c:145 modules/devices/monitors.c:407 +msgid "Version" +msgstr "버전" + +#: hardinfo/hardinfo.c:129 +msgid "Unknown benchmark ``%s'' or benchmark.so not loaded" +msgstr "알 수 없는 벤치마크 ``%s'' 또는 벤치마크.그래서 로드되지 않았습니다." + +#: hardinfo/hardinfo.c:159 +msgid "Don't know what to do. Exiting." +msgstr "무엇을해야할지 모르겠습니다. 종료합니다." + +#: hardinfo/usb_util.c:291 modules/devices/devicetree.c:91 +#: modules/devices/devicetree.c:92 modules/devices/monitors.c:409 +#: modules/devices/storage.c:306 modules/devices/storage.c:328 +msgid "(None)" +msgstr "(없음)" + +#: hardinfo/util.c:104 modules/computer/uptime.c:54 +msgid "%d day" +msgid_plural "%d days" +msgstr[0] "%d일" + +#: hardinfo/util.c:105 modules/computer/uptime.c:55 +msgid "%d hour" +msgid_plural "%d hours" +msgstr[0] "%d시간" + +#: hardinfo/util.c:106 modules/computer/uptime.c:56 +msgid "%d minute" +msgid_plural "%d minutes" +msgstr[0] "%d분" + +#: hardinfo/util.c:107 +msgid "%d second" +msgid_plural "%d seconds" +msgstr[0] "%d초" + +#: hardinfo/util.c:128 +msgid "%.1f B" +msgstr "%.1f B" + +#: hardinfo/util.c:130 +msgid "%.1f KiB" +msgstr "%.1f KiB" + +#: hardinfo/util.c:132 +msgid "%.1f MiB" +msgstr "%.1f MiB" + +#: hardinfo/util.c:134 +msgid "%.1f GiB" +msgstr "%.1fGiB" + +#: hardinfo/util.c:136 +msgid "%.1f TiB" +msgstr "%.1f TiB" + +#: hardinfo/util.c:138 +msgid "%.1f PiB" +msgstr "%.1f PiB" + +#: hardinfo/util.c:361 +msgid "Error" +msgstr "오류" + +#: hardinfo/util.c:361 hardinfo/util.c:377 +msgid "Warning" +msgstr "경고" + +#: hardinfo/util.c:376 +msgid "Fatal Error" +msgstr "치명적 오류" + +#: hardinfo/util.c:407 +msgid "do not print status messages to standard output" +msgstr "상태 메시지를 표준 출력으로 인쇄하지 않습니다." + +#: hardinfo/util.c:413 +msgid "creates a report and prints to standard output" +msgstr "보고서를 만들고 표준 출력으로 인쇄합니다." + +#: hardinfo/util.c:419 +msgid "chooses a report format ([text], html)" +msgstr "보고서 형식([텍스트], html)을 선택합니다." + +#: hardinfo/util.c:425 +msgid "run benchmark; requires benchmark.so to be loaded" +msgstr "실행 벤치마크; 로드하려면 벤치마크.so가 필요합니다" + +#: hardinfo/util.c:431 +msgid "note attached to benchmark results" +msgstr "벤치마크 결과에 첨부된 메모" + +#: hardinfo/util.c:437 +msgid "benchmark result format ([short], conf, shell)" +msgstr "벤치마크 결과 형식([짧은], conf, 셸)" + +#: hardinfo/util.c:443 +msgid "maximum number of benchmark results to include (-1 for no limit, default is 10)" +msgstr "포함할 최대 벤치마크 결과 수(무제한의 경우 -1, 기본값은 10)" + +#: hardinfo/util.c:449 +msgid "lists modules" +msgstr "모듈 나열" + +#: hardinfo/util.c:455 +msgid "specify module to load" +msgstr "로드할 모듈 지정" + +#: hardinfo/util.c:461 +msgid "automatically load module dependencies" +msgstr "모듈 종속성을 자동으로 로드" + +#: hardinfo/util.c:468 +msgid "run in XML-RPC server mode" +msgstr "XML-RPC 서버 모드에서 실행" + +#: hardinfo/util.c:475 +msgid "shows program version and quit" +msgstr "프로그램 버전을 표시하고 종료" + +#: hardinfo/util.c:481 +msgid "do not run benchmarks" +msgstr "벤치마크를 실행하지 마십시오" + +#: hardinfo/util.c:487 +msgid "show all details" +msgstr "모든 세부 정보 표시" + +#: hardinfo/util.c:492 +msgid "- System Profiler and Benchmark tool" +msgstr "- 시스템 프로파일러 및 벤치마크 도구" + +#: hardinfo/util.c:502 +msgid "" +"Unrecognized arguments.\n" +"Try ``%s --help'' for more information.\n" +msgstr "" +"인식할 수 없는 인수입니다.\n" +"자세한 내용은 ``%s --help''를 시도하십시오.\n" + +#: hardinfo/util.c:914 +msgid "Module \"%s\" depends on module \"%s\", load it?" +msgstr "모듈 \"%s\"은 모듈 \"%s\"에 종속되어 있습니다. 로드하시겠습니까?" + +#: hardinfo/util.c:937 +msgid "Module \"%s\" depends on module \"%s\"." +msgstr "모듈 \"%s\"은(는) 모듈 \"%s\"에 종속됩니다." + +#: hardinfo/util.c:982 +msgid "No module could be loaded. Check permissions on \"%s\" and try again." +msgstr "모듈을 로드할 수 없습니다. \"%s\"에 대한 권한을 확인하고 다시 시도하십시오." + +#: hardinfo/util.c:986 +msgid "No module could be loaded. Please use hardinfo -l to list all available modules and try again with a valid module list." +msgstr "모듈을 로드할 수 없습니다. hardinfo -l을 사용하여 사용 가능한 모든 모듈을 나열하고 유효한 모듈 목록으로 다시 시도하십시오." + +#: hardinfo/util.c:1041 +msgid "Scanning: %s..." +msgstr "스캔 중: %s..." + +#: hardinfo/util.c:1051 shell/shell.c:311 shell/shell.c:804 shell/shell.c:2039 +#: modules/benchmark.c:715 modules/benchmark.c:723 +msgid "Done." +msgstr "완료." + +#: hardinfo/vendor.c:255 +msgid "Update vendor list" +msgstr "공급업체 목록 업데이트" + +#: hardinfo/vendor.c:438 modules/computer.c:599 modules/computer.c:793 +#: modules/computer/os.c:79 modules/computer/os.c:263 modules/computer/os.c:300 +#: modules/computer/os.c:505 modules/computer/os.c:576 modules/devices.c:405 +#: modules/devices.c:551 modules/devices/firmware.c:149 +#: modules/devices/printers.c:99 modules/devices/printers.c:106 +#: modules/devices/printers.c:116 modules/devices/printers.c:131 +#: modules/devices/printers.c:140 modules/devices/printers.c:244 +#: modules/devices/spd-decode.c:312 modules/devices/usb.c:149 +msgid "Unknown" +msgstr "알 수 없음" + +#: shell/callbacks.c:128 +msgid "" +"Written by %s\n" +"Licensed under %s" +msgstr "" +"작성자: %s\n" +"%s에 따라 라이선스가 부여됨" + +#: shell/callbacks.c:142 +msgid "No about information is associated with the %s module." +msgstr "%s 모듈과 연결된 정보가 없습니다." + +#: shell/callbacks.c:158 +msgid "Author:" +msgstr "원작자:" + +#: shell/callbacks.c:161 +msgid "Contributors:" +msgstr "기여자:" + +#: shell/callbacks.c:167 +msgid "Based on work by:" +msgstr "작업 기준:" + +#: shell/callbacks.c:168 +msgid "MD5 implementation by Colin Plumb (see md5.c for details)" +msgstr "Colin Plumb의 MD5 구현(자세한 내용은 md5.c 참조)" + +#: shell/callbacks.c:169 +msgid "SHA1 implementation by Steve Reid (see sha1.c for details)" +msgstr "Steve Reid의 SHA1 구현(자세한 내용은 sha1.c 참조)" + +#: shell/callbacks.c:170 +msgid "Blowfish implementation by Paul Kocher (see blowfich.c for details)" +msgstr "Paul Kocher의 Blowfish 구현(자세한 내용은 blowfich.c 참조)" + +#: shell/callbacks.c:171 +msgid "Raytracing benchmark by John Walker (see fbench.c for details)" +msgstr "John Walker의 Raytracing 벤치마크(자세한 내용은 fbench.c 참조)" + +#: shell/callbacks.c:172 +msgid "FFT benchmark by Scott Robert Ladd (see fftbench.c for details)" +msgstr "Scott Robert Ladd의 FFT 벤치마크(자세한 내용은 fftbench.c 참조)" + +#: shell/callbacks.c:173 +msgid "Some code partly based on x86cpucaps by Osamu Kayasono" +msgstr "Osamu Kayasono의 x86cpucaps에 부분적으로 기반한 일부 코드" + +#: shell/callbacks.c:174 +msgid "Vendor list based on GtkSysInfo by Pissens Sebastien" +msgstr "Pissen Sebastien의 GtkSysInfo 기반 공급업체 목록" + +#: shell/callbacks.c:175 +msgid "DMI support based on code by Stewart Adam" +msgstr "Stewart Adam의 코드 기반 DMI 지원" + +#: shell/callbacks.c:176 +msgid "SCSI support based on code by Pascal F. Martin" +msgstr "Pascal F. Martin의 코드 기반 SCSI 지원" + +#: shell/callbacks.c:181 +msgid "Tango Project" +msgstr "탱고 프로젝트" + +#: shell/callbacks.c:182 +msgid "The GNOME Project" +msgstr "그놈 프로젝트" + +#: shell/callbacks.c:183 +msgid "VMWare, Inc. (USB icon from VMWare Workstation 6)" +msgstr "VMWare, Inc.(VMWare Workstation 6의 USB 아이콘)" + +#: shell/callbacks.c:184 +msgid "epicbard (Fan icon, CC BY-SA 3.0)" +msgstr "epicbard (팬 아이콘, CC BY-SA 3.0)" + +#: shell/callbacks.c:202 +msgid "System information and benchmark tool" +msgstr "시스템 정보 및 벤치마크 도구" + +#: shell/callbacks.c:207 +msgid "" +"HardInfo is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.\n" +"\n" +"This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.\n" +"\n" +"You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA" +msgstr "" +"HardInfo는 무료 소프트웨어입니다. 자유 소프트웨어 재단(Free Software Foundation) 버전 2에서 발행한 GNU 일반 공중 사용 허가서(GNU General Public License) 조건에 따라 이를 재배포 및/또는 수정할 수 있습니다.\n" +"\n" +"이 프로그램은 유용하기를 바라며 배포되지만 어떠한 보증도 하지 않습니다. 상품성 또는 특정 목적에의 적합성에 대한 묵시적 보증도 없이. 자세한 내용은 GNU 일반 공중 사용 허가서를 참조하십시오.\n" +"\n" +"이 프로그램과 함께 GNU General Public License 사본을 받았어야 합니다. 그렇지 않은 경우 Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA에 문의하십시오." + +#: shell/callbacks.c:222 +msgid "translator-credits" +msgstr "번역가 크레딧" + +#: shell/menu.c:43 +msgid "_Information" +msgstr "정보(_I)" + +#: shell/menu.c:44 +msgid "_Remote" +msgstr "원격(_R)" + +#: shell/menu.c:45 +msgid "_View" +msgstr "보기(_V)" + +#: shell/menu.c:46 +msgid "_Help" +msgstr "도움말(_H)" + +#: shell/menu.c:47 +msgid "About _Modules" +msgstr "모듈 정보(_M)" + +#: shell/menu.c:51 +msgid "Generate _Report" +msgstr "보고서 생성(_R)" + +#: shell/menu.c:52 +msgid "Generates a report with detailed system information" +msgstr "자세한 시스템 정보가 포함된 보고서 생성" + +#: shell/menu.c:56 shell/syncmanager.c:516 +msgid "Synchronize" +msgstr "동기화" + +#: shell/menu.c:57 +msgid "Send benchmark results and receive updated data from the network" +msgstr "벤치마크 결과 전송 및 네트워크에서 업데이트된 데이터 수신" + +#: shell/menu.c:61 +msgid "_Open..." +msgstr "열기...(_O)" + +#: shell/menu.c:66 +msgid "_Copy to Clipboard" +msgstr "클립 보드에 복사(_C)" + +#: shell/menu.c:67 +msgid "Copy to clipboard" +msgstr "클립 보드에 복사" + +#: shell/menu.c:71 +msgid "_Refresh" +msgstr "새로고침(_R)" + +#: shell/menu.c:76 +msgid "_Open HardInfo Web Site" +msgstr "HardInfo 웹사이트 열기(_O)" + +#: shell/menu.c:81 +msgid "_Report bug" +msgstr "버그 신고(_R)" + +#: shell/menu.c:86 +msgid "_About HardInfo" +msgstr "Hardinfo 정보(_A)" + +#: shell/menu.c:87 +msgid "Displays program version information" +msgstr "프로그램 버전 정보 표시" + +#: shell/menu.c:91 +msgid "_Quit" +msgstr "끝내기(_Q)" + +#: shell/menu.c:98 +msgid "_Side Pane" +msgstr "사이드바(_S)" + +#: shell/menu.c:99 +msgid "Toggles side pane visibility" +msgstr "측면 창 가시성 전환" + +#: shell/menu.c:102 +msgid "_Toolbar" +msgstr "도구모음(_T)" + +#: shell/report.c:769 shell/report.c:777 +msgid "Save File" +msgstr "파일을 저장" + +#: shell/report.c:772 shell/report.c:1251 shell/syncmanager.c:604 +msgid "_Cancel" +msgstr "취소(_C)" + +#: shell/report.c:774 +msgid "_Save" +msgstr "저장(_S)" + +#: shell/report.c:949 +msgid "Cannot create ReportContext. Programming bug?" +msgstr "ReportContext를 생성할 수 없습니다. 프로그래밍 버그?" + +#: shell/report.c:969 +msgid "Open the report with your web browser?" +msgstr "웹 브라우저로 보고서를 여시겠습니까?" + +#: shell/report.c:972 +msgid "_No" +msgstr "아니오(_N)" + +#: shell/report.c:973 +msgid "_Open" +msgstr "열기(_O)" + +#: shell/report.c:1004 +msgid "Generating report..." +msgstr "보고서 생성 중..." + +#: shell/report.c:1014 +msgid "Report saved." +msgstr "보고서가 저장되었습니다." + +#: shell/report.c:1016 +msgid "Error while creating the report." +msgstr "보고서를 만드는 동안 오류가 발생했습니다." + +#: shell/report.c:1118 +msgid "Generate Report" +msgstr "보고서 생성" + +#: shell/report.c:1143 +msgid "" +"Generate Report\n" +"Please choose the information that you wish to view in your report:" +msgstr "" +"보고서 생성\n" +"보고서에서 보고 싶은 정보를 선택하십시오:" + +#: shell/report.c:1215 +msgid "Select _None" +msgstr "선택 안함(_N)" + +#: shell/report.c:1226 +msgid "Select _All" +msgstr "모두 선택(_A)" + +#: shell/report.c:1261 +msgid "_Generate" +msgstr "생성(_G)" + +#: shell/shell.c:408 +msgid "%s - System Information" +msgstr "%s - 시스템 정보" + +#: shell/shell.c:413 +msgid "System Information" +msgstr "시스템 정보" + +#: shell/shell.c:791 +msgid "Loading modules..." +msgstr "모듈 로드 중..." + +#: shell/shell.c:1557 +msgid "URL" +msgstr "URL" + +#: shell/shell.c:1564 +msgid "Support URL" +msgstr "지원 URL" + +#: shell/shell.c:1575 +msgid "Wikipedia" +msgstr "위키피디아" + +#: shell/shell.c:1905 +msgid "%s → Summary" +msgstr "%s → 요약" + +#: shell/shell.c:2013 +msgid "Updating..." +msgstr "업데이트 중..." + +#: shell/syncmanager.c:67 +msgid "" +"Synchronize with Central Database\n" +"The following information may be synchronized\n" +"with the HardInfo central database." +msgstr "" +"중앙 데이터베이스와 동기화\n" +"다음 정보가 동기화될 수 있습니다.\n" +"HardInfo 중앙 데이터베이스와 함께." + +#: shell/syncmanager.c:71 +msgid "" +"Synchronizing\n" +"This may take some time." +msgstr "" +"동기화 중\n" +"시간이 다소 걸릴 수 있습니다." + +#: shell/syncmanager.c:129 +msgid "HardInfo was compiled without libsoup support. (Network Updater requires it.)" +msgstr "HardInfo는 libsoup 지원 없이 컴파일되었습니다. (네트워크 업데이터에 필요합니다.)" + +#: shell/syncmanager.c:354 +msgid "(canceled)" +msgstr "(취소 된)" + +#: shell/syncmanager.c:370 +msgid "(failed)" +msgstr "(실패한)" + +#: shell/syncmanager.c:380 +msgid "" +"Failed while performing \"%s\". Please file a bug report if this problem persists. (Use the Help→Report bug option.)\n" +"\n" +"Details: %s" +msgstr "" +"\"%s\"을(를) 수행하는 동안 실패했습니다. 이 문제가 지속되면 버그 보고서를 제출하십시오. (도움말→버그 신고 옵션을 사용하세요.)\n" +"\n" +"세부 정보: %s" + +#: shell/syncmanager.c:390 +msgid "Failed while performing \"%s\". Please file a bug report if this problem persists. (Use the Help→Report bug option.)" +msgstr "\"%s\"을(를) 수행하는 동안 실패했습니다. 이 문제가 지속되면 버그 보고서를 제출하십시오. (도움말→버그 신고 옵션을 사용하세요.)" + +#: shell/syncmanager.c:591 +msgid "Privacy Policy" +msgstr "개인 정보 정책" + +#: shell/syncmanager.c:613 +msgid "_Synchronize" +msgstr "동기화(_S)" + +#: modules/benchmark.c:351 +msgid "This Machine" +msgstr "이 머신" + +#: modules/benchmark.c:557 modules/benchmark/bench_results.c:523 +#: modules/benchmark/bench_results.c:587 +msgid "CPU Config" +msgstr "CPU 구성" + +#: modules/benchmark.c:557 +msgid "Results" +msgstr "결과" + +#: modules/benchmark.c:558 modules/devices/sparc/processor.c:75 +msgid "CPU" +msgstr "CPU" + +#: modules/benchmark.c:638 +msgid "Benchmarking: %s." +msgstr "벤치마킹: %s." + +#: modules/benchmark.c:651 +msgid "" +"Benchmarking. Please do not move your mouse\n" +"or press any keys." +msgstr "벤치마킹. 마우스를 움직이거나 키를 누르지 마십시오." + +#: modules/benchmark.c:659 +msgid "Cancel" +msgstr "취소" + +#: modules/benchmark.c:731 +msgid "Benchmarks" +msgstr "벤치마크" + +#: modules/benchmark.c:741 +msgid "Perform tasks and compare with other systems" +msgstr "작업 수행 및 다른 시스템과 비교" + +#: modules/benchmark.c:894 +msgid "Send benchmark results" +msgstr "벤치마크 결과 보내기" + +#: modules/benchmark.c:899 +msgid "Receive benchmark results" +msgstr "벤치마크 결과 수신" + +#. / Used for an unknown value. Having it in only one place cleans up the .po +#. * line references +#: modules/benchmark/bench_results.c:32 modules/computer.c:41 +#: modules/computer/display.c:41 modules/computer/display.c:58 +#: modules/computer/os.c:286 modules/computer/os.c:346 modules/devices.c:534 +#: modules/devices/dmi_memory.c:56 modules/devices/dmi_memory.c:57 +#: modules/devices/dmi_memory.c:631 modules/devices/dmi_memory.c:774 +#: modules/devices/dmi_memory.c:909 modules/devices/gpu.c:42 +#: modules/devices/gpu.c:60 modules/devices/gpu.c:124 modules/devices/gpu.c:132 +#: modules/devices/gpu.c:166 modules/devices/gpu.c:167 +#: modules/devices/gpu.c:186 modules/devices/inputdevices.c:50 +#: modules/devices/monitors.c:27 modules/devices/monitors.c:28 +#: modules/devices/monitors.c:153 modules/devices/monitors.c:162 +#: modules/devices/pci.c:25 modules/devices/pci.c:149 modules/devices/pci.c:150 +#: modules/devices/spd-decode.c:306 modules/devices/spd-decode.c:307 +#: modules/devices/spd-decode.c:310 modules/devices/spd-decode.c:311 +#: modules/devices/spd-decode.c:544 modules/devices/spd-decode.c:984 +#: modules/devices/spd-decode.c:985 modules/devices/storage.c:27 +#: modules/devices/storage.c:307 modules/devices/storage.c:336 +#: modules/devices/storage.c:431 modules/devices/usb.c:29 +#: modules/network/net.c:437 includes/cpu_util.h:11 +msgid "(Unknown)" +msgstr "(알 수 없음)" + +#: modules/benchmark/bench_results.c:65 modules/benchmark/bench_results.c:351 +#: modules/devices.c:371 modules/devices.c:379 modules/devices.c:407 +#: modules/devices/alpha/processor.c:90 modules/devices/arm/processor.c:290 +#: modules/devices/arm/processor.c:303 modules/devices/arm/processor.c:345 +#: modules/devices/arm/processor.c:500 modules/devices/e2k/processor.c:335 +#: modules/devices/e2k/processor.c:366 modules/devices/gpu.c:127 +#: modules/devices/gpu.c:129 modules/devices/gpu.c:135 +#: modules/devices/gpu.c:137 modules/devices/gpu.c:189 +#: modules/devices/gpu.c:191 modules/devices/ia64/processor.c:167 +#: modules/devices/ia64/processor.c:196 +#: modules/devices/loongarch64/processor.c:77 +#: modules/devices/m68k/processor.c:87 modules/devices/mips/processor.c:77 +#: modules/devices/parisc/processor.c:158 +#: modules/devices/parisc/processor.c:191 modules/devices/ppc/processor.c:160 +#: modules/devices/ppc/processor.c:187 modules/devices/riscv/processor.c:186 +#: modules/devices/riscv/processor.c:214 modules/devices/s390/processor.c:160 +#: modules/devices/sh/processor.c:87 modules/devices/sh/processor.c:88 +#: modules/devices/sh/processor.c:89 modules/devices/x86/processor.c:318 +#: modules/devices/x86/processor.c:331 modules/devices/x86/processor.c:659 +#: modules/devices/x86/processor.c:791 +msgid "MHz" +msgstr "MHz" + +#: modules/benchmark/bench_results.c:381 modules/devices.c:179 +msgid "%d physical processor" +msgid_plural "%d physical processors" +msgstr[0] "%d개의 물리적 프로세서" + +#: modules/benchmark/bench_results.c:382 modules/devices.c:180 +msgid "%d core" +msgid_plural "%d cores" +msgstr[0] "%d 코어" + +#: modules/benchmark/bench_results.c:383 modules/devices.c:181 +msgid "%d thread" +msgid_plural "%d threads" +msgstr[0] "%d 스레드" + +#: modules/benchmark/bench_results.c:388 modules/devices.c:183 +msgid "%d NUMA node" +msgid_plural "%d NUMA nodes" +msgstr[0] "%d NUMA 노드" + +#. /NP procs; NC cores across NN nodes; NT threads +#: modules/benchmark/bench_results.c:392 modules/devices.c:184 +msgid "%s; %s across %s; %s" +msgstr "%s; %s에서 %s; %s" + +#. /NP procs; NC cores; NT threads +#: modules/benchmark/bench_results.c:397 modules/devices.c:187 +msgid "%s; %s; %s" +msgstr "%s; %s; %s" + +#: modules/benchmark/bench_results.c:473 modules/benchmark/bench_results.c:593 +#: modules/computer.c:941 modules/devices/dmi_memory.c:633 +#: modules/devices/dmi_memory.c:714 modules/devices/dmi_memory.c:724 +#: modules/devices/dmi_memory.c:778 modules/devices/dmi_memory.c:865 +#: modules/devices/dmi_memory.c:911 modules/devices/dmi_memory.c:996 +#: modules/network/net.c:395 modules/network/net.c:417 +#: modules/network/net.c:418 +msgid "MiB" +msgstr "MiB" + +#: modules/benchmark/bench_results.c:478 modules/benchmark/bench_results.c:592 +msgid "kiB" +msgstr "kiB" + +#: modules/benchmark/bench_results.c:486 modules/benchmark/bench_results.c:542 +msgid "%d-bit" +msgstr "%d비트" + +#: modules/benchmark/bench_results.c:507 modules/benchmark/bench_results.c:570 +msgid "Benchmark Result" +msgstr "벤치마크 결과" + +#: modules/benchmark/bench_results.c:507 modules/benchmark/bench_results.c:570 +msgid "Threads" +msgstr "스레드" + +#: modules/benchmark/bench_results.c:508 modules/benchmark/bench_results.c:572 +msgid "Elapsed Time" +msgstr "경과 시간" + +#: modules/benchmark/bench_results.c:508 modules/benchmark/bench_results.c:572 +msgid "seconds" +msgstr "초" + +#: modules/benchmark/bench_results.c:509 modules/computer/languages.c:101 +#: modules/devices/arm/processor.c:355 modules/devices/e2k/processor.c:334 +#: modules/devices/gpu.c:159 modules/devices/ia64/processor.c:166 +#: modules/devices/pci.c:146 modules/devices/ppc/processor.c:159 +msgid "Revision" +msgstr "개정" + +#: modules/benchmark/bench_results.c:510 modules/benchmark/bench_results.c:573 +msgid "Extra Information" +msgstr "추가 정보" + +#: modules/benchmark/bench_results.c:511 modules/benchmark/bench_results.c:574 +msgid "User Note" +msgstr "사용자 노트" + +#: modules/benchmark/bench_results.c:513 modules/benchmark/bench_results.c:576 +msgid "Note" +msgstr "메모" + +#: modules/benchmark/bench_results.c:514 modules/benchmark/bench_results.c:577 +msgid "This result is from an old version of HardInfo. Results might not be comparable to current version. Some details are missing." +msgstr "이 결과는 이전 버전의 HardInfo에서 가져온 것입니다. 결과는 현재 버전과 비교되지 않을 수 있습니다. 일부 세부정보가 누락되었습니다." + +#: modules/benchmark/bench_results.c:518 modules/benchmark/bench_results.c:581 +#: modules/devices/devicetree/pmac_data.c:81 modules/devices/sh/processor.c:85 +msgid "Machine" +msgstr "머신" + +#: modules/benchmark/bench_results.c:519 modules/benchmark/bench_results.c:581 +#: modules/devices/devicetree.c:208 modules/devices/dmi.c:48 +msgid "Board" +msgstr "보드" + +#: modules/benchmark/bench_results.c:520 modules/benchmark/bench_results.c:583 +#: modules/computer.c:551 +msgid "Machine Type" +msgstr "머신 유형" + +#: modules/benchmark/bench_results.c:521 modules/benchmark/bench_results.c:584 +msgid "CPU Name" +msgstr "CPU 이름" + +#: modules/benchmark/bench_results.c:522 modules/benchmark/bench_results.c:585 +msgid "CPU Description" +msgstr "CPU 설명" + +#: modules/benchmark/bench_results.c:524 modules/benchmark/bench_results.c:587 +msgid "Threads Available" +msgstr "사용 가능한 스레드" + +#: modules/benchmark/bench_results.c:525 modules/benchmark/bench_results.c:588 +msgid "GPU" +msgstr "GPU" + +#: modules/benchmark/bench_results.c:526 modules/benchmark/bench_results.c:590 +#: modules/computer.c:563 +msgid "OpenGL Renderer" +msgstr "OpenGL 렌더러" + +#: modules/benchmark/bench_results.c:527 modules/benchmark/bench_results.c:592 +#: modules/computer.c:140 modules/computer.c:550 modules/computer.c:1034 +#: modules/devices/gpu.c:162 +msgid "Memory" +msgstr "메모리" + +#: modules/benchmark/bench_results.c:528 modules/benchmark/bench_results.c:594 +msgid "Pointer Size" +msgstr "포인터 크기" + +#: modules/benchmark/bench_results.c:570 +msgid "Benchmark" +msgstr "벤치마크" + +#: modules/benchmark/bench_results.c:571 modules/devices/dmi_memory.c:933 +#: modules/devices/firmware.c:245 modules/devices/monitors.c:493 +#: modules/devices/x86/processor.c:693 +msgid "Result" +msgstr "결과" + +#: modules/benchmark/bench_results.c:592 +msgid "Physical Memory" +msgstr "물리적 메모리" + +#: modules/benchmark/bench_results.c:596 +msgid "Handles" +msgstr "핸들" + +#: modules/benchmark/bench_results.c:596 +msgid "mid" +msgstr "중반" + +#: modules/benchmark/bench_results.c:597 +msgid "cfg_val" +msgstr "" + +#: modules/benchmark/benches.c:83 +msgid "CPU Blowfish (Single-thread)" +msgstr "CPU Blowfish (단일 스레드)" + +#: modules/benchmark/benches.c:91 +msgid "CPU Blowfish (Multi-thread)" +msgstr "CPU Blowfish (다중 스레드)" + +#: modules/benchmark/benches.c:99 +msgid "CPU Blowfish (Multi-core)" +msgstr "CPU Blowfish (다중 코어)" + +#: modules/benchmark/benches.c:107 +msgid "CPU Zlib" +msgstr "" + +#: modules/benchmark/benches.c:115 +msgid "CPU CryptoHash" +msgstr "" + +#: modules/benchmark/benches.c:123 +msgid "CPU Fibonacci" +msgstr "" + +#: modules/benchmark/benches.c:131 +msgid "CPU N-Queens" +msgstr "" + +#: modules/benchmark/benches.c:139 +msgid "FPU FFT" +msgstr "FPU FFT" + +#: modules/benchmark/benches.c:147 +msgid "FPU Raytracing" +msgstr "FPU 레이트레이싱" + +#: modules/benchmark/benches.c:155 +msgid "SysBench CPU (Single-thread)" +msgstr "SysBench CPU(단일 스레드)" + +#: modules/benchmark/benches.c:163 +msgid "SysBench CPU (Multi-thread)" +msgstr "SysBench CPU(다중 스레드)" + +#: modules/benchmark/benches.c:171 +msgid "SysBench CPU (Four threads)" +msgstr "SysBench CPU(4개 스레드)" + +#: modules/benchmark/benches.c:179 +msgid "SysBench Memory (Single-thread)" +msgstr "SysBench 메모리(단일 스레드)" + +#: modules/benchmark/benches.c:187 +msgid "SysBench Memory (Two threads)" +msgstr "SysBench 메모리(2개의 스레드)" + +#: modules/benchmark/benches.c:195 +msgid "SysBench Memory" +msgstr "SysBench 메모리" + +#: modules/benchmark/benches.c:204 +msgid "GPU Drawing" +msgstr "GPU 도면" + +#: modules/benchmark/benches.c:221 +msgid "" +"Alexey Kopytov's sysbench is required.\n" +"Results in events/second. Higher is better." +msgstr "" +"Alexey Kopytov의 sysbench가 필요합니다.\n" +"events/초의 결과입니다. 높을수록 좋습니다." + +#: modules/benchmark/benches.c:227 +msgid "" +"Alexey Kopytov's sysbench is required.\n" +"Results in MiB/second. Higher is better." +msgstr "" +"Alexey Kopytov의 sysbench가 필요합니다.\n" +"MiB/초 단위의 결과입니다. 높을수록 좋습니다." + +#: modules/benchmark/benches.c:231 +msgid "Results in MiB/second. Higher is better." +msgstr "MiB/초 단위의 결과입니다. 높을수록 좋습니다." + +#: modules/benchmark/benches.c:238 +msgid "Results in HIMarks. Higher is better." +msgstr "HIMark의 결과입니다. 높을수록 좋습니다." + +#: modules/benchmark/benches.c:244 +msgid "Results in seconds. Lower is better." +msgstr "초 단위의 결과입니다. 낮을수록 좋습니다." + +#: modules/computer.c:96 modules/devices/firmware.c:74 +msgid "Summary" +msgstr "요약" + +#: modules/computer.c:97 modules/computer.c:553 modules/computer.c:1033 +msgid "Operating System" +msgstr "운영체제" + +#: modules/computer.c:98 +msgid "Security" +msgstr "보안" + +#: modules/computer.c:99 modules/devices/gpu.c:167 modules/devices/pci.c:150 +msgid "Kernel Modules" +msgstr "커널 모듈" + +#: modules/computer.c:100 modules/computer.c:706 +msgid "Boots" +msgstr "부팅" + +#: modules/computer.c:101 +msgid "Languages" +msgstr "언어" + +#: modules/computer.c:102 +msgid "Memory Usage" +msgstr "메모리 사용량" + +#: modules/computer.c:103 +msgid "Filesystems" +msgstr "파일 시스템" + +#: modules/computer.c:104 modules/computer.c:558 +msgid "Display" +msgstr "디스플레이" + +#: modules/computer.c:105 modules/computer/environment.c:32 +msgid "Environment Variables" +msgstr "환경 변수" + +#: modules/computer.c:107 modules/computer.c:109 +msgid "Development" +msgstr "개발" + +#: modules/computer.c:111 modules/computer.c:830 +msgid "Users" +msgstr "사용자" + +#: modules/computer.c:112 +msgid "Groups" +msgstr "그룹" + +#: modules/computer.c:142 +msgid "%dMB (%dMB used)" +msgstr "%dMB(%dMB 사용)" + +#: modules/computer.c:144 modules/computer.c:622 +msgid "Uptime" +msgstr "가동 시간" + +#: modules/computer.c:146 modules/computer.c:555 +msgid "Date/Time" +msgstr "날짜/시간" + +#: modules/computer.c:151 modules/computer.c:623 +msgid "Load Average" +msgstr "평균 대기" + +#: modules/computer.c:264 +msgid "Scripting Languages" +msgstr "스크립팅 언어" + +#: modules/computer.c:265 +msgid "Gambas3 (gbr3)" +msgstr "Gambas3 (gbr3)" + +#: modules/computer.c:266 +msgid "Python (default)" +msgstr "파이썬 (기본값)" + +#: modules/computer.c:267 +msgid "Python2" +msgstr "파이썬2" + +#: modules/computer.c:268 +msgid "Python3" +msgstr "파이썬3" + +#: modules/computer.c:269 +msgid "Perl" +msgstr "펄" + +#: modules/computer.c:270 +msgid "Perl6 (VM)" +msgstr "펄6(VM)" + +#: modules/computer.c:271 +msgid "Perl6" +msgstr "펄6" + +#: modules/computer.c:272 +msgid "PHP" +msgstr "PHP" + +#: modules/computer.c:273 +msgid "Ruby" +msgstr "루비" + +#: modules/computer.c:274 +msgid "Bash" +msgstr "Bash" + +#: modules/computer.c:275 +msgid "JavaScript (Node.js)" +msgstr "자바스크립트 (Node.js)" + +#: modules/computer.c:276 +msgid "awk" +msgstr "" + +#: modules/computer.c:277 +msgid "Compilers" +msgstr "컴파일러" + +#: modules/computer.c:278 +msgid "C (GCC)" +msgstr "C (GCC)" + +#: modules/computer.c:279 +msgid "C (Clang)" +msgstr "C(클랭)" + +#: modules/computer.c:280 +msgid "D (dmd)" +msgstr "D (dmd)" + +#: modules/computer.c:281 +msgid "Gambas3 (gbc3)" +msgstr "" + +#: modules/computer.c:282 +msgid "Java" +msgstr "자바" + +#: modules/computer.c:283 +msgid "C♯ (mcs)" +msgstr "C♯ (MC)" + +#: modules/computer.c:284 +msgid "Vala" +msgstr "발라" + +#: modules/computer.c:285 +msgid "Haskell (GHC)" +msgstr "하스켈(GHC)" + +#: modules/computer.c:286 +msgid "FreePascal" +msgstr "프리 파스칼" + +#: modules/computer.c:287 +msgid "Go" +msgstr "" + +#: modules/computer.c:288 +msgid "Rust" +msgstr "Rust" + +#: modules/computer.c:289 +msgid "Tools" +msgstr "도구" + +#: modules/computer.c:290 +msgid "make" +msgstr "make" + +#: modules/computer.c:291 +msgid "ninja" +msgstr "ninja" + +#: modules/computer.c:292 +msgid "GDB" +msgstr "GDB" + +#: modules/computer.c:293 +msgid "LLDB" +msgstr "LLDB" + +#: modules/computer.c:294 +msgid "strace" +msgstr "" + +#: modules/computer.c:295 +msgid "valgrind" +msgstr "" + +#: modules/computer.c:296 +msgid "QMake" +msgstr "" + +#: modules/computer.c:297 +msgid "CMake" +msgstr "CMake" + +#: modules/computer.c:298 +msgid "Gambas3 IDE" +msgstr "" + +#: modules/computer.c:299 +msgid "Radare2" +msgstr "Radare2" + +#: modules/computer.c:300 +msgid "ltrace" +msgstr "" + +#: modules/computer.c:301 +msgid "Powershell" +msgstr "파워쉘" + +#: modules/computer.c:342 +msgid "Not found" +msgstr "찾을 수 없음" + +#: modules/computer.c:347 +msgid "Detecting version: %s" +msgstr "버전 감지 중: %s" + +#: modules/computer.c:365 +msgid "Program" +msgstr "프로그램" + +#: modules/computer.c:384 +msgid "Field" +msgstr "필드" + +#: modules/computer.c:384 modules/computer.c:695 modules/computer/modules.c:224 +#: modules/computer/modules.c:225 modules/devices/arm/processor.c:470 +msgid "Description" +msgstr "설명" + +#: modules/computer.c:384 modules/devices.c:773 +msgid "Value" +msgstr "값" + +#: modules/computer.c:404 +msgid "Single-board computer" +msgstr "싱글 보드 컴퓨터" + +#. /proc/apm +#: modules/computer.c:453 +msgid "Unknown physical machine type" +msgstr "알 수 없는 물리적 머신 유형" + +#: modules/computer.c:473 modules/computer.c:474 +msgid "Virtual (VMware)" +msgstr "가상(VMware)" + +#: modules/computer.c:476 modules/computer.c:477 modules/computer.c:478 +#: modules/computer.c:479 +msgid "Virtual (QEMU)" +msgstr "가상(QEMU)" + +#: modules/computer.c:481 modules/computer.c:482 +msgid "Virtual (Unknown)" +msgstr "가상(알 수 없음)" + +#: modules/computer.c:484 modules/computer.c:485 modules/computer.c:486 +#: modules/computer.c:507 +msgid "Virtual (VirtualBox)" +msgstr "가상(VirtualBox)" + +#: modules/computer.c:488 modules/computer.c:489 modules/computer.c:490 +#: modules/computer.c:501 +msgid "Virtual (Xen)" +msgstr "가상(Xen)" + +#: modules/computer.c:492 +msgid "Virtual (hypervisor present)" +msgstr "가상(하이퍼바이저 있음)" + +#: modules/computer.c:547 modules/computer.c:987 +msgid "Computer" +msgstr "컴퓨터" + +#: modules/computer.c:554 modules/computer.c:616 +msgid "User Name" +msgstr "사용자 이름" + +#: modules/computer.c:559 +msgid "Resolution" +msgstr "해결" + +#: modules/computer.c:559 modules/computer.c:776 +msgid "%dx%d pixels" +msgstr "%dx%d픽셀" + +#: modules/computer.c:561 +msgid "Display Adapter" +msgstr "디스플레이 어댑터" + +#: modules/computer.c:564 +msgid "Session Display Server" +msgstr "세션 디스플레이 서버" + +#: modules/computer.c:567 modules/computer/alsa.c:26 +msgid "Audio Devices" +msgstr "오디오 장치" + +#: modules/computer.c:569 modules/devices.c:109 +msgid "Input Devices" +msgstr "입력 장치" + +#: modules/computer.c:598 +msgid "Kernel" +msgstr "커널" + +#: modules/computer.c:599 +msgid "Command Line" +msgstr "명령줄" + +#: modules/computer.c:601 +msgid "C Library" +msgstr "C 라이브러리" + +#: modules/computer.c:602 +msgid "Distribution" +msgstr "분포" + +#: modules/computer.c:609 +msgid "Spin/Flavor" +msgstr "스핀/플레이버" + +#: modules/computer.c:614 +msgid "Current Session" +msgstr "현재 세션" + +#: modules/computer.c:615 +msgid "Computer Name" +msgstr "컴퓨터 이름" + +#: modules/computer.c:617 modules/computer/languages.c:99 +msgid "Language" +msgstr "언어" + +#: modules/computer.c:618 modules/computer/users.c:50 +msgid "Home Directory" +msgstr "홈 디렉토리" + +#: modules/computer.c:619 +msgid "Desktop Environment" +msgstr "데스크탑 환경" + +#: modules/computer.c:622 +msgid "Misc" +msgstr "기타" + +#: modules/computer.c:635 +msgid "HardInfo" +msgstr "" + +#: modules/computer.c:636 +msgid "HardInfo running as" +msgstr "다음으로 실행되는 HardInfo" + +#: modules/computer.c:637 +msgid "Superuser" +msgstr "수퍼유저" + +#: modules/computer.c:637 +msgid "User" +msgstr "사용자" + +#: modules/computer.c:641 +msgid "Health" +msgstr "상태" + +#: modules/computer.c:642 +msgid "Available entropy in /dev/random" +msgstr "/dev/random에서 사용 가능한 엔트로피" + +#: modules/computer.c:646 +msgid "Hardening Features" +msgstr "Hardening 기능" + +#: modules/computer.c:647 +msgid "ASLR" +msgstr "ASLR" + +#: modules/computer.c:648 +msgid "dmesg" +msgstr "dmesg" + +#: modules/computer.c:652 +msgid "Linux Security Modules" +msgstr "Linux 보안 모듈" + +#: modules/computer.c:653 +msgid "Modules available" +msgstr "사용 가능한 모듈" + +#: modules/computer.c:654 +msgid "SELinux status" +msgstr "SELinux 상태" + +#: modules/computer.c:660 +msgid "CPU Vulnerabilities" +msgstr "CPU 취약점" + +#: modules/computer.c:692 +msgid "Loaded Modules" +msgstr "로드된 모듈" + +#: modules/computer.c:708 +msgid "Date & Time" +msgstr "날짜 & 시간" + +#: modules/computer.c:709 +msgid "Kernel Version" +msgstr "커널 버전" + +#: modules/computer.c:719 +msgid "Available Languages" +msgstr "사용 가능한 언어" + +#: modules/computer.c:721 +msgid "Language Code" +msgstr "언어 코드" + +#: modules/computer.c:733 +msgid "Mounted File Systems" +msgstr "마운트된 파일 시스템" + +#: modules/computer.c:735 modules/computer/filesystem.c:87 +msgid "Mount Point" +msgstr "마운트 포인트" + +#: modules/computer.c:736 +msgid "Usage" +msgstr "사용량" + +#: modules/computer.c:737 modules/devices.c:797 modules/devices.c:811 +#: modules/devices/e2k/processor.c:383 modules/devices/gpu.c:87 +#: modules/devices/gpu.c:95 modules/devices/gpu.c:243 modules/devices/pci.c:102 +#: modules/devices/pci.c:110 modules/devices/pci.c:154 +#: modules/devices/storage.c:48 modules/devices/storage.c:57 +#: modules/devices/usb.c:172 modules/devices/usb.c:184 +#: modules/devices/x86/processor.c:812 +msgid "Device" +msgstr "장치" + +#: modules/computer.c:759 +msgid "Session" +msgstr "세션" + +#: modules/computer.c:760 modules/devices.c:774 modules/devices.c:811 +#: modules/devices/dmi.c:56 modules/devices/dmi_memory.c:655 +#: modules/devices/dmi_memory.c:804 modules/devices/inputdevices.c:141 +#: modules/devices/x86/processor.c:716 +msgid "Type" +msgstr "유형" + +#: modules/computer.c:763 +msgid "Wayland" +msgstr "웨이랜드" + +#: modules/computer.c:764 modules/computer.c:769 +msgid "Current Display Name" +msgstr "현재 표시 이름" + +#: modules/computer.c:768 +msgid "X Server" +msgstr "X 서버" + +#: modules/computer.c:770 modules/computer.c:810 modules/devices.c:811 +#: modules/devices/dmi.c:40 modules/devices/dmi.c:46 modules/devices/dmi.c:50 +#: modules/devices/dmi.c:55 modules/devices/dmi_memory.c:805 +#: modules/devices/dmi_memory.c:949 modules/devices/e2k/processor.c:331 +#: modules/devices/firmware.c:75 modules/devices/firmware.c:167 +#: modules/devices/firmware.c:172 modules/devices/firmware.c:219 +#: modules/devices/gpu.c:86 modules/devices/gpu.c:94 modules/devices/gpu.c:242 +#: modules/devices/ia64/processor.c:161 modules/devices/inputdevices.c:143 +#: modules/devices/monitors.c:400 modules/devices/pci.c:101 +#: modules/devices/pci.c:109 modules/devices/storage.c:47 +#: modules/devices/storage.c:56 modules/devices/storage.c:282 +#: modules/devices/storage.c:572 modules/devices/storage.c:771 +#: modules/devices/usb.c:171 modules/devices/x86/processor.c:655 +msgid "Vendor" +msgstr "공급자" + +#: modules/computer.c:772 +msgid "Release Number" +msgstr "릴리즈 번호" + +#: modules/computer.c:780 +msgid "Screens" +msgstr "스크린" + +#: modules/computer.c:786 +msgid "Disconnected" +msgstr "연결 끊김" + +#: modules/computer.c:789 +msgid "Connected" +msgstr "연결됨" + +#: modules/computer.c:797 +msgid "Unused" +msgstr "미사용" + +#: modules/computer.c:798 +msgid "%dx%d pixels, offset (%d, %d)" +msgstr "%dx%d 픽셀, 오프셋(%d, %d)" + +#: modules/computer.c:807 +msgid "Outputs (XRandR)" +msgstr "출력(XRandR)" + +#: modules/computer.c:809 +msgid "OpenGL (GLX)" +msgstr "" + +#: modules/computer.c:811 +msgid "Renderer" +msgstr "렌더러" + +#: modules/computer.c:812 +msgid "Direct Rendering" +msgstr "직접 렌더링" + +#: modules/computer.c:814 +msgid "Version (Compatibility)" +msgstr "버전(호환성)" + +#: modules/computer.c:815 +msgid "Shading Language Version (Compatibility)" +msgstr "셰이딩 언어 버전 (호환성)" + +#: modules/computer.c:816 +msgid "Version (Core)" +msgstr "버전(코어)" + +#: modules/computer.c:817 +msgid "Shading Language Version (Core)" +msgstr "셰이딩 언어 버전(코어)" + +#: modules/computer.c:818 +msgid "Version (ES)" +msgstr "버전 (ES)" + +#: modules/computer.c:819 +msgid "Shading Language Version (ES)" +msgstr "셰이딩 언어 버전(ES)" + +#: modules/computer.c:820 +msgid "GLX Version" +msgstr "GLX 버전" + +#: modules/computer.c:841 +msgid "Group" +msgstr "그룹" + +#: modules/computer.c:844 modules/computer/users.c:49 +msgid "Group ID" +msgstr "그룹 ID" + +#. / "usable memory" +#: modules/computer.c:937 +msgid "%0.1f %s available to Linux" +msgstr "Linux에서 %0.1f %s 사용 가능" + +#: modules/computer.c:939 modules/devices/dmi_memory.c:712 +#: modules/devices/dmi_memory.c:722 modules/devices/dmi_memory.c:863 +#: modules/devices/dmi_memory.c:994 +msgid "GiB" +msgstr "" + +#: modules/computer.c:943 modules/computer/memory_usage.c:77 +#: modules/computer/modules.c:224 +msgid "KiB" +msgstr "" + +#: modules/computer.c:1006 modules/devices/devicetree/pmac_data.c:82 +msgid "Motherboard" +msgstr "메인보드" + +#: modules/computer.c:1034 +msgid "Graphics" +msgstr "그래픽" + +#: modules/computer.c:1035 modules/devices.c:110 +msgid "Storage" +msgstr "저장장치" + +#: modules/computer.c:1035 modules/devices.c:106 +msgid "Printers" +msgstr "프린터" + +#: modules/computer.c:1035 +msgid "Audio" +msgstr "오디오" + +#: modules/computer.c:1083 +msgid "Gathers high-level computer information" +msgstr "고급 컴퓨터 정보 수집" + +#: modules/computer.c:1095 +msgid "lsmod is required." +msgstr "lsmod가 필요합니다." + +#: modules/computer.c:1103 +msgid "X.org's xrandr utility provides additional details when available." +msgstr "X.org의 xrandr 유틸리티는 사용 가능한 경우 추가 세부정보를 제공합니다." + +#: modules/computer.c:1104 +msgid "Mesa's glxinfo utility is required for OpenGL information." +msgstr "Mesa의 glxinfo 유틸리티는 OpenGL 정보에 필요합니다." + +#: modules/computer/alsa.c:34 +msgid "Audio Adapter" +msgstr "오디오 어댑터" + +#: modules/computer/filesystem.c:85 +msgid "Filesystem" +msgstr "파일 시스템" + +#: modules/computer/filesystem.c:86 +msgid "Mounted As" +msgstr "마운트" + +#: modules/computer/filesystem.c:86 +msgid "Read-Write" +msgstr "읽기-쓰기" + +#: modules/computer/filesystem.c:86 +msgid "Read-Only" +msgstr "읽기 전용" + +#: modules/computer/filesystem.c:88 modules/devices.c:797 +#: modules/devices/dmi_memory.c:661 modules/devices/dmi_memory.c:808 +#: modules/devices/dmi_memory.c:840 modules/devices/dmi_memory.c:879 +#: modules/devices/dmi_memory.c:948 +msgid "Size" +msgstr "크기" + +#: modules/computer/filesystem.c:89 +msgid "Used" +msgstr "사용됨" + +#: modules/computer/filesystem.c:90 +msgid "Available" +msgstr "사용 가능" + +#: modules/computer/languages.c:94 +msgid "Locale Information" +msgstr "로케일 정보" + +#: modules/computer/languages.c:96 modules/devices/dmi_memory.c:651 +#: modules/devices/gpu.c:222 +msgid "Source" +msgstr "소스" + +#: modules/computer/languages.c:97 +msgid "Address" +msgstr "주소" + +#: modules/computer/languages.c:98 +msgid "E-mail" +msgstr "이메일" + +#: modules/computer/languages.c:100 +msgid "Territory" +msgstr "영역" + +#: modules/computer/languages.c:102 modules/devices/dmi.c:45 +msgid "Date" +msgstr "날짜" + +#: modules/computer/languages.c:103 +msgid "Codeset" +msgstr "코드셋" + +#: modules/computer/loadavg.c:64 +msgid "Couldn't obtain load average" +msgstr "로드 평균을 가져올 수 없습니다." + +#: modules/computer/memory_usage.c:106 +msgid "Total Memory" +msgstr "총 메모리" + +#: modules/computer/memory_usage.c:107 +msgid "Free Memory" +msgstr "여유 메모리" + +#: modules/computer/memory_usage.c:108 +msgid "Cached Swap" +msgstr "캐시된 스왑" + +#: modules/computer/memory_usage.c:109 +msgid "High Memory" +msgstr "높은 메모리" + +#: modules/computer/memory_usage.c:110 +msgid "Free High Memory" +msgstr "무료 대용량 메모리" + +#: modules/computer/memory_usage.c:111 +msgid "Low Memory" +msgstr "메모리 부족" + +#: modules/computer/memory_usage.c:112 +msgid "Free Low Memory" +msgstr "여유 메모리 부족" + +#: modules/computer/memory_usage.c:113 +msgid "Virtual Memory" +msgstr "가상 메모리" + +#: modules/computer/memory_usage.c:114 +msgid "Free Virtual Memory" +msgstr "여유 가상 메모리" + +#: modules/computer/modules.c:192 modules/computer/modules.c:193 +#: modules/computer/modules.c:194 modules/computer/modules.c:195 +#: modules/computer/modules.c:196 modules/computer/modules.c:197 +#: modules/devices/dmi.c:115 modules/devices/dmi_memory.c:935 +#: modules/devices/firmware.c:245 modules/devices/x86/processor.c:695 +msgid "(Not available)" +msgstr "(사용할 수 없습니다)" + +#: modules/computer/modules.c:223 +msgid "Module Information" +msgstr "모듈 정보" + +#: modules/computer/modules.c:223 modules/devices/gpu.c:248 +msgid "Path" +msgstr "경로" + +#: modules/computer/modules.c:223 +msgid "Used Memory" +msgstr "사용한 메모리" + +#: modules/computer/modules.c:225 +msgid "Version Magic" +msgstr "" + +#: modules/computer/modules.c:226 +msgid "In Linus' Tree" +msgstr "" + +#: modules/computer/modules.c:227 +msgid "Retpoline Enabled" +msgstr "리트폴린 활성화" + +#: modules/computer/modules.c:227 +msgid "Copyright" +msgstr "저작권" + +#: modules/computer/modules.c:227 +msgid "Author" +msgstr "원작자" + +#: modules/computer/modules.c:228 +msgid "License" +msgstr "특허" + +#: modules/computer/modules.c:234 +msgid "Dependencies" +msgstr "종속성" + +#: modules/computer/os.c:36 modules/computer/os.c:37 modules/computer/os.c:38 +#: modules/computer/os.c:39 +msgid "GNU C Library" +msgstr "GNU C 라이브러리" + +#: modules/computer/os.c:40 +msgid "uClibc or uClibc-ng" +msgstr "uClibc 또는 uClibc-ng" + +#: modules/computer/os.c:41 +msgid "diet libc" +msgstr "" + +#: modules/computer/os.c:113 modules/computer/os.c:116 +msgid "GNOME Shell " +msgstr "그놈 쉘 " + +#: modules/computer/os.c:124 modules/computer/os.c:127 +msgid "Version: " +msgstr "버전: " + +#: modules/computer/os.c:146 modules/computer/os.c:149 +msgid "MATE Desktop Environment " +msgstr "MATE 데스크탑 환경 " + +#: modules/computer/os.c:180 +msgid "Unknown (Window Manager: %s)" +msgstr "알 수 없음(창 관리자: %s)" + +#. /{desktop environment} on {session type} +#: modules/computer/os.c:191 +msgid "%s on %s" +msgstr "%s의 %s" + +#: modules/computer/os.c:261 +msgid "Terminal" +msgstr "터미널" + +#: modules/computer/os.c:278 +msgid "User access allowed" +msgstr "사용자 액세스 허용" + +#: modules/computer/os.c:280 +msgid "User access forbidden" +msgstr "사용자 액세스 금지" + +#: modules/computer/os.c:282 +msgid "Access allowed (running as superuser)" +msgstr "액세스 허용(수퍼유저로 실행)" + +#: modules/computer/os.c:284 +msgid "Access forbidden? (running as superuser)" +msgstr "액세스 금지? (수퍼유저로 실행)" + +#: modules/computer/os.c:294 modules/computer/os.c:567 +msgid "Disabled" +msgstr "비활성화" + +#: modules/computer/os.c:296 +msgid "Partially enabled (mmap base+stack+VDSO base)" +msgstr "부분적으로 활성화됨(mmap base+stack+VDSO base)" + +#: modules/computer/os.c:298 +msgid "Fully enabled (mmap base+stack+VDSO base+heap)" +msgstr "완전히 활성화됨(mmap base+stack+VDSO base+heap)" + +#. /bits of entropy for rng (0) +#: modules/computer/os.c:308 +msgid "(None or not available)" +msgstr "(없음 또는 사용할 수 없음)" + +#. /bits of entropy for rng (low/poor value) +#: modules/computer/os.c:309 +msgid "%d bits (low)" +msgstr "%d비트(낮음)" + +#. /bits of entropy for rng (medium value) +#: modules/computer/os.c:310 +msgid "%d bits (medium)" +msgstr "%d비트(중간)" + +#. /bits of entropy for rng (high/good value) +#: modules/computer/os.c:311 +msgid "%d bits (healthy)" +msgstr "%d비트(정상)" + +#: modules/computer/os.c:562 +msgid "Not installed" +msgstr "설치되지 않음" + +#: modules/computer/os.c:565 +msgid "Enabled" +msgstr "활성화됨" + +#: modules/computer/users.c:47 +msgid "User Information" +msgstr "사용자 정보" + +#: modules/computer/users.c:48 +msgid "User ID" +msgstr "사용자 ID" + +#: modules/computer/users.c:51 +msgid "Default Shell" +msgstr "기본 셸" + +#: modules/devices.c:101 +msgid "Graphics Processors" +msgstr "그래픽 프로세서" + +#: modules/devices.c:102 modules/devices/monitors.c:447 +#: modules/devices/monitors.c:493 +msgid "Monitors" +msgstr "모니터" + +#: modules/devices.c:103 modules/devices/pci.c:175 +msgid "PCI Devices" +msgstr "PCI 장치" + +#: modules/devices.c:104 modules/devices/usb.c:211 +msgid "USB Devices" +msgstr "USB 장치" + +#: modules/devices.c:105 +msgid "Firmware" +msgstr "펌웨어" + +#: modules/devices.c:107 +msgid "Battery" +msgstr "배터리" + +#: modules/devices.c:108 +msgid "Sensors" +msgstr "센서" + +#: modules/devices.c:111 +msgid "System DMI" +msgstr "시스템 DMI" + +#: modules/devices.c:112 +msgid "Memory Devices" +msgstr "메모리 장치" + +#: modules/devices.c:114 modules/devices.c:116 +msgid "Device Tree" +msgstr "장치 트리" + +#: modules/devices.c:118 +msgid "Resources" +msgstr "자원" + +#: modules/devices.c:773 +msgid "Sensor" +msgstr "센서" + +#: modules/devices.c:797 modules/devices/alpha/processor.c:88 +#: modules/devices/devicetree.c:163 modules/devices/devicetree.c:209 +#: modules/devices/devicetree/pmac_data.c:80 +#: modules/devices/e2k/processor.c:333 modules/devices/e2k/processor.c:383 +#: modules/devices/gpu.c:118 modules/devices/ia64/processor.c:165 +#: modules/devices/loongarch64/processor.c:75 +#: modules/devices/m68k/processor.c:84 modules/devices/mips/processor.c:75 +#: modules/devices/monitors.c:402 modules/devices/parisc/processor.c:155 +#: modules/devices/ppc/processor.c:158 modules/devices/riscv/processor.c:182 +#: modules/devices/s390/processor.c:132 modules/devices/x86/processor.c:812 +msgid "Model" +msgstr "모델" + +#: modules/devices.c:831 modules/devices/dmi_memory.c:880 +msgid "Devices" +msgstr "장치" + +#: modules/devices.c:843 +msgid "Update PCI ID listing" +msgstr "PCI ID 목록 업데이트" + +#: modules/devices.c:847 +msgid "Update USB ID listing" +msgstr "USB ID 목록 업데이트" + +#: modules/devices.c:851 +msgid "Update EDID vendor codes" +msgstr "EDID 공급업체 코드 업데이트" + +#: modules/devices.c:855 +msgid "Update IEEE OUI vendor codes" +msgstr "IEEE OUI 공급업체 코드 업데이트" + +#: modules/devices.c:859 +msgid "Update SD card manufacturer information" +msgstr "SD 카드 제조업체 정보 업데이트" + +#: modules/devices.c:864 +msgid "Update CPU flags database" +msgstr "CPU 플래그 데이터베이스 업데이트" + +#: modules/devices.c:897 +msgid "Gathers information about hardware devices" +msgstr "하드웨어 장치에 대한 정보 수집" + +#: modules/devices.c:918 +msgid "A copy of pci.ids is not available on the system." +msgstr "시스템에서 pci.ids 사본을 사용할 수 없습니다." + +#: modules/devices.c:921 +msgid "A full pci.ids is not available on the system." +msgstr "전체 pci.ids는 시스템에서 사용할 수 없습니다." + +#: modules/devices.c:926 +msgid "Resource information requires superuser privileges" +msgstr "리소스 정보에는 수퍼유저 권한이 필요합니다." + +#: modules/devices.c:932 +msgid "" +"Any NVMe storage devices present are not listed.\n" +"udisksd is required for NVMe devices." +msgstr "" +"존재하는 모든 NVMe 스토리지 장치가 나열되지 않습니다.\n" +"udisksd는 NVMe 장치에 필요합니다." + +#: modules/devices/alpha/processor.c:89 +msgid "Platform String" +msgstr "플랫폼 문자열" + +#: modules/devices/alpha/processor.c:90 modules/devices/arm/processor.c:345 +#: modules/devices/e2k/processor.c:335 modules/devices/e2k/processor.c:383 +#: modules/devices/ia64/processor.c:167 +#: modules/devices/loongarch64/processor.c:77 +#: modules/devices/m68k/processor.c:87 modules/devices/mips/processor.c:77 +#: modules/devices/parisc/processor.c:158 modules/devices/ppc/processor.c:160 +#: modules/devices/riscv/processor.c:186 modules/devices/sh/processor.c:87 +#: modules/devices/x86/processor.c:659 modules/devices/x86/processor.c:812 +msgid "Frequency" +msgstr "주파수" + +#: modules/devices/alpha/processor.c:91 modules/devices/arm/processor.c:346 +#: modules/devices/e2k/processor.c:336 modules/devices/ia64/processor.c:168 +#: modules/devices/m68k/processor.c:88 modules/devices/mips/processor.c:78 +#: modules/devices/parisc/processor.c:159 modules/devices/ppc/processor.c:161 +#: modules/devices/s390/processor.c:134 modules/devices/sh/processor.c:90 +#: modules/devices/x86/processor.c:660 +msgid "BogoMips" +msgstr "" + +#: modules/devices/alpha/processor.c:92 modules/devices/arm/processor.c:347 +#: modules/devices/e2k/processor.c:337 modules/devices/ia64/processor.c:169 +#: modules/devices/loongarch64/processor.c:79 +#: modules/devices/m68k/processor.c:89 modules/devices/mips/processor.c:79 +#: modules/devices/parisc/processor.c:160 modules/devices/ppc/processor.c:162 +#: modules/devices/riscv/processor.c:187 modules/devices/s390/processor.c:135 +#: modules/devices/sh/processor.c:91 modules/devices/sparc/processor.c:77 +#: modules/devices/x86/processor.c:661 +msgid "Byte Order" +msgstr "바이트 순서" + +#. /hw_cap +#. /flag:swp +#: modules/devices/arm/arm_data.c:42 +msgctxt "arm-flag" +msgid "SWP instruction (atomic read-modify-write)" +msgstr "SWP 명령(원자 읽기-수정-쓰기)" + +#. /flag:half +#: modules/devices/arm/arm_data.c:43 +msgctxt "arm-flag" +msgid "Half-word loads and stores" +msgstr "하프워드 로드 및 저장" + +#. /flag:thumb +#: modules/devices/arm/arm_data.c:44 +msgctxt "arm-flag" +msgid "Thumb (16-bit instruction set)" +msgstr "Thumb(16비트 명령어 세트)" + +#. /flag:26bit +#: modules/devices/arm/arm_data.c:45 +msgctxt "arm-flag" +msgid "26-Bit Model (Processor status register folded into program counter)" +msgstr "26비트 모델(프로그램 카운터에 접힌 프로세서 상태 레지스터)" + +#. /flag:fastmult +#: modules/devices/arm/arm_data.c:46 +msgctxt "arm-flag" +msgid "32x32->64-bit multiplication" +msgstr "32x32->64비트 증식" + +#. /flag:fpa +#: modules/devices/arm/arm_data.c:47 +msgctxt "arm-flag" +msgid "Floating point accelerator" +msgstr "부동 소수점 가속기" + +#. /flag:vfp +#: modules/devices/arm/arm_data.c:48 +msgctxt "arm-flag" +msgid "VFP (early SIMD vector floating point instructions)" +msgstr "VFP(초기 SIMD 벡터 부동 소수점 명령어)" + +#. /flag:edsp +#: modules/devices/arm/arm_data.c:49 +msgctxt "arm-flag" +msgid "DSP extensions (the 'e' variant of the ARM9 CPUs, and all others above)" +msgstr "DSP 확장(ARM9 CPU의 'e' 변형 및 위의 다른 모든 CPU)" + +#. /flag:java +#: modules/devices/arm/arm_data.c:50 +msgctxt "arm-flag" +msgid "Jazelle (Java bytecode accelerator)" +msgstr "Jazelle(자바 바이트코드 가속기)" + +#. /flag:iwmmxt +#: modules/devices/arm/arm_data.c:51 +msgctxt "arm-flag" +msgid "SIMD instructions similar to Intel MMX" +msgstr "Intel MMX와 유사한 SIMD 명령어" + +#. /flag:crunch +#: modules/devices/arm/arm_data.c:52 +msgctxt "arm-flag" +msgid "MaverickCrunch coprocessor (if kernel support enabled)" +msgstr "MaverickCrunch 보조 프로세서(커널 지원이 활성화된 경우)" + +#. /flag:thumbee +#: modules/devices/arm/arm_data.c:53 +msgctxt "arm-flag" +msgid "ThumbEE" +msgstr "" + +#. /flag:neon +#: modules/devices/arm/arm_data.c:54 +msgctxt "arm-flag" +msgid "Advanced SIMD/NEON on AArch32" +msgstr "AArch32의 고급 SIMD/NEON" + +#. /flag:evtstrm +#: modules/devices/arm/arm_data.c:55 +msgctxt "arm-flag" +msgid "Kernel event stream using generic architected timer" +msgstr "일반 아키텍처 타이머를 사용하는 커널 이벤트 스트림" + +#. /flag:vfpv3 +#: modules/devices/arm/arm_data.c:56 +msgctxt "arm-flag" +msgid "VFP version 3" +msgstr "VFP 버전 3" + +#. /flag:vfpv3d16 +#: modules/devices/arm/arm_data.c:57 +msgctxt "arm-flag" +msgid "VFP version 3 with 16 D-registers" +msgstr "16개의 D 레지스터가 있는 VFP 버전 3" + +#. /flag:vfpv4 +#: modules/devices/arm/arm_data.c:58 +msgctxt "arm-flag" +msgid "VFP version 4 with fast context switching" +msgstr "빠른 컨텍스트 전환이 가능한 VFP 버전 4" + +#. /flag:vfpd32 +#: modules/devices/arm/arm_data.c:59 +msgctxt "arm-flag" +msgid "VFP with 32 D-registers" +msgstr "32개의 D 레지스터가 있는 VFP" + +#. /flag:tls +#: modules/devices/arm/arm_data.c:60 +msgctxt "arm-flag" +msgid "TLS register" +msgstr "TLS 레지스터" + +#. /flag:idiva +#: modules/devices/arm/arm_data.c:61 +msgctxt "arm-flag" +msgid "SDIV and UDIV hardware division in ARM mode" +msgstr "ARM 모드에서 SDIV 및 UDIV 하드웨어 분할" + +#. /flag:idivt +#: modules/devices/arm/arm_data.c:62 +msgctxt "arm-flag" +msgid "SDIV and UDIV hardware division in Thumb mode" +msgstr "Thumb 모드의 SDIV 및 UDIV 하드웨어 분할" + +#. /flag:lpae +#: modules/devices/arm/arm_data.c:63 +msgctxt "arm-flag" +msgid "40-bit Large Physical Address Extension" +msgstr "40비트 대형 물리적 주소 확장" + +#. /hw_cap2 +#. /flag:pmull +#: modules/devices/arm/arm_data.c:65 +msgctxt "arm-flag" +msgid "64x64->128-bit F2m multiplication (arch>8)" +msgstr "64x64->128비트 F2m 증식(arch>8)" + +#. /flag:aes +#: modules/devices/arm/arm_data.c:66 +msgctxt "arm-flag" +msgid "Crypto:AES (arch>8)" +msgstr "암호화:AES (arch>8)" + +#. /flag:sha1 +#: modules/devices/arm/arm_data.c:67 +msgctxt "arm-flag" +msgid "Crypto:SHA1 (arch>8)" +msgstr "암호화:SHA1(arch>8)" + +#. /flag:sha2 +#: modules/devices/arm/arm_data.c:68 +msgctxt "arm-flag" +msgid "Crypto:SHA2 (arch>8)" +msgstr "암호화:SHA2 (arch>8)" + +#. /flag:crc32 +#: modules/devices/arm/arm_data.c:69 +msgctxt "arm-flag" +msgid "CRC32 checksum instructions (arch>8)" +msgstr "CRC32 체크섬 명령어(arch>8)" + +#. /flag:asimd +#: modules/devices/arm/arm_data.c:72 +msgctxt "arm-flag" +msgid "Advanced SIMD/NEON on AArch64 (arch>8)" +msgstr "AArch64의 고급 SIMD/NEON(arch>8)" + +#: modules/devices/arm/processor.c:143 +msgid "ARM Processor" +msgstr "ARM 프로세서" + +#: modules/devices/arm/processor.c:214 modules/devices/riscv/processor.c:147 +#: modules/devices/x86/processor.c:610 +msgid "Empty List" +msgstr "빈 목록" + +#: modules/devices/arm/processor.c:240 modules/devices/gpu.c:160 +#: modules/devices/gpu.c:244 modules/devices/x86/processor.c:268 +msgid "Clocks" +msgstr "클럭" + +#: modules/devices/arm/processor.c:286 modules/devices/arm/processor.c:299 +#: modules/devices/x86/processor.c:314 modules/devices/x86/processor.c:327 +msgid "%.2f-%.2f %s=%dx\n" +msgstr "%.2f-%.2f %s=%dx\n" + +#: modules/devices/arm/processor.c:342 +msgid "Linux Name" +msgstr "리눅스 이름" + +#: modules/devices/arm/processor.c:343 +msgid "Decoded Name" +msgstr "디코딩된 이름" + +#: modules/devices/arm/processor.c:344 modules/network/net.c:453 +msgid "Mode" +msgstr "모드" + +#: modules/devices/arm/processor.c:350 +msgid "ARM" +msgstr "" + +#: modules/devices/arm/processor.c:351 +msgid "Implementer" +msgstr "구현자" + +#: modules/devices/arm/processor.c:352 modules/devices/dmi_memory.c:950 +msgid "Part" +msgstr "부품" + +#: modules/devices/arm/processor.c:353 modules/devices/ia64/processor.c:162 +#: modules/devices/parisc/processor.c:156 modules/devices/riscv/processor.c:183 +msgid "Architecture" +msgstr "아키텍처" + +#: modules/devices/arm/processor.c:354 +msgid "Variant" +msgstr "변형" + +#: modules/devices/arm/processor.c:356 modules/devices/riscv/processor.c:190 +#: modules/devices/sparc/processor.c:78 modules/devices/x86/processor.c:667 +msgid "Capabilities" +msgstr "기능" + +#: modules/devices/arm/processor.c:468 +msgid "SOC/Package" +msgstr "SOC/패키지" + +#: modules/devices/arm/processor.c:472 modules/devices/x86/processor.c:753 +msgid "Logical CPU Config" +msgstr "논리적 CPU 구성" + +#: modules/devices/arm/processor.c:489 +msgid "SOC/Package Information" +msgstr "SOC/패키지 정보" + +#: modules/devices/battery.c:178 +msgid "" +"\n" +"[Battery: %s]\n" +"State=%s (load: %s)\n" +"Capacity=%s / %s (%.2f%%)\n" +"Battery Technology=%s (%s)\n" +"Manufacturer=%s\n" +"Model Number=%s\n" +"Serial Number=%s\n" +msgstr "" +"\n" +"[배터리: %s]\n" +"상태=%s(로드: %s)\n" +"용량=%s / %s(%.2f%%)\n" +"배터리 기술=%s(%s)\n" +"제조업체=%s\n" +"모델 번호=%s\n" +"시리얼넘버=%s\n" + +#: modules/devices/battery.c:255 +msgid "" +"\n" +"[Battery: %s]\n" +"State=%s\n" +"Capacity=%s / %s\n" +"Battery Technology=%s\n" +"Manufacturer=%s\n" +"Model Number=%s\n" +"Serial Number=%s\n" +msgstr "" +"\n" +"[배터리: %s]\n" +"상태=%s\n" +"용량=%s / %s\n" +"배터리 기술=%s\n" +"제조업체=%s\n" +"모델 번호=%s\n" +"시리얼넘버=%s\n" + +#: modules/devices/battery.c:343 +msgid "" +"\n" +"[Battery (APM)]\n" +"Charge=%d%%\n" +"Remaining Charge=%s of %s\n" +"Using=%s\n" +"APM driver version=%s\n" +"APM BIOS version=%s\n" +msgstr "" +"\n" +"[배터리(APM)]\n" +"요금=%d%%\n" +"남은 충전량=%s/%s\n" +"사용=%s\n" +"APM 드라이버 버전=%s\n" +"APM BIOS 버전=%s\n" + +#: modules/devices/battery.c:355 +msgid "" +"\n" +"[Battery (APM)]\n" +"Charge=%d%%\n" +"Using=%s\n" +"APM driver version=%s\n" +"APM BIOS version=%s\n" +msgstr "" +"\n" +"[배터리(APM)]\n" +"요금=%d%%\n" +"사용=%s\n" +"APM 드라이버 버전=%s\n" +"APM BIOS 버전=%s\n" + +#: modules/devices/battery.c:382 +msgid "" +"[No batteries]\n" +"No batteries found on this system=\n" +msgstr "" +"[배터리 없음]\n" +"이 시스템에서 배터리를 찾을 수 없음=\n" + +#: modules/devices/devicetree.c:52 +msgid "Properties" +msgstr "속성" + +#: modules/devices/devicetree.c:53 +msgid "Children" +msgstr "하위" + +#: modules/devices/devicetree.c:89 +msgid "Node" +msgstr "노드" + +#: modules/devices/devicetree.c:90 +msgid "Node Path" +msgstr "노드 경로" + +#: modules/devices/devicetree.c:91 +msgid "Alias" +msgstr "별칭" + +#: modules/devices/devicetree.c:92 +msgid "Symbol" +msgstr "상징" + +#: modules/devices/devicetree.c:145 modules/devices/devicetree/pmac_data.c:79 +msgid "Platform" +msgstr "플랫폼" + +#: modules/devices/devicetree.c:146 modules/devices/devicetree.c:211 +#: modules/devices/gpu.c:249 +msgid "Compatible" +msgstr "호환 가능" + +#: modules/devices/devicetree.c:147 +msgid "GPU-compatible" +msgstr "GPU 호환" + +#: modules/devices/devicetree.c:162 +msgid "Raspberry Pi or Compatible" +msgstr "라즈베리 파이 또는 호환 가능" + +#: modules/devices/devicetree.c:164 modules/devices/devicetree.c:191 +#: modules/devices/devicetree.c:210 modules/devices/devicetree/rpi_data.c:169 +#: modules/devices/dmi.c:42 modules/devices/dmi.c:52 modules/devices/dmi.c:58 +#: modules/devices/usb.c:181 +msgid "Serial Number" +msgstr "시리얼넘버" + +#: modules/devices/devicetree.c:165 modules/devices/devicetree/rpi_data.c:166 +msgid "RCode" +msgstr "R코드" + +#: modules/devices/devicetree.c:165 +msgid "No revision code available; unable to lookup model details." +msgstr "사용 가능한 개정 코드가 없습니다. 모델 세부 정보를 조회할 수 없습니다." + +#: modules/devices/devicetree.c:190 +msgid "More" +msgstr "더" + +#: modules/devices/devicetree.c:271 +msgid "Messages" +msgstr "메시지" + +#: modules/devices/devicetree/pmac_data.c:78 +msgid "Apple Power Macintosh" +msgstr "애플 파워 매킨토시" + +#: modules/devices/devicetree/pmac_data.c:83 +msgid "Detected as" +msgstr "다음으로 감지됨" + +#: modules/devices/devicetree/pmac_data.c:84 +msgid "PMAC Flags" +msgstr "PMAC 플래그" + +#: modules/devices/devicetree/pmac_data.c:85 +msgid "L2 Cache" +msgstr "L2 캐시" + +#: modules/devices/devicetree/pmac_data.c:86 +msgid "PMAC Generation" +msgstr "PMAC 생성" + +#: modules/devices/devicetree/rpi_data.c:161 +#: modules/devices/devicetree/rpi_data.c:162 +msgid "Raspberry Pi" +msgstr "라즈베리 파이" + +#: modules/devices/devicetree/rpi_data.c:162 +msgid "Board Name" +msgstr "보드 이름" + +#: modules/devices/devicetree/rpi_data.c:163 +msgid "PCB Revision" +msgstr "PCB 개정판" + +#: modules/devices/devicetree/rpi_data.c:164 +msgid "Introduction" +msgstr "소개" + +#: modules/devices/devicetree/rpi_data.c:165 modules/devices/usb.c:173 +msgid "Manufacturer" +msgstr "제조사" + +#: modules/devices/devicetree/rpi_data.c:167 +msgid "SOC (spec)" +msgstr "SOC(사양)" + +#: modules/devices/devicetree/rpi_data.c:168 +msgid "Memory (spec)" +msgstr "메모리(사양)" + +#: modules/devices/devicetree/rpi_data.c:170 +msgid "Permanent overvolt bit" +msgstr "영구 과전압 비트" + +#: modules/devices/devicetree/rpi_data.c:170 +msgctxt "rpi-ov-bit" +msgid "Set" +msgstr "설정" + +#: modules/devices/devicetree/rpi_data.c:170 +msgctxt "rpi-ov-bit" +msgid "Not set" +msgstr "설정되지 않음" + +#: modules/devices/dmi.c:37 modules/devices/inputdevices.c:144 +#: modules/devices/usb.c:170 +msgid "Product" +msgstr "제품" + +#: modules/devices/dmi.c:39 modules/devices/e2k/processor.c:332 +#: modules/devices/ia64/processor.c:164 modules/devices/sh/processor.c:86 +msgid "Family" +msgstr "제품군" + +#: modules/devices/dmi.c:43 +msgid "SKU" +msgstr "SKU" + +#: modules/devices/dmi.c:44 +msgid "BIOS" +msgstr "바이오스" + +#: modules/devices/dmi.c:53 modules/devices/dmi.c:59 +msgid "Asset Tag" +msgstr "자산 태그" + +#: modules/devices/dmi.c:119 modules/devices/dmi_memory.c:936 +#: modules/devices/x86/processor.c:696 +msgid "(Not available; Perhaps try running HardInfo as root.)" +msgstr "(사용할 수 없습니다. 하드 정보를 루트로 실행해보십시오.)" + +#: modules/devices/dmi.c:160 +msgid "DMI Unavailable" +msgstr "DMI를 사용할 수 없음" + +#: modules/devices/dmi.c:162 +msgid "DMI is not avaliable. Perhaps this platform does not provide DMI." +msgstr "DMI를 사용할 수 없습니다. 아마도 이 플랫폼은 DMI를 제공하지 않습니다." + +#: modules/devices/dmi.c:163 +msgid "DMI is not available; Perhaps try running HardInfo as root." +msgstr "DMI를 사용할 수 없습니다. 아마도 HardInfo를 루트로 실행해 보십시오." + +#: modules/devices/dmi_memory.c:55 +msgid "RAM" +msgstr "램" + +#: modules/devices/dmi_memory.c:650 +msgid "Serial Presence Detect (SPD)" +msgstr "직렬 프레즌스 검출(SPD)" + +#: modules/devices/dmi_memory.c:653 +msgid "SPD Revision" +msgstr "SPD 개정판" + +#: modules/devices/dmi_memory.c:654 modules/devices/dmi_memory.c:803 +msgid "Form Factor" +msgstr "폼 팩터" + +#: modules/devices/dmi_memory.c:656 +msgid "Module Vendor" +msgstr "모듈 공급업체" + +#: modules/devices/dmi_memory.c:658 +msgid "DRAM Vendor" +msgstr "DRAM 공급업체" + +#: modules/devices/dmi_memory.c:660 modules/devices/dmi_memory.c:807 +msgid "Part Number" +msgstr "부품 번호" + +#: modules/devices/dmi_memory.c:662 +msgid "Manufacturing Date (Week / Year)" +msgstr "제조일자(주/년)" + +#: modules/devices/dmi_memory.c:695 modules/devices/dmi_memory.c:933 +msgid "Memory Device List" +msgstr "메모리 장치 목록" + +#: modules/devices/dmi_memory.c:743 +msgid "Memory Array" +msgstr "메모리 배열" + +#: modules/devices/dmi_memory.c:744 modules/devices/x86/processor.c:715 +msgid "DMI Handle" +msgstr "DMI 핸들" + +#: modules/devices/dmi_memory.c:745 modules/devices/dmi_memory.c:801 +#: modules/devices/dmi_memory.c:838 modules/devices/dmi_memory.c:947 +msgid "Locator" +msgstr "로케이터" + +#: modules/devices/dmi_memory.c:746 +msgid "Use" +msgstr "사용" + +#: modules/devices/dmi_memory.c:747 +msgid "Error Correction Type" +msgstr "오류 수정 유형" + +#: modules/devices/dmi_memory.c:748 +msgid "Size (Present / Max)" +msgstr "사이즈(현재/최대)" + +#: modules/devices/dmi_memory.c:749 +msgid "Devices (Populated / Sockets)" +msgstr "장치(Populated / 소켓)" + +#: modules/devices/dmi_memory.c:750 modules/devices/dmi_memory.c:881 +msgid "Types Present" +msgstr "존재하는 유형" + +#: modules/devices/dmi_memory.c:751 +msgid "ROM Size" +msgstr "ROM 크기" + +#: modules/devices/dmi_memory.c:799 modules/devices/dmi_memory.c:836 +msgid "Memory Socket" +msgstr "메모리 소켓" + +#: modules/devices/dmi_memory.c:800 modules/devices/dmi_memory.c:837 +msgid "DMI Handles (Array, Socket)" +msgstr "DMI 핸들(배열, 소켓)" + +#: modules/devices/dmi_memory.c:802 modules/devices/dmi_memory.c:839 +msgid "Bank Locator" +msgstr "" + +#: modules/devices/dmi_memory.c:809 +msgid "Rated Speed" +msgstr "정격 속도" + +#: modules/devices/dmi_memory.c:810 +msgid "Configured Speed" +msgstr "" + +#: modules/devices/dmi_memory.c:811 +msgid "Data Width/Total Width" +msgstr "데이터 너비/총 너비" + +#: modules/devices/dmi_memory.c:812 +msgid "Rank" +msgstr "계급" + +#: modules/devices/dmi_memory.c:813 +msgid "Minimum Voltage" +msgstr "최소 전압" + +#: modules/devices/dmi_memory.c:814 +msgid "Maximum Voltage" +msgstr "최대 전압" + +#: modules/devices/dmi_memory.c:815 +msgid "Configured Voltage" +msgstr "" + +#: modules/devices/dmi_memory.c:840 modules/devices/dmi_memory.c:847 +#: modules/devices/monitors.c:493 +msgid "(Empty)" +msgstr "(비어 있는)" + +#: modules/devices/dmi_memory.c:878 +msgid "Serial Presence Detect (SPD) Summary" +msgstr "직렬 프레즌스 검출(SPD) 요약" + +#: modules/devices/dmi_memory.c:1004 +msgid " dmidecode utility available" +msgstr " dmidecode 유틸리티 사용 가능" + +#: modules/devices/dmi_memory.c:1005 +msgid " ... and HardInfo running with superuser privileges" +msgstr " ... 수퍼유저 권한으로 실행되는 HardInfo" + +#: modules/devices/dmi_memory.c:1006 +msgid " at24 (or eeprom) module loaded (for SDR, DDR, DDR2, DDR3)" +msgstr " at24(또는 eeprom) 모듈 로드(SDR, DDR, DDR2, DDR3용)" + +#: modules/devices/dmi_memory.c:1007 +msgid " ... or ee1004 module loaded and configured! (for DDR4)" +msgstr " ... 또는 ee1004 모듈이 로드되고 구성되었습니다!(DDR4용)" + +#: modules/devices/dmi_memory.c:1016 +msgid "Memory information requires one or both of the following:" +msgstr "메모리 정보에는 다음 중 하나 또는 둘 다가 필요합니다." + +#: modules/devices/dmi_memory.c:1042 +msgid "" +"\"More often than not, information contained in the DMI tables is inaccurate,\n" +"incomplete or simply wrong.\" -dmidecode manual page" +msgstr "" +"\"DMI 테이블에 포함된 정보가 부정확한 경우가 많습니다.\n" +"불완전하거나 단순히 잘못되었습니다.\" -dmidecode 매뉴얼 페이지" + +#: modules/devices/e2k/processor.c:30 modules/devices/x86/processor.c:149 +msgid "Cache information not available=\n" +msgstr "캐시 정보를 사용할 수 없음=\n" + +#: modules/devices/e2k/processor.c:36 modules/devices/x86/processor.c:155 +msgid "Level %d (%s)=%d-way set-associative, %d sets, %dKB size\n" +msgstr "수준 %d(%s)=%d 방향 집합 연관, %d 집합, %dKB 크기\n" + +#. /cache type, as appears in: Level 1 (Data) +#: modules/devices/e2k/processor.c:51 modules/devices/x86/processor.c:170 +msgctxt "cache-type" +msgid "Data" +msgstr "데이터" + +#. /cache type, as appears in: Level 1 (Instruction) +#: modules/devices/e2k/processor.c:52 modules/devices/x86/processor.c:171 +msgctxt "cache-type" +msgid "Instruction" +msgstr "설명" + +#. /cache type, as appears in: Level 2 (Unified) +#: modules/devices/e2k/processor.c:53 modules/devices/x86/processor.c:172 +msgctxt "cache-type" +msgid "Unified" +msgstr "통합" + +#: modules/devices/e2k/processor.c:157 modules/devices/x86/processor.c:367 +msgid "Caches" +msgstr "캐시" + +#: modules/devices/e2k/processor.c:208 modules/devices/e2k/processor.c:225 +#: modules/devices/x86/processor.c:418 modules/devices/x86/processor.c:435 +msgid "Level %d (%s)#%d=%dx %dKB (%dKB), %d-way set-associative, %d sets\n" +msgstr "수준 %d(%s)#%d=%dx %dKB(%dKB), %d-방향 집합 연관, %d 집합\n" + +#: modules/devices/firmware.c:36 +msgid "Device cannot be removed easily" +msgstr "장치를 쉽게 제거할 수 없음" + +#: modules/devices/firmware.c:37 +msgid "Device is updatable in this or any other mode" +msgstr "이 모드 또는 다른 모드에서 장치를 업데이트할 수 있습니다." + +#: modules/devices/firmware.c:38 +msgid "Update can only be done from offline mode" +msgstr "업데이트는 오프라인 모드에서만 수행할 수 있습니다." + +#: modules/devices/firmware.c:39 +msgid "Requires AC power" +msgstr "AC 전원 필요" + +#: modules/devices/firmware.c:40 +msgid "Is locked and can be unlocked" +msgstr "잠겨 있고 잠금 해제 가능" + +#: modules/devices/firmware.c:41 +msgid "Is found in current metadata" +msgstr "현재 메타데이터에서 발견됨" + +#: modules/devices/firmware.c:42 +msgid "Requires a bootloader mode to be manually enabled by the user" +msgstr "사용자가 수동으로 활성화하려면 부트로더 모드가 필요합니다." + +#: modules/devices/firmware.c:43 +msgid "Has been registered with other plugins" +msgstr "다른 플러그인에 등록되었습니다." + +#: modules/devices/firmware.c:44 +msgid "Requires a reboot to apply firmware or to reload hardware" +msgstr "펌웨어를 적용하거나 하드웨어를 다시 로드하려면 재부팅해야 합니다." + +#: modules/devices/firmware.c:45 +msgid "Requires system shutdown to apply firmware" +msgstr "펌웨어를 적용하려면 시스템을 종료해야 합니다." + +#: modules/devices/firmware.c:46 +msgid "Has been reported to a metadata server" +msgstr "메타데이터 서버에 보고되었습니다." + +#: modules/devices/firmware.c:47 +msgid "User has been notified" +msgstr "사용자에게 알림이 전송되었습니다." + +#: modules/devices/firmware.c:48 +msgid "Always use the runtime version rather than the bootloader" +msgstr "항상 부트로더보다 런타임 버전을 사용하십시오." + +#: modules/devices/firmware.c:49 +msgid "Install composite firmware on the parent before the child" +msgstr "하위보다 먼저 상위에 복합 펌웨어 설치" + +#: modules/devices/firmware.c:50 +msgid "Is currently in bootloader mode" +msgstr "현재 부트로더 모드에 있습니다." + +#: modules/devices/firmware.c:51 +msgid "The hardware is waiting to be replugged" +msgstr "하드웨어가 다시 연결되기를 기다리고 있습니다." + +#: modules/devices/firmware.c:52 +msgid "Ignore validation safety checks when flashing this device" +msgstr "이 장치를 플래싱할 때 유효성 검사 안전 확인을 무시합니다." + +#: modules/devices/firmware.c:53 +msgid "Requires the update to be retried with a new plugin" +msgstr "새 플러그인으로 업데이트를 다시 시도해야 합니다." + +#: modules/devices/firmware.c:54 +msgid "Do not add instance IDs from the device baseclass" +msgstr "장치 기본 클래스에서 인스턴스 ID를 추가하지 마십시오." + +#: modules/devices/firmware.c:55 +msgid "Device update needs to be separately activated" +msgstr "기기 업데이트는 별도로 활성화해야 합니다." + +#: modules/devices/firmware.c:56 +msgid "Ensure the version is a valid semantic version, e.g. numbers separated with dots" +msgstr "버전이 유효한 의미 버전인지 확인하십시오. 예. 점으로 구분된 숫자" + +#: modules/devices/firmware.c:57 +msgid "Extra metadata can be exposed about this device" +msgstr "이 기기에 대한 추가 메타데이터가 노출될 수 있습니다." + +#: modules/devices/firmware.c:74 +msgid "DeviceId" +msgstr "장치ID" + +#: modules/devices/firmware.c:74 modules/devices/firmware.c:187 +msgid "Guid" +msgstr "가이드" + +#: modules/devices/firmware.c:74 +msgid "Plugin" +msgstr "플러그인" + +#: modules/devices/firmware.c:74 modules/devices/firmware.c:205 +#: modules/network.c:380 +msgid "Flags" +msgstr "플래그" + +#: modules/devices/firmware.c:75 +msgid "VendorId" +msgstr "공급자ID" + +#: modules/devices/firmware.c:75 +msgid "VersionBootloader" +msgstr "버전 부트로더" + +#: modules/devices/firmware.c:76 modules/devices/firmware.c:179 +msgid "Icon" +msgstr "아이콘" + +#: modules/devices/firmware.c:76 +msgid "InstallDuration" +msgstr "설치 기간" + +#: modules/devices/firmware.c:76 modules/devices/firmware.c:197 +msgid "Created" +msgstr "생성일" + +#: modules/devices/firmware.c:244 +msgid "Firmware List" +msgstr "펌웨어 목록" + +#: modules/devices/firmware.c:257 +msgid "Requires the fwupd daemon." +msgstr "fwupd 데몬이 필요합니다." + +#: modules/devices/gpu.c:96 modules/devices/pci.c:111 +#: modules/devices/storage.c:58 +msgid "SVendor" +msgstr "" + +#: modules/devices/gpu.c:97 modules/devices/pci.c:112 +#: modules/devices/storage.c:59 +msgid "SDevice" +msgstr "" + +#: modules/devices/gpu.c:105 modules/devices/pci.c:122 +#: modules/devices/storage.c:68 +msgid "PCI Express" +msgstr "PCI 익스프레스" + +#: modules/devices/gpu.c:106 modules/devices/pci.c:124 +#: modules/devices/storage.c:70 +msgid "Maximum Link Width" +msgstr "최대 링크 너비" + +#: modules/devices/gpu.c:107 modules/devices/pci.c:126 +#: modules/devices/storage.c:71 +msgid "Maximum Link Speed" +msgstr "최대 링크 속도" + +#: modules/devices/gpu.c:107 modules/devices/pci.c:125 +#: modules/devices/pci.c:126 modules/devices/storage.c:71 +msgid "GT/s" +msgstr "GT/s" + +#: modules/devices/gpu.c:117 +msgid "NVIDIA" +msgstr "" + +#: modules/devices/gpu.c:119 +msgid "BIOS Version" +msgstr "BIOS 버전" + +#: modules/devices/gpu.c:120 +msgid "UUID" +msgstr "UUID" + +#: modules/devices/gpu.c:154 modules/devices/gpu.c:240 +#: modules/devices/inputdevices.c:139 modules/devices/pci.c:143 +#: modules/devices/usb.c:169 +msgid "Device Information" +msgstr "디바이스 정보" + +#: modules/devices/gpu.c:155 modules/devices/gpu.c:241 +#: modules/devices/storage.c:69 +msgid "Location" +msgstr "위치" + +#: modules/devices/gpu.c:156 +msgid "DRM Device" +msgstr "DRM 장치" + +#: modules/devices/gpu.c:157 modules/devices/pci.c:144 +#: modules/devices/usb.c:136 modules/devices/usb.c:177 +msgid "Class" +msgstr "클래스" + +#: modules/devices/gpu.c:166 modules/devices/pci.c:149 +msgid "In Use" +msgstr "사용" + +#: modules/devices/gpu.c:201 +msgid "Unknown integrated GPU" +msgstr "알 수 없는 통합 GPU" + +#: modules/devices/gpu.c:209 +msgid "clock-frequency property" +msgstr "클럭 주파수 속성" + +#: modules/devices/gpu.c:210 +msgid "Operating Points (OPPv1)" +msgstr "" + +#: modules/devices/gpu.c:211 +msgid "Operating Points (OPPv2)" +msgstr "" + +#: modules/devices/gpu.c:247 +msgid "Device Tree Node" +msgstr "장치 트리 노드" + +#: modules/devices/gpu.c:250 modules/devices/monitors.c:473 +#: modules/network/net.c:454 +msgid "Status" +msgstr "상태" + +#: modules/devices/gpu.c:267 +msgid "GPUs" +msgstr "" + +#: modules/devices/gpu.c:291 +msgid "No GPU devices found" +msgstr "GPU 장치를 찾을 수 없습니다." + +#: modules/devices/ia64/processor.c:108 +msgid "IA64 Processor" +msgstr "IA64 프로세서" + +#: modules/devices/ia64/processor.c:163 +msgid "Architecture Revision" +msgstr "아키텍처 개정" + +#: modules/devices/ia64/processor.c:170 +msgid "CPU regs" +msgstr "CPU 규정" + +#: modules/devices/ia64/processor.c:171 +msgid "Features" +msgstr "특징" + +#: modules/devices/inputdevices.c:142 modules/devices/pci.c:153 +#: modules/devices/usb.c:183 +msgid "Bus" +msgstr "버스" + +#: modules/devices/inputdevices.c:148 +msgid "Connected to" +msgstr "연결됨" + +#: modules/devices/inputdevices.c:152 +msgid "InfraRed port" +msgstr "적외선 포트" + +#: modules/devices/loongarch64/processor.c:76 +#: modules/devices/mips/processor.c:76 +msgid "System Type" +msgstr "시스템 유형" + +#: modules/devices/loongarch64/processor.c:78 +msgid "BogoMIPS" +msgstr "" + +#: modules/devices/m68k/processor.c:85 modules/devices/riscv/processor.c:185 +msgid "MMU" +msgstr "MMU" + +#: modules/devices/m68k/processor.c:86 modules/devices/sparc/processor.c:76 +msgid "FPU" +msgstr "FPU" + +#: modules/devices/m68k/processor.c:90 +msgid "Calibration" +msgstr "교정" + +#: modules/devices/monitors.c:29 modules/devices/monitors.c:255 +#: modules/devices/monitors.c:348 modules/devices/spd-decode.c:665 +msgid "(Unspecified)" +msgstr "(미지정)" + +#: modules/devices/monitors.c:230 +msgid "Week %d of %d" +msgstr "%d주/%d주" + +#: modules/devices/monitors.c:240 +msgid "Ok" +msgstr "확인" + +#: modules/devices/monitors.c:240 +msgid "Fail" +msgstr "실패" + +#: modules/devices/monitors.c:268 modules/devices/monitors.c:276 +#: modules/devices/monitors.c:284 modules/devices/monitors.c:295 +#: modules/devices/monitors.c:303 modules/devices/monitors.c:310 +#: modules/devices/monitors.c:318 modules/devices/monitors.c:326 +#: modules/devices/monitors.c:334 modules/devices/monitors.c:340 +msgid "(Empty List)" +msgstr "(빈 목록)" + +#: modules/devices/monitors.c:392 +msgid "Signal Type" +msgstr "신호 유형" + +#: modules/devices/monitors.c:392 +msgid "Digital" +msgstr "디지털" + +#: modules/devices/monitors.c:392 +msgid "Analog" +msgstr "아날로그" + +#: modules/devices/monitors.c:393 modules/devices/usb.c:135 +#: modules/network.c:310 modules/network.c:363 modules/network.c:380 +msgid "Interface" +msgstr "인터페이스" + +#: modules/devices/monitors.c:394 +msgid "Bits per Color Channel" +msgstr "색상 채널당 비트 수" + +#: modules/devices/monitors.c:395 +msgid "Speaker Allocation" +msgstr "스피커 할당" + +#: modules/devices/monitors.c:396 +msgid "Output (Max)" +msgstr "출력(최대)" + +#: modules/devices/monitors.c:399 +msgid "EDID Device" +msgstr "EDID 장치" + +#: modules/devices/monitors.c:403 +msgid "Serial" +msgstr "시리얼넘버" + +#: modules/devices/monitors.c:404 +msgid "Manufacture Date" +msgstr "제조 일자" + +#: modules/devices/monitors.c:405 +msgid "EDID Meta" +msgstr "EDID 메타" + +#: modules/devices/monitors.c:406 +msgid "Data Size" +msgstr "데이터 크기" + +#: modules/devices/monitors.c:406 +msgid "bytes" +msgstr "바이트" + +#: modules/devices/monitors.c:408 +msgid "Extension Blocks" +msgstr "확장 블록" + +#: modules/devices/monitors.c:409 +msgid "Extended to" +msgstr "확장" + +#: modules/devices/monitors.c:410 +msgid "Checksum" +msgstr "체크섬" + +#: modules/devices/monitors.c:411 +msgid "EDID Descriptors" +msgstr "EDID 디스크립터" + +#: modules/devices/monitors.c:412 +msgid "Detailed Timing Descriptors (DTD)" +msgstr "세부 타이밍 디스크립터(DTD)" + +#: modules/devices/monitors.c:413 +msgid "Established Timings Bitmap (ETB)" +msgstr "타이밍 비트맵(ETB) 설립" + +#: modules/devices/monitors.c:414 +msgid "Standard Timings (STD)" +msgstr "표준 타이밍(STD)" + +#: modules/devices/monitors.c:415 +msgid "E-EDID Extension Blocks" +msgstr "E-EDID 확장 블록" + +#: modules/devices/monitors.c:416 +msgid "EIA/CEA-861 Data Blocks" +msgstr "EIA/CEA-861 데이터 블록" + +#: modules/devices/monitors.c:417 +msgid "EIA/CEA-861 Short Audio Descriptors" +msgstr "EIA/CEA-861 짧은 오디오 디스크립터" + +#: modules/devices/monitors.c:418 +msgid "EIA/CEA-861 Short Video Descriptors" +msgstr "EIA/CEA-861 짧은 비디오 디스크립터" + +#: modules/devices/monitors.c:419 +msgid "DisplayID Timings" +msgstr "DisplayID 타이밍" + +#: modules/devices/monitors.c:420 +msgid "DisplayID Strings" +msgstr "DisplayID 문자열" + +#: modules/devices/monitors.c:421 +msgid "Hex Dump" +msgstr "16진수 덤프" + +#: modules/devices/monitors.c:421 +msgid "Data" +msgstr "데이터" + +#: modules/devices/monitors.c:471 modules/devices/monitors.c:502 +#: modules/devices/pci.c:151 modules/devices/usb.c:182 +msgid "Connection" +msgstr "연결" + +#: modules/devices/monitors.c:472 +msgid "DRM" +msgstr "DRM" + +#: modules/devices/parisc/processor.c:107 +msgid "PA-RISC Processor" +msgstr "PA-RISC 프로세서" + +#: modules/devices/parisc/processor.c:161 +msgid "HVersion" +msgstr "H버전" + +#: modules/devices/parisc/processor.c:162 +msgid "SVersion" +msgstr "S버전" + +#: modules/devices/pci.c:123 +msgid "Link Width" +msgstr "링크 폭" + +#: modules/devices/pci.c:125 +msgid "Link Speed" +msgstr "링크 속도" + +#: modules/devices/pci.c:152 +msgid "Domain" +msgstr "도메인" + +#: modules/devices/pci.c:155 +msgid "Function" +msgstr "기능" + +#: modules/devices/pci.c:196 +msgid "No PCI devices found" +msgstr "PCI 장치를 찾을 수 없습니다" + +#: modules/devices/ppc/processor.c:117 +msgid "POWER Processor" +msgstr "파워 프로세서" + +#: modules/devices/printers.c:81 +msgid "⚬ Can do black and white printing=\n" +msgstr "⚬ 흑백 인쇄 가능=\n" + +#: modules/devices/printers.c:83 +msgid "⚬ Can do color printing=\n" +msgstr "⚬ 컬러 인쇄 가능=\n" + +#: modules/devices/printers.c:85 +msgid "⚬ Can do duplexing=\n" +msgstr "⚬ 양면 인쇄 가능=\n" + +#: modules/devices/printers.c:87 +msgid "⚬ Can do staple output=\n" +msgstr "⚬ 스테이플 출력 가능=\n" + +#: modules/devices/printers.c:89 +msgid "⚬ Can do copies=\n" +msgstr "⚬ 복사 가능=\n" + +#: modules/devices/printers.c:91 +msgid "⚬ Can collate copies=\n" +msgstr "⚬ 한 부씩 복사 가능=\n" + +#: modules/devices/printers.c:93 +msgid "⚬ Printer is rejecting jobs=\n" +msgstr "⚬ 프린터가 작업을 거부하고 있습니다=\n" + +#: modules/devices/printers.c:95 +msgid "⚬ Printer was automatically discovered and added=\n" +msgstr "⚬ 프린터가 자동으로 검색되어 추가됨=\n" + +#: modules/devices/printers.c:110 +msgid "Idle" +msgstr "대기중" + +#: modules/devices/printers.c:112 +msgid "Printing a Job" +msgstr "작업 인쇄" + +#: modules/devices/printers.c:114 +msgid "Stopped" +msgstr "중지됨" + +#: modules/devices/printers.c:191 +msgid "" +"[Printers]\n" +"No suitable CUPS library found=" +msgstr "" +"[프린터]\n" +"적합한 CUPS 라이브러리를 찾을 수 없음=" + +#: modules/devices/printers.c:201 +msgid "[Printers (CUPS)]\n" +msgstr "[프린터(CUPS)]\n" + +#: modules/devices/printers.c:265 +msgid "" +"[Printers]\n" +"No printers found=\n" +msgstr "" +"[프린터]\n" +"프린터를 찾을 수 없음=\n" + +#: modules/devices/riscv/processor.c:107 +msgid "RISC-V Processor" +msgstr "RISC-V 프로세서" + +#: modules/devices/riscv/processor.c:184 +msgid "uarch" +msgstr "uarch" + +#. /ext:RV32 +#: modules/devices/riscv/riscv_data.c:37 +msgctxt "rv-ext" +msgid "RISC-V 32-bit" +msgstr "RISC-V 32비트" + +#. /ext:RV64 +#: modules/devices/riscv/riscv_data.c:38 +msgctxt "rv-ext" +msgid "RISC-V 64-bit" +msgstr "RISC-V 64비트" + +#. /ext:RV128 +#: modules/devices/riscv/riscv_data.c:39 +msgctxt "rv-ext" +msgid "RISC-V 128-bit" +msgstr "RISC-V 128비트" + +#. /ext:E +#: modules/devices/riscv/riscv_data.c:40 +msgctxt "rv-ext" +msgid "Base embedded integer instructions (15 registers)" +msgstr "기본 임베디드 정수 명령어(15개 레지스터)" + +#. /ext:I +#: modules/devices/riscv/riscv_data.c:41 +msgctxt "rv-ext" +msgid "Base integer instructions (31 registers)" +msgstr "기본 정수 명령어(31개 레지스터)" + +#. /ext:M +#: modules/devices/riscv/riscv_data.c:42 +msgctxt "rv-ext" +msgid "Hardware integer multiply and divide" +msgstr "하드웨어 정수 곱하기 및 나누기" + +#. /ext:A +#: modules/devices/riscv/riscv_data.c:43 +msgctxt "rv-ext" +msgid "Atomic memory operations" +msgstr "원자 메모리 작업" + +#. /ext:C +#: modules/devices/riscv/riscv_data.c:44 +msgctxt "rv-ext" +msgid "Compressed 16-bit instructions" +msgstr "압축된 16비트 명령어" + +#. /ext:F +#: modules/devices/riscv/riscv_data.c:45 +msgctxt "rv-ext" +msgid "Floating-point instructions, single-precision" +msgstr "부동 소수점 명령어, 단일 정밀도" + +#. /ext:D +#: modules/devices/riscv/riscv_data.c:46 +msgctxt "rv-ext" +msgid "Floating-point instructions, double-precision" +msgstr "부동 소수점 명령어, 이중 정밀도" + +#. /ext:Q +#: modules/devices/riscv/riscv_data.c:47 +msgctxt "rv-ext" +msgid "Floating-point instructions, quad-precision" +msgstr "부동 소수점 명령어, 쿼드 정밀도" + +#. /ext:B +#: modules/devices/riscv/riscv_data.c:48 +msgctxt "rv-ext" +msgid "Bit manipulation instructions" +msgstr "비트 조작 명령" + +#. /ext:V +#: modules/devices/riscv/riscv_data.c:49 +msgctxt "rv-ext" +msgid "Vector operations" +msgstr "벡터 연산" + +#. /ext:T +#: modules/devices/riscv/riscv_data.c:50 +msgctxt "rv-ext" +msgid "Transactional memory" +msgstr "트랜잭션 메모리" + +#. /ext:P +#: modules/devices/riscv/riscv_data.c:51 +msgctxt "rv-ext" +msgid "Packed SIMD instructions" +msgstr "포장된 SIMD 명령" + +#. /ext:L +#: modules/devices/riscv/riscv_data.c:52 +msgctxt "rv-ext" +msgid "Decimal floating-point instructions" +msgstr "10진수 부동 소수점 명령어" + +#. /ext:J +#: modules/devices/riscv/riscv_data.c:53 +msgctxt "rv-ext" +msgid "Dynamically translated languages" +msgstr "동적으로 번역된 언어" + +#. /ext:N +#: modules/devices/riscv/riscv_data.c:54 +msgctxt "rv-ext" +msgid "User-level interrupts" +msgstr "사용자 수준 인터럽트" + +#: modules/devices/s390/processor.c:92 +msgid "S390 Processor" +msgstr "S390 프로세서" + +#: modules/devices/s390/processor.c:133 +msgid "ID String" +msgstr "ID 문자열" + +#: modules/devices/sh/processor.c:55 +msgid "SuperH Processor" +msgstr "슈퍼H 프로세서" + +#: modules/devices/sh/processor.c:88 +msgid "Bus Frequency" +msgstr "버스 주파수" + +#: modules/devices/sh/processor.c:89 +msgid "Module Frequency" +msgstr "모듈 주파수" + +#: modules/devices/spd-decode.c:306 +msgid "Row address bits" +msgstr "행 주소 비트" + +#: modules/devices/spd-decode.c:307 +msgid "Column address bits" +msgstr "열 주소 비트" + +#: modules/devices/spd-decode.c:308 +msgid "Number of rows" +msgstr "행 수" + +#: modules/devices/spd-decode.c:309 +msgid "Data width" +msgstr "데이터 너비" + +#: modules/devices/spd-decode.c:310 +msgid "Interface signal levels" +msgstr "인터페이스 신호 레벨" + +#: modules/devices/spd-decode.c:311 +msgid "Configuration type" +msgstr "구성 유형" + +#: modules/devices/spd-decode.c:312 +msgid "Refresh" +msgstr "새로고침" + +#: modules/devices/spd-decode.c:313 modules/devices/spd-decode.c:397 +#: modules/devices/spd-decode.c:687 +msgid "Timings" +msgstr "타이밍" + +#: modules/devices/spd-decode.c:550 modules/devices/spd-decode.c:942 +#: modules/devices/spd-decode.c:984 modules/devices/x86/processor.c:717 +msgid "Voltage" +msgstr "전압" + +#: modules/devices/spd-decode.c:551 modules/devices/spd-decode.c:986 +msgid "JEDEC Timings" +msgstr "JEDEC 타이밍" + +#: modules/devices/spd-decode.c:663 +msgid "Ranks" +msgstr "순위" + +#: modules/devices/spd-decode.c:664 +msgid "IO Pins per Chip" +msgstr "칩당 IO 핀" + +#: modules/devices/spd-decode.c:665 +msgid "Die count" +msgstr "다이 카운트" + +#: modules/devices/spd-decode.c:666 +msgid "Thermal Sensor" +msgstr "" + +#: modules/devices/spd-decode.c:666 +msgid "Present" +msgstr "존재" + +#: modules/devices/spd-decode.c:666 +msgid "Not present" +msgstr "존재하지 않음" + +#: modules/devices/spd-decode.c:667 +msgid "Supported Voltages" +msgstr "지원되는 전압" + +#: modules/devices/spd-decode.c:671 +msgid "Supported CAS Latencies" +msgstr "지원되는 CAS 대기 시간" + +#: modules/devices/spd-decode.c:708 +msgid "Invalid" +msgstr "유효하지 않은" + +#: modules/devices/spd-decode.c:940 +msgid "XMP Profile" +msgstr "XMP 프로필" + +#: modules/devices/spd-decode.c:941 modules/devices/usb.c:176 +msgid "Speed" +msgstr "속도" + +#: modules/devices/spd-decode.c:943 +msgid "XMP Timings" +msgstr "XMP 타이밍" + +#: modules/devices/spd-decode.c:985 +msgid "XMP" +msgstr "XMP" + +#: modules/devices/storage.c:46 modules/devices/storage.c:55 +msgid "NVMe Controller" +msgstr "NVMe 컨트롤러" + +#: modules/devices/storage.c:138 +msgid "Read Error Rate" +msgstr "읽기 오류율" + +#: modules/devices/storage.c:139 +msgid "Throughput Performance" +msgstr "처리 성능" + +#: modules/devices/storage.c:140 +msgid "Spin-Up Time" +msgstr "스핀업 시간" + +#: modules/devices/storage.c:141 +msgid "Start/Stop Count" +msgstr "시작/중지 카운트" + +#: modules/devices/storage.c:142 +msgid "Reallocated Sector Count" +msgstr "재분배된 섹터 개수" + +#: modules/devices/storage.c:143 +msgid "Read Channel Margin" +msgstr "채널 마진 읽기" + +#: modules/devices/storage.c:144 +msgid "Seek Error Rate" +msgstr "탐색 오류율" + +#: modules/devices/storage.c:145 +msgid "Seek Timer Performance" +msgstr "타이머 성능 추구" + +#: modules/devices/storage.c:146 modules/devices/storage.c:185 +msgid "Power-On Hours" +msgstr "전원 켜기 시간" + +#: modules/devices/storage.c:147 +msgid "Spin Retry Count" +msgstr "회전 재시도 횟수" + +#: modules/devices/storage.c:148 +msgid "Calibration Retry Count" +msgstr "교정 재시도 횟수" + +#: modules/devices/storage.c:149 +msgid "Power Cycle Count" +msgstr "전원 주기 횟수" + +#: modules/devices/storage.c:150 modules/devices/storage.c:167 +msgid "Soft Read Error Rate" +msgstr "소프트 읽기 오류율" + +#: modules/devices/storage.c:151 +msgid "Runtime Bad Block" +msgstr "런타임 불량 블록" + +#: modules/devices/storage.c:152 +msgid "End-to-End error" +msgstr "종단 간 오류" + +#: modules/devices/storage.c:153 +msgid "Reported Uncorrectable Errors" +msgstr "보고된 수정 불가능한 오류" + +#: modules/devices/storage.c:154 +msgid "Command Timeout" +msgstr "명령 시간 초과" + +#: modules/devices/storage.c:155 +msgid "High Fly Writes" +msgstr "하이 플라이 쓰기" + +#: modules/devices/storage.c:156 +msgid "Airflow Temperature" +msgstr "에어플로우 온도" + +#: modules/devices/storage.c:157 +msgid "G-sense Error Rate" +msgstr "G-sense 오류율" + +#: modules/devices/storage.c:158 +msgid "Power-off Retract Count" +msgstr "전원 끄기 철회 카운트" + +#: modules/devices/storage.c:159 +msgid "Load Cycle Count" +msgstr "로드 사이클 수" + +#: modules/devices/storage.c:160 modules/devices/storage.c:183 +msgid "Temperature" +msgstr "온도" + +#: modules/devices/storage.c:161 +msgid "Hardware ECC Recovered" +msgstr "하드웨어 ECC 복구됨" + +#: modules/devices/storage.c:162 +msgid "Reallocation Event Count" +msgstr "재할당 이벤트 수" + +#: modules/devices/storage.c:163 +msgid "Current Pending Sector Count" +msgstr "현재 보류 중인 섹터 수" + +#: modules/devices/storage.c:164 +msgid "Uncorrectable Sector Count" +msgstr "수정할 수 없는 섹터 수" + +#: modules/devices/storage.c:165 +msgid "UltraDMA CRC Error Count" +msgstr "UltraDMA CRC 오류 수" + +#: modules/devices/storage.c:166 +msgid "Multi-Zone Error Rate" +msgstr "다중 영역 오류율" + +#: modules/devices/storage.c:168 +msgid "Run Out Cancel" +msgstr "실행 취소" + +#: modules/devices/storage.c:169 +msgid "Flying Height" +msgstr "플라잉 하이트" + +#: modules/devices/storage.c:170 +msgid "Spin High Current" +msgstr "스핀 하이 커런트" + +#: modules/devices/storage.c:171 +msgid "Spin Buzz" +msgstr "스핀 버즈" + +#: modules/devices/storage.c:172 +msgid "Offline Seek Performance" +msgstr "오프라인 검색 성능" + +#: modules/devices/storage.c:173 +msgid "Disk Shift" +msgstr "디스크 시프트" + +#: modules/devices/storage.c:174 +msgid "G-Sense Error Rate" +msgstr "G-Sense 오류율" + +#: modules/devices/storage.c:175 +msgid "Loaded Hours" +msgstr "로드 시간" + +#: modules/devices/storage.c:176 +msgid "Load/Unload Retry Count" +msgstr "로드/언로드 재시도 횟수" + +#: modules/devices/storage.c:177 +msgid "Load Friction" +msgstr "" + +#: modules/devices/storage.c:178 +msgid "Load/Unload Cycle Count" +msgstr "로드/언로드 주기 수" + +#: modules/devices/storage.c:179 +msgid "Load-in time" +msgstr "로딩 시간" + +#: modules/devices/storage.c:180 +msgid "Torque Amplification Count" +msgstr "Torque 증폭 횟수" + +#: modules/devices/storage.c:181 +msgid "Power-Off Retract Count" +msgstr "전원 끄기 철회 카운트" + +#: modules/devices/storage.c:182 +msgid "GMR Head Amplitude" +msgstr "GMR 헤드 진폭" + +#: modules/devices/storage.c:184 +msgid "Endurance Remaining" +msgstr "남은 수명" + +#: modules/devices/storage.c:186 +msgid "Good Block Rate" +msgstr "좋은 차단율" + +#: modules/devices/storage.c:187 +msgid "Head Flying Hours" +msgstr "헤드 플라잉 시간" + +#: modules/devices/storage.c:188 +msgid "Read Error Retry Rate" +msgstr "읽기 오류 재시도 비율" + +#: modules/devices/storage.c:189 +msgid "Total LBAs Written" +msgstr "작성된 총 LBA" + +#: modules/devices/storage.c:190 +msgid "Total LBAs Read" +msgstr "읽은 총 LBA" + +#: modules/devices/storage.c:191 +msgid "Wear leveling Count" +msgstr "웨어 레벨링 카운트" + +#: modules/devices/storage.c:192 +msgid "Total Used Reserved Block Count" +msgstr "사용된 총 예약 블록 수" + +#: modules/devices/storage.c:193 +msgid "Total Program Fail Count" +msgstr "총 프로그램 실패 횟수" + +#: modules/devices/storage.c:194 +msgid "Total Erase Fail Count" +msgstr "총 지우기 실패 횟수" + +#: modules/devices/storage.c:195 +msgid "Available Reserved Space" +msgstr "사용 가능한 예약 공간" + +#: modules/devices/storage.c:196 +msgid "Program Fail Count" +msgstr "프로그램 실패 횟수" + +#: modules/devices/storage.c:197 +msgid "Erase Fail Count" +msgstr "실패 횟수 지우기" + +#: modules/devices/storage.c:198 +msgid "TA Counter Increased" +msgstr "TA 카운터 증가" + +#: modules/devices/storage.c:199 +msgid "Total Unused Reserved Block Count" +msgstr "총 미사용 예약 블록 수" + +#: modules/devices/storage.c:204 +msgid "" +"\n" +"[UDisks2]\n" +msgstr "" +"\n" +"[UDisks2]\n" + +#: modules/devices/storage.c:257 +msgid "Removable" +msgstr "" + +#: modules/devices/storage.c:257 +msgid "Fixed" +msgstr "고정된" + +#: modules/devices/storage.c:260 +msgid "Ejectable" +msgstr "배출 가능" + +#: modules/devices/storage.c:263 +msgid "Self-monitoring (S.M.A.R.T.)" +msgstr "자가 모니터링(S.M.A.R.T.)" + +#: modules/devices/storage.c:266 modules/devices/x86/processor.c:665 +msgid "Power Management" +msgstr "전원 관리" + +#: modules/devices/storage.c:269 +msgid "Advanced Power Management" +msgstr "고급 전원 관리" + +#: modules/devices/storage.c:272 +msgid "Automatic Acoustic Management" +msgstr "자동 음향 관리" + +#: modules/devices/storage.c:275 +msgid "" +"[Drive Information]\n" +"Model=%s\n" +msgstr "" +"[드라이브 정보]\n" +"모델=%s\n" + +#: modules/devices/storage.c:285 +msgid "" +"Revision=%s\n" +"Block Device=%s\n" +"Serial=%s\n" +"Size=%s\n" +"Features=%s\n" +msgstr "" +"개정=%s\n" +"블록 장치=%s\n" +"시리얼넘버=%s\n" +"크기=%s\n" +"기능=%s\n" + +#: modules/devices/storage.c:300 +msgid "Rotation Rate=%d RPM\n" +msgstr "회전율=%d RPM\n" + +#: modules/devices/storage.c:303 +msgid "" +"Media=%s\n" +"Media compatibility=%s\n" +msgstr "" +"미디어=%s\n" +"미디어 호환성=%s\n" + +#: modules/devices/storage.c:310 +msgid "Connection bus=%s\n" +msgstr "연결 버스=%s\n" + +#: modules/devices/storage.c:322 +msgid "WWN" +msgstr "WWN" + +#: modules/devices/storage.c:323 +msgid "EUI " +msgstr "EUI " + +#: modules/devices/storage.c:328 +msgid "WWN / EUI" +msgstr "WWN / EUI" + +#: modules/devices/storage.c:332 +msgid "$^$%s=[%s] %s\n" +msgstr "$^$%s=[%s] %s\n" + +#: modules/devices/storage.c:334 +msgid "IEEE OUI" +msgstr "IEEE OUI" + +#: modules/devices/storage.c:346 +msgid "" +"[Self-monitoring (S.M.A.R.T.)]\n" +"Status=%s\n" +"Bad Sectors=%" +msgstr "" +"[자체 모니터링(S.M.A.R.T.)]\n" +"상태=%s\n" +"불량 섹터=%" + +#: modules/devices/storage.c:352 +msgid "Failing" +msgstr "실패" + +#: modules/devices/storage.c:352 +msgid "OK" +msgstr "확인" + +#: modules/devices/storage.c:358 +msgid "" +"[S.M.A.R.T. Attributes]\n" +"Attribute=Value / Normalized / Worst / Threshold\n" +msgstr "" +"[S.M.A.R.T. 속성]\n" +"속성=값/정규화/최저값/임계값\n" + +#: modules/devices/storage.c:381 +msgid "%" +msgid_plural "%" +msgstr[0] "%" + +#: modules/devices/storage.c:419 +msgid "(%d) %s=%s\n" +msgstr "(%d) %s=%s\n" + +#: modules/devices/storage.c:428 +msgid "" +"[Partition table]\n" +"Type=%s\n" +msgstr "" +"[파티션 테이블]\n" +"유형=%s\n" + +#: modules/devices/storage.c:447 +msgid "Partition %s=%s\n" +msgstr "파티션 %s=%s\n" + +#: modules/devices/storage.c:496 +msgid "" +"\n" +"[SCSI Disks]\n" +msgstr "" +"\n" +"[SCSI 디스크]\n" + +#: modules/devices/storage.c:567 modules/devices/storage.c:767 +msgid "" +"[Device Information]\n" +"Model=%s\n" +msgstr "" +"[기기 정보]\n" +"모델=%s\n" + +#: modules/devices/storage.c:574 +msgid "" +"Type=%s\n" +"Revision=%s\n" +"[SCSI Controller]\n" +"Controller=scsi%d\n" +"Channel=%d\n" +"ID=%d\n" +"LUN=%d\n" +msgstr "" +"유형=%s\n" +"개정=%s\n" +"[SCSI 컨트롤러]\n" +"컨트롤러=scsi%d\n" +"채널=%d\n" +"아이디=%d\n" +"LUN=%d\n" + +#: modules/devices/storage.c:621 +msgid "" +"\n" +"[IDE Disks]\n" +msgstr "" +"\n" +"[IDE 디스크]\n" + +#: modules/devices/storage.c:704 +msgid "Driver=%s\n" +msgstr "드라이버=%s\n" + +#: modules/devices/storage.c:773 +msgid "" +"Device Name=hd%c\n" +"Media=%s\n" +"Cache=%dkb\n" +msgstr "" +"장치 이름=hd%c\n" +"미디어=%s\n" +"캐시=%dkb\n" + +#: modules/devices/storage.c:783 +msgid "" +"[Geometry]\n" +"Physical=%s\n" +"Logical=%s\n" +msgstr "" +"[기하학]\n" +"물리적=%s\n" +"논리=%s\n" + +#: modules/devices/storage.c:793 +msgid "" +"[Capabilities]\n" +"%s" +msgstr "" +"[능력]\n" +"%s" + +#: modules/devices/storage.c:800 +msgid "" +"[Speeds]\n" +"%s" +msgstr "" +"[속도]\n" +"%s" + +#: modules/devices/usb.c:137 modules/devices/usb.c:178 +msgid "Sub-class" +msgstr "서브클래스" + +#: modules/devices/usb.c:138 modules/devices/usb.c:179 modules/network.c:347 +msgid "Protocol" +msgstr "프로토콜" + +#: modules/devices/usb.c:146 modules/network/net.c:451 +msgid "Mb/s" +msgstr "Mb/초" + +#: modules/devices/usb.c:174 +msgid "Max Current" +msgstr "최대 전류" + +#: modules/devices/usb.c:174 +msgid "mA" +msgstr "" + +#: modules/devices/usb.c:175 +msgid "USB Version" +msgstr "USB 버전" + +#: modules/devices/usb.c:180 +msgid "Device Version" +msgstr "장치 버전" + +#: modules/devices/usb.c:222 +msgid "No USB devices found." +msgstr "USB 장치를 찾을 수 없습니다." + +#: modules/devices/x86/processor.c:649 +msgid "Model Name" +msgstr "모델명" + +#: modules/devices/x86/processor.c:650 +msgid "Family, model, stepping" +msgstr "제품군, 모델, 스테핑" + +#: modules/devices/x86/processor.c:656 +msgid "Microcode Version" +msgstr "마이크로코드 버전" + +#: modules/devices/x86/processor.c:657 +msgid "Configuration" +msgstr "구성" + +#: modules/devices/x86/processor.c:658 +msgid "Cache Size" +msgstr "캐시 크기" + +#: modules/devices/x86/processor.c:658 +msgid "kb" +msgstr "kb" + +#: modules/devices/x86/processor.c:666 +msgid "Bug Workarounds" +msgstr "버그 해결 방법" + +#: modules/devices/x86/processor.c:693 +msgid "Socket Information" +msgstr "소켓 정보" + +#: modules/devices/x86/processor.c:714 +msgid "CPU Socket" +msgstr "CPU 소켓" + +#: modules/devices/x86/processor.c:718 +msgid "External Clock" +msgstr "외부 클럭" + +#: modules/devices/x86/processor.c:719 +msgid "Max Frequency" +msgstr "최대 주파수" + +#: modules/devices/x86/processor.c:750 +msgid "Package Information" +msgstr "패키지 정보" + +#: modules/devices/x86/processor.c:812 +msgid "Socket:Core" +msgstr "소켓: 코어" + +#. /flag:fpu +#: modules/devices/x86/x86_data.c:48 +msgctxt "x86-flag" +msgid "Onboard FPU (floating point support)" +msgstr "온보드 FPU(부동 소수점 지원)" + +#. /flag:vme +#: modules/devices/x86/x86_data.c:49 +msgctxt "x86-flag" +msgid "Virtual 8086 mode enhancements" +msgstr "가상 8086 모드 개선 사항" + +#. /flag:de +#: modules/devices/x86/x86_data.c:50 +msgctxt "x86-flag" +msgid "Debugging Extensions (CR4.DE)" +msgstr "디버깅 확장(CR4.DE)" + +#. /flag:pse +#: modules/devices/x86/x86_data.c:51 +msgctxt "x86-flag" +msgid "Page Size Extensions (4MB memory pages)" +msgstr "페이지 크기 확장(4MB 메모리 페이지)" + +#. /flag:tsc +#: modules/devices/x86/x86_data.c:52 +msgctxt "x86-flag" +msgid "Time Stamp Counter (RDTSC)" +msgstr "타임스탬프 카운터(RDTSC)" + +#. /flag:msr +#: modules/devices/x86/x86_data.c:53 +msgctxt "x86-flag" +msgid "Model-Specific Registers (RDMSR, WRMSR)" +msgstr "모델별 레지스터(RDMSR, WRMSR)" + +#. /flag:pae +#: modules/devices/x86/x86_data.c:54 +msgctxt "x86-flag" +msgid "Physical Address Extensions (support for more than 4GB of RAM)" +msgstr "물리적 주소 확장(4GB 이상의 RAM 지원)" + +#. /flag:mce +#: modules/devices/x86/x86_data.c:55 +msgctxt "x86-flag" +msgid "Machine Check Exception" +msgstr "머신 점검 예외" + +#. /flag:cx8 +#: modules/devices/x86/x86_data.c:56 +msgctxt "x86-flag" +msgid "CMPXCHG8 instruction (64-bit compare-and-swap)" +msgstr "CMPXCHG8 명령어(64비트 비교 및 교환)" + +#. /flag:apic +#: modules/devices/x86/x86_data.c:57 +msgctxt "x86-flag" +msgid "Onboard APIC" +msgstr "온보드 APIC" + +#. /flag:sep +#: modules/devices/x86/x86_data.c:58 +msgctxt "x86-flag" +msgid "SYSENTER/SYSEXIT" +msgstr "SYSENTER/SYSEXIT" + +#. /flag:mtrr +#: modules/devices/x86/x86_data.c:59 +msgctxt "x86-flag" +msgid "Memory Type Range Registers" +msgstr "메모리 유형 범위 레지스터" + +#. /flag:pge +#: modules/devices/x86/x86_data.c:60 +msgctxt "x86-flag" +msgid "Page Global Enable (global bit in PDEs and PTEs)" +msgstr "페이지 전역 활성화(PDE 및 PTE의 전역 비트)" + +#. /flag:mca +#: modules/devices/x86/x86_data.c:61 +msgctxt "x86-flag" +msgid "Machine Check Architecture" +msgstr "머신 체크 아키텍처" + +#. /flag:cmov +#: modules/devices/x86/x86_data.c:62 +msgctxt "x86-flag" +msgid "CMOV instructions (conditional move) (also FCMOV)" +msgstr "CMOV 명령(조건부 이동)(FCMOV도 포함)" + +#. /flag:pat +#: modules/devices/x86/x86_data.c:63 +msgctxt "x86-flag" +msgid "Page Attribute Table" +msgstr "페이지 속성 테이블" + +#. /flag:pse36 +#: modules/devices/x86/x86_data.c:64 +msgctxt "x86-flag" +msgid "36-bit PSEs (huge pages)" +msgstr "36비트 PSE(거대한 페이지)" + +#. /flag:pn +#: modules/devices/x86/x86_data.c:65 +msgctxt "x86-flag" +msgid "Processor serial number" +msgstr "프로세서 시리얼넘버" + +#. /flag:clflush +#: modules/devices/x86/x86_data.c:66 +msgctxt "x86-flag" +msgid "Cache Line Flush instruction" +msgstr "캐시 라인 플러시 명령" + +#. /flag:dts +#: modules/devices/x86/x86_data.c:67 +msgctxt "x86-flag" +msgid "Debug Store (buffer for debugging and profiling instructions), or alternately: digital thermal sensor" +msgstr "디버그 저장소(디버깅 및 프로파일링 명령어용 버퍼) 또는 대안: 디지털 열 센서" + +#. /flag:acpi +#: modules/devices/x86/x86_data.c:68 +msgctxt "x86-flag" +msgid "ACPI via MSR (temperature monitoring and clock speed modulation)" +msgstr "MSR을 통한 ACPI(온도 모니터링 및 클럭 속도 변조)" + +#. /flag:mmx +#: modules/devices/x86/x86_data.c:69 +msgctxt "x86-flag" +msgid "Multimedia Extensions" +msgstr "멀티미디어 확장" + +#. /flag:fxsr +#: modules/devices/x86/x86_data.c:70 +msgctxt "x86-flag" +msgid "FXSAVE/FXRSTOR, CR4.OSFXSR" +msgstr "FXSAVE/FXRSTOR, CR4.OSFXSR" + +#. /flag:sse +#: modules/devices/x86/x86_data.c:71 +msgctxt "x86-flag" +msgid "Intel SSE vector instructions" +msgstr "인텔 SSE 벡터 지침" + +#. /flag:sse2 +#: modules/devices/x86/x86_data.c:72 +msgctxt "x86-flag" +msgid "SSE2" +msgstr "SSE2" + +#. /flag:ss +#: modules/devices/x86/x86_data.c:73 +msgctxt "x86-flag" +msgid "CPU self snoop" +msgstr "CPU 자체 스눕" + +#. /flag:ht +#: modules/devices/x86/x86_data.c:74 +msgctxt "x86-flag" +msgid "Hyper-Threading" +msgstr "하이퍼 스레딩" + +#. /flag:tm +#: modules/devices/x86/x86_data.c:75 +msgctxt "x86-flag" +msgid "Automatic clock control (Thermal Monitor)" +msgstr "자동 클럭 제어(Thermal Monitor)" + +#. /flag:ia64 +#: modules/devices/x86/x86_data.c:76 +msgctxt "x86-flag" +msgid "Intel Itanium Architecture 64-bit (not to be confused with Intel's 64-bit x86 architecture with flag x86-64 or \"AMD64\" bit indicated by flag lm)" +msgstr "Intel Itanium Architecture 64비트(플래그 x86-64 또는 플래그 lm으로 표시된 \"AMD64\" 비트가 있는 Intel의 64비트 x86 아키텍처와 혼동하지 마십시오)" + +#. /flag:pbe +#: modules/devices/x86/x86_data.c:77 +msgctxt "x86-flag" +msgid "Pending Break Enable (PBE# pin) wakeup support" +msgstr "보류 중인 중단 활성화(PBE# 핀) 웨이크업 지원" + +#. /flag:syscall +#: modules/devices/x86/x86_data.c:80 +msgctxt "x86-flag" +msgid "SYSCALL (Fast System Call) and SYSRET (Return From Fast System Call)" +msgstr "SYSCALL(빠른 시스템 호출) 및 SYSRET(빠른 시스템 호출에서 반환)" + +#. /flag:mp +#: modules/devices/x86/x86_data.c:81 +msgctxt "x86-flag" +msgid "Multiprocessing Capable." +msgstr "다중 처리 가능." + +#. /flag:nx +#: modules/devices/x86/x86_data.c:82 +msgctxt "x86-flag" +msgid "Execute Disable" +msgstr "실행 비활성화" + +#. /flag:mmxext +#: modules/devices/x86/x86_data.c:83 +msgctxt "x86-flag" +msgid "AMD MMX extensions" +msgstr "AMD MMX 확장" + +#. /flag:fxsr_opt +#: modules/devices/x86/x86_data.c:84 +msgctxt "x86-flag" +msgid "FXSAVE/FXRSTOR optimizations" +msgstr "FXSAVE/FXRSTOR 최적화" + +#. /flag:pdpe1gb +#: modules/devices/x86/x86_data.c:85 +msgctxt "x86-flag" +msgid "One GB pages (allows hugepagesz=1G)" +msgstr "1GB 페이지(hugepagesz=1G 허용)" + +#. /flag:rdtscp +#: modules/devices/x86/x86_data.c:86 +msgctxt "x86-flag" +msgid "Read Time-Stamp Counter and Processor ID" +msgstr "타임스탬프 카운터 및 프로세서 ID 읽기" + +#. /flag:lm +#: modules/devices/x86/x86_data.c:87 +msgctxt "x86-flag" +msgid "Long Mode (x86-64: amd64, also known as Intel 64, i.e. 64-bit capable)" +msgstr "긴 모드(x86-64: amd64, Intel 64라고도 함, 즉 64비트 지원)" + +#. /flag:3dnow +#: modules/devices/x86/x86_data.c:88 +msgctxt "x86-flag" +msgid "3DNow! (AMD vector instructions, competing with Intel's SSE1)" +msgstr "3DNow! (AMD 벡터 명령어, 인텔의 SSE1과 경쟁)" + +#. /flag:3dnowext +#: modules/devices/x86/x86_data.c:89 +msgctxt "x86-flag" +msgid "AMD 3DNow! extensions" +msgstr "AMD 3DNow! 확장" + +#. /flag:recovery +#: modules/devices/x86/x86_data.c:91 +msgctxt "x86-flag" +msgid "CPU in recovery mode" +msgstr "복구 모드의 CPU" + +#. /flag:longrun +#: modules/devices/x86/x86_data.c:92 +msgctxt "x86-flag" +msgid "Longrun power control" +msgstr "롱런 파워 컨트롤" + +#. /flag:lrti +#: modules/devices/x86/x86_data.c:93 +msgctxt "x86-flag" +msgid "LongRun table interface" +msgstr "롱런 테이블 인터페이스" + +#. /flag:cxmmx +#: modules/devices/x86/x86_data.c:95 +msgctxt "x86-flag" +msgid "Cyrix MMX extensions" +msgstr "Cyrix MMX 확장" + +#. /flag:k6_mtrr +#: modules/devices/x86/x86_data.c:96 +msgctxt "x86-flag" +msgid "AMD K6 nonstandard MTRRs" +msgstr "AMD K6 비표준 MTRR" + +#. /flag:cyrix_arr +#: modules/devices/x86/x86_data.c:97 +msgctxt "x86-flag" +msgid "Cyrix ARRs (= MTRRs)" +msgstr "Cyrix ARR (= MTRR)" + +#. /flag:centaur_mcr +#: modules/devices/x86/x86_data.c:98 +msgctxt "x86-flag" +msgid "Centaur MCRs (= MTRRs)" +msgstr "" + +#. /flag:constant_tsc +#: modules/devices/x86/x86_data.c:99 +msgctxt "x86-flag" +msgid "TSC ticks at a constant rate" +msgstr "TSC가 일정한 비율로 째깍거림" + +#. /flag:up +#: modules/devices/x86/x86_data.c:100 +msgctxt "x86-flag" +msgid "SMP kernel running on UP" +msgstr "UP에서 실행되는 SMP 커널" + +#. /flag:art +#: modules/devices/x86/x86_data.c:101 +msgctxt "x86-flag" +msgid "Always-Running Timer" +msgstr "항상 실행되는 타이머" + +#. /flag:arch_perfmon +#: modules/devices/x86/x86_data.c:102 +msgctxt "x86-flag" +msgid "Intel Architectural PerfMon" +msgstr "인텔 아키텍처 PerfMon" + +#. /flag:pebs +#: modules/devices/x86/x86_data.c:103 +msgctxt "x86-flag" +msgid "Precise-Event Based Sampling" +msgstr "정확한 이벤트 기반 샘플링" + +#. /flag:bts +#: modules/devices/x86/x86_data.c:104 +msgctxt "x86-flag" +msgid "Branch Trace Store" +msgstr "브랜치 트레이스 스토어" + +#. /flag:rep_good +#: modules/devices/x86/x86_data.c:105 +msgctxt "x86-flag" +msgid "rep microcode works well" +msgstr "rep 마이크로코드가 잘 작동합니다." + +#. /flag:acc_power +#: modules/devices/x86/x86_data.c:106 +msgctxt "x86-flag" +msgid "AMD accumulated power mechanism" +msgstr "AMD 축적 전력 메커니즘" + +#. /flag:nopl +#: modules/devices/x86/x86_data.c:107 +msgctxt "x86-flag" +msgid "The NOPL (0F 1F) instructions" +msgstr "NOPL(0F 1F) 명령어" + +#. /flag:xtopology +#: modules/devices/x86/x86_data.c:108 +msgctxt "x86-flag" +msgid "cpu topology enum extensions" +msgstr "CPU 토폴로지 열거형 확장" + +#. /flag:tsc_reliable +#: modules/devices/x86/x86_data.c:109 +msgctxt "x86-flag" +msgid "TSC is known to be reliable" +msgstr "TSC는 신뢰할 수 있는 것으로 알려져 있습니다." + +#. /flag:nonstop_tsc +#: modules/devices/x86/x86_data.c:110 +msgctxt "x86-flag" +msgid "TSC does not stop in C states" +msgstr "TSC는 C 상태에서 멈추지 않습니다." + +#. /flag:extd_apicid +#: modules/devices/x86/x86_data.c:111 +msgctxt "x86-flag" +msgid "has extended APICID (8 bits)" +msgstr "확장 APICID(8비트)가 있습니다." + +#. /flag:amd_dcm +#: modules/devices/x86/x86_data.c:112 +msgctxt "x86-flag" +msgid "multi-node processor" +msgstr "다중 노드 프로세서" + +#. /flag:aperfmperf +#: modules/devices/x86/x86_data.c:113 +msgctxt "x86-flag" +msgid "APERFMPERF" +msgstr "APERFMPERF" + +#. /flag:eagerfpu +#: modules/devices/x86/x86_data.c:114 +msgctxt "x86-flag" +msgid "Non lazy FPU restore" +msgstr "비 지연 FPU 복원" + +#. /flag:nonstop_tsc_s3 +#: modules/devices/x86/x86_data.c:115 +msgctxt "x86-flag" +msgid "TSC doesn't stop in S3 state" +msgstr "TSC는 S3 상태에서 멈추지 않습니다." + +#. /flag:mce_recovery +#: modules/devices/x86/x86_data.c:116 +msgctxt "x86-flag" +msgid "CPU has recoverable machine checks" +msgstr "CPU에는 복구 가능한 머신 검사가 있습니다." + +#. /flag:pni +#: modules/devices/x86/x86_data.c:119 +msgctxt "x86-flag" +msgid "SSE-3 (\"Prescott New Instructions\")" +msgstr "SSE-3(\"Prescott 새 지침\")" + +#. /flag:pclmulqdq +#: modules/devices/x86/x86_data.c:120 +msgctxt "x86-flag" +msgid "Perform a Carry-Less Multiplication of Quadword instruction - accelerator for GCM" +msgstr "쿼드워드 명령어의 캐리리스 곱셈 수행 - GCM용 가속기" + +#. /flag:dtes64 +#: modules/devices/x86/x86_data.c:121 +msgctxt "x86-flag" +msgid "64-bit Debug Store" +msgstr "64비트 디버그 저장소" + +#. /flag:monitor +#: modules/devices/x86/x86_data.c:122 +msgctxt "x86-flag" +msgid "Monitor/Mwait support (Intel SSE3 supplements)" +msgstr "모니터/Mwait 지원(Intel SSE3 보완)" + +#. /flag:ds_cpl +#: modules/devices/x86/x86_data.c:123 +msgctxt "x86-flag" +msgid "CPL Qual. Debug Store" +msgstr "CPL Qual. 디버그 스토어" + +#. /flag:vmx +#: modules/devices/x86/x86_data.c:124 +msgctxt "x86-flag" +msgid "Hardware virtualization, Intel VMX" +msgstr "하드웨어 가상화, Intel VMX" + +#. /flag:smx +#: modules/devices/x86/x86_data.c:125 +msgctxt "x86-flag" +msgid "Safer mode TXT (TPM support)" +msgstr "안전 모드 TXT(TPM 지원)" + +#. /flag:est +#: modules/devices/x86/x86_data.c:126 +msgctxt "x86-flag" +msgid "Enhanced SpeedStep" +msgstr "향상된 스피드스텝" + +#. /flag:tm2 +#: modules/devices/x86/x86_data.c:127 +msgctxt "x86-flag" +msgid "Thermal Monitor 2" +msgstr "" + +#. /flag:ssse3 +#: modules/devices/x86/x86_data.c:128 +msgctxt "x86-flag" +msgid "Supplemental SSE-3" +msgstr "보충 SSE-3" + +#. /flag:cid +#: modules/devices/x86/x86_data.c:129 +msgctxt "x86-flag" +msgid "Context ID" +msgstr "컨텍스트 ID" + +#. /flag:sdbg +#: modules/devices/x86/x86_data.c:130 +msgctxt "x86-flag" +msgid "silicon debug" +msgstr "실리콘 디버그" + +#. /flag:fma +#: modules/devices/x86/x86_data.c:131 +msgctxt "x86-flag" +msgid "Fused multiply-add" +msgstr "융합 곱셈 더하기" + +#. /flag:cx16 +#: modules/devices/x86/x86_data.c:132 +msgctxt "x86-flag" +msgid "CMPXCHG16B" +msgstr "CMPXCHG16B" + +#. /flag:xtpr +#: modules/devices/x86/x86_data.c:133 +msgctxt "x86-flag" +msgid "Send Task Priority Messages" +msgstr "작업 우선 순위 메시지 보내기" + +#. /flag:pdcm +#: modules/devices/x86/x86_data.c:134 +msgctxt "x86-flag" +msgid "Performance Capabilities" +msgstr "성능 기능" + +#. /flag:pcid +#: modules/devices/x86/x86_data.c:135 +msgctxt "x86-flag" +msgid "Process Context Identifiers" +msgstr "프로세스 컨텍스트 식별자" + +#. /flag:dca +#: modules/devices/x86/x86_data.c:136 +msgctxt "x86-flag" +msgid "Direct Cache Access" +msgstr "직접 캐시 액세스" + +#. /flag:sse4_1 +#: modules/devices/x86/x86_data.c:137 +msgctxt "x86-flag" +msgid "SSE-4.1" +msgstr "SSE-4.1" + +#. /flag:sse4_2 +#: modules/devices/x86/x86_data.c:138 +msgctxt "x86-flag" +msgid "SSE-4.2" +msgstr "SSE-4.2" + +#. /flag:x2apic +#: modules/devices/x86/x86_data.c:139 +msgctxt "x86-flag" +msgid "x2APIC" +msgstr "x2APIC" + +#. /flag:movbe +#: modules/devices/x86/x86_data.c:140 +msgctxt "x86-flag" +msgid "Move Data After Swapping Bytes instruction" +msgstr "바이트 교체 후 데이터 이동 명령어" + +#. /flag:popcnt +#: modules/devices/x86/x86_data.c:141 +msgctxt "x86-flag" +msgid "Return the Count of Number of Bits Set to 1 instruction (Hamming weight, i.e. bit count)" +msgstr "1 명령어로 설정된 비트 수 반환(해밍 가중치, 즉 비트 수)" + +#. /flag:tsc_deadline_timer +#: modules/devices/x86/x86_data.c:142 +msgctxt "x86-flag" +msgid "Tsc deadline timer" +msgstr "Tsc 마감 타이머" + +#. /flag:aes/aes-ni +#: modules/devices/x86/x86_data.c:143 +msgctxt "x86-flag" +msgid "Advanced Encryption Standard (New Instructions)" +msgstr "고급 암호화 표준(새 지침)" + +#. /flag:xsave +#: modules/devices/x86/x86_data.c:144 +msgctxt "x86-flag" +msgid "Save Processor Extended States: also provides XGETBY,XRSTOR,XSETBY" +msgstr "프로세서 확장 상태 저장: XGETBY, XRSTOR, XSETBY도 제공" + +#. /flag:avx +#: modules/devices/x86/x86_data.c:145 +msgctxt "x86-flag" +msgid "Advanced Vector Extensions" +msgstr "고급 벡터 확장" + +#. /flag:f16c +#: modules/devices/x86/x86_data.c:146 +msgctxt "x86-flag" +msgid "16-bit fp conversions (CVT16)" +msgstr "16비트 fp 변환(CVT16)" + +#. /flag:rdrand +#: modules/devices/x86/x86_data.c:147 +msgctxt "x86-flag" +msgid "Read Random Number from hardware random number generator instruction" +msgstr "하드웨어 난수 생성기 명령어에서 난수 읽기" + +#. /flag:hypervisor +#: modules/devices/x86/x86_data.c:148 +msgctxt "x86-flag" +msgid "Running on a hypervisor" +msgstr "하이퍼바이저에서 실행" + +#. /Cyrix/Centaur-defined CPU features, CPUID level 0xC0000001 +#. /flag:rng +#: modules/devices/x86/x86_data.c:150 +msgctxt "x86-flag" +msgid "Random Number Generator present (xstore)" +msgstr "난수 생성기 존재(xstore)" + +#. /flag:rng_en +#: modules/devices/x86/x86_data.c:151 +msgctxt "x86-flag" +msgid "Random Number Generator enabled" +msgstr "난수 생성기 활성화됨" + +#. /flag:ace +#: modules/devices/x86/x86_data.c:152 +msgctxt "x86-flag" +msgid "on-CPU crypto (xcrypt)" +msgstr "CPU 암호화(xcrypt)" + +#. /flag:ace_en +#: modules/devices/x86/x86_data.c:153 +msgctxt "x86-flag" +msgid "on-CPU crypto enabled" +msgstr "on-CPU 암호화 활성화" + +#. /flag:ace2 +#: modules/devices/x86/x86_data.c:154 +msgctxt "x86-flag" +msgid "Advanced Cryptography Engine v2" +msgstr "고급 암호화 엔진 v2" + +#. /flag:ace2_en +#: modules/devices/x86/x86_data.c:155 +msgctxt "x86-flag" +msgid "ACE v2 enabled" +msgstr "ACE v2 활성화" + +#. /flag:phe +#: modules/devices/x86/x86_data.c:156 +msgctxt "x86-flag" +msgid "PadLock Hash Engine" +msgstr "PadLock 해시 엔진" + +#. /flag:phe_en +#: modules/devices/x86/x86_data.c:157 +msgctxt "x86-flag" +msgid "PHE enabled" +msgstr "PHE 활성화" + +#. /flag:pmm +#: modules/devices/x86/x86_data.c:158 +msgctxt "x86-flag" +msgid "PadLock Montgomery Multiplier" +msgstr "PadLock 몽고메리 승수" + +#. /flag:pmm_en +#: modules/devices/x86/x86_data.c:159 +msgctxt "x86-flag" +msgid "PMM enabled" +msgstr "PMM 활성화" + +#. /flag:lahf_lm +#: modules/devices/x86/x86_data.c:161 +msgctxt "x86-flag" +msgid "Load AH from Flags (LAHF) and Store AH into Flags (SAHF) in long mode" +msgstr "Long 모드에서 플래그(LAHF)에서 AH 로드 및 플래그(SAHF)에 AH 저장" + +#. /flag:cmp_legacy +#: modules/devices/x86/x86_data.c:162 +msgctxt "x86-flag" +msgid "If yes HyperThreading not valid" +msgstr "'예'인 경우 하이퍼스레딩이 유효하지 않음" + +#. /flag:svm +#: modules/devices/x86/x86_data.c:163 +msgctxt "x86-flag" +msgid "\"Secure virtual machine\": AMD-V" +msgstr "\"보안 가상 머신\": AMD-V" + +#. /flag:extapic +#: modules/devices/x86/x86_data.c:164 +msgctxt "x86-flag" +msgid "Extended APIC space" +msgstr "확장된 APIC 공간" + +#. /flag:cr8_legacy +#: modules/devices/x86/x86_data.c:165 +msgctxt "x86-flag" +msgid "CR8 in 32-bit mode" +msgstr "32비트 모드의 CR8" + +#. /flag:abm +#: modules/devices/x86/x86_data.c:166 +msgctxt "x86-flag" +msgid "Advanced Bit Manipulation" +msgstr "고급 비트 조작" + +#. /flag:sse4a +#: modules/devices/x86/x86_data.c:167 +msgctxt "x86-flag" +msgid "SSE-4A" +msgstr "SSE-4A" + +#. /flag:misalignsse +#: modules/devices/x86/x86_data.c:168 +msgctxt "x86-flag" +msgid "indicates if a general-protection exception (#GP) is generated when some legacy SSE instructions operate on unaligned data. Also depends on CR0 and Alignment Checking bit" +msgstr "일부 레거시 SSE 명령어가 정렬되지 않은 데이터에서 작동할 때 일반 보호 예외(#GP)가 생성되는지 여부를 나타냅니다. 또한 CR0 및 Alignment Checking 비트에 따라 다릅니다." + +#. /flag:3dnowprefetch +#: modules/devices/x86/x86_data.c:169 +msgctxt "x86-flag" +msgid "3DNow prefetch instructions" +msgstr "3DNow 프리페치 지침" + +#. /flag:osvw +#: modules/devices/x86/x86_data.c:170 +msgctxt "x86-flag" +msgid "indicates OS Visible Workaround, which allows the OS to work around processor errata." +msgstr "OS가 프로세서 정오표를 해결할 수 있도록 하는 OS Visible Workaround를 나타냅니다." + +#. /flag:ibs +#: modules/devices/x86/x86_data.c:171 +msgctxt "x86-flag" +msgid "Instruction Based Sampling" +msgstr "명령어 기반 샘플링" + +#. /flag:xop +#: modules/devices/x86/x86_data.c:172 +msgctxt "x86-flag" +msgid "extended AVX instructions" +msgstr "확장 AVX 명령어" + +#. /flag:skinit +#: modules/devices/x86/x86_data.c:173 +msgctxt "x86-flag" +msgid "SKINIT/STGI instructions" +msgstr "SKINIT/STGI 지침" + +#. /flag:wdt +#: modules/devices/x86/x86_data.c:174 +msgctxt "x86-flag" +msgid "Watchdog timer" +msgstr "워치독 타이머" + +#. /flag:lwp +#: modules/devices/x86/x86_data.c:175 +msgctxt "x86-flag" +msgid "Light Weight Profiling" +msgstr "경량 프로파일링" + +#. /flag:fma4 +#: modules/devices/x86/x86_data.c:176 +msgctxt "x86-flag" +msgid "4 operands MAC instructions" +msgstr "4 피연산자 MAC 명령어" + +#. /flag:tce +#: modules/devices/x86/x86_data.c:177 +msgctxt "x86-flag" +msgid "translation cache extension" +msgstr "번역 캐시 확장" + +#. /flag:nodeid_msr +#: modules/devices/x86/x86_data.c:178 +msgctxt "x86-flag" +msgid "NodeId MSR" +msgstr "노드 ID MSR" + +#. /flag:tbm +#: modules/devices/x86/x86_data.c:179 +msgctxt "x86-flag" +msgid "Trailing Bit Manipulation" +msgstr "후행 비트 조작" + +#. /flag:topoext +#: modules/devices/x86/x86_data.c:180 +msgctxt "x86-flag" +msgid "Topology Extensions CPUID leafs" +msgstr "토폴로지 확장 CPUID 리프" + +#. /flag:perfctr_core +#: modules/devices/x86/x86_data.c:181 +msgctxt "x86-flag" +msgid "Core Performance Counter Extensions" +msgstr "핵심 성능 카운터 확장" + +#. /flag:perfctr_nb +#: modules/devices/x86/x86_data.c:182 +msgctxt "x86-flag" +msgid "NB Performance Counter Extensions" +msgstr "NB 성능 카운터 확장" + +#. /flag:bpext +#: modules/devices/x86/x86_data.c:183 +msgctxt "x86-flag" +msgid "data breakpoint extension" +msgstr "데이터 중단점 확장" + +#. /flag:ptsc +#: modules/devices/x86/x86_data.c:184 +msgctxt "x86-flag" +msgid "performance time-stamp counter" +msgstr "성능 타임스탬프 카운터" + +#. /flag:perfctr_l2 +#: modules/devices/x86/x86_data.c:185 +msgctxt "x86-flag" +msgid "L2 Performance Counter Extensions" +msgstr "L2 성능 카운터 확장" + +#. /flag:mwaitx +#: modules/devices/x86/x86_data.c:186 +msgctxt "x86-flag" +msgid "MWAIT extension (MONITORX/MWAITX)" +msgstr "MWAIT 확장(MONITORX/MWAITX)" + +#. /flag:cpb +#: modules/devices/x86/x86_data.c:188 +msgctxt "x86-flag" +msgid "AMD Core Performance Boost" +msgstr "AMD 코어 성능 부스트" + +#. /flag:epb +#: modules/devices/x86/x86_data.c:189 +msgctxt "x86-flag" +msgid "IA32_ENERGY_PERF_BIAS support" +msgstr "IA32_ENERGY_PERF_BIAS 지원" + +#. /flag:hw_pstate +#: modules/devices/x86/x86_data.c:190 +msgctxt "x86-flag" +msgid "AMD HW-PState" +msgstr "AMD HW-P 상태" + +#. /flag:proc_feedback +#: modules/devices/x86/x86_data.c:191 +msgctxt "x86-flag" +msgid "AMD ProcFeedbackInterface" +msgstr "AMD ProcFeedback인터페이스" + +#. /flag:intel_pt +#: modules/devices/x86/x86_data.c:192 +msgctxt "x86-flag" +msgid "Intel Processor Tracing" +msgstr "인텔 프로세서 추적" + +#. /flag:tpr_shadow +#: modules/devices/x86/x86_data.c:194 +msgctxt "x86-flag" +msgid "Intel TPR Shadow" +msgstr "인텔 TPR 섀도우" + +#. /flag:vnmi +#: modules/devices/x86/x86_data.c:195 +msgctxt "x86-flag" +msgid "Intel Virtual NMI" +msgstr "인텔 가상 NMI" + +#. /flag:flexpriority +#: modules/devices/x86/x86_data.c:196 +msgctxt "x86-flag" +msgid "Intel FlexPriority" +msgstr "인텔 플렉스우선순위" + +#. /flag:ept +#: modules/devices/x86/x86_data.c:197 +msgctxt "x86-flag" +msgid "Intel Extended Page Table" +msgstr "인텔 확장 페이지 테이블" + +#. /flag:vpid +#: modules/devices/x86/x86_data.c:198 +msgctxt "x86-flag" +msgid "Intel Virtual Processor ID" +msgstr "인텔 가상 프로세서 ID" + +#. /flag:vmmcall +#: modules/devices/x86/x86_data.c:199 +msgctxt "x86-flag" +msgid "prefer VMMCALL to VMCALL" +msgstr "VMCALL보다 VMMCALL 선호" + +#. /flag:fsgsbase +#: modules/devices/x86/x86_data.c:201 +msgctxt "x86-flag" +msgid "{RD/WR}{FS/GS}BASE instructions" +msgstr "{RD/WR}{FS/GS}기본 지침" + +#. /flag:tsc_adjust +#: modules/devices/x86/x86_data.c:202 +msgctxt "x86-flag" +msgid "TSC adjustment MSR" +msgstr "TSC 조정 MSR" + +#. /flag:bmi1 +#: modules/devices/x86/x86_data.c:203 +msgctxt "x86-flag" +msgid "1st group bit manipulation extensions" +msgstr "첫 번째 그룹 비트 조작 확장" + +#. /flag:hle +#: modules/devices/x86/x86_data.c:204 +msgctxt "x86-flag" +msgid "Hardware Lock Elision" +msgstr "하드웨어 잠금 제거" + +#. /flag:avx2 +#: modules/devices/x86/x86_data.c:205 +msgctxt "x86-flag" +msgid "AVX2 instructions" +msgstr "AVX2 지침" + +#. /flag:smep +#: modules/devices/x86/x86_data.c:206 +msgctxt "x86-flag" +msgid "Supervisor Mode Execution Protection" +msgstr "감독자 모드 실행 보호" + +#. /flag:bmi2 +#: modules/devices/x86/x86_data.c:207 +msgctxt "x86-flag" +msgid "2nd group bit manipulation extensions" +msgstr "두 번째 그룹 비트 조작 확장" + +#. /flag:erms +#: modules/devices/x86/x86_data.c:208 +msgctxt "x86-flag" +msgid "Enhanced REP MOVSB/STOSB" +msgstr "향상된 REP MOVSB/STOSB" + +#. /flag:invpcid +#: modules/devices/x86/x86_data.c:209 +msgctxt "x86-flag" +msgid "Invalidate Processor Context ID" +msgstr "프로세서 컨텍스트 ID 무효화" + +#. /flag:rtm +#: modules/devices/x86/x86_data.c:210 +msgctxt "x86-flag" +msgid "Restricted Transactional Memory" +msgstr "제한된 트랜잭션 메모리" + +#. /flag:cqm +#: modules/devices/x86/x86_data.c:211 +msgctxt "x86-flag" +msgid "Cache QoS Monitoring" +msgstr "캐시 QoS 모니터링" + +#. /flag:mpx +#: modules/devices/x86/x86_data.c:212 +msgctxt "x86-flag" +msgid "Memory Protection Extension" +msgstr "메모리 보호 확장" + +#. /flag:avx512f +#: modules/devices/x86/x86_data.c:213 +msgctxt "x86-flag" +msgid "AVX-512 foundation" +msgstr "AVX-512 파운데이션" + +#. /flag:avx512dq +#: modules/devices/x86/x86_data.c:214 +msgctxt "x86-flag" +msgid "AVX-512 Double/Quad instructions" +msgstr "AVX-512 더블/쿼드 명령어" + +#. /flag:rdseed +#: modules/devices/x86/x86_data.c:215 +msgctxt "x86-flag" +msgid "The RDSEED instruction" +msgstr "RDSEED 명령어" + +#. /flag:adx +#: modules/devices/x86/x86_data.c:216 +msgctxt "x86-flag" +msgid "The ADCX and ADOX instructions" +msgstr "ADCX 및 ADOX 명령어" + +#. /flag:smap +#: modules/devices/x86/x86_data.c:217 +msgctxt "x86-flag" +msgid "Supervisor Mode Access Prevention" +msgstr "감독자 모드 접근 방지" + +#. /flag:clflushopt +#: modules/devices/x86/x86_data.c:218 +msgctxt "x86-flag" +msgid "CLFLUSHOPT instruction" +msgstr "CLFLUSHOPT 명령어" + +#. /flag:clwb +#: modules/devices/x86/x86_data.c:219 +msgctxt "x86-flag" +msgid "CLWB instruction" +msgstr "CLWB 명령" + +#. /flag:avx512pf +#: modules/devices/x86/x86_data.c:220 +msgctxt "x86-flag" +msgid "AVX-512 Prefetch" +msgstr "AVX-512 프리페치" + +#. /flag:avx512er +#: modules/devices/x86/x86_data.c:221 +msgctxt "x86-flag" +msgid "AVX-512 Exponential and Reciprocal" +msgstr "AVX-512 지수 및 역수" + +#. /flag:avx512cd +#: modules/devices/x86/x86_data.c:222 +msgctxt "x86-flag" +msgid "AVX-512 Conflict Detection" +msgstr "AVX-512 충돌 감지" + +#. /flag:sha_ni +#: modules/devices/x86/x86_data.c:223 +msgctxt "x86-flag" +msgid "SHA1/SHA256 Instruction Extensions" +msgstr "SHA1/SHA256 명령어 확장" + +#. /flag:avx512bw +#: modules/devices/x86/x86_data.c:224 +msgctxt "x86-flag" +msgid "AVX-512 Byte/Word instructions" +msgstr "AVX-512 바이트/워드 명령어" + +#. /flag:avx512vl +#: modules/devices/x86/x86_data.c:225 +msgctxt "x86-flag" +msgid "AVX-512 128/256 Vector Length extensions" +msgstr "AVX-512 128/256 벡터 길이 확장" + +#. /flag:xsaveopt +#: modules/devices/x86/x86_data.c:227 +msgctxt "x86-flag" +msgid "Optimized XSAVE" +msgstr "최적화된 XSAVE" + +#. /flag:xsavec +#: modules/devices/x86/x86_data.c:228 +msgctxt "x86-flag" +msgid "XSAVEC" +msgstr "" + +#. /flag:xgetbv1 +#: modules/devices/x86/x86_data.c:229 +msgctxt "x86-flag" +msgid "XGETBV with ECX = 1" +msgstr "ECX가 있는 XGETBV = 1" + +#. /flag:xsaves +#: modules/devices/x86/x86_data.c:230 +msgctxt "x86-flag" +msgid "XSAVES/XRSTORS" +msgstr "XSAVES/XRSTORS" + +#. /flag:cqm_llc +#: modules/devices/x86/x86_data.c:232 +msgctxt "x86-flag" +msgid "LLC QoS" +msgstr "LLC QoS" + +#. /flag:cqm_occup_llc +#: modules/devices/x86/x86_data.c:234 +msgctxt "x86-flag" +msgid "LLC occupancy monitoring" +msgstr "LLC 점유 모니터링" + +#. /flag:cqm_mbm_total +#: modules/devices/x86/x86_data.c:235 +msgctxt "x86-flag" +msgid "LLC total MBM monitoring" +msgstr "LLC 총 MBM 모니터링" + +#. /flag:cqm_mbm_local +#: modules/devices/x86/x86_data.c:236 +msgctxt "x86-flag" +msgid "LLC local MBM monitoring" +msgstr "LLC 로컬 MBM 모니터링" + +#. /flag:clzero +#: modules/devices/x86/x86_data.c:238 +msgctxt "x86-flag" +msgid "CLZERO instruction" +msgstr "CLZERO 명령" + +#. /flag:irperf +#: modules/devices/x86/x86_data.c:239 +msgctxt "x86-flag" +msgid "instructions retired performance counter" +msgstr "지침 폐기된 성능 카운터" + +#. /flag:dtherm +#: modules/devices/x86/x86_data.c:241 +msgctxt "x86-flag" +msgid "digital thermal sensor" +msgstr "" + +#. /flag:ida +#: modules/devices/x86/x86_data.c:242 +msgctxt "x86-flag" +msgid "Intel Dynamic Acceleration" +msgstr "인텔 동적 가속" + +#. /flag:arat +#: modules/devices/x86/x86_data.c:243 +msgctxt "x86-flag" +msgid "Always Running APIC Timer" +msgstr "항상 실행 중인 APIC 타이머" + +#. /flag:pln +#: modules/devices/x86/x86_data.c:244 +msgctxt "x86-flag" +msgid "Intel Power Limit Notification" +msgstr "인텔 전력 제한 알림" + +#. /flag:pts +#: modules/devices/x86/x86_data.c:245 +msgctxt "x86-flag" +msgid "Intel Package Thermal Status" +msgstr "" + +#. /flag:hwp +#: modules/devices/x86/x86_data.c:246 +msgctxt "x86-flag" +msgid "Intel Hardware P-states" +msgstr "인텔 하드웨어 P-상태" + +#. /flag:hwp_notify +#: modules/devices/x86/x86_data.c:247 +msgctxt "x86-flag" +msgid "HWP notification" +msgstr "HWP 알림" + +#. /flag:hwp_act_window +#: modules/devices/x86/x86_data.c:248 +msgctxt "x86-flag" +msgid "HWP Activity Window" +msgstr "HWP 활동 창" + +#. /flag:hwp_epp +#: modules/devices/x86/x86_data.c:249 +msgctxt "x86-flag" +msgid "HWP Energy Performance Preference" +msgstr "HWP 에너지 성능 선호도" + +#. /flag:hwp_pkg_req +#: modules/devices/x86/x86_data.c:250 +msgctxt "x86-flag" +msgid "HWP package-level request" +msgstr "HWP 패키지 수준 요청" + +#. /flag:npt +#: modules/devices/x86/x86_data.c:252 +msgctxt "x86-flag" +msgid "AMD Nested Page Table support" +msgstr "AMD 중첩 페이지 테이블 지원" + +#. /flag:lbrv +#: modules/devices/x86/x86_data.c:253 +msgctxt "x86-flag" +msgid "AMD LBR Virtualization support" +msgstr "AMD LBR 가상화 지원" + +#. /flag:svm_lock +#: modules/devices/x86/x86_data.c:254 +msgctxt "x86-flag" +msgid "AMD SVM locking MSR" +msgstr "AMD SVM 잠금 MSR" + +#. /flag:nrip_save +#: modules/devices/x86/x86_data.c:255 +msgctxt "x86-flag" +msgid "AMD SVM next_rip save" +msgstr "AMD SVM next_rip 저장" + +#. /flag:tsc_scale +#: modules/devices/x86/x86_data.c:256 +msgctxt "x86-flag" +msgid "AMD TSC scaling support" +msgstr "AMD TSC 확장 지원" + +#. /flag:vmcb_clean +#: modules/devices/x86/x86_data.c:257 +msgctxt "x86-flag" +msgid "AMD VMCB clean bits support" +msgstr "AMD VMCB 클린 비트 지원" + +#. /flag:flushbyasid +#: modules/devices/x86/x86_data.c:258 +msgctxt "x86-flag" +msgid "AMD flush-by-ASID support" +msgstr "AMD Flush-by-ASID 지원" + +#. /flag:decodeassists +#: modules/devices/x86/x86_data.c:259 +msgctxt "x86-flag" +msgid "AMD Decode Assists support" +msgstr "AMD 디코드 어시스트 지원" + +#. /flag:pausefilter +#: modules/devices/x86/x86_data.c:260 +msgctxt "x86-flag" +msgid "AMD filtered pause intercept" +msgstr "AMD 필터링된 일시 중지 인터셉트" + +#. /flag:pfthreshold +#: modules/devices/x86/x86_data.c:261 +msgctxt "x86-flag" +msgid "AMD pause filter threshold" +msgstr "AMD 일시 중지 필터 임계값" + +#. /flag:avic +#: modules/devices/x86/x86_data.c:262 +msgctxt "x86-flag" +msgid "Virtual Interrupt Controller" +msgstr "가상 인터럽트 컨트롤러" + +#. /flag:pku +#: modules/devices/x86/x86_data.c:264 +msgctxt "x86-flag" +msgid "Protection Keys for Userspace" +msgstr "사용자 공간에 대한 보호 키" + +#. /flag:ospke +#: modules/devices/x86/x86_data.c:265 +msgctxt "x86-flag" +msgid "OS Protection Keys Enable" +msgstr "OS 보호 키 활성화" + +#. /flag:overflow_recov +#: modules/devices/x86/x86_data.c:267 +msgctxt "x86-flag" +msgid "MCA overflow recovery support" +msgstr "MCA 오버플로 복구 지원" + +#. /flag:succor +#: modules/devices/x86/x86_data.c:268 +msgctxt "x86-flag" +msgid "uncorrectable error containment and recovery" +msgstr "수정 불가능한 오류 억제 및 복구" + +#. /flag:smca +#: modules/devices/x86/x86_data.c:269 +msgctxt "x86-flag" +msgid "Scalable MCA" +msgstr "확장 가능한 MCA" + +#. /bug:f00f +#: modules/devices/x86/x86_data.c:272 +msgctxt "x86-flag" +msgid "Intel F00F bug" +msgstr "인텔 F00F 버그" + +#. /bug:fdiv +#: modules/devices/x86/x86_data.c:273 +msgctxt "x86-flag" +msgid "FPU FDIV" +msgstr "FPU FDIV" + +#. /bug:coma +#: modules/devices/x86/x86_data.c:274 +msgctxt "x86-flag" +msgid "Cyrix 6x86 coma" +msgstr "" + +#. /bug:tlb_mmatch +#: modules/devices/x86/x86_data.c:275 +msgctxt "x86-flag" +msgid "AMD Erratum 383" +msgstr "" + +#. /bug:apic_c1e +#. /bug:amd_e400 +#: modules/devices/x86/x86_data.c:276 modules/devices/x86/x86_data.c:285 +msgctxt "x86-flag" +msgid "AMD Erratum 400" +msgstr "" + +#. /bug:11ap +#: modules/devices/x86/x86_data.c:277 +msgctxt "x86-flag" +msgid "Bad local APIC aka 11AP" +msgstr "잘못된 로컬 APIC(일명 11AP)" + +#. /bug:fxsave_leak +#: modules/devices/x86/x86_data.c:278 +msgctxt "x86-flag" +msgid "FXSAVE leaks FOP/FIP/FOP" +msgstr "FXSAVE 유출 FOP/FIP/FOP" + +#. /bug:clflush_monitor +#: modules/devices/x86/x86_data.c:279 +msgctxt "x86-flag" +msgid "AAI65, CLFLUSH required before MONITOR" +msgstr "AAI65, MONITOR 전에 CLFLUSH 필요" + +#. /bug:sysret_ss_attrs +#: modules/devices/x86/x86_data.c:280 +msgctxt "x86-flag" +msgid "SYSRET doesn't fix up SS attrs" +msgstr "SYSRET은 SS 속성을 수정하지 않습니다." + +#. /bug:espfix +#: modules/devices/x86/x86_data.c:281 +msgctxt "x86-flag" +msgid "IRET to 16-bit SS corrupts ESP/RSP high bits" +msgstr "16비트 SS에 대한 IRET는 ESP/RSP 상위 비트를 손상시킵니다." + +#. /bug:null_seg +#: modules/devices/x86/x86_data.c:282 +msgctxt "x86-flag" +msgid "Nulling a selector preserves the base" +msgstr "선택자를 Null하면 기본이 유지됩니다." + +#. /bug:swapgs_fence +#: modules/devices/x86/x86_data.c:283 +msgctxt "x86-flag" +msgid "SWAPGS without input dep on GS" +msgstr "GS에 입력 dep가 없는 SWAPGS" + +#. /bug:monitor +#: modules/devices/x86/x86_data.c:284 +msgctxt "x86-flag" +msgid "IPI required to wake up remote CPU" +msgstr "원격 CPU를 깨우기 위해 필요한 IPI" + +#. /bug:cpu_insecure & bug:cpu_meltdown +#: modules/devices/x86/x86_data.c:286 modules/devices/x86/x86_data.c:287 +msgctxt "x86-flag" +msgid "CPU is affected by meltdown attack and needs kernel page table isolation" +msgstr "CPU는 멜트다운 공격의 영향을 받고 커널 페이지 테이블 격리가 필요합니다." + +#. /bug:spectre_v1 +#: modules/devices/x86/x86_data.c:288 +msgctxt "x86-flag" +msgid "CPU is affected by Spectre variant 1 attack with conditional branches" +msgstr "CPU는 조건부 분기를 사용하는 Spectre 변형 1 공격의 영향을 받습니다." + +#. /bug:spectre_v2 +#: modules/devices/x86/x86_data.c:289 +msgctxt "x86-flag" +msgid "CPU is affected by Spectre variant 2 attack with indirect branches" +msgstr "CPU는 간접 분기를 사용한 Spectre 변형 2 공격의 영향을 받습니다." + +#. /bug:spec_store_bypass +#: modules/devices/x86/x86_data.c:290 +msgctxt "x86-flag" +msgid "CPU is affected by speculative store bypass attack" +msgstr "CPU는 투기적 저장소 우회 공격의 영향을 받습니다." + +#. /bug:l1tf +#: modules/devices/x86/x86_data.c:291 +msgctxt "x86-flag" +msgid "CPU is affected by L1 Terminal Fault" +msgstr "CPU는 L1 터미널 오류의 영향을 받습니다." + +#. /x86/kernel/cpu/powerflags.h +#. /flag:pm:ts +#: modules/devices/x86/x86_data.c:294 +msgctxt "x86-flag" +msgid "temperature sensor" +msgstr "온도 센서" + +#. /flag:pm:fid +#: modules/devices/x86/x86_data.c:295 +msgctxt "x86-flag" +msgid "frequency id control" +msgstr "주파수 ID 제어" + +#. /flag:pm:vid +#: modules/devices/x86/x86_data.c:296 +msgctxt "x86-flag" +msgid "voltage id control" +msgstr "전압 ID 제어" + +#. /flag:pm:ttp +#: modules/devices/x86/x86_data.c:297 +msgctxt "x86-flag" +msgid "thermal trip" +msgstr "" + +#. /flag:pm:tm +#: modules/devices/x86/x86_data.c:298 +msgctxt "x86-flag" +msgid "hardware thermal control" +msgstr "" + +#. /flag:pm:stc +#: modules/devices/x86/x86_data.c:299 +msgctxt "x86-flag" +msgid "software thermal control" +msgstr "" + +#. /flag:pm:100mhzsteps +#: modules/devices/x86/x86_data.c:300 +msgctxt "x86-flag" +msgid "100 MHz multiplier control" +msgstr "100MHz 승수 제어" + +#. /flag:pm:hwpstate +#: modules/devices/x86/x86_data.c:301 +msgctxt "x86-flag" +msgid "hardware P-state control" +msgstr "하드웨어 P-상태 제어" + +#. /flag:pm:cpb +#: modules/devices/x86/x86_data.c:302 +msgctxt "x86-flag" +msgid "core performance boost" +msgstr "코어 성능 향상" + +#. /flag:pm:eff_freq_ro +#: modules/devices/x86/x86_data.c:303 +msgctxt "x86-flag" +msgid "Readonly aperf/mperf" +msgstr "읽기 전용 aperf/mperf" + +#. /flag:pm:proc_feedback +#: modules/devices/x86/x86_data.c:304 +msgctxt "x86-flag" +msgid "processor feedback interface" +msgstr "프로세서 피드백 인터페이스" + +#. /flag:pm:acc_power +#: modules/devices/x86/x86_data.c:305 +msgctxt "x86-flag" +msgid "accumulated power mechanism" +msgstr "축적된 동력 메커니즘" + +#: modules/network.c:61 +msgid "Interfaces" +msgstr "인터페이스" + +#: modules/network.c:62 +msgid "IP Connections" +msgstr "IP 연결" + +#: modules/network.c:63 +msgid "Routing Table" +msgstr "라우팅 테이블" + +#: modules/network.c:64 modules/network.c:309 +msgid "ARP Table" +msgstr "ARP 테이블" + +#: modules/network.c:65 +msgid "DNS Servers" +msgstr "DNS 서버" + +#: modules/network.c:66 +msgid "Statistics" +msgstr "통계" + +#: modules/network.c:67 +msgid "Shared Directories" +msgstr "공유 디렉토리" + +#: modules/network.c:310 modules/network.c:332 modules/network.c:363 +#: modules/network/net.c:472 +msgid "IP Address" +msgstr "IP 주소" + +#: modules/network.c:310 +msgid "MAC Address" +msgstr "MAC 주소" + +#: modules/network.c:319 +msgid "SAMBA" +msgstr "삼바" + +#: modules/network.c:320 +msgid "NFS" +msgstr "NFS" + +#: modules/network.c:331 +msgid "Name Servers" +msgstr "네임서버" + +#: modules/network.c:346 +msgid "Connections" +msgstr "연결" + +#: modules/network.c:347 +msgid "Local Address" +msgstr "지역 주소" + +#: modules/network.c:347 +msgid "Foreign Address" +msgstr "해외 주소" + +#: modules/network.c:347 +msgid "State" +msgstr "상태" + +#: modules/network.c:363 +msgid "Sent" +msgstr "업로드" + +#: modules/network.c:363 +msgid "Received" +msgstr "다운로드" + +#: modules/network.c:379 +msgid "IP routing table" +msgstr "IP 라우팅 테이블" + +#: modules/network.c:380 +msgid "Destination/Gateway" +msgstr "대상/게이트웨이" + +#: modules/network.c:380 modules/network/net.c:473 +msgid "Mask" +msgstr "마스크" + +#: modules/network.c:408 +msgid "Network" +msgstr "네트워크" + +#: modules/network.c:441 +msgid "Gathers information about this computer's network connection" +msgstr "이 컴퓨터의 네트워크 연결에 대한 정보를 수집합니다." + +#: modules/network/net.c:72 +msgctxt "wi-op-mode" +msgid "Auto" +msgstr "자동" + +#: modules/network/net.c:73 +msgctxt "wi-op-mode" +msgid "Ad-Hoc" +msgstr "애드 혹" + +#: modules/network/net.c:74 +msgctxt "wi-op-mode" +msgid "Managed" +msgstr "관리" + +#: modules/network/net.c:75 +msgctxt "wi-op-mode" +msgid "Master" +msgstr "주인" + +#: modules/network/net.c:76 +msgctxt "wi-op-mode" +msgid "Repeater" +msgstr "중계기" + +#: modules/network/net.c:77 +msgctxt "wi-op-mode" +msgid "Secondary" +msgstr "보조" + +#: modules/network/net.c:78 +msgctxt "wi-op-mode" +msgid "(Unknown)" +msgstr "(알 수 없음)" + +#: modules/network/net.c:242 modules/network/net.c:262 +#: modules/network/net.c:270 +msgctxt "net-if-type" +msgid "Ethernet" +msgstr "이더넷" + +#: modules/network/net.c:243 +msgctxt "net-if-type" +msgid "Loopback" +msgstr "루프백" + +#: modules/network/net.c:244 +msgctxt "net-if-type" +msgid "Point-to-Point" +msgstr "p2p" + +#: modules/network/net.c:245 modules/network/net.c:246 +#: modules/network/net.c:247 modules/network/net.c:248 +#: modules/network/net.c:272 +msgctxt "net-if-type" +msgid "Wireless" +msgstr "무선" + +#: modules/network/net.c:249 +msgctxt "net-if-type" +msgid "Virtual Point-to-Point (TUN)" +msgstr "가상 p2p(TUN)" + +#: modules/network/net.c:250 +msgctxt "net-if-type" +msgid "Ethernet (TAP)" +msgstr "이더넷(TAP)" + +#: modules/network/net.c:251 +msgctxt "net-if-type" +msgid "Parallel Line Internet Protocol" +msgstr "병렬 회선 인터넷 프로토콜" + +#: modules/network/net.c:252 +msgctxt "net-if-type" +msgid "Infrared" +msgstr "적외선" + +#: modules/network/net.c:253 modules/network/net.c:271 +msgctxt "net-if-type" +msgid "Serial Line Internet Protocol" +msgstr "직렬 회선 인터넷 프로토콜" + +#: modules/network/net.c:254 +msgctxt "net-if-type" +msgid "Integrated Services Digital Network" +msgstr "통합 서비스 디지털 네트워크" + +#: modules/network/net.c:255 +msgctxt "net-if-type" +msgid "IPv6-over-IPv4 Tunnel" +msgstr "IPv6-over-IPv4 터널" + +#: modules/network/net.c:256 +msgctxt "net-if-type" +msgid "VMWare Virtual Network Interface (NAT)" +msgstr "VMWare 가상 네트워크 인터페이스(NAT)" + +#: modules/network/net.c:257 +msgctxt "net-if-type" +msgid "VMWare Virtual Network Interface" +msgstr "VMWare 가상 네트워크 인터페이스" + +#: modules/network/net.c:258 +msgctxt "net-if-type" +msgid "Personal Area Network (PAN)" +msgstr "개인 영역 네트워크(PAN)" + +#: modules/network/net.c:259 +msgctxt "net-if-type" +msgid "Bluetooth" +msgstr "블루투스" + +#: modules/network/net.c:260 +msgctxt "net-if-type" +msgid "Bridge Interface" +msgstr "브리지 인터페이스" + +#: modules/network/net.c:261 +msgctxt "net-if-type" +msgid "Hamachi Virtual Personal Network" +msgstr "Hamachi 가상 개인 네트워크" + +#: modules/network/net.c:263 +msgctxt "net-if-type" +msgid "Intermediate Functional Block" +msgstr "중급 기능 블록" + +#: modules/network/net.c:264 +msgctxt "net-if-type" +msgid "GRE Network Tunnel" +msgstr "GRE 네트워크 터널" + +#: modules/network/net.c:265 +msgctxt "net-if-type" +msgid "Mesh Network" +msgstr "메쉬 네트워크" + +#: modules/network/net.c:266 +msgctxt "net-if-type" +msgid "Wireless Master Interface" +msgstr "무선 마스터 인터페이스" + +#: modules/network/net.c:267 +msgctxt "net-if-type" +msgid "VirtualBox Virtual Network Interface" +msgstr "VirtualBox 가상 네트워크 인터페이스" + +#: modules/network/net.c:273 +msgctxt "net-if-type" +msgid "Wireless (WAN)" +msgstr "무선(WAN)" + +#: modules/network/net.c:275 +msgctxt "net-if-type" +msgid "(Unknown)" +msgstr "(알 수 없음)" + +#: modules/network/net.c:343 modules/network/net.c:353 +msgid "Network Interfaces" +msgstr "네트워크 인터페이스" + +#: modules/network/net.c:343 +msgid "None Found" +msgstr "찾을 수 없음" + +#: modules/network/net.c:409 +msgid "Network Adapter Properties" +msgstr "네트워크 어댑터 속성" + +#: modules/network/net.c:410 +msgid "Interface Type" +msgstr "인터페이스 유형" + +#: modules/network/net.c:411 +msgid "Hardware Address (MAC)" +msgstr "하드웨어 주소(MAC)" + +#: modules/network/net.c:415 +msgid "MTU" +msgstr "MTU" + +#: modules/network/net.c:416 +msgid "Transfer Details" +msgstr "전송 세부 정보" + +#: modules/network/net.c:417 +msgid "Bytes Received" +msgstr "수신된 바이트" + +#: modules/network/net.c:418 +msgid "Bytes Sent" +msgstr "보낸 바이트" + +#: modules/network/net.c:435 modules/network/net.c:457 +#: modules/network/net.c:458 +msgid "dBm" +msgstr "dBm" + +#: modules/network/net.c:435 +msgid "mW" +msgstr "mW" + +#: modules/network/net.c:449 +msgid "Wireless Properties" +msgstr "무선 속성" + +#: modules/network/net.c:450 +msgid "Network Name (SSID)" +msgstr "네트워크 이름(SSID)" + +#: modules/network/net.c:451 +msgid "Bit Rate" +msgstr "비트 전송률" + +#: modules/network/net.c:452 +msgid "Transmission Power" +msgstr "전송 전력" + +#: modules/network/net.c:455 +msgid "Link Quality" +msgstr "링크 품질" + +#: modules/network/net.c:456 +msgid "Signal / Noise" +msgstr "신호/노이즈" + +#: modules/network/net.c:471 +msgid "Internet Protocol (IPv4)" +msgstr "인터넷 프로토콜(IPv4)" + +#: modules/network/net.c:472 modules/network/net.c:473 +#: modules/network/net.c:475 +msgid "(Not set)" +msgstr "(설정되지 않음)" + +#: modules/network/net.c:474 +msgid "Broadcast Address" +msgstr "브로드캐스트 주소" diff --git a/po/pt.po b/po/pt.po new file mode 100644 index 00000000..1da9a204 --- /dev/null +++ b/po/pt.po @@ -0,0 +1,6124 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +# Translators: +# Hugo Carvalho , 2022. +# +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-10-24 15:16-0500\n" +"PO-Revision-Date: 2022-12-05 14:12+0000\n" +"Last-Translator: Hugo Carvalho \n" +"Language-Team: \n" +"Language: pt\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 3.2.2\n" + +#: hardinfo/cpu_util.c:30 +msgid "Little Endian" +msgstr "Little Endian" + +#: hardinfo/cpu_util.c:32 +msgid "Big Endian" +msgstr "Big Endian" + +#: hardinfo/cpu_util.c:184 hardinfo/cpu_util.c:195 modules/devices/gpu.c:200 +msgid "Frequency Scaling" +msgstr "Escala de frequência" + +#: hardinfo/cpu_util.c:185 modules/devices/gpu.c:201 +msgid "Minimum" +msgstr "Mínimo" + +#: hardinfo/cpu_util.c:185 hardinfo/cpu_util.c:186 hardinfo/cpu_util.c:187 +#: hardinfo/dt_util.c:589 modules/devices/gpu.c:201 modules/devices/gpu.c:202 +msgid "kHz" +msgstr "kHz" + +#: hardinfo/cpu_util.c:186 modules/devices/gpu.c:202 +msgid "Maximum" +msgstr "Máximo" + +#: hardinfo/cpu_util.c:187 +msgid "Current" +msgstr "Atual" + +#: hardinfo/cpu_util.c:188 modules/devices/gpu.c:203 +msgid "Transition Latency" +msgstr "Latência de transição" + +#: hardinfo/cpu_util.c:188 modules/devices/gpu.c:203 +msgid "ns" +msgstr "ns" + +#: hardinfo/cpu_util.c:189 +msgid "Governor" +msgstr "Governor" + +#: hardinfo/cpu_util.c:190 hardinfo/cpu_util.c:196 modules/devices/gpu.c:153 +#: modules/devices/pci.c:134 modules/devices/usb.c:136 +msgid "Driver" +msgstr "Driver" + +#: hardinfo/cpu_util.c:202 modules/computer.c:737 +#: modules/devices/arm/processor.c:256 modules/devices/x86/processor.c:284 +#: modules/devices/x86/processor.c:388 modules/devices/x86/processor.c:524 +msgid "(Not Available)" +msgstr "(Indisponível)" + +#: hardinfo/cpu_util.c:210 hardinfo/cpu_util.c:212 +msgid "Socket" +msgstr "Socket" + +#: hardinfo/cpu_util.c:215 hardinfo/cpu_util.c:217 modules/devices/gpu.c:149 +#: modules/devices/gpu.c:227 +msgid "Core" +msgstr "Núcleo" + +#: hardinfo/cpu_util.c:220 +msgid "Book" +msgstr "Livro" + +#: hardinfo/cpu_util.c:222 +msgid "Drawer" +msgstr "Gaveta" + +#: hardinfo/cpu_util.c:228 modules/devices/arm/processor.c:471 +#: modules/devices/x86/processor.c:750 +msgid "Topology" +msgstr "Topologia" + +#: hardinfo/cpu_util.c:229 +msgid "ID" +msgstr "ID" + +#: hardinfo/dmi_util.c:25 +msgid "BIOS Information" +msgstr "Informação da BIOS" + +#: hardinfo/dmi_util.c:26 modules/devices/parisc/processor.c:157 +msgid "System" +msgstr "Sistema" + +#: hardinfo/dmi_util.c:27 +msgid "Base Board" +msgstr "Placa base" + +#: hardinfo/dmi_util.c:28 modules/devices/dmi.c:53 +msgid "Chassis" +msgstr "Chassis" + +#: hardinfo/dmi_util.c:29 modules/computer.c:529 modules/computer.c:1000 +#: modules/devices/alpha/processor.c:87 modules/devices/arm/processor.c:341 +#: modules/devices.c:99 modules/devices/ia64/processor.c:159 +#: modules/devices/m68k/processor.c:83 modules/devices/mips/processor.c:74 +#: modules/devices/parisc/processor.c:154 modules/devices/ppc/processor.c:157 +#: modules/devices/riscv/processor.c:181 modules/devices/s390/processor.c:131 +#: modules/devices/sh/processor.c:83 modules/devices/sparc/processor.c:74 +#: modules/devices/x86/processor.c:646 +msgid "Processor" +msgstr "Processador" + +#: hardinfo/dmi_util.c:30 +msgid "Memory Controller" +msgstr "Controlador de memória" + +#: hardinfo/dmi_util.c:31 +msgid "Memory Module" +msgstr "Módulo de memória" + +#: hardinfo/dmi_util.c:32 modules/devices/parisc/processor.c:163 +#: modules/devices/x86/processor.c:662 +msgid "Cache" +msgstr "Cache" + +#: hardinfo/dmi_util.c:33 +msgid "Port Connector" +msgstr "Conector de porta" + +#: hardinfo/dmi_util.c:34 +msgid "System Slots" +msgstr "Slots do sistema" + +#: hardinfo/dmi_util.c:35 +msgid "On Board Devices" +msgstr "Dispositivos on board" + +#: hardinfo/dmi_util.c:36 +msgid "OEM Strings" +msgstr "OEM Strings" + +#: hardinfo/dmi_util.c:37 +msgid "System Configuration Options" +msgstr "Opções de configuração do sistema" + +#: hardinfo/dmi_util.c:38 +msgid "BIOS Language" +msgstr "Idioma do BIOS" + +#: hardinfo/dmi_util.c:39 +msgid "Group Associations" +msgstr "Associações de grupo" + +#: hardinfo/dmi_util.c:40 +msgid "System Event Log" +msgstr "Relatório de eventos do sistema" + +#: hardinfo/dmi_util.c:41 +msgid "Physical Memory Array" +msgstr "Conjunto de memória física" + +#: hardinfo/dmi_util.c:42 +msgid "Memory Device" +msgstr "Dispositivo de memória" + +#: hardinfo/dmi_util.c:43 +msgid "32-bit Memory Error" +msgstr "Erro de memória 32 bits" + +#: hardinfo/dmi_util.c:44 +msgid "Memory Array Mapped Address" +msgstr "Endereço do conjunto de memória mapeado" + +#: hardinfo/dmi_util.c:45 +msgid "Memory Device Mapped Address" +msgstr "Endereço do dispositivo de memória mapeado" + +#: hardinfo/dmi_util.c:46 +msgid "Built-in Pointing Device" +msgstr "Dispositivo apontador embutido" + +#: hardinfo/dmi_util.c:47 +msgid "Portable Battery" +msgstr "Bateria portátil" + +#: hardinfo/dmi_util.c:48 +msgid "System Reset" +msgstr "Reinício do sistema" + +#: hardinfo/dmi_util.c:49 +msgid "Hardware Security" +msgstr "Segurança do hardware" + +#: hardinfo/dmi_util.c:50 +msgid "System Power Controls" +msgstr "Controlos de energia do sistema" + +#: hardinfo/dmi_util.c:51 +msgid "Voltage Probe" +msgstr "Sondagem de voltagem" + +#: hardinfo/dmi_util.c:52 +msgid "Cooling Device" +msgstr "Dispositivo de refrigeração" + +#: hardinfo/dmi_util.c:53 +msgid "Temperature Probe" +msgstr "Sondagem de temperatura" + +#: hardinfo/dmi_util.c:54 +msgid "Electrical Current Probe" +msgstr "Sondagem de corrente elétrica" + +#: hardinfo/dmi_util.c:55 +msgid "Out-of-band Remote Access" +msgstr "Acesso remoto fora da banda" + +#: hardinfo/dmi_util.c:56 +msgid "Boot Integrity Services" +msgstr "Serviços de integridade de arranque" + +#: hardinfo/dmi_util.c:57 +msgid "System Boot" +msgstr "Arranque do sistema" + +#: hardinfo/dmi_util.c:58 +msgid "64-bit Memory Error" +msgstr "Erro de memória de 64 bits" + +#: hardinfo/dmi_util.c:59 +msgid "Management Device" +msgstr "Dispositivo de gestão" + +#: hardinfo/dmi_util.c:60 +msgid "Management Device Component" +msgstr "Componente do dispositivo de gestão" + +#: hardinfo/dmi_util.c:61 +msgid "Management Device Threshold Data" +msgstr "Dados do limiar do dispositivo de gestão" + +#: hardinfo/dmi_util.c:62 +msgid "Memory Channel" +msgstr "Canal de memória" + +#: hardinfo/dmi_util.c:63 +msgid "IPMI Device" +msgstr "Dispositivo IPMI" + +#: hardinfo/dmi_util.c:64 +msgid "Power Supply" +msgstr "Fonte de alimentação" + +#: hardinfo/dmi_util.c:65 +msgid "Additional Information" +msgstr "Informação adicional" + +#: hardinfo/dmi_util.c:66 +msgid "Onboard Device" +msgstr "Dispositivo onboard" + +#: hardinfo/dmi_util.c:226 +msgid "Invalid chassis type (0)" +msgstr "Tipo de chassi inválido (0)" + +#: hardinfo/dmi_util.c:227 hardinfo/dmi_util.c:228 +msgid "Unknown chassis type" +msgstr "Tipo de chassi desconhecido" + +#: hardinfo/dmi_util.c:229 +msgid "Desktop" +msgstr "Desktop" + +#: hardinfo/dmi_util.c:230 +msgid "Low-profile Desktop" +msgstr "Desktop de baixo perfil" + +#: hardinfo/dmi_util.c:231 +msgid "Pizza Box" +msgstr "Caixa de pizza" + +#: hardinfo/dmi_util.c:232 +msgid "Mini Tower" +msgstr "Mini torre" + +#: hardinfo/dmi_util.c:233 +msgid "Tower" +msgstr "Torre" + +#: hardinfo/dmi_util.c:234 +msgid "Portable" +msgstr "Portátil" + +#: hardinfo/dmi_util.c:235 modules/computer.c:391 modules/computer.c:400 +#: modules/computer.c:422 +msgid "Laptop" +msgstr "Laptop" + +#: hardinfo/dmi_util.c:236 +msgid "Notebook" +msgstr "Notebook" + +#: hardinfo/dmi_util.c:237 +msgid "Handheld" +msgstr "Handheld" + +#: hardinfo/dmi_util.c:238 +msgid "Docking Station" +msgstr "Estação de ancoragem" + +#: hardinfo/dmi_util.c:239 +msgid "All-in-one" +msgstr "All-in-one" + +#: hardinfo/dmi_util.c:240 +msgid "Subnotebook" +msgstr "Subnotebook" + +#: hardinfo/dmi_util.c:241 +msgid "Space-saving" +msgstr "Poupança de espaço" + +#: hardinfo/dmi_util.c:242 +msgid "Lunch Box" +msgstr "Lancheira" + +#: hardinfo/dmi_util.c:243 +msgid "Main Server Chassis" +msgstr "Chassis do servidor principal" + +#: hardinfo/dmi_util.c:244 +msgid "Expansion Chassis" +msgstr "Chassis de expansão" + +#: hardinfo/dmi_util.c:245 +msgid "Sub Chassis" +msgstr "Sub chassis" + +#: hardinfo/dmi_util.c:246 +msgid "Bus Expansion Chassis" +msgstr "Chassis de expansão de barramento" + +#: hardinfo/dmi_util.c:247 +msgid "Peripheral Chassis" +msgstr "Chassis periférico" + +#: hardinfo/dmi_util.c:248 +msgid "RAID Chassis" +msgstr "Chassis RAID" + +#: hardinfo/dmi_util.c:249 +msgid "Rack Mount Chassis" +msgstr "Chassis de montagem em rack" + +#: hardinfo/dmi_util.c:250 +msgid "Sealed-case PC" +msgstr "PC com caixa selada" + +#: hardinfo/dmi_util.c:251 +msgid "Multi-system" +msgstr "Multi-sistema" + +#: hardinfo/dmi_util.c:252 +msgid "CompactPCI" +msgstr "PCI compacto" + +#: hardinfo/dmi_util.c:253 +msgid "AdvancedTCA" +msgstr "TCA avançado" + +#: hardinfo/dmi_util.c:254 +msgid "Blade" +msgstr "Palheta" + +#: hardinfo/dmi_util.c:255 +msgid "Blade Enclosing" +msgstr "Juntada de palheta" + +#: hardinfo/dmi_util.c:256 +msgid "Tablet" +msgstr "Tablet" + +#: hardinfo/dmi_util.c:257 +msgid "Convertible" +msgstr "Conversível" + +#: hardinfo/dmi_util.c:258 +msgid "Detachable" +msgstr "Destacável" + +#: hardinfo/dmi_util.c:259 +msgid "IoT Gateway" +msgstr "Passagem IoT" + +#: hardinfo/dmi_util.c:260 +msgid "Embedded PC" +msgstr "PC embutido" + +#: hardinfo/dmi_util.c:261 +msgid "Mini PC" +msgstr "PC mini" + +#: hardinfo/dmi_util.c:262 +msgid "Stick PC" +msgstr "PC colocado" + +#: hardinfo/dt_util.c:1179 +msgid "phandle Map" +msgstr "Mapa de phandle" + +#: hardinfo/dt_util.c:1180 +msgid "Alias Map" +msgstr "Mapa de alias" + +#: hardinfo/dt_util.c:1181 +msgid "Symbol Map" +msgstr "Mapa de símbolo" + +#. / %d will be latest year of copyright +#: hardinfo/hardinfo.c:50 +#, c-format +msgid "" +"Copyright (C) 2003-%d L. A. F. Pereira. See COPYING for details.\n" +"\n" +msgstr "" +"Direitos de autor (C) 2003-%d L. A. F. Pereira. Leia COPYING para mais " +"detalhes.\n" +"\n" + +#: hardinfo/hardinfo.c:52 +#, c-format +msgid "" +"Compile-time options:\n" +" Release version: %s (%s)\n" +" BinReloc enabled: %s\n" +" Data prefix: %s\n" +" Library prefix: %s\n" +" Compiled for: %s\n" +msgstr "" +"Opções de tempo de compilação:\n" +" Versão de lançamento: %s (%s)\n" +" BinReloc ativado: %s\n" +" Prefixo de dados: %s\n" +" Prefixo da biblioteca: %s\n" +" Compilado por: %s\n" + +#: hardinfo/hardinfo.c:58 hardinfo/hardinfo.c:59 modules/computer.c:785 +#: modules/computer/modules.c:131 modules/computer/modules.c:132 +#: modules/devices/inputdevices.c:123 modules/devices/printers.c:138 +#: modules/devices/spd-decode.c:903 +msgid "Yes" +msgstr "Sim" + +#: hardinfo/hardinfo.c:59 modules/computer.c:785 modules/computer/modules.c:131 +#: modules/computer/modules.c:132 modules/devices/printers.c:138 +#: modules/devices/spd-decode.c:900 +msgid "No" +msgstr "Não" + +#: hardinfo/hardinfo.c:70 +#, c-format +msgid "" +"Failed to find runtime data.\n" +"\n" +"• Is HardInfo correctly installed?\n" +"• See if %s and %s exists and you have read permission." +msgstr "" +"Falha ao localizar dados de tempo de execução.\n" +"\n" +"• O HardInfo está corretamente instalado?\n" +"• Veja se o %s e %s existe e se tem permissão de leitura." + +#: hardinfo/hardinfo.c:77 +#, c-format +msgid "" +"Modules:\n" +"%-20s %-15s %-12s\n" +msgstr "" +"Módulos:\n" +"%-20s %-15s %-12s\n" + +#: hardinfo/hardinfo.c:78 +msgid "File Name" +msgstr "Nome do ficheiro" + +#: hardinfo/hardinfo.c:78 modules/computer.c:666 modules/computer.c:694 +#: modules/computer.c:815 modules/computer/languages.c:95 +#: modules/computer/modules.c:149 modules/devices/arm/processor.c:469 +#: modules/devices/dmi.c:37 modules/devices/dmi.c:48 modules/devices/gpu.c:233 +#: modules/devices/ia64/processor.c:160 modules/devices/inputdevices.c:111 +#: modules/devices/monitors.c:399 modules/devices/monitors.c:502 +#: modules/devices/sh/processor.c:84 modules/devices/x86/processor.c:749 +#: modules/network.c:332 +msgid "Name" +msgstr "Nome" + +#: hardinfo/hardinfo.c:78 modules/computer.c:347 modules/computer.c:572 +#: modules/computer.c:574 modules/computer.c:743 modules/computer/modules.c:151 +#: modules/devices/dmi.c:40 modules/devices/dmi.c:46 modules/devices/dmi.c:50 +#: modules/devices/dmi.c:56 modules/devices/firmware.c:105 +#: modules/devices/inputdevices.c:116 modules/devices/monitors.c:405 +msgid "Version" +msgstr "Versão" + +#: hardinfo/hardinfo.c:129 +#, c-format +msgid "Unknown benchmark ``%s'' or benchmark.so not loaded" +msgstr "Benchmark desconhecido `` 1%s'' ou benchmark.so não foi carregado" + +#: hardinfo/hardinfo.c:159 +msgid "Don't know what to do. Exiting." +msgstr "Não sabe o que fazer. A sair." + +#: hardinfo/usb_util.c:290 modules/devices/devicetree.c:91 +#: modules/devices/devicetree.c:92 modules/devices/monitors.c:407 +#: modules/devices/storage.c:246 +msgid "(None)" +msgstr "(Nenhum)" + +#: hardinfo/util.c:104 modules/computer/uptime.c:54 +#, c-format +msgid "%d day" +msgid_plural "%d days" +msgstr[0] "%d dia" +msgstr[1] "%d dias" + +#: hardinfo/util.c:105 modules/computer/uptime.c:55 +#, c-format +msgid "%d hour" +msgid_plural "%d hours" +msgstr[0] "%d hora" +msgstr[1] "%d horas" + +#: hardinfo/util.c:106 modules/computer/uptime.c:56 +#, c-format +msgid "%d minute" +msgid_plural "%d minutes" +msgstr[0] "%d minuto" +msgstr[1] "%d minutos" + +#: hardinfo/util.c:107 +#, c-format +msgid "%d second" +msgid_plural "%d seconds" +msgstr[0] "%d segundo" +msgstr[1] "%d segundos" + +#: hardinfo/util.c:128 +#, c-format +msgid "%.1f B" +msgstr "%.1f B" + +#: hardinfo/util.c:130 +#, c-format +msgid "%.1f KiB" +msgstr "%.1f KiB" + +#: hardinfo/util.c:132 +#, c-format +msgid "%.1f MiB" +msgstr "%.1f MiB" + +#: hardinfo/util.c:134 +#, c-format +msgid "%.1f GiB" +msgstr "%.1f GiB" + +#: hardinfo/util.c:136 +#, c-format +msgid "%.1f TiB" +msgstr "%.1f TiB" + +#: hardinfo/util.c:138 +#, c-format +msgid "%.1f PiB" +msgstr "%.1f PiB" + +#: hardinfo/util.c:361 +msgid "Error" +msgstr "Erro" + +#: hardinfo/util.c:361 hardinfo/util.c:377 +msgid "Warning" +msgstr "Aviso" + +#: hardinfo/util.c:376 +msgid "Fatal Error" +msgstr "Erro fatal" + +#: hardinfo/util.c:406 +msgid "creates a report and prints to standard output" +msgstr "cria um relatório e mostra pela saída padrão" + +#: hardinfo/util.c:412 +msgid "chooses a report format ([text], html)" +msgstr "escolhe um formato de relatório ([texto], html)" + +#: hardinfo/util.c:418 +msgid "run benchmark; requires benchmark.so to be loaded" +msgstr "executar benchmark; requer benchmark.so a ser carregado" + +#: hardinfo/util.c:424 +msgid "note attached to benchmark results" +msgstr "nota anexada aos resultados de benchmark" + +#: hardinfo/util.c:430 +msgid "benchmark result format ([short], conf, shell)" +msgstr "formato de resultado de benchmark ([short], conf, shell)" + +#: hardinfo/util.c:436 +msgid "" +"maximum number of benchmark results to include (-1 for no limit, default is " +"10)" +msgstr "" +"número máximo de resultados de benchmark a incluir (-1 para sem limite, " +"padrão é 10)" + +#: hardinfo/util.c:442 +msgid "lists modules" +msgstr "lista os módulos" + +#: hardinfo/util.c:448 +msgid "specify module to load" +msgstr "especificar módulo para carregar" + +#: hardinfo/util.c:454 +msgid "automatically load module dependencies" +msgstr "carregar automaticamente as dependências do módulo" + +#: hardinfo/util.c:461 +msgid "run in XML-RPC server mode" +msgstr "executar no modo do servidor XML-RPC" + +#: hardinfo/util.c:468 +msgid "shows program version and quit" +msgstr "executar no modo do servidor XML-RPC" + +#: hardinfo/util.c:474 +msgid "do not run benchmarks" +msgstr "não execute benchmarks" + +#: hardinfo/util.c:480 +msgid "show all details" +msgstr "mostrar todos os detalhes" + +#: hardinfo/util.c:485 +msgid "- System Profiler and Benchmark tool" +msgstr "- Ferramenta Profiler e Benchmark do sistema" + +#: hardinfo/util.c:495 +#, c-format +msgid "" +"Unrecognized arguments.\n" +"Try ``%s --help'' for more information.\n" +msgstr "" +"Argumentos não reconhecidos.\n" +"Experimente ``%s --help'' para mais informação\n" + +#: hardinfo/util.c:903 +#, c-format +msgid "Module \"%s\" depends on module \"%s\", load it?" +msgstr "Modulo \"%s\" depende do módulo \"%s\", carregar?" + +#: hardinfo/util.c:926 +#, c-format +msgid "Module \"%s\" depends on module \"%s\"." +msgstr "Modulo \"%s\" depende do módulo \"%s\"." + +#: hardinfo/util.c:971 +#, c-format +msgid "No module could be loaded. Check permissions on \"%s\" and try again." +msgstr "" +"Nenhum módulo pode ser carregado. Verifique as permissões on \"%s\" e tente " +"novamente." + +#: hardinfo/util.c:975 +msgid "" +"No module could be loaded. Please use hardinfo -l to list all available " +"modules and try again with a valid module list." +msgstr "" +"Nenhum módulo pode ser carregado. Por favor, use hardinfo -l para listar " +"todos os módulos disponíveis e tente novamente com uma lista de módulos " +"válida." + +#: hardinfo/util.c:1030 +#, c-format +msgid "Scanning: %s..." +msgstr "A analisar: %s..." + +#: hardinfo/util.c:1040 shell/shell.c:310 shell/shell.c:795 shell/shell.c:1962 +#: modules/benchmark.c:583 modules/benchmark.c:591 +msgid "Done." +msgstr "Concluído." + +#: hardinfo/vendor.c:440 modules/computer.c:573 modules/computer.c:765 +#: modules/computer/os.c:79 modules/computer/os.c:263 modules/computer/os.c:300 +#: modules/computer/os.c:499 modules/computer/os.c:569 modules/devices.c:359 +#: modules/devices.c:505 modules/devices/printers.c:99 +#: modules/devices/printers.c:106 modules/devices/printers.c:116 +#: modules/devices/printers.c:131 modules/devices/printers.c:140 +#: modules/devices/printers.c:243 modules/devices/spd-decode.c:312 +#: modules/devices/usb.c:146 +msgid "Unknown" +msgstr "Desconhecido" + +#: shell/callbacks.c:128 +#, c-format +msgid "" +"Written by %s\n" +"Licensed under %s" +msgstr "" +"Escrito por 1%s\n" +"Licenciado sob %s" + +#: shell/callbacks.c:142 +#, c-format +msgid "No about information is associated with the %s module." +msgstr "Não há informação associada com o módulo%s ." + +#: shell/callbacks.c:158 +msgid "Author:" +msgstr "Autor:" + +#: shell/callbacks.c:161 +msgid "Contributors:" +msgstr "Contribuidores:" + +#: shell/callbacks.c:167 +msgid "Based on work by:" +msgstr "Baseado no trabalho de:" + +#: shell/callbacks.c:168 +msgid "MD5 implementation by Colin Plumb (see md5.c for details)" +msgstr "Implementação do MD5 por Colin Plumb (veja md5.c para detalhes)" + +#: shell/callbacks.c:169 +msgid "SHA1 implementation by Steve Reid (see sha1.c for details)" +msgstr "Implementação de SHA1 por Steve Reid (veja sha1.c para detalhes)" + +#: shell/callbacks.c:170 +msgid "Blowfish implementation by Paul Kocher (see blowfich.c for details)" +msgstr "Implementação Blowfish por Paul Kocher (veja blowfich.c para detalhes)" + +#: shell/callbacks.c:171 +msgid "Raytracing benchmark by John Walker (see fbench.c for details)" +msgstr "Raytracing benchmark por John Walker (veja fbench.c para detalhes)" + +#: shell/callbacks.c:172 +msgid "FFT benchmark by Scott Robert Ladd (see fftbench.c for details)" +msgstr "" +"Referência de FFT por Scott Robert Ladd (veja fftbench.c para detalhes)" + +#: shell/callbacks.c:173 +msgid "Some code partly based on x86cpucaps by Osamu Kayasono" +msgstr "Algum código parcialmente baseado em x86cpucaps por Osamu Kayasono" + +#: shell/callbacks.c:174 +msgid "Vendor list based on GtkSysInfo by Pissens Sebastien" +msgstr "Lista de fornecedores baseada em GtkSysInfo por Pissens Sebastien" + +#: shell/callbacks.c:175 +msgid "DMI support based on code by Stewart Adam" +msgstr "Suporte DMI baseado em código por Stewart Adam" + +#: shell/callbacks.c:176 +msgid "SCSI support based on code by Pascal F. Martin" +msgstr "Suporte SCSI baseado em código por Pascal F. Martin" + +#: shell/callbacks.c:181 +msgid "Tango Project" +msgstr "Projeto Tango" + +#: shell/callbacks.c:182 +msgid "The GNOME Project" +msgstr "Projeto Gnome" + +#: shell/callbacks.c:183 +msgid "VMWare, Inc. (USB icon from VMWare Workstation 6)" +msgstr "VMWare, Inc. (Ícone USB do VMWare Workstation 6)" + +#: shell/callbacks.c:201 +msgid "System information and benchmark tool" +msgstr "Informações do sistema e ferramenta de benchmark" + +#: shell/callbacks.c:206 +msgid "" +"HardInfo is free software; you can redistribute it and/or modify it under " +"the terms of the GNU General Public License as published by the Free " +"Software Foundation, version 2.\n" +"\n" +"This program is distributed in the hope that it will be useful, but WITHOUT " +"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or " +"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for " +"more details.\n" +"\n" +"You should have received a copy of the GNU General Public License along with " +"this program; if not, write to the Free Software Foundation, Inc., 51 " +"Franklin St, Fifth Floor, Boston, MA 02110-1301 USA" +msgstr "" +"HardInfo é software livre; você pode redistribuí-lo e / ou modificá-lo sob " +"os termos da Licença Pública Geral GNU como publicada pela Free Software " +"Foundation, versão 2.\n" +"\n" +"Este programa é distribuído na esperança de que seja útil, mas SEM QUALQUER " +"GARANTIA; sem mesmo a garantia implícita de COMERCIALIZAÇÃO ou ADEQUAÇÃO A " +"UM DETERMINADO FIM. Veja a Licença Pública Geral GNU para mais detalhes.\n" +"\n" +"Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com este " +"programa; se não, escreva para a Free Software Foundation, Inc., 51 Franklin " +"Street, Fifth Floor, Boston, MA 02110-1301 EUA" + +#: shell/callbacks.c:221 +msgid "translator-credits" +msgstr "Hugo Carvalho " + +#: shell/menu.c:43 +msgid "_Information" +msgstr "_Informação" + +#: shell/menu.c:44 +msgid "_Remote" +msgstr "_Remoto" + +#: shell/menu.c:45 +msgid "_View" +msgstr "_Vista View" + +#: shell/menu.c:46 +msgid "_Help" +msgstr "_Ajuda" + +#: shell/menu.c:47 +msgid "About _Modules" +msgstr "Acerda do_Módulos" + +#: shell/menu.c:51 +msgid "Generate _Report" +msgstr "Gerar_relatório" + +#: shell/menu.c:56 +msgid "_Network Updater..." +msgstr "_Atualizador de rede ..." + +#: shell/menu.c:61 +msgid "_Open..." +msgstr "_Abrir..." + +#: shell/menu.c:66 +msgid "_Copy to Clipboard" +msgstr "_Copiar para área de transferência" + +#: shell/menu.c:67 +msgid "Copy to clipboard" +msgstr "Copiar para área de transferência" + +#: shell/menu.c:71 +msgid "_Refresh" +msgstr "_Atualizar" + +#: shell/menu.c:76 +msgid "_Open HardInfo Web Site" +msgstr "_Abrir site do HardInfo" + +#: shell/menu.c:81 +msgid "_Report bug" +msgstr "_Reportar bug" + +#: shell/menu.c:86 +msgid "_About HardInfo" +msgstr "_Acerca do Hardinfo" + +#: shell/menu.c:87 +msgid "Displays program version information" +msgstr "Exibe informação da versão do programa" + +#: shell/menu.c:91 +msgid "_Quit" +msgstr "_Sair" + +#: shell/menu.c:98 +msgid "_Side Pane" +msgstr "_Painel lateral" + +#: shell/menu.c:99 +msgid "Toggles side pane visibility" +msgstr "Alterna a visibilidade do painel lateral" + +#: shell/menu.c:102 +msgid "_Toolbar" +msgstr "_Barra de ferramentas" + +#: shell/report.c:769 shell/report.c:777 +msgid "Save File" +msgstr "Guardar ficheiro" + +#: shell/report.c:772 shell/report.c:1243 shell/syncmanager.c:748 +msgid "_Cancel" +msgstr "_Cancelar" + +#: shell/report.c:774 +msgid "_Save" +msgstr "_Guardar" + +#: shell/report.c:943 +msgid "Cannot create ReportContext. Programming bug?" +msgstr "Não é possível criar ReportContext. Erro de programação?" + +#: shell/report.c:962 +msgid "Open the report with your web browser?" +msgstr "Abrir o relatório com o seu navegador da web?" + +#: shell/report.c:965 +msgid "_No" +msgstr "_Não" + +#: shell/report.c:966 +msgid "_Open" +msgstr "_Abrir" + +#: shell/report.c:996 +msgid "Generating report..." +msgstr "A gerar relatório ..." + +#: shell/report.c:1006 +msgid "Report saved." +msgstr "Relatório guardado." + +#: shell/report.c:1008 +msgid "Error while creating the report." +msgstr "Erro ao criar o relatório." + +#: shell/report.c:1110 +msgid "Generate Report" +msgstr "Gerar relatório" + +#: shell/report.c:1135 +msgid "" +"Generate Report\n" +"Please choose the information that you wish to view in your report:" +msgstr "" +"Gerar relatório\n" +"Escolha a informação que quer visualizar no seu relatório:" + +#: shell/report.c:1207 +msgid "Select _None" +msgstr "Selecionar_Nenhuma" + +#: shell/report.c:1218 +msgid "Select _All" +msgstr "Selecionar_tudo" + +#: shell/report.c:1253 +msgid "_Generate" +msgstr "_Gerar" + +#: shell/shell.c:407 +#, c-format +msgid "%s - System Information" +msgstr "%s - Informação do sistema" + +#: shell/shell.c:412 +msgid "System Information" +msgstr "Informações do sistema" + +#: shell/shell.c:782 +msgid "Loading modules..." +msgstr "A carregar módulos ..." + +#: shell/shell.c:1828 +#, c-format +msgid "%s → Summary" +msgstr "%s → Resumo" + +#: shell/shell.c:1936 +msgid "Updating..." +msgstr "A atualizar..." + +#: shell/syncmanager.c:69 +msgid "" +"Synchronize with Central Database\n" +"The following information may be synchronized with the HardInfo central " +"database." +msgstr "" +"Sincronizar com a base de dados\n" +"A informação seguinte pode ser sincronizada com a base de dados central do " +"HardInfo." + +#: shell/syncmanager.c:72 +msgid "" +"Synchronizing\n" +"This may take some time." +msgstr "" +"A sincronizar\n" +"Isto pode demorar um pouco." + +#: shell/syncmanager.c:132 +msgid "" +"HardInfo was compiled without libsoup support. (Network Updater requires it.)" +msgstr "" +"O HardInfo foi compilado sem suporte ao libsoup. (Atualizador de rede requer " +"isso.)" + +#: shell/syncmanager.c:161 shell/syncmanager.c:189 +#, c-format +msgid "%s (error #%d)" +msgstr "%s (erro #%d)" + +#: shell/syncmanager.c:170 shell/syncmanager.c:198 +msgid "Could not parse XML-RPC response" +msgstr "Não foi possível analisar a resposta do XML-RPC" + +#: shell/syncmanager.c:280 +#, c-format +msgid "" +"Server says it supports API version %d, but this version of HardInfo only " +"supports API version %d." +msgstr "" +"Servidor diz que suporta a versão da API ,%d mas esta versão do HardInfo " +"suporta apenas a versão da API %d." + +#: shell/syncmanager.c:375 +msgid "Contacting HardInfo Central Database" +msgstr "Entrando em contato com o banco de dados central do HardInfo" + +#: shell/syncmanager.c:376 +msgid "Cleaning up" +msgstr "Limpar" + +#: shell/syncmanager.c:493 +msgid "(canceled)" +msgstr "(cancelado)" + +#: shell/syncmanager.c:510 +msgid "(failed)" +msgstr "(falhou)" + +#: shell/syncmanager.c:521 +#, c-format +msgid "" +"Failed while performing \"%s\". Please file a bug report if this problem " +"persists. (Use the Help→Report bug option.)\n" +"\n" +"Details: %s" +msgstr "" +"Falha ao executar \"%s\". Por favor arquive um relatório de bug se este " +"problema persistir. (Use a opção Ajuda → Reportar erro.)\n" +"\n" +"Detalhes: %s" + +#: shell/syncmanager.c:530 +#, c-format +msgid "" +"Failed while performing \"%s\". Please file a bug report if this problem " +"persists. (Use the Help→Report bug option.)" +msgstr "" +"Falha ao executar \"%s\". Por favor arquive um relatório de bug se este " +"problema persistir. (Use a opção Ajuda → Reportar erro.)" + +#: shell/syncmanager.c:658 +msgid "Network Updater" +msgstr "Atualizador de rede" + +#: shell/syncmanager.c:757 +msgid "_Synchronize" +msgstr "_Sincronizar" + +#: modules/benchmark/benches.c:82 +msgid "CPU Blowfish (Single-thread)" +msgstr "CPU Blowfish (Processamento unitário)" + +#: modules/benchmark/benches.c:84 +msgid "CPU Blowfish (Multi-thread)" +msgstr "CPU Blowfish (Processamento múltiplo)" + +#: modules/benchmark/benches.c:86 +msgid "CPU Blowfish (Multi-core)" +msgstr "CPU Blowfish (Núcleo múltiplo)" + +#: modules/benchmark/benches.c:88 +msgid "CPU Zlib" +msgstr "CPU Zlib" + +#: modules/benchmark/benches.c:90 +msgid "CPU CryptoHash" +msgstr "CPU CryptoHash" + +#: modules/benchmark/benches.c:92 +msgid "CPU Fibonacci" +msgstr "CPU Fibonacci" + +#: modules/benchmark/benches.c:94 +msgid "CPU N-Queens" +msgstr "CPU N-Queens" + +#: modules/benchmark/benches.c:96 +msgid "FPU FFT" +msgstr "FPU FFT" + +#: modules/benchmark/benches.c:98 +msgid "FPU Raytracing" +msgstr "Raytracing de FPU" + +#: modules/benchmark/benches.c:100 +msgid "SysBench CPU (Single-thread)" +msgstr "SysBench CPU (Processamento unitário)" + +#: modules/benchmark/benches.c:102 +msgid "SysBench CPU (Multi-thread)" +msgstr "SysBench (Processamento múltiplo)" + +#: modules/benchmark/benches.c:104 +msgid "SysBench CPU (Four threads)" +msgstr "CPU SysBench (quatro threads)" + +#: modules/benchmark/benches.c:106 +msgid "SysBench Memory (Single-thread)" +msgstr "Memória SysBench (thread-único)" + +#: modules/benchmark/benches.c:108 +msgid "SysBench Memory (Two threads)" +msgstr "Memória SysBench (dois threads)" + +#: modules/benchmark/benches.c:110 +msgid "SysBench Memory" +msgstr "SysBench Memória" + +#: modules/benchmark/benches.c:113 +msgid "GPU Drawing" +msgstr "Desenho de GPU" + +#: modules/benchmark/benches.c:126 +msgid "" +"Alexey Kopytov's sysbench is required.\n" +"Results in events/second. Higher is better." +msgstr "" +"sysbench de Alexey Kopytov é requerido.\n" +"Resultados em eventos/segundo. Maior é melhor." + +#: modules/benchmark/benches.c:132 +msgid "" +"Alexey Kopytov's sysbench is required.\n" +"Results in MiB/second. Higher is better." +msgstr "" +"sysbench de Alexey Kopytov é requerido.\n" +"Resultados em MiB/segundo. Maior é melhor." + +#: modules/benchmark/benches.c:136 +msgid "Results in MiB/second. Higher is better." +msgstr "Resultados em MiB / segundo. Mais alto é melhor." + +#: modules/benchmark/benches.c:143 +msgid "Results in HIMarks. Higher is better." +msgstr "Resultados em HIMarks. Mais alto é melhor." + +#: modules/benchmark/benches.c:149 +msgid "Results in seconds. Lower is better." +msgstr "Resultados em segundos. Menor é melhor." + +#. /or modify +#. * it under the terms of the GNU General Public License as published by +#. * the Free Software Foundation, version 2. +#. * +#. * This program is distributed in the hope that it will be useful, +#. * but WITHOUT ANY WARRANTY; without even the implied warranty of +#. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +#. * GNU General Public License for more details. +#. * +#. * You should have received a copy of the GNU General Public License +#. * along with this program; if not, write to the Free Software +#. * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +#. +#. / Used for an unknown value. Having it in only one place cleans up the .po line references +#: modules/benchmark/bench_results.c:22 modules/computer.c:41 +#: modules/computer/display.c:41 modules/computer/display.c:58 +#: modules/computer/os.c:286 modules/computer/os.c:346 modules/devices.c:488 +#: modules/devices/dmi_memory.c:52 modules/devices/dmi_memory.c:53 +#: modules/devices/dmi_memory.c:579 modules/devices/dmi_memory.c:719 +#: modules/devices/dmi_memory.c:855 modules/devices/gpu.c:42 +#: modules/devices/gpu.c:58 modules/devices/gpu.c:112 modules/devices/gpu.c:120 +#: modules/devices/gpu.c:154 modules/devices/gpu.c:155 +#: modules/devices/gpu.c:176 modules/devices/monitors.c:27 +#: modules/devices/monitors.c:28 modules/devices/monitors.c:153 +#: modules/devices/monitors.c:162 modules/devices/pci.c:25 +#: modules/devices/pci.c:135 modules/devices/pci.c:136 +#: modules/devices/spd-decode.c:306 modules/devices/spd-decode.c:307 +#: modules/devices/spd-decode.c:310 modules/devices/spd-decode.c:311 +#: modules/devices/spd-decode.c:914 modules/devices/spd-decode.c:915 +#: modules/devices/storage.c:247 modules/devices/storage.c:309 +#: modules/devices/usb.c:28 modules/network/net.c:437 includes/cpu_util.h:11 +msgid "(Unknown)" +msgstr "(Desconhecido)" + +#: modules/benchmark/bench_results.c:49 modules/benchmark/bench_results.c:330 +#: modules/devices/alpha/processor.c:90 modules/devices/arm/processor.c:290 +#: modules/devices/arm/processor.c:303 modules/devices/arm/processor.c:345 +#: modules/devices/arm/processor.c:500 modules/devices.c:325 +#: modules/devices.c:333 modules/devices.c:361 modules/devices/gpu.c:115 +#: modules/devices/gpu.c:117 modules/devices/gpu.c:123 +#: modules/devices/gpu.c:125 modules/devices/gpu.c:179 +#: modules/devices/gpu.c:181 modules/devices/ia64/processor.c:167 +#: modules/devices/ia64/processor.c:196 modules/devices/m68k/processor.c:87 +#: modules/devices/mips/processor.c:77 modules/devices/parisc/processor.c:158 +#: modules/devices/parisc/processor.c:191 modules/devices/ppc/processor.c:160 +#: modules/devices/ppc/processor.c:187 modules/devices/riscv/processor.c:186 +#: modules/devices/riscv/processor.c:214 modules/devices/s390/processor.c:160 +#: modules/devices/sh/processor.c:87 modules/devices/sh/processor.c:88 +#: modules/devices/sh/processor.c:89 modules/devices/x86/processor.c:318 +#: modules/devices/x86/processor.c:331 modules/devices/x86/processor.c:657 +#: modules/devices/x86/processor.c:780 +msgid "MHz" +msgstr "MHz" + +#: modules/benchmark/bench_results.c:396 modules/benchmark/bench_results.c:495 +msgid "kiB" +msgstr "kIB" + +#: modules/benchmark/bench_results.c:403 modules/benchmark/bench_results.c:453 +#, c-format +msgid "%d-bit" +msgstr "%d-bit" + +#: modules/benchmark/bench_results.c:422 modules/benchmark/bench_results.c:477 +msgid "Benchmark Result" +msgstr "Resultado de referência" + +#: modules/benchmark/bench_results.c:423 modules/benchmark/bench_results.c:479 +msgid "Threads" +msgstr "Tópicos" + +#: modules/benchmark/bench_results.c:424 modules/benchmark/bench_results.c:481 +msgid "Elapsed Time" +msgstr "Tempo gasto" + +#: modules/benchmark/bench_results.c:424 modules/benchmark/bench_results.c:481 +msgid "seconds" +msgstr "segundos" + +#: modules/benchmark/bench_results.c:425 modules/computer/languages.c:101 +#: modules/devices/arm/processor.c:355 modules/devices/gpu.c:147 +#: modules/devices/ia64/processor.c:166 modules/devices/pci.c:132 +#: modules/devices/ppc/processor.c:159 +msgid "Revision" +msgstr "Revisão" + +#: modules/benchmark/bench_results.c:426 modules/benchmark/bench_results.c:482 +msgid "Extra Information" +msgstr "Informação extra" + +#: modules/benchmark/bench_results.c:427 modules/benchmark/bench_results.c:483 +msgid "User Note" +msgstr "Nota de utilizador" + +#: modules/benchmark/bench_results.c:429 modules/benchmark/bench_results.c:485 +msgid "Note" +msgstr "Nota" + +#: modules/benchmark/bench_results.c:430 modules/benchmark/bench_results.c:486 +msgid "" +"This result is from an old version of HardInfo. Results might not be " +"comparable to current version. Some details are missing." +msgstr "" +"Este resultado é de uma versão antiga do HardInfo. Os resultados não devem " +"ser comparados com os da versão atual. Alguns detalhes estão faltando." + +#: modules/benchmark/bench_results.c:431 modules/benchmark/bench_results.c:487 +#: modules/devices/devicetree/pmac_data.c:81 modules/devices/sh/processor.c:85 +msgid "Machine" +msgstr "Máquina" + +#: modules/benchmark/bench_results.c:432 modules/benchmark/bench_results.c:488 +#: modules/devices/devicetree.c:208 modules/devices/dmi.c:47 +msgid "Board" +msgstr "Placa" + +#: modules/benchmark/bench_results.c:433 modules/benchmark/bench_results.c:489 +msgid "CPU Name" +msgstr "Nome da CPU" + +#: modules/benchmark/bench_results.c:434 modules/benchmark/bench_results.c:490 +msgid "CPU Description" +msgstr "Descrição da CPU" + +#: modules/benchmark/bench_results.c:435 modules/benchmark/bench_results.c:491 +#: modules/benchmark.c:442 +msgid "CPU Config" +msgstr "Configurações da CPU" + +#: modules/benchmark/bench_results.c:436 modules/benchmark/bench_results.c:492 +msgid "Threads Available" +msgstr "Tópicos disponíveis" + +#: modules/benchmark/bench_results.c:437 modules/benchmark/bench_results.c:493 +msgid "GPU" +msgstr "GPU" + +#: modules/benchmark/bench_results.c:438 modules/benchmark/bench_results.c:494 +#: modules/computer.c:542 +msgid "OpenGL Renderer" +msgstr "Renderizador OpenGL" + +#: modules/benchmark/bench_results.c:439 modules/benchmark/bench_results.c:495 +#: modules/computer.c:123 modules/computer.c:531 modules/computer.c:1000 +#: modules/devices/gpu.c:150 +msgid "Memory" +msgstr "Memória" + +#: modules/benchmark/bench_results.c:440 modules/benchmark/bench_results.c:496 +msgid "Pointer Size" +msgstr "Tamanho do ponteiro" + +#: modules/benchmark/bench_results.c:478 +msgid "Benchmark" +msgstr "Referência" + +#: modules/benchmark/bench_results.c:480 modules/devices/dmi_memory.c:879 +#: modules/devices/firmware.c:246 modules/devices/monitors.c:492 +#: modules/devices/x86/processor.c:691 +msgid "Result" +msgstr "Resultado" + +#: modules/benchmark/bench_results.c:498 +msgid "Handles" +msgstr "Alças" + +#: modules/benchmark/bench_results.c:499 +msgid "mid" +msgstr "mid" + +#: modules/benchmark/bench_results.c:500 +msgid "cfg_val" +msgstr "cfg_val" + +#: modules/benchmark.c:442 +msgid "Results" +msgstr "Resultados" + +#: modules/benchmark.c:442 modules/devices/sparc/processor.c:75 +msgid "CPU" +msgstr "CPU" + +#: modules/benchmark.c:513 +#, c-format +msgid "Benchmarking: %s." +msgstr "Benchmarking: %s." + +#: modules/benchmark.c:527 +msgid "Benchmarking. Please do not move your mouse or press any keys." +msgstr "A avaliar o desempenho. Não mova o rato ou prima qualquer tecla." + +#: modules/benchmark.c:530 +msgid "Cancel" +msgstr "Cancelar" + +#: modules/benchmark.c:601 +msgid "Benchmarks" +msgstr "Benchmarks" + +#: modules/benchmark.c:619 +msgid "Perform tasks and compare with other systems" +msgstr "Execute tarefas e compare com outros sistemas" + +#: modules/benchmark.c:730 +msgid "Send benchmark results" +msgstr "Enviar resultados de benchmark" + +#: modules/benchmark.c:735 +msgid "Receive benchmark results" +msgstr "Receber resultados de benchmark" + +#: modules/computer/alsa.c:26 modules/computer.c:546 +msgid "Audio Devices" +msgstr "Dispositivos de áudio" + +#: modules/computer/alsa.c:34 +msgid "Audio Adapter" +msgstr "Adaptador de áudio" + +#: modules/computer.c:80 modules/devices/firmware.c:104 +msgid "Summary" +msgstr "Resumo" + +#: modules/computer.c:81 modules/computer.c:534 modules/computer.c:999 +msgid "Operating System" +msgstr "Sistema operacional" + +#: modules/computer.c:82 +msgid "Security" +msgstr "Segurança" + +#: modules/computer.c:83 modules/devices/gpu.c:155 modules/devices/pci.c:136 +msgid "Kernel Modules" +msgstr "Módulos do kernel" + +#: modules/computer.c:84 modules/computer.c:678 +msgid "Boots" +msgstr "Boots" + +#: modules/computer.c:85 +msgid "Languages" +msgstr "Idiomas" + +#: modules/computer.c:86 +msgid "Memory Usage" +msgstr "Uso de memória" + +#: modules/computer.c:87 +msgid "Filesystems" +msgstr "Sistema de arquivos" + +#: modules/computer.c:88 modules/computer.c:539 +msgid "Display" +msgstr "Ecrã" + +#: modules/computer.c:89 modules/computer/environment.c:32 +msgid "Environment Variables" +msgstr "Variáveis do ambiente" + +#: modules/computer.c:91 +msgid "Development" +msgstr "Desenvolvimento" + +#: modules/computer.c:93 modules/computer.c:802 +msgid "Users" +msgstr "Utilizadores" + +#: modules/computer.c:94 +msgid "Groups" +msgstr "Grupos" + +#: modules/computer.c:125 +#, c-format +msgid "%dMB (%dMB used)" +msgstr "%dMB (%dMB usado)" + +#: modules/computer.c:127 modules/computer.c:594 +msgid "Uptime" +msgstr "Tempo de atividade" + +#: modules/computer.c:129 modules/computer.c:536 +msgid "Date/Time" +msgstr "Data hora" + +#: modules/computer.c:134 modules/computer.c:595 +msgid "Load Average" +msgstr "Carga média" + +#: modules/computer.c:247 +msgid "Scripting Languages" +msgstr "Idiomas de script" + +#: modules/computer.c:248 +msgid "Gambas3 (gbr3)" +msgstr "Gambas3 (gbr3)" + +#: modules/computer.c:249 +msgid "Python (default)" +msgstr "Python (padrão)" + +#: modules/computer.c:250 +msgid "Python2" +msgstr "Python2" + +#: modules/computer.c:251 +msgid "Python3" +msgstr "Python3" + +#: modules/computer.c:252 +msgid "Perl" +msgstr "Perl" + +#: modules/computer.c:253 +msgid "Perl6 (VM)" +msgstr "Perl6 (VM)" + +#: modules/computer.c:254 +msgid "Perl6" +msgstr "Perl6" + +#: modules/computer.c:255 +msgid "PHP" +msgstr "PHP" + +#: modules/computer.c:256 +msgid "Ruby" +msgstr "Rubi" + +#: modules/computer.c:257 +msgid "Bash" +msgstr "Bash" + +#: modules/computer.c:258 +msgid "JavaScript (Node.js)" +msgstr "JavaScript (Node.js)" + +#: modules/computer.c:259 +msgid "awk" +msgstr "awk" + +#: modules/computer.c:260 +msgid "Compilers" +msgstr "Compiladores" + +#: modules/computer.c:261 +msgid "C (GCC)" +msgstr "C (GCC)" + +#: modules/computer.c:262 +msgid "C (Clang)" +msgstr "C (Clang)" + +#: modules/computer.c:263 +msgid "D (dmd)" +msgstr "D (dmd)" + +#: modules/computer.c:264 +msgid "Gambas3 (gbc3)" +msgstr "Gambas3 (gbc3)" + +#: modules/computer.c:265 +msgid "Java" +msgstr "Java" + +#: modules/computer.c:266 +msgid "C♯ (mcs)" +msgstr "C♯ (mcs)" + +#: modules/computer.c:267 +msgid "Vala" +msgstr "Vala" + +#: modules/computer.c:268 +msgid "Haskell (GHC)" +msgstr "Haskell (GHC)" + +#: modules/computer.c:269 +msgid "FreePascal" +msgstr "FreePascal" + +#: modules/computer.c:270 +msgid "Go" +msgstr "Vai" + +#: modules/computer.c:271 +msgid "Rust" +msgstr "Rust" + +#: modules/computer.c:272 +msgid "Tools" +msgstr "Ferramentas" + +#: modules/computer.c:273 +msgid "make" +msgstr "fazer" + +#: modules/computer.c:274 +msgid "ninja" +msgstr "ninja" + +#: modules/computer.c:275 +msgid "GDB" +msgstr "GDB" + +#: modules/computer.c:276 +msgid "LLDB" +msgstr "LLDB" + +#: modules/computer.c:277 +msgid "strace" +msgstr "strace" + +#: modules/computer.c:278 +msgid "valgrind" +msgstr "valgrind" + +#: modules/computer.c:279 +msgid "QMake" +msgstr "Qmake" + +#: modules/computer.c:280 +msgid "CMake" +msgstr "Cmake" + +#: modules/computer.c:281 +msgid "Gambas3 IDE" +msgstr "IDE Gambas3" + +#: modules/computer.c:282 +msgid "Radare2" +msgstr "Radare2" + +#: modules/computer.c:283 +msgid "ltrace" +msgstr "ltrace" + +#: modules/computer.c:324 +msgid "Not found" +msgstr "Não encontrado" + +#: modules/computer.c:329 +#, c-format +msgid "Detecting version: %s" +msgstr "Detectando a versão: %s" + +#: modules/computer.c:347 +msgid "Program" +msgstr "Programa" + +#: modules/computer.c:365 +msgid "Field" +msgstr "Field" + +#: modules/computer.c:365 modules/computer.c:667 modules/computer/modules.c:149 +#: modules/computer/modules.c:150 modules/devices/arm/processor.c:470 +msgid "Description" +msgstr "Descrição" + +#: modules/computer.c:365 modules/devices.c:726 +msgid "Value" +msgstr "Valor" + +#: modules/computer.c:385 +msgid "Single-board computer" +msgstr "Computador de placa única" + +#. /proc/apm +#: modules/computer.c:434 +msgid "Unknown physical machine type" +msgstr "Tipo de máquina física desconhecida" + +#: modules/computer.c:454 modules/computer.c:455 +msgid "Virtual (VMware)" +msgstr "Virtual (VMware)" + +#: modules/computer.c:457 modules/computer.c:458 modules/computer.c:459 +#: modules/computer.c:460 +msgid "Virtual (QEMU)" +msgstr "Virtual (QEMU)" + +#: modules/computer.c:462 modules/computer.c:463 +msgid "Virtual (Unknown)" +msgstr "Virtual (desconhecido)" + +#: modules/computer.c:465 modules/computer.c:466 modules/computer.c:467 +#: modules/computer.c:488 +msgid "Virtual (VirtualBox)" +msgstr "Virtual (VirtualBox)" + +#: modules/computer.c:469 modules/computer.c:470 modules/computer.c:471 +#: modules/computer.c:482 +msgid "Virtual (Xen)" +msgstr "Virtual (Xen)" + +#: modules/computer.c:473 +msgid "Virtual (hypervisor present)" +msgstr "Virtual (presente do hipervisor)" + +#: modules/computer.c:528 modules/computer.c:953 +msgid "Computer" +msgstr "Computador" + +#: modules/computer.c:532 +msgid "Machine Type" +msgstr "Tipo de machina" + +#: modules/computer.c:535 modules/computer.c:588 +msgid "User Name" +msgstr "Nome de utilizador" + +#: modules/computer.c:540 +msgid "Resolution" +msgstr "Resolução" + +#: modules/computer.c:540 modules/computer.c:748 +#, c-format +msgid "%dx%d pixels" +msgstr "%dx%d pixels" + +#: modules/computer.c:543 +msgid "Session Display Server" +msgstr "Servidor de exibição de sessão" + +#: modules/computer.c:548 modules/devices.c:108 +msgid "Input Devices" +msgstr "Dispositivos de entrada" + +#: modules/computer.c:572 +msgid "Kernel" +msgstr "Kernel" + +#: modules/computer.c:573 +msgid "Command Line" +msgstr "Linha de comando" + +#: modules/computer.c:575 +msgid "C Library" +msgstr "Biblioteca C" + +#: modules/computer.c:576 +msgid "Distribution" +msgstr "Distribuição" + +#: modules/computer.c:582 +msgid "Spin/Flavor" +msgstr "Derivação" + +#: modules/computer.c:586 +msgid "Current Session" +msgstr "Sessão atual" + +#: modules/computer.c:587 +msgid "Computer Name" +msgstr "Nome do computador" + +#: modules/computer.c:589 modules/computer/languages.c:99 +msgid "Language" +msgstr "Idioma" + +#: modules/computer.c:590 modules/computer/users.c:50 +msgid "Home Directory" +msgstr "Diretório Home" + +#: modules/computer.c:591 +msgid "Desktop Environment" +msgstr "Ambiente de trabalho" + +#: modules/computer.c:594 +msgid "Misc" +msgstr "Misc" + +#: modules/computer.c:607 +msgid "HardInfo" +msgstr "HardInfo" + +#: modules/computer.c:608 +msgid "HardInfo running as" +msgstr "Executar o HardInfo como" + +#: modules/computer.c:609 +msgid "Superuser" +msgstr "Administrador" + +#: modules/computer.c:609 +msgid "User" +msgstr "Utilizador" + +#: modules/computer.c:613 +msgid "Health" +msgstr "Estado" + +#: modules/computer.c:614 +msgid "Available entropy in /dev/random" +msgstr "Entropia disponível em / dev / random" + +#: modules/computer.c:618 +msgid "Hardening Features" +msgstr "Recursos de proteção" + +#: modules/computer.c:619 +msgid "ASLR" +msgstr "ASLR" + +#: modules/computer.c:620 +msgid "dmesg" +msgstr "dmesg" + +#: modules/computer.c:624 +msgid "Linux Security Modules" +msgstr "Módulos de segurança do Linux" + +#: modules/computer.c:625 +msgid "Modules available" +msgstr "Módulos disponíveis" + +#: modules/computer.c:626 +msgid "SELinux status" +msgstr "Estado do SELinux" + +#: modules/computer.c:632 +msgid "CPU Vulnerabilities" +msgstr "Vulnerabilidades da CPU" + +#: modules/computer.c:664 +msgid "Loaded Modules" +msgstr "Módulos carregados" + +#: modules/computer.c:680 +msgid "Date & Time" +msgstr "Data e hora" + +#: modules/computer.c:681 +msgid "Kernel Version" +msgstr "Versão do kernel" + +#: modules/computer.c:691 +msgid "Available Languages" +msgstr "Idiomas disponíveis" + +#: modules/computer.c:693 +msgid "Language Code" +msgstr "Código de Idioma" + +#: modules/computer.c:705 +msgid "Mounted File Systems" +msgstr "Sistemas de ficheiros montado" + +#: modules/computer.c:707 modules/computer/filesystem.c:85 +msgid "Mount Point" +msgstr "Ponto de montagem" + +#: modules/computer.c:708 +msgid "Usage" +msgstr "Utilização" + +#: modules/computer.c:709 modules/devices/gpu.c:75 modules/devices/gpu.c:83 +#: modules/devices/gpu.c:225 modules/devices/pci.c:88 modules/devices/pci.c:96 +#: modules/devices/pci.c:140 modules/devices/usb.c:169 +#: modules/devices/usb.c:181 +msgid "Device" +msgstr "Dispositivo" + +#: modules/computer.c:731 +msgid "Session" +msgstr "Sessão" + +#: modules/computer.c:732 modules/devices.c:726 modules/devices/dmi.c:55 +#: modules/devices/dmi_memory.c:603 modules/devices/dmi_memory.c:749 +#: modules/devices/inputdevices.c:112 modules/devices/x86/processor.c:714 +msgid "Type" +msgstr "Tipo" + +#: modules/computer.c:735 +msgid "Wayland" +msgstr "Wayland" + +#: modules/computer.c:736 modules/computer.c:741 +msgid "Current Display Name" +msgstr "Nome do ecrã atual" + +#: modules/computer.c:740 +msgid "X Server" +msgstr "Servidor X" + +#: modules/computer.c:742 modules/computer.c:782 modules/devices/dmi.c:39 +#: modules/devices/dmi.c:45 modules/devices/dmi.c:49 modules/devices/dmi.c:54 +#: modules/devices/dmi_memory.c:750 modules/devices/dmi_memory.c:895 +#: modules/devices/firmware.c:105 modules/devices/firmware.c:168 +#: modules/devices/firmware.c:190 modules/devices/firmware.c:228 +#: modules/devices/gpu.c:74 modules/devices/gpu.c:82 modules/devices/gpu.c:224 +#: modules/devices/ia64/processor.c:161 modules/devices/inputdevices.c:114 +#: modules/devices/monitors.c:398 modules/devices/pci.c:87 +#: modules/devices/pci.c:95 modules/devices/usb.c:168 +#: modules/devices/x86/processor.c:653 +msgid "Vendor" +msgstr "Fabricante" + +#: modules/computer.c:744 +msgid "Release Number" +msgstr "Número da versão" + +#: modules/computer.c:752 +msgid "Screens" +msgstr "Ecrãs" + +#: modules/computer.c:758 +msgid "Disconnected" +msgstr "Desligado" + +#: modules/computer.c:761 +msgid "Connected" +msgstr "Ligado" + +#: modules/computer.c:769 +msgid "Unused" +msgstr "Não utilizado" + +#: modules/computer.c:770 +#, c-format +msgid "%dx%d pixels, offset (%d, %d)" +msgstr "%dx%d pixéis, deslocamento (%d, %d)" + +#: modules/computer.c:779 +msgid "Outputs (XRandR)" +msgstr "Saídas (XRandR)" + +#: modules/computer.c:781 +msgid "OpenGL (GLX)" +msgstr "OpenGL (GLX)" + +#: modules/computer.c:783 +msgid "Renderer" +msgstr "Renderizador" + +#: modules/computer.c:784 +msgid "Direct Rendering" +msgstr "Renderização direta" + +#: modules/computer.c:786 +msgid "Version (Compatibility)" +msgstr "Versão (compatibilidade)" + +#: modules/computer.c:787 +msgid "Shading Language Version (Compatibility)" +msgstr "Versão da linguagem de sombreamento (compatibilidade)" + +#: modules/computer.c:788 +msgid "Version (Core)" +msgstr "Versão (núcleo)" + +#: modules/computer.c:789 +msgid "Shading Language Version (Core)" +msgstr "Versão de linguagem de sombreamento (núcleo)" + +#: modules/computer.c:790 +msgid "Version (ES)" +msgstr "Versão (ES)" + +#: modules/computer.c:791 +msgid "Shading Language Version (ES)" +msgstr "Versão da linguagem de sombreamento (ES)" + +#: modules/computer.c:792 +msgid "GLX Version" +msgstr "Versão GLX" + +#: modules/computer.c:813 +msgid "Group" +msgstr "Grupo" + +#: modules/computer.c:816 modules/computer/users.c:49 +msgid "Group ID" +msgstr "ID do Grupo" + +#. / "usable memory" +#: modules/computer.c:909 +#, c-format +msgid "%0.1f %s available to Linux" +msgstr "%0.1f%s disponível para Linux" + +#: modules/computer.c:911 modules/devices/dmi_memory.c:661 +#: modules/devices/dmi_memory.c:809 modules/devices/dmi_memory.c:936 +msgid "GiB" +msgstr "GiB" + +#: modules/computer.c:913 modules/devices/dmi_memory.c:581 +#: modules/devices/dmi_memory.c:663 modules/devices/dmi_memory.c:723 +#: modules/devices/dmi_memory.c:811 modules/devices/dmi_memory.c:857 +#: modules/devices/dmi_memory.c:938 modules/network/net.c:395 +#: modules/network/net.c:417 modules/network/net.c:418 +msgid "MiB" +msgstr "MiB" + +#: modules/computer.c:915 modules/computer/memory_usage.c:77 +#: modules/computer/modules.c:149 +msgid "KiB" +msgstr "KiB" + +#: modules/computer.c:972 modules/devices/devicetree/pmac_data.c:82 +msgid "Motherboard" +msgstr "Placa-mãe" + +#: modules/computer.c:1000 +msgid "Graphics" +msgstr "Gráficos" + +#: modules/computer.c:1001 modules/devices.c:109 +msgid "Storage" +msgstr "Armazenamento" + +#: modules/computer.c:1001 modules/devices.c:105 +msgid "Printers" +msgstr "Impressoras" + +#: modules/computer.c:1001 +msgid "Audio" +msgstr "Áudio" + +#: modules/computer.c:1050 +msgid "Gathers high-level computer information" +msgstr "Reúne informação do computador de alto nível" + +#: modules/computer/filesystem.c:83 +msgid "Filesystem" +msgstr "Sistema de ficheiros" + +#: modules/computer/filesystem.c:84 +msgid "Mounted As" +msgstr "Montado como" + +#: modules/computer/filesystem.c:84 +msgid "Read-Write" +msgstr "Leitura-escrita" + +#: modules/computer/filesystem.c:84 +msgid "Read-Only" +msgstr "Apenas-leitura" + +#: modules/computer/filesystem.c:86 modules/devices/dmi_memory.c:609 +#: modules/devices/dmi_memory.c:754 modules/devices/dmi_memory.c:786 +#: modules/devices/dmi_memory.c:825 modules/devices/dmi_memory.c:894 +msgid "Size" +msgstr "Tamanho" + +#: modules/computer/filesystem.c:87 +msgid "Used" +msgstr "Utilizado" + +#: modules/computer/filesystem.c:88 +msgid "Available" +msgstr "Disponível" + +#: modules/computer/languages.c:94 +msgid "Locale Information" +msgstr "Informação local" + +#: modules/computer/languages.c:96 modules/devices/dmi_memory.c:599 +#: modules/devices/gpu.c:204 +msgid "Source" +msgstr "Fonte" + +#: modules/computer/languages.c:97 +msgid "Address" +msgstr "Endereço" + +#: modules/computer/languages.c:98 +msgid "E-mail" +msgstr "E-mail" + +#: modules/computer/languages.c:100 +msgid "Territory" +msgstr "Território" + +#: modules/computer/languages.c:102 modules/devices/dmi.c:44 +msgid "Date" +msgstr "Data" + +#: modules/computer/languages.c:103 +msgid "Codeset" +msgstr "Conjunto de códigos" + +#: modules/computer/loadavg.c:64 +msgid "Couldn't obtain load average" +msgstr "Não foi possível obter a média de carga" + +#: modules/computer/memory_usage.c:106 +msgid "Total Memory" +msgstr "Memoria total" + +#: modules/computer/memory_usage.c:107 +msgid "Free Memory" +msgstr "Memoria livre" + +#: modules/computer/memory_usage.c:108 +msgid "Cached Swap" +msgstr "Memória utilizada na swap" + +#: modules/computer/memory_usage.c:109 +msgid "High Memory" +msgstr "Memória alta" + +#: modules/computer/memory_usage.c:110 +msgid "Free High Memory" +msgstr "Memória alta livre" + +#: modules/computer/memory_usage.c:111 +msgid "Low Memory" +msgstr "Memória baixa" + +#: modules/computer/memory_usage.c:112 +msgid "Free Low Memory" +msgstr "Memória baixa Livre" + +#: modules/computer/memory_usage.c:113 +msgid "Virtual Memory" +msgstr "Memória virtual" + +#: modules/computer/memory_usage.c:114 +msgid "Free Virtual Memory" +msgstr "Memória virtual livre" + +#: modules/computer/modules.c:117 modules/computer/modules.c:118 +#: modules/computer/modules.c:119 modules/computer/modules.c:120 +#: modules/computer/modules.c:121 modules/computer/modules.c:122 +#: modules/devices/dmi.c:111 modules/devices/dmi_memory.c:881 +#: modules/devices/firmware.c:246 modules/devices/x86/processor.c:693 +msgid "(Not available)" +msgstr "(Indisponível)" + +#: modules/computer/modules.c:148 +msgid "Module Information" +msgstr "Informação do módulo" + +#: modules/computer/modules.c:148 modules/devices/gpu.c:230 +msgid "Path" +msgstr "Caminho" + +#: modules/computer/modules.c:148 +msgid "Used Memory" +msgstr "Memória utilizada" + +#: modules/computer/modules.c:150 +msgid "Version Magic" +msgstr "Versão Magic" + +#: modules/computer/modules.c:151 +msgid "In Linus' Tree" +msgstr "Na árvore de Linus" + +#: modules/computer/modules.c:152 +msgid "Retpoline Enabled" +msgstr "Retpoline ativado" + +#: modules/computer/modules.c:152 +msgid "Copyright" +msgstr "Direitos de autor" + +#: modules/computer/modules.c:152 +msgid "Author" +msgstr "Autor" + +#: modules/computer/modules.c:153 +msgid "License" +msgstr "Licença" + +#: modules/computer/modules.c:159 +msgid "Dependencies" +msgstr "Dependências" + +#: modules/computer/os.c:36 modules/computer/os.c:37 modules/computer/os.c:38 +#: modules/computer/os.c:39 +msgid "GNU C Library" +msgstr "Biblioteca GNU C" + +#: modules/computer/os.c:40 +msgid "uClibc or uClibc-ng" +msgstr "uClibc ou uClibc-ng" + +#: modules/computer/os.c:41 +msgid "diet libc" +msgstr "diet libc" + +#: modules/computer/os.c:113 modules/computer/os.c:116 +msgid "GNOME Shell " +msgstr "GNOME Shell " + +#: modules/computer/os.c:124 modules/computer/os.c:127 +msgid "Version: " +msgstr "Versão: " + +#: modules/computer/os.c:146 modules/computer/os.c:149 +msgid "MATE Desktop Environment " +msgstr "Ambiente de trabalho MATE" + +#: modules/computer/os.c:180 +#, c-format +msgid "Unknown (Window Manager: %s)" +msgstr "Desconhecido (Gestor de janelas: %s)" + +#. /{desktop environment} on {session type} +#: modules/computer/os.c:191 +#, c-format +msgid "%s on %s" +msgstr "%s em %s" + +#: modules/computer/os.c:261 +msgid "Terminal" +msgstr "Terminal" + +#: modules/computer/os.c:278 +msgid "User access allowed" +msgstr "Acesso ao utilizador permitido" + +#: modules/computer/os.c:280 +msgid "User access forbidden" +msgstr "Acesso ao utilizador proibido" + +#: modules/computer/os.c:282 +msgid "Access allowed (running as superuser)" +msgstr "Acesso permitido (a executar como administrador)" + +#: modules/computer/os.c:284 +msgid "Access forbidden? (running as superuser)" +msgstr "Acesso proibido? (a executar como administrador)" + +#: modules/computer/os.c:294 modules/computer/os.c:560 +msgid "Disabled" +msgstr "Desativado" + +#: modules/computer/os.c:296 +msgid "Partially enabled (mmap base+stack+VDSO base)" +msgstr "Parcialmente ativado (base mmap+stack+base VDSO)" + +#: modules/computer/os.c:298 +msgid "Fully enabled (mmap base+stack+VDSO base+heap)" +msgstr "Totalmente ativado (base mmap+stack+base VDSO+heap)" + +#. /bits of entropy for rng (0) +#: modules/computer/os.c:308 +msgid "(None or not available)" +msgstr "(Nenhum ou não disponível)" + +#. /bits of entropy for rng (low/poor value) +#: modules/computer/os.c:309 +#, c-format +msgid "%d bits (low)" +msgstr "%d bits (baixo)" + +#. /bits of entropy for rng (medium value) +#: modules/computer/os.c:310 +#, c-format +msgid "%d bits (medium)" +msgstr "%d bits (médio)" + +#. /bits of entropy for rng (high/good value) +#: modules/computer/os.c:311 +#, c-format +msgid "%d bits (healthy)" +msgstr "%d bits (saudável)" + +#: modules/computer/os.c:555 +msgid "Not installed" +msgstr "Não instalado" + +#: modules/computer/os.c:558 +msgid "Enabled" +msgstr "Ativado" + +#: modules/computer/users.c:47 +msgid "User Information" +msgstr "Informação do utilizador" + +#: modules/computer/users.c:48 +msgid "User ID" +msgstr "ID do utilizador" + +#: modules/computer/users.c:51 +msgid "Default Shell" +msgstr "Shell predefinido" + +#: modules/devices/alpha/processor.c:88 modules/devices/devicetree.c:163 +#: modules/devices/devicetree.c:209 modules/devices/devicetree/pmac_data.c:80 +#: modules/devices/gpu.c:106 modules/devices/ia64/processor.c:165 +#: modules/devices/m68k/processor.c:84 modules/devices/mips/processor.c:75 +#: modules/devices/monitors.c:400 modules/devices/parisc/processor.c:155 +#: modules/devices/ppc/processor.c:158 modules/devices/riscv/processor.c:182 +#: modules/devices/s390/processor.c:132 +msgid "Model" +msgstr "Modelo" + +#: modules/devices/alpha/processor.c:89 +msgid "Platform String" +msgstr "String de plataforma" + +#: modules/devices/alpha/processor.c:90 modules/devices/arm/processor.c:345 +#: modules/devices/ia64/processor.c:167 modules/devices/m68k/processor.c:87 +#: modules/devices/mips/processor.c:77 modules/devices/parisc/processor.c:158 +#: modules/devices/ppc/processor.c:160 modules/devices/riscv/processor.c:186 +#: modules/devices/sh/processor.c:87 modules/devices/x86/processor.c:657 +msgid "Frequency" +msgstr "Frequência" + +#: modules/devices/alpha/processor.c:91 modules/devices/arm/processor.c:346 +#: modules/devices/ia64/processor.c:168 modules/devices/m68k/processor.c:88 +#: modules/devices/mips/processor.c:78 modules/devices/parisc/processor.c:159 +#: modules/devices/ppc/processor.c:161 modules/devices/s390/processor.c:134 +#: modules/devices/sh/processor.c:90 modules/devices/x86/processor.c:658 +msgid "BogoMips" +msgstr "BogoMips" + +#: modules/devices/alpha/processor.c:92 modules/devices/arm/processor.c:347 +#: modules/devices/ia64/processor.c:169 modules/devices/m68k/processor.c:89 +#: modules/devices/mips/processor.c:79 modules/devices/parisc/processor.c:160 +#: modules/devices/ppc/processor.c:162 modules/devices/riscv/processor.c:187 +#: modules/devices/s390/processor.c:135 modules/devices/sh/processor.c:91 +#: modules/devices/sparc/processor.c:77 modules/devices/x86/processor.c:659 +msgid "Byte Order" +msgstr "Ordem de Bytes" + +#. /hw_cap +#. /flag:swp +#: modules/devices/arm/arm_data.c:42 +msgctxt "arm-flag" +msgid "SWP instruction (atomic read-modify-write)" +msgstr "Instrução SWP (atomic leitura-modificar-escrita)" + +#. /flag:half +#: modules/devices/arm/arm_data.c:43 +msgctxt "arm-flag" +msgid "Half-word loads and stores" +msgstr "Carga e armazenamento de meia-palavra" + +#. /flag:thumb +#: modules/devices/arm/arm_data.c:44 +msgctxt "arm-flag" +msgid "Thumb (16-bit instruction set)" +msgstr "Thumb (16-bit instruction set)" + +#. /flag:26bit +#: modules/devices/arm/arm_data.c:45 +msgctxt "arm-flag" +msgid "26-Bit Model (Processor status register folded into program counter)" +msgstr "" +"Modelo de 26 bits (registo de estado do processador dobrado no contador de " +"programa)" + +#. /flag:fastmult +#: modules/devices/arm/arm_data.c:46 +msgctxt "arm-flag" +msgid "32x32->64-bit multiplication" +msgstr "32x32-> multiplicação de 64 bits" + +#. /flag:fpa +#: modules/devices/arm/arm_data.c:47 +msgctxt "arm-flag" +msgid "Floating point accelerator" +msgstr "Acelerador de ponto flutuante" + +#. /flag:vfp +#: modules/devices/arm/arm_data.c:48 +msgctxt "arm-flag" +msgid "VFP (early SIMD vector floating point instructions)" +msgstr "VFP (instruções iniciais de ponto flutuante de vetor SIMD)" + +#. /flag:edsp +#: modules/devices/arm/arm_data.c:49 +msgctxt "arm-flag" +msgid "DSP extensions (the 'e' variant of the ARM9 CPUs, and all others above)" +msgstr "Extensões DSP (a variante 'e' das CPUs ARM9 e todas as outras acima)" + +#. /flag:java +#: modules/devices/arm/arm_data.c:50 +msgctxt "arm-flag" +msgid "Jazelle (Java bytecode accelerator)" +msgstr "Jazelle (acelerador de bytecode Java)" + +#. /flag:iwmmxt +#: modules/devices/arm/arm_data.c:51 +msgctxt "arm-flag" +msgid "SIMD instructions similar to Intel MMX" +msgstr "Instruções SIMD semelhantes ao Intel MMX" + +#. /flag:crunch +#: modules/devices/arm/arm_data.c:52 +msgctxt "arm-flag" +msgid "MaverickCrunch coprocessor (if kernel support enabled)" +msgstr "Coprocessador MaverickCrunch (se o suporte ao kernel estiver ativado)" + +#. /flag:thumbee +#: modules/devices/arm/arm_data.c:53 +msgctxt "arm-flag" +msgid "ThumbEE" +msgstr "ThumbEE" + +#. /flag:neon +#: modules/devices/arm/arm_data.c:54 +msgctxt "arm-flag" +msgid "Advanced SIMD/NEON on AArch32" +msgstr "Avançado SIMD / NEON em AArch32" + +#. /flag:evtstrm +#: modules/devices/arm/arm_data.c:55 +msgctxt "arm-flag" +msgid "Kernel event stream using generic architected timer" +msgstr "Fluxo de eventos do kernel usando o temporizador arquitetado genérico" + +#. /flag:vfpv3 +#: modules/devices/arm/arm_data.c:56 +msgctxt "arm-flag" +msgid "VFP version 3" +msgstr "Versão 3 do VFP" + +#. /flag:vfpv3d16 +#: modules/devices/arm/arm_data.c:57 +msgctxt "arm-flag" +msgid "VFP version 3 with 16 D-registers" +msgstr "VFP versão 3 com 16 registos D" + +#. /flag:vfpv4 +#: modules/devices/arm/arm_data.c:58 +msgctxt "arm-flag" +msgid "VFP version 4 with fast context switching" +msgstr "VFP versão 4 com comutação rápida de contexto" + +#. /flag:vfpd32 +#: modules/devices/arm/arm_data.c:59 +msgctxt "arm-flag" +msgid "VFP with 32 D-registers" +msgstr "VFP com 32 registos D" + +#. /flag:tls +#: modules/devices/arm/arm_data.c:60 +msgctxt "arm-flag" +msgid "TLS register" +msgstr "Registo TLS" + +#. /flag:idiva +#: modules/devices/arm/arm_data.c:61 +msgctxt "arm-flag" +msgid "SDIV and UDIV hardware division in ARM mode" +msgstr "Divisão de hardware SDIV e UDIV no modo ARM" + +#. /flag:idivt +#: modules/devices/arm/arm_data.c:62 +msgctxt "arm-flag" +msgid "SDIV and UDIV hardware division in Thumb mode" +msgstr "Divisão de hardware SDIV e UDIV no modo Thumb" + +#. /flag:lpae +#: modules/devices/arm/arm_data.c:63 +msgctxt "arm-flag" +msgid "40-bit Large Physical Address Extension" +msgstr "Extensão de endereço físico grande de 40 bits" + +#. /hw_cap2 +#. /flag:pmull +#: modules/devices/arm/arm_data.c:65 +msgctxt "arm-flag" +msgid "64x64->128-bit F2m multiplication (arch>8)" +msgstr "64x64-> multiplicação F2m de 128 bits (arco> 8)" + +#. /flag:aes +#: modules/devices/arm/arm_data.c:66 +msgctxt "arm-flag" +msgid "Crypto:AES (arch>8)" +msgstr "Criptografia: AES (arco> 8)" + +#. /flag:sha1 +#: modules/devices/arm/arm_data.c:67 +msgctxt "arm-flag" +msgid "Crypto:SHA1 (arch>8)" +msgstr "Criptografia: SHA1 (arco> 8)" + +#. /flag:sha2 +#: modules/devices/arm/arm_data.c:68 +msgctxt "arm-flag" +msgid "Crypto:SHA2 (arch>8)" +msgstr "Criptografia: SHA2 (arco> 8)" + +#. /flag:crc32 +#: modules/devices/arm/arm_data.c:69 +msgctxt "arm-flag" +msgid "CRC32 checksum instructions (arch>8)" +msgstr "Instruções de soma de verificação CRC32 (arco> 8)" + +#. /flag:asimd +#: modules/devices/arm/arm_data.c:72 +msgctxt "arm-flag" +msgid "Advanced SIMD/NEON on AArch64 (arch>8)" +msgstr "Avançado SIMD / NEON em AArch64 (arco> 8)" + +#: modules/devices/arm/processor.c:143 +msgid "ARM Processor" +msgstr "Processador ARM" + +#: modules/devices/arm/processor.c:214 modules/devices/riscv/processor.c:147 +#: modules/devices/x86/processor.c:608 +msgid "Empty List" +msgstr "Lista vazia" + +#: modules/devices/arm/processor.c:240 modules/devices/gpu.c:148 +#: modules/devices/gpu.c:226 modules/devices/x86/processor.c:268 +msgid "Clocks" +msgstr "Clocks Relógios" + +#: modules/devices/arm/processor.c:286 modules/devices/arm/processor.c:299 +#: modules/devices/x86/processor.c:314 modules/devices/x86/processor.c:327 +#, c-format +msgid "%.2f-%.2f %s=%dx\n" +msgstr "%.2f-%.2f %s=%dx\n" + +#: modules/devices/arm/processor.c:342 +msgid "Linux Name" +msgstr "Nome Linux" + +#: modules/devices/arm/processor.c:343 +msgid "Decoded Name" +msgstr "Nome decodificado" + +#: modules/devices/arm/processor.c:344 modules/network/net.c:453 +msgid "Mode" +msgstr "Modo" + +#: modules/devices/arm/processor.c:350 +msgid "ARM" +msgstr "ARM" + +#: modules/devices/arm/processor.c:351 +msgid "Implementer" +msgstr "Implementador" + +#: modules/devices/arm/processor.c:352 modules/devices/dmi_memory.c:896 +msgid "Part" +msgstr "Parte" + +#: modules/devices/arm/processor.c:353 modules/devices/ia64/processor.c:162 +#: modules/devices/parisc/processor.c:156 modules/devices/riscv/processor.c:183 +msgid "Architecture" +msgstr "Arquitetura" + +#: modules/devices/arm/processor.c:354 +msgid "Variant" +msgstr "Variante" + +#: modules/devices/arm/processor.c:356 modules/devices/riscv/processor.c:190 +#: modules/devices/sparc/processor.c:78 modules/devices/x86/processor.c:665 +msgid "Capabilities" +msgstr "Capacidades" + +#: modules/devices/arm/processor.c:468 +msgid "SOC/Package" +msgstr "SOC/Pacote" + +#: modules/devices/arm/processor.c:472 modules/devices/x86/processor.c:751 +msgid "Logical CPU Config" +msgstr "Configuração lógica da CPU" + +#: modules/devices/arm/processor.c:489 +msgid "SOC/Package Information" +msgstr "SOC/Informações do pacote" + +#: modules/devices/battery.c:178 +#, c-format +msgid "" +"\n" +"[Battery: %s]\n" +"State=%s (load: %s)\n" +"Capacity=%s / %s (%.2f%%)\n" +"Battery Technology=%s (%s)\n" +"Manufacturer=%s\n" +"Model Number=%s\n" +"Serial Number=%s\n" +msgstr "" +"\n" +"[Bateria: %s]\n" +"Estado=%s (load: %s)\n" +"Capacidade=%s / %s (%.2f%%)\n" +"Tecnologia de Baterias=%s (%s)\n" +"Fabricante=%s\n" +"Número do modelo=%s\n" +"Número de série=%s\n" + +#: modules/devices/battery.c:255 +#, c-format +msgid "" +"\n" +"[Battery: %s]\n" +"State=%s\n" +"Capacity=%s / %s\n" +"Battery Technology=%s\n" +"Manufacturer=%s\n" +"Model Number=%s\n" +"Serial Number=%s\n" +msgstr "" +"\n" +"[Bateria: %s]\n" +"Estado=%s\n" +"Capacidade=%s / %s\n" +"Tecnologia de bateria=%s\n" +"Fabricante=%s\n" +"Número do Modelo=%s\n" +"Número de série=%s\n" + +#: modules/devices/battery.c:343 +#, c-format +msgid "" +"\n" +"[Battery (APM)]\n" +"Charge=%d%%\n" +"Remaining Charge=%s of %s\n" +"Using=%s\n" +"APM driver version=%s\n" +"APM BIOS version=%s\n" +msgstr "" +"\n" +"[Bateria (APM)]\n" +"Carregar=%d%%\n" +"Carga carregamento restante=%s of %s\n" +"Usando=%s\n" +"APM driver versão=%s\n" +"APM BIOS versão=%s\n" + +#: modules/devices/battery.c:355 +#, c-format +msgid "" +"\n" +"[Battery (APM)]\n" +"Charge=%d%%\n" +"Using=%s\n" +"APM driver version=%s\n" +"APM BIOS version=%s\n" +msgstr "" +"\n" +"[Bateria (APM)]\n" +"Carga Carregar=%d%%\n" +"Usando=%s\n" +"APM driver versão=%s\n" +"APM BIOS versão=%s\n" + +#: modules/devices/battery.c:382 +msgid "" +"[No batteries]\n" +"No batteries found on this system=\n" +msgstr "" +"[Sem baterias]\n" +"Nenhuma bateria encontrada neste sistema=\n" + +#: modules/devices.c:100 +msgid "Graphics Processors" +msgstr "Processadores Gráficos" + +#: modules/devices.c:101 modules/devices/monitors.c:445 +#: modules/devices/monitors.c:492 +msgid "Monitors" +msgstr "Monitores" + +#: modules/devices.c:102 modules/devices/pci.c:163 +msgid "PCI Devices" +msgstr "Dispositivos PCI" + +#: modules/devices.c:103 modules/devices/usb.c:210 +msgid "USB Devices" +msgstr "Dispositivos USB" + +#: modules/devices.c:104 +msgid "Firmware" +msgstr "Firmware" + +#: modules/devices.c:106 +msgid "Battery" +msgstr "Bateria" + +#: modules/devices.c:107 +msgid "Sensors" +msgstr "Sensores" + +#: modules/devices.c:110 +msgid "System DMI" +msgstr "Sistema DMI" + +#: modules/devices.c:111 +msgid "Memory Devices" +msgstr "Dispositivos de memória" + +#: modules/devices.c:113 modules/devices.c:115 +msgid "Device Tree" +msgstr "Árvore de Dispositivos" + +#: modules/devices.c:117 +msgid "Resources" +msgstr "Recursos" + +#: modules/devices.c:177 +#, c-format +msgid "%d physical processor" +msgid_plural "%d physical processors" +msgstr[0] "%d processador físico" +msgstr[1] "%d processadores físicos" + +#: modules/devices.c:178 +#, c-format +msgid "%d core" +msgid_plural "%d cores" +msgstr[0] "%d núcleo" +msgstr[1] "%d núcleos" + +#: modules/devices.c:179 +#, c-format +msgid "%d thread" +msgid_plural "%d threads" +msgstr[0] "%d thread" +msgstr[1] "%d threads" + +#. /NP procs; NC cores; NT threads +#: modules/devices.c:180 +#, c-format +msgid "%s; %s; %s" +msgstr "%s; %s; %s" + +#: modules/devices.c:726 +msgid "Sensor" +msgstr "Sensor" + +#: modules/devices.c:773 modules/devices/dmi_memory.c:826 +msgid "Devices" +msgstr "Dispositivos" + +#: modules/devices.c:785 +msgid "Update PCI ID listing" +msgstr "Atualizar lista de IDs de PCI" + +#: modules/devices.c:797 +msgid "Update CPU feature database" +msgstr "Atualizar banco de dados de recursos da CPU" + +#: modules/devices.c:825 +msgid "Gathers information about hardware devices" +msgstr "Reúne informações sobre dispositivos de hardware" + +#: modules/devices.c:844 +msgid "Resource information requires superuser privileges" +msgstr "Reúne informações sobre dispositivos de hardware" + +#: modules/devices.c:850 +msgid "" +"Any NVMe storage devices present are not listed.\n" +"udisksd is required for NVMe devices." +msgstr "" +"Quaisquer dispositivos de armazenamento NVMe não foram listados.\n" +"udisksd é requerido pelos dispositivos NVMe." + +#: modules/devices/devicetree.c:52 +msgid "Properties" +msgstr "Propriedades" + +#: modules/devices/devicetree.c:53 +msgid "Children" +msgstr "Crianças" + +#: modules/devices/devicetree.c:89 +msgid "Node" +msgstr "Node nó" + +#: modules/devices/devicetree.c:90 +msgid "Node Path" +msgstr "Caminho do Nó Node Path" + +#: modules/devices/devicetree.c:91 +msgid "Alias" +msgstr "Alias" + +#: modules/devices/devicetree.c:92 +msgid "Symbol" +msgstr "Símbolo" + +#: modules/devices/devicetree.c:145 modules/devices/devicetree/pmac_data.c:79 +msgid "Platform" +msgstr "Plataforma" + +#: modules/devices/devicetree.c:146 modules/devices/devicetree.c:211 +#: modules/devices/gpu.c:231 +msgid "Compatible" +msgstr "Compatível" + +#: modules/devices/devicetree.c:147 +msgid "GPU-compatible" +msgstr "Compatível com GPU" + +#: modules/devices/devicetree.c:162 +msgid "Raspberry Pi or Compatible" +msgstr "Raspberry Pi ou compatível" + +#: modules/devices/devicetree.c:164 modules/devices/devicetree.c:191 +#: modules/devices/devicetree.c:210 modules/devices/devicetree/rpi_data.c:168 +#: modules/devices/dmi.c:41 modules/devices/dmi.c:51 modules/devices/dmi.c:57 +#: modules/devices/usb.c:178 +msgid "Serial Number" +msgstr "Número de série" + +#: modules/devices/devicetree.c:165 modules/devices/devicetree/rpi_data.c:165 +msgid "RCode" +msgstr "RCode" + +#: modules/devices/devicetree.c:165 +msgid "No revision code available; unable to lookup model details." +msgstr "" +"Nenhum código de revisão disponível; incapaz de pesquisar detalhes do modelo." + +#: modules/devices/devicetree.c:190 +msgid "More" +msgstr "Mais" + +#: modules/devices/devicetree.c:271 +msgid "Messages" +msgstr "Mensagens" + +#: modules/devices/devicetree/pmac_data.c:78 +msgid "Apple Power Macintosh" +msgstr "Apple Power Macintosh" + +#: modules/devices/devicetree/pmac_data.c:83 +msgid "Detected as" +msgstr "Detectado como" + +#: modules/devices/devicetree/pmac_data.c:84 +msgid "PMAC Flags" +msgstr "Bandeiras do PMAC" + +#: modules/devices/devicetree/pmac_data.c:85 +msgid "L2 Cache" +msgstr "L2 Cache" + +#: modules/devices/devicetree/pmac_data.c:86 +msgid "PMAC Generation" +msgstr "Geração PMAC" + +#: modules/devices/devicetree/rpi_data.c:160 +#: modules/devices/devicetree/rpi_data.c:161 +msgid "Raspberry Pi" +msgstr "Raspberry Pi" + +#: modules/devices/devicetree/rpi_data.c:161 +msgid "Board Name" +msgstr "Nome da placa" + +#: modules/devices/devicetree/rpi_data.c:162 +msgid "PCB Revision" +msgstr "Revisão PCB" + +#: modules/devices/devicetree/rpi_data.c:163 +msgid "Introduction" +msgstr "Introdução" + +#: modules/devices/devicetree/rpi_data.c:164 modules/devices/usb.c:170 +msgid "Manufacturer" +msgstr "Fabricante" + +#: modules/devices/devicetree/rpi_data.c:166 +msgid "SOC (spec)" +msgstr "SOC (spec)" + +#: modules/devices/devicetree/rpi_data.c:167 +msgid "Memory (spec)" +msgstr "Memoria (spec)" + +#: modules/devices/devicetree/rpi_data.c:169 +msgid "Permanent overvolt bit" +msgstr "Bit permanente de sobretensão" + +#: modules/devices/devicetree/rpi_data.c:169 +msgctxt "rpi-ov-bit" +msgid "Set" +msgstr "Conjunto" + +#: modules/devices/devicetree/rpi_data.c:169 +msgctxt "rpi-ov-bit" +msgid "Not set" +msgstr "Não configurado" + +#: modules/devices/dmi.c:36 modules/devices/inputdevices.c:115 +#: modules/devices/usb.c:167 +msgid "Product" +msgstr "Produto" + +#: modules/devices/dmi.c:38 modules/devices/ia64/processor.c:164 +#: modules/devices/sh/processor.c:86 +msgid "Family" +msgstr "Família" + +#: modules/devices/dmi.c:42 +msgid "SKU" +msgstr "SKU" + +#: modules/devices/dmi.c:43 +msgid "BIOS" +msgstr "BIOS" + +#: modules/devices/dmi.c:52 modules/devices/dmi.c:58 +msgid "Asset Tag" +msgstr "Asset Tag Tag de patrimônio" + +#: modules/devices/dmi.c:115 modules/devices/dmi_memory.c:882 +#: modules/devices/x86/processor.c:694 +msgid "(Not available; Perhaps try running HardInfo as root.)" +msgstr "(Não disponível; Tente rodar o HardInfo como root.)" + +#: modules/devices/dmi.c:156 +msgid "DMI Unavailable" +msgstr "DMI indisponível" + +#: modules/devices/dmi.c:158 +msgid "DMI is not avaliable. Perhaps this platform does not provide DMI." +msgstr "O DMI não está disponível. Talvez esta plataforma não fornece DMI." + +#: modules/devices/dmi.c:159 +msgid "DMI is not available; Perhaps try running HardInfo as root." +msgstr "O DMI não está disponível. Tente executar o HardInfo como root." + +#: modules/devices/dmi_memory.c:598 +msgid "Serial Presence Detect (SPD)" +msgstr "Serial Presence Detect (SPD)" + +#: modules/devices/dmi_memory.c:601 +msgid "SPD Revision" +msgstr "Revisão SPD" + +#: modules/devices/dmi_memory.c:602 modules/devices/dmi_memory.c:748 +msgid "Form Factor" +msgstr "Fator de forma" + +#: modules/devices/dmi_memory.c:604 +msgid "Module Vendor" +msgstr "Fabricante do módulo" + +#: modules/devices/dmi_memory.c:606 +msgid "DRAM Vendor" +msgstr "Fabricante de DRAM" + +#: modules/devices/dmi_memory.c:608 modules/devices/dmi_memory.c:753 +msgid "Part Number" +msgstr "Número da Parte" + +#: modules/devices/dmi_memory.c:610 +msgid "Manufacturing Date (Week / Year)" +msgstr "Data de fabricação (semana / ano)" + +#: modules/devices/dmi_memory.c:644 modules/devices/dmi_memory.c:879 +msgid "Memory Device List" +msgstr "Lista dos dispositivos de memória" + +#: modules/devices/dmi_memory.c:686 +msgid "Memory Array" +msgstr "Matriz de memória" + +#: modules/devices/dmi_memory.c:687 modules/devices/x86/processor.c:713 +msgid "DMI Handle" +msgstr "Identificador DMI" + +#: modules/devices/dmi_memory.c:688 modules/devices/dmi_memory.c:746 +#: modules/devices/dmi_memory.c:784 modules/devices/dmi_memory.c:893 +msgid "Locator" +msgstr "Localizador" + +#: modules/devices/dmi_memory.c:689 +msgid "Use" +msgstr "Usar" + +#: modules/devices/dmi_memory.c:690 +msgid "Error Correction Type" +msgstr "Tipo de correção de erro" + +#: modules/devices/dmi_memory.c:691 +msgid "Size (Present / Max)" +msgstr "Tamanho (atual / máx)" + +#: modules/devices/dmi_memory.c:692 +msgid "Devices (Populated / Sockets)" +msgstr "Dispositivos (Populated / Sockets)" + +#: modules/devices/dmi_memory.c:693 modules/devices/dmi_memory.c:827 +msgid "Types Present" +msgstr "Tipos apresentados" + +#: modules/devices/dmi_memory.c:744 modules/devices/dmi_memory.c:782 +msgid "Memory Socket" +msgstr "Socket de memória" + +#: modules/devices/dmi_memory.c:745 modules/devices/dmi_memory.c:783 +msgid "DMI Handles (Array, Socket)" +msgstr "Identificadores DMI (matriz, socket)" + +#: modules/devices/dmi_memory.c:747 modules/devices/dmi_memory.c:785 +msgid "Bank Locator" +msgstr "Localizador de banco" + +#: modules/devices/dmi_memory.c:755 +msgid "Rated Speed" +msgstr "Velocidade nominal" + +#: modules/devices/dmi_memory.c:756 +msgid "Configured Speed" +msgstr "Velocidade configurada" + +#: modules/devices/dmi_memory.c:757 +msgid "Data Width/Total Width" +msgstr "Largura dos dados/Largura total" + +#: modules/devices/dmi_memory.c:758 +msgid "Rank" +msgstr "Ranque" + +#: modules/devices/dmi_memory.c:759 +msgid "Minimum Voltage" +msgstr "Voltagem mínima" + +#: modules/devices/dmi_memory.c:760 +msgid "Maximum Voltage" +msgstr "Voltagem máxima" + +#: modules/devices/dmi_memory.c:761 +msgid "Configured Voltage" +msgstr "Voltagem configurada" + +#: modules/devices/dmi_memory.c:786 modules/devices/dmi_memory.c:793 +#: modules/devices/monitors.c:492 +msgid "(Empty)" +msgstr "(Vazio)" + +#: modules/devices/dmi_memory.c:824 +msgid "Serial Presence Detect (SPD) Summary" +msgstr "Resumo do Serial Presence Detect (SPD)" + +#: modules/devices/dmi_memory.c:947 +msgid " dmidecode utility available" +msgstr " dmidecode utilitário disponível" + +#: modules/devices/dmi_memory.c:948 +msgid " ... and HardInfo running with superuser privileges" +msgstr " ... e HardInfo rodando com privilégios de superutilizador" + +#: modules/devices/dmi_memory.c:949 +msgid " eeprom module loaded (for SDR, DDR, DDR2, DDR3)" +msgstr " eeprom módulo carregado (para SDR, DDR, DDR2, DDR3)" + +#: modules/devices/dmi_memory.c:950 +msgid "" +" ... or ee1004 module loaded and configured! " +"(for DDR4)" +msgstr "" +" ... ou ee1004 módulo carregado e configurado! " +"(para DDR4)" + +#: modules/devices/dmi_memory.c:961 +msgid "Memory information requires one or both of the following:" +msgstr "As informações de memória precisam um ou ambos do seguinte:" + +#: modules/devices/dmi_memory.c:982 +msgid "" +"\"More often than not, information contained in the DMI tables is " +"inaccurate,\n" +"incomplete or simply wrong.\" -dmidecode manual page" +msgstr "" +"\"Na maioria das vezes, as informações contidas nas tabelas DMI são " +"imprecisas,\n" +"incompletas ou simplesmente incorretas. Página do manual \" -" +"dmidecode" + +#: modules/devices/firmware.c:69 +msgid "Device cannot be removed easily" +msgstr "O dispositivo não pode ser removido facilmente" + +#: modules/devices/firmware.c:70 +msgid "Device is updatable in this or any other mode" +msgstr "O dispositivo será atualizado neste ou em qualquer outro modo" + +#: modules/devices/firmware.c:71 +msgid "Update can only be done from offline mode" +msgstr "Atualização apenas pode ser feita a partir do modo offline" + +#: modules/devices/firmware.c:72 +msgid "Requires AC power" +msgstr "Precisa de energia AC" + +#: modules/devices/firmware.c:73 +msgid "Is locked and can be unlocked" +msgstr "Está bloqueado e pode ser desbloqueado" + +#: modules/devices/firmware.c:74 +msgid "Is found in current metadata" +msgstr "Encontrado no atual banco de metadados" + +#: modules/devices/firmware.c:75 +msgid "Requires a bootloader mode to be manually enabled by the user" +msgstr "" +"Precisa de um modo bootloader para ser manualmente ativado pelo utilizador" + +#: modules/devices/firmware.c:76 +msgid "Has been registered with other plugins" +msgstr "Foi registrado com outros plugins" + +#: modules/devices/firmware.c:77 +msgid "Requires a reboot to apply firmware or to reload hardware" +msgstr "Requer um reinício para aplicar o firmware ou recarregar o hardware" + +#: modules/devices/firmware.c:78 +msgid "Requires system shutdown to apply firmware" +msgstr "Requer o encerrar do sistema para aplicar o firmware" + +#: modules/devices/firmware.c:79 +msgid "Has been reported to a metadata server" +msgstr "Foi relatado a um servidor de metadados" + +#: modules/devices/firmware.c:80 +msgid "User has been notified" +msgstr "O utilizador foi notificado" + +#: modules/devices/firmware.c:81 +msgid "Always use the runtime version rather than the bootloader" +msgstr "" +"Use sempre a versão de tempo de execução em vez do carregador de arranque" + +#: modules/devices/firmware.c:82 +msgid "Install composite firmware on the parent before the child" +msgstr "Instalar firmware composto no antecessor antes do sucessor" + +#: modules/devices/firmware.c:83 +msgid "Is currently in bootloader mode" +msgstr "Está usando o modo bootloader" + +#: modules/devices/firmware.c:84 +msgid "The hardware is waiting to be replugged" +msgstr "O hardware está aguardando para ser replugado" + +#: modules/devices/firmware.c:85 +msgid "Ignore validation safety checks when flashing this device" +msgstr "" +"Ignorar as verificações de segurança de validação ao apagar este dispositivo" + +#: modules/devices/firmware.c:86 +msgid "Requires the update to be retried with a new plugin" +msgstr "Requer atualização para ser testado com um novo plugin" + +#: modules/devices/firmware.c:87 +msgid "Do not add instance IDs from the device baseclass" +msgstr "Não adicione IDs de instância da classe base do dispositivo" + +#: modules/devices/firmware.c:88 +msgid "Device update needs to be separately activated" +msgstr "A atualização de dispositivos precisa ser ativada separadamente" + +#: modules/devices/firmware.c:89 +msgid "" +"Ensure the version is a valid semantic version, e.g. numbers separated with " +"dots" +msgstr "" +"Certifique-se de que a versão é uma versão semântica válida, por exemplo, " +"números separados por pontos" + +#: modules/devices/firmware.c:90 +msgid "Extra metadata can be exposed about this device" +msgstr "Metadados extras podem ser expostos sobre este dispositivo" + +#: modules/devices/firmware.c:104 +msgid "DeviceId" +msgstr "DeviceId" + +#: modules/devices/firmware.c:104 +msgid "Guid" +msgstr "Guid" + +#: modules/devices/firmware.c:104 +msgid "Plugin" +msgstr "Plugin" + +#: modules/devices/firmware.c:104 modules/network.c:380 +msgid "Flags" +msgstr "Sinalizadores" + +#: modules/devices/firmware.c:105 +msgid "VendorId" +msgstr "ID do vendedor" + +#: modules/devices/firmware.c:105 +msgid "VersionBootloader" +msgstr "Versão do bootloader" + +#: modules/devices/firmware.c:106 +msgid "Icon" +msgstr "Ícone" + +#: modules/devices/firmware.c:106 +msgid "InstallDuration" +msgstr "Duração da instalação" + +#: modules/devices/firmware.c:106 +msgid "Created" +msgstr "Criado" + +#: modules/devices/firmware.c:245 +msgid "Firmware List" +msgstr "Lista de firmware" + +#: modules/devices/firmware.c:258 +msgid "Requires the fwupdmgr utility." +msgstr "Requer o utilitário fwupdmgr." + +#: modules/devices/gpu.c:84 modules/devices/pci.c:97 +msgid "SVendor" +msgstr "SVendor" + +#: modules/devices/gpu.c:85 modules/devices/pci.c:98 +msgid "SDevice" +msgstr "SDevice" + +#: modules/devices/gpu.c:93 modules/devices/pci.c:108 +msgid "PCI Express" +msgstr "PCI Express" + +#: modules/devices/gpu.c:94 modules/devices/pci.c:110 +msgid "Maximum Link Width" +msgstr "Largura máxima da ligação" + +#: modules/devices/gpu.c:95 modules/devices/pci.c:112 +msgid "Maximum Link Speed" +msgstr "Velocidade máxima da ligação" + +#: modules/devices/gpu.c:95 modules/devices/pci.c:111 modules/devices/pci.c:112 +msgid "GT/s" +msgstr "GT/s" + +#: modules/devices/gpu.c:105 +msgid "NVIDIA" +msgstr "NVIDIA" + +#: modules/devices/gpu.c:107 +msgid "BIOS Version" +msgstr "Versão do BIOS" + +#: modules/devices/gpu.c:108 +msgid "UUID" +msgstr "UUID" + +#: modules/devices/gpu.c:142 modules/devices/gpu.c:222 +#: modules/devices/inputdevices.c:110 modules/devices/pci.c:129 +#: modules/devices/usb.c:166 +msgid "Device Information" +msgstr "Informação de dispositivo" + +#: modules/devices/gpu.c:143 modules/devices/gpu.c:223 +msgid "Location" +msgstr "Localização" + +#: modules/devices/gpu.c:144 +msgid "DRM Device" +msgstr "Dispositivo DRM" + +#: modules/devices/gpu.c:145 modules/devices/pci.c:130 +#: modules/devices/usb.c:133 modules/devices/usb.c:174 +msgid "Class" +msgstr "Classe" + +#: modules/devices/gpu.c:154 modules/devices/pci.c:135 +msgid "In Use" +msgstr "Em uso" + +#: modules/devices/gpu.c:185 +msgid "Unknown integrated GPU" +msgstr "GPU integrado desconhecido" + +#: modules/devices/gpu.c:191 +msgid "clock-frequency property" +msgstr "propriedade da frequência-clock" + +#: modules/devices/gpu.c:192 +msgid "Operating Points (OPPv1)" +msgstr "Operating Points (OPPv1)" + +#: modules/devices/gpu.c:193 +msgid "Operating Points (OPPv2)" +msgstr "Operating Points (OPPv2)" + +#: modules/devices/gpu.c:229 +msgid "Device Tree Node" +msgstr "Device Tree Node" + +#: modules/devices/gpu.c:232 modules/devices/monitors.c:471 +#: modules/network/net.c:454 +msgid "Status" +msgstr "Estado" + +#: modules/devices/gpu.c:249 +msgid "GPUs" +msgstr "GPUs" + +#: modules/devices/gpu.c:273 +msgid "No GPU devices found" +msgstr "Nenhum dispositivo GPU encontrado" + +#: modules/devices/ia64/processor.c:108 +msgid "IA64 Processor" +msgstr "Processador IA64" + +#: modules/devices/ia64/processor.c:163 +msgid "Architecture Revision" +msgstr "Revisão de Arquitetura" + +#: modules/devices/ia64/processor.c:170 +msgid "CPU regs" +msgstr "Regs da CPU" + +#: modules/devices/ia64/processor.c:171 +msgid "Features" +msgstr "Características" + +#: modules/devices/inputdevices.c:113 modules/devices/pci.c:139 +#: modules/devices/usb.c:180 +msgid "Bus" +msgstr "Bus" + +#: modules/devices/inputdevices.c:119 +msgid "Connected to" +msgstr "Conectado a" + +#: modules/devices/inputdevices.c:123 +msgid "InfraRed port" +msgstr "Porta de infravermelhos" + +#: modules/devices/m68k/processor.c:85 modules/devices/riscv/processor.c:185 +msgid "MMU" +msgstr "MMU" + +#: modules/devices/m68k/processor.c:86 modules/devices/sparc/processor.c:76 +msgid "FPU" +msgstr "FPU" + +#: modules/devices/m68k/processor.c:90 +msgid "Calibration" +msgstr "Calibração" + +#: modules/devices/mips/processor.c:76 +msgid "System Type" +msgstr "Tipo de sistema" + +#: modules/devices/monitors.c:29 modules/devices/monitors.c:253 +#: modules/devices/monitors.c:346 modules/devices/spd-decode.c:595 +msgid "(Unspecified)" +msgstr "(Não especificado)" + +#: modules/devices/monitors.c:228 +#, c-format +msgid "Week %d of %d" +msgstr "Semana %d de %d" + +#: modules/devices/monitors.c:238 +msgid "Ok" +msgstr "Aceitar" + +#: modules/devices/monitors.c:238 +msgid "Fail" +msgstr "Falha" + +#: modules/devices/monitors.c:266 modules/devices/monitors.c:274 +#: modules/devices/monitors.c:282 modules/devices/monitors.c:293 +#: modules/devices/monitors.c:301 modules/devices/monitors.c:308 +#: modules/devices/monitors.c:316 modules/devices/monitors.c:324 +#: modules/devices/monitors.c:332 modules/devices/monitors.c:338 +msgid "(Empty List)" +msgstr "(Lista vazia)" + +#: modules/devices/monitors.c:390 +msgid "Signal Type" +msgstr "Tipo de sinal" + +#: modules/devices/monitors.c:390 +msgid "Digital" +msgstr "Digital" + +#: modules/devices/monitors.c:390 +msgid "Analog" +msgstr "Analógico" + +#: modules/devices/monitors.c:391 modules/devices/usb.c:132 +#: modules/network.c:310 modules/network.c:363 modules/network.c:380 +msgid "Interface" +msgstr "Interface" + +#: modules/devices/monitors.c:392 +msgid "Bits per Color Channel" +msgstr "Bits por canal de cores" + +#: modules/devices/monitors.c:393 +msgid "Speaker Allocation" +msgstr "Alocação de altifalante" + +#: modules/devices/monitors.c:394 +msgid "Output (Max)" +msgstr "Saída (Máx.)" + +#: modules/devices/monitors.c:397 +msgid "EDID Device" +msgstr "Dispositivo EDID" + +#: modules/devices/monitors.c:401 +msgid "Serial" +msgstr "Série" + +#: modules/devices/monitors.c:402 +msgid "Manufacture Date" +msgstr "Data de fabrico" + +#: modules/devices/monitors.c:403 +msgid "EDID Meta" +msgstr "EDID Meta" + +#: modules/devices/monitors.c:404 +msgid "Data Size" +msgstr "Tamanho dos dados" + +#: modules/devices/monitors.c:404 +msgid "bytes" +msgstr "bytes" + +#: modules/devices/monitors.c:406 +msgid "Extension Blocks" +msgstr "Blocos de extensão" + +#: modules/devices/monitors.c:407 +msgid "Extended to" +msgstr "Estendido para" + +#: modules/devices/monitors.c:408 +msgid "Checksum" +msgstr "Código" + +#: modules/devices/monitors.c:409 +msgid "EDID Descriptors" +msgstr "Descritores EDID" + +#: modules/devices/monitors.c:410 +msgid "Detailed Timing Descriptors (DTD)" +msgstr "Detailed Timing Descriptors (DTD)" + +#: modules/devices/monitors.c:411 +msgid "Established Timings Bitmap (ETB)" +msgstr "Established Timings Bitmap (ETB)" + +#: modules/devices/monitors.c:412 +msgid "Standard Timings (STD)" +msgstr "Standard Timings (STD)" + +#: modules/devices/monitors.c:413 +msgid "E-EDID Extension Blocks" +msgstr "Blocos de extensão E-EDID" + +#: modules/devices/monitors.c:414 +msgid "EIA/CEA-861 Data Blocks" +msgstr "EIA/CEA-861 Blocos de dados" + +#: modules/devices/monitors.c:415 +msgid "EIA/CEA-861 Short Audio Descriptors" +msgstr "EIA/CEA-861 Descritores de áudio curtos" + +#: modules/devices/monitors.c:416 +msgid "EIA/CEA-861 Short Video Descriptors" +msgstr "EIA/CEA-861 Descritores de vídeo curtos" + +#: modules/devices/monitors.c:417 +msgid "DisplayID Timings" +msgstr "DisplayID Timings" + +#: modules/devices/monitors.c:418 +msgid "DisplayID Strings" +msgstr "DisplayID Strings" + +#: modules/devices/monitors.c:419 +msgid "Hex Dump" +msgstr "Hex Dump" + +#: modules/devices/monitors.c:419 +msgid "Data" +msgstr "Data" + +#: modules/devices/monitors.c:469 modules/devices/monitors.c:501 +#: modules/devices/pci.c:137 modules/devices/usb.c:179 +msgid "Connection" +msgstr "Ligação" + +#: modules/devices/monitors.c:470 +msgid "DRM" +msgstr "DRM" + +#: modules/devices/parisc/processor.c:107 +msgid "PA-RISC Processor" +msgstr "Processador PA-RISC" + +#: modules/devices/parisc/processor.c:161 +msgid "HVersion" +msgstr "HVersion" + +#: modules/devices/parisc/processor.c:162 +msgid "SVersion" +msgstr "SVersion" + +#: modules/devices/pci.c:109 +msgid "Link Width" +msgstr "Largura da ligação" + +#: modules/devices/pci.c:111 +msgid "Link Speed" +msgstr "Velocidade da ligação" + +#: modules/devices/pci.c:138 +msgid "Domain" +msgstr "Domínio" + +#: modules/devices/pci.c:141 +msgid "Function" +msgstr "Função" + +#: modules/devices/pci.c:185 +msgid "No PCI devices found" +msgstr "Nenhum dispositivo PCI encontrado" + +#: modules/devices/ppc/processor.c:117 +msgid "POWER Processor" +msgstr "Processador POWER" + +#: modules/devices/printers.c:81 +msgid "⚬ Can do black and white printing=\n" +msgstr "⚬ Pode fazer impressão a preto e branco=\n" + +#: modules/devices/printers.c:83 +msgid "⚬ Can do color printing=\n" +msgstr "⚬ Pode fazer impressão colorido=\n" + +#: modules/devices/printers.c:85 +msgid "⚬ Can do duplexing=\n" +msgstr "⚬ Pode fazer duplex=\n" + +#: modules/devices/printers.c:87 +msgid "⚬ Can do staple output=\n" +msgstr "⚬Pode fazer a saída de grampos=\n" + +#: modules/devices/printers.c:89 +msgid "⚬ Can do copies=\n" +msgstr "⚬ pode fazer copias=\n" + +#: modules/devices/printers.c:91 +msgid "⚬ Can collate copies=\n" +msgstr "⚬ Pode agrupar cópias=\n" + +#: modules/devices/printers.c:93 +msgid "⚬ Printer is rejecting jobs=\n" +msgstr "⚬ A impressora está a rejeitar trabalhos=\n" + +#: modules/devices/printers.c:95 +msgid "⚬ Printer was automatically discovered and added=\n" +msgstr "⚬A impressora foi descoberta e adicionada automaticamente=\n" + +#: modules/devices/printers.c:110 +msgid "Idle" +msgstr "Inactiva" + +#: modules/devices/printers.c:112 +msgid "Printing a Job" +msgstr "Imprimindo um trabalho" + +#: modules/devices/printers.c:114 +msgid "Stopped" +msgstr "Parada" + +#: modules/devices/printers.c:190 +msgid "" +"[Printers]\n" +"No suitable CUPS library found=" +msgstr "" +"[Impressoras]\n" +"Nenhuma biblioteca apropriada do CUPS encontrada=" + +#: modules/devices/printers.c:200 +msgid "[Printers (CUPS)]\n" +msgstr "[Impressoras (CUPS)]\n" + +#: modules/devices/printers.c:263 +msgid "" +"[Printers]\n" +"No printers found=\n" +msgstr "" +"[Impressoras]\n" +"Nenhuma impressora encontrada=\n" + +#: modules/devices/riscv/processor.c:107 +msgid "RISC-V Processor" +msgstr "Processador RISC-V" + +#: modules/devices/riscv/processor.c:184 +msgid "uarch" +msgstr "uarch" + +#. /ext:RV32 +#: modules/devices/riscv/riscv_data.c:37 +msgctxt "rv-ext" +msgid "RISC-V 32-bit" +msgstr "RISC-V 32-bit" + +#. /ext:RV64 +#: modules/devices/riscv/riscv_data.c:38 +msgctxt "rv-ext" +msgid "RISC-V 64-bit" +msgstr "RISC-V 64-bit" + +#. /ext:RV128 +#: modules/devices/riscv/riscv_data.c:39 +msgctxt "rv-ext" +msgid "RISC-V 128-bit" +msgstr "RISC-V 128-bit" + +#. /ext:E +#: modules/devices/riscv/riscv_data.c:40 +msgctxt "rv-ext" +msgid "Base embedded integer instructions (15 registers)" +msgstr "Instruções de inteiros embutidos na base (15 registadores)" + +#. /ext:I +#: modules/devices/riscv/riscv_data.c:41 +msgctxt "rv-ext" +msgid "Base integer instructions (31 registers)" +msgstr "Instruções de base inteira (31 registos)" + +#. /ext:M +#: modules/devices/riscv/riscv_data.c:42 +msgctxt "rv-ext" +msgid "Hardware integer multiply and divide" +msgstr "O número inteiro de hardware multiplica-se e divide-se" + +#. /ext:A +#: modules/devices/riscv/riscv_data.c:43 +msgctxt "rv-ext" +msgid "Atomic memory operations" +msgstr "Operações de memória atómica" + +#. /ext:C +#: modules/devices/riscv/riscv_data.c:44 +msgctxt "rv-ext" +msgid "Compressed 16-bit instructions" +msgstr "Instruções de 16 bits compactadas" + +#. /ext:F +#: modules/devices/riscv/riscv_data.c:45 +msgctxt "rv-ext" +msgid "Floating-point instructions, single-precision" +msgstr "Instruções de ponto flutuante, precisão única" + +#. /ext:D +#: modules/devices/riscv/riscv_data.c:46 +msgctxt "rv-ext" +msgid "Floating-point instructions, double-precision" +msgstr "Instruções de ponto flutuante, precisão dupla" + +#. /ext:Q +#: modules/devices/riscv/riscv_data.c:47 +msgctxt "rv-ext" +msgid "Floating-point instructions, quad-precision" +msgstr "Instruções de ponto flutuante, precisão quádrupla" + +#. /ext:B +#: modules/devices/riscv/riscv_data.c:48 +msgctxt "rv-ext" +msgid "Bit manipulation instructions" +msgstr "Instruções de manipulação de bits" + +#. /ext:V +#: modules/devices/riscv/riscv_data.c:49 +msgctxt "rv-ext" +msgid "Vector operations" +msgstr "Operações vetoriais" + +#. /ext:T +#: modules/devices/riscv/riscv_data.c:50 +msgctxt "rv-ext" +msgid "Transactional memory" +msgstr "Memória transacional" + +#. /ext:P +#: modules/devices/riscv/riscv_data.c:51 +msgctxt "rv-ext" +msgid "Packed SIMD instructions" +msgstr "Instruções embaladas SIMD" + +#. /ext:L +#: modules/devices/riscv/riscv_data.c:52 +msgctxt "rv-ext" +msgid "Decimal floating-point instructions" +msgstr "Instruções decimais de ponto flutuante" + +#. /ext:J +#: modules/devices/riscv/riscv_data.c:53 +msgctxt "rv-ext" +msgid "Dynamically translated languages" +msgstr "Idiomas dinamicamente traduzidos" + +#. /ext:N +#: modules/devices/riscv/riscv_data.c:54 +msgctxt "rv-ext" +msgid "User-level interrupts" +msgstr "Interrupções no nível do utilizador" + +#: modules/devices/s390/processor.c:92 +msgid "S390 Processor" +msgstr "Processador S390" + +#: modules/devices/s390/processor.c:133 +msgid "ID String" +msgstr "String de ID" + +#: modules/devices/sh/processor.c:55 +msgid "SuperH Processor" +msgstr "Processador SuperH" + +#: modules/devices/sh/processor.c:88 +msgid "Bus Frequency" +msgstr "Frequência de Barramento" + +#: modules/devices/sh/processor.c:89 +msgid "Module Frequency" +msgstr "Frequência do Módulo" + +#: modules/devices/spd-decode.c:306 +msgid "Row address bits" +msgstr "Bits de endereço de linha" + +#: modules/devices/spd-decode.c:307 +msgid "Column address bits" +msgstr "Bits de endereço de coluna" + +#: modules/devices/spd-decode.c:308 +msgid "Number of rows" +msgstr "Número de linhas" + +#: modules/devices/spd-decode.c:309 +msgid "Data width" +msgstr "Largura da data" + +#: modules/devices/spd-decode.c:310 +msgid "Interface signal levels" +msgstr "Níveis de sinal de interface" + +#: modules/devices/spd-decode.c:311 +msgid "Configuration type" +msgstr "Tipo de configuração" + +#: modules/devices/spd-decode.c:312 +msgid "Refresh" +msgstr "Atualizar" + +#: modules/devices/spd-decode.c:313 modules/devices/spd-decode.c:397 +#: modules/devices/spd-decode.c:492 modules/devices/spd-decode.c:617 +msgid "Timings" +msgstr "Tempos" + +#: modules/devices/spd-decode.c:593 +msgid "Ranks" +msgstr "Ranks" + +#: modules/devices/spd-decode.c:594 +msgid "IO Pins per Chip" +msgstr "Pinos de E/S por chip" + +#: modules/devices/spd-decode.c:595 +msgid "Die count" +msgstr "Die count" + +#: modules/devices/spd-decode.c:596 +msgid "Thermal Sensor" +msgstr "Sensor termal" + +#: modules/devices/spd-decode.c:596 +msgid "Present" +msgstr "Presente" + +#: modules/devices/spd-decode.c:596 +msgid "Not present" +msgstr "Não presente" + +#: modules/devices/spd-decode.c:597 +msgid "Supported Voltages" +msgstr "Voltagens suportadas" + +#: modules/devices/spd-decode.c:601 +msgid "Supported CAS Latencies" +msgstr "Voltagens CAS suportadas" + +#: modules/devices/spd-decode.c:638 +msgid "Invalid" +msgstr "Inválido" + +#: modules/devices/spd-decode.c:870 +msgid "XMP Profile" +msgstr "Perfil XMP" + +#: modules/devices/spd-decode.c:871 modules/devices/usb.c:173 +msgid "Speed" +msgstr "Velocidade" + +#: modules/devices/spd-decode.c:872 modules/devices/spd-decode.c:914 +#: modules/devices/x86/processor.c:715 +msgid "Voltage" +msgstr "Voltagem" + +#: modules/devices/spd-decode.c:873 +msgid "XMP Timings" +msgstr "XMP Timings" + +#: modules/devices/spd-decode.c:915 +msgid "XMP" +msgstr "XMP" + +#: modules/devices/spd-decode.c:916 +msgid "JEDEC Timings" +msgstr "JEDEC Timings" + +#: modules/devices/storage.c:84 +msgid "Read Error Rate" +msgstr "Ler taxa de erros" + +#: modules/devices/storage.c:85 +msgid "Throughput Performance" +msgstr "Capacidades de desempenho" + +#: modules/devices/storage.c:86 +msgid "Spin-Up Time" +msgstr "Tempo de Rotação" + +#: modules/devices/storage.c:87 +msgid "Start/Stop Count" +msgstr "Número de Paragens/Arranques" + +#: modules/devices/storage.c:88 +msgid "Reallocated Sector Count" +msgstr "Contagem de sectores realocados" + +#: modules/devices/storage.c:89 +msgid "Read Channel Margin" +msgstr "Margem do Canal de Leitura" + +#: modules/devices/storage.c:90 +msgid "Seek Error Rate" +msgstr "Taxa de Erros de Posicionamento" + +#: modules/devices/storage.c:91 +msgid "Seek Timer Performance" +msgstr "Performance de temporizador de procura" + +#: modules/devices/storage.c:92 modules/devices/storage.c:131 +msgid "Power-On Hours" +msgstr "Horas de Funcionamento" + +#: modules/devices/storage.c:93 +msgid "Spin Retry Count" +msgstr "Número de Repetições da Rotação" + +#: modules/devices/storage.c:94 +msgid "Calibration Retry Count" +msgstr "Contagem de tentativas de calibração" + +#: modules/devices/storage.c:95 +msgid "Power Cycle Count" +msgstr "Número de Ciclos de Energia" + +#: modules/devices/storage.c:96 modules/devices/storage.c:113 +msgid "Soft Read Error Rate" +msgstr "Taxa de Erros de Leitura Leves" + +#: modules/devices/storage.c:97 +msgid "Runtime Bad Block" +msgstr "Runtime Bad Block" + +#: modules/devices/storage.c:98 +msgid "End-to-End error" +msgstr "Erro Ponto-a-Ponto" + +#: modules/devices/storage.c:99 +msgid "Reported Uncorrectable Errors" +msgstr "Erros Incorrigíveis Detectados" + +#: modules/devices/storage.c:100 +msgid "Command Timeout" +msgstr "Tempo-Limite do Comando Expirado" + +#: modules/devices/storage.c:101 +msgid "High Fly Writes" +msgstr "Escritas Desviadas Elevadas" + +#: modules/devices/storage.c:102 +msgid "Airflow Temperature" +msgstr "Sensor de temperatura" + +#: modules/devices/storage.c:103 +msgid "G-sense Error Rate" +msgstr "Taxa de Erros do Sensor-G" + +#: modules/devices/storage.c:104 +msgid "Power-off Retract Count" +msgstr "Contagem de retratação de desligar" + +#: modules/devices/storage.c:105 +msgid "Load Cycle Count" +msgstr "Número de Ciclos de Carregamento" + +#: modules/devices/storage.c:106 modules/devices/storage.c:129 +msgid "Temperature" +msgstr "Temperatura" + +#: modules/devices/storage.c:107 +msgid "Hardware ECC Recovered" +msgstr "ECC por 'Hardware' Recuperado" + +#: modules/devices/storage.c:108 +msgid "Reallocation Event Count" +msgstr "Número de Eventos de Realocação" + +#: modules/devices/storage.c:109 +msgid "Current Pending Sector Count" +msgstr "Número de Sectores Pendentes Actuais" + +#: modules/devices/storage.c:110 +msgid "Uncorrectable Sector Count" +msgstr "Contagem de sectores incorrigíveis" + +#: modules/devices/storage.c:111 +msgid "UltraDMA CRC Error Count" +msgstr "Número de Erros CRC do UltraDMA" + +#: modules/devices/storage.c:112 +msgid "Multi-Zone Error Rate" +msgstr "Taxa de erro de várias zonas" + +#: modules/devices/storage.c:114 +msgid "Run Out Cancel" +msgstr "_Cancelar" + +#: modules/devices/storage.c:115 +msgid "Flying Height" +msgstr "Altura das Cabeças" + +#: modules/devices/storage.c:116 +msgid "Spin High Current" +msgstr "Corrente Alta de Rotação" + +#: modules/devices/storage.c:117 +msgid "Spin Buzz" +msgstr "Toques de Rotação" + +#: modules/devices/storage.c:118 +msgid "Offline Seek Performance" +msgstr "Performance de Posicionamento Desligado" + +#: modules/devices/storage.c:119 +msgid "Disk Shift" +msgstr "Desvio do Disco" + +#: modules/devices/storage.c:120 +msgid "G-Sense Error Rate" +msgstr "Taxa de Erros do Sensor-G" + +#: modules/devices/storage.c:121 +msgid "Loaded Hours" +msgstr "Horas de Carga" + +#: modules/devices/storage.c:122 +msgid "Load/Unload Retry Count" +msgstr "Número de Repetições do Carregamento/Descarregamento" + +#: modules/devices/storage.c:123 +msgid "Load Friction" +msgstr "Fricção no Carregamento" + +#: modules/devices/storage.c:124 +msgid "Load/Unload Cycle Count" +msgstr "Número de Ciclos de Carregamento/Descarregamento" + +#: modules/devices/storage.c:125 +msgid "Load-in time" +msgstr "Tempo de carregamento" + +#: modules/devices/storage.c:126 +msgid "Torque Amplification Count" +msgstr "Número de Amplificações do Binário" + +#: modules/devices/storage.c:127 +msgid "Power-Off Retract Count" +msgstr "Número de retrações ao desligar" + +#: modules/devices/storage.c:128 +msgid "GMR Head Amplitude" +msgstr "Amplitude das Cabeças GMR" + +#: modules/devices/storage.c:130 +msgid "Endurance Remaining" +msgstr "Performance Restante" + +#: modules/devices/storage.c:132 +msgid "Good Block Rate" +msgstr "Good Block Rate" + +#: modules/devices/storage.c:133 +msgid "Head Flying Hours" +msgstr "Head Flying Hours" + +#: modules/devices/storage.c:134 +msgid "Read Error Retry Rate" +msgstr "Taxa de Repetição dos Erros de Leitura" + +#: modules/devices/storage.c:135 +msgid "Total LBAs Written" +msgstr "Total LBAs Written" + +#: modules/devices/storage.c:136 +msgid "Total LBAs Read" +msgstr "Total LBAs Read" + +#: modules/devices/storage.c:141 +msgid "" +"\n" +"[UDisks2]\n" +msgstr "" +"\n" +"[UDisks2]\n" + +#: modules/devices/storage.c:199 +msgid "Removable" +msgstr "Removível" + +#: modules/devices/storage.c:199 +msgid "Fixed" +msgstr "Fixo" + +#: modules/devices/storage.c:202 +msgid "Ejectable" +msgstr "Ejetável" + +#: modules/devices/storage.c:205 +msgid "Self-monitoring (S.M.A.R.T.)" +msgstr "Monitorização automática (S.M.A.R.T.)" + +#: modules/devices/storage.c:208 modules/devices/x86/processor.c:663 +msgid "Power Management" +msgstr "Gestão de energia" + +#: modules/devices/storage.c:211 +msgid "Advanced Power Management" +msgstr "Gestão avançada de energia" + +#: modules/devices/storage.c:214 +msgid "Automatic Acoustic Management" +msgstr "Gestão acústica automática" + +#: modules/devices/storage.c:217 +#, c-format +msgid "" +"[Drive Information]\n" +"Model=%s\n" +msgstr "" +"[Informação da unidade]\n" +"Modelo=%s\n" + +#: modules/devices/storage.c:221 modules/devices/storage.c:449 +#: modules/devices/storage.c:648 +#, c-format +msgid "Vendor=%s\n" +msgstr "Fabricante=%s\n" + +#: modules/devices/storage.c:226 +#, c-format +msgid "" +"Revision=%s\n" +"Block Device=%s\n" +"Serial=%s\n" +"Size=%s\n" +"Features=%s\n" +msgstr "" +"Revisão=%s\n" +"Dispositivo de bloqueio=%s\n" +"Série=%s\n" +"Tamanho=%s\n" +"Funcionalidades=%s\n" + +#: modules/devices/storage.c:240 +#, c-format +msgid "Rotation Rate=%d RPM\n" +msgstr "Taxa de rotação=%d RPM\n" + +#: modules/devices/storage.c:243 +#, c-format +msgid "" +"Media=%s\n" +"Media compatibility=%s\n" +msgstr "" +"Mídia=%s\n" +"Compatibilidade da mídia=%s\n" + +#: modules/devices/storage.c:250 +#, c-format +msgid "Connection bus=%s\n" +msgstr "Barramento de ligação=%s\n" + +#: modules/devices/storage.c:253 +#, c-format +msgid "" +"[Self-monitoring (S.M.A.R.T.)]\n" +"Status=%s\n" +"Bad Sectors=%ld\n" +"Power on time=%d days %d hours\n" +"Temperature=%d°C\n" +msgstr "" +"[Auto-monitorização (S.M.A.R.T.)]\n" +"Estado=%s\n" +"Setores defeituosos=%ld\n" +"Tempo de atividade=%d dias %d horas\n" +"Temperatura=%d°C\n" + +#: modules/devices/storage.c:259 +msgid "Failing" +msgstr "Falhando" + +#: modules/devices/storage.c:259 +msgid "OK" +msgstr "OK" + +#: modules/devices/storage.c:265 +msgid "" +"[S.M.A.R.T. Attributes]\n" +"Attribute=Normalized Value / Worst / Threshold\n" +msgstr "" +"[Atributos S.M.A.R.T.]\n" +"Atributo=Valor Normalizado / Pior / Limite\n" + +#: modules/devices/storage.c:297 +#, c-format +msgid "(%d) %s=%s\n" +msgstr "(%d) %s=%s\n" + +#: modules/devices/storage.c:306 +#, c-format +msgid "" +"[Partition table]\n" +"Type=%s\n" +msgstr "" +"[Tabela de partição]\n" +"Tipo=%s\n" + +#: modules/devices/storage.c:325 +#, c-format +msgid "Partition %s=%s\n" +msgstr "Partição %s=%s\n" + +#: modules/devices/storage.c:375 +msgid "" +"\n" +"[SCSI Disks]\n" +msgstr "" +"\n" +"[SCSI Discos]\n" + +#: modules/devices/storage.c:446 modules/devices/storage.c:645 +#, c-format +msgid "" +"[Device Information]\n" +"Model=%s\n" +msgstr "" +"[Informação de dispositivo]\n" +"Modelo=%s\n" + +#: modules/devices/storage.c:453 +#, c-format +msgid "" +"Type=%s\n" +"Revision=%s\n" +"[SCSI Controller]\n" +"Controller=scsi%d\n" +"Channel=%d\n" +"ID=%d\n" +"LUN=%d\n" +msgstr "" +"Tipo=%s\n" +"Revisão=%s\n" +"[SCSI Controlador]\n" +"Controlador=scsi%d\n" +"Chanal=%d\n" +"ID=%d\n" +"LUN=%d\n" + +#: modules/devices/storage.c:499 +msgid "" +"\n" +"[IDE Disks]\n" +msgstr "" +"\n" +"[IDE Discos]\n" + +#: modules/devices/storage.c:582 +#, c-format +msgid "Driver=%s\n" +msgstr "Driver=%s\n" + +#: modules/devices/storage.c:650 +#, c-format +msgid "" +"Device Name=hd%c\n" +"Media=%s\n" +"Cache=%dkb\n" +msgstr "" +"Nome do dispositivo=hd%c\n" +"mídia=%s\n" +"Cache=%dkb\n" + +#: modules/devices/storage.c:660 +#, c-format +msgid "" +"[Geometry]\n" +"Physical=%s\n" +"Logical=%s\n" +msgstr "" +"[Geometria]\n" +"Físico=%s\n" +"Lógico=%s\n" + +#: modules/devices/storage.c:670 +#, c-format +msgid "" +"[Capabilities]\n" +"%s" +msgstr "" +"[Capacidades]\n" +"%s" + +#: modules/devices/storage.c:677 +#, c-format +msgid "" +"[Speeds]\n" +"%s" +msgstr "" +"[Velocidades]\n" +"%s" + +#: modules/devices/usb.c:134 modules/devices/usb.c:175 +msgid "Sub-class" +msgstr "Subclasse" + +#: modules/devices/usb.c:135 modules/devices/usb.c:176 modules/network.c:347 +msgid "Protocol" +msgstr "Protocolo" + +#: modules/devices/usb.c:143 modules/network/net.c:451 +msgid "Mb/s" +msgstr "Mb/s" + +#: modules/devices/usb.c:171 +msgid "Max Current" +msgstr "Corrente máxima" + +#: modules/devices/usb.c:171 +msgid "mA" +msgstr "mA" + +#: modules/devices/usb.c:172 +msgid "USB Version" +msgstr "Versão do USB" + +#: modules/devices/usb.c:177 +msgid "Device Version" +msgstr "Versão do dispositivo" + +#: modules/devices/usb.c:221 +msgid "No USB devices found." +msgstr "Nenhum dispositivo USB encontrado." + +#: modules/devices/x86/processor.c:149 +msgid "Cache information not available=\n" +msgstr "Informações de cache não disponíveis=\n" + +#: modules/devices/x86/processor.c:155 +#, c-format +msgid "Level %d (%s)=%d-way set-associative, %d sets, %dKB size\n" +msgstr "" +"Nível %d (%s)=%d-maneira conjunto-associativa, %d conjuntos, %dKB tamanho\n" + +#. /cache type, as appears in: Level 1 (Data) +#: modules/devices/x86/processor.c:170 +msgctxt "cache-type" +msgid "Data" +msgstr "Data" + +#. /cache type, as appears in: Level 1 (Instruction) +#: modules/devices/x86/processor.c:171 +msgctxt "cache-type" +msgid "Instruction" +msgstr "Instrução" + +#. /cache type, as appears in: Level 2 (Unified) +#: modules/devices/x86/processor.c:172 +msgctxt "cache-type" +msgid "Unified" +msgstr "Unificado" + +#: modules/devices/x86/processor.c:367 +msgid "Caches" +msgstr "Caches" + +#: modules/devices/x86/processor.c:418 modules/devices/x86/processor.c:435 +#, c-format +msgid "Level %d (%s)#%d=%dx %dKB (%dKB), %d-way set-associative, %d sets\n" +msgstr "" +"Level %d (%s)#%d=%dx %dKB (%dKB), %d-maneira conjunta-associativa, %d " +"Conjuntos\n" + +#: modules/devices/x86/processor.c:647 +msgid "Model Name" +msgstr "Nome do modelo" + +#: modules/devices/x86/processor.c:648 +msgid "Family, model, stepping" +msgstr "Família, modelo, pisar Stpeping" + +#: modules/devices/x86/processor.c:654 +msgid "Microcode Version" +msgstr "Versão do microcódigo" + +#: modules/devices/x86/processor.c:655 +msgid "Configuration" +msgstr "Configuração" + +#: modules/devices/x86/processor.c:656 +msgid "Cache Size" +msgstr "Tamanho do Cache" + +#: modules/devices/x86/processor.c:656 +msgid "kb" +msgstr "kb" + +#: modules/devices/x86/processor.c:664 +msgid "Bug Workarounds" +msgstr "Soluções alternativas para insetos" + +#: modules/devices/x86/processor.c:691 +msgid "Socket Information" +msgstr "Informação Socket" + +#: modules/devices/x86/processor.c:712 +msgid "CPU Socket" +msgstr "CPU Socket" + +#: modules/devices/x86/processor.c:716 +msgid "External Clock" +msgstr "Clock externo" + +#: modules/devices/x86/processor.c:717 +msgid "Max Frequency" +msgstr "Frequência máxima" + +#: modules/devices/x86/processor.c:748 modules/devices/x86/processor.c:769 +msgid "Package Information" +msgstr "Informação do pacote" + +#: modules/devices/x86/processor.c:796 +msgid "Socket:Core" +msgstr "Socket:Núcleo" + +#: modules/devices/x86/processor.c:796 +msgid "Thread" +msgstr "Thread" + +#. /flag:fpu +#: modules/devices/x86/x86_data.c:43 +msgctxt "x86-flag" +msgid "Onboard FPU (floating point support)" +msgstr "FPU a bordo (suporte a ponto flutuante)" + +#. /flag:vme +#: modules/devices/x86/x86_data.c:44 +msgctxt "x86-flag" +msgid "Virtual 8086 mode enhancements" +msgstr "Aprimoramentos do modo virtual 8086" + +#. /flag:de +#: modules/devices/x86/x86_data.c:45 +msgctxt "x86-flag" +msgid "Debugging Extensions (CR4.DE)" +msgstr "Extensões de Depuração (CR4.DE)" + +#. /flag:pse +#: modules/devices/x86/x86_data.c:46 +msgctxt "x86-flag" +msgid "Page Size Extensions (4MB memory pages)" +msgstr "Extensões de tamanho de página (4MB de páginas de memória)" + +#. /flag:tsc +#: modules/devices/x86/x86_data.c:47 +msgctxt "x86-flag" +msgid "Time Stamp Counter (RDTSC)" +msgstr "Contador de Carimbo de Tempo (RDTSC)" + +#. /flag:msr +#: modules/devices/x86/x86_data.c:48 +msgctxt "x86-flag" +msgid "Model-Specific Registers (RDMSR, WRMSR)" +msgstr "Registros Específicos do Modelo (RDMSR, WRMSR)" + +#. /flag:pae +#: modules/devices/x86/x86_data.c:49 +msgctxt "x86-flag" +msgid "Physical Address Extensions (support for more than 4GB of RAM)" +msgstr "Extensões de endereço físico (suporte para mais de 4 GB de RAM)" + +#. /flag:mce +#: modules/devices/x86/x86_data.c:50 +msgctxt "x86-flag" +msgid "Machine Check Exception" +msgstr "Exceção de Verificação de Máquina" + +#. /flag:cx8 +#: modules/devices/x86/x86_data.c:51 +msgctxt "x86-flag" +msgid "CMPXCHG8 instruction (64-bit compare-and-swap)" +msgstr "Instrução CMPXCHG8 (comparação-e-swap de 64 bits)" + +#. /flag:apic +#: modules/devices/x86/x86_data.c:52 +msgctxt "x86-flag" +msgid "Onboard APIC" +msgstr "APIC a bordo" + +#. /flag:sep +#: modules/devices/x86/x86_data.c:53 +msgctxt "x86-flag" +msgid "SYSENTER/SYSEXIT" +msgstr "SYSENTER / SYSEXIT" + +#. /flag:mtrr +#: modules/devices/x86/x86_data.c:54 +msgctxt "x86-flag" +msgid "Memory Type Range Registers" +msgstr "Registros de intervalo de tipo de memória" + +#. /flag:pge +#: modules/devices/x86/x86_data.c:55 +msgctxt "x86-flag" +msgid "Page Global Enable (global bit in PDEs and PTEs)" +msgstr "Page Global Enable (global bit in PDEs and PTEs)" + +#. /flag:mca +#: modules/devices/x86/x86_data.c:56 +msgctxt "x86-flag" +msgid "Machine Check Architecture" +msgstr "Arquitetura de verificação de máquinas" + +#. /flag:cmov +#: modules/devices/x86/x86_data.c:57 +msgctxt "x86-flag" +msgid "CMOV instructions (conditional move) (also FCMOV)" +msgstr "Instruções CMOV (movimento condicional) (também FCMOV)" + +#. /flag:pat +#: modules/devices/x86/x86_data.c:58 +msgctxt "x86-flag" +msgid "Page Attribute Table" +msgstr "Tabela de Atributos da Página" + +#. /flag:pse36 +#: modules/devices/x86/x86_data.c:59 +msgctxt "x86-flag" +msgid "36-bit PSEs (huge pages)" +msgstr "PSEs de 36 bits (páginas enormes)" + +#. /flag:pn +#: modules/devices/x86/x86_data.c:60 +msgctxt "x86-flag" +msgid "Processor serial number" +msgstr "Número de série do processador" + +#. /flag:clflush +#: modules/devices/x86/x86_data.c:61 +msgctxt "x86-flag" +msgid "Cache Line Flush instruction" +msgstr "Instrução de limpeza de linha de cache" + +#. /flag:dts +#: modules/devices/x86/x86_data.c:62 +msgctxt "x86-flag" +msgid "" +"Debug Store (buffer for debugging and profiling instructions), or " +"alternately: digital thermal sensor" +msgstr "" +"Armazenamento de Depuração (buffer para instruções de depuração e criação de " +"perfil) ou alternativamente: sensor térmico digital" + +#. /flag:acpi +#: modules/devices/x86/x86_data.c:63 +msgctxt "x86-flag" +msgid "ACPI via MSR (temperature monitoring and clock speed modulation)" +msgstr "" +"ACPI via MSR (monitoramento de temperatura e modulação de velocidade do " +"clock)" + +#. /flag:mmx +#: modules/devices/x86/x86_data.c:64 +msgctxt "x86-flag" +msgid "Multimedia Extensions" +msgstr "Extensões Multimídia" + +#. /flag:fxsr +#: modules/devices/x86/x86_data.c:65 +msgctxt "x86-flag" +msgid "FXSAVE/FXRSTOR, CR4.OSFXSR" +msgstr "FXSAVE/FXRSTOR, CR4.OSFXSR" + +#. /flag:sse +#: modules/devices/x86/x86_data.c:66 +msgctxt "x86-flag" +msgid "Intel SSE vector instructions" +msgstr "Instruções vetoriais Intel SSE" + +#. /flag:sse2 +#: modules/devices/x86/x86_data.c:67 +msgctxt "x86-flag" +msgid "SSE2" +msgstr "SSE2" + +#. /flag:ss +#: modules/devices/x86/x86_data.c:68 +msgctxt "x86-flag" +msgid "CPU self snoop" +msgstr "Snoop auto CPU" + +#. /flag:ht +#: modules/devices/x86/x86_data.c:69 +msgctxt "x86-flag" +msgid "Hyper-Threading" +msgstr "Hyper-Threading" + +#. /flag:tm +#: modules/devices/x86/x86_data.c:70 +msgctxt "x86-flag" +msgid "Automatic clock control (Thermal Monitor)" +msgstr "Controle de relógio automático (Monitor térmico)" + +#. /flag:ia64 +#: modules/devices/x86/x86_data.c:71 +msgctxt "x86-flag" +msgid "" +"Intel Itanium Architecture 64-bit (not to be confused with Intel's 64-bit " +"x86 architecture with flag x86-64 or \"AMD64\" bit indicated by flag lm)" +msgstr "" +"Arquitetura Intel Itanium de 64 bits (não deve ser confundida com a " +"arquitetura x86 de 64 bits da Intel com o sinalizador x86-64 ou bit " +"\"AMD64\" indicado pelo sinalizador lm)" + +#. /flag:pbe +#: modules/devices/x86/x86_data.c:72 +msgctxt "x86-flag" +msgid "Pending Break Enable (PBE# pin) wakeup support" +msgstr "Suporte à ativação de interrupção pendente (PBE # pin)" + +#. /flag:syscall +#: modules/devices/x86/x86_data.c:75 +msgctxt "x86-flag" +msgid "SYSCALL (Fast System Call) and SYSRET (Return From Fast System Call)" +msgstr "" +"SYSCALL (Chamada Rápida do Sistema) e SYSRET (Retorno da Chamada Rápida do " +"Sistema)" + +#. /flag:mp +#: modules/devices/x86/x86_data.c:76 +msgctxt "x86-flag" +msgid "Multiprocessing Capable." +msgstr "Multiprocessamento Capaz." + +#. /flag:nx +#: modules/devices/x86/x86_data.c:77 +msgctxt "x86-flag" +msgid "Execute Disable" +msgstr "Executar Desativar" + +#. /flag:mmxext +#: modules/devices/x86/x86_data.c:78 +msgctxt "x86-flag" +msgid "AMD MMX extensions" +msgstr "Extensões AMD MMX" + +#. /flag:fxsr_opt +#: modules/devices/x86/x86_data.c:79 +msgctxt "x86-flag" +msgid "FXSAVE/FXRSTOR optimizations" +msgstr "Otimizações FXSAVE / FXRSTOR" + +#. /flag:pdpe1gb +#: modules/devices/x86/x86_data.c:80 +msgctxt "x86-flag" +msgid "One GB pages (allows hugepagesz=1G)" +msgstr "Um GB páginas (permite hugepagesz = 1G)" + +#. /flag:rdtscp +#: modules/devices/x86/x86_data.c:81 +msgctxt "x86-flag" +msgid "Read Time-Stamp Counter and Processor ID" +msgstr "Leitura do Contador de Carimbo de Tempo e ID do Processador" + +#. /flag:lm +#: modules/devices/x86/x86_data.c:82 +msgctxt "x86-flag" +msgid "Long Mode (x86-64: amd64, also known as Intel 64, i.e. 64-bit capable)" +msgstr "" +"Modo Longo (x86-64: amd64, também conhecido como Intel 64, ou seja, " +"capacidade para 64 bits)" + +#. /flag:3dnow +#: modules/devices/x86/x86_data.c:83 +msgctxt "x86-flag" +msgid "3DNow! (AMD vector instructions, competing with Intel's SSE1)" +msgstr "3DNow! (Instruções vetoriais AMD, competindo com o SSE1 da Intel)" + +#. /flag:3dnowext +#: modules/devices/x86/x86_data.c:84 +msgctxt "x86-flag" +msgid "AMD 3DNow! extensions" +msgstr "AMD 3DNow! extensões" + +#. /flag:recovery +#: modules/devices/x86/x86_data.c:86 +msgctxt "x86-flag" +msgid "CPU in recovery mode" +msgstr "CPU no modo de recuperação" + +#. /flag:longrun +#: modules/devices/x86/x86_data.c:87 +msgctxt "x86-flag" +msgid "Longrun power control" +msgstr "Controle de potência Longrun" + +#. /flag:lrti +#: modules/devices/x86/x86_data.c:88 +msgctxt "x86-flag" +msgid "LongRun table interface" +msgstr "Interface de mesa LongRun" + +#. /flag:cxmmx +#: modules/devices/x86/x86_data.c:90 +msgctxt "x86-flag" +msgid "Cyrix MMX extensions" +msgstr "Extensões Cyrix MMX" + +#. /flag:k6_mtrr +#: modules/devices/x86/x86_data.c:91 +msgctxt "x86-flag" +msgid "AMD K6 nonstandard MTRRs" +msgstr "MTRRs fora do padrão AMD K6" + +#. /flag:cyrix_arr +#: modules/devices/x86/x86_data.c:92 +msgctxt "x86-flag" +msgid "Cyrix ARRs (= MTRRs)" +msgstr "Cyrix ARRs (= MTRRs)" + +#. /flag:centaur_mcr +#: modules/devices/x86/x86_data.c:93 +msgctxt "x86-flag" +msgid "Centaur MCRs (= MTRRs)" +msgstr "MCRs Centauros (= MTRRs)" + +#. /flag:constant_tsc +#: modules/devices/x86/x86_data.c:94 +msgctxt "x86-flag" +msgid "TSC ticks at a constant rate" +msgstr "TSC carrapatos a uma taxa constante" + +#. /flag:up +#: modules/devices/x86/x86_data.c:95 +msgctxt "x86-flag" +msgid "SMP kernel running on UP" +msgstr "Kernel SMP rodando em UP" + +#. /flag:art +#: modules/devices/x86/x86_data.c:96 +msgctxt "x86-flag" +msgid "Always-Running Timer" +msgstr "Temporizador sempre em funcionamento" + +#. /flag:arch_perfmon +#: modules/devices/x86/x86_data.c:97 +msgctxt "x86-flag" +msgid "Intel Architectural PerfMon" +msgstr "Intel Architectural PerfMon" + +#. /flag:pebs +#: modules/devices/x86/x86_data.c:98 +msgctxt "x86-flag" +msgid "Precise-Event Based Sampling" +msgstr "Amostragem baseada em eventos precisos" + +#. /flag:bts +#: modules/devices/x86/x86_data.c:99 +msgctxt "x86-flag" +msgid "Branch Trace Store" +msgstr "Loja de Rastreamento de Filial" + +#. /flag:rep_good +#: modules/devices/x86/x86_data.c:100 +msgctxt "x86-flag" +msgid "rep microcode works well" +msgstr "microcódigo rep funciona bem" + +#. /flag:acc_power +#: modules/devices/x86/x86_data.c:101 +msgctxt "x86-flag" +msgid "AMD accumulated power mechanism" +msgstr "AMD acumulou mecanismo de energia" + +#. /flag:nopl +#: modules/devices/x86/x86_data.c:102 +msgctxt "x86-flag" +msgid "The NOPL (0F 1F) instructions" +msgstr "Instruções do NOPL (0F 1F)" + +#. /flag:xtopology +#: modules/devices/x86/x86_data.c:103 +msgctxt "x86-flag" +msgid "cpu topology enum extensions" +msgstr "extensões da enologia da topologia da cpu" + +#. /flag:tsc_reliable +#: modules/devices/x86/x86_data.c:104 +msgctxt "x86-flag" +msgid "TSC is known to be reliable" +msgstr "TSC é conhecido por ser confiável" + +#. /flag:nonstop_tsc +#: modules/devices/x86/x86_data.c:105 +msgctxt "x86-flag" +msgid "TSC does not stop in C states" +msgstr "TSC não pára em estados C" + +#. /flag:extd_apicid +#: modules/devices/x86/x86_data.c:106 +msgctxt "x86-flag" +msgid "has extended APICID (8 bits)" +msgstr "estendeu APICID (8 bits)" + +#. /flag:amd_dcm +#: modules/devices/x86/x86_data.c:107 +msgctxt "x86-flag" +msgid "multi-node processor" +msgstr "processador multi-nó" + +#. /flag:aperfmperf +#: modules/devices/x86/x86_data.c:108 +msgctxt "x86-flag" +msgid "APERFMPERF" +msgstr "APERFMPERF" + +#. /flag:eagerfpu +#: modules/devices/x86/x86_data.c:109 +msgctxt "x86-flag" +msgid "Non lazy FPU restore" +msgstr "Restauração de FPU não preguiçosa" + +#. /flag:nonstop_tsc_s3 +#: modules/devices/x86/x86_data.c:110 +msgctxt "x86-flag" +msgid "TSC doesn't stop in S3 state" +msgstr "TSC não pára no estado S3" + +#. /flag:mce_recovery +#: modules/devices/x86/x86_data.c:111 +msgctxt "x86-flag" +msgid "CPU has recoverable machine checks" +msgstr "A CPU tem verificações de máquina recuperáveis" + +#. /flag:pni +#: modules/devices/x86/x86_data.c:114 +msgctxt "x86-flag" +msgid "SSE-3 (\"Prescott New Instructions\")" +msgstr "SSE-3 (\"Prescott Novas instruções\")" + +#. /flag:pclmulqdq +#: modules/devices/x86/x86_data.c:115 +msgctxt "x86-flag" +msgid "" +"Perform a Carry-Less Multiplication of Quadword instruction - accelerator " +"for GCM)" +msgstr "" +"Executar uma multiplicação sem carga do acelerador de instruções do Quadword " +"para o GCM)" + +#. /flag:dtes64 +#: modules/devices/x86/x86_data.c:116 +msgctxt "x86-flag" +msgid "64-bit Debug Store" +msgstr "Armazenamento de depuração de 64 bits" + +#. /flag:monitor +#: modules/devices/x86/x86_data.c:117 +msgctxt "x86-flag" +msgid "Monitor/Mwait support (Intel SSE3 supplements)" +msgstr "Suporte Monitor / Mwait (suplementos Intel SSE3)" + +#. /flag:ds_cpl +#: modules/devices/x86/x86_data.c:118 +msgctxt "x86-flag" +msgid "CPL Qual. Debug Store" +msgstr "CPL Qual. Loja de Depuração" + +#. /flag:vmx +#: modules/devices/x86/x86_data.c:119 +msgctxt "x86-flag" +msgid "Hardware virtualization, Intel VMX" +msgstr "Virtualização de hardware, Intel VMX" + +#. /flag:smx +#: modules/devices/x86/x86_data.c:120 +msgctxt "x86-flag" +msgid "Safer mode TXT (TPM support)" +msgstr "Modo mais seguro TXT (suporte a TPM)" + +#. /flag:est +#: modules/devices/x86/x86_data.c:121 +msgctxt "x86-flag" +msgid "Enhanced SpeedStep" +msgstr "Enhanced SpeedStep" + +#. /flag:tm2 +#: modules/devices/x86/x86_data.c:122 +msgctxt "x86-flag" +msgid "Thermal Monitor 2" +msgstr "Monitor Térmico 2" + +#. /flag:ssse3 +#: modules/devices/x86/x86_data.c:123 +msgctxt "x86-flag" +msgid "Supplemental SSE-3" +msgstr "Suplemento SSE-3" + +#. /flag:cid +#: modules/devices/x86/x86_data.c:124 +msgctxt "x86-flag" +msgid "Context ID" +msgstr "ID de contexto" + +#. /flag:sdbg +#: modules/devices/x86/x86_data.c:125 +msgctxt "x86-flag" +msgid "silicon debug" +msgstr "depuração de silício" + +#. /flag:fma +#: modules/devices/x86/x86_data.c:126 +msgctxt "x86-flag" +msgid "Fused multiply-add" +msgstr "Fusão multiplica-adiciona" + +#. /flag:cx16 +#: modules/devices/x86/x86_data.c:127 +msgctxt "x86-flag" +msgid "CMPXCHG16B" +msgstr "CMPXCHG16B" + +#. /flag:xtpr +#: modules/devices/x86/x86_data.c:128 +msgctxt "x86-flag" +msgid "Send Task Priority Messages" +msgstr "Enviar mensagens de prioridade de tarefa" + +#. /flag:pdcm +#: modules/devices/x86/x86_data.c:129 +msgctxt "x86-flag" +msgid "Performance Capabilities" +msgstr "Capacidades de desempenho" + +#. /flag:pcid +#: modules/devices/x86/x86_data.c:130 +msgctxt "x86-flag" +msgid "Process Context Identifiers" +msgstr "Identificadores de contexto de processo" + +#. /flag:dca +#: modules/devices/x86/x86_data.c:131 +msgctxt "x86-flag" +msgid "Direct Cache Access" +msgstr "Acesso direto ao cache" + +#. /flag:sse4_1 +#: modules/devices/x86/x86_data.c:132 +msgctxt "x86-flag" +msgid "SSE-4.1" +msgstr "SSE-4.1" + +#. /flag:sse4_2 +#: modules/devices/x86/x86_data.c:133 +msgctxt "x86-flag" +msgid "SSE-4.2" +msgstr "SSE-4.2" + +#. /flag:x2apic +#: modules/devices/x86/x86_data.c:134 +msgctxt "x86-flag" +msgid "x2APIC" +msgstr "x2APIC" + +#. /flag:movbe +#: modules/devices/x86/x86_data.c:135 +msgctxt "x86-flag" +msgid "Move Data After Swapping Bytes instruction" +msgstr "Mover dados após a instrução troca de Bytes" + +#. /flag:popcnt +#: modules/devices/x86/x86_data.c:136 +msgctxt "x86-flag" +msgid "" +"Return the Count of Number of Bits Set to 1 instruction (Hamming weight, i." +"e. bit count)" +msgstr "" +"Retorna a Contagem do Número de Bits Definido como 1 instrução (peso " +"Hamming, ou seja, contagem de bits)" + +#. /flag:tsc_deadline_timer +#: modules/devices/x86/x86_data.c:137 +msgctxt "x86-flag" +msgid "Tsc deadline timer" +msgstr "Temporizador de prazo de Tsc" + +#. /flag:aes/aes-ni +#: modules/devices/x86/x86_data.c:138 +msgctxt "x86-flag" +msgid "Advanced Encryption Standard (New Instructions)" +msgstr "Padrão Avançado de Criptografia (Novas Instruções)" + +#. /flag:xsave +#: modules/devices/x86/x86_data.c:139 +msgctxt "x86-flag" +msgid "Save Processor Extended States: also provides XGETBY,XRSTOR,XSETBY" +msgstr "" +"Guardar estados estendidos do processador: também fornece XGETBY, XRSTOR, " +"XSETBY" + +#. /flag:avx +#: modules/devices/x86/x86_data.c:140 +msgctxt "x86-flag" +msgid "Advanced Vector Extensions" +msgstr "Extensões Vetoriais Avançadas" + +#. /flag:f16c +#: modules/devices/x86/x86_data.c:141 +msgctxt "x86-flag" +msgid "16-bit fp conversions (CVT16)" +msgstr "Conversões fp de 16 bits (CVT16)" + +#. /flag:rdrand +#: modules/devices/x86/x86_data.c:142 +msgctxt "x86-flag" +msgid "Read Random Number from hardware random number generator instruction" +msgstr "" +"Ler Número Aleatório da instrução do gerador de números aleatórios de " +"hardware" + +#. /flag:hypervisor +#: modules/devices/x86/x86_data.c:143 +msgctxt "x86-flag" +msgid "Running on a hypervisor" +msgstr "A executar num hipervisor" + +#. /Cyrix/Centaur-defined CPU features, CPUID level 0xC0000001 +#. /flag:rng +#: modules/devices/x86/x86_data.c:145 +msgctxt "x86-flag" +msgid "Random Number Generator present (xstore)" +msgstr "Gerador de números aleatórios presente (xstore)" + +#. /flag:rng_en +#: modules/devices/x86/x86_data.c:146 +msgctxt "x86-flag" +msgid "Random Number Generator enabled" +msgstr "Gerador de Números Aleatórios ativado" + +#. /flag:ace +#: modules/devices/x86/x86_data.c:147 +msgctxt "x86-flag" +msgid "on-CPU crypto (xcrypt)" +msgstr "on-CPU crypto (xcrypt)" + +#. /flag:ace_en +#: modules/devices/x86/x86_data.c:148 +msgctxt "x86-flag" +msgid "on-CPU crypto enabled" +msgstr "on-CPU criptografia ativada" + +#. /flag:ace2 +#: modules/devices/x86/x86_data.c:149 +msgctxt "x86-flag" +msgid "Advanced Cryptography Engine v2" +msgstr "Mecanismo Avançado de Criptografia v2" + +#. /flag:ace2_en +#: modules/devices/x86/x86_data.c:150 +msgctxt "x86-flag" +msgid "ACE v2 enabled" +msgstr "ACE v2 ativado" + +#. /flag:phe +#: modules/devices/x86/x86_data.c:151 +msgctxt "x86-flag" +msgid "PadLock Hash Engine" +msgstr "PadLock Hash Mecanismo" + +#. /flag:phe_en +#: modules/devices/x86/x86_data.c:152 +msgctxt "x86-flag" +msgid "PHE enabled" +msgstr "PHE ativado" + +#. /flag:pmm +#: modules/devices/x86/x86_data.c:153 +msgctxt "x86-flag" +msgid "PadLock Montgomery Multiplier" +msgstr "PadLock Montgomery Multiplicador" + +#. /flag:pmm_en +#: modules/devices/x86/x86_data.c:154 +msgctxt "x86-flag" +msgid "PMM enabled" +msgstr "PMM ativado" + +#. /flag:lahf_lm +#: modules/devices/x86/x86_data.c:156 +msgctxt "x86-flag" +msgid "Load AH from Flags (LAHF) and Store AH into Flags (SAHF) in long mode" +msgstr "" +"Carregar AH das Bandeiras (LAHF) e Armazenar HA dentro das Bandeiras (SAHF) " +"no modo longo" + +#. /flag:cmp_legacy +#: modules/devices/x86/x86_data.c:157 +msgctxt "x86-flag" +msgid "If yes HyperThreading not valid" +msgstr "Se sim HyperThreading não é válido" + +#. /flag:svm +#: modules/devices/x86/x86_data.c:158 +msgctxt "x86-flag" +msgid "\"Secure virtual machine\": AMD-V" +msgstr "\"Máquina virtual segura\": AMD-V" + +#. /flag:extapic +#: modules/devices/x86/x86_data.c:159 +msgctxt "x86-flag" +msgid "Extended APIC space" +msgstr "Espaço APIC extendido" + +#. /flag:cr8_legacy +#: modules/devices/x86/x86_data.c:160 +msgctxt "x86-flag" +msgid "CR8 in 32-bit mode" +msgstr "CR8 no modo 32-bit" + +#. /flag:abm +#: modules/devices/x86/x86_data.c:161 +msgctxt "x86-flag" +msgid "Advanced Bit Manipulation" +msgstr "Manipulação Avançada de Bit" + +#. /flag:sse4a +#: modules/devices/x86/x86_data.c:162 +msgctxt "x86-flag" +msgid "SSE-4A" +msgstr "SSE-4A" + +#. /flag:misalignsse +#: modules/devices/x86/x86_data.c:163 +msgctxt "x86-flag" +msgid "" +"indicates if a general-protection exception (#GP) is generated when some " +"legacy SSE instructions operate on unaligned data. Also depends on CR0 and " +"Alignment Checking bit" +msgstr "" +"indica se uma exceção de proteção-geral (#GP) é gerada quando algumas " +"instruções SSE legadas operam em dados não alinhados. Também depende do CR0 " +"e bit de Verificação do Alinhamento" + +#. /flag:3dnowprefetch +#: modules/devices/x86/x86_data.c:164 +msgctxt "x86-flag" +msgid "3DNow prefetch instructions" +msgstr "Instruções de pré-busca 3DNow" + +#. /flag:osvw +#: modules/devices/x86/x86_data.c:165 +msgctxt "x86-flag" +msgid "" +"indicates OS Visible Workaround, which allows the OS to work around " +"processor errata." +msgstr "" +"indica solução visível do OS, que permite que o OS funcione em torno das " +"erratas do processador." + +#. /flag:ibs +#: modules/devices/x86/x86_data.c:166 +msgctxt "x86-flag" +msgid "Instruction Based Sampling" +msgstr "Amostragem baseada em instruções" + +#. /flag:xop +#: modules/devices/x86/x86_data.c:167 +msgctxt "x86-flag" +msgid "extended AVX instructions" +msgstr "instruções AVX estendidas" + +#. /flag:skinit +#: modules/devices/x86/x86_data.c:168 +msgctxt "x86-flag" +msgid "SKINIT/STGI instructions" +msgstr "Instruções SKINIT/STGI" + +#. /flag:wdt +#: modules/devices/x86/x86_data.c:169 +msgctxt "x86-flag" +msgid "Watchdog timer" +msgstr "Watchdog timer" + +#. /flag:lwp +#: modules/devices/x86/x86_data.c:170 +msgctxt "x86-flag" +msgid "Light Weight Profiling" +msgstr "Perfil Peso Leve" + +#. /flag:fma4 +#: modules/devices/x86/x86_data.c:171 +msgctxt "x86-flag" +msgid "4 operands MAC instructions" +msgstr "4 operando instruções MAC" + +#. /flag:tce +#: modules/devices/x86/x86_data.c:172 +msgctxt "x86-flag" +msgid "translation cache extension" +msgstr "extensão de cache de tradução" + +#. /flag:nodeid_msr +#: modules/devices/x86/x86_data.c:173 +msgctxt "x86-flag" +msgid "NodeId MSR" +msgstr "NodeId MSR" + +#. /flag:tbm +#: modules/devices/x86/x86_data.c:174 +msgctxt "x86-flag" +msgid "Trailing Bit Manipulation" +msgstr "Manipulação de Bit de Arrasto" + +#. /flag:topoext +#: modules/devices/x86/x86_data.c:175 +msgctxt "x86-flag" +msgid "Topology Extensions CPUID leafs" +msgstr "Extensões de Topologia CPUID folhas" + +#. /flag:perfctr_core +#: modules/devices/x86/x86_data.c:176 +msgctxt "x86-flag" +msgid "Core Performance Counter Extensions" +msgstr "Extensões do Contador de Desempenho do Núcleo" + +#. /flag:perfctr_nb +#: modules/devices/x86/x86_data.c:177 +msgctxt "x86-flag" +msgid "NB Performance Counter Extensions" +msgstr "Extensões do Contador de Desempenho do NB" + +#. /flag:bpext +#: modules/devices/x86/x86_data.c:178 +msgctxt "x86-flag" +msgid "data breakpoint extension" +msgstr "extensão de ponto de interrupção de dados" + +#. /flag:ptsc +#: modules/devices/x86/x86_data.c:179 +msgctxt "x86-flag" +msgid "performance time-stamp counter" +msgstr "contador time-stamp de desempenho" + +#. /flag:perfctr_l2 +#: modules/devices/x86/x86_data.c:180 +msgctxt "x86-flag" +msgid "L2 Performance Counter Extensions" +msgstr "Extensões do Contador de Desempenho L2" + +#. /flag:mwaitx +#: modules/devices/x86/x86_data.c:181 +msgctxt "x86-flag" +msgid "MWAIT extension (MONITORX/MWAITX)" +msgstr "Extensão MWAIT (MONITORX/MWAITX)" + +#. /flag:cpb +#: modules/devices/x86/x86_data.c:183 +msgctxt "x86-flag" +msgid "AMD Core Performance Boost" +msgstr "Aumento do Desempenho do Núcleo da AMD" + +#. /flag:epb +#: modules/devices/x86/x86_data.c:184 +msgctxt "x86-flag" +msgid "IA32_ENERGY_PERF_BIAS support" +msgstr "Suporte IA32_ENERGY_PERF_BIAS" + +#. /flag:hw_pstate +#: modules/devices/x86/x86_data.c:185 +msgctxt "x86-flag" +msgid "AMD HW-PState" +msgstr "AMD HW-PState" + +#. /flag:proc_feedback +#: modules/devices/x86/x86_data.c:186 +msgctxt "x86-flag" +msgid "AMD ProcFeedbackInterface" +msgstr "AMD ProcFeedbackInterface" + +#. /flag:intel_pt +#: modules/devices/x86/x86_data.c:187 +msgctxt "x86-flag" +msgid "Intel Processor Tracing" +msgstr "Intel Processor Tracing" + +#. /flag:tpr_shadow +#: modules/devices/x86/x86_data.c:189 +msgctxt "x86-flag" +msgid "Intel TPR Shadow" +msgstr "Intel TPR Shadow" + +#. /flag:vnmi +#: modules/devices/x86/x86_data.c:190 +msgctxt "x86-flag" +msgid "Intel Virtual NMI" +msgstr "Intel Virtual NMI" + +#. /flag:flexpriority +#: modules/devices/x86/x86_data.c:191 +msgctxt "x86-flag" +msgid "Intel FlexPriority" +msgstr "Intel FlexPriority" + +#. /flag:ept +#: modules/devices/x86/x86_data.c:192 +msgctxt "x86-flag" +msgid "Intel Extended Page Table" +msgstr "Tabela de Páginas Estendidas da Intel" + +#. /flag:vpid +#: modules/devices/x86/x86_data.c:193 +msgctxt "x86-flag" +msgid "Intel Virtual Processor ID" +msgstr "Identificação do Processador Virtual Intel" + +#. /flag:vmmcall +#: modules/devices/x86/x86_data.c:194 +msgctxt "x86-flag" +msgid "prefer VMMCALL to VMCALL" +msgstr "prefira VMMCALL a VMCALL" + +#. /flag:fsgsbase +#: modules/devices/x86/x86_data.c:196 +msgctxt "x86-flag" +msgid "{RD/WR}{FS/GS}BASE instructions" +msgstr "Instruções {RD/WR}{FS/GS}BASE" + +#. /flag:tsc_adjust +#: modules/devices/x86/x86_data.c:197 +msgctxt "x86-flag" +msgid "TSC adjustment MSR" +msgstr "TSC ajustamento MSR" + +#. /flag:bmi1 +#: modules/devices/x86/x86_data.c:198 +msgctxt "x86-flag" +msgid "1st group bit manipulation extensions" +msgstr "extensões de manipulação de bit de 1º grupo" + +#. /flag:hle +#: modules/devices/x86/x86_data.c:199 +msgctxt "x86-flag" +msgid "Hardware Lock Elision" +msgstr "Hardware Lock Elision" + +#. /flag:avx2 +#: modules/devices/x86/x86_data.c:200 +msgctxt "x86-flag" +msgid "AVX2 instructions" +msgstr "Instruções AVX2" + +#. /flag:smep +#: modules/devices/x86/x86_data.c:201 +msgctxt "x86-flag" +msgid "Supervisor Mode Execution Protection" +msgstr "Proteção de Execução do Modo Supervisor" + +#. /flag:bmi2 +#: modules/devices/x86/x86_data.c:202 +msgctxt "x86-flag" +msgid "2nd group bit manipulation extensions" +msgstr "extensões de manipulação de bit de 2º grupo" + +#. /flag:erms +#: modules/devices/x86/x86_data.c:203 +msgctxt "x86-flag" +msgid "Enhanced REP MOVSB/STOSB" +msgstr "REP MOVSB/STOSB melhorada" + +#. /flag:invpcid +#: modules/devices/x86/x86_data.c:204 +msgctxt "x86-flag" +msgid "Invalidate Processor Context ID" +msgstr "ID de Contexto do Processador Inválido" + +#. /flag:rtm +#: modules/devices/x86/x86_data.c:205 +msgctxt "x86-flag" +msgid "Restricted Transactional Memory" +msgstr "Memória Transacional Restrita" + +#. /flag:cqm +#: modules/devices/x86/x86_data.c:206 +msgctxt "x86-flag" +msgid "Cache QoS Monitoring" +msgstr "Monitorização de Cache de QoS" + +#. /flag:mpx +#: modules/devices/x86/x86_data.c:207 +msgctxt "x86-flag" +msgid "Memory Protection Extension" +msgstr "Extensão de Proteção de Memória" + +#. /flag:avx512f +#: modules/devices/x86/x86_data.c:208 +msgctxt "x86-flag" +msgid "AVX-512 foundation" +msgstr "Fundação AVX-512" + +#. /flag:avx512dq +#: modules/devices/x86/x86_data.c:209 +msgctxt "x86-flag" +msgid "AVX-512 Double/Quad instructions" +msgstr "Instruções AVX-512 Double/Quad" + +#. /flag:rdseed +#: modules/devices/x86/x86_data.c:210 +msgctxt "x86-flag" +msgid "The RDSEED instruction" +msgstr "A instrução RDSEED" + +#. /flag:adx +#: modules/devices/x86/x86_data.c:211 +msgctxt "x86-flag" +msgid "The ADCX and ADOX instructions" +msgstr "A instrução ADCX e ADOX" + +#. /flag:smap +#: modules/devices/x86/x86_data.c:212 +msgctxt "x86-flag" +msgid "Supervisor Mode Access Prevention" +msgstr "Prevenção de Acesso do Modo Supervisor" + +#. /flag:clflushopt +#: modules/devices/x86/x86_data.c:213 +msgctxt "x86-flag" +msgid "CLFLUSHOPT instruction" +msgstr "instrução CLFLUSHOPT" + +#. /flag:clwb +#: modules/devices/x86/x86_data.c:214 +msgctxt "x86-flag" +msgid "CLWB instruction" +msgstr "instrução CLWB" + +#. /flag:avx512pf +#: modules/devices/x86/x86_data.c:215 +msgctxt "x86-flag" +msgid "AVX-512 Prefetch" +msgstr "Pré-busca AVX-512" + +#. /flag:avx512er +#: modules/devices/x86/x86_data.c:216 +msgctxt "x86-flag" +msgid "AVX-512 Exponential and Reciprocal" +msgstr "Exponencial e Recíproco AVX-512" + +#. /flag:avx512cd +#: modules/devices/x86/x86_data.c:217 +msgctxt "x86-flag" +msgid "AVX-512 Conflict Detection" +msgstr "Detecção de Conflitos AVX-512" + +#. /flag:sha_ni +#: modules/devices/x86/x86_data.c:218 +msgctxt "x86-flag" +msgid "SHA1/SHA256 Instruction Extensions" +msgstr "Extensões de Instrução SHA1/SHA256" + +#. /flag:avx512bw +#: modules/devices/x86/x86_data.c:219 +msgctxt "x86-flag" +msgid "AVX-512 Byte/Word instructions" +msgstr "instruções AVX-512 Byte/Word" + +#. /flag:avx512vl +#: modules/devices/x86/x86_data.c:220 +msgctxt "x86-flag" +msgid "AVX-512 128/256 Vector Length extensions" +msgstr "Extensões de Comprimento de Vetor AVX-512 128/256" + +#. /flag:xsaveopt +#: modules/devices/x86/x86_data.c:222 +msgctxt "x86-flag" +msgid "Optimized XSAVE" +msgstr "XSAVE Otimizado" + +#. /flag:xsavec +#: modules/devices/x86/x86_data.c:223 +msgctxt "x86-flag" +msgid "XSAVEC" +msgstr "XSAVEC" + +#. /flag:xgetbv1 +#: modules/devices/x86/x86_data.c:224 +msgctxt "x86-flag" +msgid "XGETBV with ECX = 1" +msgstr "XGETBV com ECX = 1" + +#. /flag:xsaves +#: modules/devices/x86/x86_data.c:225 +msgctxt "x86-flag" +msgid "XSAVES/XRSTORS" +msgstr "XSAVES/XRSTORS" + +#. /flag:cqm_llc +#: modules/devices/x86/x86_data.c:227 +msgctxt "x86-flag" +msgid "LLC QoS" +msgstr "LLC QoS" + +#. /flag:cqm_occup_llc +#: modules/devices/x86/x86_data.c:229 +msgctxt "x86-flag" +msgid "LLC occupancy monitoring" +msgstr "monitoramento de ocupação de LLC" + +#. /flag:cqm_mbm_total +#: modules/devices/x86/x86_data.c:230 +msgctxt "x86-flag" +msgid "LLC total MBM monitoring" +msgstr "monitoramento LLC total MBM" + +#. /flag:cqm_mbm_local +#: modules/devices/x86/x86_data.c:231 +msgctxt "x86-flag" +msgid "LLC local MBM monitoring" +msgstr "monitoramento LLC local MBM" + +#. /flag:clzero +#: modules/devices/x86/x86_data.c:233 +msgctxt "x86-flag" +msgid "CLZERO instruction" +msgstr "instrução CLZERO" + +#. /flag:irperf +#: modules/devices/x86/x86_data.c:234 +msgctxt "x86-flag" +msgid "instructions retired performance counter" +msgstr "instruções do contador de desempenho retirado" + +#. /flag:dtherm +#: modules/devices/x86/x86_data.c:236 +msgctxt "x86-flag" +msgid "digital thermal sensor" +msgstr "sensor térmico digital" + +#. /flag:ida +#: modules/devices/x86/x86_data.c:237 +msgctxt "x86-flag" +msgid "Intel Dynamic Acceleration" +msgstr "Aceleração Dinâmica Intel" + +#. /flag:arat +#: modules/devices/x86/x86_data.c:238 +msgctxt "x86-flag" +msgid "Always Running APIC Timer" +msgstr "Sempre a Executar o Temporizador APIC" + +#. /flag:pln +#: modules/devices/x86/x86_data.c:239 +msgctxt "x86-flag" +msgid "Intel Power Limit Notification" +msgstr "Notificação de Limite de Energia Intel" + +#. /flag:pts +#: modules/devices/x86/x86_data.c:240 +msgctxt "x86-flag" +msgid "Intel Package Thermal Status" +msgstr "Estado Térmico do Pacote Intel" + +#. /flag:hwp +#: modules/devices/x86/x86_data.c:241 +msgctxt "x86-flag" +msgid "Intel Hardware P-states" +msgstr "Intel Hardware P-states" + +#. /flag:hwp_notify +#: modules/devices/x86/x86_data.c:242 +msgctxt "x86-flag" +msgid "HWP notification" +msgstr "notificação HWP" + +#. /flag:hwp_act_window +#: modules/devices/x86/x86_data.c:243 +msgctxt "x86-flag" +msgid "HWP Activity Window" +msgstr "Janela de atividade do HWP" + +#. /flag:hwp_epp +#: modules/devices/x86/x86_data.c:244 +msgctxt "x86-flag" +msgid "HWP Energy Performance Preference" +msgstr "Preferência de Desempenho de Energia HWP" + +#. /flag:hwp_pkg_req +#: modules/devices/x86/x86_data.c:245 +msgctxt "x86-flag" +msgid "HWP package-level request" +msgstr "Solicitação do package-level de HWP" + +#. /flag:npt +#: modules/devices/x86/x86_data.c:247 +msgctxt "x86-flag" +msgid "AMD Nested Page Table support" +msgstr "Suporte para AMD Nested Page Table" + +#. /flag:lbrv +#: modules/devices/x86/x86_data.c:248 +msgctxt "x86-flag" +msgid "AMD LBR Virtualization support" +msgstr "AMD LBR Virtualização suporte" + +#. /flag:svm_lock +#: modules/devices/x86/x86_data.c:249 +msgctxt "x86-flag" +msgid "AMD SVM locking MSR" +msgstr "AMD SVM bloqueio MSR" + +#. /flag:nrip_save +#: modules/devices/x86/x86_data.c:250 +msgctxt "x86-flag" +msgid "AMD SVM next_rip save" +msgstr "AMD SVM next_rip salvar" + +#. /flag:tsc_scale +#: modules/devices/x86/x86_data.c:251 +msgctxt "x86-flag" +msgid "AMD TSC scaling support" +msgstr "Suporte de dimensionamento do AMD TSC" + +#. /flag:vmcb_clean +#: modules/devices/x86/x86_data.c:252 +msgctxt "x86-flag" +msgid "AMD VMCB clean bits support" +msgstr "Suporte para bits limpos AMD VMCB" + +#. /flag:flushbyasid +#: modules/devices/x86/x86_data.c:253 +msgctxt "x86-flag" +msgid "AMD flush-by-ASID support" +msgstr "Suporte para AMD flush-by-ASID" + +#. /flag:decodeassists +#: modules/devices/x86/x86_data.c:254 +msgctxt "x86-flag" +msgid "AMD Decode Assists support" +msgstr "Suporte para AMD Decode Assists" + +#. /flag:pausefilter +#: modules/devices/x86/x86_data.c:255 +msgctxt "x86-flag" +msgid "AMD filtered pause intercept" +msgstr "Interceptação de pausa filtrada AMD" + +#. /flag:pfthreshold +#: modules/devices/x86/x86_data.c:256 +msgctxt "x86-flag" +msgid "AMD pause filter threshold" +msgstr "Limite de filtro de pausa da AMD" + +#. /flag:avic +#: modules/devices/x86/x86_data.c:257 +msgctxt "x86-flag" +msgid "Virtual Interrupt Controller" +msgstr "Controlador de interrupção virtual" + +#. /flag:pku +#: modules/devices/x86/x86_data.c:259 +msgctxt "x86-flag" +msgid "Protection Keys for Userspace" +msgstr "Chaves de proteção para o espaço do utilizador" + +#. /flag:ospke +#: modules/devices/x86/x86_data.c:260 +msgctxt "x86-flag" +msgid "OS Protection Keys Enable" +msgstr "Ativar chaves de proteção do sistema operativo" + +#. /flag:overflow_recov +#: modules/devices/x86/x86_data.c:262 +msgctxt "x86-flag" +msgid "MCA overflow recovery support" +msgstr "Suporte para recuperação de estouro de MCA" + +#. /flag:succor +#: modules/devices/x86/x86_data.c:263 +msgctxt "x86-flag" +msgid "uncorrectable error containment and recovery" +msgstr "contenção de erros e recuperação incorrigíveis" + +#. /flag:smca +#: modules/devices/x86/x86_data.c:264 +msgctxt "x86-flag" +msgid "Scalable MCA" +msgstr "MCA escalável" + +#. /bug:f00f +#: modules/devices/x86/x86_data.c:267 +msgctxt "x86-flag" +msgid "Intel F00F bug" +msgstr "Erro Intel F00F" + +#. /bug:fdiv +#: modules/devices/x86/x86_data.c:268 +msgctxt "x86-flag" +msgid "FPU FDIV" +msgstr "FPU FDIV" + +#. /bug:coma +#: modules/devices/x86/x86_data.c:269 +msgctxt "x86-flag" +msgid "Cyrix 6x86 coma" +msgstr "Cyrix 6x86 coma" + +#. /bug:tlb_mmatch +#: modules/devices/x86/x86_data.c:270 +msgctxt "x86-flag" +msgid "AMD Erratum 383" +msgstr "AMD Erratum 383" + +#. /bug:apic_c1e +#. /bug:amd_e400 +#: modules/devices/x86/x86_data.c:271 modules/devices/x86/x86_data.c:280 +msgctxt "x86-flag" +msgid "AMD Erratum 400" +msgstr "AMD Erratum 400" + +#. /bug:11ap +#: modules/devices/x86/x86_data.c:272 +msgctxt "x86-flag" +msgid "Bad local APIC aka 11AP" +msgstr "Mau local APIC também conhecido como 11AP" + +#. /bug:fxsave_leak +#: modules/devices/x86/x86_data.c:273 +msgctxt "x86-flag" +msgid "FXSAVE leaks FOP/FIP/FOP" +msgstr "FXSAVE vazamentos FOP/FIP/FOP" + +#. /bug:clflush_monitor +#: modules/devices/x86/x86_data.c:274 +msgctxt "x86-flag" +msgid "AAI65, CLFLUSH required before MONITOR" +msgstr "AAI65, CLFLUSH requerido antes de MONITOR" + +#. /bug:sysret_ss_attrs +#: modules/devices/x86/x86_data.c:275 +msgctxt "x86-flag" +msgid "SYSRET doesn't fix up SS attrs" +msgstr "SYSRET não conserta o SS attrs" + +#. /bug:espfix +#: modules/devices/x86/x86_data.c:276 +msgctxt "x86-flag" +msgid "IRET to 16-bit SS corrupts ESP/RSP high bits" +msgstr "IRET para SS de 16-bit corrompe os bits altos do ESP/RSP" + +#. /bug:null_seg +#: modules/devices/x86/x86_data.c:277 +msgctxt "x86-flag" +msgid "Nulling a selector preserves the base" +msgstr "Anulando um seletor preserva a base" + +#. /bug:swapgs_fence +#: modules/devices/x86/x86_data.c:278 +msgctxt "x86-flag" +msgid "SWAPGS without input dep on GS" +msgstr "SWAPGS sem dep de entrada em GS" + +#. /bug:monitor +#: modules/devices/x86/x86_data.c:279 +msgctxt "x86-flag" +msgid "IPI required to wake up remote CPU" +msgstr "IPI necessário para ativar a CPU remota" + +#. /bug:cpu_insecure & bug:cpu_meltdown +#: modules/devices/x86/x86_data.c:281 modules/devices/x86/x86_data.c:282 +msgctxt "x86-flag" +msgid "" +"CPU is affected by meltdown attack and needs kernel page table isolation" +msgstr "" +"A CPU é afetada pelo ataque Meltdown e precisa de isolamento da tabela de " +"páginas do kernel" + +#. /bug:spectre_v1 +#: modules/devices/x86/x86_data.c:283 +msgctxt "x86-flag" +msgid "CPU is affected by Spectre variant 1 attack with conditional branches" +msgstr "" +"A CPU é afetada pelo ataque Spectre variante 1 ataque com ramificações " +"condicionais" + +#. /bug:spectre_v2 +#: modules/devices/x86/x86_data.c:284 +msgctxt "x86-flag" +msgid "CPU is affected by Spectre variant 2 attack with indirect branches" +msgstr "" +"A CPU é afetada pelo Spectre variante 2 ataque com ramificações indiretas" + +#. /bug:spec_store_bypass +#: modules/devices/x86/x86_data.c:285 +msgctxt "x86-flag" +msgid "CPU is affected by speculative store bypass attack" +msgstr "A CPU é afetada pelo ataque de desvio de armazenamento especulativo" + +#. /bug:l1tf +#: modules/devices/x86/x86_data.c:286 +msgctxt "x86-flag" +msgid "CPU is affected by L1 Terminal Fault" +msgstr "CPU é afetado por L1 Terminal Fault" + +#. /x86/kernel/cpu/powerflags.h +#. /flag:pm:ts +#: modules/devices/x86/x86_data.c:289 +msgctxt "x86-flag" +msgid "temperature sensor" +msgstr "sensor de temperatura" + +#. /flag:pm:fid +#: modules/devices/x86/x86_data.c:290 +msgctxt "x86-flag" +msgid "frequency id control" +msgstr "id de controlo de frequência" + +#. /flag:pm:vid +#: modules/devices/x86/x86_data.c:291 +msgctxt "x86-flag" +msgid "voltage id control" +msgstr "id de controlo de voltagem" + +#. /flag:pm:ttp +#: modules/devices/x86/x86_data.c:292 +msgctxt "x86-flag" +msgid "thermal trip" +msgstr "viagem térmica" + +#. /flag:pm:tm +#: modules/devices/x86/x86_data.c:293 +msgctxt "x86-flag" +msgid "hardware thermal control" +msgstr "controlo térmico de hardware" + +#. /flag:pm:stc +#: modules/devices/x86/x86_data.c:294 +msgctxt "x86-flag" +msgid "software thermal control" +msgstr "controlo térmico de software" + +#. /flag:pm:100mhzsteps +#: modules/devices/x86/x86_data.c:295 +msgctxt "x86-flag" +msgid "100 MHz multiplier control" +msgstr "controlo de multiplicador 100 MHz" + +#. /flag:pm:hwpstate +#: modules/devices/x86/x86_data.c:296 +msgctxt "x86-flag" +msgid "hardware P-state control" +msgstr "controlo P-state de hardware" + +#. /flag:pm:cpb +#: modules/devices/x86/x86_data.c:297 +msgctxt "x86-flag" +msgid "core performance boost" +msgstr "impulsionar o desempenho do núcleo" + +#. /flag:pm:eff_freq_ro +#: modules/devices/x86/x86_data.c:298 +msgctxt "x86-flag" +msgid "Readonly aperf/mperf" +msgstr "Somente leitura aperf/mperf" + +#. /flag:pm:proc_feedback +#: modules/devices/x86/x86_data.c:299 +msgctxt "x86-flag" +msgid "processor feedback interface" +msgstr "interface de feedback do processador" + +#. /flag:pm:acc_power +#: modules/devices/x86/x86_data.c:300 +msgctxt "x86-flag" +msgid "accumulated power mechanism" +msgstr "mecanismo de energia acumulada" + +#: modules/network.c:61 +msgid "Interfaces" +msgstr "Interfaces" + +#: modules/network.c:62 +msgid "IP Connections" +msgstr "Ligações IP" + +#: modules/network.c:63 +msgid "Routing Table" +msgstr "Tabela de roteamento" + +#: modules/network.c:64 modules/network.c:309 +msgid "ARP Table" +msgstr "Tabela ARP" + +#: modules/network.c:65 +msgid "DNS Servers" +msgstr "Servidor DNS" + +#: modules/network.c:66 +msgid "Statistics" +msgstr "Estatísticas" + +#: modules/network.c:67 +msgid "Shared Directories" +msgstr "Diretórios Compartilhados" + +#: modules/network.c:310 modules/network.c:332 modules/network.c:363 +#: modules/network/net.c:472 +msgid "IP Address" +msgstr "Endereço de IP" + +#: modules/network.c:310 +msgid "MAC Address" +msgstr "Endereço MAC" + +#: modules/network.c:319 +msgid "SAMBA" +msgstr "SAMBA" + +#: modules/network.c:320 +msgid "NFS" +msgstr "NFS" + +#: modules/network.c:331 +msgid "Name Servers" +msgstr "Nome de Servidores" + +#: modules/network.c:346 +msgid "Connections" +msgstr "Ligações" + +#: modules/network.c:347 +msgid "Local Address" +msgstr "Endereço Local" + +#: modules/network.c:347 +msgid "Foreign Address" +msgstr "Endereço Exterior" + +#: modules/network.c:347 +msgid "State" +msgstr "Estado" + +#: modules/network.c:363 +msgid "Sent" +msgstr "Enviado" + +#: modules/network.c:363 +msgid "Received" +msgstr "Recebido" + +#: modules/network.c:379 +msgid "IP routing table" +msgstr "Tabela de roteamento IP" + +#: modules/network.c:380 +msgid "Destination/Gateway" +msgstr "Destino/Gateway" + +#: modules/network.c:380 modules/network/net.c:473 +msgid "Mask" +msgstr "Máscara" + +#: modules/network.c:408 +msgid "Network" +msgstr "Rede" + +#: modules/network.c:441 +msgid "Gathers information about this computer's network connection" +msgstr "Reúne informação sobre a ligação de rede deste computador" + +#: modules/network/net.c:72 +msgctxt "wi-op-mode" +msgid "Auto" +msgstr "Automático" + +#: modules/network/net.c:73 +msgctxt "wi-op-mode" +msgid "Ad-Hoc" +msgstr "Ad-Hoc" + +#: modules/network/net.c:74 +msgctxt "wi-op-mode" +msgid "Managed" +msgstr "Gerenciado" + +#: modules/network/net.c:75 +msgctxt "wi-op-mode" +msgid "Master" +msgstr "Principal" + +#: modules/network/net.c:76 +msgctxt "wi-op-mode" +msgid "Repeater" +msgstr "Repetidor" + +#: modules/network/net.c:77 +msgctxt "wi-op-mode" +msgid "Secondary" +msgstr "Secondário" + +#: modules/network/net.c:78 +msgctxt "wi-op-mode" +msgid "(Unknown)" +msgstr "(Desconhecido)" + +#: modules/network/net.c:242 modules/network/net.c:262 +#: modules/network/net.c:270 +msgctxt "net-if-type" +msgid "Ethernet" +msgstr "Ethernet" + +#: modules/network/net.c:243 +msgctxt "net-if-type" +msgid "Loopback" +msgstr "Loopback" + +#: modules/network/net.c:244 +msgctxt "net-if-type" +msgid "Point-to-Point" +msgstr "Ponto-a-Ponto" + +#: modules/network/net.c:245 modules/network/net.c:246 +#: modules/network/net.c:247 modules/network/net.c:248 +#: modules/network/net.c:272 +msgctxt "net-if-type" +msgid "Wireless" +msgstr "Rede sem fio" + +#: modules/network/net.c:249 +msgctxt "net-if-type" +msgid "Virtual Point-to-Point (TUN)" +msgstr "Ponto-a-ponto virtual (TUN)" + +#: modules/network/net.c:250 +msgctxt "net-if-type" +msgid "Ethernet (TAP)" +msgstr "Ethernet (TAP)" + +#: modules/network/net.c:251 +msgctxt "net-if-type" +msgid "Parallel Line Internet Protocol" +msgstr "Protocolo de Internet de Linha Paralela" + +#: modules/network/net.c:252 +msgctxt "net-if-type" +msgid "Infrared" +msgstr "Infravermelho" + +#: modules/network/net.c:253 modules/network/net.c:271 +msgctxt "net-if-type" +msgid "Serial Line Internet Protocol" +msgstr "Protocolo de Internet de Linha Serial" + +#: modules/network/net.c:254 +msgctxt "net-if-type" +msgid "Integrated Services Digital Network" +msgstr "Rede Digital de Serviços Integrados" + +#: modules/network/net.c:255 +msgctxt "net-if-type" +msgid "IPv6-over-IPv4 Tunnel" +msgstr "Túnel IPv6-sobre-IPv4" + +#: modules/network/net.c:256 +msgctxt "net-if-type" +msgid "VMWare Virtual Network Interface (NAT)" +msgstr "VMWare Interface de Rede Virtual (NAT)" + +#: modules/network/net.c:257 +msgctxt "net-if-type" +msgid "VMWare Virtual Network Interface" +msgstr "Interface de Rede Virtual do VMWare" + +#: modules/network/net.c:258 +msgctxt "net-if-type" +msgid "Personal Area Network (PAN)" +msgstr "Rede de Área Pessoal (PAN)" + +#: modules/network/net.c:259 +msgctxt "net-if-type" +msgid "Bluetooth" +msgstr "Bluetooth" + +#: modules/network/net.c:260 +msgctxt "net-if-type" +msgid "Bridge Interface" +msgstr "Interface Ponte" + +#: modules/network/net.c:261 +msgctxt "net-if-type" +msgid "Hamachi Virtual Personal Network" +msgstr "Rede Pessoal Virtual do Hamachi" + +#: modules/network/net.c:263 +msgctxt "net-if-type" +msgid "Intermediate Functional Block" +msgstr "Bloco Funcional Intermediário" + +#: modules/network/net.c:264 +msgctxt "net-if-type" +msgid "GRE Network Tunnel" +msgstr "Túnel de Rede GRE" + +#: modules/network/net.c:265 +msgctxt "net-if-type" +msgid "Mesh Network" +msgstr "Malha de Rede" + +#: modules/network/net.c:266 +msgctxt "net-if-type" +msgid "Wireless Master Interface" +msgstr "Interface Principal Wireless" + +#: modules/network/net.c:267 +msgctxt "net-if-type" +msgid "VirtualBox Virtual Network Interface" +msgstr "Interface de Rede Virtual do VirtualBox" + +#: modules/network/net.c:273 +msgctxt "net-if-type" +msgid "Wireless (WAN)" +msgstr "Rede sem fio (WAN)" + +#: modules/network/net.c:275 +msgctxt "net-if-type" +msgid "(Unknown)" +msgstr "(Desconhecido)" + +#: modules/network/net.c:343 modules/network/net.c:353 +msgid "Network Interfaces" +msgstr "Interfaces de Rede" + +#: modules/network/net.c:343 +msgid "None Found" +msgstr "Nenhum Encontrado" + +#: modules/network/net.c:409 +msgid "Network Adapter Properties" +msgstr "Propriedades do adaptador de rede" + +#: modules/network/net.c:410 +msgid "Interface Type" +msgstr "Tipo de interface" + +#: modules/network/net.c:411 +msgid "Hardware Address (MAC)" +msgstr "Endereço físico (MAC)" + +#: modules/network/net.c:415 +msgid "MTU" +msgstr "MTU" + +#: modules/network/net.c:416 +msgid "Transfer Details" +msgstr "Detalhes da transferência" + +#: modules/network/net.c:417 +msgid "Bytes Received" +msgstr "Bytes recebidos" + +#: modules/network/net.c:418 +msgid "Bytes Sent" +msgstr "Bytes Enviados" + +#: modules/network/net.c:435 modules/network/net.c:457 +#: modules/network/net.c:458 +msgid "dBm" +msgstr "dBm" + +#: modules/network/net.c:435 +msgid "mW" +msgstr "mW" + +#: modules/network/net.c:449 +msgid "Wireless Properties" +msgstr "Propriedades da rede sem fios" + +#: modules/network/net.c:450 +msgid "Network Name (SSID)" +msgstr "Nome da Rede (SSID)" + +#: modules/network/net.c:451 +msgid "Bit Rate" +msgstr "Taxa de Bits" + +#: modules/network/net.c:452 +msgid "Transmission Power" +msgstr "Potência de transmissão" + +#: modules/network/net.c:455 +msgid "Link Quality" +msgstr "Qualidade da ligação" + +#: modules/network/net.c:456 +msgid "Signal / Noise" +msgstr "Sinal / Ruído" + +#: modules/network/net.c:471 +msgid "Internet Protocol (IPv4)" +msgstr "Protocolo de internet (IPv4)" + +#: modules/network/net.c:472 modules/network/net.c:473 +#: modules/network/net.c:475 +msgid "(Not set)" +msgstr "(Não configurado)" + +#: modules/network/net.c:474 +msgid "Broadcast Address" +msgstr "Endereço de transmissão" diff --git a/po/pt_BR.po b/po/pt_BR.po new file mode 100644 index 00000000..f28a92be --- /dev/null +++ b/po/pt_BR.po @@ -0,0 +1,6127 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +# Translators: +# eltonfabricio10 , 2019 +# Ezilei Correia dos Santos , 2019 +# lucas batista silva , 2019 +# LordDan Alkaiser , 2019 +# Paulo Giovanni Pereira , 2019 +# +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-10-24 15:16-0500\n" +"PO-Revision-Date: 2019-08-08 04:36+0000\n" +"Last-Translator: Paulo Giovanni Pereira , 2019\n" +"Language-Team: Portuguese (Brazil) (https://www.transifex.com/biglinux-1/" +"teams/102270/pt_BR/)\n" +"Language: pt_BR\n" +"X-Poedit-Basepath: ../\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"X-Generator: Poedit 2.2.3\n" + +#: hardinfo/cpu_util.c:30 +msgid "Little Endian" +msgstr "Little Endian" + +#: hardinfo/cpu_util.c:32 +msgid "Big Endian" +msgstr "Big Endian" + +#: hardinfo/cpu_util.c:184 hardinfo/cpu_util.c:195 modules/devices/gpu.c:200 +msgid "Frequency Scaling" +msgstr "Escala de frequência" + +#: hardinfo/cpu_util.c:185 modules/devices/gpu.c:201 +msgid "Minimum" +msgstr "Mínimo" + +#: hardinfo/cpu_util.c:185 hardinfo/cpu_util.c:186 hardinfo/cpu_util.c:187 +#: hardinfo/dt_util.c:589 modules/devices/gpu.c:201 modules/devices/gpu.c:202 +msgid "kHz" +msgstr "kHz" + +#: hardinfo/cpu_util.c:186 modules/devices/gpu.c:202 +msgid "Maximum" +msgstr "Máximo" + +#: hardinfo/cpu_util.c:187 +msgid "Current" +msgstr "Atual" + +#: hardinfo/cpu_util.c:188 modules/devices/gpu.c:203 +msgid "Transition Latency" +msgstr "Latência de transição" + +#: hardinfo/cpu_util.c:188 modules/devices/gpu.c:203 +msgid "ns" +msgstr "ns" + +#: hardinfo/cpu_util.c:189 +msgid "Governor" +msgstr "Governador a" + +#: hardinfo/cpu_util.c:190 hardinfo/cpu_util.c:196 modules/devices/gpu.c:153 +#: modules/devices/pci.c:134 modules/devices/usb.c:136 +msgid "Driver" +msgstr "Driver" + +#: hardinfo/cpu_util.c:202 modules/computer.c:737 +#: modules/devices/arm/processor.c:256 modules/devices/x86/processor.c:284 +#: modules/devices/x86/processor.c:388 modules/devices/x86/processor.c:524 +msgid "(Not Available)" +msgstr "(Indisponível)" + +#: hardinfo/cpu_util.c:210 hardinfo/cpu_util.c:212 +msgid "Socket" +msgstr "Soquete" + +#: hardinfo/cpu_util.c:215 hardinfo/cpu_util.c:217 modules/devices/gpu.c:149 +#: modules/devices/gpu.c:227 +msgid "Core" +msgstr "Núcleo " + +#: hardinfo/cpu_util.c:220 +msgid "Book" +msgstr "Livro" + +#: hardinfo/cpu_util.c:222 +msgid "Drawer" +msgstr "Gaveta" + +#: hardinfo/cpu_util.c:228 modules/devices/arm/processor.c:471 +#: modules/devices/x86/processor.c:750 +msgid "Topology" +msgstr "Topologia" + +#: hardinfo/cpu_util.c:229 +msgid "ID" +msgstr "ID" + +#: hardinfo/dmi_util.c:25 +msgid "BIOS Information" +msgstr "Informação da BIOS" + +#: hardinfo/dmi_util.c:26 modules/devices/parisc/processor.c:157 +msgid "System" +msgstr "Sistema" + +#: hardinfo/dmi_util.c:27 +msgid "Base Board" +msgstr "Placa base" + +#: hardinfo/dmi_util.c:28 modules/devices/dmi.c:53 +msgid "Chassis" +msgstr "Chassis" + +#: hardinfo/dmi_util.c:29 modules/computer.c:529 modules/computer.c:1000 +#: modules/devices/alpha/processor.c:87 modules/devices/arm/processor.c:341 +#: modules/devices.c:99 modules/devices/ia64/processor.c:159 +#: modules/devices/m68k/processor.c:83 modules/devices/mips/processor.c:74 +#: modules/devices/parisc/processor.c:154 modules/devices/ppc/processor.c:157 +#: modules/devices/riscv/processor.c:181 modules/devices/s390/processor.c:131 +#: modules/devices/sh/processor.c:83 modules/devices/sparc/processor.c:74 +#: modules/devices/x86/processor.c:646 +msgid "Processor" +msgstr "Processador" + +#: hardinfo/dmi_util.c:30 +msgid "Memory Controller" +msgstr "Controlador de memória" + +#: hardinfo/dmi_util.c:31 +msgid "Memory Module" +msgstr "Módulo de memória" + +#: hardinfo/dmi_util.c:32 modules/devices/parisc/processor.c:163 +#: modules/devices/x86/processor.c:662 +msgid "Cache" +msgstr "Cache" + +#: hardinfo/dmi_util.c:33 +msgid "Port Connector" +msgstr "Conector de porta" + +#: hardinfo/dmi_util.c:34 +msgid "System Slots" +msgstr "Slots do sistema" + +#: hardinfo/dmi_util.c:35 +msgid "On Board Devices" +msgstr "Dispositivos on board" + +#: hardinfo/dmi_util.c:36 +msgid "OEM Strings" +msgstr "Cordas OEM" + +#: hardinfo/dmi_util.c:37 +msgid "System Configuration Options" +msgstr "Opções de configuração do sistema" + +#: hardinfo/dmi_util.c:38 +msgid "BIOS Language" +msgstr "Idioma da BIOS" + +#: hardinfo/dmi_util.c:39 +msgid "Group Associations" +msgstr "Associações de grupo" + +#: hardinfo/dmi_util.c:40 +msgid "System Event Log" +msgstr "Relatório de eventos do sistema" + +#: hardinfo/dmi_util.c:41 +msgid "Physical Memory Array" +msgstr "Arranjo de memória física" + +#: hardinfo/dmi_util.c:42 +msgid "Memory Device" +msgstr "Dispositivo de memória" + +#: hardinfo/dmi_util.c:43 +msgid "32-bit Memory Error" +msgstr "Erro de memória 32-bit" + +#: hardinfo/dmi_util.c:44 +msgid "Memory Array Mapped Address" +msgstr "Endereço do arranjo de memória mapeado" + +#: hardinfo/dmi_util.c:45 +msgid "Memory Device Mapped Address" +msgstr "Endereço do dispositivo de memória mapeado" + +#: hardinfo/dmi_util.c:46 +msgid "Built-in Pointing Device" +msgstr "Dispositivo apontador embarcado" + +#: hardinfo/dmi_util.c:47 +msgid "Portable Battery" +msgstr "Bateria portátil" + +#: hardinfo/dmi_util.c:48 +msgid "System Reset" +msgstr "Reinício do sistema" + +#: hardinfo/dmi_util.c:49 +msgid "Hardware Security" +msgstr "Segurança do hardware" + +#: hardinfo/dmi_util.c:50 +msgid "System Power Controls" +msgstr "Controles de energia do sistema" + +#: hardinfo/dmi_util.c:51 +msgid "Voltage Probe" +msgstr "Sondagem de voltagem" + +#: hardinfo/dmi_util.c:52 +msgid "Cooling Device" +msgstr "Dispositivo de resfriamento" + +#: hardinfo/dmi_util.c:53 +msgid "Temperature Probe" +msgstr "Sondagem de temperatura" + +#: hardinfo/dmi_util.c:54 +msgid "Electrical Current Probe" +msgstr "Sondagem elétrica atual" + +#: hardinfo/dmi_util.c:55 +msgid "Out-of-band Remote Access" +msgstr "Acesso remoto fora da banda" + +#: hardinfo/dmi_util.c:56 +msgid "Boot Integrity Services" +msgstr "Serviços de integridade de inicialização" + +#: hardinfo/dmi_util.c:57 +msgid "System Boot" +msgstr "Inicialização do sistema" + +#: hardinfo/dmi_util.c:58 +msgid "64-bit Memory Error" +msgstr "Erro de memória de 64 bits" + +#: hardinfo/dmi_util.c:59 +msgid "Management Device" +msgstr "Dispositivo de gerenciamento" + +#: hardinfo/dmi_util.c:60 +msgid "Management Device Component" +msgstr "Componente do dispositivo de gerenciamento" + +#: hardinfo/dmi_util.c:61 +msgid "Management Device Threshold Data" +msgstr "Dados do limiar do dispositivo de gerenciamento" + +#: hardinfo/dmi_util.c:62 +msgid "Memory Channel" +msgstr "Canal de memória" + +#: hardinfo/dmi_util.c:63 +msgid "IPMI Device" +msgstr "Dispositivo IPMI" + +#: hardinfo/dmi_util.c:64 +msgid "Power Supply" +msgstr "Suprimento de energia" + +#: hardinfo/dmi_util.c:65 +msgid "Additional Information" +msgstr "Informações adicionais" + +#: hardinfo/dmi_util.c:66 +msgid "Onboard Device" +msgstr "Dispositivo onboard" + +#: hardinfo/dmi_util.c:226 +msgid "Invalid chassis type (0)" +msgstr "Tipo de chassi inválido (0)" + +#: hardinfo/dmi_util.c:227 hardinfo/dmi_util.c:228 +msgid "Unknown chassis type" +msgstr "Tipo de chassi desconhecido" + +#: hardinfo/dmi_util.c:229 +msgid "Desktop" +msgstr "Área de Trabalho" + +#: hardinfo/dmi_util.c:230 +msgid "Low-profile Desktop" +msgstr "Desktop de baixo perfil" + +#: hardinfo/dmi_util.c:231 +msgid "Pizza Box" +msgstr "Caixa de pizza" + +#: hardinfo/dmi_util.c:232 +msgid "Mini Tower" +msgstr "Mini torre " + +#: hardinfo/dmi_util.c:233 +msgid "Tower" +msgstr "Torre " + +#: hardinfo/dmi_util.c:234 +msgid "Portable" +msgstr "Portátil" + +#: hardinfo/dmi_util.c:235 modules/computer.c:391 modules/computer.c:400 +#: modules/computer.c:422 +msgid "Laptop" +msgstr "Computador portátil Laptop" + +#: hardinfo/dmi_util.c:236 +msgid "Notebook" +msgstr "Notebook" + +#: hardinfo/dmi_util.c:237 +msgid "Handheld" +msgstr "Handheld computador portátil de mão" + +#: hardinfo/dmi_util.c:238 +msgid "Docking Station" +msgstr "Estação de ancoragem " + +#: hardinfo/dmi_util.c:239 +msgid "All-in-one" +msgstr "All-in-one" + +#: hardinfo/dmi_util.c:240 +msgid "Subnotebook" +msgstr "Subnotebook mini notebooks " + +#: hardinfo/dmi_util.c:241 +msgid "Space-saving" +msgstr "Economia de espaço" + +#: hardinfo/dmi_util.c:242 +msgid "Lunch Box" +msgstr "Lancheira" + +#: hardinfo/dmi_util.c:243 +msgid "Main Server Chassis" +msgstr "Chassi do Servidor Principal" + +#: hardinfo/dmi_util.c:244 +msgid "Expansion Chassis" +msgstr "Chassi de Expansão" + +#: hardinfo/dmi_util.c:245 +msgid "Sub Chassis" +msgstr "Sub chassi" + +#: hardinfo/dmi_util.c:246 +msgid "Bus Expansion Chassis" +msgstr "Chassi de Expansão de Ônibus" + +#: hardinfo/dmi_util.c:247 +msgid "Peripheral Chassis" +msgstr "Chassi Periférico" + +#: hardinfo/dmi_util.c:248 +msgid "RAID Chassis" +msgstr "Chassi RAID" + +#: hardinfo/dmi_util.c:249 +msgid "Rack Mount Chassis" +msgstr "Chassis de Montagem em Rack" + +#: hardinfo/dmi_util.c:250 +msgid "Sealed-case PC" +msgstr "PC com caixa selada" + +#: hardinfo/dmi_util.c:251 +msgid "Multi-system" +msgstr "Multi-sistema" + +#: hardinfo/dmi_util.c:252 +msgid "CompactPCI" +msgstr "PCI compacto" + +#: hardinfo/dmi_util.c:253 +msgid "AdvancedTCA" +msgstr "TCA avançado" + +#: hardinfo/dmi_util.c:254 +msgid "Blade" +msgstr "Palheta" + +#: hardinfo/dmi_util.c:255 +msgid "Blade Enclosing" +msgstr "Juntada de palheta" + +#: hardinfo/dmi_util.c:256 +msgid "Tablet" +msgstr "Tablet" + +#: hardinfo/dmi_util.c:257 +msgid "Convertible" +msgstr "Conversível" + +#: hardinfo/dmi_util.c:258 +msgid "Detachable" +msgstr "Destacável" + +#: hardinfo/dmi_util.c:259 +msgid "IoT Gateway" +msgstr "Passagem IoT" + +#: hardinfo/dmi_util.c:260 +msgid "Embedded PC" +msgstr "PC embutido" + +#: hardinfo/dmi_util.c:261 +msgid "Mini PC" +msgstr "PC mini" + +#: hardinfo/dmi_util.c:262 +msgid "Stick PC" +msgstr "PC colocado" + +#: hardinfo/dt_util.c:1179 +msgid "phandle Map" +msgstr "Mapa de Phandle" + +#: hardinfo/dt_util.c:1180 +msgid "Alias Map" +msgstr "Mapa de alias" + +#: hardinfo/dt_util.c:1181 +msgid "Symbol Map" +msgstr "Mapa de símbolo" + +#. / %d will be latest year of copyright +#: hardinfo/hardinfo.c:50 +#, c-format +msgid "" +"Copyright (C) 2003-%d L. A. F. Pereira. See COPYING for details.\n" +"\n" +msgstr "" +"Copyright (C) 2003-%d L. A. F. Pereira. See COPYING for details.\n" +"\n" + +#: hardinfo/hardinfo.c:52 +#, c-format +msgid "" +"Compile-time options:\n" +" Release version: %s (%s)\n" +" BinReloc enabled: %s\n" +" Data prefix: %s\n" +" Library prefix: %s\n" +" Compiled for: %s\n" +msgstr "" +"Opções de tempo de compilação:\n" +" Versão de lançamento: %s (%s)\n" +" BinReloc ativado: %s\n" +" Prefixo de dados: %s\n" +" Prefixo da biblioteca: %s\n" +" Compilado por: %s\n" + +#: hardinfo/hardinfo.c:58 hardinfo/hardinfo.c:59 modules/computer.c:785 +#: modules/computer/modules.c:131 modules/computer/modules.c:132 +#: modules/devices/inputdevices.c:123 modules/devices/printers.c:138 +#: modules/devices/spd-decode.c:903 +msgid "Yes" +msgstr "Sim" + +#: hardinfo/hardinfo.c:59 modules/computer.c:785 modules/computer/modules.c:131 +#: modules/computer/modules.c:132 modules/devices/printers.c:138 +#: modules/devices/spd-decode.c:900 +msgid "No" +msgstr "Não" + +#: hardinfo/hardinfo.c:70 +#, c-format +msgid "" +"Failed to find runtime data.\n" +"\n" +"• Is HardInfo correctly installed?\n" +"• See if %s and %s exists and you have read permission." +msgstr "" +"Falha ao localizar dados de tempo de execução.\n" +"• O HardInfo está corretamente instalado?\n" +"• Veja se %s e %sexiste e você tem permissão de leitura." + +#: hardinfo/hardinfo.c:77 +#, c-format +msgid "" +"Modules:\n" +"%-20s %-15s %-12s\n" +msgstr "" +"Módulos:\n" +" %-20s %-15s %-12s\n" + +#: hardinfo/hardinfo.c:78 +msgid "File Name" +msgstr "Nome do arquivo" + +#: hardinfo/hardinfo.c:78 modules/computer.c:666 modules/computer.c:694 +#: modules/computer.c:815 modules/computer/languages.c:95 +#: modules/computer/modules.c:149 modules/devices/arm/processor.c:469 +#: modules/devices/dmi.c:37 modules/devices/dmi.c:48 modules/devices/gpu.c:233 +#: modules/devices/ia64/processor.c:160 modules/devices/inputdevices.c:111 +#: modules/devices/monitors.c:399 modules/devices/monitors.c:502 +#: modules/devices/sh/processor.c:84 modules/devices/x86/processor.c:749 +#: modules/network.c:332 +msgid "Name" +msgstr "Nome" + +#: hardinfo/hardinfo.c:78 modules/computer.c:347 modules/computer.c:572 +#: modules/computer.c:574 modules/computer.c:743 modules/computer/modules.c:151 +#: modules/devices/dmi.c:40 modules/devices/dmi.c:46 modules/devices/dmi.c:50 +#: modules/devices/dmi.c:56 modules/devices/firmware.c:105 +#: modules/devices/inputdevices.c:116 modules/devices/monitors.c:405 +msgid "Version" +msgstr "Versão" + +#: hardinfo/hardinfo.c:129 +#, c-format +msgid "Unknown benchmark ``%s'' or benchmark.so not loaded" +msgstr "Benchmark desconhecido `` 1%s'' ou benchmark.so não foi carregado" + +#: hardinfo/hardinfo.c:159 +msgid "Don't know what to do. Exiting." +msgstr "Não sabe o que fazer. Sair." + +#: hardinfo/usb_util.c:290 modules/devices/devicetree.c:91 +#: modules/devices/devicetree.c:92 modules/devices/monitors.c:407 +#: modules/devices/storage.c:246 +msgid "(None)" +msgstr "(Nenhum)" + +#: hardinfo/util.c:104 modules/computer/uptime.c:54 +#, c-format +msgid "%d day" +msgid_plural "%d days" +msgstr[0] "%d dia" +msgstr[1] "%d dias" + +#: hardinfo/util.c:105 modules/computer/uptime.c:55 +#, c-format +msgid "%d hour" +msgid_plural "%d hours" +msgstr[0] "%d hora" +msgstr[1] "%d horas" + +#: hardinfo/util.c:106 modules/computer/uptime.c:56 +#, c-format +msgid "%d minute" +msgid_plural "%d minutes" +msgstr[0] "%d minuto" +msgstr[1] "%d minutos" + +#: hardinfo/util.c:107 +#, c-format +msgid "%d second" +msgid_plural "%d seconds" +msgstr[0] "%d segundo" +msgstr[1] "%d segundos" + +#: hardinfo/util.c:128 +#, c-format +msgid "%.1f B" +msgstr "%.1f B" + +#: hardinfo/util.c:130 +#, c-format +msgid "%.1f KiB" +msgstr "%.1f KiB" + +#: hardinfo/util.c:132 +#, c-format +msgid "%.1f MiB" +msgstr "%.1f MiB" + +#: hardinfo/util.c:134 +#, c-format +msgid "%.1f GiB" +msgstr "%.1f GiB" + +#: hardinfo/util.c:136 +#, c-format +msgid "%.1f TiB" +msgstr "%.1f TiB" + +#: hardinfo/util.c:138 +#, c-format +msgid "%.1f PiB" +msgstr "1%.1f PiB " + +#: hardinfo/util.c:361 +msgid "Error" +msgstr "Erro" + +#: hardinfo/util.c:361 hardinfo/util.c:377 +msgid "Warning" +msgstr "Aviso" + +#: hardinfo/util.c:376 +msgid "Fatal Error" +msgstr "Erro fatal" + +#: hardinfo/util.c:406 +msgid "creates a report and prints to standard output" +msgstr "cria um relatório e imprimir por saída padrão" + +#: hardinfo/util.c:412 +msgid "chooses a report format ([text], html)" +msgstr "escolhe um formato de relatório ([texto], html)" + +#: hardinfo/util.c:418 +msgid "run benchmark; requires benchmark.so to be loaded" +msgstr "executar benchmark; requer benchmark.so a ser carregado" + +#: hardinfo/util.c:424 +msgid "note attached to benchmark results" +msgstr "nota anexada aos resultados de benchmark" + +#: hardinfo/util.c:430 +msgid "benchmark result format ([short], conf, shell)" +msgstr "formato de resultado de benchmark ([short], conf, shell)" + +#: hardinfo/util.c:436 +msgid "" +"maximum number of benchmark results to include (-1 for no limit, default is " +"10)" +msgstr "" +"número máximo de resultados de benchmark para incluir\n" +"(-1 para sem limite, padrão é 10)" + +#: hardinfo/util.c:442 +msgid "lists modules" +msgstr "lista os módulos" + +#: hardinfo/util.c:448 +msgid "specify module to load" +msgstr "especificar módulo para carregar" + +#: hardinfo/util.c:454 +msgid "automatically load module dependencies" +msgstr "carregar automaticamente as dependências do módulo" + +#: hardinfo/util.c:461 +msgid "run in XML-RPC server mode" +msgstr "executar no modo do servidor XML-RPC" + +#: hardinfo/util.c:468 +msgid "shows program version and quit" +msgstr "executar no modo do servidor XML-RPC" + +#: hardinfo/util.c:474 +msgid "do not run benchmarks" +msgstr "não execute benchmarks" + +#: hardinfo/util.c:480 +msgid "show all details" +msgstr "mostrar todos os detalhes" + +#: hardinfo/util.c:485 +msgid "- System Profiler and Benchmark tool" +msgstr "- Ferramenta Profiler e Benchmark do sistema" + +#: hardinfo/util.c:495 +#, c-format +msgid "" +"Unrecognized arguments.\n" +"Try ``%s --help'' for more information.\n" +msgstr "" +"Argumentos não reconhecidos.\n" +"Tentando ``%s --Ajuda' Para mais informação\n" + +#: hardinfo/util.c:903 +#, c-format +msgid "Module \"%s\" depends on module \"%s\", load it?" +msgstr "Modulo \"%s\" depende do módulo \"%s\", carregar isso? " + +#: hardinfo/util.c:926 +#, c-format +msgid "Module \"%s\" depends on module \"%s\"." +msgstr "Modulo \"%s\" depende do módulo \"%s\"." + +#: hardinfo/util.c:971 +#, c-format +msgid "No module could be loaded. Check permissions on \"%s\" and try again." +msgstr "" +"Nenhum módulo pode ser carregado. Verifique as permissões on \"%s\" e tente " +"novamente." + +#: hardinfo/util.c:975 +msgid "" +"No module could be loaded. Please use hardinfo -l to list all available " +"modules and try again with a valid module list." +msgstr "" +"Nenhum módulo pode ser carregado. Por favor, use hardinfo -l para listar " +"todos os módulos disponíveis e tente novamente com uma lista de módulos " +"válida." + +#: hardinfo/util.c:1030 +#, c-format +msgid "Scanning: %s..." +msgstr "Escaneando: %s..." + +#: hardinfo/util.c:1040 shell/shell.c:310 shell/shell.c:795 shell/shell.c:1962 +#: modules/benchmark.c:583 modules/benchmark.c:591 +msgid "Done." +msgstr "Feito." + +#: hardinfo/vendor.c:440 modules/computer.c:573 modules/computer.c:765 +#: modules/computer/os.c:79 modules/computer/os.c:263 modules/computer/os.c:300 +#: modules/computer/os.c:499 modules/computer/os.c:569 modules/devices.c:359 +#: modules/devices.c:505 modules/devices/printers.c:99 +#: modules/devices/printers.c:106 modules/devices/printers.c:116 +#: modules/devices/printers.c:131 modules/devices/printers.c:140 +#: modules/devices/printers.c:243 modules/devices/spd-decode.c:312 +#: modules/devices/usb.c:146 +msgid "Unknown" +msgstr "Desconhecido" + +#: shell/callbacks.c:128 +#, c-format +msgid "" +"Written by %s\n" +"Licensed under %s" +msgstr "" +"Escrito por 1%s\n" +"Licenciado sob %s" + +#: shell/callbacks.c:142 +#, c-format +msgid "No about information is associated with the %s module." +msgstr "Não há informação associada com o módulo%s ." + +#: shell/callbacks.c:158 +msgid "Author:" +msgstr "Autor:" + +#: shell/callbacks.c:161 +msgid "Contributors:" +msgstr "Contribuidores:" + +#: shell/callbacks.c:167 +msgid "Based on work by:" +msgstr "Baseado no trabalho de:" + +#: shell/callbacks.c:168 +msgid "MD5 implementation by Colin Plumb (see md5.c for details)" +msgstr "Implementação do MD5 por Colin Plumb (veja md5.c para detalhes)" + +#: shell/callbacks.c:169 +msgid "SHA1 implementation by Steve Reid (see sha1.c for details)" +msgstr "Implementação de SHA1 por Steve Reid (veja sha1.c para detalhes)" + +#: shell/callbacks.c:170 +msgid "Blowfish implementation by Paul Kocher (see blowfich.c for details)" +msgstr "Implementação Blowfish por Paul Kocher (veja blowfich.c para detalhes)" + +#: shell/callbacks.c:171 +msgid "Raytracing benchmark by John Walker (see fbench.c for details)" +msgstr "Raytracing benchmark por John Walker (veja fbench.c para detalhes)" + +#: shell/callbacks.c:172 +msgid "FFT benchmark by Scott Robert Ladd (see fftbench.c for details)" +msgstr "" +"Referência de FFT por Scott Robert Ladd (veja fftbench.c para detalhes)" + +#: shell/callbacks.c:173 +msgid "Some code partly based on x86cpucaps by Osamu Kayasono" +msgstr "Algum código parcialmente baseado em x86cpucaps por Osamu Kayasono" + +#: shell/callbacks.c:174 +msgid "Vendor list based on GtkSysInfo by Pissens Sebastien" +msgstr "Lista de fornecedores baseada em GtkSysInfo por Pissens Sebastien" + +#: shell/callbacks.c:175 +msgid "DMI support based on code by Stewart Adam" +msgstr "Suporte DMI baseado em código por Stewart Adam" + +#: shell/callbacks.c:176 +msgid "SCSI support based on code by Pascal F. Martin" +msgstr "Suporte SCSI baseado em código por Pascal F. Martin" + +#: shell/callbacks.c:181 +msgid "Tango Project" +msgstr "Projeto Tango" + +#: shell/callbacks.c:182 +msgid "The GNOME Project" +msgstr "Projeto Gnome" + +#: shell/callbacks.c:183 +msgid "VMWare, Inc. (USB icon from VMWare Workstation 6)" +msgstr "VMWare, Inc. (Ícone USB do VMWare Workstation 6)" + +#: shell/callbacks.c:201 +msgid "System information and benchmark tool" +msgstr "Informações do sistema e ferramenta de benchmark" + +#: shell/callbacks.c:206 +msgid "" +"HardInfo is free software; you can redistribute it and/or modify it under " +"the terms of the GNU General Public License as published by the Free " +"Software Foundation, version 2.\n" +"\n" +"This program is distributed in the hope that it will be useful, but WITHOUT " +"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or " +"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for " +"more details.\n" +"\n" +"You should have received a copy of the GNU General Public License along with " +"this program; if not, write to the Free Software Foundation, Inc., 51 " +"Franklin St, Fifth Floor, Boston, MA 02110-1301 USA" +msgstr "" +"HardInfo é software livre; você pode redistribuí-lo e / ou modificá-lo sob " +"os termos da Licença Pública Geral GNU como publicada pela Free Software " +"Foundation, versão 2.\n" +"\n" +"Este programa é distribuído na esperança de que seja útil, mas SEM QUALQUER " +"GARANTIA; sem mesmo a garantia implícita de COMERCIALIZAÇÃO ou ADEQUAÇÃO A " +"UM DETERMINADO FIM. Veja a Licença Pública Geral GNU para mais detalhes.\n" +"\n" +"Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com este " +"programa; se não, escreva para a Free Software Foundation, Inc., 51 Franklin " +"Street, Fifth Floor, Boston, MA 02110-1301 EUA" + +#: shell/callbacks.c:221 +msgid "translator-credits" +msgstr "tradutor-créditos darck sama lucas batista da silva equipe biglinux " + +#: shell/menu.c:43 +msgid "_Information" +msgstr "_Informação " + +#: shell/menu.c:44 +msgid "_Remote" +msgstr "_Remoto" + +#: shell/menu.c:45 +msgid "_View" +msgstr "_Vista View" + +#: shell/menu.c:46 +msgid "_Help" +msgstr "_Ajuda" + +#: shell/menu.c:47 +msgid "About _Modules" +msgstr "Sobre_módulos " + +#: shell/menu.c:51 +msgid "Generate _Report" +msgstr "Gerar_relatório" + +#: shell/menu.c:56 +msgid "_Network Updater..." +msgstr "_Atualizador de rede ..." + +#: shell/menu.c:61 +msgid "_Open..." +msgstr "_Abrir" + +#: shell/menu.c:66 +msgid "_Copy to Clipboard" +msgstr "_Copiar para área de transferência" + +#: shell/menu.c:67 +msgid "Copy to clipboard" +msgstr "Copiar para área de transferência" + +#: shell/menu.c:71 +msgid "_Refresh" +msgstr "_Atualizar" + +#: shell/menu.c:76 +msgid "_Open HardInfo Web Site" +msgstr "_Abrir site do HardInfo" + +#: shell/menu.c:81 +msgid "_Report bug" +msgstr "_Reportar bug" + +#: shell/menu.c:86 +msgid "_About HardInfo" +msgstr "_Sobre Hardinfo" + +#: shell/menu.c:87 +msgid "Displays program version information" +msgstr "Exibe informações de versão do programa" + +#: shell/menu.c:91 +msgid "_Quit" +msgstr "_Sair" + +#: shell/menu.c:98 +msgid "_Side Pane" +msgstr "_Painel lateral" + +#: shell/menu.c:99 +msgid "Toggles side pane visibility" +msgstr "Alterna a visibilidade do painel lateral" + +#: shell/menu.c:102 +msgid "_Toolbar" +msgstr "_Barra de ferramentas" + +#: shell/report.c:769 shell/report.c:777 +msgid "Save File" +msgstr "Salvar arquivo" + +#: shell/report.c:772 shell/report.c:1243 shell/syncmanager.c:748 +msgid "_Cancel" +msgstr "_Cancelar" + +#: shell/report.c:774 +msgid "_Save" +msgstr "_Salvar" + +#: shell/report.c:943 +msgid "Cannot create ReportContext. Programming bug?" +msgstr "Não é possível criar ReportContext. Erro de programação?" + +#: shell/report.c:962 +msgid "Open the report with your web browser?" +msgstr "Abrir o relatório com o seu navegador da web?" + +#: shell/report.c:965 +msgid "_No" +msgstr "_Não" + +#: shell/report.c:966 +msgid "_Open" +msgstr "_Abrir" + +#: shell/report.c:996 +msgid "Generating report..." +msgstr "Gerando relatório ..." + +#: shell/report.c:1006 +msgid "Report saved." +msgstr "Relatório salvo." + +#: shell/report.c:1008 +msgid "Error while creating the report." +msgstr "Erro ao criar o relatório." + +#: shell/report.c:1110 +msgid "Generate Report" +msgstr "Gerar relatório" + +#: shell/report.c:1135 +msgid "" +"Generate Report\n" +"Please choose the information that you wish to view in your report:" +msgstr "" +"Gerar relatório\n" +"Por favor, escolha as informações que você deseja visualizar em seu " +"relatório:" + +#: shell/report.c:1207 +msgid "Select _None" +msgstr "Selecionar_nenhum" + +#: shell/report.c:1218 +msgid "Select _All" +msgstr "Selecionar_todos" + +#: shell/report.c:1253 +msgid "_Generate" +msgstr "_Gerar" + +#: shell/shell.c:407 +#, c-format +msgid "%s - System Information" +msgstr "%s - Informações do sistema " + +#: shell/shell.c:412 +msgid "System Information" +msgstr "Informações do sistema" + +#: shell/shell.c:782 +msgid "Loading modules..." +msgstr "Carregando módulos ..." + +#: shell/shell.c:1828 +#, c-format +msgid "%s → Summary" +msgstr "%s → Resumo" + +#: shell/shell.c:1936 +msgid "Updating..." +msgstr "Atualizando..." + +#: shell/syncmanager.c:69 +msgid "" +"Synchronize with Central Database\n" +"The following information may be synchronized\nwith the HardInfo central " +"database." +msgstr "" +"sincronizar com o banco de dados\n" +"As informações a seguir podem ser sincronizadas\ncom o banco de dados central " +"do HardInfo." + +#: shell/syncmanager.c:72 +msgid "" +"Synchronizing\n" +"This may take some time." +msgstr "" +"Sincronizando\n" +"Isto Pode demorar um pouco" + +#: shell/syncmanager.c:132 +msgid "" +"HardInfo was compiled without libsoup support. (Network Updater requires it.)" +msgstr "" +"O HardInfo foi compilado sem suporte ao libsoup. (Atualizador de rede requer " +"isso.)" + +#: shell/syncmanager.c:161 shell/syncmanager.c:189 +#, c-format +msgid "%s (error #%d)" +msgstr "%s (erro #%d)" + +#: shell/syncmanager.c:170 shell/syncmanager.c:198 +msgid "Could not parse XML-RPC response" +msgstr "Não foi possível analisar a resposta do XML-RPC" + +#: shell/syncmanager.c:280 +#, c-format +msgid "" +"Server says it supports API version %d, but this version of HardInfo only " +"supports API version %d." +msgstr "" +"Servidor diz que suporta a versão da API ,%d mas esta versão do HardInfo " +"suporta apenas a versão da API %d." + +#: shell/syncmanager.c:375 +msgid "Contacting HardInfo Central Database" +msgstr "Entrando em contato com o banco de dados central do HardInfo" + +#: shell/syncmanager.c:376 +msgid "Cleaning up" +msgstr "Limpar" + +#: shell/syncmanager.c:493 +msgid "(canceled)" +msgstr "(cancelado)" + +#: shell/syncmanager.c:510 +msgid "(failed)" +msgstr "(falhou)" + +#: shell/syncmanager.c:521 +#, c-format +msgid "" +"Failed while performing \"%s\". Please file a bug report if this problem " +"persists. (Use the Help→Report bug option.)\n" +"\n" +"Details: %s" +msgstr "" +"Falha ao executar \"%s\". Por favor arquive um relatório de bug se este " +"problema persistir. (Use a opção Ajuda → Reportar erro.)\n" +"\n" +"Detalhes: %s" + +#: shell/syncmanager.c:530 +#, c-format +msgid "" +"Failed while performing \"%s\". Please file a bug report if this problem " +"persists. (Use the Help→Report bug option.)" +msgstr "" +"Falha ao executar \"%s\". Por favor arquive um relatório de bug se este " +"problema persistir. (Use a opção Ajuda → Reportar erro.)" + +#: shell/syncmanager.c:658 +msgid "Network Updater" +msgstr "Atualizador de rede" + +#: shell/syncmanager.c:757 +msgid "_Synchronize" +msgstr "_Sincronizar" + +#: modules/benchmark/benches.c:82 +msgid "CPU Blowfish (Single-thread)" +msgstr "CPU Blowfish (Processamento unitário)" + +#: modules/benchmark/benches.c:84 +msgid "CPU Blowfish (Multi-thread)" +msgstr "CPU Blowfish (Processamento múltiplo)" + +#: modules/benchmark/benches.c:86 +msgid "CPU Blowfish (Multi-core)" +msgstr "CPU Blowfish (Núcleo múltiplo)" + +#: modules/benchmark/benches.c:88 +msgid "CPU Zlib" +msgstr "CPU Zlib" + +#: modules/benchmark/benches.c:90 +msgid "CPU CryptoHash" +msgstr "CPU CryptoHash" + +#: modules/benchmark/benches.c:92 +msgid "CPU Fibonacci" +msgstr "CPU Fibonacci" + +#: modules/benchmark/benches.c:94 +msgid "CPU N-Queens" +msgstr "CPU N-Queens" + +#: modules/benchmark/benches.c:96 +msgid "FPU FFT" +msgstr "FPU FFT" + +#: modules/benchmark/benches.c:98 +msgid "FPU Raytracing" +msgstr "Raytracing de FPU" + +#: modules/benchmark/benches.c:100 +msgid "SysBench CPU (Single-thread)" +msgstr "SysBench CPU (Processamento unitário)" + +#: modules/benchmark/benches.c:102 +msgid "SysBench CPU (Multi-thread)" +msgstr "SysBench (Processamento múltiplo)" + +#: modules/benchmark/benches.c:104 +msgid "SysBench CPU (Four threads)" +msgstr "" + +#: modules/benchmark/benches.c:106 +msgid "SysBench Memory (Single-thread)" +msgstr "" + +#: modules/benchmark/benches.c:108 +msgid "SysBench Memory (Two threads)" +msgstr "" + +#: modules/benchmark/benches.c:110 +msgid "SysBench Memory" +msgstr "SysBench Memória" + +#: modules/benchmark/benches.c:113 +msgid "GPU Drawing" +msgstr "Desenho de GPU" + +#: modules/benchmark/benches.c:126 +msgid "" +"Alexey Kopytov's sysbench is required.\n" +"Results in events/second. Higher is better." +msgstr "" +"sysbench de Alexey Kopytov é requerido.\n" +"Resultados em eventos/segundo. Maior é melhor." + +#: modules/benchmark/benches.c:132 +msgid "" +"Alexey Kopytov's sysbench is required.\n" +"Results in MiB/second. Higher is better." +msgstr "" +"sysbench de Alexey Kopytov é requerido.\n" +"Resultados em MiB/segundo. Maior é melhor." + +#: modules/benchmark/benches.c:136 +msgid "Results in MiB/second. Higher is better." +msgstr "Resultados em MiB / segundo. Mais alto é melhor." + +#: modules/benchmark/benches.c:143 +msgid "Results in HIMarks. Higher is better." +msgstr "Resultados em HIMarks. Mais alto é melhor." + +#: modules/benchmark/benches.c:149 +msgid "Results in seconds. Lower is better." +msgstr "Resultados em segundos. Menor é melhor." + +#. /or modify +#. * it under the terms of the GNU General Public License as published by +#. * the Free Software Foundation, version 2. +#. * +#. * This program is distributed in the hope that it will be useful, +#. * but WITHOUT ANY WARRANTY; without even the implied warranty of +#. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +#. * GNU General Public License for more details. +#. * +#. * You should have received a copy of the GNU General Public License +#. * along with this program; if not, write to the Free Software +#. * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +#. +#. / Used for an unknown value. Having it in only one place cleans up the .po line references +#: modules/benchmark/bench_results.c:22 modules/computer.c:41 +#: modules/computer/display.c:41 modules/computer/display.c:58 +#: modules/computer/os.c:286 modules/computer/os.c:346 modules/devices.c:488 +#: modules/devices/dmi_memory.c:52 modules/devices/dmi_memory.c:53 +#: modules/devices/dmi_memory.c:579 modules/devices/dmi_memory.c:719 +#: modules/devices/dmi_memory.c:855 modules/devices/gpu.c:42 +#: modules/devices/gpu.c:58 modules/devices/gpu.c:112 modules/devices/gpu.c:120 +#: modules/devices/gpu.c:154 modules/devices/gpu.c:155 +#: modules/devices/gpu.c:176 modules/devices/monitors.c:27 +#: modules/devices/monitors.c:28 modules/devices/monitors.c:153 +#: modules/devices/monitors.c:162 modules/devices/pci.c:25 +#: modules/devices/pci.c:135 modules/devices/pci.c:136 +#: modules/devices/spd-decode.c:306 modules/devices/spd-decode.c:307 +#: modules/devices/spd-decode.c:310 modules/devices/spd-decode.c:311 +#: modules/devices/spd-decode.c:914 modules/devices/spd-decode.c:915 +#: modules/devices/storage.c:247 modules/devices/storage.c:309 +#: modules/devices/usb.c:28 modules/network/net.c:437 includes/cpu_util.h:11 +msgid "(Unknown)" +msgstr "(Desconhecido)" + +#: modules/benchmark/bench_results.c:49 modules/benchmark/bench_results.c:330 +#: modules/devices/alpha/processor.c:90 modules/devices/arm/processor.c:290 +#: modules/devices/arm/processor.c:303 modules/devices/arm/processor.c:345 +#: modules/devices/arm/processor.c:500 modules/devices.c:325 +#: modules/devices.c:333 modules/devices.c:361 modules/devices/gpu.c:115 +#: modules/devices/gpu.c:117 modules/devices/gpu.c:123 +#: modules/devices/gpu.c:125 modules/devices/gpu.c:179 +#: modules/devices/gpu.c:181 modules/devices/ia64/processor.c:167 +#: modules/devices/ia64/processor.c:196 modules/devices/m68k/processor.c:87 +#: modules/devices/mips/processor.c:77 modules/devices/parisc/processor.c:158 +#: modules/devices/parisc/processor.c:191 modules/devices/ppc/processor.c:160 +#: modules/devices/ppc/processor.c:187 modules/devices/riscv/processor.c:186 +#: modules/devices/riscv/processor.c:214 modules/devices/s390/processor.c:160 +#: modules/devices/sh/processor.c:87 modules/devices/sh/processor.c:88 +#: modules/devices/sh/processor.c:89 modules/devices/x86/processor.c:318 +#: modules/devices/x86/processor.c:331 modules/devices/x86/processor.c:657 +#: modules/devices/x86/processor.c:780 +msgid "MHz" +msgstr "MHz" + +#: modules/benchmark/bench_results.c:396 modules/benchmark/bench_results.c:495 +msgid "kiB" +msgstr "kIB" + +#: modules/benchmark/bench_results.c:403 modules/benchmark/bench_results.c:453 +#, c-format +msgid "%d-bit" +msgstr "" + +#: modules/benchmark/bench_results.c:422 modules/benchmark/bench_results.c:477 +msgid "Benchmark Result" +msgstr "Resultado de referência" + +#: modules/benchmark/bench_results.c:423 modules/benchmark/bench_results.c:479 +msgid "Threads" +msgstr "Tópicos" + +#: modules/benchmark/bench_results.c:424 modules/benchmark/bench_results.c:481 +msgid "Elapsed Time" +msgstr "Tempo gasto" + +#: modules/benchmark/bench_results.c:424 modules/benchmark/bench_results.c:481 +msgid "seconds" +msgstr "segundos" + +#: modules/benchmark/bench_results.c:425 modules/computer/languages.c:101 +#: modules/devices/arm/processor.c:355 modules/devices/gpu.c:147 +#: modules/devices/ia64/processor.c:166 modules/devices/pci.c:132 +#: modules/devices/ppc/processor.c:159 +msgid "Revision" +msgstr "Revisão" + +#: modules/benchmark/bench_results.c:426 modules/benchmark/bench_results.c:482 +msgid "Extra Information" +msgstr "Informação extra" + +#: modules/benchmark/bench_results.c:427 modules/benchmark/bench_results.c:483 +msgid "User Note" +msgstr "Nota de usuário" + +#: modules/benchmark/bench_results.c:429 modules/benchmark/bench_results.c:485 +msgid "Note" +msgstr "Nota" + +#: modules/benchmark/bench_results.c:430 modules/benchmark/bench_results.c:486 +msgid "" +"This result is from an old version of HardInfo. Results might not be " +"comparable to current version. Some details are missing." +msgstr "" +"Este resultado é de uma versão antiga do HardInfo. Os resultados não devem " +"ser comparados com os da versão atual. Alguns detalhes estão faltando." + +#: modules/benchmark/bench_results.c:431 modules/benchmark/bench_results.c:487 +#: modules/devices/devicetree/pmac_data.c:81 modules/devices/sh/processor.c:85 +msgid "Machine" +msgstr "Máquina " + +#: modules/benchmark/bench_results.c:432 modules/benchmark/bench_results.c:488 +#: modules/devices/devicetree.c:208 modules/devices/dmi.c:47 +msgid "Board" +msgstr "Placa" + +#: modules/benchmark/bench_results.c:433 modules/benchmark/bench_results.c:489 +msgid "CPU Name" +msgstr "Nome da CPU" + +#: modules/benchmark/bench_results.c:434 modules/benchmark/bench_results.c:490 +msgid "CPU Description" +msgstr "Descrição da CPU" + +#: modules/benchmark/bench_results.c:435 modules/benchmark/bench_results.c:491 +#: modules/benchmark.c:442 +msgid "CPU Config" +msgstr "Configurações da CPU" + +#: modules/benchmark/bench_results.c:436 modules/benchmark/bench_results.c:492 +msgid "Threads Available" +msgstr "Tópicos disponíveis" + +#: modules/benchmark/bench_results.c:437 modules/benchmark/bench_results.c:493 +msgid "GPU" +msgstr "GPU" + +#: modules/benchmark/bench_results.c:438 modules/benchmark/bench_results.c:494 +#: modules/computer.c:542 +msgid "OpenGL Renderer" +msgstr "Renderizador OpenGL" + +#: modules/benchmark/bench_results.c:439 modules/benchmark/bench_results.c:495 +#: modules/computer.c:123 modules/computer.c:531 modules/computer.c:1000 +#: modules/devices/gpu.c:150 +msgid "Memory" +msgstr "Memória" + +#: modules/benchmark/bench_results.c:440 modules/benchmark/bench_results.c:496 +msgid "Pointer Size" +msgstr "" + +#: modules/benchmark/bench_results.c:478 +msgid "Benchmark" +msgstr "Referência" + +#: modules/benchmark/bench_results.c:480 modules/devices/dmi_memory.c:879 +#: modules/devices/firmware.c:246 modules/devices/monitors.c:492 +#: modules/devices/x86/processor.c:691 +msgid "Result" +msgstr "Resultado " + +#: modules/benchmark/bench_results.c:498 +msgid "Handles" +msgstr "Alças" + +#: modules/benchmark/bench_results.c:499 +msgid "mid" +msgstr "Mid" + +#: modules/benchmark/bench_results.c:500 +msgid "cfg_val" +msgstr "cfg_val" + +#: modules/benchmark.c:442 +msgid "Results" +msgstr "Resultados" + +#: modules/benchmark.c:442 modules/devices/sparc/processor.c:75 +msgid "CPU" +msgstr "CPU" + +#: modules/benchmark.c:513 +#, c-format +msgid "Benchmarking: %s." +msgstr "avaliação comparativa Benchmarking: %s." + +#: modules/benchmark.c:527 +msgid "Benchmarking. Please do not move your mouse\nor press any keys." +msgstr "" +"Avaliando o desempenho. Por favor, não mova o mouse\nou pressione qualquer " +"tecla." + +#: modules/benchmark.c:530 +msgid "Cancel" +msgstr "Cancelar" + +#: modules/benchmark.c:601 +msgid "Benchmarks" +msgstr "Benchmarks" + +#: modules/benchmark.c:619 +msgid "Perform tasks and compare with other systems" +msgstr "Execute tarefas e compare com outros sistemas" + +#: modules/benchmark.c:730 +msgid "Send benchmark results" +msgstr "Enviar resultados de benchmark" + +#: modules/benchmark.c:735 +msgid "Receive benchmark results" +msgstr "Receber resultados de benchmark" + +#: modules/computer/alsa.c:26 modules/computer.c:546 +msgid "Audio Devices" +msgstr "Dispositivos de áudio" + +#: modules/computer/alsa.c:34 +msgid "Audio Adapter" +msgstr "Adaptador de áudio" + +#: modules/computer.c:80 modules/devices/firmware.c:104 +msgid "Summary" +msgstr "Resumo" + +#: modules/computer.c:81 modules/computer.c:534 modules/computer.c:999 +msgid "Operating System" +msgstr "Sistema operacional" + +#: modules/computer.c:82 +msgid "Security" +msgstr "Segurança" + +#: modules/computer.c:83 modules/devices/gpu.c:155 modules/devices/pci.c:136 +msgid "Kernel Modules" +msgstr "Módulos do kernel" + +#: modules/computer.c:84 modules/computer.c:678 +msgid "Boots" +msgstr "Boots" + +#: modules/computer.c:85 +msgid "Languages" +msgstr "Idiomas" + +#: modules/computer.c:86 +msgid "Memory Usage" +msgstr "Uso de memória" + +#: modules/computer.c:87 +msgid "Filesystems" +msgstr "Sistema de arquivos" + +#: modules/computer.c:88 modules/computer.c:539 +msgid "Display" +msgstr "Exibir" + +#: modules/computer.c:89 modules/computer/environment.c:32 +msgid "Environment Variables" +msgstr "variáveis de Meio Ambiente" + +#: modules/computer.c:91 +msgid "Development" +msgstr "Desenvolvimento" + +#: modules/computer.c:93 modules/computer.c:802 +msgid "Users" +msgstr "Usuários" + +#: modules/computer.c:94 +msgid "Groups" +msgstr "Grupos" + +#: modules/computer.c:125 +#, c-format +msgid "%dMB (%dMB used)" +msgstr "%dMB (%dMB usado)" + +#: modules/computer.c:127 modules/computer.c:594 +msgid "Uptime" +msgstr "Tempo de atividade" + +#: modules/computer.c:129 modules/computer.c:536 +msgid "Date/Time" +msgstr "Data hora" + +#: modules/computer.c:134 modules/computer.c:595 +msgid "Load Average" +msgstr "Carga média" + +#: modules/computer.c:247 +msgid "Scripting Languages" +msgstr "Idiomas de script" + +#: modules/computer.c:248 +msgid "Gambas3 (gbr3)" +msgstr "Gambas3 (gbr3)" + +#: modules/computer.c:249 +msgid "Python (default)" +msgstr "Python (padrão)" + +#: modules/computer.c:250 +msgid "Python2" +msgstr "Python2" + +#: modules/computer.c:251 +msgid "Python3" +msgstr "Python3" + +#: modules/computer.c:252 +msgid "Perl" +msgstr "Perl" + +#: modules/computer.c:253 +msgid "Perl6 (VM)" +msgstr "Perl6 (VM)" + +#: modules/computer.c:254 +msgid "Perl6" +msgstr "Perl6" + +#: modules/computer.c:255 +msgid "PHP" +msgstr "PHP" + +#: modules/computer.c:256 +msgid "Ruby" +msgstr "Rubi" + +#: modules/computer.c:257 +msgid "Bash" +msgstr "Bash Bater " + +#: modules/computer.c:258 +msgid "JavaScript (Node.js)" +msgstr "JavaScript (Node.js)" + +#: modules/computer.c:259 +msgid "awk" +msgstr "awk" + +#: modules/computer.c:260 +msgid "Compilers" +msgstr "Compiladores" + +#: modules/computer.c:261 +msgid "C (GCC)" +msgstr "C (GCC)" + +#: modules/computer.c:262 +msgid "C (Clang)" +msgstr "C (Clang)" + +#: modules/computer.c:263 +msgid "D (dmd)" +msgstr "D (dmd)" + +#: modules/computer.c:264 +msgid "Gambas3 (gbc3)" +msgstr "Gambas3 (gbc3)" + +#: modules/computer.c:265 +msgid "Java" +msgstr "Java" + +#: modules/computer.c:266 +msgid "C♯ (mcs)" +msgstr "" + +#: modules/computer.c:267 +msgid "Vala" +msgstr "Vala" + +#: modules/computer.c:268 +msgid "Haskell (GHC)" +msgstr "Haskell (GHC)" + +#: modules/computer.c:269 +msgid "FreePascal" +msgstr "FreePascal" + +#: modules/computer.c:270 +msgid "Go" +msgstr "Vai" + +#: modules/computer.c:271 +msgid "Rust" +msgstr "Rust" + +#: modules/computer.c:272 +msgid "Tools" +msgstr "Ferramentas" + +#: modules/computer.c:273 +msgid "make" +msgstr "fazer" + +#: modules/computer.c:274 +msgid "ninja" +msgstr "ninja" + +#: modules/computer.c:275 +msgid "GDB" +msgstr "GDB" + +#: modules/computer.c:276 +msgid "LLDB" +msgstr "LLDB" + +#: modules/computer.c:277 +msgid "strace" +msgstr "Strace" + +#: modules/computer.c:278 +msgid "valgrind" +msgstr "Valgrind" + +#: modules/computer.c:279 +msgid "QMake" +msgstr "Qmake" + +#: modules/computer.c:280 +msgid "CMake" +msgstr "Cmake" + +#: modules/computer.c:281 +msgid "Gambas3 IDE" +msgstr "IDE Gambas3" + +#: modules/computer.c:282 +msgid "Radare2" +msgstr "Radare2" + +#: modules/computer.c:283 +msgid "ltrace" +msgstr "ltrace" + +#: modules/computer.c:324 +msgid "Not found" +msgstr "Não encontrado" + +#: modules/computer.c:329 +#, c-format +msgid "Detecting version: %s" +msgstr "Detectando a versão: %s" + +#: modules/computer.c:347 +msgid "Program" +msgstr "Programa" + +#: modules/computer.c:365 +msgid "Field" +msgstr "Campo " + +#: modules/computer.c:365 modules/computer.c:667 modules/computer/modules.c:149 +#: modules/computer/modules.c:150 modules/devices/arm/processor.c:470 +msgid "Description" +msgstr "Descrição" + +#: modules/computer.c:365 modules/devices.c:726 +msgid "Value" +msgstr "Valor" + +#: modules/computer.c:385 +msgid "Single-board computer" +msgstr "Computador de placa única" + +#. /proc/apm +#: modules/computer.c:434 +msgid "Unknown physical machine type" +msgstr "Tipo de máquina física desconhecida" + +#: modules/computer.c:454 modules/computer.c:455 +msgid "Virtual (VMware)" +msgstr "Virtual (VMware)" + +#: modules/computer.c:457 modules/computer.c:458 modules/computer.c:459 +#: modules/computer.c:460 +msgid "Virtual (QEMU)" +msgstr "Virtual (QEMU)" + +#: modules/computer.c:462 modules/computer.c:463 +msgid "Virtual (Unknown)" +msgstr "Virtual (desconhecido)" + +#: modules/computer.c:465 modules/computer.c:466 modules/computer.c:467 +#: modules/computer.c:488 +msgid "Virtual (VirtualBox)" +msgstr "Virtual (VirtualBox)" + +#: modules/computer.c:469 modules/computer.c:470 modules/computer.c:471 +#: modules/computer.c:482 +msgid "Virtual (Xen)" +msgstr "Virtual (Xen)" + +#: modules/computer.c:473 +msgid "Virtual (hypervisor present)" +msgstr "Virtual (presente do hipervisor)" + +#: modules/computer.c:528 modules/computer.c:953 +msgid "Computer" +msgstr "Computador" + +#: modules/computer.c:532 +msgid "Machine Type" +msgstr "Tipo de machina" + +#: modules/computer.c:535 modules/computer.c:588 +msgid "User Name" +msgstr "Nome de usuário " + +#: modules/computer.c:540 +msgid "Resolution" +msgstr "Resolução " + +#: modules/computer.c:540 modules/computer.c:748 +#, c-format +msgid "%dx%d pixels" +msgstr "%dx%d pixels" + +#: modules/computer.c:543 +msgid "Session Display Server" +msgstr "Servidor de exibição de sessão" + +#: modules/computer.c:548 modules/devices.c:108 +msgid "Input Devices" +msgstr "Dispositivos de entrada" + +#: modules/computer.c:572 +msgid "Kernel" +msgstr "Kernel" + +#: modules/computer.c:573 +msgid "Command Line" +msgstr "Linha de comando" + +#: modules/computer.c:575 +msgid "C Library" +msgstr "Biblioteca C" + +#: modules/computer.c:576 +msgid "Distribution" +msgstr "Distribuição" + +#: modules/computer.c:582 +msgid "Spin/Flavor" +msgstr "Derivação" + +#: modules/computer.c:586 +msgid "Current Session" +msgstr "Sessão atual" + +#: modules/computer.c:587 +msgid "Computer Name" +msgstr "Nome do computador" + +#: modules/computer.c:589 modules/computer/languages.c:99 +msgid "Language" +msgstr "Idioma" + +#: modules/computer.c:590 modules/computer/users.c:50 +msgid "Home Directory" +msgstr "Diretório Home" + +#: modules/computer.c:591 +msgid "Desktop Environment" +msgstr "Ambiente de trabalho" + +#: modules/computer.c:594 +msgid "Misc" +msgstr "Misc" + +#: modules/computer.c:607 +msgid "HardInfo" +msgstr "HardInfo" + +#: modules/computer.c:608 +msgid "HardInfo running as" +msgstr "Rodando HardInfo como" + +#: modules/computer.c:609 +msgid "Superuser" +msgstr "Administrador" + +#: modules/computer.c:609 +msgid "User" +msgstr "Usuário" + +#: modules/computer.c:613 +msgid "Health" +msgstr "Sanidade" + +#: modules/computer.c:614 +msgid "Available entropy in /dev/random" +msgstr "Entropia disponível em / dev / random" + +#: modules/computer.c:618 +msgid "Hardening Features" +msgstr "Recursos de proteção" + +#: modules/computer.c:619 +msgid "ASLR" +msgstr "ASLR" + +#: modules/computer.c:620 +msgid "dmesg" +msgstr "dmesg" + +#: modules/computer.c:624 +msgid "Linux Security Modules" +msgstr "Módulos de Segurança do Linux" + +#: modules/computer.c:625 +msgid "Modules available" +msgstr "Módulos disponíveis" + +#: modules/computer.c:626 +msgid "SELinux status" +msgstr "Status do SELinux" + +#: modules/computer.c:632 +msgid "CPU Vulnerabilities" +msgstr "Vulnerabilidades da CPU" + +#: modules/computer.c:664 +msgid "Loaded Modules" +msgstr "Módulos carregados" + +#: modules/computer.c:680 +msgid "Date & Time" +msgstr "Data & hora" + +#: modules/computer.c:681 +msgid "Kernel Version" +msgstr "Versão do kernel" + +#: modules/computer.c:691 +msgid "Available Languages" +msgstr "Linguagens disponíveis" + +#: modules/computer.c:693 +msgid "Language Code" +msgstr "Código de Idioma" + +#: modules/computer.c:705 +msgid "Mounted File Systems" +msgstr "Sistemas de arquivos montados" + +#: modules/computer.c:707 modules/computer/filesystem.c:85 +msgid "Mount Point" +msgstr "Ponto de montagem" + +#: modules/computer.c:708 +msgid "Usage" +msgstr "Uso" + +#: modules/computer.c:709 modules/devices/gpu.c:75 modules/devices/gpu.c:83 +#: modules/devices/gpu.c:225 modules/devices/pci.c:88 modules/devices/pci.c:96 +#: modules/devices/pci.c:140 modules/devices/usb.c:169 +#: modules/devices/usb.c:181 +msgid "Device" +msgstr "Dispositivo" + +#: modules/computer.c:731 +msgid "Session" +msgstr "Sessão" + +#: modules/computer.c:732 modules/devices.c:726 modules/devices/dmi.c:55 +#: modules/devices/dmi_memory.c:603 modules/devices/dmi_memory.c:749 +#: modules/devices/inputdevices.c:112 modules/devices/x86/processor.c:714 +msgid "Type" +msgstr "Tipo" + +#: modules/computer.c:735 +msgid "Wayland" +msgstr "Wayland" + +#: modules/computer.c:736 modules/computer.c:741 +msgid "Current Display Name" +msgstr "Nome de exibição atual" + +#: modules/computer.c:740 +msgid "X Server" +msgstr "Servidor X" + +#: modules/computer.c:742 modules/computer.c:782 modules/devices/dmi.c:39 +#: modules/devices/dmi.c:45 modules/devices/dmi.c:49 modules/devices/dmi.c:54 +#: modules/devices/dmi_memory.c:750 modules/devices/dmi_memory.c:895 +#: modules/devices/firmware.c:105 modules/devices/firmware.c:168 +#: modules/devices/firmware.c:190 modules/devices/firmware.c:228 +#: modules/devices/gpu.c:74 modules/devices/gpu.c:82 modules/devices/gpu.c:224 +#: modules/devices/ia64/processor.c:161 modules/devices/inputdevices.c:114 +#: modules/devices/monitors.c:398 modules/devices/pci.c:87 +#: modules/devices/pci.c:95 modules/devices/usb.c:168 +#: modules/devices/x86/processor.c:653 +msgid "Vendor" +msgstr "Fornecedor" + +#: modules/computer.c:744 +msgid "Release Number" +msgstr "Número de Lançamento" + +#: modules/computer.c:752 +msgid "Screens" +msgstr "Telas" + +#: modules/computer.c:758 +msgid "Disconnected" +msgstr "Desconectado" + +#: modules/computer.c:761 +msgid "Connected" +msgstr "Conectado" + +#: modules/computer.c:769 +msgid "Unused" +msgstr "Não usado" + +#: modules/computer.c:770 +#, c-format +msgid "%dx%d pixels, offset (%d, %d)" +msgstr "%dx%d pixels,deslocamento (%d, %d)" + +#: modules/computer.c:779 +msgid "Outputs (XRandR)" +msgstr "Saídas (XRandR)" + +#: modules/computer.c:781 +msgid "OpenGL (GLX)" +msgstr "OpenGL (GLX)" + +#: modules/computer.c:783 +msgid "Renderer" +msgstr "Renderizador" + +#: modules/computer.c:784 +msgid "Direct Rendering" +msgstr "Renderização Direta" + +#: modules/computer.c:786 +msgid "Version (Compatibility)" +msgstr "Versão (Compatibilidade)" + +#: modules/computer.c:787 +msgid "Shading Language Version (Compatibility)" +msgstr "Versão da linguagem de sombreamento (Compatibilidade)" + +#: modules/computer.c:788 +msgid "Version (Core)" +msgstr "Versão (Núcleo)" + +#: modules/computer.c:789 +msgid "Shading Language Version (Core)" +msgstr "Versão de linguagem de sombreamento (Núcleo)" + +#: modules/computer.c:790 +msgid "Version (ES)" +msgstr "Versão (ES)" + +#: modules/computer.c:791 +msgid "Shading Language Version (ES)" +msgstr "Versão da linguagem de sombreamento (ES)" + +#: modules/computer.c:792 +msgid "GLX Version" +msgstr "GLX Versão" + +#: modules/computer.c:813 +msgid "Group" +msgstr "Grupo " + +#: modules/computer.c:816 modules/computer/users.c:49 +msgid "Group ID" +msgstr "ID do Grupo" + +#. / "usable memory" +#: modules/computer.c:909 +#, c-format +msgid "%0.1f %s available to Linux" +msgstr "%0.1f%s disponível para Linux" + +#: modules/computer.c:911 modules/devices/dmi_memory.c:661 +#: modules/devices/dmi_memory.c:809 modules/devices/dmi_memory.c:936 +msgid "GiB" +msgstr "GiB" + +#: modules/computer.c:913 modules/devices/dmi_memory.c:581 +#: modules/devices/dmi_memory.c:663 modules/devices/dmi_memory.c:723 +#: modules/devices/dmi_memory.c:811 modules/devices/dmi_memory.c:857 +#: modules/devices/dmi_memory.c:938 modules/network/net.c:395 +#: modules/network/net.c:417 modules/network/net.c:418 +msgid "MiB" +msgstr "MiB" + +#: modules/computer.c:915 modules/computer/memory_usage.c:77 +#: modules/computer/modules.c:149 +msgid "KiB" +msgstr "KiB" + +#: modules/computer.c:972 modules/devices/devicetree/pmac_data.c:82 +msgid "Motherboard" +msgstr "Placa mãe" + +#: modules/computer.c:1000 +msgid "Graphics" +msgstr "Gráficos" + +#: modules/computer.c:1001 modules/devices.c:109 +msgid "Storage" +msgstr "Armazenamento" + +#: modules/computer.c:1001 modules/devices.c:105 +msgid "Printers" +msgstr "Impressoras Printers" + +#: modules/computer.c:1001 +msgid "Audio" +msgstr "Áudio" + +#: modules/computer.c:1050 +msgid "Gathers high-level computer information" +msgstr "Reúne informações do computador de alto nível" + +#: modules/computer/filesystem.c:83 +msgid "Filesystem" +msgstr "Sistema de arquivo" + +#: modules/computer/filesystem.c:84 +msgid "Mounted As" +msgstr "Montado como" + +#: modules/computer/filesystem.c:84 +msgid "Read-Write" +msgstr "Ler-Escrever" + +#: modules/computer/filesystem.c:84 +msgid "Read-Only" +msgstr "Somente leitura" + +#: modules/computer/filesystem.c:86 modules/devices/dmi_memory.c:609 +#: modules/devices/dmi_memory.c:754 modules/devices/dmi_memory.c:786 +#: modules/devices/dmi_memory.c:825 modules/devices/dmi_memory.c:894 +msgid "Size" +msgstr "Tamanho" + +#: modules/computer/filesystem.c:87 +msgid "Used" +msgstr "Usado" + +#: modules/computer/filesystem.c:88 +msgid "Available" +msgstr "Disponível" + +#: modules/computer/languages.c:94 +msgid "Locale Information" +msgstr "Informação local" + +#: modules/computer/languages.c:96 modules/devices/dmi_memory.c:599 +#: modules/devices/gpu.c:204 +msgid "Source" +msgstr "Fonte" + +#: modules/computer/languages.c:97 +msgid "Address" +msgstr "Endereço" + +#: modules/computer/languages.c:98 +msgid "E-mail" +msgstr "E-mail" + +#: modules/computer/languages.c:100 +msgid "Territory" +msgstr "Território" + +#: modules/computer/languages.c:102 modules/devices/dmi.c:44 +msgid "Date" +msgstr "Data" + +#: modules/computer/languages.c:103 +msgid "Codeset" +msgstr "Codificação" + +#: modules/computer/loadavg.c:64 +msgid "Couldn't obtain load average" +msgstr "Não foi possível obter a média de carga" + +#: modules/computer/memory_usage.c:106 +msgid "Total Memory" +msgstr "Total de memoria " + +#: modules/computer/memory_usage.c:107 +msgid "Free Memory" +msgstr "Memoria livre" + +#: modules/computer/memory_usage.c:108 +msgid "Cached Swap" +msgstr "Memória usada no swap" + +#: modules/computer/memory_usage.c:109 +msgid "High Memory" +msgstr "Memória alta" + +#: modules/computer/memory_usage.c:110 +msgid "Free High Memory" +msgstr "Memória alta livre" + +#: modules/computer/memory_usage.c:111 +msgid "Low Memory" +msgstr "Memória baixa" + +#: modules/computer/memory_usage.c:112 +msgid "Free Low Memory" +msgstr "Memória baixa Livre" + +#: modules/computer/memory_usage.c:113 +msgid "Virtual Memory" +msgstr "Memória virtual" + +#: modules/computer/memory_usage.c:114 +msgid "Free Virtual Memory" +msgstr "Memória virtual livre" + +#: modules/computer/modules.c:117 modules/computer/modules.c:118 +#: modules/computer/modules.c:119 modules/computer/modules.c:120 +#: modules/computer/modules.c:121 modules/computer/modules.c:122 +#: modules/devices/dmi.c:111 modules/devices/dmi_memory.c:881 +#: modules/devices/firmware.c:246 modules/devices/x86/processor.c:693 +msgid "(Not available)" +msgstr "(Indisponível)" + +#: modules/computer/modules.c:148 +msgid "Module Information" +msgstr "Informação do módulo" + +#: modules/computer/modules.c:148 modules/devices/gpu.c:230 +msgid "Path" +msgstr "caminho" + +#: modules/computer/modules.c:148 +msgid "Used Memory" +msgstr "Memoria usada" + +#: modules/computer/modules.c:150 +msgid "Version Magic" +msgstr "Versão Magic" + +#: modules/computer/modules.c:151 +msgid "In Linus' Tree" +msgstr "Na árvore de Linus" + +#: modules/computer/modules.c:152 +msgid "Retpoline Enabled" +msgstr "Retpoline habilitada" + +#: modules/computer/modules.c:152 +msgid "Copyright" +msgstr "Direitos autorais" + +#: modules/computer/modules.c:152 +msgid "Author" +msgstr "Autor" + +#: modules/computer/modules.c:153 +msgid "License" +msgstr "Licença" + +#: modules/computer/modules.c:159 +msgid "Dependencies" +msgstr "Dependências" + +#: modules/computer/os.c:36 modules/computer/os.c:37 modules/computer/os.c:38 +#: modules/computer/os.c:39 +msgid "GNU C Library" +msgstr "Biblioteca GNU C" + +#: modules/computer/os.c:40 +msgid "uClibc or uClibc-ng" +msgstr "uClibc ou uClibc-ng" + +#: modules/computer/os.c:41 +msgid "diet libc" +msgstr "dieta libc " + +#: modules/computer/os.c:113 modules/computer/os.c:116 +msgid "GNOME Shell " +msgstr "GNOME Shell " + +#: modules/computer/os.c:124 modules/computer/os.c:127 +msgid "Version: " +msgstr "Versão: " + +#: modules/computer/os.c:146 modules/computer/os.c:149 +msgid "MATE Desktop Environment " +msgstr "Ambiente de trabalho MATE" + +#: modules/computer/os.c:180 +#, c-format +msgid "Unknown (Window Manager: %s)" +msgstr "Desconhecido (Gerenciador de Janelas: %s)" + +#. /{desktop environment} on {session type} +#: modules/computer/os.c:191 +#, c-format +msgid "%s on %s" +msgstr "%s on %s" + +#: modules/computer/os.c:261 +msgid "Terminal" +msgstr "Terminal" + +#: modules/computer/os.c:278 +msgid "User access allowed" +msgstr "Acesso ao usuário permitido" + +#: modules/computer/os.c:280 +msgid "User access forbidden" +msgstr "Acesso ao usuário proibido" + +#: modules/computer/os.c:282 +msgid "Access allowed (running as superuser)" +msgstr "Acesso permitido (rodando como administrador)" + +#: modules/computer/os.c:284 +msgid "Access forbidden? (running as superuser)" +msgstr "Acesso proibido? (rodando como administrador)" + +#: modules/computer/os.c:294 modules/computer/os.c:560 +msgid "Disabled" +msgstr "Desabilitado" + +#: modules/computer/os.c:296 +msgid "Partially enabled (mmap base+stack+VDSO base)" +msgstr "Parcialmente habilitado (base mmap+stack+base VDSO)" + +#: modules/computer/os.c:298 +msgid "Fully enabled (mmap base+stack+VDSO base+heap)" +msgstr "Totalmente habilitado (base mmap+stack+base VDSO+heap)" + +#. /bits of entropy for rng (0) +#: modules/computer/os.c:308 +msgid "(None or not available)" +msgstr "(Nenhum ou não disponível)" + +#. /bits of entropy for rng (low/poor value) +#: modules/computer/os.c:309 +#, c-format +msgid "%d bits (low)" +msgstr "%d bits (baixo)" + +#. /bits of entropy for rng (medium value) +#: modules/computer/os.c:310 +#, c-format +msgid "%d bits (medium)" +msgstr "%d bits (médio)" + +#. /bits of entropy for rng (high/good value) +#: modules/computer/os.c:311 +#, c-format +msgid "%d bits (healthy)" +msgstr "%d bits (saudável)" + +#: modules/computer/os.c:555 +msgid "Not installed" +msgstr "Não instalado" + +#: modules/computer/os.c:558 +msgid "Enabled" +msgstr "Habilitado" + +#: modules/computer/users.c:47 +msgid "User Information" +msgstr "Informação do usuário" + +#: modules/computer/users.c:48 +msgid "User ID" +msgstr "ID Usuários " + +#: modules/computer/users.c:51 +msgid "Default Shell" +msgstr "Shell Padrão " + +#: modules/devices/alpha/processor.c:88 modules/devices/devicetree.c:163 +#: modules/devices/devicetree.c:209 modules/devices/devicetree/pmac_data.c:80 +#: modules/devices/gpu.c:106 modules/devices/ia64/processor.c:165 +#: modules/devices/m68k/processor.c:84 modules/devices/mips/processor.c:75 +#: modules/devices/monitors.c:400 modules/devices/parisc/processor.c:155 +#: modules/devices/ppc/processor.c:158 modules/devices/riscv/processor.c:182 +#: modules/devices/s390/processor.c:132 +msgid "Model" +msgstr "Modelo " + +#: modules/devices/alpha/processor.c:89 +msgid "Platform String" +msgstr "String de plataforma" + +#: modules/devices/alpha/processor.c:90 modules/devices/arm/processor.c:345 +#: modules/devices/ia64/processor.c:167 modules/devices/m68k/processor.c:87 +#: modules/devices/mips/processor.c:77 modules/devices/parisc/processor.c:158 +#: modules/devices/ppc/processor.c:160 modules/devices/riscv/processor.c:186 +#: modules/devices/sh/processor.c:87 modules/devices/x86/processor.c:657 +msgid "Frequency" +msgstr "Freqüência " + +#: modules/devices/alpha/processor.c:91 modules/devices/arm/processor.c:346 +#: modules/devices/ia64/processor.c:168 modules/devices/m68k/processor.c:88 +#: modules/devices/mips/processor.c:78 modules/devices/parisc/processor.c:159 +#: modules/devices/ppc/processor.c:161 modules/devices/s390/processor.c:134 +#: modules/devices/sh/processor.c:90 modules/devices/x86/processor.c:658 +msgid "BogoMips" +msgstr "BogoMips" + +#: modules/devices/alpha/processor.c:92 modules/devices/arm/processor.c:347 +#: modules/devices/ia64/processor.c:169 modules/devices/m68k/processor.c:89 +#: modules/devices/mips/processor.c:79 modules/devices/parisc/processor.c:160 +#: modules/devices/ppc/processor.c:162 modules/devices/riscv/processor.c:187 +#: modules/devices/s390/processor.c:135 modules/devices/sh/processor.c:91 +#: modules/devices/sparc/processor.c:77 modules/devices/x86/processor.c:659 +msgid "Byte Order" +msgstr "Ordem de Byte" + +#. /hw_cap +#. /flag:swp +#: modules/devices/arm/arm_data.c:42 +msgctxt "arm-flag" +msgid "SWP instruction (atomic read-modify-write)" +msgstr "Instrução SWP (atomic read-modify-write)" + +#. /flag:half +#: modules/devices/arm/arm_data.c:43 +msgctxt "arm-flag" +msgid "Half-word loads and stores" +msgstr "Carga e armazenamento de meio word palavra" + +#. /flag:thumb +#: modules/devices/arm/arm_data.c:44 +msgctxt "arm-flag" +msgid "Thumb (16-bit instruction set)" +msgstr "Thumb (16-bit instruction set)" + +#. /flag:26bit +#: modules/devices/arm/arm_data.c:45 +msgctxt "arm-flag" +msgid "26-Bit Model (Processor status register folded into program counter)" +msgstr "" +"Modelo de 26 bits (registro de status do processador dobrado no contador de " +"programa)" + +#. /flag:fastmult +#: modules/devices/arm/arm_data.c:46 +msgctxt "arm-flag" +msgid "32x32->64-bit multiplication" +msgstr "32x32-> multiplicação de 64 bits" + +#. /flag:fpa +#: modules/devices/arm/arm_data.c:47 +msgctxt "arm-flag" +msgid "Floating point accelerator" +msgstr "Acelerador de ponto flutuante" + +#. /flag:vfp +#: modules/devices/arm/arm_data.c:48 +msgctxt "arm-flag" +msgid "VFP (early SIMD vector floating point instructions)" +msgstr "VFP (instruções iniciais de ponto flutuante de vetor SIMD)" + +#. /flag:edsp +#: modules/devices/arm/arm_data.c:49 +msgctxt "arm-flag" +msgid "DSP extensions (the 'e' variant of the ARM9 CPUs, and all others above)" +msgstr "Extensões DSP (a variante 'e' das CPUs ARM9 e todas as outras acima)" + +#. /flag:java +#: modules/devices/arm/arm_data.c:50 +msgctxt "arm-flag" +msgid "Jazelle (Java bytecode accelerator)" +msgstr "Jazelle (acelerador de bytecode Java)" + +#. /flag:iwmmxt +#: modules/devices/arm/arm_data.c:51 +msgctxt "arm-flag" +msgid "SIMD instructions similar to Intel MMX" +msgstr "Instruções SIMD semelhantes ao Intel MMX" + +#. /flag:crunch +#: modules/devices/arm/arm_data.c:52 +msgctxt "arm-flag" +msgid "MaverickCrunch coprocessor (if kernel support enabled)" +msgstr "Coprocessador MaverickCrunch (se o suporte ao kernel estiver ativado)" + +#. /flag:thumbee +#: modules/devices/arm/arm_data.c:53 +msgctxt "arm-flag" +msgid "ThumbEE" +msgstr "ThumbEE" + +#. /flag:neon +#: modules/devices/arm/arm_data.c:54 +msgctxt "arm-flag" +msgid "Advanced SIMD/NEON on AArch32" +msgstr "Avançado SIMD / NEON em AArch32" + +#. /flag:evtstrm +#: modules/devices/arm/arm_data.c:55 +msgctxt "arm-flag" +msgid "Kernel event stream using generic architected timer" +msgstr "Fluxo de eventos do kernel usando o temporizador arquitetado genérico" + +#. /flag:vfpv3 +#: modules/devices/arm/arm_data.c:56 +msgctxt "arm-flag" +msgid "VFP version 3" +msgstr "Versão 3 do VFP" + +#. /flag:vfpv3d16 +#: modules/devices/arm/arm_data.c:57 +msgctxt "arm-flag" +msgid "VFP version 3 with 16 D-registers" +msgstr "VFP versão 3 com 16 registros D" + +#. /flag:vfpv4 +#: modules/devices/arm/arm_data.c:58 +msgctxt "arm-flag" +msgid "VFP version 4 with fast context switching" +msgstr "VFP versão 4 com comutação rápida de contexto" + +#. /flag:vfpd32 +#: modules/devices/arm/arm_data.c:59 +msgctxt "arm-flag" +msgid "VFP with 32 D-registers" +msgstr "VFP com 32 registros D" + +#. /flag:tls +#: modules/devices/arm/arm_data.c:60 +msgctxt "arm-flag" +msgid "TLS register" +msgstr "Registro TLS" + +#. /flag:idiva +#: modules/devices/arm/arm_data.c:61 +msgctxt "arm-flag" +msgid "SDIV and UDIV hardware division in ARM mode" +msgstr "Divisão de hardware SDIV e UDIV no modo ARM" + +#. /flag:idivt +#: modules/devices/arm/arm_data.c:62 +msgctxt "arm-flag" +msgid "SDIV and UDIV hardware division in Thumb mode" +msgstr "Divisão de hardware SDIV e UDIV no modo Thumb" + +#. /flag:lpae +#: modules/devices/arm/arm_data.c:63 +msgctxt "arm-flag" +msgid "40-bit Large Physical Address Extension" +msgstr "Extensão de endereço físico grande de 40 bits" + +#. /hw_cap2 +#. /flag:pmull +#: modules/devices/arm/arm_data.c:65 +msgctxt "arm-flag" +msgid "64x64->128-bit F2m multiplication (arch>8)" +msgstr "64x64-> multiplicação F2m de 128 bits (arco> 8)" + +#. /flag:aes +#: modules/devices/arm/arm_data.c:66 +msgctxt "arm-flag" +msgid "Crypto:AES (arch>8)" +msgstr "Criptografia: AES (arco> 8)" + +#. /flag:sha1 +#: modules/devices/arm/arm_data.c:67 +msgctxt "arm-flag" +msgid "Crypto:SHA1 (arch>8)" +msgstr "Criptografia: SHA1 (arco> 8)" + +#. /flag:sha2 +#: modules/devices/arm/arm_data.c:68 +msgctxt "arm-flag" +msgid "Crypto:SHA2 (arch>8)" +msgstr "Criptografia: SHA2 (arco> 8)" + +#. /flag:crc32 +#: modules/devices/arm/arm_data.c:69 +msgctxt "arm-flag" +msgid "CRC32 checksum instructions (arch>8)" +msgstr "Instruções de soma de verificação CRC32 (arco> 8)" + +#. /flag:asimd +#: modules/devices/arm/arm_data.c:72 +msgctxt "arm-flag" +msgid "Advanced SIMD/NEON on AArch64 (arch>8)" +msgstr "Avançado SIMD / NEON em AArch64 (arco> 8)" + +#: modules/devices/arm/processor.c:143 +msgid "ARM Processor" +msgstr "Processador ARM" + +#: modules/devices/arm/processor.c:214 modules/devices/riscv/processor.c:147 +#: modules/devices/x86/processor.c:608 +msgid "Empty List" +msgstr "Lista vazia" + +#: modules/devices/arm/processor.c:240 modules/devices/gpu.c:148 +#: modules/devices/gpu.c:226 modules/devices/x86/processor.c:268 +msgid "Clocks" +msgstr "Clocks Relógios" + +#: modules/devices/arm/processor.c:286 modules/devices/arm/processor.c:299 +#: modules/devices/x86/processor.c:314 modules/devices/x86/processor.c:327 +#, c-format +msgid "%.2f-%.2f %s=%dx\n" +msgstr "%.2f-%.2f %s=%dx\n" + +#: modules/devices/arm/processor.c:342 +msgid "Linux Name" +msgstr "Nome Linux" + +#: modules/devices/arm/processor.c:343 +msgid "Decoded Name" +msgstr "Nome decodificado" + +#: modules/devices/arm/processor.c:344 modules/network/net.c:453 +msgid "Mode" +msgstr "Modo" + +#: modules/devices/arm/processor.c:350 +msgid "ARM" +msgstr "ARM" + +#: modules/devices/arm/processor.c:351 +msgid "Implementer" +msgstr "Implementador" + +#: modules/devices/arm/processor.c:352 modules/devices/dmi_memory.c:896 +msgid "Part" +msgstr "Parte" + +#: modules/devices/arm/processor.c:353 modules/devices/ia64/processor.c:162 +#: modules/devices/parisc/processor.c:156 modules/devices/riscv/processor.c:183 +msgid "Architecture" +msgstr "Arquitetura" + +#: modules/devices/arm/processor.c:354 +msgid "Variant" +msgstr "Variante" + +#: modules/devices/arm/processor.c:356 modules/devices/riscv/processor.c:190 +#: modules/devices/sparc/processor.c:78 modules/devices/x86/processor.c:665 +msgid "Capabilities" +msgstr "Capacidades" + +#: modules/devices/arm/processor.c:468 +msgid "SOC/Package" +msgstr "SOC / Pacote" + +#: modules/devices/arm/processor.c:472 modules/devices/x86/processor.c:751 +msgid "Logical CPU Config" +msgstr "Configuração lógica da CPU" + +#: modules/devices/arm/processor.c:489 +msgid "SOC/Package Information" +msgstr "SOC / informações do pacote" + +#: modules/devices/battery.c:178 +#, c-format +msgid "" +"\n" +"[Battery: %s]\n" +"State=%s (load: %s)\n" +"Capacity=%s / %s (%.2f%%)\n" +"Battery Technology=%s (%s)\n" +"Manufacturer=%s\n" +"Model Number=%s\n" +"Serial Number=%s\n" +msgstr "" +"\n" +"[Bateria: %s]\n" +"Estado=%s (load: %s)\n" +"Capacidade=%s / %s (%.2f%%)\n" +"Tecnologia de Baterias=%s (%s)\n" +"Fabricante=%s\n" +"Número do modelo=%s\n" +"Número de série=%s\n" + +#: modules/devices/battery.c:255 +#, c-format +msgid "" +"\n" +"[Battery: %s]\n" +"State=%s\n" +"Capacity=%s / %s\n" +"Battery Technology=%s\n" +"Manufacturer=%s\n" +"Model Number=%s\n" +"Serial Number=%s\n" +msgstr "" +"\n" +"[Bateria: %s]\n" +"Estado=%s\n" +"Capacidade=%s / %s\n" +"Tecnologia de bateria=%s\n" +"Fabricante=%s\n" +"Número do Modelo=%s\n" +"Número de série=%s\n" + +#: modules/devices/battery.c:343 +#, c-format +msgid "" +"\n" +"[Battery (APM)]\n" +"Charge=%d%%\n" +"Remaining Charge=%s of %s\n" +"Using=%s\n" +"APM driver version=%s\n" +"APM BIOS version=%s\n" +msgstr "" +"\n" +"[Bateria (APM)]\n" +"Carregar=%d%%\n" +"Carga carregamento restante=%s of %s\n" +"Usando=%s\n" +"APM driver versão=%s\n" +"APM BIOS versão=%s\n" + +#: modules/devices/battery.c:355 +#, c-format +msgid "" +"\n" +"[Battery (APM)]\n" +"Charge=%d%%\n" +"Using=%s\n" +"APM driver version=%s\n" +"APM BIOS version=%s\n" +msgstr "" +"\n" +"[Bateria (APM)]\n" +"Carga Carregar=%d%%\n" +"Usando=%s\n" +"APM driver versão=%s\n" +"APM BIOS versão=%s\n" + +#: modules/devices/battery.c:382 +msgid "" +"[No batteries]\n" +"No batteries found on this system=\n" +msgstr "" +"[Sem baterias]\n" +"Nenhuma bateria encontrada neste sistema=\n" + +#: modules/devices.c:100 +msgid "Graphics Processors" +msgstr "Processadores Gráficos" + +#: modules/devices.c:101 modules/devices/monitors.c:445 +#: modules/devices/monitors.c:492 +msgid "Monitors" +msgstr "" + +#: modules/devices.c:102 modules/devices/pci.c:163 +msgid "PCI Devices" +msgstr "Dispositivos PCI" + +#: modules/devices.c:103 modules/devices/usb.c:210 +msgid "USB Devices" +msgstr "Dispositivos USB " + +#: modules/devices.c:104 +msgid "Firmware" +msgstr "Firmware" + +#: modules/devices.c:106 +msgid "Battery" +msgstr "Bateria" + +#: modules/devices.c:107 +msgid "Sensors" +msgstr "Sensores" + +#: modules/devices.c:110 +msgid "System DMI" +msgstr "Sistema DMI" + +#: modules/devices.c:111 +msgid "Memory Devices" +msgstr "Dispositivos de memória" + +#: modules/devices.c:113 modules/devices.c:115 +msgid "Device Tree" +msgstr "Árvore de Dispositivos" + +#: modules/devices.c:117 +msgid "Resources" +msgstr "Recursos" + +#: modules/devices.c:177 +#, c-format +msgid "%d physical processor" +msgid_plural "%d physical processors" +msgstr[0] "%d processador físico" +msgstr[1] "%d processadores físicos" + +#: modules/devices.c:178 +#, c-format +msgid "%d core" +msgid_plural "%d cores" +msgstr[0] "%d núcleo" +msgstr[1] " %d núcleos" + +#: modules/devices.c:179 +#, c-format +msgid "%d thread" +msgid_plural "%d threads" +msgstr[0] "%d thread" +msgstr[1] "%d threads" + +#. /NP procs; NC cores; NT threads +#: modules/devices.c:180 +#, c-format +msgid "%s; %s; %s" +msgstr "%s; %s; %s" + +#: modules/devices.c:726 +msgid "Sensor" +msgstr "Sensor" + +#: modules/devices.c:773 modules/devices/dmi_memory.c:826 +msgid "Devices" +msgstr "Dispositivos " + +#: modules/devices.c:785 +msgid "Update PCI ID listing" +msgstr "Atualizar lista de IDs de PCI" + +#: modules/devices.c:797 +msgid "Update CPU feature database" +msgstr "Atualizar banco de dados de recursos da CPU" + +#: modules/devices.c:825 +msgid "Gathers information about hardware devices" +msgstr "Reúne informações sobre dispositivos de hardware" + +#: modules/devices.c:844 +msgid "Resource information requires superuser privileges" +msgstr "Reúne informações sobre dispositivos de hardware" + +#: modules/devices.c:850 +msgid "" +"Any NVMe storage devices present are not listed.\n" +"udisksd is required for NVMe devices." +msgstr "" +"Quaisquer dispositivos de armazenamento NVMe não foram listados.\n" +"udisksd é requerido pelos dispositivos NVMe." + +#: modules/devices/devicetree.c:52 +msgid "Properties" +msgstr "Propriedades" + +#: modules/devices/devicetree.c:53 +msgid "Children" +msgstr "Crianças" + +#: modules/devices/devicetree.c:89 +msgid "Node" +msgstr "Node nó" + +#: modules/devices/devicetree.c:90 +msgid "Node Path" +msgstr "Caminho do Nó Node Path" + +#: modules/devices/devicetree.c:91 +msgid "Alias" +msgstr "Alias" + +#: modules/devices/devicetree.c:92 +msgid "Symbol" +msgstr "Símbolo" + +#: modules/devices/devicetree.c:145 modules/devices/devicetree/pmac_data.c:79 +msgid "Platform" +msgstr "Plataforma" + +#: modules/devices/devicetree.c:146 modules/devices/devicetree.c:211 +#: modules/devices/gpu.c:231 +msgid "Compatible" +msgstr "Compatível" + +#: modules/devices/devicetree.c:147 +msgid "GPU-compatible" +msgstr "Compatível com GPU" + +#: modules/devices/devicetree.c:162 +msgid "Raspberry Pi or Compatible" +msgstr "Raspberry Pi ou compatível" + +#: modules/devices/devicetree.c:164 modules/devices/devicetree.c:191 +#: modules/devices/devicetree.c:210 modules/devices/devicetree/rpi_data.c:168 +#: modules/devices/dmi.c:41 modules/devices/dmi.c:51 modules/devices/dmi.c:57 +#: modules/devices/usb.c:178 +msgid "Serial Number" +msgstr "Número de série" + +#: modules/devices/devicetree.c:165 modules/devices/devicetree/rpi_data.c:165 +msgid "RCode" +msgstr "RCode" + +#: modules/devices/devicetree.c:165 +msgid "No revision code available; unable to lookup model details." +msgstr "" +"Nenhum código de revisão disponível; incapaz de pesquisar detalhes do modelo." + +#: modules/devices/devicetree.c:190 +msgid "More" +msgstr "Mais" + +#: modules/devices/devicetree.c:271 +msgid "Messages" +msgstr "Mensagens" + +#: modules/devices/devicetree/pmac_data.c:78 +msgid "Apple Power Macintosh" +msgstr "Apple Power Macintosh" + +#: modules/devices/devicetree/pmac_data.c:83 +msgid "Detected as" +msgstr "Detectado como" + +#: modules/devices/devicetree/pmac_data.c:84 +msgid "PMAC Flags" +msgstr "Bandeiras do PMAC" + +#: modules/devices/devicetree/pmac_data.c:85 +msgid "L2 Cache" +msgstr "L2 Cache" + +#: modules/devices/devicetree/pmac_data.c:86 +msgid "PMAC Generation" +msgstr "Geração PMAC" + +#: modules/devices/devicetree/rpi_data.c:160 +#: modules/devices/devicetree/rpi_data.c:161 +msgid "Raspberry Pi" +msgstr "Raspberry Pi" + +#: modules/devices/devicetree/rpi_data.c:161 +msgid "Board Name" +msgstr "Nome da placa" + +#: modules/devices/devicetree/rpi_data.c:162 +msgid "PCB Revision" +msgstr "Revisão PCB" + +#: modules/devices/devicetree/rpi_data.c:163 +msgid "Introduction" +msgstr "Introdução " + +#: modules/devices/devicetree/rpi_data.c:164 modules/devices/usb.c:170 +msgid "Manufacturer" +msgstr "Fabricante" + +#: modules/devices/devicetree/rpi_data.c:166 +msgid "SOC (spec)" +msgstr "SOC (spec)" + +#: modules/devices/devicetree/rpi_data.c:167 +msgid "Memory (spec)" +msgstr "Memoria (spec)" + +#: modules/devices/devicetree/rpi_data.c:169 +msgid "Permanent overvolt bit" +msgstr "Bit permanente de sobretensão" + +#: modules/devices/devicetree/rpi_data.c:169 +msgctxt "rpi-ov-bit" +msgid "Set" +msgstr "Conjunto" + +#: modules/devices/devicetree/rpi_data.c:169 +msgctxt "rpi-ov-bit" +msgid "Not set" +msgstr "Não configurado" + +#: modules/devices/dmi.c:36 modules/devices/inputdevices.c:115 +#: modules/devices/usb.c:167 +msgid "Product" +msgstr "Produto" + +#: modules/devices/dmi.c:38 modules/devices/ia64/processor.c:164 +#: modules/devices/sh/processor.c:86 +msgid "Family" +msgstr "Família" + +#: modules/devices/dmi.c:42 +msgid "SKU" +msgstr "SKU" + +#: modules/devices/dmi.c:43 +msgid "BIOS" +msgstr "BIOS" + +#: modules/devices/dmi.c:52 modules/devices/dmi.c:58 +msgid "Asset Tag" +msgstr "Asset Tag Tag de patrimônio" + +#: modules/devices/dmi.c:115 modules/devices/dmi_memory.c:882 +#: modules/devices/x86/processor.c:694 +msgid "(Not available; Perhaps try running HardInfo as root.)" +msgstr "(Não disponível; Tente rodar o HardInfo como root.)" + +#: modules/devices/dmi.c:156 +msgid "DMI Unavailable" +msgstr "" + +#: modules/devices/dmi.c:158 +msgid "DMI is not avaliable. Perhaps this platform does not provide DMI." +msgstr "" + +#: modules/devices/dmi.c:159 +msgid "DMI is not available; Perhaps try running HardInfo as root." +msgstr "" + +#: modules/devices/dmi_memory.c:598 +msgid "Serial Presence Detect (SPD)" +msgstr "" + +#: modules/devices/dmi_memory.c:601 +msgid "SPD Revision" +msgstr "" + +#: modules/devices/dmi_memory.c:602 modules/devices/dmi_memory.c:748 +msgid "Form Factor" +msgstr "" + +#: modules/devices/dmi_memory.c:604 +msgid "Module Vendor" +msgstr "" + +#: modules/devices/dmi_memory.c:606 +msgid "DRAM Vendor" +msgstr "" + +#: modules/devices/dmi_memory.c:608 modules/devices/dmi_memory.c:753 +msgid "Part Number" +msgstr "" + +#: modules/devices/dmi_memory.c:610 +msgid "Manufacturing Date (Week / Year)" +msgstr "" + +#: modules/devices/dmi_memory.c:644 modules/devices/dmi_memory.c:879 +msgid "Memory Device List" +msgstr "" + +#: modules/devices/dmi_memory.c:686 +msgid "Memory Array" +msgstr "" + +#: modules/devices/dmi_memory.c:687 modules/devices/x86/processor.c:713 +msgid "DMI Handle" +msgstr "" + +#: modules/devices/dmi_memory.c:688 modules/devices/dmi_memory.c:746 +#: modules/devices/dmi_memory.c:784 modules/devices/dmi_memory.c:893 +msgid "Locator" +msgstr "" + +#: modules/devices/dmi_memory.c:689 +msgid "Use" +msgstr "Usar" + +#: modules/devices/dmi_memory.c:690 +msgid "Error Correction Type" +msgstr "" + +#: modules/devices/dmi_memory.c:691 +msgid "Size (Present / Max)" +msgstr "Tamanho (atual / máx)" + +#: modules/devices/dmi_memory.c:692 +msgid "Devices (Populated / Sockets)" +msgstr "" + +#: modules/devices/dmi_memory.c:693 modules/devices/dmi_memory.c:827 +msgid "Types Present" +msgstr "Tipos apresentados" + +#: modules/devices/dmi_memory.c:744 modules/devices/dmi_memory.c:782 +msgid "Memory Socket" +msgstr "" + +#: modules/devices/dmi_memory.c:745 modules/devices/dmi_memory.c:783 +msgid "DMI Handles (Array, Socket)" +msgstr "" + +#: modules/devices/dmi_memory.c:747 modules/devices/dmi_memory.c:785 +msgid "Bank Locator" +msgstr "" + +#: modules/devices/dmi_memory.c:755 +msgid "Rated Speed" +msgstr "" + +#: modules/devices/dmi_memory.c:756 +msgid "Configured Speed" +msgstr "Velocidade configurada" + +#: modules/devices/dmi_memory.c:757 +msgid "Data Width/Total Width" +msgstr "" + +#: modules/devices/dmi_memory.c:758 +msgid "Rank" +msgstr "Ranque" + +#: modules/devices/dmi_memory.c:759 +msgid "Minimum Voltage" +msgstr "Voltagem mínima" + +#: modules/devices/dmi_memory.c:760 +msgid "Maximum Voltage" +msgstr "Voltagem máxima" + +#: modules/devices/dmi_memory.c:761 +msgid "Configured Voltage" +msgstr "Voltagem configurada" + +#: modules/devices/dmi_memory.c:786 modules/devices/dmi_memory.c:793 +#: modules/devices/monitors.c:492 +msgid "(Empty)" +msgstr "(Vazio)" + +#: modules/devices/dmi_memory.c:824 +msgid "Serial Presence Detect (SPD) Summary" +msgstr "" + +#: modules/devices/dmi_memory.c:947 +msgid " dmidecode utility available" +msgstr "" + +#: modules/devices/dmi_memory.c:948 +msgid " ... and HardInfo running with superuser privileges" +msgstr " ... e HardInfo rodando com privilégios de superusuário" + +#: modules/devices/dmi_memory.c:949 +msgid " eeprom module loaded (for SDR, DDR, DDR2, DDR3)" +msgstr "" + +#: modules/devices/dmi_memory.c:950 +msgid "" +" ... or ee1004 module loaded and configured! " +"(for DDR4)" +msgstr "" + +#: modules/devices/dmi_memory.c:961 +msgid "Memory information requires one or both of the following:" +msgstr "As informações de memória precisam um ou ambos do seguinte:" + +#: modules/devices/dmi_memory.c:982 +msgid "" +"\"More often than not, information contained in the DMI tables is " +"inaccurate,\n" +"incomplete or simply wrong.\" -dmidecode manual page" +msgstr "" + +#: modules/devices/firmware.c:69 +msgid "Device cannot be removed easily" +msgstr "O dispositivo não pode ser removido facilmente" + +#: modules/devices/firmware.c:70 +msgid "Device is updatable in this or any other mode" +msgstr "O dispositivo será atualizado neste ou em qualquer outro modo" + +#: modules/devices/firmware.c:71 +msgid "Update can only be done from offline mode" +msgstr "Atualização apenas pode ser feita a partir do modo offline" + +#: modules/devices/firmware.c:72 +msgid "Requires AC power" +msgstr "Precisa de energia AC" + +#: modules/devices/firmware.c:73 +msgid "Is locked and can be unlocked" +msgstr "Está bloqueado e pode ser desbloqueado" + +#: modules/devices/firmware.c:74 +msgid "Is found in current metadata" +msgstr "Encontrado no atual banco de metadados" + +#: modules/devices/firmware.c:75 +msgid "Requires a bootloader mode to be manually enabled by the user" +msgstr "" +"Precisa de um modo bootloader para ser manualmente ativado pelo usuário" + +#: modules/devices/firmware.c:76 +msgid "Has been registered with other plugins" +msgstr "Foi registrado com outros plugins" + +#: modules/devices/firmware.c:77 +msgid "Requires a reboot to apply firmware or to reload hardware" +msgstr "" + +#: modules/devices/firmware.c:78 +msgid "Requires system shutdown to apply firmware" +msgstr "" + +#: modules/devices/firmware.c:79 +msgid "Has been reported to a metadata server" +msgstr "" + +#: modules/devices/firmware.c:80 +msgid "User has been notified" +msgstr "O usuário foi notificado" + +#: modules/devices/firmware.c:81 +msgid "Always use the runtime version rather than the bootloader" +msgstr "" + +#: modules/devices/firmware.c:82 +msgid "Install composite firmware on the parent before the child" +msgstr "" + +#: modules/devices/firmware.c:83 +msgid "Is currently in bootloader mode" +msgstr "Está usando o modo bootloader" + +#: modules/devices/firmware.c:84 +msgid "The hardware is waiting to be replugged" +msgstr "O hardware está aguardando para ser replugado" + +#: modules/devices/firmware.c:85 +msgid "Ignore validation safety checks when flashing this device" +msgstr "" + +#: modules/devices/firmware.c:86 +msgid "Requires the update to be retried with a new plugin" +msgstr "Requer atualização para ser testado com um novo plugin" + +#: modules/devices/firmware.c:87 +msgid "Do not add instance IDs from the device baseclass" +msgstr "" + +#: modules/devices/firmware.c:88 +msgid "Device update needs to be separately activated" +msgstr "A atualização de dispositivos precisa ser ativada separadamente" + +#: modules/devices/firmware.c:89 +msgid "" +"Ensure the version is a valid semantic version, e.g. numbers separated with " +"dots" +msgstr "" + +#: modules/devices/firmware.c:90 +msgid "Extra metadata can be exposed about this device" +msgstr "" + +#: modules/devices/firmware.c:104 +msgid "DeviceId" +msgstr "" + +#: modules/devices/firmware.c:104 +msgid "Guid" +msgstr "" + +#: modules/devices/firmware.c:104 +msgid "Plugin" +msgstr "Plugin" + +#: modules/devices/firmware.c:104 modules/network.c:380 +msgid "Flags" +msgstr "Bandeiras" + +#: modules/devices/firmware.c:105 +msgid "VendorId" +msgstr "ID do vendedor" + +#: modules/devices/firmware.c:105 +msgid "VersionBootloader" +msgstr "Versão do bootloader" + +#: modules/devices/firmware.c:106 +msgid "Icon" +msgstr "Ícone" + +#: modules/devices/firmware.c:106 +msgid "InstallDuration" +msgstr "Duração da instalação" + +#: modules/devices/firmware.c:106 +msgid "Created" +msgstr "Criado" + +#: modules/devices/firmware.c:245 +msgid "Firmware List" +msgstr "Lista de firmware" + +#: modules/devices/firmware.c:258 +msgid "Requires the fwupdmgr utility." +msgstr "Requer o utilitário fwupdmgr." + +#: modules/devices/gpu.c:84 modules/devices/pci.c:97 +msgid "SVendor" +msgstr "SVendor" + +#: modules/devices/gpu.c:85 modules/devices/pci.c:98 +msgid "SDevice" +msgstr "SDevice" + +#: modules/devices/gpu.c:93 modules/devices/pci.c:108 +msgid "PCI Express" +msgstr "PCI Express" + +#: modules/devices/gpu.c:94 modules/devices/pci.c:110 +msgid "Maximum Link Width" +msgstr "Largura máxima do link" + +#: modules/devices/gpu.c:95 modules/devices/pci.c:112 +msgid "Maximum Link Speed" +msgstr "Velocidade Máxima de Link" + +#: modules/devices/gpu.c:95 modules/devices/pci.c:111 modules/devices/pci.c:112 +msgid "GT/s" +msgstr "GT/s" + +#: modules/devices/gpu.c:105 +msgid "NVIDIA" +msgstr "NVIDIA" + +#: modules/devices/gpu.c:107 +msgid "BIOS Version" +msgstr "Versão de Bios" + +#: modules/devices/gpu.c:108 +msgid "UUID" +msgstr "UUID" + +#: modules/devices/gpu.c:142 modules/devices/gpu.c:222 +#: modules/devices/inputdevices.c:110 modules/devices/pci.c:129 +#: modules/devices/usb.c:166 +msgid "Device Information" +msgstr "Informação de dispositivo" + +#: modules/devices/gpu.c:143 modules/devices/gpu.c:223 +msgid "Location" +msgstr "Localização" + +#: modules/devices/gpu.c:144 +msgid "DRM Device" +msgstr "Dispositivo DRM" + +#: modules/devices/gpu.c:145 modules/devices/pci.c:130 +#: modules/devices/usb.c:133 modules/devices/usb.c:174 +msgid "Class" +msgstr "Classe" + +#: modules/devices/gpu.c:154 modules/devices/pci.c:135 +msgid "In Use" +msgstr "Em uso" + +#: modules/devices/gpu.c:185 +msgid "Unknown integrated GPU" +msgstr "GPU integrado desconhecido" + +#: modules/devices/gpu.c:191 +msgid "clock-frequency property" +msgstr "propriedade da frequência-clock" + +#: modules/devices/gpu.c:192 +msgid "Operating Points (OPPv1)" +msgstr "" + +#: modules/devices/gpu.c:193 +msgid "Operating Points (OPPv2)" +msgstr "" + +#: modules/devices/gpu.c:229 +msgid "Device Tree Node" +msgstr "" + +#: modules/devices/gpu.c:232 modules/devices/monitors.c:471 +#: modules/network/net.c:454 +msgid "Status" +msgstr "Estado" + +#: modules/devices/gpu.c:249 +msgid "GPUs" +msgstr "GPUs" + +#: modules/devices/gpu.c:273 +msgid "No GPU devices found" +msgstr "Nenhum dispositivo GPU encontrado" + +#: modules/devices/ia64/processor.c:108 +msgid "IA64 Processor" +msgstr "Processador IA64" + +#: modules/devices/ia64/processor.c:163 +msgid "Architecture Revision" +msgstr "Revisão de Arquitetura" + +#: modules/devices/ia64/processor.c:170 +msgid "CPU regs" +msgstr "Regs da CPU" + +#: modules/devices/ia64/processor.c:171 +msgid "Features" +msgstr "Características" + +#: modules/devices/inputdevices.c:113 modules/devices/pci.c:139 +#: modules/devices/usb.c:180 +msgid "Bus" +msgstr "Bus" + +#: modules/devices/inputdevices.c:119 +msgid "Connected to" +msgstr "Conectado a" + +#: modules/devices/inputdevices.c:123 +msgid "InfraRed port" +msgstr "Porta de infravermelhos" + +#: modules/devices/m68k/processor.c:85 modules/devices/riscv/processor.c:185 +msgid "MMU" +msgstr "MMU" + +#: modules/devices/m68k/processor.c:86 modules/devices/sparc/processor.c:76 +msgid "FPU" +msgstr "FPU" + +#: modules/devices/m68k/processor.c:90 +msgid "Calibration" +msgstr "Calibração" + +#: modules/devices/mips/processor.c:76 +msgid "System Type" +msgstr "Tipo de sistema" + +#: modules/devices/monitors.c:29 modules/devices/monitors.c:253 +#: modules/devices/monitors.c:346 modules/devices/spd-decode.c:595 +msgid "(Unspecified)" +msgstr "(Não especificado)" + +#: modules/devices/monitors.c:228 +#, c-format +msgid "Week %d of %d" +msgstr "" + +#: modules/devices/monitors.c:238 +msgid "Ok" +msgstr "" + +#: modules/devices/monitors.c:238 +msgid "Fail" +msgstr "" + +#: modules/devices/monitors.c:266 modules/devices/monitors.c:274 +#: modules/devices/monitors.c:282 modules/devices/monitors.c:293 +#: modules/devices/monitors.c:301 modules/devices/monitors.c:308 +#: modules/devices/monitors.c:316 modules/devices/monitors.c:324 +#: modules/devices/monitors.c:332 modules/devices/monitors.c:338 +msgid "(Empty List)" +msgstr "" + +#: modules/devices/monitors.c:390 +msgid "Signal Type" +msgstr "" + +#: modules/devices/monitors.c:390 +msgid "Digital" +msgstr "" + +#: modules/devices/monitors.c:390 +msgid "Analog" +msgstr "" + +#: modules/devices/monitors.c:391 modules/devices/usb.c:132 +#: modules/network.c:310 modules/network.c:363 modules/network.c:380 +msgid "Interface" +msgstr "Interface" + +#: modules/devices/monitors.c:392 +msgid "Bits per Color Channel" +msgstr "" + +#: modules/devices/monitors.c:393 +msgid "Speaker Allocation" +msgstr "" + +#: modules/devices/monitors.c:394 +msgid "Output (Max)" +msgstr "" + +#: modules/devices/monitors.c:397 +msgid "EDID Device" +msgstr "" + +#: modules/devices/monitors.c:401 +msgid "Serial" +msgstr "" + +#: modules/devices/monitors.c:402 +msgid "Manufacture Date" +msgstr "" + +#: modules/devices/monitors.c:403 +msgid "EDID Meta" +msgstr "" + +#: modules/devices/monitors.c:404 +msgid "Data Size" +msgstr "" + +#: modules/devices/monitors.c:404 +msgid "bytes" +msgstr "" + +#: modules/devices/monitors.c:406 +msgid "Extension Blocks" +msgstr "" + +#: modules/devices/monitors.c:407 +msgid "Extended to" +msgstr "" + +#: modules/devices/monitors.c:408 +msgid "Checksum" +msgstr "" + +#: modules/devices/monitors.c:409 +msgid "EDID Descriptors" +msgstr "" + +#: modules/devices/monitors.c:410 +msgid "Detailed Timing Descriptors (DTD)" +msgstr "" + +#: modules/devices/monitors.c:411 +msgid "Established Timings Bitmap (ETB)" +msgstr "" + +#: modules/devices/monitors.c:412 +msgid "Standard Timings (STD)" +msgstr "" + +#: modules/devices/monitors.c:413 +msgid "E-EDID Extension Blocks" +msgstr "" + +#: modules/devices/monitors.c:414 +msgid "EIA/CEA-861 Data Blocks" +msgstr "" + +#: modules/devices/monitors.c:415 +msgid "EIA/CEA-861 Short Audio Descriptors" +msgstr "" + +#: modules/devices/monitors.c:416 +msgid "EIA/CEA-861 Short Video Descriptors" +msgstr "" + +#: modules/devices/monitors.c:417 +msgid "DisplayID Timings" +msgstr "" + +#: modules/devices/monitors.c:418 +msgid "DisplayID Strings" +msgstr "" + +#: modules/devices/monitors.c:419 +msgid "Hex Dump" +msgstr "" + +#: modules/devices/monitors.c:419 +msgid "Data" +msgstr "" + +#: modules/devices/monitors.c:469 modules/devices/monitors.c:501 +#: modules/devices/pci.c:137 modules/devices/usb.c:179 +msgid "Connection" +msgstr "Conexão" + +#: modules/devices/monitors.c:470 +msgid "DRM" +msgstr "" + +#: modules/devices/parisc/processor.c:107 +msgid "PA-RISC Processor" +msgstr "Processador PA-RISC" + +#: modules/devices/parisc/processor.c:161 +msgid "HVersion" +msgstr "HVersion" + +#: modules/devices/parisc/processor.c:162 +msgid "SVersion" +msgstr "SVersion" + +#: modules/devices/pci.c:109 +msgid "Link Width" +msgstr "Largura do Link" + +#: modules/devices/pci.c:111 +msgid "Link Speed" +msgstr "Velocidade de Link" + +#: modules/devices/pci.c:138 +msgid "Domain" +msgstr "Domínio" + +#: modules/devices/pci.c:141 +msgid "Function" +msgstr "Função" + +#: modules/devices/pci.c:185 +msgid "No PCI devices found" +msgstr "Nenhum dispositivo PCI encontrado" + +#: modules/devices/ppc/processor.c:117 +msgid "POWER Processor" +msgstr "Processador POWER" + +#: modules/devices/printers.c:81 +msgid "⚬ Can do black and white printing=\n" +msgstr "⚬ Pode fazer impressão a preto e branco=\n" + +#: modules/devices/printers.c:83 +msgid "⚬ Can do color printing=\n" +msgstr "⚬ Pode fazer impressão colorido=\n" + +#: modules/devices/printers.c:85 +msgid "⚬ Can do duplexing=\n" +msgstr "⚬ Pode fazer duplex=\n" + +#: modules/devices/printers.c:87 +msgid "⚬ Can do staple output=\n" +msgstr "⚬Pode fazer a saída de grampos=\n" + +#: modules/devices/printers.c:89 +msgid "⚬ Can do copies=\n" +msgstr "⚬ pode fazer copias=\n" + +#: modules/devices/printers.c:91 +msgid "⚬ Can collate copies=\n" +msgstr "⚬ Pode agrupar cópias=\n" + +#: modules/devices/printers.c:93 +msgid "⚬ Printer is rejecting jobs=\n" +msgstr "⚬ A impressora está rejeitando trabalhos=\n" + +#: modules/devices/printers.c:95 +msgid "⚬ Printer was automatically discovered and added=\n" +msgstr "⚬A impressora foi descoberta e adicionada automaticamente=\n" + +#: modules/devices/printers.c:110 +msgid "Idle" +msgstr "Ocioso Idle" + +#: modules/devices/printers.c:112 +msgid "Printing a Job" +msgstr "Imprimindo um trabalho" + +#: modules/devices/printers.c:114 +msgid "Stopped" +msgstr "Parado" + +#: modules/devices/printers.c:190 +msgid "" +"[Printers]\n" +"No suitable CUPS library found=" +msgstr "" +"[Impressoras]\n" +"Nenhuma biblioteca apropriada do CUPS encontrada=" + +#: modules/devices/printers.c:200 +msgid "[Printers (CUPS)]\n" +msgstr "[Impressoras (CUPS)]\n" + +#: modules/devices/printers.c:263 +msgid "" +"[Printers]\n" +"No printers found=\n" +msgstr "" +"[Impressoras]\n" +"Nenhuma impressora encontrada=\n" + +#: modules/devices/riscv/processor.c:107 +msgid "RISC-V Processor" +msgstr "Processador RISC-V" + +#: modules/devices/riscv/processor.c:184 +msgid "uarch" +msgstr "uarch" + +#. /ext:RV32 +#: modules/devices/riscv/riscv_data.c:37 +msgctxt "rv-ext" +msgid "RISC-V 32-bit" +msgstr "RISC-V 32-bit" + +#. /ext:RV64 +#: modules/devices/riscv/riscv_data.c:38 +msgctxt "rv-ext" +msgid "RISC-V 64-bit" +msgstr "RISC-V 64-bit" + +#. /ext:RV128 +#: modules/devices/riscv/riscv_data.c:39 +msgctxt "rv-ext" +msgid "RISC-V 128-bit" +msgstr "RISC-V 128-bit" + +#. /ext:E +#: modules/devices/riscv/riscv_data.c:40 +msgctxt "rv-ext" +msgid "Base embedded integer instructions (15 registers)" +msgstr "Instruções de inteiros embutidos na base (15 registradores)" + +#. /ext:I +#: modules/devices/riscv/riscv_data.c:41 +msgctxt "rv-ext" +msgid "Base integer instructions (31 registers)" +msgstr "Instruções de base inteira (31 registros)" + +#. /ext:M +#: modules/devices/riscv/riscv_data.c:42 +msgctxt "rv-ext" +msgid "Hardware integer multiply and divide" +msgstr "O inteiro de hardware multiplica e divide" + +#. /ext:A +#: modules/devices/riscv/riscv_data.c:43 +msgctxt "rv-ext" +msgid "Atomic memory operations" +msgstr "Operações de memória atômica" + +#. /ext:C +#: modules/devices/riscv/riscv_data.c:44 +msgctxt "rv-ext" +msgid "Compressed 16-bit instructions" +msgstr "Instruções de 16 bits compactadas" + +#. /ext:F +#: modules/devices/riscv/riscv_data.c:45 +msgctxt "rv-ext" +msgid "Floating-point instructions, single-precision" +msgstr "Instruções de ponto flutuante, precisão única" + +#. /ext:D +#: modules/devices/riscv/riscv_data.c:46 +msgctxt "rv-ext" +msgid "Floating-point instructions, double-precision" +msgstr "Instruções de ponto flutuante, precisão dupla" + +#. /ext:Q +#: modules/devices/riscv/riscv_data.c:47 +msgctxt "rv-ext" +msgid "Floating-point instructions, quad-precision" +msgstr "Instruções de ponto flutuante, precisão quádrupla" + +#. /ext:B +#: modules/devices/riscv/riscv_data.c:48 +msgctxt "rv-ext" +msgid "Bit manipulation instructions" +msgstr "Instruções de manipulação de bits" + +#. /ext:V +#: modules/devices/riscv/riscv_data.c:49 +msgctxt "rv-ext" +msgid "Vector operations" +msgstr "Operações vetoriais" + +#. /ext:T +#: modules/devices/riscv/riscv_data.c:50 +msgctxt "rv-ext" +msgid "Transactional memory" +msgstr "Memória transacional" + +#. /ext:P +#: modules/devices/riscv/riscv_data.c:51 +msgctxt "rv-ext" +msgid "Packed SIMD instructions" +msgstr "Instruções embaladas SIMD" + +#. /ext:L +#: modules/devices/riscv/riscv_data.c:52 +msgctxt "rv-ext" +msgid "Decimal floating-point instructions" +msgstr "Instruções decimais de ponto flutuante" + +#. /ext:J +#: modules/devices/riscv/riscv_data.c:53 +msgctxt "rv-ext" +msgid "Dynamically translated languages" +msgstr "Idiomas dinamicamente traduzidos" + +#. /ext:N +#: modules/devices/riscv/riscv_data.c:54 +msgctxt "rv-ext" +msgid "User-level interrupts" +msgstr "Interrupções no nível do usuário" + +#: modules/devices/s390/processor.c:92 +msgid "S390 Processor" +msgstr "Processador S390" + +#: modules/devices/s390/processor.c:133 +msgid "ID String" +msgstr "String de ID" + +#: modules/devices/sh/processor.c:55 +msgid "SuperH Processor" +msgstr "Processador SuperH" + +#: modules/devices/sh/processor.c:88 +msgid "Bus Frequency" +msgstr "Frequência de Barramento" + +#: modules/devices/sh/processor.c:89 +msgid "Module Frequency" +msgstr "Frequência do Módulo" + +#: modules/devices/spd-decode.c:306 +msgid "Row address bits" +msgstr "" + +#: modules/devices/spd-decode.c:307 +msgid "Column address bits" +msgstr "" + +#: modules/devices/spd-decode.c:308 +msgid "Number of rows" +msgstr "Número de linhas" + +#: modules/devices/spd-decode.c:309 +msgid "Data width" +msgstr "" + +#: modules/devices/spd-decode.c:310 +msgid "Interface signal levels" +msgstr "" + +#: modules/devices/spd-decode.c:311 +msgid "Configuration type" +msgstr "Tipo de configuração" + +#: modules/devices/spd-decode.c:312 +msgid "Refresh" +msgstr "Atualizar" + +#: modules/devices/spd-decode.c:313 modules/devices/spd-decode.c:397 +#: modules/devices/spd-decode.c:492 modules/devices/spd-decode.c:617 +msgid "Timings" +msgstr "" + +#: modules/devices/spd-decode.c:593 +msgid "Ranks" +msgstr "Ranques" + +#: modules/devices/spd-decode.c:594 +msgid "IO Pins per Chip" +msgstr "" + +#: modules/devices/spd-decode.c:595 +msgid "Die count" +msgstr "" + +#: modules/devices/spd-decode.c:596 +msgid "Thermal Sensor" +msgstr "Sensor termal" + +#: modules/devices/spd-decode.c:596 +msgid "Present" +msgstr "Presente" + +#: modules/devices/spd-decode.c:596 +msgid "Not present" +msgstr "Não presente" + +#: modules/devices/spd-decode.c:597 +msgid "Supported Voltages" +msgstr "Voltagens suportadas" + +#: modules/devices/spd-decode.c:601 +msgid "Supported CAS Latencies" +msgstr "" + +#: modules/devices/spd-decode.c:638 +msgid "Invalid" +msgstr "Inválido" + +#: modules/devices/spd-decode.c:870 +msgid "XMP Profile" +msgstr "Perfil XMP" + +#: modules/devices/spd-decode.c:871 modules/devices/usb.c:173 +msgid "Speed" +msgstr "Velocidade" + +#: modules/devices/spd-decode.c:872 modules/devices/spd-decode.c:914 +#: modules/devices/x86/processor.c:715 +msgid "Voltage" +msgstr "Voltagem" + +#: modules/devices/spd-decode.c:873 +msgid "XMP Timings" +msgstr "" + +#: modules/devices/spd-decode.c:915 +msgid "XMP" +msgstr "XMP" + +#: modules/devices/spd-decode.c:916 +msgid "JEDEC Timings" +msgstr "" + +#: modules/devices/storage.c:84 +msgid "Read Error Rate" +msgstr "" + +#: modules/devices/storage.c:85 +msgid "Throughput Performance" +msgstr "" + +#: modules/devices/storage.c:86 +msgid "Spin-Up Time" +msgstr "" + +#: modules/devices/storage.c:87 +msgid "Start/Stop Count" +msgstr "" + +#: modules/devices/storage.c:88 +msgid "Reallocated Sector Count" +msgstr "" + +#: modules/devices/storage.c:89 +msgid "Read Channel Margin" +msgstr "" + +#: modules/devices/storage.c:90 +msgid "Seek Error Rate" +msgstr "" + +#: modules/devices/storage.c:91 +msgid "Seek Timer Performance" +msgstr "" + +#: modules/devices/storage.c:92 modules/devices/storage.c:131 +msgid "Power-On Hours" +msgstr "" + +#: modules/devices/storage.c:93 +msgid "Spin Retry Count" +msgstr "" + +#: modules/devices/storage.c:94 +msgid "Calibration Retry Count" +msgstr "" + +#: modules/devices/storage.c:95 +msgid "Power Cycle Count" +msgstr "" + +#: modules/devices/storage.c:96 modules/devices/storage.c:113 +msgid "Soft Read Error Rate" +msgstr "" + +#: modules/devices/storage.c:97 +msgid "Runtime Bad Block" +msgstr "" + +#: modules/devices/storage.c:98 +msgid "End-to-End error" +msgstr "" + +#: modules/devices/storage.c:99 +msgid "Reported Uncorrectable Errors" +msgstr "" + +#: modules/devices/storage.c:100 +msgid "Command Timeout" +msgstr "" + +#: modules/devices/storage.c:101 +msgid "High Fly Writes" +msgstr "" + +#: modules/devices/storage.c:102 +msgid "Airflow Temperature" +msgstr "" + +#: modules/devices/storage.c:103 +msgid "G-sense Error Rate" +msgstr "" + +#: modules/devices/storage.c:104 +msgid "Power-off Retract Count" +msgstr "" + +#: modules/devices/storage.c:105 +msgid "Load Cycle Count" +msgstr "" + +#: modules/devices/storage.c:106 modules/devices/storage.c:129 +msgid "Temperature" +msgstr "" + +#: modules/devices/storage.c:107 +msgid "Hardware ECC Recovered" +msgstr "" + +#: modules/devices/storage.c:108 +msgid "Reallocation Event Count" +msgstr "" + +#: modules/devices/storage.c:109 +msgid "Current Pending Sector Count" +msgstr "" + +#: modules/devices/storage.c:110 +msgid "Uncorrectable Sector Count" +msgstr "" + +#: modules/devices/storage.c:111 +msgid "UltraDMA CRC Error Count" +msgstr "" + +#: modules/devices/storage.c:112 +msgid "Multi-Zone Error Rate" +msgstr "" + +#: modules/devices/storage.c:114 +msgid "Run Out Cancel" +msgstr "" + +#: modules/devices/storage.c:115 +msgid "Flying Height" +msgstr "" + +#: modules/devices/storage.c:116 +msgid "Spin High Current" +msgstr "" + +#: modules/devices/storage.c:117 +msgid "Spin Buzz" +msgstr "" + +#: modules/devices/storage.c:118 +msgid "Offline Seek Performance" +msgstr "" + +#: modules/devices/storage.c:119 +msgid "Disk Shift" +msgstr "" + +#: modules/devices/storage.c:120 +msgid "G-Sense Error Rate" +msgstr "" + +#: modules/devices/storage.c:121 +msgid "Loaded Hours" +msgstr "" + +#: modules/devices/storage.c:122 +msgid "Load/Unload Retry Count" +msgstr "" + +#: modules/devices/storage.c:123 +msgid "Load Friction" +msgstr "" + +#: modules/devices/storage.c:124 +msgid "Load/Unload Cycle Count" +msgstr "" + +#: modules/devices/storage.c:125 +msgid "Load-in time" +msgstr "" + +#: modules/devices/storage.c:126 +msgid "Torque Amplification Count" +msgstr "" + +#: modules/devices/storage.c:127 +msgid "Power-Off Retract Count" +msgstr "" + +#: modules/devices/storage.c:128 +msgid "GMR Head Amplitude" +msgstr "" + +#: modules/devices/storage.c:130 +msgid "Endurance Remaining" +msgstr "" + +#: modules/devices/storage.c:132 +msgid "Good Block Rate" +msgstr "" + +#: modules/devices/storage.c:133 +msgid "Head Flying Hours" +msgstr "" + +#: modules/devices/storage.c:134 +msgid "Read Error Retry Rate" +msgstr "" + +#: modules/devices/storage.c:135 +msgid "Total LBAs Written" +msgstr "" + +#: modules/devices/storage.c:136 +msgid "Total LBAs Read" +msgstr "" + +#: modules/devices/storage.c:141 +msgid "" +"\n" +"[UDisks2]\n" +msgstr "" +"\n" +"[UDisks2]\n" + +#: modules/devices/storage.c:199 +msgid "Removable" +msgstr "Removível" + +#: modules/devices/storage.c:199 +msgid "Fixed" +msgstr "Fixo" + +#: modules/devices/storage.c:202 +msgid "Ejectable" +msgstr "Ejetável" + +#: modules/devices/storage.c:205 +msgid "Self-monitoring (S.M.A.R.T.)" +msgstr "Monitoramento automático (S.M.A.R.T.)" + +#: modules/devices/storage.c:208 modules/devices/x86/processor.c:663 +msgid "Power Management" +msgstr "Gerenciamento de energia" + +#: modules/devices/storage.c:211 +msgid "Advanced Power Management" +msgstr "Gerenciamento avançando de energia" + +#: modules/devices/storage.c:214 +msgid "Automatic Acoustic Management" +msgstr "Gerenciamento acústico automático" + +#: modules/devices/storage.c:217 +#, c-format +msgid "" +"[Drive Information]\n" +"Model=%s\n" +msgstr "" +"[Informação do dispositivo]\n" +"Modelo=%s\n" + +#: modules/devices/storage.c:221 modules/devices/storage.c:449 +#: modules/devices/storage.c:648 +#, c-format +msgid "Vendor=%s\n" +msgstr "Fornecedor=%s\n" + +#: modules/devices/storage.c:226 +#, c-format +msgid "" +"Revision=%s\n" +"Block Device=%s\n" +"Serial=%s\n" +"Size=%s\n" +"Features=%s\n" +msgstr "" + +#: modules/devices/storage.c:240 +#, c-format +msgid "Rotation Rate=%d RPM\n" +msgstr "" + +#: modules/devices/storage.c:243 +#, c-format +msgid "" +"Media=%s\n" +"Media compatibility=%s\n" +msgstr "" +"Mídia=%s\n" +"Compatibilidade da mídia=%s\n" + +#: modules/devices/storage.c:250 +#, c-format +msgid "Connection bus=%s\n" +msgstr "" + +#: modules/devices/storage.c:253 +#, c-format +msgid "" +"[Self-monitoring (S.M.A.R.T.)]\n" +"Status=%s\n" +"Bad Sectors=%ld\n" +"Power on time=%d days %d hours\n" +"Temperature=%d°C\n" +msgstr "" + +#: modules/devices/storage.c:259 +msgid "Failing" +msgstr "" + +#: modules/devices/storage.c:259 +msgid "OK" +msgstr "OK" + +#: modules/devices/storage.c:265 +msgid "" +"[S.M.A.R.T. Attributes]\n" +"Attribute=Normalized Value / Worst / Threshold\n" +msgstr "" + +#: modules/devices/storage.c:297 +#, c-format +msgid "(%d) %s=%s\n" +msgstr "" + +#: modules/devices/storage.c:306 +#, c-format +msgid "" +"[Partition table]\n" +"Type=%s\n" +msgstr "" +"[Tabela de partição]\n" +"Tipo=%s\n" + +#: modules/devices/storage.c:325 +#, c-format +msgid "Partition %s=%s\n" +msgstr "Partição %s=%s\n" + +#: modules/devices/storage.c:375 +msgid "" +"\n" +"[SCSI Disks]\n" +msgstr "" +"\n" +"[SCSI Discos]\n" + +#: modules/devices/storage.c:446 modules/devices/storage.c:645 +#, c-format +msgid "" +"[Device Information]\n" +"Model=%s\n" +msgstr "" +"[Informação de dispositivo]\n" +"Modelo=%s\n" + +#: modules/devices/storage.c:453 +#, c-format +msgid "" +"Type=%s\n" +"Revision=%s\n" +"[SCSI Controller]\n" +"Controller=scsi%d\n" +"Channel=%d\n" +"ID=%d\n" +"LUN=%d\n" +msgstr "" +"Tipo=%s\n" +"Revisão=%s\n" +"[SCSI Controlador]\n" +"Controlador=scsi%d\n" +"Chanal=%d\n" +"ID=%d\n" +"LUN=%d\n" + +#: modules/devices/storage.c:499 +msgid "" +"\n" +"[IDE Disks]\n" +msgstr "" +"\n" +"[IDE Discos]\n" + +#: modules/devices/storage.c:582 +#, c-format +msgid "Driver=%s\n" +msgstr "Driver=%s\n" + +#: modules/devices/storage.c:650 +#, c-format +msgid "" +"Device Name=hd%c\n" +"Media=%s\n" +"Cache=%dkb\n" +msgstr "" +"Nome do dispositivo=hd%c\n" +"mídia=%s\n" +"Cache=%dkb\n" + +#: modules/devices/storage.c:660 +#, c-format +msgid "" +"[Geometry]\n" +"Physical=%s\n" +"Logical=%s\n" +msgstr "" +"[Geometria]\n" +"Físico=%s\n" +"Lógico=%s\n" + +#: modules/devices/storage.c:670 +#, c-format +msgid "" +"[Capabilities]\n" +"%s" +msgstr "" +"[Capacidades]\n" +"%s" + +#: modules/devices/storage.c:677 +#, c-format +msgid "" +"[Speeds]\n" +"%s" +msgstr "" +"[Velocidades]\n" +"%s" + +#: modules/devices/usb.c:134 modules/devices/usb.c:175 +msgid "Sub-class" +msgstr "Subclasse" + +#: modules/devices/usb.c:135 modules/devices/usb.c:176 modules/network.c:347 +msgid "Protocol" +msgstr "Protocolo" + +#: modules/devices/usb.c:143 modules/network/net.c:451 +msgid "Mb/s" +msgstr "Mb/s" + +#: modules/devices/usb.c:171 +msgid "Max Current" +msgstr "Corrente Máxima" + +#: modules/devices/usb.c:171 +msgid "mA" +msgstr "mA" + +#: modules/devices/usb.c:172 +msgid "USB Version" +msgstr "Versão do USB" + +#: modules/devices/usb.c:177 +msgid "Device Version" +msgstr "Versão do dispositivo" + +#: modules/devices/usb.c:221 +msgid "No USB devices found." +msgstr "Nenhum dispositivo USB encontrado." + +#: modules/devices/x86/processor.c:149 +msgid "Cache information not available=\n" +msgstr "Informações de cache não disponíveis=\n" + +#: modules/devices/x86/processor.c:155 +#, c-format +msgid "Level %d (%s)=%d-way set-associative, %d sets, %dKB size\n" +msgstr "" +"Level %d (%s)=%d-maneira conjunto-associativa, %d Conjuntos, %dKB Tamanho\n" + +#. /cache type, as appears in: Level 1 (Data) +#: modules/devices/x86/processor.c:170 +msgctxt "cache-type" +msgid "Data" +msgstr "Data" + +#. /cache type, as appears in: Level 1 (Instruction) +#: modules/devices/x86/processor.c:171 +msgctxt "cache-type" +msgid "Instruction" +msgstr "Instrução" + +#. /cache type, as appears in: Level 2 (Unified) +#: modules/devices/x86/processor.c:172 +msgctxt "cache-type" +msgid "Unified" +msgstr "Unificado" + +#: modules/devices/x86/processor.c:367 +msgid "Caches" +msgstr "Caches" + +#: modules/devices/x86/processor.c:418 modules/devices/x86/processor.c:435 +#, c-format +msgid "Level %d (%s)#%d=%dx %dKB (%dKB), %d-way set-associative, %d sets\n" +msgstr "" +"Level %d (%s)#%d=%dx %dKB (%dKB), %d-maneira conjunta-associativa, %d " +"Conjuntos\n" + +#: modules/devices/x86/processor.c:647 +msgid "Model Name" +msgstr "Nome do modelo" + +#: modules/devices/x86/processor.c:648 +msgid "Family, model, stepping" +msgstr "Família, modelo, pisar Stpeping" + +#: modules/devices/x86/processor.c:654 +msgid "Microcode Version" +msgstr "Versão do microcódigo" + +#: modules/devices/x86/processor.c:655 +msgid "Configuration" +msgstr "Configuração " + +#: modules/devices/x86/processor.c:656 +msgid "Cache Size" +msgstr "Tamanho do Cache" + +#: modules/devices/x86/processor.c:656 +msgid "kb" +msgstr "kb" + +#: modules/devices/x86/processor.c:664 +msgid "Bug Workarounds" +msgstr "Soluções alternativas para insetos" + +#: modules/devices/x86/processor.c:691 +msgid "Socket Information" +msgstr "" + +#: modules/devices/x86/processor.c:712 +msgid "CPU Socket" +msgstr "" + +#: modules/devices/x86/processor.c:716 +msgid "External Clock" +msgstr "" + +#: modules/devices/x86/processor.c:717 +msgid "Max Frequency" +msgstr "Frequência máxima " + +#: modules/devices/x86/processor.c:748 modules/devices/x86/processor.c:769 +msgid "Package Information" +msgstr "Informação do Pacote" + +#: modules/devices/x86/processor.c:796 +msgid "Socket:Core" +msgstr "Soquete: Núcleo" + +#: modules/devices/x86/processor.c:796 +msgid "Thread" +msgstr "Thread Fio" + +#. /flag:fpu +#: modules/devices/x86/x86_data.c:43 +msgctxt "x86-flag" +msgid "Onboard FPU (floating point support)" +msgstr "FPU a bordo (suporte a ponto flutuante)" + +#. /flag:vme +#: modules/devices/x86/x86_data.c:44 +msgctxt "x86-flag" +msgid "Virtual 8086 mode enhancements" +msgstr "Aprimoramentos do modo virtual 8086" + +#. /flag:de +#: modules/devices/x86/x86_data.c:45 +msgctxt "x86-flag" +msgid "Debugging Extensions (CR4.DE)" +msgstr "Extensões de Depuração (CR4.DE)" + +#. /flag:pse +#: modules/devices/x86/x86_data.c:46 +msgctxt "x86-flag" +msgid "Page Size Extensions (4MB memory pages)" +msgstr "Extensões de tamanho de página (4MB de páginas de memória)" + +#. /flag:tsc +#: modules/devices/x86/x86_data.c:47 +msgctxt "x86-flag" +msgid "Time Stamp Counter (RDTSC)" +msgstr "Contador de Carimbo de Tempo (RDTSC)" + +#. /flag:msr +#: modules/devices/x86/x86_data.c:48 +msgctxt "x86-flag" +msgid "Model-Specific Registers (RDMSR, WRMSR)" +msgstr "Registros Específicos do Modelo (RDMSR, WRMSR)" + +#. /flag:pae +#: modules/devices/x86/x86_data.c:49 +msgctxt "x86-flag" +msgid "Physical Address Extensions (support for more than 4GB of RAM)" +msgstr "Extensões de endereço físico (suporte para mais de 4 GB de RAM)" + +#. /flag:mce +#: modules/devices/x86/x86_data.c:50 +msgctxt "x86-flag" +msgid "Machine Check Exception" +msgstr "Exceção de Verificação de Máquina" + +#. /flag:cx8 +#: modules/devices/x86/x86_data.c:51 +msgctxt "x86-flag" +msgid "CMPXCHG8 instruction (64-bit compare-and-swap)" +msgstr "Instrução CMPXCHG8 (comparação e troca de 64 bits) " + +#. /flag:apic +#: modules/devices/x86/x86_data.c:52 +msgctxt "x86-flag" +msgid "Onboard APIC" +msgstr "APIC a bordo" + +#. /flag:sep +#: modules/devices/x86/x86_data.c:53 +msgctxt "x86-flag" +msgid "SYSENTER/SYSEXIT" +msgstr "SYSENTER / SYSEXIT" + +#. /flag:mtrr +#: modules/devices/x86/x86_data.c:54 +msgctxt "x86-flag" +msgid "Memory Type Range Registers" +msgstr "Registros de intervalo de tipo de memória" + +#. /flag:pge +#: modules/devices/x86/x86_data.c:55 +msgctxt "x86-flag" +msgid "Page Global Enable (global bit in PDEs and PTEs)" +msgstr "Page Global Enable (global bit in PDEs and PTEs)" + +#. /flag:mca +#: modules/devices/x86/x86_data.c:56 +msgctxt "x86-flag" +msgid "Machine Check Architecture" +msgstr "Arquitetura de verificação de máquinas" + +#. /flag:cmov +#: modules/devices/x86/x86_data.c:57 +msgctxt "x86-flag" +msgid "CMOV instructions (conditional move) (also FCMOV)" +msgstr "Instruções CMOV (movimento condicional) (também FCMOV)" + +#. /flag:pat +#: modules/devices/x86/x86_data.c:58 +msgctxt "x86-flag" +msgid "Page Attribute Table" +msgstr "Tabela de Atributos da Página" + +#. /flag:pse36 +#: modules/devices/x86/x86_data.c:59 +msgctxt "x86-flag" +msgid "36-bit PSEs (huge pages)" +msgstr "PSEs de 36 bits (páginas enormes)" + +#. /flag:pn +#: modules/devices/x86/x86_data.c:60 +msgctxt "x86-flag" +msgid "Processor serial number" +msgstr "Número de série do processador" + +#. /flag:clflush +#: modules/devices/x86/x86_data.c:61 +msgctxt "x86-flag" +msgid "Cache Line Flush instruction" +msgstr "Instrução de limpeza de linha de cache" + +#. /flag:dts +#: modules/devices/x86/x86_data.c:62 +msgctxt "x86-flag" +msgid "" +"Debug Store (buffer for debugging and profiling instructions), or " +"alternately: digital thermal sensor" +msgstr "" +"Armazenamento de Depuração (buffer para instruções de depuração e criação de " +"perfil) ou alternativamente: sensor térmico digital" + +#. /flag:acpi +#: modules/devices/x86/x86_data.c:63 +msgctxt "x86-flag" +msgid "ACPI via MSR (temperature monitoring and clock speed modulation)" +msgstr "" +"ACPI via MSR (monitoramento de temperatura e modulação de velocidade do " +"clock)" + +#. /flag:mmx +#: modules/devices/x86/x86_data.c:64 +msgctxt "x86-flag" +msgid "Multimedia Extensions" +msgstr "Extensões Multimídia" + +#. /flag:fxsr +#: modules/devices/x86/x86_data.c:65 +msgctxt "x86-flag" +msgid "FXSAVE/FXRSTOR, CR4.OSFXSR" +msgstr "FXSAVE/FXRSTOR, CR4.OSFXSR" + +#. /flag:sse +#: modules/devices/x86/x86_data.c:66 +msgctxt "x86-flag" +msgid "Intel SSE vector instructions" +msgstr "Instruções vetoriais Intel SSE" + +#. /flag:sse2 +#: modules/devices/x86/x86_data.c:67 +msgctxt "x86-flag" +msgid "SSE2" +msgstr "SSE2" + +#. /flag:ss +#: modules/devices/x86/x86_data.c:68 +msgctxt "x86-flag" +msgid "CPU self snoop" +msgstr "Snoop auto CPU" + +#. /flag:ht +#: modules/devices/x86/x86_data.c:69 +msgctxt "x86-flag" +msgid "Hyper-Threading" +msgstr "Hyper-Threading" + +#. /flag:tm +#: modules/devices/x86/x86_data.c:70 +msgctxt "x86-flag" +msgid "Automatic clock control (Thermal Monitor)" +msgstr "Controle de relógio automático (Monitor térmico)" + +#. /flag:ia64 +#: modules/devices/x86/x86_data.c:71 +msgctxt "x86-flag" +msgid "" +"Intel Itanium Architecture 64-bit (not to be confused with Intel's 64-bit " +"x86 architecture with flag x86-64 or \"AMD64\" bit indicated by flag lm)" +msgstr "" +"Arquitetura Intel Itanium de 64 bits (não deve ser confundida com a " +"arquitetura x86 de 64 bits da Intel com o sinalizador x86-64 ou bit " +"\"AMD64\" indicado pelo sinalizador lm)" + +#. /flag:pbe +#: modules/devices/x86/x86_data.c:72 +msgctxt "x86-flag" +msgid "Pending Break Enable (PBE# pin) wakeup support" +msgstr "Suporte à ativação de interrupção pendente (PBE # pin)" + +#. /flag:syscall +#: modules/devices/x86/x86_data.c:75 +msgctxt "x86-flag" +msgid "SYSCALL (Fast System Call) and SYSRET (Return From Fast System Call)" +msgstr "" +"SYSCALL (Chamada Rápida do Sistema) e SYSRET (Retorno da Chamada Rápida do " +"Sistema)" + +#. /flag:mp +#: modules/devices/x86/x86_data.c:76 +msgctxt "x86-flag" +msgid "Multiprocessing Capable." +msgstr "Multiprocessamento Capaz." + +#. /flag:nx +#: modules/devices/x86/x86_data.c:77 +msgctxt "x86-flag" +msgid "Execute Disable" +msgstr "Executar desabilitar" + +#. /flag:mmxext +#: modules/devices/x86/x86_data.c:78 +msgctxt "x86-flag" +msgid "AMD MMX extensions" +msgstr "Extensões AMD MMX" + +#. /flag:fxsr_opt +#: modules/devices/x86/x86_data.c:79 +msgctxt "x86-flag" +msgid "FXSAVE/FXRSTOR optimizations" +msgstr "Otimizações FXSAVE / FXRSTOR" + +#. /flag:pdpe1gb +#: modules/devices/x86/x86_data.c:80 +msgctxt "x86-flag" +msgid "One GB pages (allows hugepagesz=1G)" +msgstr "Um GB páginas (permite hugepagesz = 1G)" + +#. /flag:rdtscp +#: modules/devices/x86/x86_data.c:81 +msgctxt "x86-flag" +msgid "Read Time-Stamp Counter and Processor ID" +msgstr "Leitura do Contador de Carimbo de Tempo e ID do Processador" + +#. /flag:lm +#: modules/devices/x86/x86_data.c:82 +msgctxt "x86-flag" +msgid "Long Mode (x86-64: amd64, also known as Intel 64, i.e. 64-bit capable)" +msgstr "" +"Modo Longo (x86-64: amd64, também conhecido como Intel 64, ou seja, " +"capacidade para 64 bits)" + +#. /flag:3dnow +#: modules/devices/x86/x86_data.c:83 +msgctxt "x86-flag" +msgid "3DNow! (AMD vector instructions, competing with Intel's SSE1)" +msgstr "3DNow! (Instruções vetoriais AMD, competindo com o SSE1 da Intel)" + +#. /flag:3dnowext +#: modules/devices/x86/x86_data.c:84 +msgctxt "x86-flag" +msgid "AMD 3DNow! extensions" +msgstr "AMD 3DNow! extensões" + +#. /flag:recovery +#: modules/devices/x86/x86_data.c:86 +msgctxt "x86-flag" +msgid "CPU in recovery mode" +msgstr "CPU no modo de recuperação" + +#. /flag:longrun +#: modules/devices/x86/x86_data.c:87 +msgctxt "x86-flag" +msgid "Longrun power control" +msgstr "Controle de potência Longrun" + +#. /flag:lrti +#: modules/devices/x86/x86_data.c:88 +msgctxt "x86-flag" +msgid "LongRun table interface" +msgstr "Interface de mesa LongRun" + +#. /flag:cxmmx +#: modules/devices/x86/x86_data.c:90 +msgctxt "x86-flag" +msgid "Cyrix MMX extensions" +msgstr "Extensões Cyrix MMX" + +#. /flag:k6_mtrr +#: modules/devices/x86/x86_data.c:91 +msgctxt "x86-flag" +msgid "AMD K6 nonstandard MTRRs" +msgstr "MTRRs fora do padrão AMD K6" + +#. /flag:cyrix_arr +#: modules/devices/x86/x86_data.c:92 +msgctxt "x86-flag" +msgid "Cyrix ARRs (= MTRRs)" +msgstr "Cyrix ARRs (= MTRRs)" + +#. /flag:centaur_mcr +#: modules/devices/x86/x86_data.c:93 +msgctxt "x86-flag" +msgid "Centaur MCRs (= MTRRs)" +msgstr "MCRs Centauros (= MTRRs)" + +#. /flag:constant_tsc +#: modules/devices/x86/x86_data.c:94 +msgctxt "x86-flag" +msgid "TSC ticks at a constant rate" +msgstr "TSC carrapatos a uma taxa constante" + +#. /flag:up +#: modules/devices/x86/x86_data.c:95 +msgctxt "x86-flag" +msgid "SMP kernel running on UP" +msgstr "Kernel SMP rodando em UP" + +#. /flag:art +#: modules/devices/x86/x86_data.c:96 +msgctxt "x86-flag" +msgid "Always-Running Timer" +msgstr "Temporizador sempre em funcionamento" + +#. /flag:arch_perfmon +#: modules/devices/x86/x86_data.c:97 +msgctxt "x86-flag" +msgid "Intel Architectural PerfMon" +msgstr "Intel Architectural PerfMon" + +#. /flag:pebs +#: modules/devices/x86/x86_data.c:98 +msgctxt "x86-flag" +msgid "Precise-Event Based Sampling" +msgstr "Amostragem baseada em eventos precisos" + +#. /flag:bts +#: modules/devices/x86/x86_data.c:99 +msgctxt "x86-flag" +msgid "Branch Trace Store" +msgstr "Loja de Rastreamento de Filial" + +#. /flag:rep_good +#: modules/devices/x86/x86_data.c:100 +msgctxt "x86-flag" +msgid "rep microcode works well" +msgstr "microcódigo rep funciona bem" + +#. /flag:acc_power +#: modules/devices/x86/x86_data.c:101 +msgctxt "x86-flag" +msgid "AMD accumulated power mechanism" +msgstr "AMD acumulou mecanismo de energia" + +#. /flag:nopl +#: modules/devices/x86/x86_data.c:102 +msgctxt "x86-flag" +msgid "The NOPL (0F 1F) instructions" +msgstr "Instruções do NOPL (0F 1F)" + +#. /flag:xtopology +#: modules/devices/x86/x86_data.c:103 +msgctxt "x86-flag" +msgid "cpu topology enum extensions" +msgstr "extensões da enologia da topologia da cpu" + +#. /flag:tsc_reliable +#: modules/devices/x86/x86_data.c:104 +msgctxt "x86-flag" +msgid "TSC is known to be reliable" +msgstr "TSC é conhecido por ser confiável" + +#. /flag:nonstop_tsc +#: modules/devices/x86/x86_data.c:105 +msgctxt "x86-flag" +msgid "TSC does not stop in C states" +msgstr "TSC não pára em estados C" + +#. /flag:extd_apicid +#: modules/devices/x86/x86_data.c:106 +msgctxt "x86-flag" +msgid "has extended APICID (8 bits)" +msgstr "estendeu APICID (8 bits)" + +#. /flag:amd_dcm +#: modules/devices/x86/x86_data.c:107 +msgctxt "x86-flag" +msgid "multi-node processor" +msgstr "processador multi-nó" + +#. /flag:aperfmperf +#: modules/devices/x86/x86_data.c:108 +msgctxt "x86-flag" +msgid "APERFMPERF" +msgstr "APERFMPERF" + +#. /flag:eagerfpu +#: modules/devices/x86/x86_data.c:109 +msgctxt "x86-flag" +msgid "Non lazy FPU restore" +msgstr "Restauração de FPU não preguiçosa" + +#. /flag:nonstop_tsc_s3 +#: modules/devices/x86/x86_data.c:110 +msgctxt "x86-flag" +msgid "TSC doesn't stop in S3 state" +msgstr "TSC não pára no estado S3" + +#. /flag:mce_recovery +#: modules/devices/x86/x86_data.c:111 +msgctxt "x86-flag" +msgid "CPU has recoverable machine checks" +msgstr "A CPU tem verificações de máquina recuperáveis" + +#. /flag:pni +#: modules/devices/x86/x86_data.c:114 +msgctxt "x86-flag" +msgid "SSE-3 (\"Prescott New Instructions\")" +msgstr "SSE-3 (\"Prescott Novas instruções\")" + +#. /flag:pclmulqdq +#: modules/devices/x86/x86_data.c:115 +msgctxt "x86-flag" +msgid "" +"Perform a Carry-Less Multiplication of Quadword instruction - accelerator " +"for GCM)" +msgstr "" +"Executar uma multiplicação sem carga do acelerador de instruções do Quadword " +"para o GCM)" + +#. /flag:dtes64 +#: modules/devices/x86/x86_data.c:116 +msgctxt "x86-flag" +msgid "64-bit Debug Store" +msgstr "Armazenamento de depuração de 64 bits" + +#. /flag:monitor +#: modules/devices/x86/x86_data.c:117 +msgctxt "x86-flag" +msgid "Monitor/Mwait support (Intel SSE3 supplements)" +msgstr "Suporte Monitor / Mwait (suplementos Intel SSE3)" + +#. /flag:ds_cpl +#: modules/devices/x86/x86_data.c:118 +msgctxt "x86-flag" +msgid "CPL Qual. Debug Store" +msgstr "CPL Qual. Loja de Depuração" + +#. /flag:vmx +#: modules/devices/x86/x86_data.c:119 +msgctxt "x86-flag" +msgid "Hardware virtualization, Intel VMX" +msgstr "Virtualização de hardware, Intel VMX" + +#. /flag:smx +#: modules/devices/x86/x86_data.c:120 +msgctxt "x86-flag" +msgid "Safer mode TXT (TPM support)" +msgstr "Modo mais seguro TXT (suporte a TPM)" + +#. /flag:est +#: modules/devices/x86/x86_data.c:121 +msgctxt "x86-flag" +msgid "Enhanced SpeedStep" +msgstr "Enhanced SpeedStep" + +#. /flag:tm2 +#: modules/devices/x86/x86_data.c:122 +msgctxt "x86-flag" +msgid "Thermal Monitor 2" +msgstr "Monitor Térmico 2" + +#. /flag:ssse3 +#: modules/devices/x86/x86_data.c:123 +msgctxt "x86-flag" +msgid "Supplemental SSE-3" +msgstr "Suplemento SSE-3" + +#. /flag:cid +#: modules/devices/x86/x86_data.c:124 +msgctxt "x86-flag" +msgid "Context ID" +msgstr "ID de contexto" + +#. /flag:sdbg +#: modules/devices/x86/x86_data.c:125 +msgctxt "x86-flag" +msgid "silicon debug" +msgstr "depuração de silício" + +#. /flag:fma +#: modules/devices/x86/x86_data.c:126 +msgctxt "x86-flag" +msgid "Fused multiply-add" +msgstr "Fusão multiplica-adiciona" + +#. /flag:cx16 +#: modules/devices/x86/x86_data.c:127 +msgctxt "x86-flag" +msgid "CMPXCHG16B" +msgstr "CMPXCHG16B" + +#. /flag:xtpr +#: modules/devices/x86/x86_data.c:128 +msgctxt "x86-flag" +msgid "Send Task Priority Messages" +msgstr "Enviar mensagens de prioridade de tarefa" + +#. /flag:pdcm +#: modules/devices/x86/x86_data.c:129 +msgctxt "x86-flag" +msgid "Performance Capabilities" +msgstr "Capacidades de desempenho" + +#. /flag:pcid +#: modules/devices/x86/x86_data.c:130 +msgctxt "x86-flag" +msgid "Process Context Identifiers" +msgstr "Identificadores de contexto de processo" + +#. /flag:dca +#: modules/devices/x86/x86_data.c:131 +msgctxt "x86-flag" +msgid "Direct Cache Access" +msgstr "Acesso direto ao cache" + +#. /flag:sse4_1 +#: modules/devices/x86/x86_data.c:132 +msgctxt "x86-flag" +msgid "SSE-4.1" +msgstr "SSE-4.1" + +#. /flag:sse4_2 +#: modules/devices/x86/x86_data.c:133 +msgctxt "x86-flag" +msgid "SSE-4.2" +msgstr "SSE-4.2" + +#. /flag:x2apic +#: modules/devices/x86/x86_data.c:134 +msgctxt "x86-flag" +msgid "x2APIC" +msgstr "x2APIC" + +#. /flag:movbe +#: modules/devices/x86/x86_data.c:135 +msgctxt "x86-flag" +msgid "Move Data After Swapping Bytes instruction" +msgstr "Mover dados após a instrução troca de Bytes" + +#. /flag:popcnt +#: modules/devices/x86/x86_data.c:136 +msgctxt "x86-flag" +msgid "" +"Return the Count of Number of Bits Set to 1 instruction (Hamming weight, i." +"e. bit count)" +msgstr "" +"Retorna a Contagem do Número de Bits Definido como 1 instrução (peso " +"Hamming, ou seja, contagem de bits)" + +#. /flag:tsc_deadline_timer +#: modules/devices/x86/x86_data.c:137 +msgctxt "x86-flag" +msgid "Tsc deadline timer" +msgstr "Temporizador de prazo de Tsc" + +#. /flag:aes/aes-ni +#: modules/devices/x86/x86_data.c:138 +msgctxt "x86-flag" +msgid "Advanced Encryption Standard (New Instructions)" +msgstr "Padrão Avançado de Criptografia (Novas Instruções)" + +#. /flag:xsave +#: modules/devices/x86/x86_data.c:139 +msgctxt "x86-flag" +msgid "Save Processor Extended States: also provides XGETBY,XRSTOR,XSETBY" +msgstr "" +"Salvar estados estendidos do processador: também fornece XGETBY, XRSTOR, " +"XSETBY" + +#. /flag:avx +#: modules/devices/x86/x86_data.c:140 +msgctxt "x86-flag" +msgid "Advanced Vector Extensions" +msgstr "Extensões Vector Avançadas" + +#. /flag:f16c +#: modules/devices/x86/x86_data.c:141 +msgctxt "x86-flag" +msgid "16-bit fp conversions (CVT16)" +msgstr "Conversões fp de 16 bits (CVT16)" + +#. /flag:rdrand +#: modules/devices/x86/x86_data.c:142 +msgctxt "x86-flag" +msgid "Read Random Number from hardware random number generator instruction" +msgstr "" +"Ler Número Aleatório da instrução do gerador de números aleatórios de " +"hardware" + +#. /flag:hypervisor +#: modules/devices/x86/x86_data.c:143 +msgctxt "x86-flag" +msgid "Running on a hypervisor" +msgstr "Correndo em um hipervisor" + +#. /Cyrix/Centaur-defined CPU features, CPUID level 0xC0000001 +#. /flag:rng +#: modules/devices/x86/x86_data.c:145 +msgctxt "x86-flag" +msgid "Random Number Generator present (xstore)" +msgstr "Gerador de números aleatórios presente (xstore)" + +#. /flag:rng_en +#: modules/devices/x86/x86_data.c:146 +msgctxt "x86-flag" +msgid "Random Number Generator enabled" +msgstr "Gerador de Números Aleatórios ativado" + +#. /flag:ace +#: modules/devices/x86/x86_data.c:147 +msgctxt "x86-flag" +msgid "on-CPU crypto (xcrypt)" +msgstr "criptografia on-CPU (xcrypt) " + +#. /flag:ace_en +#: modules/devices/x86/x86_data.c:148 +msgctxt "x86-flag" +msgid "on-CPU crypto enabled" +msgstr "on-CPU criptografia ativada" + +#. /flag:ace2 +#: modules/devices/x86/x86_data.c:149 +msgctxt "x86-flag" +msgid "Advanced Cryptography Engine v2" +msgstr "Mecanismo Avançado de Criptografia v2" + +#. /flag:ace2_en +#: modules/devices/x86/x86_data.c:150 +msgctxt "x86-flag" +msgid "ACE v2 enabled" +msgstr "ACE v2 ativado" + +#. /flag:phe +#: modules/devices/x86/x86_data.c:151 +msgctxt "x86-flag" +msgid "PadLock Hash Engine" +msgstr "PadLock Hash Mecanismo" + +#. /flag:phe_en +#: modules/devices/x86/x86_data.c:152 +msgctxt "x86-flag" +msgid "PHE enabled" +msgstr "PHE ativado" + +#. /flag:pmm +#: modules/devices/x86/x86_data.c:153 +msgctxt "x86-flag" +msgid "PadLock Montgomery Multiplier" +msgstr "PadLock Montgomery Multiplicador" + +#. /flag:pmm_en +#: modules/devices/x86/x86_data.c:154 +msgctxt "x86-flag" +msgid "PMM enabled" +msgstr "PMM ativado" + +#. /flag:lahf_lm +#: modules/devices/x86/x86_data.c:156 +msgctxt "x86-flag" +msgid "Load AH from Flags (LAHF) and Store AH into Flags (SAHF) in long mode" +msgstr "" +"Carregar AH das Bandeiras (LAHF) e Armazenar HA dentro das Bandeiras (SAHF) " +"no modo longo" + +#. /flag:cmp_legacy +#: modules/devices/x86/x86_data.c:157 +msgctxt "x86-flag" +msgid "If yes HyperThreading not valid" +msgstr "se sim HyperThreading não é válido" + +#. /flag:svm +#: modules/devices/x86/x86_data.c:158 +msgctxt "x86-flag" +msgid "\"Secure virtual machine\": AMD-V" +msgstr "\"Máquina virtual segura\": AMD-V" + +#. /flag:extapic +#: modules/devices/x86/x86_data.c:159 +msgctxt "x86-flag" +msgid "Extended APIC space" +msgstr "Espaço APIC extendido" + +#. /flag:cr8_legacy +#: modules/devices/x86/x86_data.c:160 +msgctxt "x86-flag" +msgid "CR8 in 32-bit mode" +msgstr "CR8 no modo 32-bit" + +#. /flag:abm +#: modules/devices/x86/x86_data.c:161 +msgctxt "x86-flag" +msgid "Advanced Bit Manipulation" +msgstr "Manipulação Avançada de Bit" + +#. /flag:sse4a +#: modules/devices/x86/x86_data.c:162 +msgctxt "x86-flag" +msgid "SSE-4A" +msgstr "SSE-4A" + +#. /flag:misalignsse +#: modules/devices/x86/x86_data.c:163 +msgctxt "x86-flag" +msgid "" +"indicates if a general-protection exception (#GP) is generated when some " +"legacy SSE instructions operate on unaligned data. Also depends on CR0 and " +"Alignment Checking bit" +msgstr "" +"indica se uma exceção de proteção-geral (#GP) é gerada quando algumas " +"instruções SSE legadas operam em dados não alinhados. Também depende do CR0 " +"e bit de Verificação do Alinhamento" + +#. /flag:3dnowprefetch +#: modules/devices/x86/x86_data.c:164 +msgctxt "x86-flag" +msgid "3DNow prefetch instructions" +msgstr "Instruções de pré-busca 3DNow" + +#. /flag:osvw +#: modules/devices/x86/x86_data.c:165 +msgctxt "x86-flag" +msgid "" +"indicates OS Visible Workaround, which allows the OS to work around " +"processor errata." +msgstr "" +"Indica Solução Visível do OS, que permite que o OS contorne as erratas do " +"processador." + +#. /flag:ibs +#: modules/devices/x86/x86_data.c:166 +msgctxt "x86-flag" +msgid "Instruction Based Sampling" +msgstr "Amostragem Baseada em Instruções" + +#. /flag:xop +#: modules/devices/x86/x86_data.c:167 +msgctxt "x86-flag" +msgid "extended AVX instructions" +msgstr "instruções AVX estendidas" + +#. /flag:skinit +#: modules/devices/x86/x86_data.c:168 +msgctxt "x86-flag" +msgid "SKINIT/STGI instructions" +msgstr "instruções SKINIT/STGI" + +#. /flag:wdt +#: modules/devices/x86/x86_data.c:169 +msgctxt "x86-flag" +msgid "Watchdog timer" +msgstr "Cronômetro Watchdog " + +#. /flag:lwp +#: modules/devices/x86/x86_data.c:170 +msgctxt "x86-flag" +msgid "Light Weight Profiling" +msgstr "Perfil Peso Leve" + +#. /flag:fma4 +#: modules/devices/x86/x86_data.c:171 +msgctxt "x86-flag" +msgid "4 operands MAC instructions" +msgstr "4 operando instruções MAC" + +#. /flag:tce +#: modules/devices/x86/x86_data.c:172 +msgctxt "x86-flag" +msgid "translation cache extension" +msgstr "extensão de cache de tradução" + +#. /flag:nodeid_msr +#: modules/devices/x86/x86_data.c:173 +msgctxt "x86-flag" +msgid "NodeId MSR" +msgstr "NodeId MSR" + +#. /flag:tbm +#: modules/devices/x86/x86_data.c:174 +msgctxt "x86-flag" +msgid "Trailing Bit Manipulation" +msgstr "Manipulação de Bit de Arrasto" + +#. /flag:topoext +#: modules/devices/x86/x86_data.c:175 +msgctxt "x86-flag" +msgid "Topology Extensions CPUID leafs" +msgstr "Extensões de Topologia CPUID folhas" + +#. /flag:perfctr_core +#: modules/devices/x86/x86_data.c:176 +msgctxt "x86-flag" +msgid "Core Performance Counter Extensions" +msgstr "Extensões do Contador de Desempenho do Núcleo" + +#. /flag:perfctr_nb +#: modules/devices/x86/x86_data.c:177 +msgctxt "x86-flag" +msgid "NB Performance Counter Extensions" +msgstr "Extensões do Contador de Desempenho do NB" + +#. /flag:bpext +#: modules/devices/x86/x86_data.c:178 +msgctxt "x86-flag" +msgid "data breakpoint extension" +msgstr "extensão de ponto de interrupção de dados" + +#. /flag:ptsc +#: modules/devices/x86/x86_data.c:179 +msgctxt "x86-flag" +msgid "performance time-stamp counter" +msgstr "contador time-stamp de desempenho" + +#. /flag:perfctr_l2 +#: modules/devices/x86/x86_data.c:180 +msgctxt "x86-flag" +msgid "L2 Performance Counter Extensions" +msgstr "Extensões do Contador de Desempenho L2" + +#. /flag:mwaitx +#: modules/devices/x86/x86_data.c:181 +msgctxt "x86-flag" +msgid "MWAIT extension (MONITORX/MWAITX)" +msgstr "Extensão MWAIT (MONITORX/MWAITX)" + +#. /flag:cpb +#: modules/devices/x86/x86_data.c:183 +msgctxt "x86-flag" +msgid "AMD Core Performance Boost" +msgstr "Aumento do Desempenho do Núcleo da AMD" + +#. /flag:epb +#: modules/devices/x86/x86_data.c:184 +msgctxt "x86-flag" +msgid "IA32_ENERGY_PERF_BIAS support" +msgstr "Suporte IA32_ENERGY_PERF_BIAS " + +#. /flag:hw_pstate +#: modules/devices/x86/x86_data.c:185 +msgctxt "x86-flag" +msgid "AMD HW-PState" +msgstr "AMD HW-PState" + +#. /flag:proc_feedback +#: modules/devices/x86/x86_data.c:186 +msgctxt "x86-flag" +msgid "AMD ProcFeedbackInterface" +msgstr "AMD ProcFeedbackInterface" + +#. /flag:intel_pt +#: modules/devices/x86/x86_data.c:187 +msgctxt "x86-flag" +msgid "Intel Processor Tracing" +msgstr "Intel Processor Tracing" + +#. /flag:tpr_shadow +#: modules/devices/x86/x86_data.c:189 +msgctxt "x86-flag" +msgid "Intel TPR Shadow" +msgstr "Intel TPR Shadow" + +#. /flag:vnmi +#: modules/devices/x86/x86_data.c:190 +msgctxt "x86-flag" +msgid "Intel Virtual NMI" +msgstr "Intel Virtual NMI" + +#. /flag:flexpriority +#: modules/devices/x86/x86_data.c:191 +msgctxt "x86-flag" +msgid "Intel FlexPriority" +msgstr "Intel FlexPriority" + +#. /flag:ept +#: modules/devices/x86/x86_data.c:192 +msgctxt "x86-flag" +msgid "Intel Extended Page Table" +msgstr "Tabela de Páginas Estendidas da Intel" + +#. /flag:vpid +#: modules/devices/x86/x86_data.c:193 +msgctxt "x86-flag" +msgid "Intel Virtual Processor ID" +msgstr "Identificação do Processador Virtual Intel" + +#. /flag:vmmcall +#: modules/devices/x86/x86_data.c:194 +msgctxt "x86-flag" +msgid "prefer VMMCALL to VMCALL" +msgstr "prefira VMMCALL a VMCALL" + +#. /flag:fsgsbase +#: modules/devices/x86/x86_data.c:196 +msgctxt "x86-flag" +msgid "{RD/WR}{FS/GS}BASE instructions" +msgstr "instruções {RD/WR}{FS/GS}BASE" + +#. /flag:tsc_adjust +#: modules/devices/x86/x86_data.c:197 +msgctxt "x86-flag" +msgid "TSC adjustment MSR" +msgstr "TSC ajustamento MSR" + +#. /flag:bmi1 +#: modules/devices/x86/x86_data.c:198 +msgctxt "x86-flag" +msgid "1st group bit manipulation extensions" +msgstr "extensões de manipulação de bit de 1º grupo" + +#. /flag:hle +#: modules/devices/x86/x86_data.c:199 +msgctxt "x86-flag" +msgid "Hardware Lock Elision" +msgstr "Hardware Lock Elision" + +#. /flag:avx2 +#: modules/devices/x86/x86_data.c:200 +msgctxt "x86-flag" +msgid "AVX2 instructions" +msgstr "instruções AVX2" + +#. /flag:smep +#: modules/devices/x86/x86_data.c:201 +msgctxt "x86-flag" +msgid "Supervisor Mode Execution Protection" +msgstr "Proteção de Execução do Modo Supervisor" + +#. /flag:bmi2 +#: modules/devices/x86/x86_data.c:202 +msgctxt "x86-flag" +msgid "2nd group bit manipulation extensions" +msgstr "extensões de manipulação de bit de 2º grupo" + +#. /flag:erms +#: modules/devices/x86/x86_data.c:203 +msgctxt "x86-flag" +msgid "Enhanced REP MOVSB/STOSB" +msgstr "REP MOVSB/STOSB melhorada" + +#. /flag:invpcid +#: modules/devices/x86/x86_data.c:204 +msgctxt "x86-flag" +msgid "Invalidate Processor Context ID" +msgstr "ID de Contexto do Processador Inválido" + +#. /flag:rtm +#: modules/devices/x86/x86_data.c:205 +msgctxt "x86-flag" +msgid "Restricted Transactional Memory" +msgstr "Memória Transacional Restrita" + +#. /flag:cqm +#: modules/devices/x86/x86_data.c:206 +msgctxt "x86-flag" +msgid "Cache QoS Monitoring" +msgstr "Monitoramento de Cache de QoS" + +#. /flag:mpx +#: modules/devices/x86/x86_data.c:207 +msgctxt "x86-flag" +msgid "Memory Protection Extension" +msgstr "Extensão de Proteção de Memória" + +#. /flag:avx512f +#: modules/devices/x86/x86_data.c:208 +msgctxt "x86-flag" +msgid "AVX-512 foundation" +msgstr "fundação AVX-512" + +#. /flag:avx512dq +#: modules/devices/x86/x86_data.c:209 +msgctxt "x86-flag" +msgid "AVX-512 Double/Quad instructions" +msgstr "instruções AVX-512 Double/Quad" + +#. /flag:rdseed +#: modules/devices/x86/x86_data.c:210 +msgctxt "x86-flag" +msgid "The RDSEED instruction" +msgstr "instrução The RDSEED" + +#. /flag:adx +#: modules/devices/x86/x86_data.c:211 +msgctxt "x86-flag" +msgid "The ADCX and ADOX instructions" +msgstr "instruções The ADCX e ADOX" + +#. /flag:smap +#: modules/devices/x86/x86_data.c:212 +msgctxt "x86-flag" +msgid "Supervisor Mode Access Prevention" +msgstr "Prevenção de Acesso do Modo Supervisor" + +#. /flag:clflushopt +#: modules/devices/x86/x86_data.c:213 +msgctxt "x86-flag" +msgid "CLFLUSHOPT instruction" +msgstr "instrução CLFLUSHOPT" + +#. /flag:clwb +#: modules/devices/x86/x86_data.c:214 +msgctxt "x86-flag" +msgid "CLWB instruction" +msgstr "instrução CLWB" + +#. /flag:avx512pf +#: modules/devices/x86/x86_data.c:215 +msgctxt "x86-flag" +msgid "AVX-512 Prefetch" +msgstr "Pré-busca AVX-512" + +#. /flag:avx512er +#: modules/devices/x86/x86_data.c:216 +msgctxt "x86-flag" +msgid "AVX-512 Exponential and Reciprocal" +msgstr "Exponencial e Recíproco AVX-512" + +#. /flag:avx512cd +#: modules/devices/x86/x86_data.c:217 +msgctxt "x86-flag" +msgid "AVX-512 Conflict Detection" +msgstr "Detecção de Conflitos AVX-512" + +#. /flag:sha_ni +#: modules/devices/x86/x86_data.c:218 +msgctxt "x86-flag" +msgid "SHA1/SHA256 Instruction Extensions" +msgstr "Extensões de Instrução SHA1/SHA256" + +#. /flag:avx512bw +#: modules/devices/x86/x86_data.c:219 +msgctxt "x86-flag" +msgid "AVX-512 Byte/Word instructions" +msgstr "instruções AVX-512 Byte/Word" + +#. /flag:avx512vl +#: modules/devices/x86/x86_data.c:220 +msgctxt "x86-flag" +msgid "AVX-512 128/256 Vector Length extensions" +msgstr "Extensões de Comprimento de Vetor AVX-512 128/256" + +#. /flag:xsaveopt +#: modules/devices/x86/x86_data.c:222 +msgctxt "x86-flag" +msgid "Optimized XSAVE" +msgstr "XSAVE Otimizado" + +#. /flag:xsavec +#: modules/devices/x86/x86_data.c:223 +msgctxt "x86-flag" +msgid "XSAVEC" +msgstr "XSAVEC" + +#. /flag:xgetbv1 +#: modules/devices/x86/x86_data.c:224 +msgctxt "x86-flag" +msgid "XGETBV with ECX = 1" +msgstr "XGETBV com ECX = 1" + +#. /flag:xsaves +#: modules/devices/x86/x86_data.c:225 +msgctxt "x86-flag" +msgid "XSAVES/XRSTORS" +msgstr "XSAVES/XRSTORS" + +#. /flag:cqm_llc +#: modules/devices/x86/x86_data.c:227 +msgctxt "x86-flag" +msgid "LLC QoS" +msgstr "LLC QoS" + +#. /flag:cqm_occup_llc +#: modules/devices/x86/x86_data.c:229 +msgctxt "x86-flag" +msgid "LLC occupancy monitoring" +msgstr "monitoramento de ocupação de LLC" + +#. /flag:cqm_mbm_total +#: modules/devices/x86/x86_data.c:230 +msgctxt "x86-flag" +msgid "LLC total MBM monitoring" +msgstr "monitoramento LLC total MBM" + +#. /flag:cqm_mbm_local +#: modules/devices/x86/x86_data.c:231 +msgctxt "x86-flag" +msgid "LLC local MBM monitoring" +msgstr "monitoramento LLC local MBM" + +#. /flag:clzero +#: modules/devices/x86/x86_data.c:233 +msgctxt "x86-flag" +msgid "CLZERO instruction" +msgstr "instrução CLZERO" + +#. /flag:irperf +#: modules/devices/x86/x86_data.c:234 +msgctxt "x86-flag" +msgid "instructions retired performance counter" +msgstr "instruções do contador de desempenho aposentado" + +#. /flag:dtherm +#: modules/devices/x86/x86_data.c:236 +msgctxt "x86-flag" +msgid "digital thermal sensor" +msgstr "sensor térmico digital" + +#. /flag:ida +#: modules/devices/x86/x86_data.c:237 +msgctxt "x86-flag" +msgid "Intel Dynamic Acceleration" +msgstr "Aceleração Dinâmica Intel" + +#. /flag:arat +#: modules/devices/x86/x86_data.c:238 +msgctxt "x86-flag" +msgid "Always Running APIC Timer" +msgstr "Sempre Executando o Temporizador APIC" + +#. /flag:pln +#: modules/devices/x86/x86_data.c:239 +msgctxt "x86-flag" +msgid "Intel Power Limit Notification" +msgstr "Notificação de Limite de Energia Intel" + +#. /flag:pts +#: modules/devices/x86/x86_data.c:240 +msgctxt "x86-flag" +msgid "Intel Package Thermal Status" +msgstr "Status Térmico do Pacote Intel" + +#. /flag:hwp +#: modules/devices/x86/x86_data.c:241 +msgctxt "x86-flag" +msgid "Intel Hardware P-states" +msgstr "Intel Hardware P-states" + +#. /flag:hwp_notify +#: modules/devices/x86/x86_data.c:242 +msgctxt "x86-flag" +msgid "HWP notification" +msgstr "notificação HWP" + +#. /flag:hwp_act_window +#: modules/devices/x86/x86_data.c:243 +msgctxt "x86-flag" +msgid "HWP Activity Window" +msgstr "Janela de Atividade do HWP" + +#. /flag:hwp_epp +#: modules/devices/x86/x86_data.c:244 +msgctxt "x86-flag" +msgid "HWP Energy Performance Preference" +msgstr "Preferência de Desempenho de Energia HWP" + +#. /flag:hwp_pkg_req +#: modules/devices/x86/x86_data.c:245 +msgctxt "x86-flag" +msgid "HWP package-level request" +msgstr "Solicitação do package-level de HWP " + +#. /flag:npt +#: modules/devices/x86/x86_data.c:247 +msgctxt "x86-flag" +msgid "AMD Nested Page Table support" +msgstr "suporte para AMD Nested Page Table" + +#. /flag:lbrv +#: modules/devices/x86/x86_data.c:248 +msgctxt "x86-flag" +msgid "AMD LBR Virtualization support" +msgstr "AMD LBR Virtualização suporte" + +#. /flag:svm_lock +#: modules/devices/x86/x86_data.c:249 +msgctxt "x86-flag" +msgid "AMD SVM locking MSR" +msgstr "AMD SVM bloqueio MSR" + +#. /flag:nrip_save +#: modules/devices/x86/x86_data.c:250 +msgctxt "x86-flag" +msgid "AMD SVM next_rip save" +msgstr "AMD SVM next_rip salvar" + +#. /flag:tsc_scale +#: modules/devices/x86/x86_data.c:251 +msgctxt "x86-flag" +msgid "AMD TSC scaling support" +msgstr "suporte de dimensionamento do AMD TSC" + +#. /flag:vmcb_clean +#: modules/devices/x86/x86_data.c:252 +msgctxt "x86-flag" +msgid "AMD VMCB clean bits support" +msgstr "suporte para bits limpos AMD VMCB" + +#. /flag:flushbyasid +#: modules/devices/x86/x86_data.c:253 +msgctxt "x86-flag" +msgid "AMD flush-by-ASID support" +msgstr "suporte para AMD flush-by-ASID" + +#. /flag:decodeassists +#: modules/devices/x86/x86_data.c:254 +msgctxt "x86-flag" +msgid "AMD Decode Assists support" +msgstr "support para AMD Decode Assists" + +#. /flag:pausefilter +#: modules/devices/x86/x86_data.c:255 +msgctxt "x86-flag" +msgid "AMD filtered pause intercept" +msgstr "interceptação de pausa filtrada AMD" + +#. /flag:pfthreshold +#: modules/devices/x86/x86_data.c:256 +msgctxt "x86-flag" +msgid "AMD pause filter threshold" +msgstr "limite de filtro de pausa da AMD" + +#. /flag:avic +#: modules/devices/x86/x86_data.c:257 +msgctxt "x86-flag" +msgid "Virtual Interrupt Controller" +msgstr "Controlador de Interrupção Virtual" + +#. /flag:pku +#: modules/devices/x86/x86_data.c:259 +msgctxt "x86-flag" +msgid "Protection Keys for Userspace" +msgstr "Chaves de Proteção para o Espaço do Usuário" + +#. /flag:ospke +#: modules/devices/x86/x86_data.c:260 +msgctxt "x86-flag" +msgid "OS Protection Keys Enable" +msgstr "Habilitar Chaves de Proteção do Sistema Operacional" + +#. /flag:overflow_recov +#: modules/devices/x86/x86_data.c:262 +msgctxt "x86-flag" +msgid "MCA overflow recovery support" +msgstr "suporte para recuperação de estouro de MCA" + +#. /flag:succor +#: modules/devices/x86/x86_data.c:263 +msgctxt "x86-flag" +msgid "uncorrectable error containment and recovery" +msgstr "contenção de erros e recuperação incorrigíveis" + +#. /flag:smca +#: modules/devices/x86/x86_data.c:264 +msgctxt "x86-flag" +msgid "Scalable MCA" +msgstr "MCA escalável" + +#. /bug:f00f +#: modules/devices/x86/x86_data.c:267 +msgctxt "x86-flag" +msgid "Intel F00F bug" +msgstr "Erro Intel F00F" + +#. /bug:fdiv +#: modules/devices/x86/x86_data.c:268 +msgctxt "x86-flag" +msgid "FPU FDIV" +msgstr "FPU FDIV" + +#. /bug:coma +#: modules/devices/x86/x86_data.c:269 +msgctxt "x86-flag" +msgid "Cyrix 6x86 coma" +msgstr "Cyrix 6x86 coma" + +#. /bug:tlb_mmatch +#: modules/devices/x86/x86_data.c:270 +msgctxt "x86-flag" +msgid "AMD Erratum 383" +msgstr "AMD Erratum 383" + +#. /bug:apic_c1e +#. /bug:amd_e400 +#: modules/devices/x86/x86_data.c:271 modules/devices/x86/x86_data.c:280 +msgctxt "x86-flag" +msgid "AMD Erratum 400" +msgstr "AMD Erratum 400" + +#. /bug:11ap +#: modules/devices/x86/x86_data.c:272 +msgctxt "x86-flag" +msgid "Bad local APIC aka 11AP" +msgstr "Local ruim APIC também conhecido como 11AP " + +#. /bug:fxsave_leak +#: modules/devices/x86/x86_data.c:273 +msgctxt "x86-flag" +msgid "FXSAVE leaks FOP/FIP/FOP" +msgstr "FXSAVE vazamentos FOP/FIP/FOP" + +#. /bug:clflush_monitor +#: modules/devices/x86/x86_data.c:274 +msgctxt "x86-flag" +msgid "AAI65, CLFLUSH required before MONITOR" +msgstr "AAI65, CLFLUSH requerido antes de MONITOR" + +#. /bug:sysret_ss_attrs +#: modules/devices/x86/x86_data.c:275 +msgctxt "x86-flag" +msgid "SYSRET doesn't fix up SS attrs" +msgstr "SYSRET não conserta o SS attrs" + +#. /bug:espfix +#: modules/devices/x86/x86_data.c:276 +msgctxt "x86-flag" +msgid "IRET to 16-bit SS corrupts ESP/RSP high bits" +msgstr "IRET para SS de 16-bit corrompe os bits altos do ESP/RSP" + +#. /bug:null_seg +#: modules/devices/x86/x86_data.c:277 +msgctxt "x86-flag" +msgid "Nulling a selector preserves the base" +msgstr "Anulando um seletor preserva a base" + +#. /bug:swapgs_fence +#: modules/devices/x86/x86_data.c:278 +msgctxt "x86-flag" +msgid "SWAPGS without input dep on GS" +msgstr "SWAPGS sem dep de entrada em GS" + +#. /bug:monitor +#: modules/devices/x86/x86_data.c:279 +msgctxt "x86-flag" +msgid "IPI required to wake up remote CPU" +msgstr "IPI necessário para ativar a CPU remota" + +#. /bug:cpu_insecure & bug:cpu_meltdown +#: modules/devices/x86/x86_data.c:281 modules/devices/x86/x86_data.c:282 +msgctxt "x86-flag" +msgid "" +"CPU is affected by meltdown attack and needs kernel page table isolation" +msgstr "" +"A CPU é afetada pelo ataque Meltdown e precisa de isolamento da tabela de " +"páginas do kernel" + +#. /bug:spectre_v1 +#: modules/devices/x86/x86_data.c:283 +msgctxt "x86-flag" +msgid "CPU is affected by Spectre variant 1 attack with conditional branches" +msgstr "" +"A CPU é afetada pelo ataque Spectre variante 1 ataque com ramificações " +"condicionais" + +#. /bug:spectre_v2 +#: modules/devices/x86/x86_data.c:284 +msgctxt "x86-flag" +msgid "CPU is affected by Spectre variant 2 attack with indirect branches" +msgstr "" +"A CPU é afetada pelo Spectre variante 2 ataque com ramificações indiretas" + +#. /bug:spec_store_bypass +#: modules/devices/x86/x86_data.c:285 +msgctxt "x86-flag" +msgid "CPU is affected by speculative store bypass attack" +msgstr "A CPU é afetada pelo ataque de desvio de armazenamento especulativo" + +#. /bug:l1tf +#: modules/devices/x86/x86_data.c:286 +msgctxt "x86-flag" +msgid "CPU is affected by L1 Terminal Fault" +msgstr "" + +#. /x86/kernel/cpu/powerflags.h +#. /flag:pm:ts +#: modules/devices/x86/x86_data.c:289 +msgctxt "x86-flag" +msgid "temperature sensor" +msgstr "sensor de temperatura" + +#. /flag:pm:fid +#: modules/devices/x86/x86_data.c:290 +msgctxt "x86-flag" +msgid "frequency id control" +msgstr "id de controle de frequência" + +#. /flag:pm:vid +#: modules/devices/x86/x86_data.c:291 +msgctxt "x86-flag" +msgid "voltage id control" +msgstr "id de controle de voltagem" + +#. /flag:pm:ttp +#: modules/devices/x86/x86_data.c:292 +msgctxt "x86-flag" +msgid "thermal trip" +msgstr "viagem térmica" + +#. /flag:pm:tm +#: modules/devices/x86/x86_data.c:293 +msgctxt "x86-flag" +msgid "hardware thermal control" +msgstr "controle térmico de hardware" + +#. /flag:pm:stc +#: modules/devices/x86/x86_data.c:294 +msgctxt "x86-flag" +msgid "software thermal control" +msgstr "controle térmico de software" + +#. /flag:pm:100mhzsteps +#: modules/devices/x86/x86_data.c:295 +msgctxt "x86-flag" +msgid "100 MHz multiplier control" +msgstr "controle de multiplicador 100 MHz" + +#. /flag:pm:hwpstate +#: modules/devices/x86/x86_data.c:296 +msgctxt "x86-flag" +msgid "hardware P-state control" +msgstr "controle P-state de hardware" + +#. /flag:pm:cpb +#: modules/devices/x86/x86_data.c:297 +msgctxt "x86-flag" +msgid "core performance boost" +msgstr "impulsionar o desempenho do núcleo" + +#. /flag:pm:eff_freq_ro +#: modules/devices/x86/x86_data.c:298 +msgctxt "x86-flag" +msgid "Readonly aperf/mperf" +msgstr "Somente leitura aperf/mperf" + +#. /flag:pm:proc_feedback +#: modules/devices/x86/x86_data.c:299 +msgctxt "x86-flag" +msgid "processor feedback interface" +msgstr "interface de feedback do processador" + +#. /flag:pm:acc_power +#: modules/devices/x86/x86_data.c:300 +msgctxt "x86-flag" +msgid "accumulated power mechanism" +msgstr "mecanismo de energia acumulada" + +#: modules/network.c:61 +msgid "Interfaces" +msgstr "Interfaces" + +#: modules/network.c:62 +msgid "IP Connections" +msgstr "Conexões IP" + +#: modules/network.c:63 +msgid "Routing Table" +msgstr "Tabela de roteamento" + +#: modules/network.c:64 modules/network.c:309 +msgid "ARP Table" +msgstr "Tabela ARP" + +#: modules/network.c:65 +msgid "DNS Servers" +msgstr "Servidor DNS" + +#: modules/network.c:66 +msgid "Statistics" +msgstr "Estatísticas" + +#: modules/network.c:67 +msgid "Shared Directories" +msgstr "Diretórios Compartilhados" + +#: modules/network.c:310 modules/network.c:332 modules/network.c:363 +#: modules/network/net.c:472 +msgid "IP Address" +msgstr "Endereço de IP" + +#: modules/network.c:310 +msgid "MAC Address" +msgstr "Endereço MAC" + +#: modules/network.c:319 +msgid "SAMBA" +msgstr "SAMBA" + +#: modules/network.c:320 +msgid "NFS" +msgstr "NFS" + +#: modules/network.c:331 +msgid "Name Servers" +msgstr "Nome de Servidores" + +#: modules/network.c:346 +msgid "Connections" +msgstr "Conexões" + +#: modules/network.c:347 +msgid "Local Address" +msgstr "Endereço Local" + +#: modules/network.c:347 +msgid "Foreign Address" +msgstr "Endereço Exterior" + +#: modules/network.c:347 +msgid "State" +msgstr "Estado" + +#: modules/network.c:363 +msgid "Sent" +msgstr "Enviado" + +#: modules/network.c:363 +msgid "Received" +msgstr "Recebido" + +#: modules/network.c:379 +msgid "IP routing table" +msgstr "Tabela de roteamento IP" + +#: modules/network.c:380 +msgid "Destination/Gateway" +msgstr "Destino/Gateway" + +#: modules/network.c:380 modules/network/net.c:473 +msgid "Mask" +msgstr "Máscara" + +#: modules/network.c:408 +msgid "Network" +msgstr "Rede" + +#: modules/network.c:441 +msgid "Gathers information about this computer's network connection" +msgstr "Reúne informações sobre a conexão de rede deste computador" + +#: modules/network/net.c:72 +msgctxt "wi-op-mode" +msgid "Auto" +msgstr "Automático" + +#: modules/network/net.c:73 +msgctxt "wi-op-mode" +msgid "Ad-Hoc" +msgstr "Ad-Hoc" + +#: modules/network/net.c:74 +msgctxt "wi-op-mode" +msgid "Managed" +msgstr "Gerenciado" + +#: modules/network/net.c:75 +msgctxt "wi-op-mode" +msgid "Master" +msgstr "Principal" + +#: modules/network/net.c:76 +msgctxt "wi-op-mode" +msgid "Repeater" +msgstr "Repetidor" + +#: modules/network/net.c:77 +msgctxt "wi-op-mode" +msgid "Secondary" +msgstr "Secondário" + +#: modules/network/net.c:78 +msgctxt "wi-op-mode" +msgid "(Unknown)" +msgstr "(Desconhecido)" + +#: modules/network/net.c:242 modules/network/net.c:262 +#: modules/network/net.c:270 +msgctxt "net-if-type" +msgid "Ethernet" +msgstr "Ethernet" + +#: modules/network/net.c:243 +msgctxt "net-if-type" +msgid "Loopback" +msgstr "Loopback" + +#: modules/network/net.c:244 +msgctxt "net-if-type" +msgid "Point-to-Point" +msgstr "Ponto-a-Ponto" + +#: modules/network/net.c:245 modules/network/net.c:246 +#: modules/network/net.c:247 modules/network/net.c:248 +#: modules/network/net.c:272 +msgctxt "net-if-type" +msgid "Wireless" +msgstr "Rede sem fio" + +#: modules/network/net.c:249 +msgctxt "net-if-type" +msgid "Virtual Point-to-Point (TUN)" +msgstr "Ponto-a-ponto virtual (TUN)" + +#: modules/network/net.c:250 +msgctxt "net-if-type" +msgid "Ethernet (TAP)" +msgstr "Ethernet (TAP)" + +#: modules/network/net.c:251 +msgctxt "net-if-type" +msgid "Parallel Line Internet Protocol" +msgstr "Protocolo de Internet de Linha Paralela" + +#: modules/network/net.c:252 +msgctxt "net-if-type" +msgid "Infrared" +msgstr "Infravermelho" + +#: modules/network/net.c:253 modules/network/net.c:271 +msgctxt "net-if-type" +msgid "Serial Line Internet Protocol" +msgstr "Protocolo de Internet de Linha Serial" + +#: modules/network/net.c:254 +msgctxt "net-if-type" +msgid "Integrated Services Digital Network" +msgstr "Rede Digital de Serviços Integrados" + +#: modules/network/net.c:255 +msgctxt "net-if-type" +msgid "IPv6-over-IPv4 Tunnel" +msgstr "Túnel IPv6-sobre-IPv4" + +#: modules/network/net.c:256 +msgctxt "net-if-type" +msgid "VMWare Virtual Network Interface (NAT)" +msgstr "VMWare Interface de Rede Virtual (NAT)" + +#: modules/network/net.c:257 +msgctxt "net-if-type" +msgid "VMWare Virtual Network Interface" +msgstr "Interface de Rede Virtual do VMWare" + +#: modules/network/net.c:258 +msgctxt "net-if-type" +msgid "Personal Area Network (PAN)" +msgstr "Rede de Área Pessoal (PAN)" + +#: modules/network/net.c:259 +msgctxt "net-if-type" +msgid "Bluetooth" +msgstr "Bluetooth" + +#: modules/network/net.c:260 +msgctxt "net-if-type" +msgid "Bridge Interface" +msgstr "Interface Ponte" + +#: modules/network/net.c:261 +msgctxt "net-if-type" +msgid "Hamachi Virtual Personal Network" +msgstr "Rede Pessoal Virtual do Hamachi" + +#: modules/network/net.c:263 +msgctxt "net-if-type" +msgid "Intermediate Functional Block" +msgstr "Bloco Funcional Intermediário" + +#: modules/network/net.c:264 +msgctxt "net-if-type" +msgid "GRE Network Tunnel" +msgstr "Túnel de Rede GRE" + +#: modules/network/net.c:265 +msgctxt "net-if-type" +msgid "Mesh Network" +msgstr "Malha de Rede" + +#: modules/network/net.c:266 +msgctxt "net-if-type" +msgid "Wireless Master Interface" +msgstr "Interface Principal Wireless" + +#: modules/network/net.c:267 +msgctxt "net-if-type" +msgid "VirtualBox Virtual Network Interface" +msgstr "Interface de Rede Virtual do VirtualBox" + +#: modules/network/net.c:273 +msgctxt "net-if-type" +msgid "Wireless (WAN)" +msgstr "Rede sem fio (WAN)" + +#: modules/network/net.c:275 +msgctxt "net-if-type" +msgid "(Unknown)" +msgstr "(Desconhecido)" + +#: modules/network/net.c:343 modules/network/net.c:353 +msgid "Network Interfaces" +msgstr "Interfaces de Rede" + +#: modules/network/net.c:343 +msgid "None Found" +msgstr "Nenhum Encontrado" + +#: modules/network/net.c:409 +msgid "Network Adapter Properties" +msgstr "Propriedades do adaptador de rede" + +#: modules/network/net.c:410 +msgid "Interface Type" +msgstr "Tipo de interface" + +#: modules/network/net.c:411 +msgid "Hardware Address (MAC)" +msgstr "Endereço físico (MAC)" + +#: modules/network/net.c:415 +msgid "MTU" +msgstr "MTU" + +#: modules/network/net.c:416 +msgid "Transfer Details" +msgstr "Detalhes da transferência" + +#: modules/network/net.c:417 +msgid "Bytes Received" +msgstr "Bytes recebidos" + +#: modules/network/net.c:418 +msgid "Bytes Sent" +msgstr "Bytes Enviados" + +#: modules/network/net.c:435 modules/network/net.c:457 +#: modules/network/net.c:458 +msgid "dBm" +msgstr "dBm" + +#: modules/network/net.c:435 +msgid "mW" +msgstr "mW" + +#: modules/network/net.c:449 +msgid "Wireless Properties" +msgstr "Propriedades da Rede sem fio" + +#: modules/network/net.c:450 +msgid "Network Name (SSID)" +msgstr "Nome da Rede (SSID)" + +#: modules/network/net.c:451 +msgid "Bit Rate" +msgstr "Taxa de Bits" + +#: modules/network/net.c:452 +msgid "Transmission Power" +msgstr "Potência de transmissão" + +#: modules/network/net.c:455 +msgid "Link Quality" +msgstr "Qualidade do link" + +#: modules/network/net.c:456 +msgid "Signal / Noise" +msgstr "Sinal / Ruído" + +#: modules/network/net.c:471 +msgid "Internet Protocol (IPv4)" +msgstr "Protocolo de internet (IPv4)" + +#: modules/network/net.c:472 modules/network/net.c:473 +#: modules/network/net.c:475 +msgid "(Not set)" +msgstr "(Não configurado)" + +#: modules/network/net.c:474 +msgid "Broadcast Address" +msgstr "Endereço de transmissão" + +#~ msgid "#SysBench CPU (Four threads)" +#~ msgstr "#SysBench CPU (4 processamentos)" + +#~ msgid "#SysBench Memory (Single-thread)" +#~ msgstr "#SysBench Memória (Processamento unitário)" + +#~ msgid "#SysBench Memory (Two threads)" +#~ msgstr "#SysBench Memória (2 Processamentos)" + +#~ msgid "#Revision" +#~ msgstr "#Revisão" + +#~ msgid "#Extra" +#~ msgstr "#Extra" + +#~ msgid "#User Note" +#~ msgstr "#Nota de usuário" diff --git a/po/ru.po b/po/ru.po index 3cb48620..daef35ec 100644 --- a/po/ru.po +++ b/po/ru.po @@ -2,214 +2,448 @@ msgid "" msgstr "" "Project-Id-Version: hardinfo\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-11-03 05:49+0300\n" -"PO-Revision-Date: \n" -"Last-Translator: Sergey Rodin \n" +"POT-Creation-Date: 2019-10-24 15:16-0500\n" +"PO-Revision-Date: 2022-03-05 23:00+0300\n" +"Last-Translator: Sergey Rodin , ViktorOn\n" "Language-Team: \n" -"Language: ru_UA\n" +"Language: ru\n" "X-Poedit-Basepath: ../\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Poedit-Language: Russian\n" -"X-Poedit-Country: UKRAINE\n" +"X-Poedit-Country: Russia\n" "X-Poedit-SourceCharset: utf-8\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" -#: hardinfo/cpu_util.c:30 +#: hardinfo/cpu_util.c:29 msgid "Little Endian" -msgstr "" +msgstr "Младший порядок байтов" -#: hardinfo/cpu_util.c:32 +#: hardinfo/cpu_util.c:31 msgid "Big Endian" -msgstr "" +msgstr "Старший порядок байтов" -#: hardinfo/cpu_util.c:178 hardinfo/cpu_util.c:189 +#: hardinfo/cpu_util.c:204 hardinfo/cpu_util.c:215 modules/devices/gpu.c:218 msgid "Frequency Scaling" msgstr "Масштабирование частоты" -#: hardinfo/cpu_util.c:179 +#: hardinfo/cpu_util.c:205 modules/devices/gpu.c:219 msgid "Minimum" msgstr "Минимальная" -#: hardinfo/cpu_util.c:179 hardinfo/cpu_util.c:180 hardinfo/cpu_util.c:181 +#: hardinfo/cpu_util.c:205 hardinfo/cpu_util.c:206 hardinfo/cpu_util.c:207 +#: hardinfo/dt_util.c:589 modules/devices/gpu.c:219 modules/devices/gpu.c:220 msgid "kHz" msgstr "кГц" -#: hardinfo/cpu_util.c:180 +#: hardinfo/cpu_util.c:206 modules/devices/gpu.c:220 msgid "Maximum" msgstr "Максимальная" -#: hardinfo/cpu_util.c:181 +#: hardinfo/cpu_util.c:207 msgid "Current" msgstr "Текущая" -#: hardinfo/cpu_util.c:182 +#: hardinfo/cpu_util.c:208 modules/devices/gpu.c:221 msgid "Transition Latency" msgstr "Задержка перехода" -#: hardinfo/cpu_util.c:182 +#: hardinfo/cpu_util.c:208 modules/devices/gpu.c:221 msgid "ns" msgstr "нс" -#: hardinfo/cpu_util.c:183 +#: hardinfo/cpu_util.c:209 msgid "Governor" msgstr "Регулятор" -#: hardinfo/cpu_util.c:184 hardinfo/cpu_util.c:190 +#: hardinfo/cpu_util.c:210 hardinfo/cpu_util.c:216 modules/devices.c:774 +#: modules/devices/gpu.c:165 modules/devices/pci.c:148 +#: modules/devices/usb.c:139 msgid "Driver" msgstr "Драйвер" -#: hardinfo/cpu_util.c:196 modules/devices/x86/processor.c:297 +#: hardinfo/cpu_util.c:222 modules/computer.c:765 +#: modules/devices/arm/processor.c:256 modules/devices/e2k/processor.c:178 +#: modules/devices/x86/processor.c:284 modules/devices/x86/processor.c:388 +#: modules/devices/x86/processor.c:526 msgid "(Not Available)" msgstr "(Недоступно)" -#: hardinfo/cpu_util.c:204 hardinfo/cpu_util.c:206 +#: hardinfo/cpu_util.c:230 hardinfo/cpu_util.c:232 msgid "Socket" msgstr "Сокет" -#: hardinfo/cpu_util.c:209 hardinfo/cpu_util.c:211 +#: hardinfo/cpu_util.c:235 hardinfo/cpu_util.c:237 modules/devices/gpu.c:161 +#: modules/devices/gpu.c:245 msgid "Core" msgstr "Ядро" -#: hardinfo/cpu_util.c:214 +#: hardinfo/cpu_util.c:240 msgid "Book" msgstr "Книга" -#: hardinfo/cpu_util.c:216 +#: hardinfo/cpu_util.c:242 msgid "Drawer" msgstr "Трассировщик" -#: hardinfo/cpu_util.c:222 modules/devices/arm/processor.c:356 +#: hardinfo/cpu_util.c:248 modules/devices/arm/processor.c:471 +#: modules/devices/x86/processor.c:752 msgid "Topology" msgstr "Топология" -#: hardinfo/cpu_util.c:223 +#: hardinfo/cpu_util.c:249 msgid "ID" +msgstr "ИД" + +#: hardinfo/dmi_util.c:25 +msgid "BIOS Information" +msgstr "Информация о BIOS" + +#: hardinfo/dmi_util.c:26 modules/devices/parisc/processor.c:157 +msgid "System" +msgstr "Система" + +#: hardinfo/dmi_util.c:27 +msgid "Base Board" +msgstr "Основная плата" + +#: hardinfo/dmi_util.c:28 modules/devices/dmi.c:54 +msgid "Chassis" +msgstr "Шасси" + +#: hardinfo/dmi_util.c:29 modules/computer.c:548 modules/computer.c:1034 +#: modules/devices/alpha/processor.c:87 modules/devices/arm/processor.c:341 +#: modules/devices.c:100 modules/devices/e2k/processor.c:329 +#: modules/devices/ia64/processor.c:159 +#: modules/devices/loongarch64/processor.c:74 +#: modules/devices/m68k/processor.c:83 modules/devices/mips/processor.c:74 +#: modules/devices/parisc/processor.c:154 modules/devices/ppc/processor.c:157 +#: modules/devices/riscv/processor.c:181 modules/devices/s390/processor.c:131 +#: modules/devices/sh/processor.c:83 modules/devices/sparc/processor.c:74 +#: modules/devices/x86/processor.c:648 +msgid "Processor" +msgstr "Процессор" + +#: hardinfo/dmi_util.c:30 +msgid "Memory Controller" +msgstr "Контроллер памяти" + +#: hardinfo/dmi_util.c:31 +msgid "Memory Module" +msgstr "Модуль памяти" + +#: hardinfo/dmi_util.c:32 modules/devices/e2k/processor.c:338 +#: modules/devices/parisc/processor.c:163 modules/devices/x86/processor.c:664 +msgid "Cache" +msgstr "Кэш" + +#: hardinfo/dmi_util.c:33 +msgid "Port Connector" +msgstr "Разъем порта" + +#: hardinfo/dmi_util.c:34 +msgid "System Slots" +msgstr "" + +#: hardinfo/dmi_util.c:35 +msgid "On Board Devices" +msgstr "" + +#: hardinfo/dmi_util.c:36 +msgid "OEM Strings" +msgstr "Строки OEM" + +#: hardinfo/dmi_util.c:37 +msgid "System Configuration Options" +msgstr "" + +#: hardinfo/dmi_util.c:38 +msgid "BIOS Language" +msgstr "Язык BIOS" + +#: hardinfo/dmi_util.c:39 +msgid "Group Associations" +msgstr "" + +#: hardinfo/dmi_util.c:40 +msgid "System Event Log" +msgstr "" + +#: hardinfo/dmi_util.c:41 +msgid "Physical Memory Array" +msgstr "" + +#: hardinfo/dmi_util.c:42 +msgid "Memory Device" +msgstr "Устройство памяти" + +#: hardinfo/dmi_util.c:43 +msgid "32-bit Memory Error" +msgstr "" + +#: hardinfo/dmi_util.c:44 +msgid "Memory Array Mapped Address" +msgstr "" + +#: hardinfo/dmi_util.c:45 +msgid "Memory Device Mapped Address" +msgstr "" + +#: hardinfo/dmi_util.c:46 +msgid "Built-in Pointing Device" +msgstr "Встроенное указывающее устройство" + +#: hardinfo/dmi_util.c:47 +msgid "Portable Battery" +msgstr "Съемная батарея" + +#: hardinfo/dmi_util.c:48 +msgid "System Reset" +msgstr "Сброс системы" + +#: hardinfo/dmi_util.c:49 +msgid "Hardware Security" +msgstr "Аппаратная безопасность" + +#: hardinfo/dmi_util.c:50 +msgid "System Power Controls" +msgstr "" + +#: hardinfo/dmi_util.c:51 +msgid "Voltage Probe" +msgstr "Датчик напряжения" + +#: hardinfo/dmi_util.c:52 +msgid "Cooling Device" +msgstr "Устройство охлаждения" + +#: hardinfo/dmi_util.c:53 +msgid "Temperature Probe" +msgstr "Температурный датчик" + +#: hardinfo/dmi_util.c:54 +msgid "Electrical Current Probe" +msgstr "" + +#: hardinfo/dmi_util.c:55 +msgid "Out-of-band Remote Access" +msgstr "" + +#: hardinfo/dmi_util.c:56 +msgid "Boot Integrity Services" +msgstr "" + +#: hardinfo/dmi_util.c:57 +msgid "System Boot" +msgstr "" + +#: hardinfo/dmi_util.c:58 +msgid "64-bit Memory Error" +msgstr "" + +#: hardinfo/dmi_util.c:59 +msgid "Management Device" +msgstr "Устройство управления" + +#: hardinfo/dmi_util.c:60 +msgid "Management Device Component" +msgstr "" + +#: hardinfo/dmi_util.c:61 +msgid "Management Device Threshold Data" +msgstr "" + +#: hardinfo/dmi_util.c:62 +msgid "Memory Channel" +msgstr "Канал памяти" + +#: hardinfo/dmi_util.c:63 +msgid "IPMI Device" +msgstr "" + +#: hardinfo/dmi_util.c:64 +msgid "Power Supply" +msgstr "Источник питания" + +#: hardinfo/dmi_util.c:65 +msgid "Additional Information" +msgstr "Дополнительная информация" + +#: hardinfo/dmi_util.c:66 +msgid "Onboard Device" msgstr "" -#: hardinfo/dmi_util.c:114 +#: hardinfo/dmi_util.c:226 msgid "Invalid chassis type (0)" msgstr "" -#: hardinfo/dmi_util.c:115 hardinfo/dmi_util.c:116 +#: hardinfo/dmi_util.c:227 hardinfo/dmi_util.c:228 msgid "Unknown chassis type" msgstr "" -#: hardinfo/dmi_util.c:117 +#: hardinfo/dmi_util.c:229 msgid "Desktop" msgstr "Настольный компьютер" -#: hardinfo/dmi_util.c:118 +#: hardinfo/dmi_util.c:230 msgid "Low-profile Desktop" msgstr "Низкопрофильный компьютер" -#: hardinfo/dmi_util.c:119 +#: hardinfo/dmi_util.c:231 msgid "Pizza Box" msgstr "" -#: hardinfo/dmi_util.c:120 +#: hardinfo/dmi_util.c:232 msgid "Mini Tower" -msgstr "" +msgstr "Размер Mini Tower" -#: hardinfo/dmi_util.c:121 +#: hardinfo/dmi_util.c:233 msgid "Tower" -msgstr "" +msgstr "Размер Tower" -#: hardinfo/dmi_util.c:122 +#: hardinfo/dmi_util.c:234 msgid "Portable" msgstr "Портативный компьютер" -#: hardinfo/dmi_util.c:123 modules/computer.c:326 modules/computer.c:335 -#: modules/computer.c:357 +#: hardinfo/dmi_util.c:235 modules/computer.c:410 modules/computer.c:419 +#: modules/computer.c:441 msgid "Laptop" -msgstr "" +msgstr "Лэптоп" -#: hardinfo/dmi_util.c:124 +#: hardinfo/dmi_util.c:236 msgid "Notebook" -msgstr "" +msgstr "Ноутбук" -#: hardinfo/dmi_util.c:125 +#: hardinfo/dmi_util.c:237 msgid "Handheld" msgstr "" -#: hardinfo/dmi_util.c:126 +#: hardinfo/dmi_util.c:238 msgid "Docking Station" -msgstr "" +msgstr "Док-станция" -#: hardinfo/dmi_util.c:127 +#: hardinfo/dmi_util.c:239 msgid "All-in-one" -msgstr "" +msgstr "Всё в одном" -#: hardinfo/dmi_util.c:128 +#: hardinfo/dmi_util.c:240 msgid "Subnotebook" msgstr "" -#: hardinfo/dmi_util.c:129 +#: hardinfo/dmi_util.c:241 msgid "Space-saving" msgstr "" -#: hardinfo/dmi_util.c:130 +#: hardinfo/dmi_util.c:242 msgid "Lunch Box" msgstr "" -#: hardinfo/dmi_util.c:131 +#: hardinfo/dmi_util.c:243 msgid "Main Server Chassis" msgstr "" -#: hardinfo/dmi_util.c:132 +#: hardinfo/dmi_util.c:244 msgid "Expansion Chassis" msgstr "" -#: hardinfo/dmi_util.c:133 +#: hardinfo/dmi_util.c:245 msgid "Sub Chassis" msgstr "" -#: hardinfo/dmi_util.c:134 +#: hardinfo/dmi_util.c:246 msgid "Bus Expansion Chassis" msgstr "" -#: hardinfo/dmi_util.c:135 +#: hardinfo/dmi_util.c:247 msgid "Peripheral Chassis" msgstr "" -#: hardinfo/dmi_util.c:136 +#: hardinfo/dmi_util.c:248 msgid "RAID Chassis" msgstr "" -#: hardinfo/dmi_util.c:137 +#: hardinfo/dmi_util.c:249 msgid "Rack Mount Chassis" msgstr "" -#: hardinfo/dmi_util.c:138 +#: hardinfo/dmi_util.c:250 msgid "Sealed-case PC" msgstr "" -#: hardinfo/dt_util.c:1013 +#: hardinfo/dmi_util.c:251 +msgid "Multi-system" +msgstr "" + +#: hardinfo/dmi_util.c:252 +msgid "CompactPCI" +msgstr "" + +#: hardinfo/dmi_util.c:253 +msgid "AdvancedTCA" +msgstr "" + +#: hardinfo/dmi_util.c:254 +msgid "Blade" +msgstr "" + +#: hardinfo/dmi_util.c:255 +msgid "Blade Enclosing" +msgstr "" + +#: hardinfo/dmi_util.c:256 +msgid "Tablet" +msgstr "" + +#: hardinfo/dmi_util.c:257 +msgid "Convertible" +msgstr "" + +#: hardinfo/dmi_util.c:258 +msgid "Detachable" +msgstr "" + +#: hardinfo/dmi_util.c:259 +msgid "IoT Gateway" +msgstr "" + +#: hardinfo/dmi_util.c:260 +msgid "Embedded PC" +msgstr "" + +#: hardinfo/dmi_util.c:261 +msgid "Mini PC" +msgstr "Мини ПК" + +#: hardinfo/dmi_util.c:262 +msgid "Stick PC" +msgstr "" + +#: hardinfo/dt_util.c:1179 msgid "phandle Map" msgstr "" -#: hardinfo/dt_util.c:1014 +#: hardinfo/dt_util.c:1180 msgid "Alias Map" msgstr "" -#: hardinfo/dt_util.c:1015 +#: hardinfo/dt_util.c:1181 msgid "Symbol Map" msgstr "" #. / %d will be latest year of copyright -#: hardinfo/hardinfo.c:49 +#: hardinfo/hardinfo.c:50 #, c-format msgid "" -"Copyright (C) 2003-%d Leandro A. F. Pereira. See COPYING for details.\n" +"Copyright (C) 2003-%d L. A. F. Pereira. See COPYING for details.\n" "\n" msgstr "" -"Copyright (C) 2003-%d Leandro A. F. Pereira. Смотрите файл COPYING для более " +"Copyright (C) 2003-%d L. A. F. Pereira. Смотрите файл COPYING для более " "подробной информации.\n" "\n" -#: hardinfo/hardinfo.c:51 +#: hardinfo/hardinfo.c:52 #, c-format msgid "" "Compile-time options:\n" @@ -220,24 +454,26 @@ msgid "" " Compiled for: %s\n" msgstr "" "Настройки компиляции:\n" -" Release version: %s (%s)\n" +" Версия выпуска: %s (%s)\n" " BinReloc включен: %s\n" " Префикс данных: %s\n" " Префикс библиотеки: %s\n" " Скомпилировано на: %s\n" -#: hardinfo/hardinfo.c:57 hardinfo/hardinfo.c:58 modules/computer.c:595 -#: modules/devices/inputdevices.c:128 modules/devices/pci.c:112 -#: modules/devices/printers.c:138 +#: hardinfo/hardinfo.c:58 hardinfo/hardinfo.c:59 modules/computer.c:813 +#: modules/computer/modules.c:206 modules/computer/modules.c:207 +#: modules/devices/inputdevices.c:152 modules/devices/printers.c:138 +#: modules/devices/spd-decode.c:973 msgid "Yes" msgstr "Да" -#: hardinfo/hardinfo.c:58 modules/computer.c:595 modules/devices/pci.c:112 -#: modules/devices/printers.c:138 +#: hardinfo/hardinfo.c:59 modules/computer.c:813 modules/computer/modules.c:206 +#: modules/computer/modules.c:207 modules/devices/printers.c:138 +#: modules/devices/spd-decode.c:970 msgid "No" msgstr "Нет" -#: hardinfo/hardinfo.c:69 +#: hardinfo/hardinfo.c:70 #, c-format msgid "" "Failed to find runtime data.\n" @@ -250,7 +486,7 @@ msgstr "" "• Правильно ли установлен HardInfo?\n" "• Проверьте, существуют ли %s и %s и есть ли у вас право на чтение." -#: hardinfo/hardinfo.c:76 +#: hardinfo/hardinfo.c:77 #, c-format msgid "" "Modules:\n" @@ -259,35 +495,44 @@ msgstr "" "Модули:\n" "%-20s %-15s %-12s\n" -#: hardinfo/hardinfo.c:77 +#: hardinfo/hardinfo.c:78 msgid "File Name" msgstr "Имя файла" -#: hardinfo/hardinfo.c:77 modules/computer.c:524 modules/computer.c:552 -#: modules/computer.c:620 modules/computer/languages.c:104 -#: modules/computer/modules.c:146 modules/devices/arm/processor.c:354 -#: modules/devices/dmi.c:37 modules/devices/dmi.c:46 -#: modules/devices/ia64/processor.c:160 modules/devices/inputdevices.c:116 -#: modules/devices/pci.c:215 modules/devices/sh/processor.c:84 -#: modules/devices/x86/processor.c:455 modules/network.c:326 +#: hardinfo/hardinfo.c:78 modules/computer.c:694 modules/computer.c:722 +#: modules/computer.c:843 modules/computer/languages.c:95 +#: modules/computer/modules.c:224 modules/devices/arm/processor.c:469 +#: modules/devices/dmi.c:38 modules/devices/dmi.c:49 +#: modules/devices/e2k/processor.c:330 modules/devices/gpu.c:251 +#: modules/devices/ia64/processor.c:160 modules/devices/inputdevices.c:140 +#: modules/devices/monitors.c:401 modules/devices/monitors.c:503 +#: modules/devices/sh/processor.c:84 modules/devices/x86/processor.c:751 +#: modules/network.c:332 msgid "Name" msgstr "Название" -#: hardinfo/hardinfo.c:77 modules/computer.c:300 modules/computer.c:495 -#: modules/computer.c:497 modules/computer.c:584 modules/computer.c:593 -#: modules/devices/dmi.c:40 modules/devices/dmi.c:44 modules/devices/dmi.c:48 -#: modules/devices/dmi.c:54 modules/devices/inputdevices.c:121 +#: hardinfo/hardinfo.c:78 modules/computer.c:365 modules/computer.c:598 +#: modules/computer.c:600 modules/computer.c:771 modules/computer/modules.c:226 +#: modules/devices/dmi.c:41 modules/devices/dmi.c:47 modules/devices/dmi.c:51 +#: modules/devices/dmi.c:57 modules/devices/firmware.c:75 +#: modules/devices/inputdevices.c:145 modules/devices/monitors.c:407 msgid "Version" msgstr "Версия" -#: hardinfo/hardinfo.c:124 +#: hardinfo/hardinfo.c:129 #, c-format -msgid "Unknown benchmark ``%s'' or libbenchmark.so not loaded" -msgstr "Тест ``%s'' неизвестен или библиотека libbenchmark.so не загружена" +msgid "Unknown benchmark ``%s'' or benchmark.so not loaded" +msgstr "Неизвестный бенчмарк или benchmark.so не загрузился" -#: hardinfo/hardinfo.c:152 +#: hardinfo/hardinfo.c:159 msgid "Don't know what to do. Exiting." -msgstr "Неизвестно, что делать. Выход." +msgstr "Не знаю, что делать. Выход." + +#: hardinfo/usb_util.c:291 modules/devices/devicetree.c:91 +#: modules/devices/devicetree.c:92 modules/devices/monitors.c:409 +#: modules/devices/storage.c:306 modules/devices/storage.c:328 +msgid "(None)" +msgstr "(Нет)" #: hardinfo/util.c:104 modules/computer/uptime.c:54 #, c-format @@ -363,43 +608,69 @@ msgstr "Предупреждение" msgid "Fatal Error" msgstr "Фатальная ошибка" -#: hardinfo/util.c:401 +#: hardinfo/util.c:407 +msgid "do not print status messages to standard output" +msgstr "не выводить сообщения о состоянии на стандартный вывод" + +#: hardinfo/util.c:413 msgid "creates a report and prints to standard output" msgstr "создаёт отчёт и выводит на стандартный вывод" -#: hardinfo/util.c:407 -msgid "chooses a report format (text, html)" -msgstr "выбирает формат отчёта (text, html)" +#: hardinfo/util.c:419 +msgid "chooses a report format ([text], html)" +msgstr "выберите формат отчета ([text], HTML)" -#: hardinfo/util.c:413 +#: hardinfo/util.c:425 msgid "run benchmark; requires benchmark.so to be loaded" msgstr "запуск теста; требует, чтобы benchmark.so был загружен" -#: hardinfo/util.c:419 +#: hardinfo/util.c:431 +msgid "note attached to benchmark results" +msgstr "" + +#: hardinfo/util.c:437 +msgid "benchmark result format ([short], conf, shell)" +msgstr "формат результата теста ([short], conf, shell)" + +#: hardinfo/util.c:443 +msgid "" +"maximum number of benchmark results to include (-1 for no limit, default is " +"10)" +msgstr "" + +#: hardinfo/util.c:449 msgid "lists modules" msgstr "список модулей" -#: hardinfo/util.c:425 +#: hardinfo/util.c:455 msgid "specify module to load" msgstr "укажите модуль для загрузки" -#: hardinfo/util.c:431 +#: hardinfo/util.c:461 msgid "automatically load module dependencies" msgstr "автоматически загружает зависимости модулей" -#: hardinfo/util.c:438 +#: hardinfo/util.c:468 msgid "run in XML-RPC server mode" msgstr "запуск в режиме сервера XML-RPC" -#: hardinfo/util.c:445 +#: hardinfo/util.c:475 msgid "shows program version and quit" msgstr "показывает версию программы и выходит" -#: hardinfo/util.c:450 +#: hardinfo/util.c:481 +msgid "do not run benchmarks" +msgstr "не запускать тесты" + +#: hardinfo/util.c:487 +msgid "show all details" +msgstr "показать все подробности" + +#: hardinfo/util.c:492 msgid "- System Profiler and Benchmark tool" msgstr "- Инструмент для тестирования и проверки свойств системы" -#: hardinfo/util.c:460 +#: hardinfo/util.c:502 #, c-format msgid "" "Unrecognized arguments.\n" @@ -408,29 +679,24 @@ msgstr "" "Неизвестные аргументы.\n" "Используйте `%s --help' для справки.\n" -#: hardinfo/util.c:526 -#, c-format -msgid "Couldn't find a Web browser to open URL %s." -msgstr "Не удаётся найти веб-браузер для открытия URL %s." - -#: hardinfo/util.c:875 +#: hardinfo/util.c:914 #, c-format msgid "Module \"%s\" depends on module \"%s\", load it?" msgstr "Модуль \"%s\" зависит от модуля \"%s\", загрузить его?" -#: hardinfo/util.c:898 +#: hardinfo/util.c:937 #, c-format msgid "Module \"%s\" depends on module \"%s\"." msgstr "Модуль \"%s\" зависит от модуля \"%s\"." -#: hardinfo/util.c:943 +#: hardinfo/util.c:982 #, c-format msgid "No module could be loaded. Check permissions on \"%s\" and try again." msgstr "" "Модули не могут быть загружены. Проверьте разрешения на \"%s\" и попробуйте " "снова." -#: hardinfo/util.c:947 +#: hardinfo/util.c:986 msgid "" "No module could be loaded. Please use hardinfo -l to list all available " "modules and try again with a valid module list." @@ -439,16 +705,31 @@ msgstr "" "получения списка доступных модулей и попробуйте снова с правильным списком " "модулей." -#: hardinfo/util.c:1024 +#: hardinfo/util.c:1041 #, c-format msgid "Scanning: %s..." msgstr "Сканирование: %s..." -#: hardinfo/util.c:1034 shell/shell.c:301 shell/shell.c:772 shell/shell.c:1850 -#: modules/benchmark.c:505 modules/benchmark.c:513 +#: hardinfo/util.c:1051 shell/shell.c:311 shell/shell.c:804 shell/shell.c:2039 +#: modules/benchmark.c:715 modules/benchmark.c:723 msgid "Done." msgstr "Выполнено." +#: hardinfo/vendor.c:255 +msgid "Update vendor list" +msgstr "Обновить список поставщиков" + +#: hardinfo/vendor.c:438 modules/computer.c:599 modules/computer.c:793 +#: modules/computer/os.c:79 modules/computer/os.c:263 modules/computer/os.c:300 +#: modules/computer/os.c:505 modules/computer/os.c:576 modules/devices.c:405 +#: modules/devices.c:551 modules/devices/firmware.c:149 +#: modules/devices/printers.c:99 modules/devices/printers.c:106 +#: modules/devices/printers.c:116 modules/devices/printers.c:131 +#: modules/devices/printers.c:140 modules/devices/printers.c:244 +#: modules/devices/spd-decode.c:312 modules/devices/usb.c:149 +msgid "Unknown" +msgstr "Неизвестно" + #: shell/callbacks.c:128 #, c-format msgid "" @@ -471,63 +752,67 @@ msgstr "Автор:" msgid "Contributors:" msgstr "Участники:" -#: shell/callbacks.c:166 +#: shell/callbacks.c:167 msgid "Based on work by:" msgstr "Основан на работах:" -#: shell/callbacks.c:167 +#: shell/callbacks.c:168 msgid "MD5 implementation by Colin Plumb (see md5.c for details)" msgstr "Реализация MD5 от Colin Plumb (см. подробности в md5.c)" -#: shell/callbacks.c:168 +#: shell/callbacks.c:169 msgid "SHA1 implementation by Steve Reid (see sha1.c for details)" msgstr "Реализация SHA1 от Steve Reid (см. подробности в sha1.c) " -#: shell/callbacks.c:169 +#: shell/callbacks.c:170 msgid "Blowfish implementation by Paul Kocher (see blowfich.c for details)" msgstr "Реализация Blowfish от Paul Kocher (см. подробности в blowfich.c)" -#: shell/callbacks.c:170 +#: shell/callbacks.c:171 msgid "Raytracing benchmark by John Walker (see fbench.c for details)" msgstr "Тест Raytracing от John Walker (см. подробности в fbench.c)" -#: shell/callbacks.c:171 +#: shell/callbacks.c:172 msgid "FFT benchmark by Scott Robert Ladd (see fftbench.c for details)" msgstr "Тест FFT Скотта от Robert Ladd (см. подробности в fbench.c)" -#: shell/callbacks.c:172 +#: shell/callbacks.c:173 msgid "Some code partly based on x86cpucaps by Osamu Kayasono" msgstr "Часть кода основана на x86cpucaps от Osamu Kayasono" -#: shell/callbacks.c:173 +#: shell/callbacks.c:174 msgid "Vendor list based on GtkSysInfo by Pissens Sebastien" msgstr "Список поставщиков основан на GtkSysInfo от Pissens Sebastien" -#: shell/callbacks.c:174 +#: shell/callbacks.c:175 msgid "DMI support based on code by Stewart Adam" msgstr "Поддержка DMI основана на коде от Stewart Adam" -#: shell/callbacks.c:175 +#: shell/callbacks.c:176 msgid "SCSI support based on code by Pascal F. Martin" msgstr "Поддержка SCSI основана на коде от Pascal F. Martin" -#: shell/callbacks.c:180 +#: shell/callbacks.c:181 msgid "Tango Project" msgstr "Проект Tango" -#: shell/callbacks.c:181 +#: shell/callbacks.c:182 msgid "The GNOME Project" msgstr "Проект GNOME" -#: shell/callbacks.c:182 +#: shell/callbacks.c:183 msgid "VMWare, Inc. (USB icon from VMWare Workstation 6)" msgstr "VMWare, Inc. (значок USB из VMWare Workstation 6)" -#: shell/callbacks.c:200 +#: shell/callbacks.c:184 +msgid "epicbard (Fan icon, CC BY-SA 3.0)" +msgstr "epicbard (Фан-значок, CC BY-SA 3.0)" + +#: shell/callbacks.c:202 msgid "System information and benchmark tool" msgstr "Информация о системе и тестирование" -#: shell/callbacks.c:205 +#: shell/callbacks.c:207 msgid "" "HardInfo is free software; you can redistribute it and/or modify it under " "the terms of the GNU General Public License as published by the Free " @@ -535,7 +820,7 @@ msgid "" "\n" "This program is distributed in the hope that it will be useful, but WITHOUT " "ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or " -"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for " +"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for " "more details.\n" "\n" "You should have received a copy of the GNU General Public License along with " @@ -543,142 +828,151 @@ msgid "" "Franklin St, Fifth Floor, Boston, MA 02110-1301 USA" msgstr "" "HardInfo — это свободное программное обеспечение; вы можете распространять " -"его и/или изменять под условиями Общей общественной лицензии GNU, которая " +"его и/или изменять под условиями Универсальной общественной лицензии GNU, которая " "была опубликована Фондом свободного программного обеспечения, версия 2.\n" "\n" "Эта программа распространятся в надежде, что она будет полезной, но БЕЗ " "КАКОЙ-ЛИБО ГАРАНТИИ; даже без предполагаемой гарантии ПРИГОДНОСТИ ДЛЯ " -"КОНКРЕТНЫХ ЦЕЛЕЙ. См. подробности в Общественной лицензии GNU.\n" +"КОНКРЕТНЫХ ЦЕЛЕЙ. См. подробности в Универсальной общественной лицензии GNU.\n" "\n" "Вы должны были получить копию Общественной лицензии GNU вместе с этой " "программой; если нет, пишите в Фонд свободного программного обеспечения, " "Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA" -#: shell/callbacks.c:220 +#: shell/callbacks.c:222 msgid "translator-credits" msgstr "" -#: shell/menu.c:35 +#: shell/menu.c:43 msgid "_Information" msgstr "_Информация" -#: shell/menu.c:36 +#: shell/menu.c:44 msgid "_Remote" msgstr "_Удалённо" -#: shell/menu.c:37 +#: shell/menu.c:45 msgid "_View" msgstr "_Вид" -#: shell/menu.c:38 +#: shell/menu.c:46 msgid "_Help" msgstr "_Справка" -#: shell/menu.c:39 +#: shell/menu.c:47 msgid "About _Modules" msgstr "О _модулях" -#: shell/menu.c:43 +#: shell/menu.c:51 msgid "Generate _Report" msgstr "Создать _отчёт" -#: shell/menu.c:48 -msgid "_Network Updater..." -msgstr "_Обновление через сеть..." +#: shell/menu.c:52 +msgid "Generates a report with detailed system information" +msgstr "Создать отчет с подробной информацией о системе" -#: shell/menu.c:53 +#: shell/menu.c:56 shell/syncmanager.c:516 +msgid "Synchronize" +msgstr "Синхронизировать" + +#: shell/menu.c:57 +msgid "Send benchmark results and receive updated data from the network" +msgstr "" +"Отправить результаты тестирования и получить обновленные данные из сети" + +#: shell/menu.c:61 msgid "_Open..." msgstr "_Открыть..." -#: shell/menu.c:58 +#: shell/menu.c:66 msgid "_Copy to Clipboard" msgstr "_Копировать в буфер" -#: shell/menu.c:59 +#: shell/menu.c:67 msgid "Copy to clipboard" msgstr "Копировать в буфер обмена" -#: shell/menu.c:63 +#: shell/menu.c:71 msgid "_Refresh" msgstr "_Обновить" -#: shell/menu.c:68 +#: shell/menu.c:76 msgid "_Open HardInfo Web Site" msgstr "_Открыть веб-сайт Hardinfo" -#: shell/menu.c:73 +#: shell/menu.c:81 msgid "_Report bug" msgstr "_Сообщить об ошибке" -#: shell/menu.c:78 +#: shell/menu.c:86 msgid "_About HardInfo" msgstr "_О HardInfo" -#: shell/menu.c:79 +#: shell/menu.c:87 msgid "Displays program version information" msgstr "Показывает информацию о версии программы" -#: shell/menu.c:83 +#: shell/menu.c:91 msgid "_Quit" msgstr "_Выход" -#: shell/menu.c:90 +#: shell/menu.c:98 msgid "_Side Pane" msgstr "_Боковая панель" -#: shell/menu.c:91 +#: shell/menu.c:99 msgid "Toggles side pane visibility" -msgstr "Управляет боковой панелью" +msgstr "Видимость боковой панели" -#: shell/menu.c:94 +#: shell/menu.c:102 msgid "_Toolbar" msgstr "_Панель инструментов" -#: shell/report.c:494 shell/report.c:502 +#: shell/report.c:769 shell/report.c:777 msgid "Save File" msgstr "Сохранить файл" -#: shell/report.c:497 shell/report.c:929 shell/syncmanager.c:748 +#: shell/report.c:772 shell/report.c:1251 shell/syncmanager.c:604 msgid "_Cancel" msgstr "_Отмена" -#: shell/report.c:499 +#: shell/report.c:774 msgid "_Save" msgstr "_Сохранить" -#: shell/report.c:629 +#: shell/report.c:949 msgid "Cannot create ReportContext. Programming bug?" msgstr "Не могу создать ReportContext. Ошибка программирования?" -#: shell/report.c:648 +#: shell/report.c:969 msgid "Open the report with your web browser?" msgstr "Открыть отчёт в веб-браузере?" -#: shell/report.c:651 +#: shell/report.c:972 msgid "_No" msgstr "_Нет" -#: shell/report.c:652 +#: shell/report.c:973 msgid "_Open" msgstr "_Открыть" -#: shell/report.c:682 +#: shell/report.c:1004 msgid "Generating report..." msgstr "Создаётся отчёт..." -#: shell/report.c:692 +#: shell/report.c:1014 msgid "Report saved." msgstr "Отчёт сохранён." -#: shell/report.c:694 +#: shell/report.c:1016 msgid "Error while creating the report." msgstr "Ошибка во время создания отчёта." -#: shell/report.c:796 +#: shell/report.c:1118 msgid "Generate Report" msgstr "Создать отчёт" -#: shell/report.c:821 +#: shell/report.c:1143 msgid "" "Generate Report\n" "Please choose the information that you wish to view in your report:" @@ -686,51 +980,63 @@ msgstr "" "Создать отчёт\n" "Пожалуйста, выберите информацию для отображения в отчёте:" -#: shell/report.c:893 +#: shell/report.c:1215 msgid "Select _None" msgstr "Выбор: нет" -#: shell/report.c:904 +#: shell/report.c:1226 msgid "Select _All" msgstr "Выбор: все" -#: shell/report.c:939 +#: shell/report.c:1261 msgid "_Generate" msgstr "_Сгенерировать" -#: shell/shell.c:402 +#: shell/shell.c:408 #, c-format msgid "%s - System Information" msgstr "%s - Информация о системе" -#: shell/shell.c:407 +#: shell/shell.c:413 msgid "System Information" msgstr "Информация о системе" -#: shell/shell.c:759 +#: shell/shell.c:791 msgid "Loading modules..." msgstr "Загрузка модулей..." -#: shell/shell.c:1715 +#: shell/shell.c:1557 +msgid "URL" +msgstr "Сайт" + +#: shell/shell.c:1564 +msgid "Support URL" +msgstr "Сайт поддержки" + +#: shell/shell.c:1575 +msgid "Wikipedia" +msgstr "Википедия" + +#: shell/shell.c:1905 #, c-format msgid "%s → Summary" -msgstr "%s → " +msgstr "%s → Сводка" -#: shell/shell.c:1824 +#: shell/shell.c:2013 msgid "Updating..." msgstr "Обновление..." -#: shell/syncmanager.c:69 +#: shell/syncmanager.c:67 msgid "" "Synchronize with Central Database\n" -"The following information may be synchronized with the HardInfo central " -"database." +"The following information may be synchronized\n" +"with the HardInfo central database." msgstr "" "Синхронизировать с центральной базой данных\n" -"Следующая информация может быть синхронизирована с центральной базой данных " -"HardInfo." +"Следующая информация может быть синхронизирована\n" +"с центральной базой данных HardInfo." -#: shell/syncmanager.c:72 +#: shell/syncmanager.c:71 msgid "" "Synchronizing\n" "This may take some time." @@ -738,48 +1044,22 @@ msgstr "" "Синхронизация\n" "Это может занять какое-то время." -#: shell/syncmanager.c:132 +#: shell/syncmanager.c:129 msgid "" "HardInfo was compiled without libsoup support. (Network Updater requires it.)" msgstr "" "HardInfo был скомпилирован без поддержки библиотеки libsoup. (Нужна для " "сетевого обновления.)" -#: shell/syncmanager.c:161 shell/syncmanager.c:189 -#, c-format -msgid "%s (error #%d)" -msgstr "%s (ошибка #%d)" - -#: shell/syncmanager.c:170 shell/syncmanager.c:198 -msgid "Could not parse XML-RPC response" -msgstr "Не могу разобрать ответ XML-RPC" - -#: shell/syncmanager.c:280 -#, c-format -msgid "" -"Server says it supports API version %d, but this version of HardInfo only " -"supports API version %d." -msgstr "" -"Сервер говорит, что поддерживает API версии %d, но эта версия HardInfo " -"поддерживает API только версии %d." - -#: shell/syncmanager.c:375 -msgid "Contacting HardInfo Central Database" -msgstr "Подключение к центральной базе данных Hardinfo" - -#: shell/syncmanager.c:376 -msgid "Cleaning up" -msgstr "Очистка" - -#: shell/syncmanager.c:493 +#: shell/syncmanager.c:354 msgid "(canceled)" msgstr "(отменен)" -#: shell/syncmanager.c:510 +#: shell/syncmanager.c:370 msgid "(failed)" msgstr "(ошибка)" -#: shell/syncmanager.c:521 +#: shell/syncmanager.c:380 #, c-format msgid "" "Failed while performing \"%s\". Please file a bug report if this problem " @@ -792,7 +1072,7 @@ msgstr "" "\n" "Подробности: %s" -#: shell/syncmanager.c:530 +#: shell/syncmanager.c:390 #, c-format msgid "" "Failed while performing \"%s\". Please file a bug report if this problem " @@ -801,218 +1081,383 @@ msgstr "" "Ошибка во время выполнения \"%s\". Если проблема будет повторяться, " "пожалуйста, сообщите об ошибке. (Используйте опцию в меню Справка.)" -#: shell/syncmanager.c:658 -msgid "Network Updater" -msgstr "Сетевое обновление" +#: shell/syncmanager.c:591 +msgid "Privacy Policy" +msgstr "Политика конфиденциальности" -#: shell/syncmanager.c:757 +#: shell/syncmanager.c:613 msgid "_Synchronize" msgstr "_Синхронизировать" -#. /or modify -#. * it under the terms of the GNU General Public License as published by -#. * the Free Software Foundation, version 2. -#. * -#. * This program is distributed in the hope that it will be useful, -#. * but WITHOUT ANY WARRANTY; without even the implied warranty of -#. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -#. * GNU General Public License for more details. -#. * -#. * You should have received a copy of the GNU General Public License -#. * along with this program; if not, write to the Free Software -#. * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -#. -#. / Used for an unknown value. Having it in only one place cleans up the .po line references -#: modules/benchmark/bench_results.c:22 modules/computer/display.c:54 -#: modules/computer/display.c:56 modules/computer/display.c:58 -#: modules/computer/display.c:61 modules/computer/os.c:279 -#: modules/devices.c:387 modules/devices/usb.c:48 modules/devices/usb.c:307 -#: modules/devices/usb.c:310 modules/network/net.c:437 includes/cpu_util.h:11 -msgid "(Unknown)" -msgstr "(Неизвестно)" - -#: modules/benchmark/bench_results.c:47 modules/benchmark/bench_results.c:298 -#: modules/devices/alpha/processor.c:90 modules/devices/arm/processor.c:240 -#: modules/devices/arm/processor.c:383 modules/devices.c:299 -#: modules/devices.c:307 modules/devices.c:335 -#: modules/devices/ia64/processor.c:167 modules/devices/ia64/processor.c:196 -#: modules/devices/m68k/processor.c:87 modules/devices/mips/processor.c:77 -#: modules/devices/parisc/processor.c:158 -#: modules/devices/parisc/processor.c:191 modules/devices/pci.c:108 -#: modules/devices/ppc/processor.c:160 modules/devices/ppc/processor.c:187 -#: modules/devices/riscv/processor.c:186 modules/devices/riscv/processor.c:214 -#: modules/devices/s390/processor.c:160 modules/devices/sh/processor.c:87 -#: modules/devices/sh/processor.c:88 modules/devices/sh/processor.c:89 -#: modules/devices/x86/processor.c:420 modules/devices/x86/processor.c:479 -msgid "MHz" -msgstr "МГц" - -#: modules/benchmark/bench_results.c:347 modules/benchmark/bench_results.c:408 -msgid "kiB" -msgstr "КиБ" - -#: modules/benchmark/bench_results.c:361 modules/benchmark/bench_results.c:395 -msgid "Benchmark Result" -msgstr "Результат теста" - -#: modules/benchmark/bench_results.c:362 modules/benchmark/bench_results.c:398 -msgid "Threads" -msgstr "Потоки" - -#: modules/benchmark/bench_results.c:363 modules/benchmark/bench_results.c:399 -msgid "Note" -msgstr "Примечание" - -#: modules/benchmark/bench_results.c:364 modules/benchmark/bench_results.c:400 -msgid "" -"This result is from an old version of HardInfo. Results might not be " -"comparable to current version. Some details are missing." -msgstr "" -"Данный результат получен с использованием старой версии HardInfo.Он может " -"быть несопоставим с результатом текущей версии, поскольку отсутствуют " -"некоторые подробности." - -#: modules/benchmark/bench_results.c:365 modules/benchmark/bench_results.c:401 -#: modules/devices/devicetree/pmac_data.c:81 modules/devices/sh/processor.c:85 -msgid "Machine" -msgstr "Машина" - -#: modules/benchmark/bench_results.c:366 modules/benchmark/bench_results.c:402 -#: modules/devices/devicetree.c:206 modules/devices/dmi.c:45 -msgid "Board" -msgstr "Плата" - -#: modules/benchmark/bench_results.c:367 modules/benchmark/bench_results.c:403 -msgid "CPU Name" -msgstr "Название процессора" - -#: modules/benchmark/bench_results.c:368 modules/benchmark/bench_results.c:404 -msgid "CPU Description" -msgstr "Описание процессора" - -#: modules/benchmark/bench_results.c:369 modules/benchmark/bench_results.c:405 -#: modules/benchmark.c:288 -msgid "CPU Config" -msgstr "Конфигурация процессора" - -#: modules/benchmark/bench_results.c:370 modules/benchmark/bench_results.c:406 -msgid "Threads Available" -msgstr "Доступно потоков" +#: modules/benchmark/benches.c:83 +msgid "CPU Blowfish (Single-thread)" +msgstr "CPU Blowfish (однопоточный)" -#: modules/benchmark/bench_results.c:371 modules/benchmark/bench_results.c:407 -#: modules/computer.c:475 -msgid "OpenGL Renderer" -msgstr "Рендер OpenGL" +#: modules/benchmark/benches.c:91 +msgid "CPU Blowfish (Multi-thread)" +msgstr "CPU Blowfish (многопоточный)" -#: modules/benchmark/bench_results.c:372 modules/benchmark/bench_results.c:408 -#: modules/computer.c:108 modules/computer.c:464 modules/devices.c:96 -#: modules/devices/pci.c:149 -msgid "Memory" -msgstr "Память" +#: modules/benchmark/benches.c:99 +msgid "CPU Blowfish (Multi-core)" +msgstr "CPU Blowfish (многоядерный)" -#: modules/benchmark/bench_results.c:396 -msgid "Benchmark" +#: modules/benchmark/benches.c:107 +msgid "CPU Zlib" msgstr "" -#: modules/benchmark/bench_results.c:397 -msgid "Result" +#: modules/benchmark/benches.c:115 +msgid "CPU CryptoHash" msgstr "" -#: modules/benchmark/bench_results.c:409 -msgid "Handles" +#: modules/benchmark/benches.c:123 +msgid "CPU Fibonacci" msgstr "" -#: modules/benchmark/bench_results.c:410 -msgid "mid" +#: modules/benchmark/benches.c:131 +msgid "CPU N-Queens" msgstr "" -#: modules/benchmark/bench_results.c:411 -msgid "cfg_val" +#: modules/benchmark/benches.c:139 +msgid "FPU FFT" msgstr "" -#: modules/benchmark.c:54 -msgid "CPU Blowfish" +#: modules/benchmark/benches.c:147 +msgid "FPU Raytracing" msgstr "" -#: modules/benchmark.c:55 -msgid "CPU CryptoHash" -msgstr "" +#: modules/benchmark/benches.c:155 +msgid "SysBench CPU (Single-thread)" +msgstr "SysBench CPU (однопоточный)" -#: modules/benchmark.c:56 -msgid "CPU Fibonacci" -msgstr "" +#: modules/benchmark/benches.c:163 +msgid "SysBench CPU (Multi-thread)" +msgstr "SysBench CPU (многопоточный)" -#: modules/benchmark.c:57 -msgid "CPU N-Queens" +#: modules/benchmark/benches.c:171 +msgid "SysBench CPU (Four threads)" msgstr "" -#: modules/benchmark.c:58 -msgid "CPU Zlib" -msgstr "" +#: modules/benchmark/benches.c:179 +msgid "SysBench Memory (Single-thread)" +msgstr "SysBench Memory (однопоточный)" -#: modules/benchmark.c:59 -msgid "FPU FFT" +#: modules/benchmark/benches.c:187 +msgid "SysBench Memory (Two threads)" msgstr "" -#: modules/benchmark.c:60 -msgid "FPU Raytracing" +#: modules/benchmark/benches.c:195 +msgid "SysBench Memory" msgstr "" -#: modules/benchmark.c:62 +#: modules/benchmark/benches.c:204 msgid "GPU Drawing" msgstr "" -#: modules/benchmark.c:288 -msgid "Results" -msgstr "Результаты" - -#: modules/benchmark.c:288 modules/computer.c:749 -#: modules/devices/sparc/processor.c:75 -msgid "CPU" -msgstr "Процессор" - -#: modules/benchmark.c:415 -#, c-format -msgid "Benchmarking: %s." -msgstr "Тестирование: %s" - -#: modules/benchmark.c:434 modules/benchmark.c:454 -msgid "Cancel" -msgstr "Отмена" +#: modules/benchmark/benches.c:221 +msgid "" +"Alexey Kopytov's sysbench is required.\n" +"Results in events/second. Higher is better." +msgstr "" +"Требуется sysbench от Алексея Копытова.\n" +"Результаты в событиях в секунду. Чем выше, тем лучше." -#: modules/benchmark.c:438 modules/benchmark.c:450 -msgid "Benchmarking. Please do not move your mouse or press any keys." -msgstr "Тестирование. Пожалуйста, не двигайте мышь и не нажимайте на кнопки." +#: modules/benchmark/benches.c:227 +msgid "" +"Alexey Kopytov's sysbench is required.\n" +"Results in MiB/second. Higher is better." +msgstr "" +"Требуется sysbench от Алексея Копытова.\n" +"Результаты в МиБ/сек. Чем выше, тем лучше." -#: modules/benchmark.c:592 +#: modules/benchmark/benches.c:231 msgid "Results in MiB/second. Higher is better." msgstr "Результаты в МиБ/сек. Чем выше, тем лучше." -#: modules/benchmark.c:596 +#: modules/benchmark/benches.c:238 msgid "Results in HIMarks. Higher is better." msgstr "Результаты в HIMarks. Чем выше, тем лучше." -#: modules/benchmark.c:603 +#: modules/benchmark/benches.c:244 msgid "Results in seconds. Lower is better." msgstr "Результат в секундах. Чем ниже, тем лучше." -#: modules/benchmark.c:611 -msgid "Benchmarks" +#. / Used for an unknown value. Having it in only one place cleans up the .po +#. * line references +#: modules/benchmark/bench_results.c:32 modules/computer.c:41 +#: modules/computer/display.c:41 modules/computer/display.c:58 +#: modules/computer/os.c:286 modules/computer/os.c:346 modules/devices.c:534 +#: modules/devices/dmi_memory.c:56 modules/devices/dmi_memory.c:57 +#: modules/devices/dmi_memory.c:631 modules/devices/dmi_memory.c:774 +#: modules/devices/dmi_memory.c:909 modules/devices/gpu.c:42 +#: modules/devices/gpu.c:60 modules/devices/gpu.c:124 modules/devices/gpu.c:132 +#: modules/devices/gpu.c:166 modules/devices/gpu.c:167 +#: modules/devices/gpu.c:186 modules/devices/inputdevices.c:50 +#: modules/devices/monitors.c:27 modules/devices/monitors.c:28 +#: modules/devices/monitors.c:153 modules/devices/monitors.c:162 +#: modules/devices/pci.c:25 modules/devices/pci.c:149 modules/devices/pci.c:150 +#: modules/devices/spd-decode.c:306 modules/devices/spd-decode.c:307 +#: modules/devices/spd-decode.c:310 modules/devices/spd-decode.c:311 +#: modules/devices/spd-decode.c:544 modules/devices/spd-decode.c:984 +#: modules/devices/spd-decode.c:985 modules/devices/storage.c:27 +#: modules/devices/storage.c:307 modules/devices/storage.c:336 +#: modules/devices/storage.c:431 modules/devices/usb.c:29 +#: modules/network/net.c:437 includes/cpu_util.h:11 +msgid "(Unknown)" +msgstr "(Неизвестно)" + +#: modules/benchmark/bench_results.c:65 modules/benchmark/bench_results.c:351 +#: modules/devices/alpha/processor.c:90 modules/devices/arm/processor.c:290 +#: modules/devices/arm/processor.c:303 modules/devices/arm/processor.c:345 +#: modules/devices/arm/processor.c:500 modules/devices.c:371 +#: modules/devices.c:379 modules/devices.c:407 +#: modules/devices/e2k/processor.c:335 modules/devices/e2k/processor.c:361 +#: modules/devices/gpu.c:127 modules/devices/gpu.c:129 +#: modules/devices/gpu.c:135 modules/devices/gpu.c:137 +#: modules/devices/gpu.c:189 modules/devices/gpu.c:191 +#: modules/devices/ia64/processor.c:167 modules/devices/ia64/processor.c:196 +#: modules/devices/loongarch64/processor.c:77 +#: modules/devices/m68k/processor.c:87 modules/devices/mips/processor.c:77 +#: modules/devices/parisc/processor.c:158 +#: modules/devices/parisc/processor.c:191 modules/devices/ppc/processor.c:160 +#: modules/devices/ppc/processor.c:187 modules/devices/riscv/processor.c:186 +#: modules/devices/riscv/processor.c:214 modules/devices/s390/processor.c:160 +#: modules/devices/sh/processor.c:87 modules/devices/sh/processor.c:88 +#: modules/devices/sh/processor.c:89 modules/devices/x86/processor.c:318 +#: modules/devices/x86/processor.c:331 modules/devices/x86/processor.c:659 +#: modules/devices/x86/processor.c:791 +msgid "MHz" +msgstr "МГц" + +#: modules/benchmark/bench_results.c:381 modules/devices.c:179 +#, c-format +msgid "%d physical processor" +msgid_plural "%d physical processors" +msgstr[0] "%d физический процессор" +msgstr[1] "%d физических процессора" +msgstr[2] "%d физических процессоров" + +#: modules/benchmark/bench_results.c:382 modules/devices.c:180 +#, c-format +msgid "%d core" +msgid_plural "%d cores" +msgstr[0] "%d ядро" +msgstr[1] "%d ядра" +msgstr[2] "%d ядер" + +#: modules/benchmark/bench_results.c:383 modules/devices.c:181 +#, c-format +msgid "%d thread" +msgid_plural "%d threads" +msgstr[0] "%d поток" +msgstr[1] "%d потока" +msgstr[2] "%d потоков" + +#: modules/benchmark/bench_results.c:388 modules/devices.c:183 +#, c-format +msgid "%d NUMA node" +msgid_plural "%d NUMA nodes" +msgstr[0] "%d узел NUMA" +msgstr[1] "%d узла NUMA" +msgstr[2] "%d узлов NUMA" + +#. /NP procs; NC cores across NN nodes; NT threads +#: modules/benchmark/bench_results.c:392 modules/devices.c:184 +#, c-format +msgid "%s; %s across %s; %s" +msgstr "" + +#. /NP procs; NC cores; NT threads +#: modules/benchmark/bench_results.c:397 modules/devices.c:187 +#, c-format +msgid "%s; %s; %s" +msgstr "%s; %s; %s" + +#: modules/benchmark/bench_results.c:473 modules/benchmark/bench_results.c:593 +#: modules/computer.c:941 modules/devices/dmi_memory.c:633 +#: modules/devices/dmi_memory.c:714 modules/devices/dmi_memory.c:724 +#: modules/devices/dmi_memory.c:778 modules/devices/dmi_memory.c:865 +#: modules/devices/dmi_memory.c:911 modules/devices/dmi_memory.c:996 +#: modules/network/net.c:395 modules/network/net.c:417 +#: modules/network/net.c:418 +msgid "MiB" +msgstr " МиБ" + +#: modules/benchmark/bench_results.c:478 modules/benchmark/bench_results.c:592 +msgid "kiB" +msgstr "КиБ" + +#: modules/benchmark/bench_results.c:486 modules/benchmark/bench_results.c:542 +#, c-format +msgid "%d-bit" +msgstr "%d-бит" + +#: modules/benchmark/bench_results.c:507 modules/benchmark/bench_results.c:570 +msgid "Benchmark Result" +msgstr "Результат теста" + +#: modules/benchmark/bench_results.c:507 modules/benchmark/bench_results.c:570 +msgid "Threads" +msgstr "Потоки" + +#: modules/benchmark/bench_results.c:508 modules/benchmark/bench_results.c:572 +msgid "Elapsed Time" +msgstr "Затраченное время" + +#: modules/benchmark/bench_results.c:508 modules/benchmark/bench_results.c:572 +msgid "seconds" +msgstr "секунд" + +#: modules/benchmark/bench_results.c:509 modules/computer/languages.c:101 +#: modules/devices/arm/processor.c:355 modules/devices/e2k/processor.c:334 +#: modules/devices/gpu.c:159 modules/devices/ia64/processor.c:166 +#: modules/devices/pci.c:146 modules/devices/ppc/processor.c:159 +msgid "Revision" +msgstr "Ревизия" + +#: modules/benchmark/bench_results.c:510 modules/benchmark/bench_results.c:573 +msgid "Extra Information" +msgstr "Дополнительная информация" + +#: modules/benchmark/bench_results.c:511 modules/benchmark/bench_results.c:574 +msgid "User Note" +msgstr "Примечание пользователя" + +#: modules/benchmark/bench_results.c:513 modules/benchmark/bench_results.c:576 +msgid "Note" +msgstr "Примечание" + +#: modules/benchmark/bench_results.c:514 modules/benchmark/bench_results.c:577 +msgid "" +"This result is from an old version of HardInfo. Results might not be " +"comparable to current version. Some details are missing." +msgstr "" +"Данный результат получен с использованием старой версии HardInfo. Он может " +"быть несопоставим с результатом текущей версии, поскольку отсутствуют " +"некоторые подробности." + +#: modules/benchmark/bench_results.c:518 modules/benchmark/bench_results.c:581 +#: modules/devices/devicetree/pmac_data.c:81 modules/devices/sh/processor.c:85 +msgid "Machine" +msgstr "Машина" + +#: modules/benchmark/bench_results.c:519 modules/benchmark/bench_results.c:581 +#: modules/devices/devicetree.c:208 modules/devices/dmi.c:48 +msgid "Board" +msgstr "Плата" + +#: modules/benchmark/bench_results.c:520 modules/benchmark/bench_results.c:583 +#: modules/computer.c:551 +msgid "Machine Type" +msgstr "Тип машины" + +#: modules/benchmark/bench_results.c:521 modules/benchmark/bench_results.c:584 +msgid "CPU Name" +msgstr "Название процессора" + +#: modules/benchmark/bench_results.c:522 modules/benchmark/bench_results.c:585 +msgid "CPU Description" +msgstr "Описание процессора" + +#: modules/benchmark/bench_results.c:523 modules/benchmark/bench_results.c:587 +#: modules/benchmark.c:557 +msgid "CPU Config" +msgstr "Конфигурация процессора" + +#: modules/benchmark/bench_results.c:524 modules/benchmark/bench_results.c:587 +msgid "Threads Available" +msgstr "Доступно потоков" + +#: modules/benchmark/bench_results.c:525 modules/benchmark/bench_results.c:588 +msgid "GPU" +msgstr "Графический процессор" + +#: modules/benchmark/bench_results.c:526 modules/benchmark/bench_results.c:590 +#: modules/computer.c:563 +msgid "OpenGL Renderer" +msgstr "Рендер OpenGL" + +#: modules/benchmark/bench_results.c:527 modules/benchmark/bench_results.c:592 +#: modules/computer.c:140 modules/computer.c:550 modules/computer.c:1034 +#: modules/devices/gpu.c:162 +msgid "Memory" +msgstr "Память" + +#: modules/benchmark/bench_results.c:528 modules/benchmark/bench_results.c:594 +msgid "Pointer Size" +msgstr "Размер указателя" + +#: modules/benchmark/bench_results.c:570 +msgid "Benchmark" +msgstr "" + +#: modules/benchmark/bench_results.c:571 modules/devices/dmi_memory.c:933 +#: modules/devices/firmware.c:245 modules/devices/monitors.c:493 +#: modules/devices/x86/processor.c:693 +msgid "Result" +msgstr "Результат" + +#: modules/benchmark/bench_results.c:592 +msgid "Physical Memory" +msgstr "" + +#: modules/benchmark/bench_results.c:596 +msgid "Handles" +msgstr "" + +#: modules/benchmark/bench_results.c:596 +msgid "mid" +msgstr "" + +#: modules/benchmark/bench_results.c:597 +msgid "cfg_val" +msgstr "" + +#: modules/benchmark.c:351 +msgid "This Machine" +msgstr "Этот компьютер" + +#: modules/benchmark.c:557 +msgid "Results" +msgstr "Результаты" + +#: modules/benchmark.c:558 modules/devices/sparc/processor.c:75 +msgid "CPU" +msgstr "Процессор" + +#: modules/benchmark.c:638 +#, c-format +msgid "Benchmarking: %s." +msgstr "Тестирование: %s" + +#: modules/benchmark.c:651 +msgid "" +"Benchmarking. Please do not move your mouse\n" +"or press any keys." +msgstr "" +"Тестирование. Пожалуйста, не двигайте мышь\n" +"и не нажимайте на кнопки." + +#: modules/benchmark.c:659 +msgid "Cancel" +msgstr "Отмена" + +#: modules/benchmark.c:731 +msgid "Benchmarks" msgstr "Тесты" -#: modules/benchmark.c:629 +#: modules/benchmark.c:741 msgid "Perform tasks and compare with other systems" msgstr "Выполняет задания и сравнивает с другими системами" -#: modules/benchmark.c:719 +#: modules/benchmark.c:894 msgid "Send benchmark results" msgstr "Отправить результаты тестирования" -#: modules/benchmark.c:724 +#: modules/benchmark.c:899 msgid "Receive benchmark results" msgstr "Принять результаты тестирования" -#: modules/computer/alsa.c:26 modules/computer.c:479 +#: modules/computer/alsa.c:26 modules/computer.c:567 msgid "Audio Devices" msgstr "Аудио устройства" @@ -1020,495 +1465,685 @@ msgstr "Аудио устройства" msgid "Audio Adapter" msgstr "Звуковая карта" -#: modules/computer.c:74 +#: modules/computer.c:96 modules/devices/firmware.c:74 msgid "Summary" msgstr "Общая информация" -#: modules/computer.c:75 modules/computer.c:467 modules/computer.c:748 +#: modules/computer.c:97 modules/computer.c:553 modules/computer.c:1033 msgid "Operating System" msgstr "Операционная система" -#: modules/computer.c:76 +#: modules/computer.c:98 +msgid "Security" +msgstr "Безопасность" + +#: modules/computer.c:99 modules/devices/gpu.c:167 modules/devices/pci.c:150 msgid "Kernel Modules" msgstr "Модули ядра" -#: modules/computer.c:77 modules/computer.c:536 +#: modules/computer.c:100 modules/computer.c:706 msgid "Boots" msgstr "Загрузки" -#: modules/computer.c:78 +#: modules/computer.c:101 msgid "Languages" msgstr "Языки" -#: modules/computer.c:79 +#: modules/computer.c:102 +msgid "Memory Usage" +msgstr "Использование памяти" + +#: modules/computer.c:103 msgid "Filesystems" msgstr "Файловые системы" -#: modules/computer.c:80 modules/computer.c:472 modules/computer.c:580 +#: modules/computer.c:104 modules/computer.c:558 msgid "Display" msgstr "Дисплей" -#: modules/computer.c:81 modules/computer/environment.c:32 +#: modules/computer.c:105 modules/computer/environment.c:32 msgid "Environment Variables" msgstr "Переменные среды" -#: modules/computer.c:83 +#: modules/computer.c:107 modules/computer.c:109 msgid "Development" msgstr "Разработка" -#: modules/computer.c:85 modules/computer.c:607 +#: modules/computer.c:111 modules/computer.c:830 msgid "Users" msgstr "Пользователи" -#: modules/computer.c:86 +#: modules/computer.c:112 msgid "Groups" msgstr "Группы" -#: modules/computer.c:110 +#: modules/computer.c:142 #, c-format msgid "%dMB (%dMB used)" msgstr "%d Мб (%d Мб занято)" -#: modules/computer.c:112 modules/computer.c:510 +#: modules/computer.c:144 modules/computer.c:622 msgid "Uptime" msgstr "Время работы" -#: modules/computer.c:114 modules/computer.c:469 +#: modules/computer.c:146 modules/computer.c:555 msgid "Date/Time" msgstr "Дата/время" # Должно совпадать с таким-же полем в строке 430 computer.c -#: modules/computer.c:119 modules/computer.c:511 +#: modules/computer.c:151 modules/computer.c:623 msgid "Load Average" msgstr "Средняя нагрузка" -#: modules/computer.c:121 modules/computer.c:512 -msgid "Available entropy in /dev/random" -msgstr "Доступная энтропия в /dev/random" - -#: modules/computer.c:207 +#: modules/computer.c:264 msgid "Scripting Languages" msgstr "Скриптовые языки" -#: modules/computer.c:208 +#: modules/computer.c:265 msgid "Gambas3 (gbr3)" msgstr "" -#: modules/computer.c:209 -msgid "Python" +#: modules/computer.c:266 +msgid "Python (default)" msgstr "" -#: modules/computer.c:210 +#: modules/computer.c:267 msgid "Python2" msgstr "" -#: modules/computer.c:211 +#: modules/computer.c:268 msgid "Python3" msgstr "" -#: modules/computer.c:212 +#: modules/computer.c:269 msgid "Perl" msgstr "" -#: modules/computer.c:213 +#: modules/computer.c:270 msgid "Perl6 (VM)" msgstr "" -#: modules/computer.c:214 +#: modules/computer.c:271 msgid "Perl6" msgstr "" -#: modules/computer.c:215 +#: modules/computer.c:272 msgid "PHP" msgstr "" -#: modules/computer.c:216 +#: modules/computer.c:273 msgid "Ruby" msgstr "" -#: modules/computer.c:217 +#: modules/computer.c:274 msgid "Bash" msgstr "" -#: modules/computer.c:218 +#: modules/computer.c:275 +msgid "JavaScript (Node.js)" +msgstr "" + +#: modules/computer.c:276 +msgid "awk" +msgstr "" + +#: modules/computer.c:277 msgid "Compilers" msgstr "Компиляторы" -#: modules/computer.c:219 +#: modules/computer.c:278 msgid "C (GCC)" msgstr "" -#: modules/computer.c:220 +#: modules/computer.c:279 msgid "C (Clang)" msgstr "" -#: modules/computer.c:221 +#: modules/computer.c:280 msgid "D (dmd)" msgstr "" -#: modules/computer.c:222 +#: modules/computer.c:281 msgid "Gambas3 (gbc3)" msgstr "" -#: modules/computer.c:223 -#, fuzzy +#: modules/computer.c:282 msgid "Java" -msgstr "Язык программирования Java" - -#: modules/computer.c:224 -#, fuzzy -msgid "CSharp (Mono, old)" -msgstr "Найдена старая установка %s." +msgstr "" -#: modules/computer.c:225 -#, fuzzy -msgid "CSharp (Mono)" -msgstr "Моноширинный шрифт" +#: modules/computer.c:283 +msgid "C♯ (mcs)" +msgstr "" -#: modules/computer.c:226 -#, fuzzy +#: modules/computer.c:284 msgid "Vala" -msgstr "базы данных vala" +msgstr "" -#: modules/computer.c:227 +#: modules/computer.c:285 msgid "Haskell (GHC)" msgstr "" -#: modules/computer.c:228 +#: modules/computer.c:286 msgid "FreePascal" msgstr "" -#: modules/computer.c:229 +#: modules/computer.c:287 msgid "Go" msgstr "" -#: modules/computer.c:230 +#: modules/computer.c:288 +msgid "Rust" +msgstr "" + +#: modules/computer.c:289 msgid "Tools" msgstr "Инструменты" -#: modules/computer.c:231 +#: modules/computer.c:290 msgid "make" msgstr "" -#: modules/computer.c:232 +#: modules/computer.c:291 +msgid "ninja" +msgstr "" + +#: modules/computer.c:292 msgid "GDB" msgstr "" -#: modules/computer.c:233 +#: modules/computer.c:293 +msgid "LLDB" +msgstr "" + +#: modules/computer.c:294 msgid "strace" msgstr "" -#: modules/computer.c:234 +#: modules/computer.c:295 msgid "valgrind" msgstr "" -#: modules/computer.c:235 +#: modules/computer.c:296 msgid "QMake" msgstr "" -#: modules/computer.c:236 +#: modules/computer.c:297 msgid "CMake" msgstr "" -#: modules/computer.c:237 +#: modules/computer.c:298 msgid "Gambas3 IDE" msgstr "" -#: modules/computer.c:278 +#: modules/computer.c:299 +msgid "Radare2" +msgstr "" + +#: modules/computer.c:300 +msgid "ltrace" +msgstr "" + +#: modules/computer.c:301 +msgid "Powershell" +msgstr "" + +#: modules/computer.c:342 msgid "Not found" msgstr "Не найдено" -#: modules/computer.c:283 +#: modules/computer.c:347 #, c-format msgid "Detecting version: %s" msgstr "Определена версия: %s" -#: modules/computer.c:300 +#: modules/computer.c:365 msgid "Program" msgstr "Программа" -#: modules/computer.c:320 +#: modules/computer.c:384 +msgid "Field" +msgstr "Поле" + +#: modules/computer.c:384 modules/computer.c:695 modules/computer/modules.c:224 +#: modules/computer/modules.c:225 modules/devices/arm/processor.c:470 +msgid "Description" +msgstr "Описание" + +#: modules/computer.c:384 modules/devices.c:773 +msgid "Value" +msgstr "Значение" + +#: modules/computer.c:404 msgid "Single-board computer" msgstr "" #. /proc/apm -#: modules/computer.c:369 +#: modules/computer.c:453 msgid "Unknown physical machine type" msgstr "" -#: modules/computer.c:389 modules/computer.c:390 +#: modules/computer.c:473 modules/computer.c:474 msgid "Virtual (VMware)" msgstr "" -#: modules/computer.c:392 modules/computer.c:393 modules/computer.c:394 -#: modules/computer.c:395 +#: modules/computer.c:476 modules/computer.c:477 modules/computer.c:478 +#: modules/computer.c:479 msgid "Virtual (QEMU)" msgstr "" -#: modules/computer.c:397 modules/computer.c:398 +#: modules/computer.c:481 modules/computer.c:482 msgid "Virtual (Unknown)" msgstr "" -#: modules/computer.c:400 modules/computer.c:401 modules/computer.c:402 -#: modules/computer.c:423 +#: modules/computer.c:484 modules/computer.c:485 modules/computer.c:486 +#: modules/computer.c:507 msgid "Virtual (VirtualBox)" msgstr "" -#: modules/computer.c:404 modules/computer.c:405 modules/computer.c:406 -#: modules/computer.c:417 +#: modules/computer.c:488 modules/computer.c:489 modules/computer.c:490 +#: modules/computer.c:501 msgid "Virtual (Xen)" msgstr "" -#: modules/computer.c:408 +#: modules/computer.c:492 msgid "Virtual (hypervisor present)" msgstr "" -#: modules/computer.c:461 modules/computer.c:707 +#: modules/computer.c:547 modules/computer.c:987 msgid "Computer" msgstr "Компьютер" -#: modules/computer.c:462 modules/devices/alpha/processor.c:87 -#: modules/devices/arm/processor.c:236 modules/devices.c:95 -#: modules/devices/ia64/processor.c:159 modules/devices/m68k/processor.c:83 -#: modules/devices/mips/processor.c:74 modules/devices/parisc/processor.c:154 -#: modules/devices/ppc/processor.c:157 modules/devices/riscv/processor.c:181 -#: modules/devices/s390/processor.c:131 modules/devices/sh/processor.c:83 -#: modules/devices/sparc/processor.c:74 modules/devices/x86/processor.c:409 -msgid "Processor" -msgstr "Процессор" - -#: modules/computer.c:465 -msgid "Machine Type" -msgstr "Тип машины" - -#: modules/computer.c:468 modules/computer.c:504 +#: modules/computer.c:554 modules/computer.c:616 msgid "User Name" msgstr "Пользователь" -#: modules/computer.c:473 modules/computer.c:581 +#: modules/computer.c:559 msgid "Resolution" msgstr "Разрешение" -#: modules/computer.c:473 modules/computer.c:581 +#: modules/computer.c:559 modules/computer.c:776 #, c-format msgid "%dx%d pixels" msgstr "%dx%d пикселей" -#: modules/computer.c:476 -msgid "X11 Vendor" -msgstr "Поставщик X11" +#: modules/computer.c:561 +msgid "Display Adapter" +msgstr "Графический адаптер" + +#: modules/computer.c:564 +msgid "Session Display Server" +msgstr "Дисплейный драйвер сессии" -#: modules/computer.c:481 modules/devices.c:102 +#: modules/computer.c:569 modules/devices.c:109 msgid "Input Devices" msgstr "Устройства ввода" -#: modules/computer.c:496 +#: modules/computer.c:598 msgid "Kernel" msgstr "Ядро" -#: modules/computer.c:498 +#: modules/computer.c:599 +msgid "Command Line" +msgstr "Командная строка" + +#: modules/computer.c:601 msgid "C Library" msgstr "Библиотека C" -#: modules/computer.c:499 +#: modules/computer.c:602 msgid "Distribution" msgstr "Дистрибутив" -#: modules/computer.c:502 +#: modules/computer.c:609 +msgid "Spin/Flavor" +msgstr "" + +#: modules/computer.c:614 msgid "Current Session" msgstr "Текущая сессия" -#: modules/computer.c:503 +#: modules/computer.c:615 msgid "Computer Name" msgstr "Имя компьютера" -#: modules/computer.c:505 modules/computer/languages.c:108 +#: modules/computer.c:617 modules/computer/languages.c:99 msgid "Language" msgstr "Язык" -#: modules/computer.c:506 modules/computer/users.c:50 +#: modules/computer.c:618 modules/computer/users.c:50 msgid "Home Directory" msgstr "Домашний каталог" -#: modules/computer.c:509 modules/devices/usb.c:87 modules/devices/usb.c:234 -#: modules/devices/usb.c:351 +#: modules/computer.c:619 +msgid "Desktop Environment" +msgstr "Окружение рабочего стола" + +#: modules/computer.c:622 msgid "Misc" msgstr "Разное" -#: modules/computer.c:522 -msgid "Loaded Modules" +#: modules/computer.c:635 +msgid "HardInfo" msgstr "" -#: modules/computer.c:525 modules/computer/modules.c:145 -#: modules/computer/modules.c:147 modules/devices/arm/processor.c:355 -#: modules/devices.c:572 modules/devices/x86/processor.c:456 -msgid "Description" -msgstr "Описание" +#: modules/computer.c:636 +msgid "HardInfo running as" +msgstr "HardInfo запущен от" -#: modules/computer.c:538 +#: modules/computer.c:637 +msgid "Superuser" +msgstr "Суперпользователь" + +#: modules/computer.c:637 +msgid "User" +msgstr "Пользователь" + +#: modules/computer.c:641 +msgid "Health" +msgstr "Здоровье" + +#: modules/computer.c:642 +msgid "Available entropy in /dev/random" +msgstr "Доступная энтропия в /dev/random" + +#: modules/computer.c:646 +msgid "Hardening Features" +msgstr "Возможности hardening" + +#: modules/computer.c:647 +msgid "ASLR" +msgstr "" + +#: modules/computer.c:648 +msgid "dmesg" +msgstr "" + +#: modules/computer.c:652 +msgid "Linux Security Modules" +msgstr "Модули безопасности Linux" + +#: modules/computer.c:653 +msgid "Modules available" +msgstr "Доступные модули" + +#: modules/computer.c:654 +msgid "SELinux status" +msgstr "Состояние SELinux" + +#: modules/computer.c:660 +msgid "CPU Vulnerabilities" +msgstr "Уязвимости процессора" + +#: modules/computer.c:692 +msgid "Loaded Modules" +msgstr "" + +#: modules/computer.c:708 msgid "Date & Time" msgstr "Дата и время" -#: modules/computer.c:539 +#: modules/computer.c:709 msgid "Kernel Version" msgstr "Версия ядра" -#: modules/computer.c:549 +#: modules/computer.c:719 msgid "Available Languages" msgstr "" -#: modules/computer.c:551 +#: modules/computer.c:721 msgid "Language Code" msgstr "Код языка" -#: modules/computer.c:563 +#: modules/computer.c:733 msgid "Mounted File Systems" msgstr "" -#: modules/computer.c:565 modules/computer/filesystem.c:85 +#: modules/computer.c:735 modules/computer/filesystem.c:87 msgid "Mount Point" msgstr "Точка монтирования" -#: modules/computer.c:566 +#: modules/computer.c:736 msgid "Usage" msgstr "Использование" -#: modules/computer.c:567 +#: modules/computer.c:737 modules/devices.c:797 modules/devices.c:811 +#: modules/devices/gpu.c:87 modules/devices/gpu.c:95 modules/devices/gpu.c:243 +#: modules/devices/pci.c:102 modules/devices/pci.c:110 +#: modules/devices/pci.c:154 modules/devices/storage.c:48 +#: modules/devices/storage.c:57 modules/devices/usb.c:172 +#: modules/devices/usb.c:184 modules/devices/x86/processor.c:812 msgid "Device" msgstr "Устройство" -#: modules/computer.c:583 modules/computer.c:591 modules/devices/dmi.c:39 -#: modules/devices/dmi.c:43 modules/devices/dmi.c:47 modules/devices/dmi.c:52 -#: modules/devices/ia64/processor.c:161 modules/devices/inputdevices.c:119 -#: modules/devices/pci.c:225 modules/devices/usb.c:349 -#: modules/devices/x86/processor.c:416 -msgid "Vendor" -msgstr "Производитель" +#: modules/computer.c:759 +msgid "Session" +msgstr "Сессия" + +#: modules/computer.c:760 modules/devices.c:774 modules/devices.c:811 +#: modules/devices/dmi.c:56 modules/devices/dmi_memory.c:655 +#: modules/devices/dmi_memory.c:804 modules/devices/inputdevices.c:141 +#: modules/devices/x86/processor.c:716 +msgid "Type" +msgstr "Тип" + +#: modules/computer.c:763 +msgid "Wayland" +msgstr "" -#: modules/computer.c:585 +#: modules/computer.c:764 modules/computer.c:769 msgid "Current Display Name" msgstr "Имя текущего дисплея" -#: modules/computer.c:588 -msgid "Monitors" -msgstr "Монитор" +#: modules/computer.c:768 +msgid "X Server" +msgstr "X-сервер" + +#: modules/computer.c:770 modules/computer.c:810 modules/devices.c:811 +#: modules/devices/dmi.c:40 modules/devices/dmi.c:46 modules/devices/dmi.c:50 +#: modules/devices/dmi.c:55 modules/devices/dmi_memory.c:805 +#: modules/devices/dmi_memory.c:949 modules/devices/e2k/processor.c:331 +#: modules/devices/firmware.c:75 modules/devices/firmware.c:167 +#: modules/devices/firmware.c:172 modules/devices/firmware.c:219 +#: modules/devices/gpu.c:86 modules/devices/gpu.c:94 modules/devices/gpu.c:242 +#: modules/devices/ia64/processor.c:161 modules/devices/inputdevices.c:143 +#: modules/devices/monitors.c:400 modules/devices/pci.c:101 +#: modules/devices/pci.c:109 modules/devices/storage.c:47 +#: modules/devices/storage.c:56 modules/devices/storage.c:282 +#: modules/devices/storage.c:572 modules/devices/storage.c:771 +#: modules/devices/usb.c:171 modules/devices/x86/processor.c:655 +msgid "Vendor" +msgstr "Поставщик" + +#: modules/computer.c:772 +msgid "Release Number" +msgstr "Номер релиза" + +#: modules/computer.c:780 +msgid "Screens" +msgstr "Экраны" -#: modules/computer.c:590 -msgid "OpenGL" +#: modules/computer.c:786 +msgid "Disconnected" +msgstr "Отключено" + +#: modules/computer.c:789 +msgid "Connected" +msgstr "Подключено" + +#: modules/computer.c:797 +msgid "Unused" +msgstr "Не используется" + +#: modules/computer.c:798 +#, c-format +msgid "%dx%d pixels, offset (%d, %d)" +msgstr "%dx%d пикселей, смещение (%d, %d)" + +#: modules/computer.c:807 +msgid "Outputs (XRandR)" +msgstr "Выводы (XRandR)" + +#: modules/computer.c:809 +msgid "OpenGL (GLX)" msgstr "" -#: modules/computer.c:592 +#: modules/computer.c:811 msgid "Renderer" msgstr "Рендер" -#: modules/computer.c:594 +#: modules/computer.c:812 msgid "Direct Rendering" msgstr "Графическое ускорение" -#: modules/computer.c:598 -msgid "Extensions" -msgstr "Расширения" +#: modules/computer.c:814 +msgid "Version (Compatibility)" +msgstr "Версия (совместимость)" + +#: modules/computer.c:815 +msgid "Shading Language Version (Compatibility)" +msgstr "Версия языка шейдеров (совместимость)" -#: modules/computer.c:618 +#: modules/computer.c:816 +msgid "Version (Core)" +msgstr "Версия (ядро)" + +#: modules/computer.c:817 +msgid "Shading Language Version (Core)" +msgstr "Версия языка шейдеров (ядро)" + +#: modules/computer.c:818 +msgid "Version (ES)" +msgstr "Версия (ES)" + +#: modules/computer.c:819 +msgid "Shading Language Version (ES)" +msgstr "Версия языка шейдеров (ES)" + +#: modules/computer.c:820 +msgid "GLX Version" +msgstr "Версия GLX" + +#: modules/computer.c:841 msgid "Group" -msgstr "" +msgstr "Группа" -#: modules/computer.c:621 modules/computer/users.c:49 +#: modules/computer.c:844 modules/computer/users.c:49 msgid "Group ID" msgstr "ID группы" -#: modules/computer.c:749 -msgid "RAM" -msgstr "Оперативная память" +#. / "usable memory" +#: modules/computer.c:937 +#, c-format +msgid "%0.1f %s available to Linux" +msgstr "%0.1f %s доступно для Linux" -#: modules/computer.c:749 modules/devices/devicetree/pmac_data.c:82 +#: modules/computer.c:939 modules/devices/dmi_memory.c:712 +#: modules/devices/dmi_memory.c:722 modules/devices/dmi_memory.c:863 +#: modules/devices/dmi_memory.c:994 +msgid "GiB" +msgstr "ГиБ" + +#: modules/computer.c:943 modules/computer/memory_usage.c:77 +#: modules/computer/modules.c:224 +msgid "KiB" +msgstr "КиБ" + +#: modules/computer.c:1006 modules/devices/devicetree/pmac_data.c:82 msgid "Motherboard" msgstr "Материнская плата" -#: modules/computer.c:749 +#: modules/computer.c:1034 msgid "Graphics" msgstr "Графика" -#: modules/computer.c:750 modules/devices.c:103 +#: modules/computer.c:1035 modules/devices.c:110 msgid "Storage" msgstr "Устройства хранения" -#: modules/computer.c:750 modules/devices.c:99 +#: modules/computer.c:1035 modules/devices.c:106 msgid "Printers" msgstr "Принтеры" -#: modules/computer.c:750 +#: modules/computer.c:1035 msgid "Audio" msgstr "Аудио" -#: modules/computer.c:805 +#: modules/computer.c:1083 msgid "Gathers high-level computer information" msgstr "Собирает высокоуровневую информацию о компьютере" -#: modules/computer/display.c:125 -#, c-format -msgid "Monitor %d=%dx%d pixels\n" -msgstr "Монитор %d=%dx%d пикселей\n" +#: modules/computer.c:1095 +msgid "lsmod is required." +msgstr "" + +#: modules/computer.c:1103 +msgid "" +"X.org's xrandr utility provides additional details when " +"available." +msgstr "" + +#: modules/computer.c:1104 +msgid "" +"Mesa's glxinfo utility is required for OpenGL information." +msgstr "" -#: modules/computer/filesystem.c:83 +#: modules/computer/filesystem.c:85 msgid "Filesystem" msgstr "Файловая система" -#: modules/computer/filesystem.c:84 +#: modules/computer/filesystem.c:86 msgid "Mounted As" msgstr "Смонтировано" -#: modules/computer/filesystem.c:84 +#: modules/computer/filesystem.c:86 msgid "Read-Write" msgstr "Для чтения и записи" -#: modules/computer/filesystem.c:84 +#: modules/computer/filesystem.c:86 msgid "Read-Only" msgstr "Только для чтения" -#: modules/computer/filesystem.c:86 modules/devices/spd-decode.c:1510 +#: modules/computer/filesystem.c:88 modules/devices.c:797 +#: modules/devices/dmi_memory.c:661 modules/devices/dmi_memory.c:808 +#: modules/devices/dmi_memory.c:840 modules/devices/dmi_memory.c:879 +#: modules/devices/dmi_memory.c:948 msgid "Size" msgstr "Размер" -#: modules/computer/filesystem.c:87 +#: modules/computer/filesystem.c:89 msgid "Used" msgstr "Занято" -#: modules/computer/filesystem.c:88 +#: modules/computer/filesystem.c:90 msgid "Available" msgstr "Свободно" -#: modules/computer/languages.c:103 +#: modules/computer/languages.c:94 msgid "Locale Information" msgstr "Информация о языке" -#: modules/computer/languages.c:105 +#: modules/computer/languages.c:96 modules/devices/dmi_memory.c:651 +#: modules/devices/gpu.c:222 msgid "Source" msgstr "Источник" -#: modules/computer/languages.c:106 +#: modules/computer/languages.c:97 msgid "Address" msgstr "Адрес" -#: modules/computer/languages.c:107 +#: modules/computer/languages.c:98 msgid "E-mail" msgstr "Электронная почта" -#: modules/computer/languages.c:109 +#: modules/computer/languages.c:100 msgid "Territory" msgstr "Территория" -#: modules/computer/languages.c:110 modules/devices/arm/processor.c:250 -#: modules/devices/ia64/processor.c:166 modules/devices/ppc/processor.c:159 -#: modules/devices/usb.c:236 -msgid "Revision" -msgstr "Ревизия" - -#: modules/computer/languages.c:111 modules/devices/dmi.c:42 +#: modules/computer/languages.c:102 modules/devices/dmi.c:45 msgid "Date" msgstr "Дата" -#: modules/computer/languages.c:112 +#: modules/computer/languages.c:103 msgid "Codeset" msgstr "Кодировка" @@ -1516,115 +2151,189 @@ msgstr "Кодировка" msgid "Couldn't obtain load average" msgstr "Не удается установить среднюю загрузку" -#: modules/computer/modules.c:125 modules/computer/modules.c:126 -#: modules/computer/modules.c:127 modules/computer/modules.c:128 -#: modules/computer/modules.c:129 modules/devices/dmi.c:115 +#: modules/computer/memory_usage.c:106 +msgid "Total Memory" +msgstr "Общая память" + +#: modules/computer/memory_usage.c:107 +msgid "Free Memory" +msgstr "Свободная память" + +#: modules/computer/memory_usage.c:108 +msgid "Cached Swap" +msgstr "Кэш подкачки" + +#: modules/computer/memory_usage.c:109 +msgid "High Memory" +msgstr "Высокая память" + +#: modules/computer/memory_usage.c:110 +msgid "Free High Memory" +msgstr "Свободная высокая память" + +#: modules/computer/memory_usage.c:111 +msgid "Low Memory" +msgstr "Низкая память" + +#: modules/computer/memory_usage.c:112 +msgid "Free Low Memory" +msgstr "Свободная низкая память" + +#: modules/computer/memory_usage.c:113 +msgid "Virtual Memory" +msgstr "Виртуальная память" + +#: modules/computer/memory_usage.c:114 +msgid "Free Virtual Memory" +msgstr "Свободная виртуальная память" + +#: modules/computer/modules.c:192 modules/computer/modules.c:193 +#: modules/computer/modules.c:194 modules/computer/modules.c:195 +#: modules/computer/modules.c:196 modules/computer/modules.c:197 +#: modules/devices/dmi.c:115 modules/devices/dmi_memory.c:935 +#: modules/devices/firmware.c:245 modules/devices/x86/processor.c:695 msgid "(Not available)" msgstr "(Недоступно)" -#: modules/computer/modules.c:142 +#: modules/computer/modules.c:223 msgid "Module Information" msgstr "Информация о модуле" -#: modules/computer/modules.c:143 +#: modules/computer/modules.c:223 modules/devices/gpu.c:248 msgid "Path" msgstr "Путь" -#: modules/computer/modules.c:144 +#: modules/computer/modules.c:223 msgid "Used Memory" -msgstr "Обьем занимаемой памяти" +msgstr "Обьем используемой памяти" -#: modules/computer/modules.c:144 modules/devices/devmemory.c:72 -msgid "KiB" -msgstr "КиБ" - -#: modules/computer/modules.c:148 +#: modules/computer/modules.c:225 msgid "Version Magic" msgstr "Версия" -#: modules/computer/modules.c:149 +#: modules/computer/modules.c:226 +msgid "In Linus' Tree" +msgstr "В дереве исходных кодов ядра Linux" + +#: modules/computer/modules.c:227 +msgid "Retpoline Enabled" +msgstr "Retpoline включен" + +#: modules/computer/modules.c:227 msgid "Copyright" msgstr "Авторское право" -#: modules/computer/modules.c:150 +#: modules/computer/modules.c:227 msgid "Author" msgstr "Автор" -#: modules/computer/modules.c:151 +#: modules/computer/modules.c:228 msgid "License" msgstr "Лицензия" -#: modules/computer/modules.c:158 +#: modules/computer/modules.c:234 msgid "Dependencies" msgstr "Зависимости" -#: modules/computer/os.c:35 modules/computer/os.c:36 modules/computer/os.c:37 -#: modules/computer/os.c:38 +#: modules/computer/os.c:36 modules/computer/os.c:37 modules/computer/os.c:38 +#: modules/computer/os.c:39 msgid "GNU C Library" msgstr "" -#: modules/computer/os.c:39 +#: modules/computer/os.c:40 msgid "uClibc or uClibc-ng" msgstr "" -#: modules/computer/os.c:40 +#: modules/computer/os.c:41 msgid "diet libc" msgstr "" -#: modules/computer/os.c:78 modules/computer/os.c:234 modules/computer/os.c:359 -#: modules/devices.c:333 modules/devices.c:400 modules/devices/printers.c:99 -#: modules/devices/printers.c:106 modules/devices/printers.c:116 -#: modules/devices/printers.c:131 modules/devices/printers.c:140 -#: modules/devices/printers.c:243 -msgid "Unknown" -msgstr "Неизвестно" - -#: modules/computer/os.c:112 modules/computer/os.c:115 +#: modules/computer/os.c:113 modules/computer/os.c:116 msgid "GNOME Shell " msgstr "" -#: modules/computer/os.c:123 modules/computer/os.c:126 +#: modules/computer/os.c:124 modules/computer/os.c:127 msgid "Version: " msgstr "" -#: modules/computer/os.c:157 +#: modules/computer/os.c:146 modules/computer/os.c:149 +msgid "MATE Desktop Environment " +msgstr "" + +#: modules/computer/os.c:180 #, c-format msgid "Unknown (Window Manager: %s)" msgstr "Неизвестно (Оконный менеджер: %s)" #. /{desktop environment} on {session type} -#: modules/computer/os.c:168 +#: modules/computer/os.c:191 #, c-format msgid "%s on %s" msgstr "%s на %s" -#: modules/computer/os.c:232 +#: modules/computer/os.c:261 msgid "Terminal" msgstr "Терминал" +#: modules/computer/os.c:278 +msgid "User access allowed" +msgstr "Разрешен доступ пользователя" + +#: modules/computer/os.c:280 +msgid "User access forbidden" +msgstr "" + +#: modules/computer/os.c:282 +msgid "Access allowed (running as superuser)" +msgstr "Доступ разрешен (запущено от суперпользователя)" + +#: modules/computer/os.c:284 +msgid "Access forbidden? (running as superuser)" +msgstr "" + +#: modules/computer/os.c:294 modules/computer/os.c:567 +msgid "Disabled" +msgstr "Отключено" + +#: modules/computer/os.c:296 +msgid "Partially enabled (mmap base+stack+VDSO base)" +msgstr "Частично включено (mmap base+stack+VDSO base)" + +#: modules/computer/os.c:298 +msgid "Fully enabled (mmap base+stack+VDSO base+heap)" +msgstr "Полностью включено (mmap base+stack+VDSO base+heap)" + #. /bits of entropy for rng (0) -#: modules/computer/os.c:241 +#: modules/computer/os.c:308 msgid "(None or not available)" msgstr "(Нет или недоступно)" #. /bits of entropy for rng (low/poor value) -#: modules/computer/os.c:242 +#: modules/computer/os.c:309 #, c-format msgid "%d bits (low)" msgstr "%d бит (низкая)" #. /bits of entropy for rng (medium value) -#: modules/computer/os.c:243 +#: modules/computer/os.c:310 #, c-format msgid "%d bits (medium)" msgstr "%d бит (средняя)" #. /bits of entropy for rng (high/good value) -#: modules/computer/os.c:244 +#: modules/computer/os.c:311 #, c-format msgid "%d bits (healthy)" msgstr "%d бит (огромная)" +#: modules/computer/os.c:562 +msgid "Not installed" +msgstr "Не установлено" + +#: modules/computer/os.c:565 +msgid "Enabled" +msgstr "" + #: modules/computer/users.c:47 msgid "User Information" msgstr "Информация о пользователе" @@ -1637,12 +2346,16 @@ msgstr "ID пользователя" msgid "Default Shell" msgstr "Оболочка по умолчанию" -#: modules/devices/alpha/processor.c:88 modules/devices/devicetree.c:161 -#: modules/devices/devicetree.c:207 modules/devices/devicetree/pmac_data.c:80 -#: modules/devices/ia64/processor.c:165 modules/devices/m68k/processor.c:84 -#: modules/devices/mips/processor.c:75 modules/devices/parisc/processor.c:155 +#: modules/devices/alpha/processor.c:88 modules/devices.c:797 +#: modules/devices/devicetree.c:163 modules/devices/devicetree.c:209 +#: modules/devices/devicetree/pmac_data.c:80 +#: modules/devices/e2k/processor.c:333 modules/devices/gpu.c:118 +#: modules/devices/ia64/processor.c:165 +#: modules/devices/loongarch64/processor.c:75 +#: modules/devices/m68k/processor.c:84 modules/devices/mips/processor.c:75 +#: modules/devices/monitors.c:402 modules/devices/parisc/processor.c:155 #: modules/devices/ppc/processor.c:158 modules/devices/riscv/processor.c:182 -#: modules/devices/s390/processor.c:132 modules/devices/spd-decode.c:1510 +#: modules/devices/s390/processor.c:132 modules/devices/x86/processor.c:812 msgid "Model" msgstr "Модель" @@ -1650,29 +2363,33 @@ msgstr "Модель" msgid "Platform String" msgstr "Строка платформы" -#: modules/devices/alpha/processor.c:90 modules/devices/arm/processor.c:240 -#: modules/devices/ia64/processor.c:167 modules/devices/m68k/processor.c:87 -#: modules/devices/mips/processor.c:77 modules/devices/parisc/processor.c:158 -#: modules/devices/pci.c:108 modules/devices/ppc/processor.c:160 +#: modules/devices/alpha/processor.c:90 modules/devices/arm/processor.c:345 +#: modules/devices/e2k/processor.c:335 modules/devices/ia64/processor.c:167 +#: modules/devices/loongarch64/processor.c:77 +#: modules/devices/m68k/processor.c:87 modules/devices/mips/processor.c:77 +#: modules/devices/parisc/processor.c:158 modules/devices/ppc/processor.c:160 #: modules/devices/riscv/processor.c:186 modules/devices/sh/processor.c:87 -#: modules/devices/x86/processor.c:420 +#: modules/devices/x86/processor.c:659 modules/devices/x86/processor.c:812 msgid "Frequency" msgstr "Частота" -#: modules/devices/alpha/processor.c:91 modules/devices/arm/processor.c:241 -#: modules/devices/ia64/processor.c:168 modules/devices/m68k/processor.c:88 -#: modules/devices/mips/processor.c:78 modules/devices/parisc/processor.c:159 -#: modules/devices/ppc/processor.c:161 modules/devices/s390/processor.c:134 -#: modules/devices/sh/processor.c:90 modules/devices/x86/processor.c:421 +#: modules/devices/alpha/processor.c:91 modules/devices/arm/processor.c:346 +#: modules/devices/e2k/processor.c:336 modules/devices/ia64/processor.c:168 +#: modules/devices/m68k/processor.c:88 modules/devices/mips/processor.c:78 +#: modules/devices/parisc/processor.c:159 modules/devices/ppc/processor.c:161 +#: modules/devices/s390/processor.c:134 modules/devices/sh/processor.c:90 +#: modules/devices/x86/processor.c:660 msgid "BogoMips" msgstr "" -#: modules/devices/alpha/processor.c:92 modules/devices/arm/processor.c:242 -#: modules/devices/ia64/processor.c:169 modules/devices/m68k/processor.c:89 -#: modules/devices/mips/processor.c:79 modules/devices/parisc/processor.c:160 -#: modules/devices/ppc/processor.c:162 modules/devices/riscv/processor.c:187 -#: modules/devices/s390/processor.c:135 modules/devices/sh/processor.c:91 -#: modules/devices/sparc/processor.c:77 modules/devices/x86/processor.c:422 +#: modules/devices/alpha/processor.c:92 modules/devices/arm/processor.c:347 +#: modules/devices/e2k/processor.c:337 modules/devices/ia64/processor.c:169 +#: modules/devices/loongarch64/processor.c:79 +#: modules/devices/m68k/processor.c:89 modules/devices/mips/processor.c:79 +#: modules/devices/parisc/processor.c:160 modules/devices/ppc/processor.c:162 +#: modules/devices/riscv/processor.c:187 modules/devices/s390/processor.c:135 +#: modules/devices/sh/processor.c:91 modules/devices/sparc/processor.c:77 +#: modules/devices/x86/processor.c:661 msgid "Byte Order" msgstr "Порядок байтов" @@ -1700,7 +2417,7 @@ msgstr "Thumb (набор 16-битных инструкций)" msgctxt "arm-flag" msgid "26-Bit Model (Processor status register folded into program counter)" msgstr "" -"26-битная модель (регистр статуса процессора вложен в счетчик программы)" +"26-битная модель (регистр состояния процессора вложен в счетчик программы)" #. /flag:fastmult #: modules/devices/arm/arm_data.c:46 @@ -1847,66 +2564,77 @@ msgctxt "arm-flag" msgid "Advanced SIMD/NEON on AArch64 (arch>8)" msgstr "Дополнительный SIMD/NEON на AArch64 (arch>8)" -#: modules/devices/arm/processor.c:142 +#: modules/devices/arm/processor.c:143 msgid "ARM Processor" msgstr "Процессор ARM" -#: modules/devices/arm/processor.c:200 modules/devices/riscv/processor.c:147 -#: modules/devices/x86/processor.c:371 +#: modules/devices/arm/processor.c:214 modules/devices/riscv/processor.c:147 +#: modules/devices/x86/processor.c:610 msgid "Empty List" msgstr "Пустой список" -#: modules/devices/arm/processor.c:237 +#: modules/devices/arm/processor.c:240 modules/devices/gpu.c:160 +#: modules/devices/gpu.c:244 modules/devices/x86/processor.c:268 +msgid "Clocks" +msgstr "Частоты" + +#: modules/devices/arm/processor.c:286 modules/devices/arm/processor.c:299 +#: modules/devices/x86/processor.c:314 modules/devices/x86/processor.c:327 +#, c-format +msgid "%.2f-%.2f %s=%dx\n" +msgstr "" + +#: modules/devices/arm/processor.c:342 msgid "Linux Name" msgstr "Имя Linux" -#: modules/devices/arm/processor.c:238 +#: modules/devices/arm/processor.c:343 msgid "Decoded Name" msgstr "Декодированное имя" -#: modules/devices/arm/processor.c:239 modules/network/net.c:453 +#: modules/devices/arm/processor.c:344 modules/network/net.c:453 msgid "Mode" msgstr "Режим" -#: modules/devices/arm/processor.c:245 +#: modules/devices/arm/processor.c:350 msgid "ARM" msgstr "" -#: modules/devices/arm/processor.c:246 +#: modules/devices/arm/processor.c:351 msgid "Implementer" msgstr "Исполнитель" -#: modules/devices/arm/processor.c:247 +#: modules/devices/arm/processor.c:352 modules/devices/dmi_memory.c:950 msgid "Part" msgstr "Часть" -#: modules/devices/arm/processor.c:248 modules/devices/ia64/processor.c:162 +#: modules/devices/arm/processor.c:353 modules/devices/ia64/processor.c:162 #: modules/devices/parisc/processor.c:156 modules/devices/riscv/processor.c:183 msgid "Architecture" msgstr "Архитектура" -#: modules/devices/arm/processor.c:249 +#: modules/devices/arm/processor.c:354 msgid "Variant" msgstr "Вариант" -#: modules/devices/arm/processor.c:251 modules/devices/riscv/processor.c:190 -#: modules/devices/sparc/processor.c:78 modules/devices/x86/processor.c:428 +#: modules/devices/arm/processor.c:356 modules/devices/riscv/processor.c:190 +#: modules/devices/sparc/processor.c:78 modules/devices/x86/processor.c:667 msgid "Capabilities" msgstr "Возможности" -#: modules/devices/arm/processor.c:353 +#: modules/devices/arm/processor.c:468 msgid "SOC/Package" msgstr "" -#: modules/devices/arm/processor.c:357 -msgid "Clocks" -msgstr "" +#: modules/devices/arm/processor.c:472 modules/devices/x86/processor.c:753 +msgid "Logical CPU Config" +msgstr "Логическая конфигурация процессора" -#: modules/devices/arm/processor.c:372 +#: modules/devices/arm/processor.c:489 msgid "SOC/Package Information" msgstr "" -#: modules/devices/battery.c:181 +#: modules/devices/battery.c:178 #, c-format msgid "" "\n" @@ -1923,11 +2651,11 @@ msgstr "" "Состояние=%s (нагрузка: %s)\n" "Емкость=%s / %s (%.2f%%)\n" "Технология батареи=%s (%s)\n" -"Изготовитель=%s\n" +"Производитель=%s\n" "Номер модели=%s\n" "Серийный номер=%s\n" -#: modules/devices/battery.c:258 +#: modules/devices/battery.c:255 #, c-format msgid "" "\n" @@ -1948,7 +2676,7 @@ msgstr "" "Номер модели=%s\n" "Серийный номер=%s\n" -#: modules/devices/battery.c:346 +#: modules/devices/battery.c:343 #, c-format msgid "" "\n" @@ -1967,7 +2695,7 @@ msgstr "" "APM драйвер версии=%s\n" "APM BIOS версии=%s\n" -#: modules/devices/battery.c:358 +#: modules/devices/battery.c:355 #, c-format msgid "" "\n" @@ -1984,177 +2712,174 @@ msgstr "" "APM драйвер версии=%s\n" "APM BIOS версии=%s\n" -#: modules/devices/battery.c:385 +#: modules/devices/battery.c:382 msgid "" "[No batteries]\n" "No batteries found on this system=\n" msgstr "" -"[No batteries]\n" +"[Батареи отсутствуют]\n" "Батареи не найдены на этой системе=\n" -#: modules/devices.c:97 +#: modules/devices.c:101 +msgid "Graphics Processors" +msgstr "Графические процессоры" + +#: modules/devices.c:102 modules/devices/monitors.c:447 +#: modules/devices/monitors.c:493 +msgid "Monitors" +msgstr "Мониторы" + +#: modules/devices.c:103 modules/devices/pci.c:175 msgid "PCI Devices" msgstr "Устройства PCI" -#: modules/devices.c:98 modules/devices/usb.c:117 modules/devices/usb.c:156 -#: modules/devices/usb.c:416 +#: modules/devices.c:104 modules/devices/usb.c:211 msgid "USB Devices" msgstr "Устройства USB" -#: modules/devices.c:100 +#: modules/devices.c:105 +msgid "Firmware" +msgstr "Прошивка" + +#: modules/devices.c:107 msgid "Battery" msgstr "Батарея" -#: modules/devices.c:101 +#: modules/devices.c:108 msgid "Sensors" msgstr "Сенсоры" -#: modules/devices.c:105 -msgid "DMI" -msgstr "" +#: modules/devices.c:111 +msgid "System DMI" +msgstr "DMI системы" -#: modules/devices.c:106 -msgid "Memory SPD" -msgstr "Память SPD" +#: modules/devices.c:112 +msgid "Memory Devices" +msgstr "Устройства памяти" -#: modules/devices.c:111 +#: modules/devices.c:114 modules/devices.c:116 msgid "Device Tree" -msgstr "" +msgstr "Дерево устройств" -#: modules/devices.c:113 +#: modules/devices.c:118 msgid "Resources" msgstr "Ресурсы" -#: modules/devices.c:151 -#, c-format -msgid "%d physical processor" -msgid_plural "%d physical processors" -msgstr[0] "%d физический процессор" -msgstr[1] "%d физических процессора" -msgstr[2] "%d физических процессоров" - -#: modules/devices.c:152 -#, c-format -msgid "%d core" -msgid_plural "%d cores" -msgstr[0] "%d ядро" -msgstr[1] "%d ядра" -msgstr[2] "%d ядер" - -#: modules/devices.c:153 -#, c-format -msgid "%d thread" -msgid_plural "%d threads" -msgstr[0] "%d поток" -msgstr[1] "%d потока" -msgstr[2] "%d потоков" - -#. /NP procs; NC cores; NT threads -#: modules/devices.c:154 -#, c-format -msgid "%s; %s; %s" -msgstr "" - -#: modules/devices.c:572 -msgid "Field" -msgstr "Поле" - -#: modules/devices.c:572 modules/devices.c:604 -msgid "Value" -msgstr "Значение" - -#: modules/devices.c:604 +#: modules/devices.c:773 msgid "Sensor" msgstr "Сенсор" -#: modules/devices.c:604 modules/devices/dmi.c:53 -#: modules/devices/inputdevices.c:117 -msgid "Type" -msgstr "Тип" - -#: modules/devices.c:650 +#: modules/devices.c:831 modules/devices/dmi_memory.c:880 msgid "Devices" msgstr "Устройства" -#: modules/devices.c:662 +#: modules/devices.c:843 msgid "Update PCI ID listing" msgstr "Обновить список PCI ID" -#: modules/devices.c:674 -msgid "Update CPU feature database" -msgstr "Обновить базу данных функций процессора" +#: modules/devices.c:847 +msgid "Update USB ID listing" +msgstr "" + +#: modules/devices.c:851 +msgid "Update EDID vendor codes" +msgstr "" + +#: modules/devices.c:855 +msgid "Update IEEE OUI vendor codes" +msgstr "" + +#: modules/devices.c:859 +msgid "Update SD card manufacturer information" +msgstr "" + +#: modules/devices.c:864 +msgid "Update CPU flags database" +msgstr "" -#: modules/devices.c:702 +#: modules/devices.c:897 msgid "Gathers information about hardware devices" msgstr "Собирает информацию об устройствах" -#: modules/devices.c:721 +#: modules/devices.c:918 +msgid "A copy of pci.ids is not available on the system." +msgstr "" + +#: modules/devices.c:921 +msgid "A full pci.ids is not available on the system." +msgstr "" + +#: modules/devices.c:926 msgid "Resource information requires superuser privileges" msgstr "Для вывода информации о ресурсах нужны права администратора" -#: modules/devices/devicetree.c:50 +#: modules/devices.c:932 +msgid "" +"Any NVMe storage devices present are not listed.\n" +"udisksd is required for NVMe devices." +msgstr "" + +#: modules/devices/devicetree.c:52 msgid "Properties" msgstr "" -#: modules/devices/devicetree.c:51 +#: modules/devices/devicetree.c:53 msgid "Children" msgstr "" -#: modules/devices/devicetree.c:87 +#: modules/devices/devicetree.c:89 msgid "Node" -msgstr "" +msgstr "Узел" -#: modules/devices/devicetree.c:88 +#: modules/devices/devicetree.c:90 msgid "Node Path" msgstr "" -#: modules/devices/devicetree.c:89 +#: modules/devices/devicetree.c:91 msgid "Alias" msgstr "" -#: modules/devices/devicetree.c:89 modules/devices/devicetree.c:90 -msgid "(None)" -msgstr "" - -#: modules/devices/devicetree.c:90 +#: modules/devices/devicetree.c:92 msgid "Symbol" msgstr "" -#: modules/devices/devicetree.c:143 modules/devices/devicetree/pmac_data.c:79 +#: modules/devices/devicetree.c:145 modules/devices/devicetree/pmac_data.c:79 msgid "Platform" -msgstr "" +msgstr "Платформа" -#: modules/devices/devicetree.c:144 modules/devices/devicetree.c:209 +#: modules/devices/devicetree.c:146 modules/devices/devicetree.c:211 +#: modules/devices/gpu.c:249 msgid "Compatible" msgstr "" -#: modules/devices/devicetree.c:145 +#: modules/devices/devicetree.c:147 msgid "GPU-compatible" msgstr "" -#: modules/devices/devicetree.c:160 +#: modules/devices/devicetree.c:162 msgid "Raspberry Pi or Compatible" msgstr "" -#: modules/devices/devicetree.c:162 modules/devices/devicetree.c:189 -#: modules/devices/devicetree.c:208 modules/devices/devicetree/rpi_data.c:160 -#: modules/devices/dmi.c:49 modules/devices/dmi.c:55 +#: modules/devices/devicetree.c:164 modules/devices/devicetree.c:191 +#: modules/devices/devicetree.c:210 modules/devices/devicetree/rpi_data.c:169 +#: modules/devices/dmi.c:42 modules/devices/dmi.c:52 modules/devices/dmi.c:58 +#: modules/devices/usb.c:181 msgid "Serial Number" msgstr "Серийный номер" -#: modules/devices/devicetree.c:163 modules/devices/devicetree/rpi_data.c:157 +#: modules/devices/devicetree.c:165 modules/devices/devicetree/rpi_data.c:166 msgid "RCode" msgstr "" -#: modules/devices/devicetree.c:163 +#: modules/devices/devicetree.c:165 msgid "No revision code available; unable to lookup model details." msgstr "" -#: modules/devices/devicetree.c:188 +#: modules/devices/devicetree.c:190 msgid "More" -msgstr "" +msgstr "Больше" -#: modules/devices/devicetree.c:268 +#: modules/devices/devicetree.c:271 msgid "Messages" msgstr "" @@ -2178,257 +2903,769 @@ msgstr "" msgid "PMAC Generation" msgstr "" -#: modules/devices/devicetree/rpi_data.c:152 -#: modules/devices/devicetree/rpi_data.c:153 +#: modules/devices/devicetree/rpi_data.c:161 +#: modules/devices/devicetree/rpi_data.c:162 msgid "Raspberry Pi" msgstr "" -#: modules/devices/devicetree/rpi_data.c:153 +#: modules/devices/devicetree/rpi_data.c:162 msgid "Board Name" -msgstr "" +msgstr "Название платы" -#: modules/devices/devicetree/rpi_data.c:154 +#: modules/devices/devicetree/rpi_data.c:163 msgid "PCB Revision" msgstr "" -#: modules/devices/devicetree/rpi_data.c:155 +#: modules/devices/devicetree/rpi_data.c:164 msgid "Introduction" msgstr "" -#: modules/devices/devicetree/rpi_data.c:156 modules/devices/spd-decode.c:1510 -#: modules/devices/usb.c:84 modules/devices/usb.c:217 +#: modules/devices/devicetree/rpi_data.c:165 modules/devices/usb.c:173 msgid "Manufacturer" -msgstr "" +msgstr "Производитель" -#: modules/devices/devicetree/rpi_data.c:158 +#: modules/devices/devicetree/rpi_data.c:167 msgid "SOC (spec)" msgstr "" -#: modules/devices/devicetree/rpi_data.c:159 +#: modules/devices/devicetree/rpi_data.c:168 msgid "Memory (spec)" msgstr "" -#: modules/devices/devicetree/rpi_data.c:161 +#: modules/devices/devicetree/rpi_data.c:170 msgid "Permanent overvolt bit" msgstr "" -#: modules/devices/devicetree/rpi_data.c:161 +#: modules/devices/devicetree/rpi_data.c:170 msgctxt "rpi-ov-bit" msgid "Set" msgstr "" -#: modules/devices/devicetree/rpi_data.c:161 +#: modules/devices/devicetree/rpi_data.c:170 msgctxt "rpi-ov-bit" msgid "Not set" msgstr "" -#: modules/devices/devmemory.c:101 -msgid "Total Memory" -msgstr "Общая память" - -#: modules/devices/devmemory.c:102 -msgid "Free Memory" -msgstr "Свободная память" - -#: modules/devices/devmemory.c:103 -msgid "Cached Swap" -msgstr "Кэш подкачки" - -#: modules/devices/devmemory.c:104 -msgid "High Memory" -msgstr "Высокая память" - -#: modules/devices/devmemory.c:105 -msgid "Free High Memory" -msgstr "Свободная высокая память" - -#: modules/devices/devmemory.c:106 -msgid "Low Memory" -msgstr "Низкая память" - -#: modules/devices/devmemory.c:107 -msgid "Free Low Memory" -msgstr "Свободная низкая память" - -#: modules/devices/devmemory.c:108 -msgid "Virtual Memory" -msgstr "Виртуальная память" - -#: modules/devices/devmemory.c:109 -msgid "Free Virtual Memory" -msgstr "Свободная виртуальная память" - -#: modules/devices/dmi.c:36 modules/devices/inputdevices.c:120 -#: modules/devices/usb.c:83 modules/devices/usb.c:216 modules/devices/usb.c:348 +#: modules/devices/dmi.c:37 modules/devices/inputdevices.c:144 +#: modules/devices/usb.c:170 msgid "Product" msgstr "Продукт" -#: modules/devices/dmi.c:38 modules/devices/ia64/processor.c:164 -#: modules/devices/sh/processor.c:86 +#: modules/devices/dmi.c:39 modules/devices/e2k/processor.c:332 +#: modules/devices/ia64/processor.c:164 modules/devices/sh/processor.c:86 msgid "Family" msgstr "Семейство" -#: modules/devices/dmi.c:41 -msgid "BIOS" +#: modules/devices/dmi.c:43 +msgid "SKU" msgstr "" -#: modules/devices/dmi.c:50 modules/devices/dmi.c:56 -msgid "Asset Tag" -msgstr "" +#: modules/devices/dmi.c:44 +msgid "BIOS" +msgstr "BIOS" -#: modules/devices/dmi.c:51 -msgid "Chassis" -msgstr "Шасси" +#: modules/devices/dmi.c:53 modules/devices/dmi.c:59 +msgid "Asset Tag" +msgstr "Метка актива" -#: modules/devices/dmi.c:116 +#: modules/devices/dmi.c:119 modules/devices/dmi_memory.c:936 +#: modules/devices/x86/processor.c:696 msgid "(Not available; Perhaps try running HardInfo as root.)" msgstr "(Недоступно, попробуйте выполнить HardInfo с правами администратора.)" -#: modules/devices/ia64/processor.c:108 -msgid "IA64 Processor" -msgstr "Процессор IA64" - -#: modules/devices/ia64/processor.c:163 -msgid "Architecture Revision" -msgstr "Ревизия архитектуры" +#: modules/devices/dmi.c:160 +msgid "DMI Unavailable" +msgstr "" -#: modules/devices/ia64/processor.c:170 -msgid "CPU regs" -msgstr "Регистры" +#: modules/devices/dmi.c:162 +msgid "DMI is not avaliable. Perhaps this platform does not provide DMI." +msgstr "" -#: modules/devices/ia64/processor.c:171 -msgid "Features" -msgstr "Возможности" +#: modules/devices/dmi.c:163 +msgid "DMI is not available; Perhaps try running HardInfo as root." +msgstr "" -#: modules/devices/inputdevices.c:115 modules/devices/pci.c:214 -#: modules/devices/usb.c:82 modules/devices/usb.c:215 modules/devices/usb.c:347 -msgid "Device Information" -msgstr "Информация об устройстве" +#: modules/devices/dmi_memory.c:55 +msgid "RAM" +msgstr "ОЗУ" -#: modules/devices/inputdevices.c:118 modules/devices/usb.c:92 -#: modules/devices/usb.c:240 modules/devices/usb.c:356 -msgid "Bus" -msgstr "Шина" +#: modules/devices/dmi_memory.c:650 +msgid "Serial Presence Detect (SPD)" +msgstr "" -#: modules/devices/inputdevices.c:124 -msgid "Connected to" -msgstr "Подключен к" +#: modules/devices/dmi_memory.c:653 +msgid "SPD Revision" +msgstr "" -#: modules/devices/inputdevices.c:128 -msgid "InfraRed port" -msgstr "Инфракрасный порт" +#: modules/devices/dmi_memory.c:654 modules/devices/dmi_memory.c:803 +msgid "Form Factor" +msgstr "Форм-фактор" -#: modules/devices/m68k/processor.c:85 modules/devices/riscv/processor.c:185 -msgid "MMU" +#: modules/devices/dmi_memory.c:656 +msgid "Module Vendor" msgstr "" -#: modules/devices/m68k/processor.c:86 modules/devices/sparc/processor.c:76 -msgid "FPU" +#: modules/devices/dmi_memory.c:658 +msgid "DRAM Vendor" msgstr "" -#: modules/devices/m68k/processor.c:90 -msgid "Calibration" -msgstr "Калибровка" +#: modules/devices/dmi_memory.c:660 modules/devices/dmi_memory.c:807 +msgid "Part Number" +msgstr "Номер детали" -#: modules/devices/mips/processor.c:76 -msgid "System Type" -msgstr "Тип системы" +#: modules/devices/dmi_memory.c:662 +msgid "Manufacturing Date (Week / Year)" +msgstr "" -#: modules/devices/parisc/processor.c:107 -msgid "PA-RISC Processor" -msgstr "Процессор PA-RISC" +#: modules/devices/dmi_memory.c:695 modules/devices/dmi_memory.c:933 +msgid "Memory Device List" +msgstr "" -#: modules/devices/parisc/processor.c:157 -msgid "System" -msgstr "Система" +#: modules/devices/dmi_memory.c:743 +msgid "Memory Array" +msgstr "Массив памяти" -#: modules/devices/parisc/processor.c:161 -msgid "HVersion" +#: modules/devices/dmi_memory.c:744 modules/devices/x86/processor.c:715 +msgid "DMI Handle" msgstr "" -#: modules/devices/parisc/processor.c:162 -msgid "SVersion" -msgstr "" +#: modules/devices/dmi_memory.c:745 modules/devices/dmi_memory.c:801 +#: modules/devices/dmi_memory.c:838 modules/devices/dmi_memory.c:947 +msgid "Locator" +msgstr "Локатор" -#: modules/devices/parisc/processor.c:163 modules/devices/x86/processor.c:425 -msgid "Cache" -msgstr "Кэш" +#: modules/devices/dmi_memory.c:746 +msgid "Use" +msgstr "Использование" -#: modules/devices/pci.c:106 -msgid "IRQ" -msgstr "" +#: modules/devices/dmi_memory.c:747 +msgid "Error Correction Type" +msgstr "Тип коррекции ошибок" -#: modules/devices/pci.c:110 -msgid "Latency" -msgstr "Отклик" +#: modules/devices/dmi_memory.c:748 +msgid "Size (Present / Max)" +msgstr "Размер (Настоящий / Максимальный)" -#: modules/devices/pci.c:112 -msgid "Bus Master" -msgstr "Главная шина" +#: modules/devices/dmi_memory.c:749 +msgid "Devices (Populated / Sockets)" +msgstr "Устройства (Заполнено / Сокетов)" -#: modules/devices/pci.c:118 -msgid "Kernel modules" -msgstr "Модули ядра" +#: modules/devices/dmi_memory.c:750 modules/devices/dmi_memory.c:881 +msgid "Types Present" +msgstr "Типы в наличии" -#: modules/devices/pci.c:124 -#, c-format -msgid "%s=%s (%s)\n" -msgstr "" +#: modules/devices/dmi_memory.c:751 +msgid "ROM Size" +msgstr "Размер ROM" -#: modules/devices/pci.c:126 -msgid "OEM Vendor" -msgstr "Производитель OEM" +#: modules/devices/dmi_memory.c:799 modules/devices/dmi_memory.c:836 +msgid "Memory Socket" +msgstr "Сокет памяти" -#: modules/devices/pci.c:153 -msgid "prefetchable" -msgstr "" +#: modules/devices/dmi_memory.c:800 modules/devices/dmi_memory.c:837 +msgid "DMI Handles (Array, Socket)" +msgstr "DMI Handles (Массив, Сокет)" -#: modules/devices/pci.c:154 -msgid "non-prefetchable" -msgstr "" +#: modules/devices/dmi_memory.c:802 modules/devices/dmi_memory.c:839 +msgid "Bank Locator" +msgstr "Локатор банка" -#: modules/devices/pci.c:163 -msgid "I/O ports at" -msgstr "Порты ввода/вывода на" +#: modules/devices/dmi_memory.c:809 +msgid "Rated Speed" +msgstr "Оцениваемая скорость" -#: modules/devices/pci.c:216 modules/devices/usb.c:89 modules/devices/usb.c:237 -#: modules/devices/usb.c:353 -msgid "Class" -msgstr "Класс" +#: modules/devices/dmi_memory.c:810 +msgid "Configured Speed" +msgstr "Настроенная скорость" -#: modules/devices/pci.c:217 -msgid "Domain" -msgstr "Домен" +#: modules/devices/dmi_memory.c:811 +msgid "Data Width/Total Width" +msgstr "Ширина данных/Общая ширина" -#: modules/devices/pci.c:218 -msgid "Bus, device, function" -msgstr "Шина, устройство, функция" +#: modules/devices/dmi_memory.c:812 +msgid "Rank" +msgstr "Ранг" -#: modules/devices/pci.c:243 -msgid "No PCI devices found" -msgstr "Устройства PCI не найдены" +#: modules/devices/dmi_memory.c:813 +msgid "Minimum Voltage" +msgstr "Минимальное напряжение" -#: modules/devices/ppc/processor.c:117 -msgid "POWER Processor" -msgstr "Процессор POWER" +#: modules/devices/dmi_memory.c:814 +msgid "Maximum Voltage" +msgstr "Максимальное напряжение" -#: modules/devices/printers.c:81 -msgid "⚬ Can do black and white printing=\n" -msgstr "⚬ Может печатать черно-белым=\n" +#: modules/devices/dmi_memory.c:815 +msgid "Configured Voltage" +msgstr "Настроенное напряжение" -#: modules/devices/printers.c:83 -msgid "⚬ Can do color printing=\n" -msgstr "⚬ Может печатать цветным=\n" +#: modules/devices/dmi_memory.c:840 modules/devices/dmi_memory.c:847 +#: modules/devices/monitors.c:493 +msgid "(Empty)" +msgstr "(Пусто)" -#: modules/devices/printers.c:85 -#, fuzzy -msgid "⚬ Can do duplexing=\n" -msgstr "Не исправлять:" +#: modules/devices/dmi_memory.c:878 +msgid "Serial Presence Detect (SPD) Summary" +msgstr "" -#: modules/devices/printers.c:87 -#, fuzzy -msgid "⚬ Can do staple output=\n" -msgstr "Выходной файл не может быть переименован." +#: modules/devices/dmi_memory.c:1004 +msgid " dmidecode utility available" +msgstr " наличие утилиты dmidecode" + +#: modules/devices/dmi_memory.c:1005 +msgid " ... and HardInfo running with superuser privileges" +msgstr " ... и запуск HardInfo с правами администратора" + +#: modules/devices/dmi_memory.c:1006 +msgid "" +" at24 (or eeprom) module loaded (for SDR, DDR, DDR2, DDR3)" +msgstr "" +" загруженный модуль at24 (или eeprom) (для SDR, DDR, DDR2, DDR3)" + +#: modules/devices/dmi_memory.c:1007 +msgid "" +" ... or ee1004 module loaded and configured! " +"(for DDR4)" +msgstr "" +" ... или загруженный и настроенный модуль ee1004! (for DDR4)" + +#: modules/devices/dmi_memory.c:1016 +msgid "Memory information requires one or both of the following:" +msgstr "" +"Для получения информации о памяти требуется минимум одно из " +"следующего:" + +#: modules/devices/dmi_memory.c:1042 +msgid "" +"\"More often than not, information contained in the DMI tables is " +"inaccurate,\n" +"incomplete or simply wrong.\" -dmidecode manual page" +msgstr "" + +#: modules/devices/e2k/processor.c:30 modules/devices/x86/processor.c:149 +msgid "Cache information not available=\n" +msgstr "Информация о кэше недоступна=\n" + +#: modules/devices/e2k/processor.c:36 modules/devices/x86/processor.c:155 +#, c-format +msgid "Level %d (%s)=%d-way set-associative, %d sets, %dKB size\n" +msgstr "" +"Уровень %d (%s)=%d-канальный множественно-ассоциативный, %d множеств, размер " +"%d кБ\n" + +#. /cache type, as appears in: Level 1 (Data) +#: modules/devices/e2k/processor.c:51 modules/devices/x86/processor.c:170 +msgctxt "cache-type" +msgid "Data" +msgstr "данные" + +#. /cache type, as appears in: Level 1 (Instruction) +#: modules/devices/e2k/processor.c:52 modules/devices/x86/processor.c:171 +msgctxt "cache-type" +msgid "Instruction" +msgstr "инструкции" + +#. /cache type, as appears in: Level 2 (Unified) +#: modules/devices/e2k/processor.c:53 modules/devices/x86/processor.c:172 +msgctxt "cache-type" +msgid "Unified" +msgstr "унифицированный" + +#: modules/devices/e2k/processor.c:157 modules/devices/x86/processor.c:367 +msgid "Caches" +msgstr "Кэши" + +#: modules/devices/e2k/processor.c:208 modules/devices/e2k/processor.c:225 +#: modules/devices/x86/processor.c:418 modules/devices/x86/processor.c:435 +#, c-format +msgid "Level %d (%s)#%d=%dx %dKB (%dKB), %d-way set-associative, %d sets\n" +msgstr "" +"Уровень %d (%s)#%d=%dx %d кБ (%d кБ), %d-канальный множественно-" +"ассоциативный, %d множеств\n" + +#: modules/devices/firmware.c:36 +msgid "Device cannot be removed easily" +msgstr "" + +#: modules/devices/firmware.c:37 +msgid "Device is updatable in this or any other mode" +msgstr "" + +#: modules/devices/firmware.c:38 +msgid "Update can only be done from offline mode" +msgstr "" + +#: modules/devices/firmware.c:39 +msgid "Requires AC power" +msgstr "" + +#: modules/devices/firmware.c:40 +msgid "Is locked and can be unlocked" +msgstr "" + +#: modules/devices/firmware.c:41 +msgid "Is found in current metadata" +msgstr "" + +#: modules/devices/firmware.c:42 +msgid "Requires a bootloader mode to be manually enabled by the user" +msgstr "" + +#: modules/devices/firmware.c:43 +msgid "Has been registered with other plugins" +msgstr "" + +#: modules/devices/firmware.c:44 +msgid "Requires a reboot to apply firmware or to reload hardware" +msgstr "" + +#: modules/devices/firmware.c:45 +msgid "Requires system shutdown to apply firmware" +msgstr "" + +#: modules/devices/firmware.c:46 +msgid "Has been reported to a metadata server" +msgstr "" + +#: modules/devices/firmware.c:47 +msgid "User has been notified" +msgstr "" + +#: modules/devices/firmware.c:48 +msgid "Always use the runtime version rather than the bootloader" +msgstr "" + +#: modules/devices/firmware.c:49 +msgid "Install composite firmware on the parent before the child" +msgstr "" + +#: modules/devices/firmware.c:50 +msgid "Is currently in bootloader mode" +msgstr "" + +#: modules/devices/firmware.c:51 +msgid "The hardware is waiting to be replugged" +msgstr "" + +#: modules/devices/firmware.c:52 +msgid "Ignore validation safety checks when flashing this device" +msgstr "" + +#: modules/devices/firmware.c:53 +msgid "Requires the update to be retried with a new plugin" +msgstr "" + +#: modules/devices/firmware.c:54 +msgid "Do not add instance IDs from the device baseclass" +msgstr "" + +#: modules/devices/firmware.c:55 +msgid "Device update needs to be separately activated" +msgstr "" + +#: modules/devices/firmware.c:56 +msgid "" +"Ensure the version is a valid semantic version, e.g. numbers separated with " +"dots" +msgstr "" + +#: modules/devices/firmware.c:57 +msgid "Extra metadata can be exposed about this device" +msgstr "" + +#: modules/devices/firmware.c:74 +msgid "DeviceId" +msgstr "" + +#: modules/devices/firmware.c:74 modules/devices/firmware.c:187 +msgid "Guid" +msgstr "" + +#: modules/devices/firmware.c:74 +msgid "Plugin" +msgstr "Подключение" + +#: modules/devices/firmware.c:74 modules/devices/firmware.c:205 +#: modules/network.c:380 +msgid "Flags" +msgstr "Флаги" + +#: modules/devices/firmware.c:75 +msgid "VendorId" +msgstr "" + +#: modules/devices/firmware.c:75 +msgid "VersionBootloader" +msgstr "" + +#: modules/devices/firmware.c:76 modules/devices/firmware.c:179 +msgid "Icon" +msgstr "Ярлык" + +#: modules/devices/firmware.c:76 +msgid "InstallDuration" +msgstr "" + +#: modules/devices/firmware.c:76 modules/devices/firmware.c:197 +msgid "Created" +msgstr "Создан" + +#: modules/devices/firmware.c:244 +msgid "Firmware List" +msgstr "" + +#: modules/devices/firmware.c:257 +msgid "Requires the fwupd daemon." +msgstr "" + +#: modules/devices/gpu.c:96 modules/devices/pci.c:111 +#: modules/devices/storage.c:58 +msgid "SVendor" +msgstr "" + +#: modules/devices/gpu.c:97 modules/devices/pci.c:112 +#: modules/devices/storage.c:59 +msgid "SDevice" +msgstr "" + +#: modules/devices/gpu.c:105 modules/devices/pci.c:122 +#: modules/devices/storage.c:68 +msgid "PCI Express" +msgstr "" + +#: modules/devices/gpu.c:106 modules/devices/pci.c:124 +#: modules/devices/storage.c:70 +msgid "Maximum Link Width" +msgstr "Максимальная ширина линии" + +#: modules/devices/gpu.c:107 modules/devices/pci.c:126 +#: modules/devices/storage.c:71 +msgid "Maximum Link Speed" +msgstr "Максимальная скорость линии" + +#: modules/devices/gpu.c:107 modules/devices/pci.c:125 +#: modules/devices/pci.c:126 modules/devices/storage.c:71 +msgid "GT/s" +msgstr "ГТ/сек" + +#: modules/devices/gpu.c:117 +msgid "NVIDIA" +msgstr "" + +#: modules/devices/gpu.c:119 +msgid "BIOS Version" +msgstr "Версия BIOS" + +#: modules/devices/gpu.c:120 +msgid "UUID" +msgstr "" + +#: modules/devices/gpu.c:154 modules/devices/gpu.c:240 +#: modules/devices/inputdevices.c:139 modules/devices/pci.c:143 +#: modules/devices/usb.c:169 +msgid "Device Information" +msgstr "Информация об устройстве" + +#: modules/devices/gpu.c:155 modules/devices/gpu.c:241 +#: modules/devices/storage.c:69 +msgid "Location" +msgstr "Место" + +#: modules/devices/gpu.c:156 +msgid "DRM Device" +msgstr "Устройство DRM" + +#: modules/devices/gpu.c:157 modules/devices/pci.c:144 +#: modules/devices/usb.c:136 modules/devices/usb.c:177 +msgid "Class" +msgstr "Класс" + +#: modules/devices/gpu.c:166 modules/devices/pci.c:149 +msgid "In Use" +msgstr "Используется" + +#: modules/devices/gpu.c:201 +msgid "Unknown integrated GPU" +msgstr "Неизвестный интегрированный графический процессор" + +#: modules/devices/gpu.c:209 +msgid "clock-frequency property" +msgstr "" + +#: modules/devices/gpu.c:210 +msgid "Operating Points (OPPv1)" +msgstr "" + +#: modules/devices/gpu.c:211 +msgid "Operating Points (OPPv2)" +msgstr "" + +#: modules/devices/gpu.c:247 +msgid "Device Tree Node" +msgstr "" + +#: modules/devices/gpu.c:250 modules/devices/monitors.c:473 +#: modules/network/net.c:454 +msgid "Status" +msgstr "Состояние" + +#: modules/devices/gpu.c:267 +msgid "GPUs" +msgstr "Графические процессоры" + +#: modules/devices/gpu.c:291 +msgid "No GPU devices found" +msgstr "" + +#: modules/devices/ia64/processor.c:108 +msgid "IA64 Processor" +msgstr "Процессор IA64" + +#: modules/devices/ia64/processor.c:163 +msgid "Architecture Revision" +msgstr "Ревизия архитектуры" + +#: modules/devices/ia64/processor.c:170 +msgid "CPU regs" +msgstr "Регистры" + +#: modules/devices/ia64/processor.c:171 +msgid "Features" +msgstr "Возможности" + +#: modules/devices/inputdevices.c:142 modules/devices/pci.c:153 +#: modules/devices/usb.c:183 +msgid "Bus" +msgstr "Шина" + +#: modules/devices/inputdevices.c:148 +msgid "Connected to" +msgstr "Подключен к" + +#: modules/devices/inputdevices.c:152 +msgid "InfraRed port" +msgstr "Инфракрасный порт" + +#: modules/devices/loongarch64/processor.c:76 +#: modules/devices/mips/processor.c:76 +msgid "System Type" +msgstr "Тип системы" + +#: modules/devices/loongarch64/processor.c:78 +msgid "BogoMIPS" +msgstr "" + +#: modules/devices/m68k/processor.c:85 modules/devices/riscv/processor.c:185 +msgid "MMU" +msgstr "" + +#: modules/devices/m68k/processor.c:86 modules/devices/sparc/processor.c:76 +msgid "FPU" +msgstr "" + +#: modules/devices/m68k/processor.c:90 +msgid "Calibration" +msgstr "Калибровка" + +#: modules/devices/monitors.c:29 modules/devices/monitors.c:255 +#: modules/devices/monitors.c:348 modules/devices/spd-decode.c:665 +msgid "(Unspecified)" +msgstr "(Не определено)" + +#: modules/devices/monitors.c:230 +#, c-format +msgid "Week %d of %d" +msgstr "%d неделя %d г." + +#: modules/devices/monitors.c:240 +msgid "Ok" +msgstr "OK" + +#: modules/devices/monitors.c:240 +msgid "Fail" +msgstr "Ошибка" + +#: modules/devices/monitors.c:268 modules/devices/monitors.c:276 +#: modules/devices/monitors.c:284 modules/devices/monitors.c:295 +#: modules/devices/monitors.c:303 modules/devices/monitors.c:310 +#: modules/devices/monitors.c:318 modules/devices/monitors.c:326 +#: modules/devices/monitors.c:334 modules/devices/monitors.c:340 +msgid "(Empty List)" +msgstr "(Пустой список)" + +#: modules/devices/monitors.c:392 +msgid "Signal Type" +msgstr "Тип сигнала" + +#: modules/devices/monitors.c:392 +msgid "Digital" +msgstr "Цифровой" + +#: modules/devices/monitors.c:392 +msgid "Analog" +msgstr "Аналоговый" + +#: modules/devices/monitors.c:393 modules/devices/usb.c:135 +#: modules/network.c:310 modules/network.c:363 modules/network.c:380 +msgid "Interface" +msgstr "Интерфейс" + +#: modules/devices/monitors.c:394 +msgid "Bits per Color Channel" +msgstr "Бит на цветовой канал" + +#: modules/devices/monitors.c:395 +msgid "Speaker Allocation" +msgstr "Расположение динамиков" + +#: modules/devices/monitors.c:396 +msgid "Output (Max)" +msgstr "Вывод (максимально)" + +#: modules/devices/monitors.c:399 +msgid "EDID Device" +msgstr "Устройство EDID" + +#: modules/devices/monitors.c:403 +msgid "Serial" +msgstr "Серия" + +#: modules/devices/monitors.c:404 +msgid "Manufacture Date" +msgstr "Дата производства" + +#: modules/devices/monitors.c:405 +msgid "EDID Meta" +msgstr "Метаданные EDID" + +#: modules/devices/monitors.c:406 +msgid "Data Size" +msgstr "Размер данных" + +#: modules/devices/monitors.c:406 +msgid "bytes" +msgstr "байт" + +#: modules/devices/monitors.c:408 +msgid "Extension Blocks" +msgstr "Блоки расширений" + +#: modules/devices/monitors.c:409 +msgid "Extended to" +msgstr "Расширено до" + +#: modules/devices/monitors.c:410 +msgid "Checksum" +msgstr "Контрольная сумма" + +#: modules/devices/monitors.c:411 +msgid "EDID Descriptors" +msgstr "Дескрипторы EDID" + +#: modules/devices/monitors.c:412 +msgid "Detailed Timing Descriptors (DTD)" +msgstr "Подробные дескрипторы тайминга (DTD)" + +#: modules/devices/monitors.c:413 +msgid "Established Timings Bitmap (ETB)" +msgstr "Битовый массив установленных таймингов (ETB)" + +#: modules/devices/monitors.c:414 +msgid "Standard Timings (STD)" +msgstr "Стнадартные тайминги (STD)" + +#: modules/devices/monitors.c:415 +msgid "E-EDID Extension Blocks" +msgstr "Блоки расширений E-EDID" + +#: modules/devices/monitors.c:416 +msgid "EIA/CEA-861 Data Blocks" +msgstr "Блоки данных EIA/CEA-861" + +#: modules/devices/monitors.c:417 +msgid "EIA/CEA-861 Short Audio Descriptors" +msgstr "Короткие дескрипторы видео EIA/CEA-861" + +#: modules/devices/monitors.c:418 +msgid "EIA/CEA-861 Short Video Descriptors" +msgstr "Короткие дескрипторы аудио EIA/CEA-861" + +#: modules/devices/monitors.c:419 +msgid "DisplayID Timings" +msgstr "Тайминги DisplayID" + +#: modules/devices/monitors.c:420 +msgid "DisplayID Strings" +msgstr "Строки DisplayID" + +#: modules/devices/monitors.c:421 +msgid "Hex Dump" +msgstr "Дамп данных в шестнадцатеричном формате" + +#: modules/devices/monitors.c:421 +msgid "Data" +msgstr "Данные" + +#: modules/devices/monitors.c:471 modules/devices/monitors.c:502 +#: modules/devices/pci.c:151 modules/devices/usb.c:182 +msgid "Connection" +msgstr "Подключение" + +#: modules/devices/monitors.c:472 +msgid "DRM" +msgstr "" + +#: modules/devices/parisc/processor.c:107 +msgid "PA-RISC Processor" +msgstr "Процессор PA-RISC" + +#: modules/devices/parisc/processor.c:161 +msgid "HVersion" +msgstr "" + +#: modules/devices/parisc/processor.c:162 +msgid "SVersion" +msgstr "" + +#: modules/devices/pci.c:123 +msgid "Link Width" +msgstr "Ширина линии" + +#: modules/devices/pci.c:125 +msgid "Link Speed" +msgstr "Скорость линии" + +#: modules/devices/pci.c:152 +msgid "Domain" +msgstr "Домен" + +#: modules/devices/pci.c:155 +msgid "Function" +msgstr "Функция" + +#: modules/devices/pci.c:196 +msgid "No PCI devices found" +msgstr "Устройства PCI не найдены" + +#: modules/devices/ppc/processor.c:117 +msgid "POWER Processor" +msgstr "Процессор POWER" + +#: modules/devices/printers.c:81 +msgid "⚬ Can do black and white printing=\n" +msgstr "⚬ Может печатать черно-белым=\n" + +#: modules/devices/printers.c:83 +msgid "⚬ Can do color printing=\n" +msgstr "⚬ Может печатать цветным=\n" + +#: modules/devices/printers.c:85 +msgid "⚬ Can do duplexing=\n" +msgstr "⚬ Может печатать на обеих сторонах=\n" + +#: modules/devices/printers.c:87 +msgid "⚬ Can do staple output=\n" +msgstr "⚬ Может скреплять на выходе=\n" #: modules/devices/printers.c:89 msgid "⚬ Can do copies=\n" @@ -2458,7 +3695,7 @@ msgstr "Печатается задача" msgid "Stopped" msgstr "Остановлен" -#: modules/devices/printers.c:190 +#: modules/devices/printers.c:191 msgid "" "[Printers]\n" "No suitable CUPS library found=" @@ -2466,11 +3703,11 @@ msgstr "" "[Принтеры]\n" "Подходящей библиотеки CUPS не найдено=" -#: modules/devices/printers.c:200 +#: modules/devices/printers.c:201 msgid "[Printers (CUPS)]\n" msgstr "[Принтеры (CUPS)]\n" -#: modules/devices/printers.c:263 +#: modules/devices/printers.c:265 msgid "" "[Printers]\n" "No printers found=\n" @@ -2614,35 +3851,488 @@ msgstr "Частота шины" msgid "Module Frequency" msgstr "Частота модуля" -#: modules/devices/spd-decode.c:1475 +#: modules/devices/spd-decode.c:306 +msgid "Row address bits" +msgstr "" + +#: modules/devices/spd-decode.c:307 +msgid "Column address bits" +msgstr "" + +#: modules/devices/spd-decode.c:308 +msgid "Number of rows" +msgstr "" + +#: modules/devices/spd-decode.c:309 +msgid "Data width" +msgstr "" + +#: modules/devices/spd-decode.c:310 +msgid "Interface signal levels" +msgstr "" + +#: modules/devices/spd-decode.c:311 +msgid "Configuration type" +msgstr "" + +#: modules/devices/spd-decode.c:312 +msgid "Refresh" +msgstr "" + +#: modules/devices/spd-decode.c:313 modules/devices/spd-decode.c:397 +#: modules/devices/spd-decode.c:687 +msgid "Timings" +msgstr "Тайминги" + +#: modules/devices/spd-decode.c:550 modules/devices/spd-decode.c:942 +#: modules/devices/spd-decode.c:984 modules/devices/x86/processor.c:717 +msgid "Voltage" +msgstr "Напряжение" + +#: modules/devices/spd-decode.c:551 modules/devices/spd-decode.c:986 +msgid "JEDEC Timings" +msgstr "" + +#: modules/devices/spd-decode.c:663 +msgid "Ranks" +msgstr "" + +#: modules/devices/spd-decode.c:664 +msgid "IO Pins per Chip" +msgstr "" + +#: modules/devices/spd-decode.c:665 +msgid "Die count" +msgstr "" + +#: modules/devices/spd-decode.c:666 +msgid "Thermal Sensor" +msgstr "" + +#: modules/devices/spd-decode.c:666 +msgid "Present" +msgstr "" + +#: modules/devices/spd-decode.c:666 +msgid "Not present" +msgstr "" + +#: modules/devices/spd-decode.c:667 +msgid "Supported Voltages" +msgstr "" + +#: modules/devices/spd-decode.c:671 +msgid "Supported CAS Latencies" +msgstr "" + +#: modules/devices/spd-decode.c:708 +msgid "Invalid" +msgstr "" + +#: modules/devices/spd-decode.c:940 +msgid "XMP Profile" +msgstr "XMP-профиль" + +#: modules/devices/spd-decode.c:941 modules/devices/usb.c:176 +msgid "Speed" +msgstr "Скорость" + +#: modules/devices/spd-decode.c:943 +msgid "XMP Timings" +msgstr "" + +#: modules/devices/spd-decode.c:985 +msgid "XMP" +msgstr "" + +#: modules/devices/storage.c:46 modules/devices/storage.c:55 +msgid "NVMe Controller" +msgstr "NVMe-контроллер" + +#: modules/devices/storage.c:138 +msgid "Read Error Rate" +msgstr "Частота ошибок чтения" + +#: modules/devices/storage.c:139 +msgid "Throughput Performance" +msgstr "Общая производительность диска" + +#: modules/devices/storage.c:140 +msgid "Spin-Up Time" +msgstr "Время раскрутки шпинделя" + +#: modules/devices/storage.c:141 +msgid "Start/Stop Count" +msgstr "Количество циклов старт/стоп" + +#: modules/devices/storage.c:142 +msgid "Reallocated Sector Count" +msgstr "Количество переназначенных секторов" + +#: modules/devices/storage.c:143 +msgid "Read Channel Margin" +msgstr "Запас канала чтения" + +#: modules/devices/storage.c:144 +msgid "Seek Error Rate" +msgstr "Частота возникновения ошибок позиционирования головок" + +#: modules/devices/storage.c:145 +msgid "Seek Timer Performance" +msgstr "Средняя производительность операции позиционирования головок" + +#: modules/devices/storage.c:146 modules/devices/storage.c:185 +msgid "Power-On Hours" +msgstr "Время во включенном состоянии (в часах)" + +#: modules/devices/storage.c:147 +msgid "Spin Retry Count" +msgstr "Количество повторных попыток раскрутки шпинделя" + +#: modules/devices/storage.c:148 +msgid "Calibration Retry Count" +msgstr "Количество повторных попыток калибровки" + +#: modules/devices/storage.c:149 +msgid "Power Cycle Count" +msgstr "Количество циклов включения-выключения" + +#: modules/devices/storage.c:150 modules/devices/storage.c:167 +msgid "Soft Read Error Rate" +msgstr "Количество некорректируемых ошибок чтения" + +#: modules/devices/storage.c:151 +msgid "Runtime Bad Block" +msgstr "Время запуска плохого блока" + +#: modules/devices/storage.c:152 +msgid "End-to-End error" +msgstr "Количество ошибок передачи данных через кэш памяти буфера" + +#: modules/devices/storage.c:153 +msgid "Reported Uncorrectable Errors" +msgstr "Количество некорректируемых ошибок" + +#: modules/devices/storage.c:154 +msgid "Command Timeout" +msgstr "Количество операций, отмененных из-за превышения времени отклика" + +#: modules/devices/storage.c:155 +msgid "High Fly Writes" +msgstr "Количество случаев записи при полете головки выше расчетного уровня" + +#: modules/devices/storage.c:156 +msgid "Airflow Temperature" +msgstr "Температура воздуха в корпусе" + +#: modules/devices/storage.c:157 +msgid "G-sense Error Rate" +msgstr "Количество ошибок в результате ударных нагрузок" + +#: modules/devices/storage.c:158 +msgid "Power-off Retract Count" +msgstr "Количество повторов парковок головок при выключении питания" + +#: modules/devices/storage.c:159 +msgid "Load Cycle Count" +msgstr "Количество циклов перемещения головок в зону данных" + +#: modules/devices/storage.c:160 modules/devices/storage.c:183 +msgid "Temperature" +msgstr "Температура" + +#: modules/devices/storage.c:161 +msgid "Hardware ECC Recovered" +msgstr "Количество случаев коррекции ошибок аппаратной частью диска" + +#: modules/devices/storage.c:162 +msgid "Reallocation Event Count" +msgstr "Количество операций переназначения секторов" + +#: modules/devices/storage.c:163 +msgid "Current Pending Sector Count" +msgstr "Текущее количество нестабильных секторов" + +#: modules/devices/storage.c:164 +msgid "Uncorrectable Sector Count" +msgstr "Количество секторов, не корректируемых аппаратной частью диска" + +#: modules/devices/storage.c:165 +msgid "UltraDMA CRC Error Count" +msgstr "Количество ошибок CRC в режиме UltraDMA" + +#: modules/devices/storage.c:166 +msgid "Multi-Zone Error Rate" +msgstr "Общее количество ошибок записи" + +#: modules/devices/storage.c:168 +msgid "Run Out Cancel" +msgstr "Количество ошибок Error Correcting (ECC)" + +#: modules/devices/storage.c:169 +msgid "Flying Height" +msgstr "Высота между головкой и поверхностью диска" + +#: modules/devices/storage.c:170 +msgid "Spin High Current" +msgstr "Величина силы тока при раскрутке диска" + +#: modules/devices/storage.c:171 +msgid "Spin Buzz" +msgstr "Количество попыток раскрутки шпинделя из-за пониженного тока" + +#: modules/devices/storage.c:172 +msgid "Offline Seek Performance" +msgstr "Производительность выполнения внутренних тестов накопителя" + +#: modules/devices/storage.c:173 +msgid "Disk Shift" +msgstr "Смещение блока дисков относительно вертикальной оси шпинделя" + +#: modules/devices/storage.c:174 +msgid "G-Sense Error Rate" +msgstr "Количество ошибок в результате ударных нагрузок" + +#: modules/devices/storage.c:175 +msgid "Loaded Hours" +msgstr "Количество часов, отработанных диском" + +#: modules/devices/storage.c:176 +msgid "Load/Unload Retry Count" +msgstr "Количество повторных попыток ввода/вывода головок в зону данных" + +#: modules/devices/storage.c:177 +msgid "Load Friction" +msgstr "Величина силы трения головок при их вводе в зону данных" + +#: modules/devices/storage.c:178 +msgid "Load/Unload Cycle Count" +msgstr "Количество циклов ввода/вывода головок в зону данных" + +#: modules/devices/storage.c:179 +msgid "Load-in time" +msgstr "Время ввода головок в зону данных" + +#: modules/devices/storage.c:180 +msgid "Torque Amplification Count" +msgstr "Количество попыток скомпенсировать крутящий момент" + +#: modules/devices/storage.c:181 +msgid "Power-Off Retract Count" +msgstr "Количество повторов парковки головок при выключении питания" + +#: modules/devices/storage.c:182 +msgid "GMR Head Amplitude" +msgstr "Амплитуда «дрожания» головок" + +#: modules/devices/storage.c:184 +msgid "Endurance Remaining" +msgstr "Процент завершенных физических циклов записи на диск" + +#: modules/devices/storage.c:186 +msgid "Good Block Rate" +msgstr "Частота хороших блоков" + +#: modules/devices/storage.c:187 +msgid "Head Flying Hours" +msgstr "Время позиционирования головок" + +#: modules/devices/storage.c:188 +msgid "Read Error Retry Rate" +msgstr "Частота ошибок во время чтения диска" + +#: modules/devices/storage.c:189 +msgid "Total LBAs Written" +msgstr "Количество записанных LBA" + +#: modules/devices/storage.c:190 +msgid "Total LBAs Read" +msgstr "Количество считанных LBA" + +#: modules/devices/storage.c:191 +msgid "Wear leveling Count" +msgstr "Оставшийся срок службы диска" + +#: modules/devices/storage.c:192 +msgid "Total Used Reserved Block Count" +msgstr "Общее количество используемых резервных блоков" + +#: modules/devices/storage.c:193 +msgid "Total Program Fail Count" +msgstr "Общее количество неудачных операций записи" + +#: modules/devices/storage.c:194 +msgid "Total Erase Fail Count" +msgstr "Общее количество неудачных операций стирания" + +#: modules/devices/storage.c:195 +msgid "Available Reserved Space" +msgstr "Общее количество резервных блоков" + +#: modules/devices/storage.c:196 +msgid "Program Fail Count" +msgstr "Количество неудачных операций записи" + +#: modules/devices/storage.c:197 +msgid "Erase Fail Count" +msgstr "Количество неудачных операций стирания" + +#: modules/devices/storage.c:198 +msgid "TA Counter Increased" +msgstr "Rоличество некорректируемых ошибок при чтении собственного адреса сектора" + +#: modules/devices/storage.c:199 +msgid "Total Unused Reserved Block Count" +msgstr "Общее количество неиспользуемых резервных блоков" + +#: modules/devices/storage.c:204 msgid "" -"[SPD]\n" -"Please load the eeprom module to obtain information about memory SPD=\n" -"[$ShellParam$]\n" -"ReloadInterval=500\n" +"\n" +"[UDisks2]\n" msgstr "" -"[SPD]\n" -"Пожалуйста, загрузите модуль eeprom для получения информации о памяти SPD=\n" -"[$ShellParam$]\n" -"ReloadInterval=500\n" -#: modules/devices/spd-decode.c:1480 +#: modules/devices/storage.c:257 +msgid "Removable" +msgstr "Съемное" + +#: modules/devices/storage.c:257 +msgid "Fixed" +msgstr "Фиксированное" + +#: modules/devices/storage.c:260 +msgid "Ejectable" +msgstr "Сменное" + +#: modules/devices/storage.c:263 +msgid "Self-monitoring (S.M.A.R.T.)" +msgstr "Мониторинг (S.M.A.R.T.)" + +#: modules/devices/storage.c:266 modules/devices/x86/processor.c:665 +msgid "Power Management" +msgstr "Управление питанием" + +#: modules/devices/storage.c:269 +msgid "Advanced Power Management" +msgstr "Расширенное управление питанием" + +#: modules/devices/storage.c:272 +msgid "Automatic Acoustic Management" +msgstr "Автоматическое управление шумом" + +#: modules/devices/storage.c:275 +#, c-format msgid "" -"[SPD]\n" -"Reading memory SPD not supported on this system=\n" +"[Drive Information]\n" +"Model=%s\n" msgstr "" -"[SPD]\n" -"Чтение памяти SPD не поддерживается на данной системе=\n" +"[Информация о диске]\n" +"Модель=%s\n" -#: modules/devices/spd-decode.c:1509 -msgid "SPD" +#: modules/devices/storage.c:285 +#, c-format +msgid "" +"Revision=%s\n" +"Block Device=%s\n" +"Serial=%s\n" +"Size=%s\n" +"Features=%s\n" +msgstr "" +"Ревизия=%s\n" +"Блочное устройство=%s\n" +"Серия=%s\n" +"Размер=%s\n" +"Возможности=%s\n" + +#: modules/devices/storage.c:300 +#, c-format +msgid "Rotation Rate=%d RPM\n" +msgstr "Скорость вращения=%d об/мин\n" + +#: modules/devices/storage.c:303 +#, c-format +msgid "" +"Media=%s\n" +"Media compatibility=%s\n" +msgstr "" +"Медиа=%s\n" +"Совместимость с медиа=%s\n" + +#: modules/devices/storage.c:310 +#, c-format +msgid "Connection bus=%s\n" +msgstr "" + +#: modules/devices/storage.c:322 +msgid "WWN" +msgstr "" + +#: modules/devices/storage.c:323 +msgid "EUI " +msgstr "" + +#: modules/devices/storage.c:328 +msgid "WWN / EUI" +msgstr "" + +#: modules/devices/storage.c:332 +#, c-format +msgid "$^$%s=[%s] %s\n" +msgstr "" + +#: modules/devices/storage.c:334 +msgid "IEEE OUI" +msgstr "" + +#: modules/devices/storage.c:346 +msgid "" +"[Self-monitoring (S.M.A.R.T.)]\n" +"Status=%s\n" +"Bad Sectors=%" msgstr "" -#: modules/devices/spd-decode.c:1510 -msgid "Bank" +#: modules/devices/storage.c:352 +msgid "Failing" +msgstr "Неудачно" + +#: modules/devices/storage.c:352 +msgid "OK" +msgstr "ОК" + +#: modules/devices/storage.c:358 +msgid "" +"[S.M.A.R.T. Attributes]\n" +"Attribute=Value / Normalized / Worst / Threshold\n" msgstr "" +"[Атрибуты S.M.A.R.T.]\n" +"Атрибут=Значение / Нормализованное / Худшее / Пороговое\n" + +#: modules/devices/storage.c:381 +msgid "%" +msgid_plural "%" +msgstr[0] "%" +msgstr[1] "%" +msgstr[2] "%" + +#: modules/devices/storage.c:419 +#, c-format +msgid "(%d) %s=%s\n" +msgstr "(%d) %s=%s\n" -#: modules/devices/storage.c:46 +#: modules/devices/storage.c:428 +#, c-format +msgid "" +"[Partition table]\n" +"Type=%s\n" +msgstr "" +"[Таблица разделов]\n" +"Тип=%s\n" + +#: modules/devices/storage.c:447 +#, c-format +msgid "Partition %s=%s\n" +msgstr "Раздел %s=%s\n" + +#: modules/devices/storage.c:496 msgid "" "\n" "[SCSI Disks]\n" @@ -2650,7 +4340,7 @@ msgstr "" "\n" "[SCSI диски]\n" -#: modules/devices/storage.c:110 modules/devices/storage.c:313 +#: modules/devices/storage.c:567 modules/devices/storage.c:767 #, c-format msgid "" "[Device Information]\n" @@ -2659,36 +4349,19 @@ msgstr "" "[Информация об устройстве]\n" "Модель=%s\n" -#: modules/devices/storage.c:115 modules/devices/storage.c:319 -#, c-format -msgid "Vendor=%s (%s)\n" -msgstr "Изготовитель=%s (%s)\n" - -#: modules/devices/storage.c:120 modules/devices/storage.c:321 -#, c-format -msgid "Vendor=%s\n" -msgstr "Изготовитель=%s\n" - -#: modules/devices/storage.c:125 +#: modules/devices/storage.c:574 #, c-format msgid "" "Type=%s\n" "Revision=%s\n" "[SCSI Controller]\n" -"Controller=scsi%d\n" -"Channel=%d\n" -"ID=%d\n" -"LUN=%d\n" -msgstr "" -"Тип=%s\n" -"Ревизия=%s\n" -"[SCSI контроллер]\n" -"Контроллер=scsi%d\n" -"Канал=%d\n" +"Controller=scsi%d\n" +"Channel=%d\n" "ID=%d\n" "LUN=%d\n" +msgstr "" -#: modules/devices/storage.c:167 +#: modules/devices/storage.c:621 msgid "" "\n" "[IDE Disks]\n" @@ -2696,12 +4369,12 @@ msgstr "" "\n" "[IDE диски]\n" -#: modules/devices/storage.c:250 +#: modules/devices/storage.c:704 #, c-format msgid "Driver=%s\n" msgstr "Драйвер=%s\n" -#: modules/devices/storage.c:324 +#: modules/devices/storage.c:773 #, c-format msgid "" "Device Name=hd%c\n" @@ -2712,7 +4385,7 @@ msgstr "" "Медиа=%s\n" "Кэш=%d кБ\n" -#: modules/devices/storage.c:334 +#: modules/devices/storage.c:783 #, c-format msgid "" "[Geometry]\n" @@ -2723,7 +4396,7 @@ msgstr "" "Физическая=%s\n" "Логическая=%s\n" -#: modules/devices/storage.c:344 +#: modules/devices/storage.c:793 #, c-format msgid "" "[Capabilities]\n" @@ -2732,7 +4405,7 @@ msgstr "" "[Возможности]\n" "%s" -#: modules/devices/storage.c:351 +#: modules/devices/storage.c:800 #, c-format msgid "" "[Speeds]\n" @@ -2741,234 +4414,206 @@ msgstr "" "[Скорости]\n" "%s" -#: modules/devices/usb.c:44 modules/devices/usb.c:326 -msgid "mA" -msgstr "мА" - -#. /%.2f is version -#: modules/devices/usb.c:53 modules/devices/usb.c:190 -#, c-format -msgid "USB %.2f Hub" -msgstr "" - -#: modules/devices/usb.c:55 modules/devices/usb.c:192 -#, c-format -msgid "Unknown USB %.2f Device (class %d)" -msgstr "" +#: modules/devices/usb.c:137 modules/devices/usb.c:178 +msgid "Sub-class" +msgstr "Подкласс" -#: modules/devices/usb.c:85 modules/devices/usb.c:232 -msgid "Speed" -msgstr "" +#: modules/devices/usb.c:138 modules/devices/usb.c:179 modules/network.c:347 +msgid "Protocol" +msgstr "Протокол" -#: modules/devices/usb.c:85 modules/devices/usb.c:232 -msgid "Mbit/s" -msgstr "" +#: modules/devices/usb.c:146 modules/network/net.c:451 +msgid "Mb/s" +msgstr "Мб/с" -#: modules/devices/usb.c:86 modules/devices/usb.c:233 modules/devices/usb.c:350 +#: modules/devices/usb.c:174 msgid "Max Current" msgstr "Максимальная сила тока" -#: modules/devices/usb.c:88 modules/devices/usb.c:235 modules/devices/usb.c:352 +#: modules/devices/usb.c:174 +msgid "mA" +msgstr "мА" + +#: modules/devices/usb.c:175 msgid "USB Version" msgstr "Версия USB" -#: modules/devices/usb.c:90 modules/devices/usb.c:238 modules/devices/usb.c:354 -msgid "Vendor ID" -msgstr "ID поставщика" - -#: modules/devices/usb.c:91 modules/devices/usb.c:239 modules/devices/usb.c:355 -msgid "Product ID" -msgstr "ID продукта" - -#: modules/devices/usb.c:231 -msgid "Port" -msgstr "" - -#: modules/devices/usb.c:241 -msgid "Level" -msgstr "" - -#: modules/devices/x86/processor.c:149 -msgid "Cache information not available=\n" -msgstr "Информация о кэше недоступна=\n" - -#: modules/devices/x86/processor.c:155 -#, c-format -msgid "Level %d (%s)=%d-way set-associative, %d sets, %dKB size\n" -msgstr "" -"Уровень %d (%s)=%d-канальный множественно-ассоциативный, %d множеств, размер " -"%d кБ\n" - -#. /cache type, as appears in: Level 1 (Data) -#: modules/devices/x86/processor.c:170 -msgctxt "cache-type" -msgid "Data" -msgstr "данные" - -#. /cache type, as appears in: Level 1 (Instruction) -#: modules/devices/x86/processor.c:171 -msgctxt "cache-type" -msgid "Instruction" -msgstr "инструкции" +#: modules/devices/usb.c:180 +msgid "Device Version" +msgstr "Версия устройства" -#. /cache type, as appears in: Level 2 (Unified) -#: modules/devices/x86/processor.c:172 -msgctxt "cache-type" -msgid "Unified" -msgstr "унифицированный" +#: modules/devices/usb.c:222 +msgid "No USB devices found." +msgstr "Устройства USB не найдены." -#: modules/devices/x86/processor.c:410 +#: modules/devices/x86/processor.c:649 msgid "Model Name" msgstr "Название" -#: modules/devices/x86/processor.c:411 +#: modules/devices/x86/processor.c:650 msgid "Family, model, stepping" msgstr "Семейство, модель, степпинг" -#: modules/devices/x86/processor.c:417 +#: modules/devices/x86/processor.c:656 msgid "Microcode Version" msgstr "Версия микрокода" -#: modules/devices/x86/processor.c:418 +#: modules/devices/x86/processor.c:657 msgid "Configuration" msgstr "Конфигурация" -#: modules/devices/x86/processor.c:419 +#: modules/devices/x86/processor.c:658 msgid "Cache Size" msgstr "Размер кэша" -#: modules/devices/x86/processor.c:419 +#: modules/devices/x86/processor.c:658 msgid "kb" msgstr "кБ" -#: modules/devices/x86/processor.c:426 -msgid "Power Management" -msgstr "Управление питанием" - -#: modules/devices/x86/processor.c:427 +#: modules/devices/x86/processor.c:666 msgid "Bug Workarounds" msgstr "Обход багов" -#: modules/devices/x86/processor.c:454 modules/devices/x86/processor.c:468 +#: modules/devices/x86/processor.c:693 +msgid "Socket Information" +msgstr "Информация о сокете" + +#: modules/devices/x86/processor.c:714 +msgid "CPU Socket" +msgstr "Сокет процессора" + +#: modules/devices/x86/processor.c:718 +msgid "External Clock" +msgstr "Частота системной шины" + +#: modules/devices/x86/processor.c:719 +msgid "Max Frequency" +msgstr "Максимальная частота" + +#: modules/devices/x86/processor.c:750 msgid "Package Information" msgstr "Информация о комплекте" +#: modules/devices/x86/processor.c:812 +msgid "Socket:Core" +msgstr "Сокет:Ядро" + #. /flag:fpu -#: modules/devices/x86/x86_data.c:43 +#: modules/devices/x86/x86_data.c:48 msgctxt "x86-flag" msgid "Onboard FPU (floating point support)" msgstr "Встроенный FPU (поддержка плавающей запятой)" #. /flag:vme -#: modules/devices/x86/x86_data.c:44 +#: modules/devices/x86/x86_data.c:49 msgctxt "x86-flag" msgid "Virtual 8086 mode enhancements" msgstr "Улучшения виртуального режима 8086" #. /flag:de -#: modules/devices/x86/x86_data.c:45 +#: modules/devices/x86/x86_data.c:50 msgctxt "x86-flag" msgid "Debugging Extensions (CR4.DE)" msgstr "Расширения отладки (CR4.DE)" #. /flag:pse -#: modules/devices/x86/x86_data.c:46 +#: modules/devices/x86/x86_data.c:51 msgctxt "x86-flag" msgid "Page Size Extensions (4MB memory pages)" msgstr "Расширения размера страницы (страницы памяти 4 Мб)" #. /flag:tsc -#: modules/devices/x86/x86_data.c:47 +#: modules/devices/x86/x86_data.c:52 msgctxt "x86-flag" msgid "Time Stamp Counter (RDTSC)" msgstr "Счетчик временной метки (RDTSC)" #. /flag:msr -#: modules/devices/x86/x86_data.c:48 +#: modules/devices/x86/x86_data.c:53 msgctxt "x86-flag" msgid "Model-Specific Registers (RDMSR, WRMSR)" msgstr "Регистры конкретной модели (RDMSR, WRMSR)" #. /flag:pae -#: modules/devices/x86/x86_data.c:49 +#: modules/devices/x86/x86_data.c:54 msgctxt "x86-flag" msgid "Physical Address Extensions (support for more than 4GB of RAM)" msgstr "Расширения физического адреса (поддержка более 4 Гб ОЗУ)" #. /flag:mce -#: modules/devices/x86/x86_data.c:50 +#: modules/devices/x86/x86_data.c:55 msgctxt "x86-flag" msgid "Machine Check Exception" msgstr "Исключение машинного контроля" #. /flag:cx8 -#: modules/devices/x86/x86_data.c:51 +#: modules/devices/x86/x86_data.c:56 msgctxt "x86-flag" msgid "CMPXCHG8 instruction (64-bit compare-and-swap)" msgstr "Инструкция CMPXCHG8 (64-битное сравнение-и-подкачка)" #. /flag:apic -#: modules/devices/x86/x86_data.c:52 +#: modules/devices/x86/x86_data.c:57 msgctxt "x86-flag" msgid "Onboard APIC" msgstr "Встроенный APIC" #. /flag:sep -#: modules/devices/x86/x86_data.c:53 +#: modules/devices/x86/x86_data.c:58 msgctxt "x86-flag" msgid "SYSENTER/SYSEXIT" msgstr "" #. /flag:mtrr -#: modules/devices/x86/x86_data.c:54 +#: modules/devices/x86/x86_data.c:59 msgctxt "x86-flag" msgid "Memory Type Range Registers" msgstr "Регистры диапазона типа памяти" #. /flag:pge -#: modules/devices/x86/x86_data.c:55 +#: modules/devices/x86/x86_data.c:60 msgctxt "x86-flag" msgid "Page Global Enable (global bit in PDEs and PTEs)" msgstr "Включение глобальной страницы (глобальный бит в PDE и PTE)" #. /flag:mca -#: modules/devices/x86/x86_data.c:56 +#: modules/devices/x86/x86_data.c:61 msgctxt "x86-flag" msgid "Machine Check Architecture" msgstr "Архитектура машинного контроля" #. /flag:cmov -#: modules/devices/x86/x86_data.c:57 +#: modules/devices/x86/x86_data.c:62 msgctxt "x86-flag" msgid "CMOV instructions (conditional move) (also FCMOV)" msgstr "Инструкции CMOV (условная пересылка данных) (также FCMOV)" #. /flag:pat -#: modules/devices/x86/x86_data.c:58 +#: modules/devices/x86/x86_data.c:63 msgctxt "x86-flag" msgid "Page Attribute Table" msgstr "Таблица атрибутов страницы" #. /flag:pse36 -#: modules/devices/x86/x86_data.c:59 +#: modules/devices/x86/x86_data.c:64 msgctxt "x86-flag" msgid "36-bit PSEs (huge pages)" msgstr "36-битные PSE (огромные страницы)" #. /flag:pn -#: modules/devices/x86/x86_data.c:60 +#: modules/devices/x86/x86_data.c:65 msgctxt "x86-flag" msgid "Processor serial number" msgstr "Серийный номер процессора" #. /flag:clflush -#: modules/devices/x86/x86_data.c:61 +#: modules/devices/x86/x86_data.c:66 msgctxt "x86-flag" msgid "Cache Line Flush instruction" msgstr "Инструкция Cache Line Flush" #. /flag:dts -#: modules/devices/x86/x86_data.c:62 +#: modules/devices/x86/x86_data.c:67 msgctxt "x86-flag" msgid "" "Debug Store (buffer for debugging and profiling instructions), or " @@ -2976,55 +4621,55 @@ msgid "" msgstr "" #. /flag:acpi -#: modules/devices/x86/x86_data.c:63 +#: modules/devices/x86/x86_data.c:68 msgctxt "x86-flag" msgid "ACPI via MSR (temperature monitoring and clock speed modulation)" msgstr "ACPI через MSR (мониторинг температуры и модуляции тактовой частоты)" #. /flag:mmx -#: modules/devices/x86/x86_data.c:64 +#: modules/devices/x86/x86_data.c:69 msgctxt "x86-flag" msgid "Multimedia Extensions" msgstr "Расширения мультимедиа" #. /flag:fxsr -#: modules/devices/x86/x86_data.c:65 +#: modules/devices/x86/x86_data.c:70 msgctxt "x86-flag" msgid "FXSAVE/FXRSTOR, CR4.OSFXSR" msgstr "" #. /flag:sse -#: modules/devices/x86/x86_data.c:66 +#: modules/devices/x86/x86_data.c:71 msgctxt "x86-flag" msgid "Intel SSE vector instructions" msgstr "Векторные инструкции Intel SSE" #. /flag:sse2 -#: modules/devices/x86/x86_data.c:67 +#: modules/devices/x86/x86_data.c:72 msgctxt "x86-flag" msgid "SSE2" msgstr "" #. /flag:ss -#: modules/devices/x86/x86_data.c:68 +#: modules/devices/x86/x86_data.c:73 msgctxt "x86-flag" msgid "CPU self snoop" msgstr "Проверка процессора" #. /flag:ht -#: modules/devices/x86/x86_data.c:69 +#: modules/devices/x86/x86_data.c:74 msgctxt "x86-flag" msgid "Hyper-Threading" msgstr "Многопоточность (Hyper-Threading)" #. /flag:tm -#: modules/devices/x86/x86_data.c:70 +#: modules/devices/x86/x86_data.c:75 msgctxt "x86-flag" msgid "Automatic clock control (Thermal Monitor)" msgstr "Автоматический контроль частоты (монитор температуры)" #. /flag:ia64 -#: modules/devices/x86/x86_data.c:71 +#: modules/devices/x86/x86_data.c:76 msgctxt "x86-flag" msgid "" "Intel Itanium Architecture 64-bit (not to be confused with Intel's 64-bit " @@ -3034,13 +4679,13 @@ msgstr "" "от Intel с флагом x86-64 или \"AMD64\"-битной с флагом bit)" #. /flag:pbe -#: modules/devices/x86/x86_data.c:72 +#: modules/devices/x86/x86_data.c:77 msgctxt "x86-flag" msgid "Pending Break Enable (PBE# pin) wakeup support" msgstr "Поддержка пробуждения Pending Break Enable (PBE# pin)" #. /flag:syscall -#: modules/devices/x86/x86_data.c:75 +#: modules/devices/x86/x86_data.c:80 msgctxt "x86-flag" msgid "SYSCALL (Fast System Call) and SYSRET (Return From Fast System Call)" msgstr "" @@ -3048,43 +4693,43 @@ msgstr "" "системы)" #. /flag:mp -#: modules/devices/x86/x86_data.c:76 +#: modules/devices/x86/x86_data.c:81 msgctxt "x86-flag" msgid "Multiprocessing Capable." msgstr "Возможна работа в многопроцессном режиме." #. /flag:nx -#: modules/devices/x86/x86_data.c:77 +#: modules/devices/x86/x86_data.c:82 msgctxt "x86-flag" msgid "Execute Disable" msgstr "Выполнение отключено" #. /flag:mmxext -#: modules/devices/x86/x86_data.c:78 +#: modules/devices/x86/x86_data.c:83 msgctxt "x86-flag" msgid "AMD MMX extensions" msgstr "Расширения AMD MMX" #. /flag:fxsr_opt -#: modules/devices/x86/x86_data.c:79 +#: modules/devices/x86/x86_data.c:84 msgctxt "x86-flag" msgid "FXSAVE/FXRSTOR optimizations" msgstr "Оптимизации FXSAVE/FXRSTOR" #. /flag:pdpe1gb -#: modules/devices/x86/x86_data.c:80 +#: modules/devices/x86/x86_data.c:85 msgctxt "x86-flag" msgid "One GB pages (allows hugepagesz=1G)" msgstr "Страница размером 1 Гб (разрешает hugepagesz=1G)" #. /flag:rdtscp -#: modules/devices/x86/x86_data.c:81 +#: modules/devices/x86/x86_data.c:86 msgctxt "x86-flag" msgid "Read Time-Stamp Counter and Processor ID" msgstr "Чтение счетчика временной метки и ID процессора" #. /flag:lm -#: modules/devices/x86/x86_data.c:82 +#: modules/devices/x86/x86_data.c:87 msgctxt "x86-flag" msgid "Long Mode (x86-64: amd64, also known as Intel 64, i.e. 64-bit capable)" msgstr "" @@ -3092,49 +4737,49 @@ msgstr "" "с 64-бит)" #. /flag:3dnow -#: modules/devices/x86/x86_data.c:83 +#: modules/devices/x86/x86_data.c:88 msgctxt "x86-flag" msgid "3DNow! (AMD vector instructions, competing with Intel's SSE1)" msgstr "3DNow! (векторные инструкции AMD, конкурируют с SSE1 от Intel)" #. /flag:3dnowext -#: modules/devices/x86/x86_data.c:84 +#: modules/devices/x86/x86_data.c:89 msgctxt "x86-flag" msgid "AMD 3DNow! extensions" msgstr "Расширения AMD 3DNow!" #. /flag:recovery -#: modules/devices/x86/x86_data.c:86 +#: modules/devices/x86/x86_data.c:91 msgctxt "x86-flag" msgid "CPU in recovery mode" msgstr "Процессор в режиме восстановления" #. /flag:longrun -#: modules/devices/x86/x86_data.c:87 +#: modules/devices/x86/x86_data.c:92 msgctxt "x86-flag" msgid "Longrun power control" msgstr "Управление питанием LongRun" #. /flag:lrti -#: modules/devices/x86/x86_data.c:88 +#: modules/devices/x86/x86_data.c:93 msgctxt "x86-flag" msgid "LongRun table interface" msgstr "Интерфейс таблицы LongRun" #. /flag:cxmmx -#: modules/devices/x86/x86_data.c:90 +#: modules/devices/x86/x86_data.c:95 msgctxt "x86-flag" msgid "Cyrix MMX extensions" msgstr "Расширения Cyrix MMX" #. /flag:k6_mtrr -#: modules/devices/x86/x86_data.c:91 +#: modules/devices/x86/x86_data.c:96 msgctxt "x86-flag" msgid "AMD K6 nonstandard MTRRs" msgstr "Нестандартные диапазонные регистры типа памяти (MTRR) AMD K6" #. /flag:cyrix_arr -#: modules/devices/x86/x86_data.c:92 +#: modules/devices/x86/x86_data.c:97 msgctxt "x86-flag" msgid "Cyrix ARRs (= MTRRs)" msgstr "" @@ -3142,7 +4787,7 @@ msgstr "" "(MTRR))" #. /flag:centaur_mcr -#: modules/devices/x86/x86_data.c:93 +#: modules/devices/x86/x86_data.c:98 msgctxt "x86-flag" msgid "Centaur MCRs (= MTRRs)" msgstr "" @@ -3150,121 +4795,121 @@ msgstr "" "(MTRR))" #. /flag:constant_tsc -#: modules/devices/x86/x86_data.c:94 +#: modules/devices/x86/x86_data.c:99 msgctxt "x86-flag" msgid "TSC ticks at a constant rate" msgstr "Счетчик метки времени (TSC) работает на постоянной частоте" #. /flag:up -#: modules/devices/x86/x86_data.c:95 +#: modules/devices/x86/x86_data.c:100 msgctxt "x86-flag" msgid "SMP kernel running on UP" msgstr "Ядро SMP запущено на UP" #. /flag:art -#: modules/devices/x86/x86_data.c:96 +#: modules/devices/x86/x86_data.c:101 msgctxt "x86-flag" msgid "Always-Running Timer" msgstr "Постоянный таймер" #. /flag:arch_perfmon -#: modules/devices/x86/x86_data.c:97 +#: modules/devices/x86/x86_data.c:102 msgctxt "x86-flag" msgid "Intel Architectural PerfMon" msgstr "Архитектурный монитор призводительности Intel" #. /flag:pebs -#: modules/devices/x86/x86_data.c:98 +#: modules/devices/x86/x86_data.c:103 msgctxt "x86-flag" msgid "Precise-Event Based Sampling" msgstr "Сэмплинг, основанный на точных событиях" #. /flag:bts -#: modules/devices/x86/x86_data.c:99 +#: modules/devices/x86/x86_data.c:104 msgctxt "x86-flag" msgid "Branch Trace Store" msgstr "Хранилище отслеживания ветви" #. /flag:rep_good -#: modules/devices/x86/x86_data.c:100 +#: modules/devices/x86/x86_data.c:105 msgctxt "x86-flag" msgid "rep microcode works well" msgstr "микрокод rep работает нормально" #. /flag:acc_power -#: modules/devices/x86/x86_data.c:101 +#: modules/devices/x86/x86_data.c:106 msgctxt "x86-flag" msgid "AMD accumulated power mechanism" msgstr "Механизм накопления питания AMD" #. /flag:nopl -#: modules/devices/x86/x86_data.c:102 +#: modules/devices/x86/x86_data.c:107 msgctxt "x86-flag" msgid "The NOPL (0F 1F) instructions" msgstr "Инструкции NOPL (0F 1F)" #. /flag:xtopology -#: modules/devices/x86/x86_data.c:103 +#: modules/devices/x86/x86_data.c:108 msgctxt "x86-flag" msgid "cpu topology enum extensions" msgstr "расширения cpu топологии enum" #. /flag:tsc_reliable -#: modules/devices/x86/x86_data.c:104 +#: modules/devices/x86/x86_data.c:109 msgctxt "x86-flag" msgid "TSC is known to be reliable" msgstr "Счетчик метки времени (TSC) считается надежным" #. /flag:nonstop_tsc -#: modules/devices/x86/x86_data.c:105 +#: modules/devices/x86/x86_data.c:110 msgctxt "x86-flag" msgid "TSC does not stop in C states" msgstr "Счетчик метки времени (TSC) не останавливается в состояниях C" #. /flag:extd_apicid -#: modules/devices/x86/x86_data.c:106 +#: modules/devices/x86/x86_data.c:111 msgctxt "x86-flag" msgid "has extended APICID (8 bits)" msgstr "имеются расширенные APICID (8 бит)" #. /flag:amd_dcm -#: modules/devices/x86/x86_data.c:107 +#: modules/devices/x86/x86_data.c:112 msgctxt "x86-flag" msgid "multi-node processor" msgstr "многоузловой процессор" #. /flag:aperfmperf -#: modules/devices/x86/x86_data.c:108 +#: modules/devices/x86/x86_data.c:113 msgctxt "x86-flag" msgid "APERFMPERF" msgstr "" #. /flag:eagerfpu -#: modules/devices/x86/x86_data.c:109 +#: modules/devices/x86/x86_data.c:114 msgctxt "x86-flag" msgid "Non lazy FPU restore" msgstr "Неленивое восстановление FPU" #. /flag:nonstop_tsc_s3 -#: modules/devices/x86/x86_data.c:110 +#: modules/devices/x86/x86_data.c:115 msgctxt "x86-flag" msgid "TSC doesn't stop in S3 state" msgstr "Счетчик метки времени (TSC) не останавливается в состоянии S3" #. /flag:mce_recovery -#: modules/devices/x86/x86_data.c:111 +#: modules/devices/x86/x86_data.c:116 msgctxt "x86-flag" msgid "CPU has recoverable machine checks" msgstr "У процессора есть возможность восстановить машинный контроль" #. /flag:pni -#: modules/devices/x86/x86_data.c:114 +#: modules/devices/x86/x86_data.c:119 msgctxt "x86-flag" msgid "SSE-3 (\"Prescott New Instructions\")" msgstr "SSE-3 (\"Новые инструкции Prescott\")" #. /flag:pclmulqdq -#: modules/devices/x86/x86_data.c:115 +#: modules/devices/x86/x86_data.c:120 msgctxt "x86-flag" msgid "" "Perform a Carry-Less Multiplication of Quadword instruction - accelerator " @@ -3274,127 +4919,127 @@ msgstr "" "ускоряет GCM)" #. /flag:dtes64 -#: modules/devices/x86/x86_data.c:116 +#: modules/devices/x86/x86_data.c:121 msgctxt "x86-flag" msgid "64-bit Debug Store" msgstr "Хранилище 64-битной отладки" #. /flag:monitor -#: modules/devices/x86/x86_data.c:117 +#: modules/devices/x86/x86_data.c:122 msgctxt "x86-flag" msgid "Monitor/Mwait support (Intel SSE3 supplements)" msgstr "Поддержка Monitor/Mwait (дополняет Intel SSE3)" #. /flag:ds_cpl -#: modules/devices/x86/x86_data.c:118 +#: modules/devices/x86/x86_data.c:123 msgctxt "x86-flag" msgid "CPL Qual. Debug Store" msgstr "Хранилище отладки CPL Qual." #. /flag:vmx -#: modules/devices/x86/x86_data.c:119 +#: modules/devices/x86/x86_data.c:124 msgctxt "x86-flag" msgid "Hardware virtualization, Intel VMX" msgstr "Аппаратная виртуализация, Intel VMX" #. /flag:smx -#: modules/devices/x86/x86_data.c:120 +#: modules/devices/x86/x86_data.c:125 msgctxt "x86-flag" msgid "Safer mode TXT (TPM support)" msgstr "Безопасный режим TXT (поддержка TPM)" #. /flag:est -#: modules/devices/x86/x86_data.c:121 +#: modules/devices/x86/x86_data.c:126 msgctxt "x86-flag" msgid "Enhanced SpeedStep" msgstr "Технология энергосбережения Enhanced SpeedStep" #. /flag:tm2 -#: modules/devices/x86/x86_data.c:122 +#: modules/devices/x86/x86_data.c:127 msgctxt "x86-flag" msgid "Thermal Monitor 2" msgstr "Монитор температуры 2" #. /flag:ssse3 -#: modules/devices/x86/x86_data.c:123 +#: modules/devices/x86/x86_data.c:128 msgctxt "x86-flag" msgid "Supplemental SSE-3" msgstr "Дополнительный SSE-3" #. /flag:cid -#: modules/devices/x86/x86_data.c:124 +#: modules/devices/x86/x86_data.c:129 msgctxt "x86-flag" msgid "Context ID" msgstr "ID контекста" #. /flag:sdbg -#: modules/devices/x86/x86_data.c:125 +#: modules/devices/x86/x86_data.c:130 msgctxt "x86-flag" msgid "silicon debug" msgstr "отладка кремния" #. /flag:fma -#: modules/devices/x86/x86_data.c:126 +#: modules/devices/x86/x86_data.c:131 msgctxt "x86-flag" msgid "Fused multiply-add" msgstr "Умножение-сложение с однократным округлением" #. /flag:cx16 -#: modules/devices/x86/x86_data.c:127 +#: modules/devices/x86/x86_data.c:132 msgctxt "x86-flag" msgid "CMPXCHG16B" msgstr "" #. /flag:xtpr -#: modules/devices/x86/x86_data.c:128 +#: modules/devices/x86/x86_data.c:133 msgctxt "x86-flag" msgid "Send Task Priority Messages" msgstr "Отправлять сообщения о приоритете задач" #. /flag:pdcm -#: modules/devices/x86/x86_data.c:129 +#: modules/devices/x86/x86_data.c:134 msgctxt "x86-flag" msgid "Performance Capabilities" msgstr "Возможности производительности" #. /flag:pcid -#: modules/devices/x86/x86_data.c:130 +#: modules/devices/x86/x86_data.c:135 msgctxt "x86-flag" msgid "Process Context Identifiers" msgstr "Идентификаторы контекста процесса" #. /flag:dca -#: modules/devices/x86/x86_data.c:131 +#: modules/devices/x86/x86_data.c:136 msgctxt "x86-flag" msgid "Direct Cache Access" msgstr "Прямой доступ к кэшу" #. /flag:sse4_1 -#: modules/devices/x86/x86_data.c:132 +#: modules/devices/x86/x86_data.c:137 msgctxt "x86-flag" msgid "SSE-4.1" -msgstr "" +msgstr "SSE-4.1" #. /flag:sse4_2 -#: modules/devices/x86/x86_data.c:133 +#: modules/devices/x86/x86_data.c:138 msgctxt "x86-flag" msgid "SSE-4.2" -msgstr "" +msgstr "SSE-4.2" #. /flag:x2apic -#: modules/devices/x86/x86_data.c:134 +#: modules/devices/x86/x86_data.c:139 msgctxt "x86-flag" msgid "x2APIC" -msgstr "" +msgstr "x2APIC" #. /flag:movbe -#: modules/devices/x86/x86_data.c:135 +#: modules/devices/x86/x86_data.c:140 msgctxt "x86-flag" msgid "Move Data After Swapping Bytes instruction" msgstr "Инструкция переноса данных после подкачки байт" #. /flag:popcnt -#: modules/devices/x86/x86_data.c:136 +#: modules/devices/x86/x86_data.c:141 msgctxt "x86-flag" msgid "" "Return the Count of Number of Bits Set to 1 instruction (Hamming weight, i." @@ -3404,19 +5049,19 @@ msgstr "" "бит)" #. /flag:tsc_deadline_timer -#: modules/devices/x86/x86_data.c:137 +#: modules/devices/x86/x86_data.c:142 msgctxt "x86-flag" msgid "Tsc deadline timer" msgstr "Таймер окончания счетчика метки времени (TSC)" #. /flag:aes/aes-ni -#: modules/devices/x86/x86_data.c:138 +#: modules/devices/x86/x86_data.c:143 msgctxt "x86-flag" msgid "Advanced Encryption Standard (New Instructions)" msgstr "Стандарт дополнительного шифрования (новые инструкции)" #. /flag:xsave -#: modules/devices/x86/x86_data.c:139 +#: modules/devices/x86/x86_data.c:144 msgctxt "x86-flag" msgid "Save Processor Extended States: also provides XGETBY,XRSTOR,XSETBY" msgstr "" @@ -3424,135 +5069,135 @@ msgstr "" "XSETBY" #. /flag:avx -#: modules/devices/x86/x86_data.c:140 +#: modules/devices/x86/x86_data.c:145 msgctxt "x86-flag" msgid "Advanced Vector Extensions" msgstr "Дополнительные векторные расширения" #. /flag:f16c -#: modules/devices/x86/x86_data.c:141 +#: modules/devices/x86/x86_data.c:146 msgctxt "x86-flag" msgid "16-bit fp conversions (CVT16)" msgstr "16-битные конверсии fp (CVT16)" #. /flag:rdrand -#: modules/devices/x86/x86_data.c:142 +#: modules/devices/x86/x86_data.c:147 msgctxt "x86-flag" msgid "Read Random Number from hardware random number generator instruction" msgstr "Инструкция считывания случайного числа из аппаратного генератора" #. /flag:hypervisor -#: modules/devices/x86/x86_data.c:143 +#: modules/devices/x86/x86_data.c:148 msgctxt "x86-flag" msgid "Running on a hypervisor" msgstr "Запущено в гипервизоре" #. /Cyrix/Centaur-defined CPU features, CPUID level 0xC0000001 #. /flag:rng -#: modules/devices/x86/x86_data.c:145 +#: modules/devices/x86/x86_data.c:150 msgctxt "x86-flag" msgid "Random Number Generator present (xstore)" msgstr "Наличие генератора случайных чисел (xstore)" #. /flag:rng_en -#: modules/devices/x86/x86_data.c:146 +#: modules/devices/x86/x86_data.c:151 msgctxt "x86-flag" msgid "Random Number Generator enabled" msgstr "Генератор случайных чисел включен" #. /flag:ace -#: modules/devices/x86/x86_data.c:147 +#: modules/devices/x86/x86_data.c:152 msgctxt "x86-flag" msgid "on-CPU crypto (xcrypt)" msgstr "шифрование на процессоре (xcrypt)" #. /flag:ace_en -#: modules/devices/x86/x86_data.c:148 +#: modules/devices/x86/x86_data.c:153 msgctxt "x86-flag" msgid "on-CPU crypto enabled" msgstr "шифрование на процессоре включено" #. /flag:ace2 -#: modules/devices/x86/x86_data.c:149 +#: modules/devices/x86/x86_data.c:154 msgctxt "x86-flag" msgid "Advanced Cryptography Engine v2" msgstr "" #. /flag:ace2_en -#: modules/devices/x86/x86_data.c:150 +#: modules/devices/x86/x86_data.c:155 msgctxt "x86-flag" msgid "ACE v2 enabled" msgstr "ACE v2 включен" #. /flag:phe -#: modules/devices/x86/x86_data.c:151 +#: modules/devices/x86/x86_data.c:156 msgctxt "x86-flag" msgid "PadLock Hash Engine" msgstr "Движок контрольных сумм PadLock" #. /flag:phe_en -#: modules/devices/x86/x86_data.c:152 +#: modules/devices/x86/x86_data.c:157 msgctxt "x86-flag" msgid "PHE enabled" msgstr "PHE включен" #. /flag:pmm -#: modules/devices/x86/x86_data.c:153 +#: modules/devices/x86/x86_data.c:158 msgctxt "x86-flag" msgid "PadLock Montgomery Multiplier" msgstr "Множитель PadLock Montgomery" #. /flag:pmm_en -#: modules/devices/x86/x86_data.c:154 +#: modules/devices/x86/x86_data.c:159 msgctxt "x86-flag" msgid "PMM enabled" msgstr "PMM включен" #. /flag:lahf_lm -#: modules/devices/x86/x86_data.c:156 +#: modules/devices/x86/x86_data.c:161 msgctxt "x86-flag" msgid "Load AH from Flags (LAHF) and Store AH into Flags (SAHF) in long mode" msgstr "" "Загрузка AH из флагов (LAHF) и хранение AH в флагах (SAHF) в длинном режиме" #. /flag:cmp_legacy -#: modules/devices/x86/x86_data.c:157 +#: modules/devices/x86/x86_data.c:162 msgctxt "x86-flag" msgid "If yes HyperThreading not valid" msgstr "Если да, многопоточность не работает" #. /flag:svm -#: modules/devices/x86/x86_data.c:158 +#: modules/devices/x86/x86_data.c:163 msgctxt "x86-flag" msgid "\"Secure virtual machine\": AMD-V" msgstr "\"Безопасная виртуальная машина\": AMD-V" #. /flag:extapic -#: modules/devices/x86/x86_data.c:159 +#: modules/devices/x86/x86_data.c:164 msgctxt "x86-flag" msgid "Extended APIC space" msgstr "Расширенное пространство APIC" #. /flag:cr8_legacy -#: modules/devices/x86/x86_data.c:160 +#: modules/devices/x86/x86_data.c:165 msgctxt "x86-flag" msgid "CR8 in 32-bit mode" msgstr "CR8 в 32-битном режиме" #. /flag:abm -#: modules/devices/x86/x86_data.c:161 +#: modules/devices/x86/x86_data.c:166 msgctxt "x86-flag" msgid "Advanced Bit Manipulation" msgstr "Дополнительное управление битами" #. /flag:sse4a -#: modules/devices/x86/x86_data.c:162 +#: modules/devices/x86/x86_data.c:167 msgctxt "x86-flag" msgid "SSE-4A" -msgstr "" +msgstr "SSE-4A" #. /flag:misalignsse -#: modules/devices/x86/x86_data.c:163 +#: modules/devices/x86/x86_data.c:168 msgctxt "x86-flag" msgid "" "indicates if a general-protection exception (#GP) is generated when some " @@ -3564,13 +5209,13 @@ msgstr "" "CR0 и бита проверки выравнивания" #. /flag:3dnowprefetch -#: modules/devices/x86/x86_data.c:164 +#: modules/devices/x86/x86_data.c:169 msgctxt "x86-flag" msgid "3DNow prefetch instructions" msgstr "инструкции 3DNow prefetch" #. /flag:osvw -#: modules/devices/x86/x86_data.c:165 +#: modules/devices/x86/x86_data.c:170 msgctxt "x86-flag" msgid "" "indicates OS Visible Workaround, which allows the OS to work around " @@ -3580,794 +5225,815 @@ msgstr "" "процессора." #. /flag:ibs -#: modules/devices/x86/x86_data.c:166 +#: modules/devices/x86/x86_data.c:171 msgctxt "x86-flag" msgid "Instruction Based Sampling" msgstr "Сэмплинг, основанный на инструкциях" #. /flag:xop -#: modules/devices/x86/x86_data.c:167 +#: modules/devices/x86/x86_data.c:172 msgctxt "x86-flag" msgid "extended AVX instructions" msgstr "расширенные инструкции AVX" #. /flag:skinit -#: modules/devices/x86/x86_data.c:168 +#: modules/devices/x86/x86_data.c:173 msgctxt "x86-flag" msgid "SKINIT/STGI instructions" msgstr "инструкции SKINIT/STGI" #. /flag:wdt -#: modules/devices/x86/x86_data.c:169 +#: modules/devices/x86/x86_data.c:174 msgctxt "x86-flag" msgid "Watchdog timer" msgstr "Сторожевой таймер" #. /flag:lwp -#: modules/devices/x86/x86_data.c:170 +#: modules/devices/x86/x86_data.c:175 msgctxt "x86-flag" msgid "Light Weight Profiling" msgstr "Легковесное профилирование" #. /flag:fma4 -#: modules/devices/x86/x86_data.c:171 +#: modules/devices/x86/x86_data.c:176 msgctxt "x86-flag" msgid "4 operands MAC instructions" msgstr "Инструкции MAC 4 операндов" #. /flag:tce -#: modules/devices/x86/x86_data.c:172 +#: modules/devices/x86/x86_data.c:177 msgctxt "x86-flag" msgid "translation cache extension" msgstr "расширение переноса кэша" #. /flag:nodeid_msr -#: modules/devices/x86/x86_data.c:173 +#: modules/devices/x86/x86_data.c:178 msgctxt "x86-flag" msgid "NodeId MSR" msgstr "" #. /flag:tbm -#: modules/devices/x86/x86_data.c:174 +#: modules/devices/x86/x86_data.c:179 msgctxt "x86-flag" msgid "Trailing Bit Manipulation" msgstr "Скользящее манипулирование битами" #. /flag:topoext -#: modules/devices/x86/x86_data.c:175 +#: modules/devices/x86/x86_data.c:180 msgctxt "x86-flag" msgid "Topology Extensions CPUID leafs" msgstr "Расширения топологии потоков CPUID" #. /flag:perfctr_core -#: modules/devices/x86/x86_data.c:176 +#: modules/devices/x86/x86_data.c:181 msgctxt "x86-flag" msgid "Core Performance Counter Extensions" msgstr "Расширения счетчика производительности ядра" #. /flag:perfctr_nb -#: modules/devices/x86/x86_data.c:177 +#: modules/devices/x86/x86_data.c:182 msgctxt "x86-flag" msgid "NB Performance Counter Extensions" msgstr "Расширения счетчика производительности NB" #. /flag:bpext -#: modules/devices/x86/x86_data.c:178 +#: modules/devices/x86/x86_data.c:183 msgctxt "x86-flag" msgid "data breakpoint extension" msgstr "расширение точки прерывания данных" #. /flag:ptsc -#: modules/devices/x86/x86_data.c:179 +#: modules/devices/x86/x86_data.c:184 msgctxt "x86-flag" msgid "performance time-stamp counter" msgstr "счетчик временной метки производительности" #. /flag:perfctr_l2 -#: modules/devices/x86/x86_data.c:180 +#: modules/devices/x86/x86_data.c:185 msgctxt "x86-flag" msgid "L2 Performance Counter Extensions" msgstr "Расширения счетчика производительности L2" #. /flag:mwaitx -#: modules/devices/x86/x86_data.c:181 +#: modules/devices/x86/x86_data.c:186 msgctxt "x86-flag" msgid "MWAIT extension (MONITORX/MWAITX)" msgstr "Расширение MWAIT (MONITORX/MWAITX)" #. /flag:cpb -#: modules/devices/x86/x86_data.c:183 +#: modules/devices/x86/x86_data.c:188 msgctxt "x86-flag" msgid "AMD Core Performance Boost" msgstr "Увеличение производительности ядра AMD" #. /flag:epb -#: modules/devices/x86/x86_data.c:184 +#: modules/devices/x86/x86_data.c:189 msgctxt "x86-flag" msgid "IA32_ENERGY_PERF_BIAS support" msgstr "Поддержка IA32_ENERGY_PERF_BIAS" #. /flag:hw_pstate -#: modules/devices/x86/x86_data.c:185 +#: modules/devices/x86/x86_data.c:190 msgctxt "x86-flag" msgid "AMD HW-PState" msgstr "" #. /flag:proc_feedback -#: modules/devices/x86/x86_data.c:186 +#: modules/devices/x86/x86_data.c:191 msgctxt "x86-flag" msgid "AMD ProcFeedbackInterface" msgstr "" #. /flag:intel_pt -#: modules/devices/x86/x86_data.c:187 +#: modules/devices/x86/x86_data.c:192 msgctxt "x86-flag" msgid "Intel Processor Tracing" msgstr "Отслеживание процессора Intel" #. /flag:tpr_shadow -#: modules/devices/x86/x86_data.c:189 +#: modules/devices/x86/x86_data.c:194 msgctxt "x86-flag" msgid "Intel TPR Shadow" msgstr "" #. /flag:vnmi -#: modules/devices/x86/x86_data.c:190 +#: modules/devices/x86/x86_data.c:195 msgctxt "x86-flag" msgid "Intel Virtual NMI" msgstr "" #. /flag:flexpriority -#: modules/devices/x86/x86_data.c:191 +#: modules/devices/x86/x86_data.c:196 msgctxt "x86-flag" msgid "Intel FlexPriority" msgstr "" #. /flag:ept -#: modules/devices/x86/x86_data.c:192 +#: modules/devices/x86/x86_data.c:197 msgctxt "x86-flag" msgid "Intel Extended Page Table" msgstr "" #. /flag:vpid -#: modules/devices/x86/x86_data.c:193 +#: modules/devices/x86/x86_data.c:198 msgctxt "x86-flag" msgid "Intel Virtual Processor ID" msgstr "" #. /flag:vmmcall -#: modules/devices/x86/x86_data.c:194 +#: modules/devices/x86/x86_data.c:199 msgctxt "x86-flag" msgid "prefer VMMCALL to VMCALL" msgstr "предпочитать VMMCALL, а не VMCALL" #. /flag:fsgsbase -#: modules/devices/x86/x86_data.c:196 +#: modules/devices/x86/x86_data.c:201 msgctxt "x86-flag" msgid "{RD/WR}{FS/GS}BASE instructions" msgstr "Инструкции {RD/WR}{FS/GS}BASE" #. /flag:tsc_adjust -#: modules/devices/x86/x86_data.c:197 +#: modules/devices/x86/x86_data.c:202 msgctxt "x86-flag" msgid "TSC adjustment MSR" msgstr "TSC выраснивание MSR" #. /flag:bmi1 -#: modules/devices/x86/x86_data.c:198 +#: modules/devices/x86/x86_data.c:203 msgctxt "x86-flag" msgid "1st group bit manipulation extensions" msgstr "Расширения управления битами 1-й группы" #. /flag:hle -#: modules/devices/x86/x86_data.c:199 +#: modules/devices/x86/x86_data.c:204 msgctxt "x86-flag" msgid "Hardware Lock Elision" msgstr "Аппаратная блокировка Elision" #. /flag:avx2 -#: modules/devices/x86/x86_data.c:200 +#: modules/devices/x86/x86_data.c:205 msgctxt "x86-flag" msgid "AVX2 instructions" msgstr "Инструкции AVX2" #. /flag:smep -#: modules/devices/x86/x86_data.c:201 +#: modules/devices/x86/x86_data.c:206 msgctxt "x86-flag" msgid "Supervisor Mode Execution Protection" msgstr "Защита выполнения режима супервизора" #. /flag:bmi2 -#: modules/devices/x86/x86_data.c:202 +#: modules/devices/x86/x86_data.c:207 msgctxt "x86-flag" msgid "2nd group bit manipulation extensions" msgstr "Расширения управления битами 2-й группы" #. /flag:erms -#: modules/devices/x86/x86_data.c:203 +#: modules/devices/x86/x86_data.c:208 msgctxt "x86-flag" msgid "Enhanced REP MOVSB/STOSB" msgstr "Расширенный REP MOVSB/STOSB" #. /flag:invpcid -#: modules/devices/x86/x86_data.c:204 +#: modules/devices/x86/x86_data.c:209 msgctxt "x86-flag" msgid "Invalidate Processor Context ID" msgstr "Аннулировать ID контекста процессора" #. /flag:rtm -#: modules/devices/x86/x86_data.c:205 +#: modules/devices/x86/x86_data.c:210 msgctxt "x86-flag" msgid "Restricted Transactional Memory" msgstr "Ограниченная память переносов" #. /flag:cqm -#: modules/devices/x86/x86_data.c:206 +#: modules/devices/x86/x86_data.c:211 msgctxt "x86-flag" msgid "Cache QoS Monitoring" msgstr "Мониторинг кэша QoS" #. /flag:mpx -#: modules/devices/x86/x86_data.c:207 +#: modules/devices/x86/x86_data.c:212 msgctxt "x86-flag" msgid "Memory Protection Extension" msgstr "Расширение защиты памяти" #. /flag:avx512f -#: modules/devices/x86/x86_data.c:208 +#: modules/devices/x86/x86_data.c:213 msgctxt "x86-flag" msgid "AVX-512 foundation" msgstr "Основа AVX-512" #. /flag:avx512dq -#: modules/devices/x86/x86_data.c:209 +#: modules/devices/x86/x86_data.c:214 msgctxt "x86-flag" msgid "AVX-512 Double/Quad instructions" msgstr "Инструкции AVX-512 Double/Quad" #. /flag:rdseed -#: modules/devices/x86/x86_data.c:210 +#: modules/devices/x86/x86_data.c:215 msgctxt "x86-flag" msgid "The RDSEED instruction" msgstr "Инструкция RDSEED" #. /flag:adx -#: modules/devices/x86/x86_data.c:211 +#: modules/devices/x86/x86_data.c:216 msgctxt "x86-flag" msgid "The ADCX and ADOX instructions" msgstr "Инструкции ADCX и ADOX" #. /flag:smap -#: modules/devices/x86/x86_data.c:212 +#: modules/devices/x86/x86_data.c:217 msgctxt "x86-flag" msgid "Supervisor Mode Access Prevention" msgstr "Предотвращение доступа к режиму супервизора" #. /flag:clflushopt -#: modules/devices/x86/x86_data.c:213 +#: modules/devices/x86/x86_data.c:218 msgctxt "x86-flag" msgid "CLFLUSHOPT instruction" msgstr "Инструкция CLFLUSHOPT" #. /flag:clwb -#: modules/devices/x86/x86_data.c:214 +#: modules/devices/x86/x86_data.c:219 msgctxt "x86-flag" msgid "CLWB instruction" msgstr "Инструкция CLWB" #. /flag:avx512pf -#: modules/devices/x86/x86_data.c:215 +#: modules/devices/x86/x86_data.c:220 msgctxt "x86-flag" msgid "AVX-512 Prefetch" msgstr "" #. /flag:avx512er -#: modules/devices/x86/x86_data.c:216 +#: modules/devices/x86/x86_data.c:221 msgctxt "x86-flag" msgid "AVX-512 Exponential and Reciprocal" msgstr "" #. /flag:avx512cd -#: modules/devices/x86/x86_data.c:217 +#: modules/devices/x86/x86_data.c:222 msgctxt "x86-flag" msgid "AVX-512 Conflict Detection" msgstr "Обнаружения конфликтов AVX-512" #. /flag:sha_ni -#: modules/devices/x86/x86_data.c:218 +#: modules/devices/x86/x86_data.c:223 msgctxt "x86-flag" msgid "SHA1/SHA256 Instruction Extensions" msgstr "Расширения инструкций SHA1/SHA256" #. /flag:avx512bw -#: modules/devices/x86/x86_data.c:219 +#: modules/devices/x86/x86_data.c:224 msgctxt "x86-flag" msgid "AVX-512 Byte/Word instructions" msgstr "Инструкции AVX-512 Byte/Word" #. /flag:avx512vl -#: modules/devices/x86/x86_data.c:220 +#: modules/devices/x86/x86_data.c:225 msgctxt "x86-flag" msgid "AVX-512 128/256 Vector Length extensions" msgstr "Расширения длины вектора AVX-512 128/256" #. /flag:xsaveopt -#: modules/devices/x86/x86_data.c:222 +#: modules/devices/x86/x86_data.c:227 msgctxt "x86-flag" msgid "Optimized XSAVE" msgstr "Оптимизированный XSAVE" #. /flag:xsavec -#: modules/devices/x86/x86_data.c:223 +#: modules/devices/x86/x86_data.c:228 msgctxt "x86-flag" msgid "XSAVEC" msgstr "" #. /flag:xgetbv1 -#: modules/devices/x86/x86_data.c:224 +#: modules/devices/x86/x86_data.c:229 msgctxt "x86-flag" msgid "XGETBV with ECX = 1" msgstr "XGETBV с ECX = 1" #. /flag:xsaves -#: modules/devices/x86/x86_data.c:225 +#: modules/devices/x86/x86_data.c:230 msgctxt "x86-flag" msgid "XSAVES/XRSTORS" msgstr "" #. /flag:cqm_llc -#: modules/devices/x86/x86_data.c:227 +#: modules/devices/x86/x86_data.c:232 msgctxt "x86-flag" msgid "LLC QoS" msgstr "" #. /flag:cqm_occup_llc -#: modules/devices/x86/x86_data.c:229 +#: modules/devices/x86/x86_data.c:234 msgctxt "x86-flag" msgid "LLC occupancy monitoring" msgstr "Мониторинг занятости LLC" #. /flag:cqm_mbm_total -#: modules/devices/x86/x86_data.c:230 +#: modules/devices/x86/x86_data.c:235 msgctxt "x86-flag" msgid "LLC total MBM monitoring" msgstr "Полный MBM-мониторинг LLC" #. /flag:cqm_mbm_local -#: modules/devices/x86/x86_data.c:231 +#: modules/devices/x86/x86_data.c:236 msgctxt "x86-flag" msgid "LLC local MBM monitoring" msgstr "Локальный MBM-мониторинг LLC" #. /flag:clzero -#: modules/devices/x86/x86_data.c:233 +#: modules/devices/x86/x86_data.c:238 msgctxt "x86-flag" msgid "CLZERO instruction" msgstr "Инструкция CLZERO" #. /flag:irperf -#: modules/devices/x86/x86_data.c:234 +#: modules/devices/x86/x86_data.c:239 msgctxt "x86-flag" msgid "instructions retired performance counter" msgstr "инструкции счетчика отложенной производительности" #. /flag:dtherm -#: modules/devices/x86/x86_data.c:236 +#: modules/devices/x86/x86_data.c:241 msgctxt "x86-flag" msgid "digital thermal sensor" msgstr "цифровой сенсор температуры" #. /flag:ida -#: modules/devices/x86/x86_data.c:237 +#: modules/devices/x86/x86_data.c:242 msgctxt "x86-flag" msgid "Intel Dynamic Acceleration" msgstr "Динамическое ускорение Intel" #. /flag:arat -#: modules/devices/x86/x86_data.c:238 +#: modules/devices/x86/x86_data.c:243 msgctxt "x86-flag" msgid "Always Running APIC Timer" msgstr "Таймер APIC всегда запущен" #. /flag:pln -#: modules/devices/x86/x86_data.c:239 +#: modules/devices/x86/x86_data.c:244 msgctxt "x86-flag" msgid "Intel Power Limit Notification" msgstr "Уведомление о лимите энергии Intel" #. /flag:pts -#: modules/devices/x86/x86_data.c:240 +#: modules/devices/x86/x86_data.c:245 msgctxt "x86-flag" msgid "Intel Package Thermal Status" -msgstr "Статус температуры Intel" +msgstr "Состояние температуры Intel" #. /flag:hwp -#: modules/devices/x86/x86_data.c:241 +#: modules/devices/x86/x86_data.c:246 msgctxt "x86-flag" msgid "Intel Hardware P-states" msgstr "Аппаратные P-states Intel" #. /flag:hwp_notify -#: modules/devices/x86/x86_data.c:242 +#: modules/devices/x86/x86_data.c:247 msgctxt "x86-flag" msgid "HWP notification" msgstr "Уведомление HWP" #. /flag:hwp_act_window -#: modules/devices/x86/x86_data.c:243 +#: modules/devices/x86/x86_data.c:248 msgctxt "x86-flag" msgid "HWP Activity Window" msgstr "Окно активности HWP" #. /flag:hwp_epp -#: modules/devices/x86/x86_data.c:244 +#: modules/devices/x86/x86_data.c:249 msgctxt "x86-flag" msgid "HWP Energy Performance Preference" msgstr "Настройка производительности энергии HWP" #. /flag:hwp_pkg_req -#: modules/devices/x86/x86_data.c:245 +#: modules/devices/x86/x86_data.c:250 msgctxt "x86-flag" msgid "HWP package-level request" msgstr "Запрос уровня пакета HWP" #. /flag:npt -#: modules/devices/x86/x86_data.c:247 +#: modules/devices/x86/x86_data.c:252 msgctxt "x86-flag" msgid "AMD Nested Page Table support" msgstr "Поддержка таблиц вложенной страницы AMD" #. /flag:lbrv -#: modules/devices/x86/x86_data.c:248 +#: modules/devices/x86/x86_data.c:253 msgctxt "x86-flag" msgid "AMD LBR Virtualization support" msgstr "Поддержка виртуализации AMD LBR" #. /flag:svm_lock -#: modules/devices/x86/x86_data.c:249 +#: modules/devices/x86/x86_data.c:254 msgctxt "x86-flag" msgid "AMD SVM locking MSR" msgstr "Блокировка MSR AMD SVM" #. /flag:nrip_save -#: modules/devices/x86/x86_data.c:250 +#: modules/devices/x86/x86_data.c:255 msgctxt "x86-flag" msgid "AMD SVM next_rip save" msgstr "Сохранение next_rip AMD SVM" #. /flag:tsc_scale -#: modules/devices/x86/x86_data.c:251 +#: modules/devices/x86/x86_data.c:256 msgctxt "x86-flag" msgid "AMD TSC scaling support" msgstr "Поддержка масштабирования AMD TSC" #. /flag:vmcb_clean -#: modules/devices/x86/x86_data.c:252 +#: modules/devices/x86/x86_data.c:257 msgctxt "x86-flag" msgid "AMD VMCB clean bits support" msgstr "Поддержка чистых бит AMD VMCB" #. /flag:flushbyasid -#: modules/devices/x86/x86_data.c:253 +#: modules/devices/x86/x86_data.c:258 msgctxt "x86-flag" msgid "AMD flush-by-ASID support" msgstr "Поддержка AMD flush-by-ASID" #. /flag:decodeassists -#: modules/devices/x86/x86_data.c:254 +#: modules/devices/x86/x86_data.c:259 msgctxt "x86-flag" msgid "AMD Decode Assists support" msgstr "Поддержка помощи декодирования" #. /flag:pausefilter -#: modules/devices/x86/x86_data.c:255 +#: modules/devices/x86/x86_data.c:260 msgctxt "x86-flag" msgid "AMD filtered pause intercept" msgstr "Перехват фильтрованной паузы AMD" #. /flag:pfthreshold -#: modules/devices/x86/x86_data.c:256 +#: modules/devices/x86/x86_data.c:261 msgctxt "x86-flag" msgid "AMD pause filter threshold" msgstr "Порог фильтра паузы AMD" #. /flag:avic -#: modules/devices/x86/x86_data.c:257 +#: modules/devices/x86/x86_data.c:262 msgctxt "x86-flag" msgid "Virtual Interrupt Controller" msgstr "Контроллер виртуального прерывания" #. /flag:pku -#: modules/devices/x86/x86_data.c:259 +#: modules/devices/x86/x86_data.c:264 msgctxt "x86-flag" msgid "Protection Keys for Userspace" msgstr "Ключи защиты для пространства пользователя" #. /flag:ospke -#: modules/devices/x86/x86_data.c:260 +#: modules/devices/x86/x86_data.c:265 msgctxt "x86-flag" msgid "OS Protection Keys Enable" msgstr "Включение защиты ключей ОС" #. /flag:overflow_recov -#: modules/devices/x86/x86_data.c:262 +#: modules/devices/x86/x86_data.c:267 msgctxt "x86-flag" msgid "MCA overflow recovery support" msgstr "Поддержка восстановления после переполнения MCA" #. /flag:succor -#: modules/devices/x86/x86_data.c:263 +#: modules/devices/x86/x86_data.c:268 msgctxt "x86-flag" msgid "uncorrectable error containment and recovery" msgstr "неисправимое содержание ошибки и восстановление" #. /flag:smca -#: modules/devices/x86/x86_data.c:264 +#: modules/devices/x86/x86_data.c:269 msgctxt "x86-flag" msgid "Scalable MCA" msgstr "Масштабируемый MCA" #. /bug:f00f -#: modules/devices/x86/x86_data.c:267 +#: modules/devices/x86/x86_data.c:272 msgctxt "x86-flag" msgid "Intel F00F bug" msgstr "Ошибка Intel F00F" #. /bug:fdiv -#: modules/devices/x86/x86_data.c:268 +#: modules/devices/x86/x86_data.c:273 msgctxt "x86-flag" msgid "FPU FDIV" msgstr "" #. /bug:coma -#: modules/devices/x86/x86_data.c:269 +#: modules/devices/x86/x86_data.c:274 msgctxt "x86-flag" msgid "Cyrix 6x86 coma" msgstr "" #. /bug:tlb_mmatch -#: modules/devices/x86/x86_data.c:270 +#: modules/devices/x86/x86_data.c:275 msgctxt "x86-flag" msgid "AMD Erratum 383" msgstr "" #. /bug:apic_c1e #. /bug:amd_e400 -#: modules/devices/x86/x86_data.c:271 modules/devices/x86/x86_data.c:280 +#: modules/devices/x86/x86_data.c:276 modules/devices/x86/x86_data.c:285 msgctxt "x86-flag" msgid "AMD Erratum 400" msgstr "" #. /bug:11ap -#: modules/devices/x86/x86_data.c:272 +#: modules/devices/x86/x86_data.c:277 msgctxt "x86-flag" msgid "Bad local APIC aka 11AP" msgstr "Неверный локальный APIC или 11AP" #. /bug:fxsave_leak -#: modules/devices/x86/x86_data.c:273 +#: modules/devices/x86/x86_data.c:278 msgctxt "x86-flag" msgid "FXSAVE leaks FOP/FIP/FOP" msgstr "FXSAVE утекает FOP/FIP/FOP" #. /bug:clflush_monitor -#: modules/devices/x86/x86_data.c:274 +#: modules/devices/x86/x86_data.c:279 msgctxt "x86-flag" msgid "AAI65, CLFLUSH required before MONITOR" msgstr "AAI65, CLFLUSH требуются до MONITOR" #. /bug:sysret_ss_attrs -#: modules/devices/x86/x86_data.c:275 +#: modules/devices/x86/x86_data.c:280 msgctxt "x86-flag" msgid "SYSRET doesn't fix up SS attrs" msgstr "SYSRET не исправляет атрибуты SS" #. /bug:espfix -#: modules/devices/x86/x86_data.c:276 +#: modules/devices/x86/x86_data.c:281 msgctxt "x86-flag" msgid "IRET to 16-bit SS corrupts ESP/RSP high bits" msgstr "IRET на 16-битные SS прерывает высшие биты ESP/RSP" #. /bug:null_seg -#: modules/devices/x86/x86_data.c:277 +#: modules/devices/x86/x86_data.c:282 msgctxt "x86-flag" msgid "Nulling a selector preserves the base" msgstr "Обнуление селектора продпочитается основному" #. /bug:swapgs_fence -#: modules/devices/x86/x86_data.c:278 +#: modules/devices/x86/x86_data.c:283 msgctxt "x86-flag" msgid "SWAPGS without input dep on GS" msgstr "SWAPGS без ввода зависит от GS" #. /bug:monitor -#: modules/devices/x86/x86_data.c:279 +#: modules/devices/x86/x86_data.c:284 msgctxt "x86-flag" msgid "IPI required to wake up remote CPU" -msgstr "требуется IPI для удаленного пробуждения процессора" +msgstr "Требуется IPI для удаленного пробуждения процессора" + +#. /bug:cpu_insecure & bug:cpu_meltdown +#: modules/devices/x86/x86_data.c:286 modules/devices/x86/x86_data.c:287 +msgctxt "x86-flag" +msgid "" +"CPU is affected by meltdown attack and needs kernel page table isolation" +msgstr "" +"Процессор подвержен атаке Meltdown, требуется изоляция таблицы страниц ядра" + +#. /bug:spectre_v1 +#: modules/devices/x86/x86_data.c:288 +msgctxt "x86-flag" +msgid "CPU is affected by Spectre variant 1 attack with conditional branches" +msgstr "" +"Процессор подвержен атаке Spectre variant 1 с последовательными ветвями" + +#. /bug:spectre_v2 +#: modules/devices/x86/x86_data.c:289 +msgctxt "x86-flag" +msgid "CPU is affected by Spectre variant 2 attack with indirect branches" +msgstr "Процессор подвержен атаке Spectre variant 2 с непрямыми ветвями" + +#. /bug:spec_store_bypass +#: modules/devices/x86/x86_data.c:290 +msgctxt "x86-flag" +msgid "CPU is affected by speculative store bypass attack" +msgstr "Процессор подвержен атаке спекулятивного обхода хранилища" + +#. /bug:l1tf +#: modules/devices/x86/x86_data.c:291 +msgctxt "x86-flag" +msgid "CPU is affected by L1 Terminal Fault" +msgstr "" #. /x86/kernel/cpu/powerflags.h #. /flag:pm:ts -#: modules/devices/x86/x86_data.c:283 +#: modules/devices/x86/x86_data.c:294 msgctxt "x86-flag" msgid "temperature sensor" -msgstr "сенсор температуры" +msgstr "датчик температуры" #. /flag:pm:fid -#: modules/devices/x86/x86_data.c:284 +#: modules/devices/x86/x86_data.c:295 msgctxt "x86-flag" msgid "frequency id control" msgstr "контроль частоты id" #. /flag:pm:vid -#: modules/devices/x86/x86_data.c:285 +#: modules/devices/x86/x86_data.c:296 msgctxt "x86-flag" msgid "voltage id control" msgstr "контроль вольтажа id" #. /flag:pm:ttp -#: modules/devices/x86/x86_data.c:286 +#: modules/devices/x86/x86_data.c:297 msgctxt "x86-flag" msgid "thermal trip" msgstr "изменение температуры" #. /flag:pm:tm -#: modules/devices/x86/x86_data.c:287 +#: modules/devices/x86/x86_data.c:298 msgctxt "x86-flag" msgid "hardware thermal control" msgstr "аппаратный контроль температуры" #. /flag:pm:stc -#: modules/devices/x86/x86_data.c:288 +#: modules/devices/x86/x86_data.c:299 msgctxt "x86-flag" msgid "software thermal control" msgstr "программный контроль температуры" #. /flag:pm:100mhzsteps -#: modules/devices/x86/x86_data.c:289 +#: modules/devices/x86/x86_data.c:300 msgctxt "x86-flag" msgid "100 MHz multiplier control" msgstr "контроль множителя 100 МГц" #. /flag:pm:hwpstate -#: modules/devices/x86/x86_data.c:290 +#: modules/devices/x86/x86_data.c:301 msgctxt "x86-flag" msgid "hardware P-state control" msgstr "аппаратное управление P-state" #. /flag:pm:cpb -#: modules/devices/x86/x86_data.c:291 +#: modules/devices/x86/x86_data.c:302 msgctxt "x86-flag" msgid "core performance boost" msgstr "повышение производительности ядра" #. /flag:pm:eff_freq_ro -#: modules/devices/x86/x86_data.c:292 +#: modules/devices/x86/x86_data.c:303 msgctxt "x86-flag" msgid "Readonly aperf/mperf" msgstr "aperf/mperf только для чтения" #. /flag:pm:proc_feedback -#: modules/devices/x86/x86_data.c:293 +#: modules/devices/x86/x86_data.c:304 msgctxt "x86-flag" msgid "processor feedback interface" msgstr "интерфейс отзыва процессора" #. /flag:pm:acc_power -#: modules/devices/x86/x86_data.c:294 +#: modules/devices/x86/x86_data.c:305 msgctxt "x86-flag" msgid "accumulated power mechanism" msgstr "механизм накопления питания" -#: modules/network.c:59 +#: modules/network.c:61 msgid "Interfaces" msgstr "Интерфейсы" -#: modules/network.c:60 +#: modules/network.c:62 msgid "IP Connections" msgstr "IP Подключения" -#: modules/network.c:61 +#: modules/network.c:63 msgid "Routing Table" msgstr "Таблица маршрутизации" -#: modules/network.c:62 modules/network.c:303 +#: modules/network.c:64 modules/network.c:309 msgid "ARP Table" msgstr "Таблица ARP" -#: modules/network.c:63 +#: modules/network.c:65 msgid "DNS Servers" -msgstr "DNS сервера" +msgstr "DNS-сервера" -#: modules/network.c:64 +#: modules/network.c:66 msgid "Statistics" msgstr "Статистика" -#: modules/network.c:65 +#: modules/network.c:67 msgid "Shared Directories" msgstr "Общие каталоги" -#: modules/network.c:304 modules/network.c:326 modules/network.c:357 +#: modules/network.c:310 modules/network.c:332 modules/network.c:363 #: modules/network/net.c:472 msgid "IP Address" msgstr "IP-адрес" -#: modules/network.c:304 modules/network.c:357 modules/network.c:374 -msgid "Interface" -msgstr "Интерфейс" - -#: modules/network.c:304 +#: modules/network.c:310 msgid "MAC Address" msgstr "MAC-адрес" -#: modules/network.c:313 +#: modules/network.c:319 msgid "SAMBA" msgstr "" -#: modules/network.c:314 +#: modules/network.c:320 msgid "NFS" msgstr "" -#: modules/network.c:325 +#: modules/network.c:331 msgid "Name Servers" msgstr "" -#: modules/network.c:340 +#: modules/network.c:346 msgid "Connections" -msgstr "" +msgstr "Соединения" -#: modules/network.c:341 +#: modules/network.c:347 msgid "Local Address" msgstr "Локальный адрес" -#: modules/network.c:341 -msgid "Protocol" -msgstr "Протокол" - -#: modules/network.c:341 +#: modules/network.c:347 msgid "Foreign Address" msgstr "Удалённый адрес" -#: modules/network.c:341 +#: modules/network.c:347 msgid "State" msgstr "Состояние" -#: modules/network.c:357 +#: modules/network.c:363 msgid "Sent" msgstr "Отправлено" -#: modules/network.c:357 +#: modules/network.c:363 msgid "Received" msgstr "Получено" -#: modules/network.c:373 +#: modules/network.c:379 msgid "IP routing table" msgstr "" -#: modules/network.c:374 +#: modules/network.c:380 msgid "Destination/Gateway" -msgstr "Цель / Шлюз" +msgstr "Цель/Шлюз" -#: modules/network.c:374 -msgid "Flags" -msgstr "Флаги" - -#: modules/network.c:374 modules/network/net.c:473 +#: modules/network.c:380 modules/network/net.c:473 msgid "Mask" msgstr "Маска" -#: modules/network.c:402 +#: modules/network.c:408 msgid "Network" msgstr "Сеть" -#: modules/network.c:435 +#: modules/network.c:441 msgid "Gathers information about this computer's network connection" msgstr "Собирает информацию о сетевых подключениях" #: modules/network/net.c:72 msgctxt "wi-op-mode" msgid "Auto" -msgstr "" +msgstr "Авто" #: modules/network/net.c:73 msgctxt "wi-op-mode" @@ -4403,7 +6069,7 @@ msgstr "" #: modules/network/net.c:270 msgctxt "net-if-type" msgid "Ethernet" -msgstr "" +msgstr "Ethernet" #: modules/network/net.c:243 msgctxt "net-if-type" @@ -4520,20 +6186,15 @@ msgstr "" #: modules/network/net.c:275 msgctxt "net-if-type" msgid "(Unknown)" -msgstr "" +msgstr "(Неизвестно)" #: modules/network/net.c:343 modules/network/net.c:353 msgid "Network Interfaces" -msgstr "" +msgstr "Сетевые интерфейсы" #: modules/network/net.c:343 msgid "None Found" -msgstr "" - -#: modules/network/net.c:395 modules/network/net.c:417 -#: modules/network/net.c:418 -msgid "MiB" -msgstr " МиБ" +msgstr "Не найдено" #: modules/network/net.c:409 msgid "Network Adapter Properties" @@ -4566,11 +6227,11 @@ msgstr "Отправлено байт" #: modules/network/net.c:435 modules/network/net.c:457 #: modules/network/net.c:458 msgid "dBm" -msgstr "" +msgstr "дБм" #: modules/network/net.c:435 msgid "mW" -msgstr "" +msgstr "мВт" #: modules/network/net.c:449 msgid "Wireless Properties" @@ -4578,24 +6239,16 @@ msgstr "" #: modules/network/net.c:450 msgid "Network Name (SSID)" -msgstr "" +msgstr "Название сети (SSID)" #: modules/network/net.c:451 msgid "Bit Rate" -msgstr "" - -#: modules/network/net.c:451 -msgid "Mb/s" -msgstr "" +msgstr "Битрейт" #: modules/network/net.c:452 msgid "Transmission Power" msgstr "" -#: modules/network/net.c:454 -msgid "Status" -msgstr "" - #: modules/network/net.c:455 msgid "Link Quality" msgstr "" @@ -4606,7 +6259,7 @@ msgstr "" #: modules/network/net.c:471 msgid "Internet Protocol (IPv4)" -msgstr "" +msgstr "Интернет-протокол (IPv4)" #: modules/network/net.c:472 modules/network/net.c:473 #: modules/network/net.c:475 diff --git a/po/salvage.sh b/po/salvage.sh deleted file mode 100644 index 295187f4..00000000 --- a/po/salvage.sh +++ /dev/null @@ -1,83 +0,0 @@ -#!bash - -# To help with https://github.com/lpereira/hardinfo/issues/100 -# Saves the old label translations. -# -# This is not an automated magical tool, it is an ugly hack of a helper -# for a tedious process. Read the instructions if you want to use it! -# -# bash updatepo.sh -# { commit here or the next commit's diff will be noisy and useless } -# -# { repeat for each language... } -# bash salvage.sh XX.po >XX.po.salv -# { edit XX.po.salv, remove nonsense } -# msgcat --use-first XX.po XX.po.salv > XX.po.merged -# diff XX.po XX.po.merged -# { if there are any added translations, they do not actually appear -# in hardinfo.pot, and they will end up "obsolete" and then re-processed -# in the next salvage. So save some hassle and just remove them now. } -# mv XX.po.merged XX.po -# -# { when all languages are done run updatepo.sh again to clean up } -# bash updatepo.sh -# - -if [ -z "$@" ]; then - echo "READ script before running!" - echo "Error: Needs .po file to process" - exit 1 -fi - -do_salvage() { - msgid=() - msgstr=() - - while IFS= read -r line; do - msgid+=( "$line" ) - done <<< "$MSGEXEC_MSGID" - - while IFS= read -r line; do - msgstr+=( "$line" ) - done <&0 - - for i in ${!msgid[@]}; do - # column titles - msgid[$i]=`echo "${msgid[$i]}" | sed -e 's/ColumnTitle\$.*=//'` - msgstr[$i]=`echo "${msgstr[$i]}" | sed -e 's/ColumnTitle\$.*=//'` - - # section titles - msgid[$i]=`echo "${msgid[$i]}" | sed -e 's/\[\(.*\)\]/\1/'` - msgstr[$i]=`echo "${msgstr[$i]}" | sed -e 's/\[\(.*\)\]/\1/'` - - # regular labels - msgid[$i]=`echo "${msgid[$i]}" | sed -e 's/=.*$//'` - msgstr[$i]=`echo "${msgstr[$i]}" | sed -e 's/=.*$//'` - - # junk - msgid[$i]=`echo "${msgid[$i]}" | sed -e 's/%s//'` - msgid[$i]=`echo "${msgid[$i]}" | sed -e 's/%s//'` - - if [[ -n "${msgid[$i]}" && -n "${msgstr[$i]}" ]]; then - if [ "${msgid[$i]}" != "${msgstr[$i]}" ]; then - echo "msgid \"${msgid[$i]}\"" - echo "msgstr \"${msgstr[$i]}\"" - echo "" - fi - fi - done -} - -cat >salvage.tmp <<'EOT' - -msgid "" -msgstr "" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -EOT - -export -f do_salvage -msgattrib --only-obsolete "$@" | msgexec bash -c 'do_salvage "$0"' >>salvage.tmp -msguniq salvage.tmp -rm salvage.tmp diff --git a/po/tr.po b/po/tr.po new file mode 100644 index 00000000..296e1667 --- /dev/null +++ b/po/tr.po @@ -0,0 +1,6295 @@ +# Turkish translation for hardinfo. +# Copyright (C) 2020-2023 hardinfo's COPYRIGHT HOLDER +# This file is distributed under the same license as the hardinfo package. +# +# Cihan Alkan , 2020. +# Serkan Önder , 2021. +# Sabri Ünal , 2023. +# +msgid "" +msgstr "" +"Project-Id-Version: hardinfo master\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-05-24 20:22+0300\n" +"PO-Revision-Date: 2023-05-24 21:01+0300\n" +"Last-Translator: Sabri Ünal \n" +"Language-Team: Türkçe \n" +"Language: tr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Poedit-Basepath: ..\n" +"X-Generator: Poedit 3.2.2\n" + +#: hardinfo/cpu_util.c:29 +msgid "Little Endian" +msgstr "Küçük Endian" + +#: hardinfo/cpu_util.c:31 +msgid "Big Endian" +msgstr "Büyük Endian" + +#: hardinfo/cpu_util.c:204 hardinfo/cpu_util.c:215 modules/devices/gpu.c:218 +msgid "Frequency Scaling" +msgstr "Frekans Ölçeklendirme" + +#: hardinfo/cpu_util.c:205 modules/devices/gpu.c:219 +msgid "Minimum" +msgstr "En düşük" + +#: hardinfo/cpu_util.c:205 hardinfo/cpu_util.c:206 hardinfo/cpu_util.c:207 +#: hardinfo/dt_util.c:589 modules/devices/gpu.c:219 modules/devices/gpu.c:220 +msgid "kHz" +msgstr "kHz" + +#: hardinfo/cpu_util.c:206 modules/devices/gpu.c:220 +msgid "Maximum" +msgstr "En yüksek" + +#: hardinfo/cpu_util.c:207 +msgid "Current" +msgstr "Güncel" + +#: hardinfo/cpu_util.c:208 modules/devices/gpu.c:221 +msgid "Transition Latency" +msgstr "Geçiş Gecikmesi" + +#: hardinfo/cpu_util.c:208 modules/devices/gpu.c:221 +msgid "ns" +msgstr "ns" + +#: hardinfo/cpu_util.c:209 +msgid "Governor" +msgstr "Yönetici" + +#: hardinfo/cpu_util.c:210 hardinfo/cpu_util.c:216 modules/devices.c:774 +#: modules/devices/gpu.c:165 modules/devices/pci.c:148 +#: modules/devices/usb.c:139 +msgid "Driver" +msgstr "Sürücü" + +#: hardinfo/cpu_util.c:222 modules/computer.c:765 +#: modules/devices/arm/processor.c:256 modules/devices/e2k/processor.c:178 +#: modules/devices/x86/processor.c:284 modules/devices/x86/processor.c:388 +#: modules/devices/x86/processor.c:526 +msgid "(Not Available)" +msgstr "(Mevcut değil)" + +#: hardinfo/cpu_util.c:230 hardinfo/cpu_util.c:232 +msgid "Socket" +msgstr "Yuva" + +#: hardinfo/cpu_util.c:235 hardinfo/cpu_util.c:237 modules/devices/gpu.c:161 +#: modules/devices/gpu.c:245 +msgid "Core" +msgstr "Çekirdek" + +#: hardinfo/cpu_util.c:240 +msgid "Book" +msgstr "Kitap" + +#: hardinfo/cpu_util.c:242 +msgid "Drawer" +msgstr "Çekmece" + +#: hardinfo/cpu_util.c:248 modules/devices/arm/processor.c:471 +#: modules/devices/x86/processor.c:752 +msgid "Topology" +msgstr "Topoloji" + +#: hardinfo/cpu_util.c:249 +msgid "ID" +msgstr "ID" + +#: hardinfo/dmi_util.c:25 +msgid "BIOS Information" +msgstr "BIOS Bilgisi" + +#: hardinfo/dmi_util.c:26 modules/devices/parisc/processor.c:157 +msgid "System" +msgstr "Sistem" + +#: hardinfo/dmi_util.c:27 +msgid "Base Board" +msgstr "Taban Kurulu" + +#: hardinfo/dmi_util.c:28 modules/devices/dmi.c:54 +msgid "Chassis" +msgstr "Şasi" + +#: hardinfo/dmi_util.c:29 modules/computer.c:548 modules/computer.c:1034 +#: modules/devices/alpha/processor.c:87 modules/devices/arm/processor.c:341 +#: modules/devices.c:100 modules/devices/e2k/processor.c:357 +#: modules/devices/ia64/processor.c:159 +#: modules/devices/loongarch64/processor.c:80 +#: modules/devices/m68k/processor.c:83 modules/devices/mips/processor.c:74 +#: modules/devices/parisc/processor.c:154 modules/devices/ppc/processor.c:157 +#: modules/devices/riscv/processor.c:181 modules/devices/s390/processor.c:131 +#: modules/devices/sh/processor.c:83 modules/devices/sparc/processor.c:74 +#: modules/devices/x86/processor.c:648 +msgid "Processor" +msgstr "İşlemci" + +#: hardinfo/dmi_util.c:30 +msgid "Memory Controller" +msgstr "Bellek Denetleyici" + +#: hardinfo/dmi_util.c:31 +msgid "Memory Module" +msgstr "Hafıza modülü" + +#: hardinfo/dmi_util.c:32 modules/devices/e2k/processor.c:366 +#: modules/devices/parisc/processor.c:163 modules/devices/x86/processor.c:664 +msgid "Cache" +msgstr "Önbellek" + +#: hardinfo/dmi_util.c:33 +msgid "Port Connector" +msgstr "Bağlantı Noktası Konektörü" + +#: hardinfo/dmi_util.c:34 +msgid "System Slots" +msgstr "Sistem Yuvaları" + +#: hardinfo/dmi_util.c:35 +msgid "On Board Devices" +msgstr "Bütünleşik cihazlar" + +#: hardinfo/dmi_util.c:36 +msgid "OEM Strings" +msgstr "OEM Dizeleri" + +#: hardinfo/dmi_util.c:37 +msgid "System Configuration Options" +msgstr "Sistem Yapılandırma Seçenekleri" + +#: hardinfo/dmi_util.c:38 +msgid "BIOS Language" +msgstr "BIOS Dili" + +#: hardinfo/dmi_util.c:39 +msgid "Group Associations" +msgstr "Grup Dernekleri" + +#: hardinfo/dmi_util.c:40 +msgid "System Event Log" +msgstr "Sistem Olay Günlüğü" + +#: hardinfo/dmi_util.c:41 +msgid "Physical Memory Array" +msgstr "Fiziksel Bellek Dizisi" + +#: hardinfo/dmi_util.c:42 +msgid "Memory Device" +msgstr "Bellek Aygıtı" + +#: hardinfo/dmi_util.c:43 +msgid "32-bit Memory Error" +msgstr "32-bit Bellek hatası" + +#: hardinfo/dmi_util.c:44 +msgid "Memory Array Mapped Address" +msgstr "Bellek Dizisi Eşlenmiş Adres" + +#: hardinfo/dmi_util.c:45 +msgid "Memory Device Mapped Address" +msgstr "Bellek Aygıtı Eşlenen Adres" + +#: hardinfo/dmi_util.c:46 +msgid "Built-in Pointing Device" +msgstr "Yerleşik İşaretleme Aygıtı" + +#: hardinfo/dmi_util.c:47 +msgid "Portable Battery" +msgstr "Taşınabilir Pil" + +#: hardinfo/dmi_util.c:48 +msgid "System Reset" +msgstr "Sistem yeniden başlatma" + +#: hardinfo/dmi_util.c:49 +msgid "Hardware Security" +msgstr "Donanım Güvenliği" + +#: hardinfo/dmi_util.c:50 +msgid "System Power Controls" +msgstr "Sistem Güç Kontrolleri" + +#: hardinfo/dmi_util.c:51 +msgid "Voltage Probe" +msgstr "Gerilim Probu" + +#: hardinfo/dmi_util.c:52 +msgid "Cooling Device" +msgstr "Soğutma Cihazı" + +#: hardinfo/dmi_util.c:53 +msgid "Temperature Probe" +msgstr "Sıcaklık probu" + +#: hardinfo/dmi_util.c:54 +msgid "Electrical Current Probe" +msgstr "Elektrik Akımı Probu" + +#: hardinfo/dmi_util.c:55 +msgid "Out-of-band Remote Access" +msgstr "Bant Dışı Uzaktan Erişim" + +#: hardinfo/dmi_util.c:56 +msgid "Boot Integrity Services" +msgstr "Önyükleme Bütünlük Hizmetleri" + +#: hardinfo/dmi_util.c:57 +msgid "System Boot" +msgstr "Sistem Önyükleme" + +#: hardinfo/dmi_util.c:58 +msgid "64-bit Memory Error" +msgstr "64-bit Bellek Hatası" + +#: hardinfo/dmi_util.c:59 +msgid "Management Device" +msgstr "Yönetim Cihazı" + +#: hardinfo/dmi_util.c:60 +msgid "Management Device Component" +msgstr "Yönetim Cihazı Bileşeni" + +#: hardinfo/dmi_util.c:61 +msgid "Management Device Threshold Data" +msgstr "Yönetim Cihazı Eşik Verileri" + +#: hardinfo/dmi_util.c:62 +msgid "Memory Channel" +msgstr "Bellek Kanalı" + +#: hardinfo/dmi_util.c:63 +msgid "IPMI Device" +msgstr "IPMI Cihazı" + +#: hardinfo/dmi_util.c:64 +msgid "Power Supply" +msgstr "Güç kaynağı" + +#: hardinfo/dmi_util.c:65 +msgid "Additional Information" +msgstr "Ek Bilgi" + +#: hardinfo/dmi_util.c:66 +msgid "Onboard Device" +msgstr "Yerleşik Cihaz" + +#: hardinfo/dmi_util.c:233 +msgid "Invalid chassis type (0)" +msgstr "Geçersiz kasa tipi (0)" + +#: hardinfo/dmi_util.c:234 hardinfo/dmi_util.c:235 +msgid "Unknown chassis type" +msgstr "Bilinmeyen kasa türü" + +#: hardinfo/dmi_util.c:236 +msgid "Desktop" +msgstr "Masaüstü" + +#: hardinfo/dmi_util.c:237 +msgid "Low-profile Desktop" +msgstr "Düşük profilli Masaüstü" + +#: hardinfo/dmi_util.c:238 +msgid "Pizza Box" +msgstr "Pizza Kutusu" + +#: hardinfo/dmi_util.c:239 +msgid "Mini Tower" +msgstr "Mini Kule" + +#: hardinfo/dmi_util.c:240 +msgid "Tower" +msgstr "Kule" + +#: hardinfo/dmi_util.c:241 +msgid "Portable" +msgstr "Taşınabilir" + +#: hardinfo/dmi_util.c:242 modules/computer.c:410 modules/computer.c:419 +#: modules/computer.c:441 +msgid "Laptop" +msgstr "Dizüstü" + +#: hardinfo/dmi_util.c:243 +msgid "Notebook" +msgstr "Diz üstü bilgisayar" + +#: hardinfo/dmi_util.c:244 +msgid "Handheld" +msgstr "Elde taşınır" + +#: hardinfo/dmi_util.c:245 +msgid "Docking Station" +msgstr "Yerleştirme İstasyonu" + +#: hardinfo/dmi_util.c:246 +msgid "All-in-one" +msgstr "Hepsi Bir Arada" + +#: hardinfo/dmi_util.c:247 +msgid "Subnotebook" +msgstr "Mini diz üstü bilgisayar" + +#: hardinfo/dmi_util.c:248 +msgid "Space-saving" +msgstr "Yer tasarrufu sağlar" + +#: hardinfo/dmi_util.c:249 +msgid "Lunch Box" +msgstr "Sefer tası" + +#: hardinfo/dmi_util.c:250 +msgid "Main Server Chassis" +msgstr "Ana Sunucu Kasası" + +#: hardinfo/dmi_util.c:251 +msgid "Expansion Chassis" +msgstr "Genişletme Kasası" + +#: hardinfo/dmi_util.c:252 +msgid "Sub Chassis" +msgstr "Alt Kasa" + +#: hardinfo/dmi_util.c:253 +msgid "Bus Expansion Chassis" +msgstr "Bus Genişletme Kasası" + +#: hardinfo/dmi_util.c:254 +msgid "Peripheral Chassis" +msgstr "Çevresel Kasa" + +#: hardinfo/dmi_util.c:255 +msgid "RAID Chassis" +msgstr "RAID Kasa" + +#: hardinfo/dmi_util.c:256 +msgid "Rack Mount Chassis" +msgstr "Raf Tipi Kasa" + +#: hardinfo/dmi_util.c:257 +msgid "Sealed-case PC" +msgstr "Kapalı kasa PC" + +#: hardinfo/dmi_util.c:258 +msgid "Multi-system" +msgstr "Çoklu sistem" + +#: hardinfo/dmi_util.c:259 +msgid "CompactPCI" +msgstr "Kompakt PCI" + +#: hardinfo/dmi_util.c:260 +msgid "AdvancedTCA" +msgstr "GelişmişTCA" + +#: hardinfo/dmi_util.c:261 +msgid "Blade" +msgstr "Bıçak" + +#: hardinfo/dmi_util.c:262 +msgid "Blade Enclosing" +msgstr "Bıçak Muhafazası" + +#: hardinfo/dmi_util.c:263 +msgid "Tablet" +msgstr "Tablet" + +#: hardinfo/dmi_util.c:264 +msgid "Convertible" +msgstr "Çevrilebilir" + +#: hardinfo/dmi_util.c:265 +msgid "Detachable" +msgstr "Ayrılabilir" + +#: hardinfo/dmi_util.c:266 +msgid "IoT Gateway" +msgstr "IoT Ağ Geçidi" + +#: hardinfo/dmi_util.c:267 +msgid "Embedded PC" +msgstr "Gömülü PC" + +#: hardinfo/dmi_util.c:268 +msgid "Mini PC" +msgstr "Mini PC" + +#: hardinfo/dmi_util.c:269 +msgid "Stick PC" +msgstr "Çubuk PC" + +#: hardinfo/dt_util.c:1179 +msgid "phandle Map" +msgstr "tanıtıcı Haritası" + +#: hardinfo/dt_util.c:1180 +msgid "Alias Map" +msgstr "Alias Haritası" + +#: hardinfo/dt_util.c:1181 +msgid "Symbol Map" +msgstr "Sembol Haritası" + +#. / %d will be latest year of copyright +#: hardinfo/hardinfo.c:50 +#, c-format +msgid "" +"Copyright (C) 2003-%d L. A. F. Pereira. See COPYING for details.\n" +"\n" +msgstr "" +"Telif(C) 2003-%d L. A. F. Pereira. Ayrıntılar için COPYING bölümüne bakın.\n" +"\n" + +#: hardinfo/hardinfo.c:52 +#, c-format +msgid "" +"Compile-time options:\n" +" Release version: %s (%s)\n" +" BinReloc enabled: %s\n" +" Data prefix: %s\n" +" Library prefix: %s\n" +" Compiled for: %s\n" +msgstr "" +"Derleme zamanı seçenekleri:\n" +" Dağıtım sürümü: %s (%s)\n" +" BinReloc etkin: %s\n" +" Veri öneki: %s\n" +" Kütüphane öneki: %s\n" +" Için derlendi: %s\n" + +#: hardinfo/hardinfo.c:58 hardinfo/hardinfo.c:59 modules/computer.c:813 +#: modules/computer/modules.c:206 modules/computer/modules.c:207 +#: modules/devices/inputdevices.c:152 modules/devices/printers.c:138 +#: modules/devices/spd-decode.c:972 +msgid "Yes" +msgstr "Evet" + +#: hardinfo/hardinfo.c:59 modules/computer.c:813 modules/computer/modules.c:206 +#: modules/computer/modules.c:207 modules/devices/printers.c:138 +#: modules/devices/spd-decode.c:969 +msgid "No" +msgstr "Hayır" + +#: hardinfo/hardinfo.c:70 +#, c-format +msgid "" +"Failed to find runtime data.\n" +"\n" +"• Is HardInfo correctly installed?\n" +"• See if %s and %s exists and you have read permission." +msgstr "" +"Çalışma zamanı verileri bulunamadı.\n" +"\n" +"• HardInfo doğru kurulmuş mu?\n" +"• See if %s and %s exists and you have read permission." + +#: hardinfo/hardinfo.c:77 +#, c-format +msgid "" +"Modules:\n" +"%-20s %-15s %-12s\n" +msgstr "" +"Modüller:\n" +"%-20s %-15s %-12s\n" + +#: hardinfo/hardinfo.c:78 +msgid "File Name" +msgstr "Dosya Adı" + +#: hardinfo/hardinfo.c:78 modules/computer.c:694 modules/computer.c:722 +#: modules/computer.c:843 modules/computer/languages.c:95 +#: modules/computer/modules.c:224 modules/devices/arm/processor.c:469 +#: modules/devices/dmi.c:38 modules/devices/dmi.c:49 +#: modules/devices/e2k/processor.c:358 modules/devices/gpu.c:251 +#: modules/devices/ia64/processor.c:160 modules/devices/inputdevices.c:140 +#: modules/devices/monitors.c:401 modules/devices/monitors.c:503 +#: modules/devices/sh/processor.c:84 modules/devices/x86/processor.c:751 +#: modules/network.c:332 +msgid "Name" +msgstr "İsim" + +#: hardinfo/hardinfo.c:78 modules/computer.c:365 modules/computer.c:598 +#: modules/computer.c:600 modules/computer.c:771 modules/computer/modules.c:226 +#: modules/devices/dmi.c:41 modules/devices/dmi.c:47 modules/devices/dmi.c:51 +#: modules/devices/dmi.c:57 modules/devices/firmware.c:75 +#: modules/devices/inputdevices.c:145 modules/devices/monitors.c:407 +msgid "Version" +msgstr "Sürüm" + +#: hardinfo/hardinfo.c:129 +#, c-format +msgid "Unknown benchmark ``%s'' or benchmark.so not loaded" +msgstr "" +"Bilinmeyen karşılaştırmalı değerlendirme “%s” veya karşılaştırmalı " +"değerlendirme. Yüklenmedi" + +#: hardinfo/hardinfo.c:159 +msgid "Don't know what to do. Exiting." +msgstr "Ne yapacağımı bilmiyorum. Çıkılıyor." + +#: hardinfo/usb_util.c:291 modules/devices/devicetree.c:91 +#: modules/devices/devicetree.c:92 modules/devices/monitors.c:409 +#: modules/devices/storage.c:306 modules/devices/storage.c:328 +msgid "(None)" +msgstr "(Yok)" + +#: hardinfo/util.c:104 modules/computer/uptime.c:54 +#, c-format +msgid "%d day" +msgid_plural "%d days" +msgstr[0] "%d gün" +msgstr[1] "%d günler" + +#: hardinfo/util.c:105 modules/computer/uptime.c:55 +#, c-format +msgid "%d hour" +msgid_plural "%d hours" +msgstr[0] "%d saat" +msgstr[1] "%d saatler" + +#: hardinfo/util.c:106 modules/computer/uptime.c:56 +#, c-format +msgid "%d minute" +msgid_plural "%d minutes" +msgstr[0] "%d dakika" +msgstr[1] "%d dakikalar" + +#: hardinfo/util.c:107 +#, c-format +msgid "%d second" +msgid_plural "%d seconds" +msgstr[0] "%d saniye" +msgstr[1] "%d saniyeler" + +#: hardinfo/util.c:128 +#, c-format +msgid "%.1f B" +msgstr "%.1f B" + +#: hardinfo/util.c:130 +#, c-format +msgid "%.1f KiB" +msgstr "%.1f KB" + +#: hardinfo/util.c:132 +#, c-format +msgid "%.1f MiB" +msgstr "%.1f MB" + +#: hardinfo/util.c:134 +#, c-format +msgid "%.1f GiB" +msgstr "%.1f GB" + +#: hardinfo/util.c:136 +#, c-format +msgid "%.1f TiB" +msgstr "%.1f TB" + +#: hardinfo/util.c:138 +#, c-format +msgid "%.1f PiB" +msgstr "%.1f PB" + +#: hardinfo/util.c:361 +msgid "Error" +msgstr "Hata" + +#: hardinfo/util.c:361 hardinfo/util.c:377 +msgid "Warning" +msgstr "Uyarı" + +#: hardinfo/util.c:376 +msgid "Fatal Error" +msgstr "Ölümcül Hata" + +#: hardinfo/util.c:407 +msgid "do not print status messages to standard output" +msgstr "durum mesajlarını standart çıktıya yazdırma" + +#: hardinfo/util.c:413 +msgid "creates a report and prints to standard output" +msgstr "bir rapor oluşturur ve standart çıktıya basar" + +#: hardinfo/util.c:419 +msgid "chooses a report format ([text], html)" +msgstr "bir rapor biçimi seçer ([metin], html)" + +#: hardinfo/util.c:425 +msgid "run benchmark; requires benchmark.so to be loaded" +msgstr "kriter çalıştır; Benchmark.so'nin yüklenmesi gerekiyor" + +#: hardinfo/util.c:431 +msgid "note attached to benchmark results" +msgstr "kıyaslama sonuçlarına ekli not" + +#: hardinfo/util.c:437 +msgid "benchmark result format ([short], conf, shell)" +msgstr "karşılaştırma sonuç biçimi ([kısa], conf, kabuk)" + +#: hardinfo/util.c:443 +msgid "" +"maximum number of benchmark results to include (-1 for no limit, default is " +"10)" +msgstr "" +"dahil edilecek maksimum karşılaştırma sonucu sayısı (sınırsız için -1, " +"varsayılan 10'dur)" + +#: hardinfo/util.c:449 +msgid "lists modules" +msgstr "modülleri listeler" + +#: hardinfo/util.c:455 +msgid "specify module to load" +msgstr "yüklenecek modülü belirt" + +#: hardinfo/util.c:461 +msgid "automatically load module dependencies" +msgstr "modül bağımlılıklarını otomatik olarak yükle" + +#: hardinfo/util.c:468 +msgid "run in XML-RPC server mode" +msgstr "XML-RPC sunucu modunda çalıştır" + +#: hardinfo/util.c:475 +msgid "shows program version and quit" +msgstr "program sürümünü gösterir ve çıkış" + +#: hardinfo/util.c:481 +msgid "do not run benchmarks" +msgstr "kıyaslama yapmayın" + +#: hardinfo/util.c:487 +msgid "show all details" +msgstr "tüm detayları göster" + +#: hardinfo/util.c:492 +msgid "- System Profiler and Benchmark tool" +msgstr "- Sistem Profili ve Karşılaştırma aracı" + +#: hardinfo/util.c:502 +#, c-format +msgid "" +"Unrecognized arguments.\n" +"Try ``%s --help'' for more information.\n" +msgstr "" +"Tanınmayan argümanlar.\n" +"Daha fazla bilgi için ``%s --help '' deneyin.\n" + +#: hardinfo/util.c:914 +#, c-format +msgid "Module \"%s\" depends on module \"%s\", load it?" +msgstr "“%s” modülüne “%s” modülü gerekli yüklensin mi?" + +#: hardinfo/util.c:937 +#, c-format +msgid "Module \"%s\" depends on module \"%s\"." +msgstr "“%s” modülü “%s” modülüne bağlıdır." + +#: hardinfo/util.c:982 +#, c-format +msgid "No module could be loaded. Check permissions on \"%s\" and try again." +msgstr "" +"Hiçbir modül yüklenemedi. “%s” üzerindeki izinleri kontrol edin ve tekrar " +"deneyin." + +#: hardinfo/util.c:986 +msgid "" +"No module could be loaded. Please use hardinfo -l to list all available " +"modules and try again with a valid module list." +msgstr "" +"Hiçbir modül yüklenemedi. Lütfen tüm mevcut modülleri listelemek için sert-l " +"kullanın ve geçerli bir modül listesi ile tekrar deneyin." + +#: hardinfo/util.c:1041 +#, c-format +msgid "Scanning: %s..." +msgstr "Taranıyor: %s..." + +#: hardinfo/util.c:1051 shell/shell.c:311 shell/shell.c:804 shell/shell.c:2039 +#: modules/benchmark.c:715 modules/benchmark.c:723 +msgid "Done." +msgstr "Bitti." + +#: hardinfo/vendor.c:255 +msgid "Update vendor list" +msgstr "Satıcı listesini güncelleyin" + +#: hardinfo/vendor.c:438 modules/computer.c:599 modules/computer.c:793 +#: modules/computer/os.c:79 modules/computer/os.c:263 modules/computer/os.c:300 +#: modules/computer/os.c:505 modules/computer/os.c:576 modules/devices.c:405 +#: modules/devices.c:551 modules/devices/firmware.c:149 +#: modules/devices/printers.c:99 modules/devices/printers.c:106 +#: modules/devices/printers.c:116 modules/devices/printers.c:131 +#: modules/devices/printers.c:140 modules/devices/printers.c:244 +#: modules/devices/spd-decode.c:312 modules/devices/usb.c:149 +msgid "Unknown" +msgstr "Bilinmeyen" + +#: shell/callbacks.c:128 +#, c-format +msgid "" +"Written by %s\n" +"Licensed under %s" +msgstr "" +"%s tarafından yazılmıştır\n" +"%s altında lisanslıdır" + +#: shell/callbacks.c:142 +#, c-format +msgid "No about information is associated with the %s module." +msgstr "%s modülü ile ilgili bilgi yok." + +#: shell/callbacks.c:158 +msgid "Author:" +msgstr "Yazar:" + +#: shell/callbacks.c:161 +msgid "Contributors:" +msgstr "Katkı sağlayanlar:" + +#: shell/callbacks.c:167 +msgid "Based on work by:" +msgstr "Tarafından yapılan çalışmaya göre:" + +#: shell/callbacks.c:168 +msgid "MD5 implementation by Colin Plumb (see md5.c for details)" +msgstr "Colin Plumb tarafından MD5 uygulaması (ayrıntılar için md5.c'ye bakın)" + +#: shell/callbacks.c:169 +msgid "SHA1 implementation by Steve Reid (see sha1.c for details)" +msgstr "Steve Reid'in SHA1 uygulaması (ayrıntılar için sha1.c'ye bakın)" + +#: shell/callbacks.c:170 +msgid "Blowfish implementation by Paul Kocher (see blowfich.c for details)" +msgstr "" +"Paul Kocher tarafından yapılan Blowfish uygulaması (ayrıntılar için blowfich." +"c'ye bakın)" + +#: shell/callbacks.c:171 +msgid "Raytracing benchmark by John Walker (see fbench.c for details)" +msgstr "John Walker'ın Raytracing kıyaslaması (detaylar için bkz. Fbench.c)" + +#: shell/callbacks.c:172 +msgid "FFT benchmark by Scott Robert Ladd (see fftbench.c for details)" +msgstr "" +"Scott Robert Ladd tarafından yapılan FFT karşılaştırması (ayrıntılar için " +"fftbench.c'ye bakın)" + +#: shell/callbacks.c:173 +msgid "Some code partly based on x86cpucaps by Osamu Kayasono" +msgstr "Bazı kodlar kısmen Osamu Kayasono'nun x86cpucaps'larına dayalıdır" + +#: shell/callbacks.c:174 +msgid "Vendor list based on GtkSysInfo by Pissens Sebastien" +msgstr "" +"Satıcı listesi, Pissens Sebastien tarafından hazırlanan GtkSysInfo tabanlı" + +#: shell/callbacks.c:175 +msgid "DMI support based on code by Stewart Adam" +msgstr "Stewart Adam'ın koduna dayalı DMI desteği" + +#: shell/callbacks.c:176 +msgid "SCSI support based on code by Pascal F. Martin" +msgstr "Pascal F. Martin'in koduna dayalı SCSI desteği" + +#: shell/callbacks.c:181 +msgid "Tango Project" +msgstr "Tango Projesi" + +#: shell/callbacks.c:182 +msgid "The GNOME Project" +msgstr "GNOME Projesi" + +#: shell/callbacks.c:183 +msgid "VMWare, Inc. (USB icon from VMWare Workstation 6)" +msgstr "VMWare, Inc. (VMWare Workstation 6'dan USB simgesi)" + +#: shell/callbacks.c:184 +msgid "epicbard (Fan icon, CC BY-SA 3.0)" +msgstr "epicbard (Fan icon, CC BY-SA 3.0)" + +#: shell/callbacks.c:202 +msgid "System information and benchmark tool" +msgstr "" +"Sistem bilgisi ve Karşılaştırma Aracı\n" +" (Türkçe Çevirisi Cihan Alkan ve Serkan Önder Tarafından Yapılmıştır)" + +#: shell/callbacks.c:207 +msgid "" +"HardInfo is free software; you can redistribute it and/or modify it under " +"the terms of the GNU General Public License as published by the Free " +"Software Foundation, version 2.\n" +"\n" +"This program is distributed in the hope that it will be useful, but WITHOUT " +"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or " +"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for " +"more details.\n" +"\n" +"You should have received a copy of the GNU General Public License along with " +"this program; if not, write to the Free Software Foundation, Inc., 51 " +"Franklin St, Fifth Floor, Boston, MA 02110-1301 USA" +msgstr "" +"HardInfo ücretsiz bir yazılımdır; Free Software Foundation, sürüm 2 " +"tarafından yayınlanan GNU Genel Kamu Lisansı koşulları altında yeniden " +"dağıtabilir ve / veya değiştirebilirsiniz.\n" +"\n" +"Bu program yararlı olacağı ümidiyle, ancak HERHANGİ BİR GARANTİ OLMAKSIZIN; " +"BELİRLİ BİR AMACA UYGUNLUK veya zımni garanti olmadan. Daha fazla ayrıntı " +"için GNU Genel Kamu Lisansına bakın.\n" +"\n" +"Bu programla birlikte GNU Genel Kamu Lisansının bir kopyasını almış " +"olmalısınız; değilse, Free Software Foundation, Inc., 51 Franklin St, Fifth " +"Floor, Boston, MA 02110-1301 ABD'ye yazın" + +#: shell/callbacks.c:222 +msgid "translator-credits" +msgstr "" +"Cihan Alkan\n" +"Serkan Önder\n" +"Sabri Ünal " + +#: shell/menu.c:43 +msgid "_Information" +msgstr "_Bilgi" + +#: shell/menu.c:44 +msgid "_Remote" +msgstr "_Uzak" + +#: shell/menu.c:45 +msgid "_View" +msgstr "_Görünüm" + +#: shell/menu.c:46 +msgid "_Help" +msgstr "_Yardım" + +#: shell/menu.c:47 +msgid "About _Modules" +msgstr "_Modüller Hakkında" + +#: shell/menu.c:51 +msgid "Generate _Report" +msgstr "_Rapor Oluştur" + +#: shell/menu.c:52 +msgid "Generates a report with detailed system information" +msgstr "Ayrıntılı sistem bilgileri içeren bir rapor oluşturur" + +#: shell/menu.c:56 shell/syncmanager.c:516 +msgid "Synchronize" +msgstr "Eşzamanla" + +#: shell/menu.c:57 +msgid "Send benchmark results and receive updated data from the network" +msgstr "Karşılaştırma sonuçları gönderin ve ağdan güncellenmiş veriler alın" + +#: shell/menu.c:61 +msgid "_Open..." +msgstr "_Aç..." + +#: shell/menu.c:66 +msgid "_Copy to Clipboard" +msgstr "Panoya _Kopyala" + +#: shell/menu.c:67 +msgid "Copy to clipboard" +msgstr "Panoya kopyala" + +#: shell/menu.c:71 +msgid "_Refresh" +msgstr "_Yenile" + +#: shell/menu.c:76 +msgid "_Open HardInfo Web Site" +msgstr "HardInfo Web Sitesini _Aç" + +#: shell/menu.c:81 +msgid "_Report bug" +msgstr "Hata _Bildir" + +#: shell/menu.c:86 +msgid "_About HardInfo" +msgstr "HardInfo _Hakkında" + +#: shell/menu.c:87 +msgid "Displays program version information" +msgstr "Program sürüm bilgilerini görüntüler" + +#: shell/menu.c:91 +msgid "_Quit" +msgstr "_Çık" + +#: shell/menu.c:98 +msgid "_Side Pane" +msgstr "_Yan Panel" + +#: shell/menu.c:99 +msgid "Toggles side pane visibility" +msgstr "Yan bölmenin görünürlüğünü açar veya kapatır" + +#: shell/menu.c:102 +msgid "_Toolbar" +msgstr "_Araç Çubuğu" + +#: shell/report.c:769 shell/report.c:777 +msgid "Save File" +msgstr "Dosya Kaydet" + +#: shell/report.c:772 shell/report.c:1251 shell/syncmanager.c:604 +msgid "_Cancel" +msgstr "İ_ptal" + +#: shell/report.c:774 +msgid "_Save" +msgstr "_Kaydet" + +#: shell/report.c:949 +msgid "Cannot create ReportContext. Programming bug?" +msgstr "ReportContext oluşturulamıyor. Hatalı programlama mı?" + +#: shell/report.c:969 +msgid "Open the report with your web browser?" +msgstr "Raporu web tarayıcınızla açın?" + +#: shell/report.c:972 +msgid "_No" +msgstr "_Hayır" + +#: shell/report.c:973 +msgid "_Open" +msgstr "_Aç" + +#: shell/report.c:1004 +msgid "Generating report..." +msgstr "Rapor üretiliyor ..." + +#: shell/report.c:1014 +msgid "Report saved." +msgstr "Rapor kaydedildi." + +#: shell/report.c:1016 +msgid "Error while creating the report." +msgstr "Rapor oluşturulurken hata oluştu." + +#: shell/report.c:1118 +msgid "Generate Report" +msgstr "Rapor Oluştur" + +#: shell/report.c:1143 +msgid "" +"Generate Report\n" +"Please choose the information that you wish to view in your report:" +msgstr "" +"Rapor Oluştur\n" +"Lütfen raporunuzda görmek istediğiniz bilgileri seçin:" + +#: shell/report.c:1215 +msgid "Select _None" +msgstr "Seçim _Yok" + +#: shell/report.c:1226 +msgid "Select _All" +msgstr "_Tümünü Seç" + +#: shell/report.c:1261 +msgid "_Generate" +msgstr "_Oluştur" + +#: shell/shell.c:408 +#, c-format +msgid "%s - System Information" +msgstr "%s - Sistem Bilgisi" + +#: shell/shell.c:413 +msgid "System Information" +msgstr "Sistem Bilgisi" + +#: shell/shell.c:791 +msgid "Loading modules..." +msgstr "Modüller yükleniyor..." + +#: shell/shell.c:1557 +msgid "URL" +msgstr "URL" + +#: shell/shell.c:1564 +msgid "Support URL" +msgstr "Destek URL" + +#: shell/shell.c:1575 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: shell/shell.c:1905 +#, c-format +msgid "%s → Summary" +msgstr "%s → Özet" + +#: shell/shell.c:2013 +msgid "Updating..." +msgstr "Güncelleniyor..." + +#: shell/syncmanager.c:67 +msgid "" +"Synchronize with Central Database\n" +"The following information may be synchronized\n" +"with the HardInfo central database." +msgstr "" +"Merkez Veritabanı ile Eşzamanla\n" +"Aşağıdaki bilgiler HardInfo merkezi veri tabanı ile eşzamanlanır." + +#: shell/syncmanager.c:71 +msgid "" +"Synchronizing\n" +"This may take some time." +msgstr "" +"Eşzamanlanıyor\n" +"Bu biraz zaman alabilir." + +#: shell/syncmanager.c:129 +msgid "" +"HardInfo was compiled without libsoup support. (Network Updater requires it.)" +msgstr "" +"HardInfo, libsoup desteği olmadan derlendi. (Ağ Güncelleyici gerektirir.)" + +#: shell/syncmanager.c:354 +msgid "(canceled)" +msgstr "(iptal edildi)" + +#: shell/syncmanager.c:370 +msgid "(failed)" +msgstr "(hatalı)" + +#: shell/syncmanager.c:380 +#, c-format +msgid "" +"Failed while performing \"%s\". Please file a bug report if this problem " +"persists. (Use the Help→Report bug option.)\n" +"\n" +"Details: %s" +msgstr "" +"“%s” gerçekleştirilirken başarısız oldu. Bu sorun devam ederse lütfen bir " +"hata raporu gönderin. (Yardım → Hata Bildir seçeneğini kullanın.)\n" +"\n" +"Ayrıntılar: %s" + +#: shell/syncmanager.c:390 +#, c-format +msgid "" +"Failed while performing \"%s\". Please file a bug report if this problem " +"persists. (Use the Help→Report bug option.)" +msgstr "" +"“%s” i gerçekleştirirken başarısız oldu. Bu sorun devam ederse lütfen bir " +"hata raporu gönderin. (Yardım → Hata Bildir seçeneğini kullanın.)" + +#: shell/syncmanager.c:591 +msgid "Privacy Policy" +msgstr "Gizlilik İlkesi" + +#: shell/syncmanager.c:613 +msgid "_Synchronize" +msgstr "_Eşzamanla" + +#: modules/benchmark/benches.c:83 +msgid "CPU Blowfish (Single-thread)" +msgstr "CPU Balon balığı (Tek iş parçacıklı)" + +#: modules/benchmark/benches.c:91 +msgid "CPU Blowfish (Multi-thread)" +msgstr "CPU Balon balığı (Çok iş parçacıklı)" + +#: modules/benchmark/benches.c:99 +msgid "CPU Blowfish (Multi-core)" +msgstr "CPU Balon balığı (Çok-çekirdekli)" + +#: modules/benchmark/benches.c:107 +msgid "CPU Zlib" +msgstr "CPU Zlib Sıkıştırma gücü" + +#: modules/benchmark/benches.c:115 +msgid "CPU CryptoHash" +msgstr "CPU CryptoHash Güvenliği" + +#: modules/benchmark/benches.c:123 +msgid "CPU Fibonacci" +msgstr "CPU Fibonacci Hesaplama Gücü" + +#: modules/benchmark/benches.c:131 +msgid "CPU N-Queens" +msgstr "CPU N-Queens İşleme Gücü" + +#: modules/benchmark/benches.c:139 +msgid "FPU FFT" +msgstr "FPU FFT" + +#: modules/benchmark/benches.c:147 +msgid "FPU Raytracing" +msgstr "FPU Işın İzleme" + +#: modules/benchmark/benches.c:155 +msgid "SysBench CPU (Single-thread)" +msgstr "SisKıyaslama CPU (Tek iş parçacığı)" + +#: modules/benchmark/benches.c:163 +msgid "SysBench CPU (Multi-thread)" +msgstr "SisKıyaslama CPU (Çoklu iş parçacığı)" + +#: modules/benchmark/benches.c:171 +msgid "SysBench CPU (Four threads)" +msgstr "SisKıyaslama CPU (Dörtlü iş parçacığı)" + +#: modules/benchmark/benches.c:179 +msgid "SysBench Memory (Single-thread)" +msgstr "SisKıyaslama Bellek (Tek iş parcacıklı)" + +#: modules/benchmark/benches.c:187 +msgid "SysBench Memory (Two threads)" +msgstr "SisKıyaslama Bellek (Çift iş parcacıklı)" + +#: modules/benchmark/benches.c:195 +msgid "SysBench Memory" +msgstr "SisKıyaslama Bellek" + +#: modules/benchmark/benches.c:204 +msgid "GPU Drawing" +msgstr "GPU Çizimi" + +#: modules/benchmark/benches.c:221 +msgid "" +"Alexey Kopytov's sysbench is required.\n" +"Results in events/second. Higher is better." +msgstr "" +"Alexey Kopytov's sysbench gereklidir.\n" +"Olay/saniye cinsinden sonuçlar. Daha yüksek, daha iyidir." + +#: modules/benchmark/benches.c:227 +msgid "" +"Alexey Kopytov's sysbench is required.\n" +"Results in MiB/second. Higher is better." +msgstr "" +"Alexey Kopytov's sysbench gereklidir.\n" +"MB/saniye cinsinden sonuçlar. Daha yüksek, daha iyidir." + +#: modules/benchmark/benches.c:231 +msgid "Results in MiB/second. Higher is better." +msgstr "MB/saniye cinsinden sonuçlar. Daha yüksek, daha iyidir." + +#: modules/benchmark/benches.c:238 +msgid "Results in HIMarks. Higher is better." +msgstr "HIMark'larda sonuçlar. Daha yüksek, daha iyidir." + +#: modules/benchmark/benches.c:244 +msgid "Results in seconds. Lower is better." +msgstr "Saniyeler içinde sonuçlanır. Düşük daha iyidir." + +#. / Used for an unknown value. Having it in only one place cleans up the .po +#. * line references +#: modules/benchmark/bench_results.c:32 modules/computer.c:41 +#: modules/computer/display.c:41 modules/computer/display.c:58 +#: modules/computer/os.c:286 modules/computer/os.c:346 modules/devices.c:534 +#: modules/devices/dmi_memory.c:56 modules/devices/dmi_memory.c:57 +#: modules/devices/dmi_memory.c:631 modules/devices/dmi_memory.c:774 +#: modules/devices/dmi_memory.c:909 modules/devices/gpu.c:42 +#: modules/devices/gpu.c:60 modules/devices/gpu.c:124 modules/devices/gpu.c:132 +#: modules/devices/gpu.c:166 modules/devices/gpu.c:167 +#: modules/devices/gpu.c:186 modules/devices/inputdevices.c:50 +#: modules/devices/monitors.c:27 modules/devices/monitors.c:28 +#: modules/devices/monitors.c:153 modules/devices/monitors.c:162 +#: modules/devices/pci.c:25 modules/devices/pci.c:149 modules/devices/pci.c:150 +#: modules/devices/spd-decode.c:306 modules/devices/spd-decode.c:307 +#: modules/devices/spd-decode.c:310 modules/devices/spd-decode.c:311 +#: modules/devices/spd-decode.c:544 modules/devices/spd-decode.c:983 +#: modules/devices/spd-decode.c:984 modules/devices/storage.c:27 +#: modules/devices/storage.c:307 modules/devices/storage.c:336 +#: modules/devices/storage.c:431 modules/devices/usb.c:29 +#: modules/network/net.c:437 includes/cpu_util.h:11 +msgid "(Unknown)" +msgstr "(Bilinmeyen)" + +#: modules/benchmark/bench_results.c:65 modules/benchmark/bench_results.c:351 +#: modules/devices/alpha/processor.c:90 modules/devices/arm/processor.c:290 +#: modules/devices/arm/processor.c:303 modules/devices/arm/processor.c:345 +#: modules/devices/arm/processor.c:500 modules/devices.c:371 +#: modules/devices.c:379 modules/devices.c:407 +#: modules/devices/e2k/processor.c:363 modules/devices/e2k/processor.c:400 +#: modules/devices/gpu.c:127 modules/devices/gpu.c:129 +#: modules/devices/gpu.c:135 modules/devices/gpu.c:137 +#: modules/devices/gpu.c:189 modules/devices/gpu.c:191 +#: modules/devices/ia64/processor.c:167 modules/devices/ia64/processor.c:196 +#: modules/devices/loongarch64/processor.c:85 +#: modules/devices/m68k/processor.c:87 modules/devices/mips/processor.c:77 +#: modules/devices/parisc/processor.c:158 +#: modules/devices/parisc/processor.c:191 modules/devices/ppc/processor.c:160 +#: modules/devices/ppc/processor.c:187 modules/devices/riscv/processor.c:186 +#: modules/devices/riscv/processor.c:214 modules/devices/s390/processor.c:160 +#: modules/devices/sh/processor.c:87 modules/devices/sh/processor.c:88 +#: modules/devices/sh/processor.c:89 modules/devices/x86/processor.c:318 +#: modules/devices/x86/processor.c:331 modules/devices/x86/processor.c:659 +#: modules/devices/x86/processor.c:791 +msgid "MHz" +msgstr "MHz" + +#: modules/benchmark/bench_results.c:381 modules/devices.c:179 +#, c-format +msgid "%d physical processor" +msgid_plural "%d physical processors" +msgstr[0] "%d fiziksel işlemci" +msgstr[1] "%d fiziksel işlemciler" + +#: modules/benchmark/bench_results.c:382 modules/devices.c:180 +#, c-format +msgid "%d core" +msgid_plural "%d cores" +msgstr[0] "%d çekirdek" +msgstr[1] "%d çekirdek" + +#: modules/benchmark/bench_results.c:383 modules/devices.c:181 +#, c-format +msgid "%d thread" +msgid_plural "%d threads" +msgstr[0] "%d iş parçacığı" +msgstr[1] "%d iş parçacığı" + +#: modules/benchmark/bench_results.c:388 modules/devices.c:183 +#, c-format +msgid "%d NUMA node" +msgid_plural "%d NUMA nodes" +msgstr[0] "%d NUMA düğümü" +msgstr[1] "%d NUMA nodes" + +#. /NP procs; NC cores across NN nodes; NT threads +#: modules/benchmark/bench_results.c:392 modules/devices.c:184 +#, c-format +msgid "%s; %s across %s; %s" +msgstr "%s; %s / %s; %s" + +#. /NP procs; NC cores; NT threads +#: modules/benchmark/bench_results.c:397 modules/devices.c:187 +#, c-format +msgid "%s; %s; %s" +msgstr "%s; %s; %s" + +#: modules/benchmark/bench_results.c:473 modules/benchmark/bench_results.c:593 +#: modules/computer.c:941 modules/devices/dmi_memory.c:633 +#: modules/devices/dmi_memory.c:714 modules/devices/dmi_memory.c:724 +#: modules/devices/dmi_memory.c:778 modules/devices/dmi_memory.c:865 +#: modules/devices/dmi_memory.c:911 modules/devices/dmi_memory.c:996 +#: modules/network/net.c:395 modules/network/net.c:417 +#: modules/network/net.c:418 +msgid "MiB" +msgstr "MiB" + +#: modules/benchmark/bench_results.c:478 modules/benchmark/bench_results.c:592 +msgid "kiB" +msgstr "kiB" + +#: modules/benchmark/bench_results.c:486 modules/benchmark/bench_results.c:542 +#, c-format +msgid "%d-bit" +msgstr "%d-bit" + +#: modules/benchmark/bench_results.c:507 modules/benchmark/bench_results.c:570 +msgid "Benchmark Result" +msgstr "Kıyaslama Sonucu" + +#: modules/benchmark/bench_results.c:507 modules/benchmark/bench_results.c:570 +msgid "Threads" +msgstr "İş Parçacığı" + +#: modules/benchmark/bench_results.c:508 modules/benchmark/bench_results.c:572 +msgid "Elapsed Time" +msgstr "Geçen Süre" + +#: modules/benchmark/bench_results.c:508 modules/benchmark/bench_results.c:572 +msgid "seconds" +msgstr "saniye" + +#: modules/benchmark/bench_results.c:509 modules/computer/languages.c:101 +#: modules/devices/arm/processor.c:355 modules/devices/e2k/processor.c:362 +#: modules/devices/gpu.c:159 modules/devices/ia64/processor.c:166 +#: modules/devices/loongarch64/processor.c:84 modules/devices/pci.c:146 +#: modules/devices/ppc/processor.c:159 +msgid "Revision" +msgstr "Revizyon" + +#: modules/benchmark/bench_results.c:510 modules/benchmark/bench_results.c:573 +msgid "Extra Information" +msgstr "Ek Bilgi" + +#: modules/benchmark/bench_results.c:511 modules/benchmark/bench_results.c:574 +msgid "User Note" +msgstr "Kullanıcı Notu" + +#: modules/benchmark/bench_results.c:513 modules/benchmark/bench_results.c:576 +msgid "Note" +msgstr "Not" + +#: modules/benchmark/bench_results.c:514 modules/benchmark/bench_results.c:577 +msgid "" +"This result is from an old version of HardInfo. Results might not be " +"comparable to current version. Some details are missing." +msgstr "" +"Bu sonuç, HardInfo'nun eski bir sürümünden kaynaklanmaktadır. Sonuçlar " +"geçerli sürümle karşılaştırılamayabilir. Bazı ayrıntılar eksik." + +#: modules/benchmark/bench_results.c:518 modules/benchmark/bench_results.c:581 +#: modules/devices/devicetree/pmac_data.c:81 modules/devices/sh/processor.c:85 +msgid "Machine" +msgstr "Makine" + +#: modules/benchmark/bench_results.c:519 modules/benchmark/bench_results.c:581 +#: modules/devices/devicetree.c:208 modules/devices/dmi.c:48 +msgid "Board" +msgstr "Kart" + +#: modules/benchmark/bench_results.c:520 modules/benchmark/bench_results.c:583 +#: modules/computer.c:551 +msgid "Machine Type" +msgstr "Makine Türü" + +#: modules/benchmark/bench_results.c:521 modules/benchmark/bench_results.c:584 +msgid "CPU Name" +msgstr "CPU Adı" + +#: modules/benchmark/bench_results.c:522 modules/benchmark/bench_results.c:585 +msgid "CPU Description" +msgstr "CPU Açıklaması" + +#: modules/benchmark/bench_results.c:523 modules/benchmark/bench_results.c:587 +#: modules/benchmark.c:557 +msgid "CPU Config" +msgstr "CPU Yapılandırması" + +#: modules/benchmark/bench_results.c:524 modules/benchmark/bench_results.c:587 +msgid "Threads Available" +msgstr "Mevcut İş Parçacığı" + +#: modules/benchmark/bench_results.c:525 modules/benchmark/bench_results.c:588 +msgid "GPU" +msgstr "GPU" + +#: modules/benchmark/bench_results.c:526 modules/benchmark/bench_results.c:590 +#: modules/computer.c:563 +msgid "OpenGL Renderer" +msgstr "OpenGL İşleyici" + +#: modules/benchmark/bench_results.c:527 modules/benchmark/bench_results.c:592 +#: modules/computer.c:140 modules/computer.c:550 modules/computer.c:1034 +#: modules/devices/gpu.c:162 +msgid "Memory" +msgstr "Bellek" + +#: modules/benchmark/bench_results.c:528 modules/benchmark/bench_results.c:594 +msgid "Pointer Size" +msgstr "İşaretçi Boyutu" + +#: modules/benchmark/bench_results.c:570 +msgid "Benchmark" +msgstr "Karşılaştırma" + +#: modules/benchmark/bench_results.c:571 modules/devices/dmi_memory.c:933 +#: modules/devices/firmware.c:245 modules/devices/monitors.c:493 +#: modules/devices/x86/processor.c:693 +msgid "Result" +msgstr "Sonuç" + +#: modules/benchmark/bench_results.c:592 +msgid "Physical Memory" +msgstr "Fiziksel Hafıza" + +#: modules/benchmark/bench_results.c:596 +msgid "Handles" +msgstr "İşleyiciler" + +#: modules/benchmark/bench_results.c:596 +msgid "mid" +msgstr "orta" + +#: modules/benchmark/bench_results.c:597 +msgid "cfg_val" +msgstr "cfg_val" + +#: modules/benchmark.c:351 +msgid "This Machine" +msgstr "Bu Makine" + +#: modules/benchmark.c:557 +msgid "Results" +msgstr "Sonuç" + +#: modules/benchmark.c:558 modules/devices/sparc/processor.c:75 +msgid "CPU" +msgstr "İşlemci" + +#: modules/benchmark.c:638 +#, c-format +msgid "Benchmarking: %s." +msgstr "Karşılaştırılıyor: %s." + +#: modules/benchmark.c:651 +msgid "" +"Benchmarking. Please do not move your mouse\n" +"or press any keys." +msgstr "" +"Kıyaslama. Lütfen farenizi hareket ettirmeyin\n" +"veya herhangi bir tuşa basmayın." + +#: modules/benchmark.c:659 +msgid "Cancel" +msgstr "İptal" + +#: modules/benchmark.c:731 +msgid "Benchmarks" +msgstr "Kıyaslamalar" + +#: modules/benchmark.c:741 +msgid "Perform tasks and compare with other systems" +msgstr "Görevleri yerine getir ve diğer sistemler ile karşılaştır" + +#: modules/benchmark.c:894 +msgid "Send benchmark results" +msgstr "Karşılaştırma sonucunu gönder" + +#: modules/benchmark.c:899 +msgid "Receive benchmark results" +msgstr "Karşılaştırma sonuçlarını al" + +#: modules/computer/alsa.c:26 modules/computer.c:567 +msgid "Audio Devices" +msgstr "Ses Aygıtları" + +#: modules/computer/alsa.c:34 +msgid "Audio Adapter" +msgstr "Ses Adaptörü" + +#: modules/computer.c:96 modules/devices/firmware.c:74 +msgid "Summary" +msgstr "Özet" + +#: modules/computer.c:97 modules/computer.c:553 modules/computer.c:1033 +msgid "Operating System" +msgstr "İşletim Sistemi" + +#: modules/computer.c:98 +msgid "Security" +msgstr "Güvenlik" + +#: modules/computer.c:99 modules/devices/gpu.c:167 modules/devices/pci.c:150 +msgid "Kernel Modules" +msgstr "Çekirdek Modülleri" + +#: modules/computer.c:100 modules/computer.c:706 +msgid "Boots" +msgstr "Açılış" + +#: modules/computer.c:101 +msgid "Languages" +msgstr "Diller" + +#: modules/computer.c:102 +msgid "Memory Usage" +msgstr "Hafıza Kullanımı" + +#: modules/computer.c:103 +msgid "Filesystems" +msgstr "Dosya Sistemleri" + +#: modules/computer.c:104 modules/computer.c:558 +msgid "Display" +msgstr "Ekran" + +#: modules/computer.c:105 modules/computer/environment.c:32 +msgid "Environment Variables" +msgstr "Ortam Değişkenleri" + +#: modules/computer.c:107 modules/computer.c:109 +msgid "Development" +msgstr "Geliştirme" + +#: modules/computer.c:111 modules/computer.c:830 +msgid "Users" +msgstr "Kullanıcılar" + +#: modules/computer.c:112 +msgid "Groups" +msgstr "Gruplar" + +#: modules/computer.c:142 +#, c-format +msgid "%dMB (%dMB used)" +msgstr "%dMB (%dMB kullanılan)" + +#: modules/computer.c:144 modules/computer.c:622 +msgid "Uptime" +msgstr "Çalışma Süresi" + +#: modules/computer.c:146 modules/computer.c:555 +msgid "Date/Time" +msgstr "Tarih/Saat" + +#: modules/computer.c:151 modules/computer.c:623 +msgid "Load Average" +msgstr "Yük Ortalaması" + +#: modules/computer.c:264 +msgid "Scripting Languages" +msgstr "Komut Oluşturma Dilleri" + +#: modules/computer.c:265 +msgid "Gambas3 (gbr3)" +msgstr "Gambas3 (gbr3)" + +#: modules/computer.c:266 +msgid "Python (default)" +msgstr "Python (varsayılan)" + +#: modules/computer.c:267 +msgid "Python2" +msgstr "Python2" + +#: modules/computer.c:268 +msgid "Python3" +msgstr "Python3" + +#: modules/computer.c:269 +msgid "Perl" +msgstr "Perl" + +#: modules/computer.c:270 +msgid "Perl6 (VM)" +msgstr "Perl6 (VM)" + +#: modules/computer.c:271 +msgid "Perl6" +msgstr "Perl6" + +#: modules/computer.c:272 +msgid "PHP" +msgstr "PHP" + +#: modules/computer.c:273 +msgid "Ruby" +msgstr "Ruby" + +#: modules/computer.c:274 +msgid "Bash" +msgstr "Bash" + +#: modules/computer.c:275 +msgid "JavaScript (Node.js)" +msgstr "JavaScript (Node.js)" + +#: modules/computer.c:276 +msgid "awk" +msgstr "awk" + +#: modules/computer.c:277 +msgid "Compilers" +msgstr "Derleyiciler" + +#: modules/computer.c:278 +msgid "C (GCC)" +msgstr "C (GCC)" + +#: modules/computer.c:279 +msgid "C (Clang)" +msgstr "C (Clang)" + +#: modules/computer.c:280 +msgid "D (dmd)" +msgstr "D (dmd)" + +#: modules/computer.c:281 +msgid "Gambas3 (gbc3)" +msgstr "Gambas3 (gbc3)" + +#: modules/computer.c:282 +msgid "Java" +msgstr "Java" + +#: modules/computer.c:283 +msgid "C♯ (mcs)" +msgstr "C♯ (mcs)" + +#: modules/computer.c:284 +msgid "Vala" +msgstr "Vala" + +#: modules/computer.c:285 +msgid "Haskell (GHC)" +msgstr "Haskell (GHC)" + +#: modules/computer.c:286 +msgid "FreePascal" +msgstr "FreePascal" + +#: modules/computer.c:287 +msgid "Go" +msgstr "Go" + +#: modules/computer.c:288 +msgid "Rust" +msgstr "Rust" + +#: modules/computer.c:289 +msgid "Tools" +msgstr "Araçlar" + +#: modules/computer.c:290 +msgid "make" +msgstr "make" + +#: modules/computer.c:291 +msgid "ninja" +msgstr "ninja" + +#: modules/computer.c:292 +msgid "GDB" +msgstr "GDB" + +#: modules/computer.c:293 +msgid "LLDB" +msgstr "LLDB" + +#: modules/computer.c:294 +msgid "strace" +msgstr "strace" + +#: modules/computer.c:295 +msgid "valgrind" +msgstr "valgrind" + +#: modules/computer.c:296 +msgid "QMake" +msgstr "QMake" + +#: modules/computer.c:297 +msgid "CMake" +msgstr "CMake" + +#: modules/computer.c:298 +msgid "Gambas3 IDE" +msgstr "Gambas3 IDE" + +#: modules/computer.c:299 +msgid "Radare2" +msgstr "Radare2" + +#: modules/computer.c:300 +msgid "ltrace" +msgstr "izleme" + +#: modules/computer.c:301 +msgid "Powershell" +msgstr "Powershell" + +#: modules/computer.c:342 +msgid "Not found" +msgstr "Bulunamadı" + +#: modules/computer.c:347 +#, c-format +msgid "Detecting version: %s" +msgstr "Sürüm algılanıyor: %s" + +#: modules/computer.c:365 +msgid "Program" +msgstr "Uygulama" + +#: modules/computer.c:384 +msgid "Field" +msgstr "Alan" + +#: modules/computer.c:384 modules/computer.c:695 modules/computer/modules.c:224 +#: modules/computer/modules.c:225 modules/devices/arm/processor.c:470 +msgid "Description" +msgstr "Tanım" + +#: modules/computer.c:384 modules/devices.c:773 +msgid "Value" +msgstr "Değer" + +#: modules/computer.c:404 +msgid "Single-board computer" +msgstr "Tek kartlı bilgisayar" + +#. /proc/apm +#: modules/computer.c:453 +msgid "Unknown physical machine type" +msgstr "Bilinmeyen fiziksel makine türü" + +#: modules/computer.c:473 modules/computer.c:474 +msgid "Virtual (VMware)" +msgstr "Sanal (VMware)" + +#: modules/computer.c:476 modules/computer.c:477 modules/computer.c:478 +#: modules/computer.c:479 +msgid "Virtual (QEMU)" +msgstr "Sanal (QEMU)" + +#: modules/computer.c:481 modules/computer.c:482 +msgid "Virtual (Unknown)" +msgstr "Sanal (Bilinmeyen)" + +#: modules/computer.c:484 modules/computer.c:485 modules/computer.c:486 +#: modules/computer.c:507 +msgid "Virtual (VirtualBox)" +msgstr "Sanal (VirtualBox)" + +#: modules/computer.c:488 modules/computer.c:489 modules/computer.c:490 +#: modules/computer.c:501 +msgid "Virtual (Xen)" +msgstr "Sanal (Xen)" + +#: modules/computer.c:492 +msgid "Virtual (hypervisor present)" +msgstr "Sanal (hiper yönetici mevcut)" + +#: modules/computer.c:547 modules/computer.c:987 +msgid "Computer" +msgstr "Bilgisayar" + +#: modules/computer.c:554 modules/computer.c:616 +msgid "User Name" +msgstr "Kullanıcı Adı" + +#: modules/computer.c:559 +msgid "Resolution" +msgstr "Çözünürlük" + +#: modules/computer.c:559 modules/computer.c:776 +#, c-format +msgid "%dx%d pixels" +msgstr "%dx%d piksel" + +#: modules/computer.c:561 +msgid "Display Adapter" +msgstr "Görüntü Bağdaştırıcısı" + +#: modules/computer.c:564 +msgid "Session Display Server" +msgstr "Oturum Görüntüleme Sunucusu" + +#: modules/computer.c:569 modules/devices.c:109 +msgid "Input Devices" +msgstr "Giriş Aygıtları" + +#: modules/computer.c:598 +msgid "Kernel" +msgstr "Çekirdek" + +#: modules/computer.c:599 +msgid "Command Line" +msgstr "Komut Satırı" + +#: modules/computer.c:601 +msgid "C Library" +msgstr "C Kütüphanesi" + +#: modules/computer.c:602 +msgid "Distribution" +msgstr "Dağıtım" + +#: modules/computer.c:609 +msgid "Spin/Flavor" +msgstr "Spin / Lezzet" + +#: modules/computer.c:614 +msgid "Current Session" +msgstr "Mevcut Oturum" + +#: modules/computer.c:615 +msgid "Computer Name" +msgstr "Bilgisayar Adı" + +#: modules/computer.c:617 modules/computer/languages.c:99 +msgid "Language" +msgstr "Dil" + +#: modules/computer.c:618 modules/computer/users.c:50 +msgid "Home Directory" +msgstr "Ev Dizini" + +#: modules/computer.c:619 +msgid "Desktop Environment" +msgstr "Masaüstü Ortamı" + +#: modules/computer.c:622 +msgid "Misc" +msgstr "Çeşitli" + +#: modules/computer.c:635 +msgid "HardInfo" +msgstr "HardInfo" + +#: modules/computer.c:636 +msgid "HardInfo running as" +msgstr "HardInfo çalışıyor" + +#: modules/computer.c:637 +msgid "Superuser" +msgstr "Yetkili Kullanıcı" + +#: modules/computer.c:637 +msgid "User" +msgstr "Kullanıcı" + +#: modules/computer.c:641 +msgid "Health" +msgstr "Sağlık" + +#: modules/computer.c:642 +msgid "Available entropy in /dev/random" +msgstr "/dev/random'da mevcut entropi" + +#: modules/computer.c:646 +msgid "Hardening Features" +msgstr "Sertleştirme Özellikleri" + +#: modules/computer.c:647 +msgid "ASLR" +msgstr "ASLR" + +#: modules/computer.c:648 +msgid "dmesg" +msgstr "dmesg" + +#: modules/computer.c:652 +msgid "Linux Security Modules" +msgstr "Linux Güvenlik Modülleri" + +#: modules/computer.c:653 +msgid "Modules available" +msgstr "Mevcut Modüller" + +#: modules/computer.c:654 +msgid "SELinux status" +msgstr "SELinux durumu" + +#: modules/computer.c:660 +msgid "CPU Vulnerabilities" +msgstr "CPU Güvenlik Açıkları" + +#: modules/computer.c:692 +msgid "Loaded Modules" +msgstr "Yüklü Modüller" + +#: modules/computer.c:708 +msgid "Date & Time" +msgstr "Tarih & Zaman" + +#: modules/computer.c:709 +msgid "Kernel Version" +msgstr "Çekirdek Sürümü" + +#: modules/computer.c:719 +msgid "Available Languages" +msgstr "Mevcut Diller" + +#: modules/computer.c:721 +msgid "Language Code" +msgstr "Dil Kodu" + +#: modules/computer.c:733 +msgid "Mounted File Systems" +msgstr "Bağlı Dosya Sistemleri" + +#: modules/computer.c:735 modules/computer/filesystem.c:87 +msgid "Mount Point" +msgstr "Bağlantı Noktası" + +#: modules/computer.c:736 +msgid "Usage" +msgstr "Kullanım" + +#: modules/computer.c:737 modules/devices.c:797 modules/devices.c:811 +#: modules/devices/e2k/processor.c:416 modules/devices/gpu.c:87 +#: modules/devices/gpu.c:95 modules/devices/gpu.c:243 modules/devices/pci.c:102 +#: modules/devices/pci.c:110 modules/devices/pci.c:154 +#: modules/devices/storage.c:48 modules/devices/storage.c:57 +#: modules/devices/usb.c:172 modules/devices/usb.c:184 +#: modules/devices/x86/processor.c:812 +msgid "Device" +msgstr "Aygıt" + +#: modules/computer.c:759 +msgid "Session" +msgstr "Oturum" + +#: modules/computer.c:760 modules/devices.c:774 modules/devices.c:811 +#: modules/devices/dmi.c:56 modules/devices/dmi_memory.c:655 +#: modules/devices/dmi_memory.c:804 modules/devices/inputdevices.c:141 +#: modules/devices/x86/processor.c:716 +msgid "Type" +msgstr "Tür" + +#: modules/computer.c:763 +msgid "Wayland" +msgstr "Wayland" + +#: modules/computer.c:764 modules/computer.c:769 +msgid "Current Display Name" +msgstr "Mevcut Görünen Ad" + +#: modules/computer.c:768 +msgid "X Server" +msgstr "X Sunucusu" + +#: modules/computer.c:770 modules/computer.c:810 modules/devices.c:811 +#: modules/devices/dmi.c:40 modules/devices/dmi.c:46 modules/devices/dmi.c:50 +#: modules/devices/dmi.c:55 modules/devices/dmi_memory.c:805 +#: modules/devices/dmi_memory.c:949 modules/devices/e2k/processor.c:359 +#: modules/devices/firmware.c:75 modules/devices/firmware.c:167 +#: modules/devices/firmware.c:172 modules/devices/firmware.c:219 +#: modules/devices/gpu.c:86 modules/devices/gpu.c:94 modules/devices/gpu.c:242 +#: modules/devices/ia64/processor.c:161 modules/devices/inputdevices.c:143 +#: modules/devices/monitors.c:400 modules/devices/pci.c:101 +#: modules/devices/pci.c:109 modules/devices/storage.c:47 +#: modules/devices/storage.c:56 modules/devices/storage.c:282 +#: modules/devices/storage.c:572 modules/devices/storage.c:771 +#: modules/devices/usb.c:171 modules/devices/x86/processor.c:655 +msgid "Vendor" +msgstr "Satıcı" + +#: modules/computer.c:772 +msgid "Release Number" +msgstr "Sürüm No" + +#: modules/computer.c:780 +msgid "Screens" +msgstr "Ekranlar" + +#: modules/computer.c:786 +msgid "Disconnected" +msgstr "Bağlantı Kesildi" + +#: modules/computer.c:789 +msgid "Connected" +msgstr "Bağlandı" + +#: modules/computer.c:797 +msgid "Unused" +msgstr "Kullanılmıyor" + +#: modules/computer.c:798 +#, c-format +msgid "%dx%d pixels, offset (%d, %d)" +msgstr "%dx%d piksel, uzaklık (%d, %d)" + +#: modules/computer.c:807 +msgid "Outputs (XRandR)" +msgstr "Çıkışlar (XRandR)" + +#: modules/computer.c:809 +msgid "OpenGL (GLX)" +msgstr "OpenGL (GLX)" + +#: modules/computer.c:811 +msgid "Renderer" +msgstr "Oluşturucu" + +#: modules/computer.c:812 +msgid "Direct Rendering" +msgstr "Doğrudan İşleme" + +#: modules/computer.c:814 +msgid "Version (Compatibility)" +msgstr "Sürüm (Uyumluluk)" + +#: modules/computer.c:815 +msgid "Shading Language Version (Compatibility)" +msgstr "Gölgelendirme Dili Sürümü (Uyumluluk)" + +#: modules/computer.c:816 +msgid "Version (Core)" +msgstr "Sürüm (Çekirdek)" + +#: modules/computer.c:817 +msgid "Shading Language Version (Core)" +msgstr "Gölgelendirme Dili Sürümü (Çekirdek)" + +#: modules/computer.c:818 +msgid "Version (ES)" +msgstr "Sürüm (ES)" + +#: modules/computer.c:819 +msgid "Shading Language Version (ES)" +msgstr "Gölgeleme Dili Sürümü (ES)" + +#: modules/computer.c:820 +msgid "GLX Version" +msgstr "GLX Sürümü" + +#: modules/computer.c:841 +msgid "Group" +msgstr "Grup" + +#: modules/computer.c:844 modules/computer/users.c:49 +msgid "Group ID" +msgstr "Grup ID" + +#. / "usable memory" +#: modules/computer.c:937 +#, c-format +msgid "%0.1f %s available to Linux" +msgstr "Linux için %0.1f%s kullanılabilir" + +#: modules/computer.c:939 modules/devices/dmi_memory.c:712 +#: modules/devices/dmi_memory.c:722 modules/devices/dmi_memory.c:863 +#: modules/devices/dmi_memory.c:994 +msgid "GiB" +msgstr "GB" + +#: modules/computer.c:943 modules/computer/memory_usage.c:77 +#: modules/computer/modules.c:224 +msgid "KiB" +msgstr "KB" + +#: modules/computer.c:1006 modules/devices/devicetree/pmac_data.c:82 +msgid "Motherboard" +msgstr "Anakart" + +#: modules/computer.c:1034 +msgid "Graphics" +msgstr "Ekran Kartı" + +#: modules/computer.c:1035 modules/devices.c:110 +msgid "Storage" +msgstr "Depolama" + +#: modules/computer.c:1035 modules/devices.c:106 +msgid "Printers" +msgstr "Yazıcılar" + +#: modules/computer.c:1035 +msgid "Audio" +msgstr "Ses" + +#: modules/computer.c:1083 +msgid "Gathers high-level computer information" +msgstr "Üst düzey bilgisayar bilgilerini toplar" + +#: modules/computer.c:1095 +msgid "lsmod is required." +msgstr "lsmod gerekli." + +#: modules/computer.c:1103 +msgid "" +"X.org's xrandr utility provides additional details when " +"available." +msgstr "" +"X.org xrandr yardımcı programı, var olduğunda ek ayrıntılar " +"sağlar." + +#: modules/computer.c:1104 +msgid "" +"Mesa's glxinfo utility is required for OpenGL information." +msgstr "Mesa glxinfo OpenGL bilgisi için gerekli." + +#: modules/computer/filesystem.c:85 +msgid "Filesystem" +msgstr "Dosya Sistemi" + +#: modules/computer/filesystem.c:86 +msgid "Mounted As" +msgstr "Olarak Bağlandı" + +#: modules/computer/filesystem.c:86 +msgid "Read-Write" +msgstr "Okuma-Yazma" + +#: modules/computer/filesystem.c:86 +msgid "Read-Only" +msgstr "Salt Okunur" + +#: modules/computer/filesystem.c:88 modules/devices.c:797 +#: modules/devices/dmi_memory.c:661 modules/devices/dmi_memory.c:808 +#: modules/devices/dmi_memory.c:840 modules/devices/dmi_memory.c:879 +#: modules/devices/dmi_memory.c:948 +msgid "Size" +msgstr "Boyut" + +#: modules/computer/filesystem.c:89 +msgid "Used" +msgstr "Kullanılan" + +#: modules/computer/filesystem.c:90 +msgid "Available" +msgstr "Uygulanabilir" + +#: modules/computer/languages.c:94 +msgid "Locale Information" +msgstr "Yerel Bilgisi" + +#: modules/computer/languages.c:96 modules/devices/dmi_memory.c:651 +#: modules/devices/gpu.c:222 +msgid "Source" +msgstr "Kaynak" + +#: modules/computer/languages.c:97 +msgid "Address" +msgstr "Adres" + +#: modules/computer/languages.c:98 +msgid "E-mail" +msgstr "E-Posta" + +#: modules/computer/languages.c:100 +msgid "Territory" +msgstr "Bölge" + +#: modules/computer/languages.c:102 modules/devices/dmi.c:45 +msgid "Date" +msgstr "Tarih" + +#: modules/computer/languages.c:103 +msgid "Codeset" +msgstr "Kod seti" + +#: modules/computer/loadavg.c:64 +msgid "Couldn't obtain load average" +msgstr "Yük ortalaması alınamadı" + +#: modules/computer/memory_usage.c:106 +msgid "Total Memory" +msgstr "Toplam Hafıza" + +#: modules/computer/memory_usage.c:107 +msgid "Free Memory" +msgstr "Boş Hafıza" + +#: modules/computer/memory_usage.c:108 +msgid "Cached Swap" +msgstr "Önbellek Takas" + +#: modules/computer/memory_usage.c:109 +msgid "High Memory" +msgstr "Yüksek Bellek" + +#: modules/computer/memory_usage.c:110 +msgid "Free High Memory" +msgstr "Boş Yüksek Bellek" + +#: modules/computer/memory_usage.c:111 +msgid "Low Memory" +msgstr "Düşük Bellek" + +#: modules/computer/memory_usage.c:112 +msgid "Free Low Memory" +msgstr "Boş Düşük Bellek" + +#: modules/computer/memory_usage.c:113 +msgid "Virtual Memory" +msgstr "Sanal Hafıza" + +#: modules/computer/memory_usage.c:114 +msgid "Free Virtual Memory" +msgstr "Boş Sanal Hafıza" + +#: modules/computer/modules.c:192 modules/computer/modules.c:193 +#: modules/computer/modules.c:194 modules/computer/modules.c:195 +#: modules/computer/modules.c:196 modules/computer/modules.c:197 +#: modules/devices/dmi.c:115 modules/devices/dmi_memory.c:935 +#: modules/devices/firmware.c:245 modules/devices/x86/processor.c:695 +msgid "(Not available)" +msgstr "(Mevcut değil)" + +#: modules/computer/modules.c:223 +msgid "Module Information" +msgstr "Modül Bilgisi" + +#: modules/computer/modules.c:223 modules/devices/gpu.c:248 +msgid "Path" +msgstr "Yol" + +#: modules/computer/modules.c:223 +msgid "Used Memory" +msgstr "Kullanılan Hafıza" + +#: modules/computer/modules.c:225 +msgid "Version Magic" +msgstr "Sürüm Büyü" + +#: modules/computer/modules.c:226 +msgid "In Linus' Tree" +msgstr "Linus'un Ağacında" + +#: modules/computer/modules.c:227 +msgid "Retpoline Enabled" +msgstr "Retpoline Etkin" + +#: modules/computer/modules.c:227 +msgid "Copyright" +msgstr "Telif" + +#: modules/computer/modules.c:227 +msgid "Author" +msgstr "Yazar" + +#: modules/computer/modules.c:228 +msgid "License" +msgstr "Lisans" + +#: modules/computer/modules.c:234 +msgid "Dependencies" +msgstr "Bağımlılıklar" + +#: modules/computer/os.c:36 modules/computer/os.c:37 modules/computer/os.c:38 +#: modules/computer/os.c:39 +msgid "GNU C Library" +msgstr "GNU C Kütüphanesi" + +#: modules/computer/os.c:40 +msgid "uClibc or uClibc-ng" +msgstr "uClibc veya uClibc-ng" + +#: modules/computer/os.c:41 +msgid "diet libc" +msgstr "diet libc" + +#: modules/computer/os.c:113 modules/computer/os.c:116 +msgid "GNOME Shell " +msgstr "GNOME Shell " + +#: modules/computer/os.c:124 modules/computer/os.c:127 +msgid "Version: " +msgstr "Sürüm: " + +#: modules/computer/os.c:146 modules/computer/os.c:149 +msgid "MATE Desktop Environment " +msgstr "MATE Masaüstü Ortamı " + +#: modules/computer/os.c:180 +#, c-format +msgid "Unknown (Window Manager: %s)" +msgstr "Bilinmeyen (Pencere Yöneticisi: %s)" + +#. /{desktop environment} on {session type} +#: modules/computer/os.c:191 +#, c-format +msgid "%s on %s" +msgstr "%s de %s" + +#: modules/computer/os.c:261 +msgid "Terminal" +msgstr "Uçbirim" + +#: modules/computer/os.c:278 +msgid "User access allowed" +msgstr "Kullanıcı erişimine izin verildi" + +#: modules/computer/os.c:280 +msgid "User access forbidden" +msgstr "Kullanıcı erişimi yasak" + +#: modules/computer/os.c:282 +msgid "Access allowed (running as superuser)" +msgstr "Erişime izin verildi (süper kullanıcı olarak çalışıyor)" + +#: modules/computer/os.c:284 +msgid "Access forbidden? (running as superuser)" +msgstr "Erişim Yasaklandı? (süper kullanıcı olarak çalışıyor)" + +#: modules/computer/os.c:294 modules/computer/os.c:567 +msgid "Disabled" +msgstr "Devre dışı" + +#: modules/computer/os.c:296 +msgid "Partially enabled (mmap base+stack+VDSO base)" +msgstr "Kısmen etkin (mmap tabanı+yığın+VDSO tabanı)" + +#: modules/computer/os.c:298 +msgid "Fully enabled (mmap base+stack+VDSO base+heap)" +msgstr "Tamamen etkin (mmap tabanı+yığın+VDSO tabanı+yığın)" + +#. /bits of entropy for rng (0) +#: modules/computer/os.c:308 +msgid "(None or not available)" +msgstr "(Yok veya uygun değil)" + +#. /bits of entropy for rng (low/poor value) +#: modules/computer/os.c:309 +#, c-format +msgid "%d bits (low)" +msgstr "%d bit (düşük)" + +#. /bits of entropy for rng (medium value) +#: modules/computer/os.c:310 +#, c-format +msgid "%d bits (medium)" +msgstr "%d bit (orta)" + +#. /bits of entropy for rng (high/good value) +#: modules/computer/os.c:311 +#, c-format +msgid "%d bits (healthy)" +msgstr "%d bit (yüksek)" + +#: modules/computer/os.c:562 +msgid "Not installed" +msgstr "Kurulu değil" + +#: modules/computer/os.c:565 +msgid "Enabled" +msgstr "Aktif" + +#: modules/computer/users.c:47 +msgid "User Information" +msgstr "Kullanıcı Bilgisi" + +#: modules/computer/users.c:48 +msgid "User ID" +msgstr "Kullanıcı Kimliği" + +#: modules/computer/users.c:51 +msgid "Default Shell" +msgstr "Varsayılan Shell" + +#: modules/devices/alpha/processor.c:88 modules/devices.c:797 +#: modules/devices/devicetree.c:163 modules/devices/devicetree.c:209 +#: modules/devices/devicetree/pmac_data.c:80 +#: modules/devices/e2k/processor.c:361 modules/devices/e2k/processor.c:416 +#: modules/devices/gpu.c:118 modules/devices/ia64/processor.c:165 +#: modules/devices/loongarch64/processor.c:83 +#: modules/devices/m68k/processor.c:84 modules/devices/mips/processor.c:75 +#: modules/devices/monitors.c:402 modules/devices/parisc/processor.c:155 +#: modules/devices/ppc/processor.c:158 modules/devices/riscv/processor.c:182 +#: modules/devices/s390/processor.c:132 modules/devices/x86/processor.c:812 +msgid "Model" +msgstr "Model" + +#: modules/devices/alpha/processor.c:89 +msgid "Platform String" +msgstr "Platform Stringi" + +#: modules/devices/alpha/processor.c:90 modules/devices/arm/processor.c:345 +#: modules/devices/e2k/processor.c:363 modules/devices/e2k/processor.c:416 +#: modules/devices/ia64/processor.c:167 +#: modules/devices/loongarch64/processor.c:85 +#: modules/devices/m68k/processor.c:87 modules/devices/mips/processor.c:77 +#: modules/devices/parisc/processor.c:158 modules/devices/ppc/processor.c:160 +#: modules/devices/riscv/processor.c:186 modules/devices/sh/processor.c:87 +#: modules/devices/x86/processor.c:659 modules/devices/x86/processor.c:812 +msgid "Frequency" +msgstr "Frekans" + +#: modules/devices/alpha/processor.c:91 modules/devices/arm/processor.c:346 +#: modules/devices/e2k/processor.c:364 modules/devices/ia64/processor.c:168 +#: modules/devices/m68k/processor.c:88 modules/devices/mips/processor.c:78 +#: modules/devices/parisc/processor.c:159 modules/devices/ppc/processor.c:161 +#: modules/devices/s390/processor.c:134 modules/devices/sh/processor.c:90 +#: modules/devices/x86/processor.c:660 +msgid "BogoMips" +msgstr "BogoMips" + +#: modules/devices/alpha/processor.c:92 modules/devices/arm/processor.c:347 +#: modules/devices/e2k/processor.c:365 modules/devices/ia64/processor.c:169 +#: modules/devices/loongarch64/processor.c:88 +#: modules/devices/m68k/processor.c:89 modules/devices/mips/processor.c:79 +#: modules/devices/parisc/processor.c:160 modules/devices/ppc/processor.c:162 +#: modules/devices/riscv/processor.c:187 modules/devices/s390/processor.c:135 +#: modules/devices/sh/processor.c:91 modules/devices/sparc/processor.c:77 +#: modules/devices/x86/processor.c:661 +msgid "Byte Order" +msgstr "Bayt Sırası" + +#. /hw_cap +#. /flag:swp +#: modules/devices/arm/arm_data.c:42 +msgctxt "arm-flag" +msgid "SWP instruction (atomic read-modify-write)" +msgstr "SWP talimatı (atomik okuma-değiştirme-yazma)" + +#. /flag:half +#: modules/devices/arm/arm_data.c:43 +msgctxt "arm-flag" +msgid "Half-word loads and stores" +msgstr "Yarım kelime yüklemeleri ve depolar" + +#. /flag:thumb +#: modules/devices/arm/arm_data.c:44 +msgctxt "arm-flag" +msgid "Thumb (16-bit instruction set)" +msgstr "Başparmak (16 bit komut seti)" + +#. /flag:26bit +#: modules/devices/arm/arm_data.c:45 +msgctxt "arm-flag" +msgid "26-Bit Model (Processor status register folded into program counter)" +msgstr "26 Bit Modeli (İşlemci durum kaydı program sayacına katlanmış)" + +#. /flag:fastmult +#: modules/devices/arm/arm_data.c:46 +msgctxt "arm-flag" +msgid "32x32->64-bit multiplication" +msgstr "32x32-> 64-bit çarpma" + +#. /flag:fpa +#: modules/devices/arm/arm_data.c:47 +msgctxt "arm-flag" +msgid "Floating point accelerator" +msgstr "Kayan nokta hızlandırıcı" + +#. /flag:vfp +#: modules/devices/arm/arm_data.c:48 +msgctxt "arm-flag" +msgid "VFP (early SIMD vector floating point instructions)" +msgstr "VFP (erken SIMD vektör kayan nokta talimatları)" + +#. /flag:edsp +#: modules/devices/arm/arm_data.c:49 +msgctxt "arm-flag" +msgid "DSP extensions (the 'e' variant of the ARM9 CPUs, and all others above)" +msgstr "DSP uzantıları (ARM9 CPU'ların 'e' çeşidi ve yukarıdakilerin tümü)" + +#. /flag:java +#: modules/devices/arm/arm_data.c:50 +msgctxt "arm-flag" +msgid "Jazelle (Java bytecode accelerator)" +msgstr "Jazelle (Java bayt kodu hızlandırıcı)" + +#. /flag:iwmmxt +#: modules/devices/arm/arm_data.c:51 +msgctxt "arm-flag" +msgid "SIMD instructions similar to Intel MMX" +msgstr "Intel MMX'e benzer SIMD talimatları" + +#. /flag:crunch +#: modules/devices/arm/arm_data.c:52 +msgctxt "arm-flag" +msgid "MaverickCrunch coprocessor (if kernel support enabled)" +msgstr "MaverickCrunch yardımcı işlemcisi (çekirdek desteği etkinse)" + +#. /flag:thumbee +#: modules/devices/arm/arm_data.c:53 +msgctxt "arm-flag" +msgid "ThumbEE" +msgstr "ThumbEE" + +#. /flag:neon +#: modules/devices/arm/arm_data.c:54 +msgctxt "arm-flag" +msgid "Advanced SIMD/NEON on AArch32" +msgstr "AArch32'de gelişmiş SIMD / NEON" + +#. /flag:evtstrm +#: modules/devices/arm/arm_data.c:55 +msgctxt "arm-flag" +msgid "Kernel event stream using generic architected timer" +msgstr "Genel mimarili zamanlayıcı kullanan çekirdek olay akışı" + +#. /flag:vfpv3 +#: modules/devices/arm/arm_data.c:56 +msgctxt "arm-flag" +msgid "VFP version 3" +msgstr "VFP sürüm 3" + +#. /flag:vfpv3d16 +#: modules/devices/arm/arm_data.c:57 +msgctxt "arm-flag" +msgid "VFP version 3 with 16 D-registers" +msgstr "16 D-yazmaçlı VFP sürüm 3" + +#. /flag:vfpv4 +#: modules/devices/arm/arm_data.c:58 +msgctxt "arm-flag" +msgid "VFP version 4 with fast context switching" +msgstr "Hızlı içerik değiştirme özelliğine sahip VFP sürüm 4" + +#. /flag:vfpd32 +#: modules/devices/arm/arm_data.c:59 +msgctxt "arm-flag" +msgid "VFP with 32 D-registers" +msgstr "32 D kayıtlı VFP" + +#. /flag:tls +#: modules/devices/arm/arm_data.c:60 +msgctxt "arm-flag" +msgid "TLS register" +msgstr "TLS kaydı" + +#. /flag:idiva +#: modules/devices/arm/arm_data.c:61 +msgctxt "arm-flag" +msgid "SDIV and UDIV hardware division in ARM mode" +msgstr "ARM modunda SDIV ve UDIV donanım bölümü" + +#. /flag:idivt +#: modules/devices/arm/arm_data.c:62 +msgctxt "arm-flag" +msgid "SDIV and UDIV hardware division in Thumb mode" +msgstr "Başparmak modunda SDIV ve UDIV donanım bölümü" + +#. /flag:lpae +#: modules/devices/arm/arm_data.c:63 +msgctxt "arm-flag" +msgid "40-bit Large Physical Address Extension" +msgstr "40 bit Büyük Fiziksel Adres Uzantısı" + +#. /hw_cap2 +#. /flag:pmull +#: modules/devices/arm/arm_data.c:65 +msgctxt "arm-flag" +msgid "64x64->128-bit F2m multiplication (arch>8)" +msgstr "64x64-> 128-bit F2m çarpma (arch> 8)" + +#. /flag:aes +#: modules/devices/arm/arm_data.c:66 +msgctxt "arm-flag" +msgid "Crypto:AES (arch>8)" +msgstr "Kripto: AES (arch> 8)" + +#. /flag:sha1 +#: modules/devices/arm/arm_data.c:67 +msgctxt "arm-flag" +msgid "Crypto:SHA1 (arch>8)" +msgstr "Kripto: SHA1 (arch> 8)" + +#. /flag:sha2 +#: modules/devices/arm/arm_data.c:68 +msgctxt "arm-flag" +msgid "Crypto:SHA2 (arch>8)" +msgstr "Kripto: SHA2 (arch> 8)" + +#. /flag:crc32 +#: modules/devices/arm/arm_data.c:69 +msgctxt "arm-flag" +msgid "CRC32 checksum instructions (arch>8)" +msgstr "CRC32 sağlama toplamı talimatları (arch> 8)" + +#. /flag:asimd +#: modules/devices/arm/arm_data.c:72 +msgctxt "arm-flag" +msgid "Advanced SIMD/NEON on AArch64 (arch>8)" +msgstr "AArch64'te gelişmiş SIMD / NEON (arch> 8)" + +#: modules/devices/arm/processor.c:143 +msgid "ARM Processor" +msgstr "ARM İşlemci" + +#: modules/devices/arm/processor.c:214 modules/devices/riscv/processor.c:147 +#: modules/devices/x86/processor.c:610 +msgid "Empty List" +msgstr "Boş Liste" + +#: modules/devices/arm/processor.c:240 modules/devices/gpu.c:160 +#: modules/devices/gpu.c:244 modules/devices/x86/processor.c:268 +msgid "Clocks" +msgstr "Saat" + +#: modules/devices/arm/processor.c:286 modules/devices/arm/processor.c:299 +#: modules/devices/x86/processor.c:314 modules/devices/x86/processor.c:327 +#, c-format +msgid "%.2f-%.2f %s=%dx\n" +msgstr "%.2f-%.2f %s=%dx\n" + +#: modules/devices/arm/processor.c:342 +msgid "Linux Name" +msgstr "Linux Adı" + +#: modules/devices/arm/processor.c:343 +msgid "Decoded Name" +msgstr "Kodu Çözülmüş Ad" + +#: modules/devices/arm/processor.c:344 modules/network/net.c:453 +msgid "Mode" +msgstr "Mod" + +#: modules/devices/arm/processor.c:350 +msgid "ARM" +msgstr "ARM" + +#: modules/devices/arm/processor.c:351 +msgid "Implementer" +msgstr "Uygulayıcı" + +#: modules/devices/arm/processor.c:352 modules/devices/dmi_memory.c:950 +msgid "Part" +msgstr "Parça" + +#: modules/devices/arm/processor.c:353 modules/devices/ia64/processor.c:162 +#: modules/devices/parisc/processor.c:156 modules/devices/riscv/processor.c:183 +msgid "Architecture" +msgstr "Mimari" + +#: modules/devices/arm/processor.c:354 +msgid "Variant" +msgstr "Versiyon" + +#: modules/devices/arm/processor.c:356 modules/devices/riscv/processor.c:190 +#: modules/devices/sparc/processor.c:78 modules/devices/x86/processor.c:667 +msgid "Capabilities" +msgstr "Yetenekler" + +#: modules/devices/arm/processor.c:468 +msgid "SOC/Package" +msgstr "SOC/Paket" + +#: modules/devices/arm/processor.c:472 modules/devices/x86/processor.c:753 +msgid "Logical CPU Config" +msgstr "Mantıksal CPU Yapılandırması" + +#: modules/devices/arm/processor.c:489 +msgid "SOC/Package Information" +msgstr "SOC/Paket Bilgileri" + +#: modules/devices/battery.c:178 +#, c-format +msgid "" +"\n" +"[Battery: %s]\n" +"State=%s (load: %s)\n" +"Capacity=%s / %s (%.2f%%)\n" +"Battery Technology=%s (%s)\n" +"Manufacturer=%s\n" +"Model Number=%s\n" +"Serial Number=%s\n" +msgstr "" +"\n" +"[Pil: %s]\n" +"Durum=%s (yük: %s)\n" +"Kapasite=%s / %s (%%%.2f)\n" +"Pil Teknolojisi=%s (%s)\n" +"Üretici=%s\n" +"Model Numarası=%s\n" +"Seri Numarası=%s\n" + +#: modules/devices/battery.c:255 +#, c-format +msgid "" +"\n" +"[Battery: %s]\n" +"State=%s\n" +"Capacity=%s / %s\n" +"Battery Technology=%s\n" +"Manufacturer=%s\n" +"Model Number=%s\n" +"Serial Number=%s\n" +msgstr "" +"\n" +"[Pil: %s]\n" +"Durum=%s\n" +"Kapasite=%s /%s\n" +"Pil Teknolojisi=%s\n" +"Üretici=%s\n" +"Model Numarası=%s\n" +"Seri Numarası=%s\n" + +#: modules/devices/battery.c:343 +#, c-format +msgid "" +"\n" +"[Battery (APM)]\n" +"Charge=%d%%\n" +"Remaining Charge=%s of %s\n" +"Using=%s\n" +"APM driver version=%s\n" +"APM BIOS version=%s\n" +msgstr "" +"\n" +"[Pil (APM)]\n" +"Şarj = %d%%\n" +"Kalan Şarj =%s /%s\n" +"Kullanılan=%s\n" +"APM sürücü sürümü =%s\n" +"APM BIOS sürümü =%s\n" + +#: modules/devices/battery.c:355 +#, c-format +msgid "" +"\n" +"[Battery (APM)]\n" +"Charge=%d%%\n" +"Using=%s\n" +"APM driver version=%s\n" +"APM BIOS version=%s\n" +msgstr "" +"\n" +"[Pil (APM)]\n" +"Şarj=%d%%\n" +"Kullanılan=%s\n" +"APM sürücü sürümü =%s\n" +"APM BIOS sürümü =%s\n" + +#: modules/devices/battery.c:382 +msgid "" +"[No batteries]\n" +"No batteries found on this system=\n" +msgstr "" +"[Pil yok]\n" +"Bu sistemde pil bulunamadı =\n" + +#: modules/devices.c:101 +msgid "Graphics Processors" +msgstr "Ekran Kartı İşlemcisi" + +#: modules/devices.c:102 modules/devices/monitors.c:447 +#: modules/devices/monitors.c:493 +msgid "Monitors" +msgstr "Ekranlar" + +#: modules/devices.c:103 modules/devices/pci.c:175 +msgid "PCI Devices" +msgstr "PCI Aygıtlar" + +#: modules/devices.c:104 modules/devices/usb.c:211 +msgid "USB Devices" +msgstr "USB Aygıtlar" + +#: modules/devices.c:105 +msgid "Firmware" +msgstr "Aygıt Yazılımı" + +#: modules/devices.c:107 +msgid "Battery" +msgstr "Batarya" + +#: modules/devices.c:108 +msgid "Sensors" +msgstr "Sensörler" + +#: modules/devices.c:111 +msgid "System DMI" +msgstr "Sistem DMI" + +#: modules/devices.c:112 +msgid "Memory Devices" +msgstr "Hafıza Aygıtları" + +#: modules/devices.c:114 modules/devices.c:116 +msgid "Device Tree" +msgstr "Aygıt Ağacı" + +#: modules/devices.c:118 +msgid "Resources" +msgstr "Kaynaklar" + +#: modules/devices.c:773 +msgid "Sensor" +msgstr "Sensör" + +#: modules/devices.c:831 modules/devices/dmi_memory.c:880 +msgid "Devices" +msgstr "Aygıtlar" + +#: modules/devices.c:843 +msgid "Update PCI ID listing" +msgstr "PCI kimlik listesini güncelle" + +#: modules/devices.c:847 +msgid "Update USB ID listing" +msgstr "USB ID listeleme güncelle" + +#: modules/devices.c:851 +msgid "Update EDID vendor codes" +msgstr "EDID üretici kodlarını güncelle" + +#: modules/devices.c:855 +msgid "Update IEEE OUI vendor codes" +msgstr "IEEE OUI üretici kodlarını güncelle" + +#: modules/devices.c:859 +msgid "Update SD card manufacturer information" +msgstr "SD kart üretici bilgisini güncelle" + +#: modules/devices.c:864 +msgid "Update CPU flags database" +msgstr "İşlemci bayrakları veri tabanını güncelle" + +#: modules/devices.c:897 +msgid "Gathers information about hardware devices" +msgstr "Donanım aygıtları hakkında bilgi toplar" + +#: modules/devices.c:918 +msgid "A copy of pci.ids is not available on the system." +msgstr "Sistemde bir pci.ids kopyası yok." + +#: modules/devices.c:921 +msgid "A full pci.ids is not available on the system." +msgstr "Sistemde eksiksiz bir pci.ids yok." + +#: modules/devices.c:926 +msgid "Resource information requires superuser privileges" +msgstr "Kaynak bilgileri süper kullanıcı ayrıcalıkları gerektirir" + +#: modules/devices.c:932 +msgid "" +"Any NVMe storage devices present are not listed.\n" +"udisksd is required for NVMe devices." +msgstr "" +"Mevcut herhangi bir NVMe depolama cihazı listelenmemiştir.\n" +"NVMe cihazları içinudisksd gereklidir." + +#: modules/devices/devicetree.c:52 +msgid "Properties" +msgstr "Özellikler" + +#: modules/devices/devicetree.c:53 +msgid "Children" +msgstr "Çocuk" + +#: modules/devices/devicetree.c:89 +msgid "Node" +msgstr "Node" + +#: modules/devices/devicetree.c:90 +msgid "Node Path" +msgstr "Node Yolu" + +#: modules/devices/devicetree.c:91 +msgid "Alias" +msgstr "Lakab" + +#: modules/devices/devicetree.c:92 +msgid "Symbol" +msgstr "Sembol" + +#: modules/devices/devicetree.c:145 modules/devices/devicetree/pmac_data.c:79 +msgid "Platform" +msgstr "Platform" + +#: modules/devices/devicetree.c:146 modules/devices/devicetree.c:211 +#: modules/devices/gpu.c:249 +msgid "Compatible" +msgstr "Uyumlu" + +#: modules/devices/devicetree.c:147 +msgid "GPU-compatible" +msgstr "GPU-uyumlu" + +#: modules/devices/devicetree.c:162 +msgid "Raspberry Pi or Compatible" +msgstr "Raspberry Pi veya Uyumlu" + +#: modules/devices/devicetree.c:164 modules/devices/devicetree.c:191 +#: modules/devices/devicetree.c:210 modules/devices/devicetree/rpi_data.c:169 +#: modules/devices/dmi.c:42 modules/devices/dmi.c:52 modules/devices/dmi.c:58 +#: modules/devices/usb.c:181 +msgid "Serial Number" +msgstr "Seri Numarası" + +#: modules/devices/devicetree.c:165 modules/devices/devicetree/rpi_data.c:166 +msgid "RCode" +msgstr "RKodu" + +#: modules/devices/devicetree.c:165 +msgid "No revision code available; unable to lookup model details." +msgstr "Revizyon kodu mevcut değil; model ayrıntılarını arayamıyor." + +#: modules/devices/devicetree.c:190 +msgid "More" +msgstr "Daha fazla" + +#: modules/devices/devicetree.c:271 +msgid "Messages" +msgstr "Mesajlar" + +#: modules/devices/devicetree/pmac_data.c:78 +msgid "Apple Power Macintosh" +msgstr "Apple Power Macintosh" + +#: modules/devices/devicetree/pmac_data.c:83 +msgid "Detected as" +msgstr "Olarak algılandı" + +#: modules/devices/devicetree/pmac_data.c:84 +msgid "PMAC Flags" +msgstr "PMAC Bayrakları" + +#: modules/devices/devicetree/pmac_data.c:85 +msgid "L2 Cache" +msgstr "L2 Önbelleği" + +#: modules/devices/devicetree/pmac_data.c:86 +msgid "PMAC Generation" +msgstr "PMAC Üretimi" + +#: modules/devices/devicetree/rpi_data.c:161 +#: modules/devices/devicetree/rpi_data.c:162 +msgid "Raspberry Pi" +msgstr "Raspberry Pi" + +#: modules/devices/devicetree/rpi_data.c:162 +msgid "Board Name" +msgstr "Kart Adı" + +#: modules/devices/devicetree/rpi_data.c:163 +msgid "PCB Revision" +msgstr "PCB Revizyonu" + +#: modules/devices/devicetree/rpi_data.c:164 +msgid "Introduction" +msgstr "Giriş" + +#: modules/devices/devicetree/rpi_data.c:165 modules/devices/usb.c:173 +msgid "Manufacturer" +msgstr "Üretici firma" + +#: modules/devices/devicetree/rpi_data.c:167 +msgid "SOC (spec)" +msgstr "SOC (spec)" + +#: modules/devices/devicetree/rpi_data.c:168 +msgid "Memory (spec)" +msgstr "Bellek (spec)" + +#: modules/devices/devicetree/rpi_data.c:170 +msgid "Permanent overvolt bit" +msgstr "Kalıcı aşırı voltaj biti" + +#: modules/devices/devicetree/rpi_data.c:170 +msgctxt "rpi-ov-bit" +msgid "Set" +msgstr "Ayarla" + +#: modules/devices/devicetree/rpi_data.c:170 +msgctxt "rpi-ov-bit" +msgid "Not set" +msgstr "Belirlenmedi" + +#: modules/devices/dmi.c:37 modules/devices/inputdevices.c:144 +#: modules/devices/usb.c:170 +msgid "Product" +msgstr "Ürün" + +#: modules/devices/dmi.c:39 modules/devices/e2k/processor.c:360 +#: modules/devices/ia64/processor.c:164 +#: modules/devices/loongarch64/processor.c:82 modules/devices/sh/processor.c:86 +msgid "Family" +msgstr "Aile" + +#: modules/devices/dmi.c:43 +msgid "SKU" +msgstr "SKU" + +#: modules/devices/dmi.c:44 +msgid "BIOS" +msgstr "BIOS" + +#: modules/devices/dmi.c:53 modules/devices/dmi.c:59 +msgid "Asset Tag" +msgstr "Varlık Etiketi" + +#: modules/devices/dmi.c:119 modules/devices/dmi_memory.c:936 +#: modules/devices/x86/processor.c:696 +msgid "(Not available; Perhaps try running HardInfo as root.)" +msgstr "(Mevcut değil, belki de HardInfo'u kök olarak çalıştırmalısınız.)" + +#: modules/devices/dmi.c:160 +msgid "DMI Unavailable" +msgstr "DMI Kullanılamıyor" + +#: modules/devices/dmi.c:162 +msgid "DMI is not avaliable. Perhaps this platform does not provide DMI." +msgstr "DMI mevcut değildir. Belki de bu platform DMI sağlamaz." + +#: modules/devices/dmi.c:163 +msgid "DMI is not available; Perhaps try running HardInfo as root." +msgstr "" +"DMI mevcut değil; HardInfo'yu root olarak çalıştırmayı deneyebilirsiniz." + +#: modules/devices/dmi_memory.c:55 +msgid "RAM" +msgstr "RAM" + +#: modules/devices/dmi_memory.c:650 +msgid "Serial Presence Detect (SPD)" +msgstr "Seri Durum Algılama (SPD)" + +#: modules/devices/dmi_memory.c:653 +msgid "SPD Revision" +msgstr "SPD Revizyonu" + +#: modules/devices/dmi_memory.c:654 modules/devices/dmi_memory.c:803 +msgid "Form Factor" +msgstr "Form faktörü" + +#: modules/devices/dmi_memory.c:656 +msgid "Module Vendor" +msgstr "Modül Satıcısı" + +#: modules/devices/dmi_memory.c:658 +msgid "DRAM Vendor" +msgstr "DRAM Satıcısı" + +#: modules/devices/dmi_memory.c:660 modules/devices/dmi_memory.c:807 +msgid "Part Number" +msgstr "Parça Numarası" + +#: modules/devices/dmi_memory.c:662 +msgid "Manufacturing Date (Week / Year)" +msgstr "Üretim Tarihi (Hafta / Yıl)" + +#: modules/devices/dmi_memory.c:695 modules/devices/dmi_memory.c:933 +msgid "Memory Device List" +msgstr "Bellek Aygıtı Listesi" + +#: modules/devices/dmi_memory.c:743 +msgid "Memory Array" +msgstr "Bellek Dizisi" + +#: modules/devices/dmi_memory.c:744 modules/devices/x86/processor.c:715 +msgid "DMI Handle" +msgstr "DMI Kolu" + +#: modules/devices/dmi_memory.c:745 modules/devices/dmi_memory.c:801 +#: modules/devices/dmi_memory.c:838 modules/devices/dmi_memory.c:947 +msgid "Locator" +msgstr "Bulucu" + +#: modules/devices/dmi_memory.c:746 +msgid "Use" +msgstr "Kullan" + +#: modules/devices/dmi_memory.c:747 +msgid "Error Correction Type" +msgstr "Hata Düzeltme Tipi" + +#: modules/devices/dmi_memory.c:748 +msgid "Size (Present / Max)" +msgstr "Boyut (Mevcut / Maks)" + +#: modules/devices/dmi_memory.c:749 +msgid "Devices (Populated / Sockets)" +msgstr "Aygıtlar (Yerleşik / Soketler)" + +#: modules/devices/dmi_memory.c:750 modules/devices/dmi_memory.c:881 +msgid "Types Present" +msgstr "Mevcut Türler" + +#: modules/devices/dmi_memory.c:751 +msgid "ROM Size" +msgstr "ROM Boyutu" + +#: modules/devices/dmi_memory.c:799 modules/devices/dmi_memory.c:836 +msgid "Memory Socket" +msgstr "Bellek Yuvası" + +#: modules/devices/dmi_memory.c:800 modules/devices/dmi_memory.c:837 +msgid "DMI Handles (Array, Socket)" +msgstr "DMI Kolları (Dizi, Soket)" + +#: modules/devices/dmi_memory.c:802 modules/devices/dmi_memory.c:839 +msgid "Bank Locator" +msgstr "Bank Bulucu" + +#: modules/devices/dmi_memory.c:809 +msgid "Rated Speed" +msgstr "Anma Hızı" + +#: modules/devices/dmi_memory.c:810 +msgid "Configured Speed" +msgstr "Yapılandırılmış Hız" + +#: modules/devices/dmi_memory.c:811 +msgid "Data Width/Total Width" +msgstr "Veri Genişliği / Toplam Genişlik" + +#: modules/devices/dmi_memory.c:812 +msgid "Rank" +msgstr "Sıra" + +#: modules/devices/dmi_memory.c:813 +msgid "Minimum Voltage" +msgstr "Minimum Voltaj" + +#: modules/devices/dmi_memory.c:814 +msgid "Maximum Voltage" +msgstr "Maksimum Voltaj" + +#: modules/devices/dmi_memory.c:815 +msgid "Configured Voltage" +msgstr "Yapılandırılmış Gerilim" + +#: modules/devices/dmi_memory.c:840 modules/devices/dmi_memory.c:847 +#: modules/devices/monitors.c:493 +msgid "(Empty)" +msgstr "(Boş)" + +#: modules/devices/dmi_memory.c:878 +msgid "Serial Presence Detect (SPD) Summary" +msgstr "Seri Durum Algılama (SPD) Özeti" + +#: modules/devices/dmi_memory.c:1004 +msgid " dmidecode utility available" +msgstr " dmidecode yardımcı programı mevcut" + +#: modules/devices/dmi_memory.c:1005 +msgid " ... and HardInfo running with superuser privileges" +msgstr " ... ve süper kullanıcı ayrıcalıklarıyla çalışan HardInfo" + +#: modules/devices/dmi_memory.c:1006 +msgid "" +" at24 (or eeprom) module loaded (for SDR, DDR, DDR2, DDR3)" +msgstr "" +" at24 (veya eeprom) modülü yüklü (SDR, DDR, DDR2, DDR3 için)" + +#: modules/devices/dmi_memory.c:1007 +msgid "" +" ... or ee1004 module loaded and configured! " +"(for DDR4)" +msgstr "" +" ... veyaee1004 modülü yüklendi ve yapılandırıldı! (DDR4 için)" + +#: modules/devices/dmi_memory.c:1016 +msgid "Memory information requires one or both of the following:" +msgstr "" +"Bellek bilgisi aşağıdakilerdenbirini veya her ikisini gerektirir:" + +#: modules/devices/dmi_memory.c:1042 +msgid "" +"\"More often than not, information contained in the DMI tables is " +"inaccurate,\n" +"incomplete or simply wrong.\" -dmidecode manual page" +msgstr "" +"\"Çoğu zaman, DMI tablolarında yer alan bilgiler yanlıştır,\n" +"eksik veya basitçe yanlış. \"- dmidecode kılavuz sayfası" + +#: modules/devices/e2k/processor.c:30 modules/devices/x86/processor.c:149 +msgid "Cache information not available=\n" +msgstr "Önbellek bilgisi yok=\n" + +#: modules/devices/e2k/processor.c:36 modules/devices/x86/processor.c:155 +#, c-format +msgid "Level %d (%s)=%d-way set-associative, %d sets, %dKB size\n" +msgstr "Seviye %d (%s) =%d-yollu set-ilişkisel, %d set, %dKB boyutu\n" + +#. /cache type, as appears in: Level 1 (Data) +#: modules/devices/e2k/processor.c:51 modules/devices/x86/processor.c:170 +msgctxt "cache-type" +msgid "Data" +msgstr "Veri" + +#. /cache type, as appears in: Level 1 (Instruction) +#: modules/devices/e2k/processor.c:52 modules/devices/x86/processor.c:171 +msgctxt "cache-type" +msgid "Instruction" +msgstr "Talimat" + +#. /cache type, as appears in: Level 2 (Unified) +#: modules/devices/e2k/processor.c:53 modules/devices/x86/processor.c:172 +msgctxt "cache-type" +msgid "Unified" +msgstr "Birleşik" + +#: modules/devices/e2k/processor.c:157 modules/devices/x86/processor.c:367 +msgid "Caches" +msgstr "Önbellekler" + +#: modules/devices/e2k/processor.c:208 modules/devices/e2k/processor.c:225 +#: modules/devices/x86/processor.c:418 modules/devices/x86/processor.c:435 +#, c-format +msgid "Level %d (%s)#%d=%dx %dKB (%dKB), %d-way set-associative, %d sets\n" +msgstr "Seviye %d (%s)#%d=%dx %dKB (%dKB), %d-yollu set-ilişkisel, %d set\n" + +#: modules/devices/firmware.c:36 +msgid "Device cannot be removed easily" +msgstr "Cihaz kolayca çıkarılamaz" + +#: modules/devices/firmware.c:37 +msgid "Device is updatable in this or any other mode" +msgstr "Cihaz, bu veya başka herhangi bir modda güncellenebilir" + +#: modules/devices/firmware.c:38 +msgid "Update can only be done from offline mode" +msgstr "Güncelleme yalnızca çevrimdışı moddan yapılabilir" + +#: modules/devices/firmware.c:39 +msgid "Requires AC power" +msgstr "AC gücü gerektirir" + +#: modules/devices/firmware.c:40 +msgid "Is locked and can be unlocked" +msgstr "Kilitli ve kilidi açılabilir" + +#: modules/devices/firmware.c:41 +msgid "Is found in current metadata" +msgstr "Mevcut meta verilerde bulunur" + +#: modules/devices/firmware.c:42 +msgid "Requires a bootloader mode to be manually enabled by the user" +msgstr "" +"Kullanıcı tarafından manuel olarak etkinleştirilecek bir önyükleyici modu " +"gerektirir" + +#: modules/devices/firmware.c:43 +msgid "Has been registered with other plugins" +msgstr "Diğer eklentilere kayıtlı" + +#: modules/devices/firmware.c:44 +msgid "Requires a reboot to apply firmware or to reload hardware" +msgstr "" +"Donanım yazılımı uygulamak veya donanımı yeniden yüklemek için yeniden " +"başlatma gerektirir" + +#: modules/devices/firmware.c:45 +msgid "Requires system shutdown to apply firmware" +msgstr "Aygıt yazılımını uygulamak için sistemin kapatılmasını gerektirir" + +#: modules/devices/firmware.c:46 +msgid "Has been reported to a metadata server" +msgstr "Bir meta veri sunucusuna rapor edildi" + +#: modules/devices/firmware.c:47 +msgid "User has been notified" +msgstr "Kullanıcı bilgilendirildi" + +#: modules/devices/firmware.c:48 +msgid "Always use the runtime version rather than the bootloader" +msgstr "Her zaman önyükleyici yerine çalışma zamanı sürümünü kullanın" + +#: modules/devices/firmware.c:49 +msgid "Install composite firmware on the parent before the child" +msgstr "Çocuktan önce ebeveyne kompozit üretici yazılımı yükleyin" + +#: modules/devices/firmware.c:50 +msgid "Is currently in bootloader mode" +msgstr "Şu anda önyükleyici modunda" + +#: modules/devices/firmware.c:51 +msgid "The hardware is waiting to be replugged" +msgstr "Donanım yeniden takılmayı bekliyor" + +#: modules/devices/firmware.c:52 +msgid "Ignore validation safety checks when flashing this device" +msgstr "Bu cihazı flashlarken doğrulama güvenlik kontrollerini göz ardı edin" + +#: modules/devices/firmware.c:53 +msgid "Requires the update to be retried with a new plugin" +msgstr "Güncellemenin yeni bir eklentiyle yeniden denenmesini gerektirir" + +#: modules/devices/firmware.c:54 +msgid "Do not add instance IDs from the device baseclass" +msgstr "Cihaz temel sınıfından örnek kimlikleri eklemeyin" + +#: modules/devices/firmware.c:55 +msgid "Device update needs to be separately activated" +msgstr "Cihaz güncellemesinin ayrı olarak etkinleştirilmesi gerekiyor" + +#: modules/devices/firmware.c:56 +msgid "" +"Ensure the version is a valid semantic version, e.g. numbers separated with " +"dots" +msgstr "" +"Sürümün geçerli bir anlamsal sürüm olduğundan emin olun, ör. noktalarla " +"ayrılmış sayılar" + +#: modules/devices/firmware.c:57 +msgid "Extra metadata can be exposed about this device" +msgstr "Bu cihazla ilgili ekstra meta veriler ifşa edilebilir" + +#: modules/devices/firmware.c:74 +msgid "DeviceId" +msgstr "Cihaz Kimliği" + +#: modules/devices/firmware.c:74 modules/devices/firmware.c:187 +msgid "Guid" +msgstr "Kılavuz" + +#: modules/devices/firmware.c:74 +msgid "Plugin" +msgstr "Eklenti" + +#: modules/devices/firmware.c:74 modules/devices/firmware.c:205 +#: modules/network.c:380 +msgid "Flags" +msgstr "Flama" + +#: modules/devices/firmware.c:75 +msgid "VendorId" +msgstr "Satıcı kimliği" + +#: modules/devices/firmware.c:75 +msgid "VersionBootloader" +msgstr "Sürüm Önyükleyici" + +#: modules/devices/firmware.c:76 modules/devices/firmware.c:179 +msgid "Icon" +msgstr "Simge" + +#: modules/devices/firmware.c:76 +msgid "InstallDuration" +msgstr "Kurulum Süresi" + +#: modules/devices/firmware.c:76 modules/devices/firmware.c:197 +msgid "Created" +msgstr "Oluşturuldu" + +#: modules/devices/firmware.c:244 +msgid "Firmware List" +msgstr "Yazılım Listesi" + +#: modules/devices/firmware.c:257 +msgid "Requires the fwupd daemon." +msgstr "fwupd arka plan hizmetine ihtiyaç duyar." + +#: modules/devices/gpu.c:96 modules/devices/pci.c:111 +#: modules/devices/storage.c:58 +msgid "SVendor" +msgstr "SSatıcı" + +#: modules/devices/gpu.c:97 modules/devices/pci.c:112 +#: modules/devices/storage.c:59 +msgid "SDevice" +msgstr "SAygıt" + +#: modules/devices/gpu.c:105 modules/devices/pci.c:122 +#: modules/devices/storage.c:68 +msgid "PCI Express" +msgstr "PCI Express" + +#: modules/devices/gpu.c:106 modules/devices/pci.c:124 +#: modules/devices/storage.c:70 +msgid "Maximum Link Width" +msgstr "Maksimum Bağlantı Genişliği" + +#: modules/devices/gpu.c:107 modules/devices/pci.c:126 +#: modules/devices/storage.c:71 +msgid "Maximum Link Speed" +msgstr "Maksimum Bağlantı Hızı" + +#: modules/devices/gpu.c:107 modules/devices/pci.c:125 +#: modules/devices/pci.c:126 modules/devices/storage.c:71 +msgid "GT/s" +msgstr "GT/s" + +#: modules/devices/gpu.c:117 +msgid "NVIDIA" +msgstr "NVIDIA" + +#: modules/devices/gpu.c:119 +msgid "BIOS Version" +msgstr "BIOS Sürümü" + +#: modules/devices/gpu.c:120 +msgid "UUID" +msgstr "UUID" + +#: modules/devices/gpu.c:154 modules/devices/gpu.c:240 +#: modules/devices/inputdevices.c:139 modules/devices/pci.c:143 +#: modules/devices/usb.c:169 +msgid "Device Information" +msgstr "Aygıt Bilgisi" + +#: modules/devices/gpu.c:155 modules/devices/gpu.c:241 +#: modules/devices/storage.c:69 +msgid "Location" +msgstr "Yerel" + +#: modules/devices/gpu.c:156 +msgid "DRM Device" +msgstr "DRM Aygıtı" + +#: modules/devices/gpu.c:157 modules/devices/pci.c:144 +#: modules/devices/usb.c:136 modules/devices/usb.c:177 +msgid "Class" +msgstr "Sınıf" + +#: modules/devices/gpu.c:166 modules/devices/pci.c:149 +msgid "In Use" +msgstr "Kullanımda" + +#: modules/devices/gpu.c:201 +msgid "Unknown integrated GPU" +msgstr "Bilinmeyen entegre GPU" + +#: modules/devices/gpu.c:209 +msgid "clock-frequency property" +msgstr "saat frekansı özelliği" + +#: modules/devices/gpu.c:210 +msgid "Operating Points (OPPv1)" +msgstr "İşletim Noktaları (OPPv1)" + +#: modules/devices/gpu.c:211 +msgid "Operating Points (OPPv2)" +msgstr "İşletim Noktaları (OPPv2)" + +#: modules/devices/gpu.c:247 +msgid "Device Tree Node" +msgstr "Aygıt Ağacı Düğümü" + +#: modules/devices/gpu.c:250 modules/devices/monitors.c:473 +#: modules/network/net.c:454 +msgid "Status" +msgstr "Durum" + +#: modules/devices/gpu.c:267 +msgid "GPUs" +msgstr "GPUs" + +#: modules/devices/gpu.c:291 +msgid "No GPU devices found" +msgstr "GPU cihazı bulunamadı" + +#: modules/devices/ia64/processor.c:108 +msgid "IA64 Processor" +msgstr "IA64 İşlemci" + +#: modules/devices/ia64/processor.c:163 +msgid "Architecture Revision" +msgstr "Mimari Revizyon" + +#: modules/devices/ia64/processor.c:170 +msgid "CPU regs" +msgstr "CPU kayıtları" + +#: modules/devices/ia64/processor.c:171 +#: modules/devices/loongarch64/processor.c:87 +msgid "Features" +msgstr "Özellikler" + +#: modules/devices/inputdevices.c:142 modules/devices/pci.c:153 +#: modules/devices/usb.c:183 +msgid "Bus" +msgstr "Veriyolu" + +#: modules/devices/inputdevices.c:148 +msgid "Connected to" +msgstr "Bağlı" + +#: modules/devices/inputdevices.c:152 +msgid "InfraRed port" +msgstr "Kızılötesi Portu" + +#: modules/devices/loongarch64/processor.c:81 +#: modules/devices/mips/processor.c:76 +msgid "System Type" +msgstr "Sistem Türü" + +#: modules/devices/loongarch64/processor.c:86 +msgid "BogoMIPS" +msgstr "BogoMIPS" + +#: modules/devices/m68k/processor.c:85 modules/devices/riscv/processor.c:185 +msgid "MMU" +msgstr "MMU" + +#: modules/devices/m68k/processor.c:86 modules/devices/sparc/processor.c:76 +msgid "FPU" +msgstr "FPU" + +#: modules/devices/m68k/processor.c:90 +msgid "Calibration" +msgstr "Kalibrasyon" + +#: modules/devices/monitors.c:29 modules/devices/monitors.c:255 +#: modules/devices/monitors.c:348 modules/devices/spd-decode.c:665 +msgid "(Unspecified)" +msgstr "(Belirtilmemiş)" + +#: modules/devices/monitors.c:230 +#, c-format +msgid "Week %d of %d" +msgstr "Hafta %d of %d" + +#: modules/devices/monitors.c:240 +msgid "Ok" +msgstr "Tamam" + +#: modules/devices/monitors.c:240 +msgid "Fail" +msgstr "Hata" + +#: modules/devices/monitors.c:268 modules/devices/monitors.c:276 +#: modules/devices/monitors.c:284 modules/devices/monitors.c:295 +#: modules/devices/monitors.c:303 modules/devices/monitors.c:310 +#: modules/devices/monitors.c:318 modules/devices/monitors.c:326 +#: modules/devices/monitors.c:334 modules/devices/monitors.c:340 +msgid "(Empty List)" +msgstr "(Boş Liste)" + +#: modules/devices/monitors.c:392 +msgid "Signal Type" +msgstr "Sinyal Türü" + +#: modules/devices/monitors.c:392 +msgid "Digital" +msgstr "Dijital" + +#: modules/devices/monitors.c:392 +msgid "Analog" +msgstr "Analog" + +#: modules/devices/monitors.c:393 modules/devices/usb.c:135 +#: modules/network.c:310 modules/network.c:363 modules/network.c:380 +msgid "Interface" +msgstr "Arayüz" + +#: modules/devices/monitors.c:394 +msgid "Bits per Color Channel" +msgstr "Renk Kanalı Başına Bit Sayısı" + +#: modules/devices/monitors.c:395 +msgid "Speaker Allocation" +msgstr "Hoparlör Tahsisi" + +#: modules/devices/monitors.c:396 +msgid "Output (Max)" +msgstr "Çıkış (Maks)" + +#: modules/devices/monitors.c:399 +msgid "EDID Device" +msgstr "EDID Cihazı" + +#: modules/devices/monitors.c:403 +msgid "Serial" +msgstr "Seri" + +#: modules/devices/monitors.c:404 +msgid "Manufacture Date" +msgstr "Üretim tarihi" + +#: modules/devices/monitors.c:405 +msgid "EDID Meta" +msgstr "EDID Meta" + +#: modules/devices/monitors.c:406 +msgid "Data Size" +msgstr "Veri Boyutu" + +#: modules/devices/monitors.c:406 +msgid "bytes" +msgstr "bayt" + +#: modules/devices/monitors.c:408 +msgid "Extension Blocks" +msgstr "Uzantı Blokları" + +#: modules/devices/monitors.c:409 +msgid "Extended to" +msgstr "Genişletilmiş" + +#: modules/devices/monitors.c:410 +msgid "Checksum" +msgstr "Sağlama toplamı" + +#: modules/devices/monitors.c:411 +msgid "EDID Descriptors" +msgstr "EDID Tanımlayıcıları" + +#: modules/devices/monitors.c:412 +msgid "Detailed Timing Descriptors (DTD)" +msgstr "Ayrıntılı Zamanlama Tanımlayıcıları (DTD)" + +#: modules/devices/monitors.c:413 +msgid "Established Timings Bitmap (ETB)" +msgstr "Kurulmuş Zamanlamalar Bit Eşlemi (ETB)" + +#: modules/devices/monitors.c:414 +msgid "Standard Timings (STD)" +msgstr "Standart Zamanlamalar (STD)" + +#: modules/devices/monitors.c:415 +msgid "E-EDID Extension Blocks" +msgstr "E-EDID Uzantı Blokları" + +#: modules/devices/monitors.c:416 +msgid "EIA/CEA-861 Data Blocks" +msgstr "EIA/CEA-861 Veri Blokları" + +#: modules/devices/monitors.c:417 +msgid "EIA/CEA-861 Short Audio Descriptors" +msgstr "EIA/CEA-861 Kısa Ses Tanımlayıcıları" + +#: modules/devices/monitors.c:418 +msgid "EIA/CEA-861 Short Video Descriptors" +msgstr "EIA/CEA-861 Kısa Video Tanımlayıcıları" + +#: modules/devices/monitors.c:419 +msgid "DisplayID Timings" +msgstr "Ekran kimlik Zamanı" + +#: modules/devices/monitors.c:420 +msgid "DisplayID Strings" +msgstr "Ekran Kimliği Dizeleri" + +#: modules/devices/monitors.c:421 +msgid "Hex Dump" +msgstr "Onaltılık Dökümü" + +#: modules/devices/monitors.c:421 +msgid "Data" +msgstr "Veri" + +#: modules/devices/monitors.c:471 modules/devices/monitors.c:502 +#: modules/devices/pci.c:151 modules/devices/usb.c:182 +msgid "Connection" +msgstr "Bağlantı" + +#: modules/devices/monitors.c:472 +msgid "DRM" +msgstr "DRM" + +#: modules/devices/parisc/processor.c:107 +msgid "PA-RISC Processor" +msgstr "PA-RISC İşlemci" + +#: modules/devices/parisc/processor.c:161 +msgid "HVersion" +msgstr "HVersion" + +#: modules/devices/parisc/processor.c:162 +msgid "SVersion" +msgstr "SVersion" + +#: modules/devices/pci.c:123 +msgid "Link Width" +msgstr "Bağlantı Genişliği" + +#: modules/devices/pci.c:125 +msgid "Link Speed" +msgstr "Bağlantı Hızı" + +#: modules/devices/pci.c:152 +msgid "Domain" +msgstr "Etki Alanı" + +#: modules/devices/pci.c:155 +msgid "Function" +msgstr "İşlev" + +#: modules/devices/pci.c:196 +msgid "No PCI devices found" +msgstr "PCI aygıtı bulunamadı" + +#: modules/devices/ppc/processor.c:117 +msgid "POWER Processor" +msgstr "GÜÇ İşlemci" + +#: modules/devices/printers.c:81 +msgid "⚬ Can do black and white printing=\n" +msgstr "⚬ Siyah beyaz baskı yapabilir =\n" + +#: modules/devices/printers.c:83 +msgid "⚬ Can do color printing=\n" +msgstr "⚬ Renkli baskı yapabilir =\n" + +#: modules/devices/printers.c:85 +msgid "⚬ Can do duplexing=\n" +msgstr "⚬ Çift taraflı yapabilir=\n" + +#: modules/devices/printers.c:87 +msgid "⚬ Can do staple output=\n" +msgstr "⚬ Zımba çıkışı yapabilir =\n" + +#: modules/devices/printers.c:89 +msgid "⚬ Can do copies=\n" +msgstr "⚬ Kopyalama yapabilir =\n" + +#: modules/devices/printers.c:91 +msgid "⚬ Can collate copies=\n" +msgstr "⚬ Kopyaları harmanlayabilir =\n" + +#: modules/devices/printers.c:93 +msgid "⚬ Printer is rejecting jobs=\n" +msgstr "⚬ Yazıcı işleri reddediyor =\n" + +#: modules/devices/printers.c:95 +msgid "⚬ Printer was automatically discovered and added=\n" +msgstr "⚬ Yazıcı otomatik olarak keşfedildi ve eklendi =\n" + +#: modules/devices/printers.c:110 +msgid "Idle" +msgstr "Beklemede" + +#: modules/devices/printers.c:112 +msgid "Printing a Job" +msgstr "Bir İşin Yazdırılması" + +#: modules/devices/printers.c:114 +msgid "Stopped" +msgstr "Durduruldu" + +#: modules/devices/printers.c:191 +msgid "" +"[Printers]\n" +"No suitable CUPS library found=" +msgstr "" +"[Yazıcılar]\n" +"Uygun CUPS kütüphanesi bulunamadı=" + +#: modules/devices/printers.c:201 +msgid "[Printers (CUPS)]\n" +msgstr "[Yazıcılar (CUPS)]\n" + +#: modules/devices/printers.c:265 +msgid "" +"[Printers]\n" +"No printers found=\n" +msgstr "" +"[Yazıcılar]\n" +"Yazıcı bulunamadı=\n" + +#: modules/devices/riscv/processor.c:107 +msgid "RISC-V Processor" +msgstr "RISC-V İşlemci" + +#: modules/devices/riscv/processor.c:184 +msgid "uarch" +msgstr "uarch" + +#. /ext:RV32 +#: modules/devices/riscv/riscv_data.c:37 +msgctxt "rv-ext" +msgid "RISC-V 32-bit" +msgstr "RISC-V 32-bit" + +#. /ext:RV64 +#: modules/devices/riscv/riscv_data.c:38 +msgctxt "rv-ext" +msgid "RISC-V 64-bit" +msgstr "RISC-V 64-bit" + +#. /ext:RV128 +#: modules/devices/riscv/riscv_data.c:39 +msgctxt "rv-ext" +msgid "RISC-V 128-bit" +msgstr "RISC-V 128-bit" + +#. /ext:E +#: modules/devices/riscv/riscv_data.c:40 +msgctxt "rv-ext" +msgid "Base embedded integer instructions (15 registers)" +msgstr "Temel gömülü tamsayı talimatları (15 kayıt)" + +#. /ext:I +#: modules/devices/riscv/riscv_data.c:41 +msgctxt "rv-ext" +msgid "Base integer instructions (31 registers)" +msgstr "Temel tamsayı talimatları (31 kayıt)" + +#. /ext:M +#: modules/devices/riscv/riscv_data.c:42 +msgctxt "rv-ext" +msgid "Hardware integer multiply and divide" +msgstr "Donanım tamsayı çarpma ve bölme" + +#. /ext:A +#: modules/devices/riscv/riscv_data.c:43 +msgctxt "rv-ext" +msgid "Atomic memory operations" +msgstr "Atomik hafıza işlemleri" + +#. /ext:C +#: modules/devices/riscv/riscv_data.c:44 +msgctxt "rv-ext" +msgid "Compressed 16-bit instructions" +msgstr "Sıkıştırılmış 16 bit talimatlar" + +#. /ext:F +#: modules/devices/riscv/riscv_data.c:45 +msgctxt "rv-ext" +msgid "Floating-point instructions, single-precision" +msgstr "Kayan nokta talimatları, tek kesinlik" + +#. /ext:D +#: modules/devices/riscv/riscv_data.c:46 +msgctxt "rv-ext" +msgid "Floating-point instructions, double-precision" +msgstr "Kayan nokta talimatları, çift kesinlik" + +#. /ext:Q +#: modules/devices/riscv/riscv_data.c:47 +msgctxt "rv-ext" +msgid "Floating-point instructions, quad-precision" +msgstr "Kayan nokta talimatları, dörtlü hassasiyet" + +#. /ext:B +#: modules/devices/riscv/riscv_data.c:48 +msgctxt "rv-ext" +msgid "Bit manipulation instructions" +msgstr "Bit işleme talimatları" + +#. /ext:V +#: modules/devices/riscv/riscv_data.c:49 +msgctxt "rv-ext" +msgid "Vector operations" +msgstr "Vektör işlemleri" + +#. /ext:T +#: modules/devices/riscv/riscv_data.c:50 +msgctxt "rv-ext" +msgid "Transactional memory" +msgstr "İşlem belleği" + +#. /ext:P +#: modules/devices/riscv/riscv_data.c:51 +msgctxt "rv-ext" +msgid "Packed SIMD instructions" +msgstr "Paketli SIMD talimatları" + +#. /ext:L +#: modules/devices/riscv/riscv_data.c:52 +msgctxt "rv-ext" +msgid "Decimal floating-point instructions" +msgstr "Ondalık kayan nokta talimatları" + +#. /ext:J +#: modules/devices/riscv/riscv_data.c:53 +msgctxt "rv-ext" +msgid "Dynamically translated languages" +msgstr "Dinamik olarak çevrilmiş diller" + +#. /ext:N +#: modules/devices/riscv/riscv_data.c:54 +msgctxt "rv-ext" +msgid "User-level interrupts" +msgstr "Kullanıcı düzeyinde kesintiler" + +#: modules/devices/s390/processor.c:92 +msgid "S390 Processor" +msgstr "S390 İşlemci" + +#: modules/devices/s390/processor.c:133 +msgid "ID String" +msgstr "Kimlik Dizesi" + +#: modules/devices/sh/processor.c:55 +msgid "SuperH Processor" +msgstr "SuperH İşlemci" + +#: modules/devices/sh/processor.c:88 +msgid "Bus Frequency" +msgstr "Veriyolu Frekansı" + +#: modules/devices/sh/processor.c:89 +msgid "Module Frequency" +msgstr "Modül Frekansı" + +#: modules/devices/spd-decode.c:306 +msgid "Row address bits" +msgstr "Satır adresi bitleri" + +#: modules/devices/spd-decode.c:307 +msgid "Column address bits" +msgstr "Sütun adres bitleri" + +#: modules/devices/spd-decode.c:308 +msgid "Number of rows" +msgstr "Satırların sayısı" + +#: modules/devices/spd-decode.c:309 +msgid "Data width" +msgstr "Veri genişliği" + +#: modules/devices/spd-decode.c:310 +msgid "Interface signal levels" +msgstr "Arayüz sinyal seviyeleri" + +#: modules/devices/spd-decode.c:311 +msgid "Configuration type" +msgstr "Yapılandırma türü" + +#: modules/devices/spd-decode.c:312 +msgid "Refresh" +msgstr "Yenile" + +#: modules/devices/spd-decode.c:313 modules/devices/spd-decode.c:397 +#: modules/devices/spd-decode.c:687 +msgid "Timings" +msgstr "Zamanlamalar" + +#: modules/devices/spd-decode.c:550 modules/devices/spd-decode.c:941 +#: modules/devices/spd-decode.c:983 modules/devices/x86/processor.c:717 +msgid "Voltage" +msgstr "Voltaj" + +#: modules/devices/spd-decode.c:551 modules/devices/spd-decode.c:985 +msgid "JEDEC Timings" +msgstr "JEDEC Zamanlamaları" + +#: modules/devices/spd-decode.c:663 +msgid "Ranks" +msgstr "Sıralar" + +#: modules/devices/spd-decode.c:664 +msgid "IO Pins per Chip" +msgstr "Çip başına IO Pinleri" + +#: modules/devices/spd-decode.c:665 +msgid "Die count" +msgstr "Ölü sayımı" + +#: modules/devices/spd-decode.c:666 +msgid "Thermal Sensor" +msgstr "Isı Sensörü" + +#: modules/devices/spd-decode.c:666 +msgid "Present" +msgstr "Mevcut" + +#: modules/devices/spd-decode.c:666 +msgid "Not present" +msgstr "Mevcut değil" + +#: modules/devices/spd-decode.c:667 +msgid "Supported Voltages" +msgstr "Desteklenen Voltajlar" + +#: modules/devices/spd-decode.c:671 +msgid "Supported CAS Latencies" +msgstr "Desteklenen CAS Gecikmeleri" + +#: modules/devices/spd-decode.c:708 +msgid "Invalid" +msgstr "Bilinmeyen" + +#: modules/devices/spd-decode.c:939 +msgid "XMP Profile" +msgstr "XMP Profili" + +#: modules/devices/spd-decode.c:940 modules/devices/usb.c:176 +msgid "Speed" +msgstr "Hız" + +#: modules/devices/spd-decode.c:942 +msgid "XMP Timings" +msgstr "XMP Zamanlamaları" + +#: modules/devices/spd-decode.c:984 +msgid "XMP" +msgstr "XMP" + +#: modules/devices/storage.c:46 modules/devices/storage.c:55 +msgid "NVMe Controller" +msgstr "NVMe Denetleyici" + +#: modules/devices/storage.c:138 +msgid "Read Error Rate" +msgstr "Hata Oranını Oku" + +#: modules/devices/storage.c:139 +msgid "Throughput Performance" +msgstr "Verimlilik Performansı" + +#: modules/devices/storage.c:140 +msgid "Spin-Up Time" +msgstr "Döndürme Süresi" + +#: modules/devices/storage.c:141 +msgid "Start/Stop Count" +msgstr "Sayımı Başlat/Durdur" + +#: modules/devices/storage.c:142 +msgid "Reallocated Sector Count" +msgstr "Yeniden Tahsis Edilen Sektör Sayısı" + +#: modules/devices/storage.c:143 +msgid "Read Channel Margin" +msgstr "Kanal Toleransını Oku" + +#: modules/devices/storage.c:144 +msgid "Seek Error Rate" +msgstr "Hata Oranı Ara" + +#: modules/devices/storage.c:145 +msgid "Seek Timer Performance" +msgstr "Zamanlayıcı Performansı Arayın" + +#: modules/devices/storage.c:146 modules/devices/storage.c:185 +msgid "Power-On Hours" +msgstr "Açılış Saatleri" + +#: modules/devices/storage.c:147 +msgid "Spin Retry Count" +msgstr "Tekrar deneme sayısı" + +#: modules/devices/storage.c:148 +msgid "Calibration Retry Count" +msgstr "Kalibrasyon Yeniden Deneme Sayısı" + +#: modules/devices/storage.c:149 +msgid "Power Cycle Count" +msgstr "Güç Döngüsü Sayısı" + +#: modules/devices/storage.c:150 modules/devices/storage.c:167 +msgid "Soft Read Error Rate" +msgstr "Yumuşak Okuma Hata Oranı" + +#: modules/devices/storage.c:151 +msgid "Runtime Bad Block" +msgstr "Çalışma Zamanı Hata Engelleme" + +#: modules/devices/storage.c:152 +msgid "End-to-End error" +msgstr "Uçtan Uca hata" + +#: modules/devices/storage.c:153 +msgid "Reported Uncorrectable Errors" +msgstr "Bildirilen Düzeltilemez Hatalar" + +#: modules/devices/storage.c:154 +msgid "Command Timeout" +msgstr "Komut Zaman Aşımı" + +#: modules/devices/storage.c:155 +msgid "High Fly Writes" +msgstr "Yüksek Uçan Yazılar" + +#: modules/devices/storage.c:156 +msgid "Airflow Temperature" +msgstr "Hava Akışı Sıcaklığı" + +#: modules/devices/storage.c:157 +msgid "G-sense Error Rate" +msgstr "G-sense Hata Oranı" + +#: modules/devices/storage.c:158 +msgid "Power-off Retract Count" +msgstr "Kapanma Geri Çekme Sayısı" + +#: modules/devices/storage.c:159 +msgid "Load Cycle Count" +msgstr "Yük Döngüsü Sayısı" + +#: modules/devices/storage.c:160 modules/devices/storage.c:183 +msgid "Temperature" +msgstr "Sıcaklık" + +#: modules/devices/storage.c:161 +msgid "Hardware ECC Recovered" +msgstr "Donanım ECC'si Kurtarıldı" + +#: modules/devices/storage.c:162 +msgid "Reallocation Event Count" +msgstr "Yeniden Tahsis Olay Sayısı" + +#: modules/devices/storage.c:163 +msgid "Current Pending Sector Count" +msgstr "Mevcut Bekleyen Sektör Sayısı" + +#: modules/devices/storage.c:164 +msgid "Uncorrectable Sector Count" +msgstr "Düzeltilemez Sektör Sayısı" + +#: modules/devices/storage.c:165 +msgid "UltraDMA CRC Error Count" +msgstr "UltraDMA CRC Hata Sayısı" + +#: modules/devices/storage.c:166 +msgid "Multi-Zone Error Rate" +msgstr "Çoklu Bölge Hata Oranı" + +#: modules/devices/storage.c:168 +msgid "Run Out Cancel" +msgstr "Bitti İptal" + +#: modules/devices/storage.c:169 +msgid "Flying Height" +msgstr "Uçan Yükseklik" + +#: modules/devices/storage.c:170 +msgid "Spin High Current" +msgstr "Yüksek Akım Spin" + +#: modules/devices/storage.c:171 +msgid "Spin Buzz" +msgstr "Buzz çevirin" + +#: modules/devices/storage.c:172 +msgid "Offline Seek Performance" +msgstr "Çevrimdışı Arama Performansı" + +#: modules/devices/storage.c:173 +msgid "Disk Shift" +msgstr "Disk Kaydırma" + +#: modules/devices/storage.c:174 +msgid "G-Sense Error Rate" +msgstr "G-Sense Hata Oranı" + +#: modules/devices/storage.c:175 +msgid "Loaded Hours" +msgstr "Yüklenen Saatler" + +#: modules/devices/storage.c:176 +msgid "Load/Unload Retry Count" +msgstr "Yükleme/Kaldırma Yeniden Deneme Sayısı" + +#: modules/devices/storage.c:177 +msgid "Load Friction" +msgstr "Yük Sürtünmesi" + +#: modules/devices/storage.c:178 +msgid "Load/Unload Cycle Count" +msgstr "Yükleme/Boşaltma Döngü Sayısı" + +#: modules/devices/storage.c:179 +msgid "Load-in time" +msgstr "Yükleme süresi" + +#: modules/devices/storage.c:180 +msgid "Torque Amplification Count" +msgstr "Tork Yükseltme Sayısı" + +#: modules/devices/storage.c:181 +msgid "Power-Off Retract Count" +msgstr "Kapanma Geri Çekme Sayısı" + +#: modules/devices/storage.c:182 +msgid "GMR Head Amplitude" +msgstr "GMR Baş Genliği" + +#: modules/devices/storage.c:184 +msgid "Endurance Remaining" +msgstr "Kalan Dayanıklılık" + +#: modules/devices/storage.c:186 +msgid "Good Block Rate" +msgstr "İyi Blok Oranı" + +#: modules/devices/storage.c:187 +msgid "Head Flying Hours" +msgstr "Baş Uçan Saatler" + +#: modules/devices/storage.c:188 +msgid "Read Error Retry Rate" +msgstr "Hata Yeniden Deneme Oranını Oku" + +#: modules/devices/storage.c:189 +msgid "Total LBAs Written" +msgstr "Yazılan Toplam LBA'lar" + +#: modules/devices/storage.c:190 +msgid "Total LBAs Read" +msgstr "Toplam LBA Okuma" + +#: modules/devices/storage.c:191 +msgid "Wear leveling Count" +msgstr "Aşınma Dengeleme Sayısı" + +#: modules/devices/storage.c:192 +msgid "Total Used Reserved Block Count" +msgstr "Toplam Kullanılan Ayrılmış Blok Sayısı" + +#: modules/devices/storage.c:193 +msgid "Total Program Fail Count" +msgstr "Toplam Program Başarısızlık Sayısı" + +#: modules/devices/storage.c:194 +msgid "Total Erase Fail Count" +msgstr "Toplam Silme Başarısızlık Sayısı" + +#: modules/devices/storage.c:195 +msgid "Available Reserved Space" +msgstr "Kullanılabilir Ayrılmış Alan" + +#: modules/devices/storage.c:196 +msgid "Program Fail Count" +msgstr "Program Başarısızlık Sayısı" + +#: modules/devices/storage.c:197 +msgid "Erase Fail Count" +msgstr "Silme Başarısızlık Sayısı" + +#: modules/devices/storage.c:198 +msgid "TA Counter Increased" +msgstr "TA Sayacı Arttı" + +#: modules/devices/storage.c:199 +msgid "Total Unused Reserved Block Count" +msgstr "Toplam Kullanılmayan Ayrılmış Blok Sayısı" + +#: modules/devices/storage.c:204 +msgid "" +"\n" +"[UDisks2]\n" +msgstr "" +"\n" +"[UDisks2]\n" + +#: modules/devices/storage.c:257 +msgid "Removable" +msgstr "Çıkarılabilir" + +#: modules/devices/storage.c:257 +msgid "Fixed" +msgstr "Onarıldı" + +#: modules/devices/storage.c:260 +msgid "Ejectable" +msgstr "Çıkarılabilir" + +#: modules/devices/storage.c:263 +msgid "Self-monitoring (S.M.A.R.T.)" +msgstr "Kendi kendini izleme (S.M.A.R.T.)" + +#: modules/devices/storage.c:266 modules/devices/x86/processor.c:665 +msgid "Power Management" +msgstr "Güç Yönetimi" + +#: modules/devices/storage.c:269 +msgid "Advanced Power Management" +msgstr "Gelişmiş Güç Yönetimi" + +#: modules/devices/storage.c:272 +msgid "Automatic Acoustic Management" +msgstr "Otomatik Akustik Yönetimi" + +#: modules/devices/storage.c:275 +#, c-format +msgid "" +"[Drive Information]\n" +"Model=%s\n" +msgstr "" +"[Sürücü Bilgileri]\n" +"Model=%s\n" + +#: modules/devices/storage.c:285 +#, c-format +msgid "" +"Revision=%s\n" +"Block Device=%s\n" +"Serial=%s\n" +"Size=%s\n" +"Features=%s\n" +msgstr "" +"Düzeltme =%s\n" +"Cihazı Engelle =%s\n" +"Seri =%s\n" +"Boyut =%s\n" +"Özellikler =%s\n" + +#: modules/devices/storage.c:300 +#, c-format +msgid "Rotation Rate=%d RPM\n" +msgstr "Döndürme Oranı =%d RPM\n" + +#: modules/devices/storage.c:303 +#, c-format +msgid "" +"Media=%s\n" +"Media compatibility=%s\n" +msgstr "" +"Medya =%s\n" +"Medya uyumluluğu =%s\n" + +#: modules/devices/storage.c:310 +#, c-format +msgid "Connection bus=%s\n" +msgstr "Bağlantı veri yolu =%s\n" + +#: modules/devices/storage.c:322 +msgid "WWN" +msgstr "WWN" + +#: modules/devices/storage.c:323 +msgid "EUI " +msgstr "EUI " + +#: modules/devices/storage.c:328 +msgid "WWN / EUI" +msgstr "WWN / EUI" + +#: modules/devices/storage.c:332 +#, c-format +msgid "$^$%s=[%s] %s\n" +msgstr "$^$%s=[%s] %s\n" + +#: modules/devices/storage.c:334 +msgid "IEEE OUI" +msgstr "IEEE OUI" + +#: modules/devices/storage.c:346 +msgid "" +"[Self-monitoring (S.M.A.R.T.)]\n" +"Status=%s\n" +"Bad Sectors=%" +msgstr "" +"[Öz denetim (S.M.A.R.T.)]\n" +"Durum=%s\n" +"Kötü Sektör=%" + +#: modules/devices/storage.c:352 +msgid "Failing" +msgstr "Başarısız" + +#: modules/devices/storage.c:352 +msgid "OK" +msgstr "Tamam" + +#: modules/devices/storage.c:358 +msgid "" +"[S.M.A.R.T. Attributes]\n" +"Attribute=Value / Normalized / Worst / Threshold\n" +msgstr "" +"[S.M.A.R.T. Öznitelikleri]\n" +"Nitelik=Değer / Normalleştirilmiş / En Kötü / Eşik\n" + +#: modules/devices/storage.c:381 +msgid "%" +msgid_plural "%" +msgstr[0] "%" +msgstr[1] "%" + +#: modules/devices/storage.c:419 +#, c-format +msgid "(%d) %s=%s\n" +msgstr "(%d) %s=%s\n" + +#: modules/devices/storage.c:428 +#, c-format +msgid "" +"[Partition table]\n" +"Type=%s\n" +msgstr "" +"[Bölüm tablosu]\n" +"Tür =%s\n" + +#: modules/devices/storage.c:447 +#, c-format +msgid "Partition %s=%s\n" +msgstr "Bölüm %s=%s\n" + +#: modules/devices/storage.c:496 +msgid "" +"\n" +"[SCSI Disks]\n" +msgstr "" +"\n" +"[SCSI Disks]\n" + +#: modules/devices/storage.c:567 modules/devices/storage.c:767 +#, c-format +msgid "" +"[Device Information]\n" +"Model=%s\n" +msgstr "" +"[Cihaz bilgisi]\n" +"Model=%s\n" + +#: modules/devices/storage.c:574 +#, c-format +msgid "" +"Type=%s\n" +"Revision=%s\n" +"[SCSI Controller]\n" +"Controller=scsi%d\n" +"Channel=%d\n" +"ID=%d\n" +"LUN=%d\n" +msgstr "" +"Tür=%s\n" +"Düzeltme=%s\n" +"[SCSI Denetleyicisi]\n" +"Denetleyici=scsi%d\n" +"Kanal=%d\n" +"Kimlik=%d\n" +"LUN=%d\n" + +#: modules/devices/storage.c:621 +msgid "" +"\n" +"[IDE Disks]\n" +msgstr "" +"\n" +"[IDE Disks]\n" + +#: modules/devices/storage.c:704 +#, c-format +msgid "Driver=%s\n" +msgstr "Sürücü=%s\n" + +#: modules/devices/storage.c:773 +#, c-format +msgid "" +"Device Name=hd%c\n" +"Media=%s\n" +"Cache=%dkb\n" +msgstr "" +"Aygıt Adı=hd%c\n" +"Medya=%s\n" +"Önbellek=%dkb\n" + +#: modules/devices/storage.c:783 +#, c-format +msgid "" +"[Geometry]\n" +"Physical=%s\n" +"Logical=%s\n" +msgstr "" +"[Geometri]\n" +"Fiziksel=%s\n" +"Mantıksal=%s\n" + +#: modules/devices/storage.c:793 +#, c-format +msgid "" +"[Capabilities]\n" +"%s" +msgstr "" +"[Yetenekler]\n" +"%s" + +#: modules/devices/storage.c:800 +#, c-format +msgid "" +"[Speeds]\n" +"%s" +msgstr "" +"[Hızlar]\n" +"%s" + +#: modules/devices/usb.c:137 modules/devices/usb.c:178 +msgid "Sub-class" +msgstr "Alt-Sınıf" + +#: modules/devices/usb.c:138 modules/devices/usb.c:179 modules/network.c:347 +msgid "Protocol" +msgstr "Protokol" + +#: modules/devices/usb.c:146 modules/network/net.c:451 +msgid "Mb/s" +msgstr "Mb/s" + +#: modules/devices/usb.c:174 +msgid "Max Current" +msgstr "Maksimum akım" + +#: modules/devices/usb.c:174 +msgid "mA" +msgstr "mA" + +#: modules/devices/usb.c:175 +msgid "USB Version" +msgstr "USB Sürümü" + +#: modules/devices/usb.c:180 +msgid "Device Version" +msgstr "Aygıt Sürümü" + +#: modules/devices/usb.c:222 +msgid "No USB devices found." +msgstr "USB cihazı bulunamadı." + +#: modules/devices/x86/processor.c:649 +msgid "Model Name" +msgstr "Model Adı" + +#: modules/devices/x86/processor.c:650 +msgid "Family, model, stepping" +msgstr "Aile, model, adım atmak" + +#: modules/devices/x86/processor.c:656 +msgid "Microcode Version" +msgstr "Mikrokod Sürümü" + +#: modules/devices/x86/processor.c:657 +msgid "Configuration" +msgstr "Yapılandırma" + +#: modules/devices/x86/processor.c:658 +msgid "Cache Size" +msgstr "Önbellek Boyutu" + +#: modules/devices/x86/processor.c:658 +msgid "kb" +msgstr "kb" + +#: modules/devices/x86/processor.c:666 +msgid "Bug Workarounds" +msgstr "Hata Çözümleri" + +#: modules/devices/x86/processor.c:693 +msgid "Socket Information" +msgstr "Yuva Bilgileri" + +#: modules/devices/x86/processor.c:714 +msgid "CPU Socket" +msgstr "CPU Yuvası" + +#: modules/devices/x86/processor.c:718 +msgid "External Clock" +msgstr "Harici Saat" + +#: modules/devices/x86/processor.c:719 +msgid "Max Frequency" +msgstr "En yüksek Frekans" + +#: modules/devices/x86/processor.c:750 +msgid "Package Information" +msgstr "Paket Bilgisi" + +#: modules/devices/x86/processor.c:812 +msgid "Socket:Core" +msgstr "Yuva:Çekirdek" + +#. /flag:fpu +#: modules/devices/x86/x86_data.c:48 +msgctxt "x86-flag" +msgid "Onboard FPU (floating point support)" +msgstr "Yerleşik FPU (kayan nokta desteği)" + +#. /flag:vme +#: modules/devices/x86/x86_data.c:49 +msgctxt "x86-flag" +msgid "Virtual 8086 mode enhancements" +msgstr "Sanal 8086 modu geliştirmeleri" + +#. /flag:de +#: modules/devices/x86/x86_data.c:50 +msgctxt "x86-flag" +msgid "Debugging Extensions (CR4.DE)" +msgstr "Uzantılarda Hata Ayıklama (CR4.DE)" + +#. /flag:pse +#: modules/devices/x86/x86_data.c:51 +msgctxt "x86-flag" +msgid "Page Size Extensions (4MB memory pages)" +msgstr "Sayfa Boyutu Uzantıları (4MB bellek sayfaları)" + +#. /flag:tsc +#: modules/devices/x86/x86_data.c:52 +msgctxt "x86-flag" +msgid "Time Stamp Counter (RDTSC)" +msgstr "Zaman Damgası Sayacı (RDTSC)" + +#. /flag:msr +#: modules/devices/x86/x86_data.c:53 +msgctxt "x86-flag" +msgid "Model-Specific Registers (RDMSR, WRMSR)" +msgstr "Modele Özgü Kayıtlar (RDMSR, WRMSR)" + +#. /flag:pae +#: modules/devices/x86/x86_data.c:54 +msgctxt "x86-flag" +msgid "Physical Address Extensions (support for more than 4GB of RAM)" +msgstr "Fiziksel Adres Uzantıları (4GB'dan fazla RAM desteği)" + +#. /flag:mce +#: modules/devices/x86/x86_data.c:55 +msgctxt "x86-flag" +msgid "Machine Check Exception" +msgstr "Makine Kontrolü İstisnası" + +#. /flag:cx8 +#: modules/devices/x86/x86_data.c:56 +msgctxt "x86-flag" +msgid "CMPXCHG8 instruction (64-bit compare-and-swap)" +msgstr "CMPXCHG8 talimatı (64-bit karşılaştırma ve değiştirme)" + +#. /flag:apic +#: modules/devices/x86/x86_data.c:57 +msgctxt "x86-flag" +msgid "Onboard APIC" +msgstr "Yerleşik APIC" + +#. /flag:sep +#: modules/devices/x86/x86_data.c:58 +msgctxt "x86-flag" +msgid "SYSENTER/SYSEXIT" +msgstr "SİS GİRİŞ/SİS ÇIKIŞ" + +#. /flag:mtrr +#: modules/devices/x86/x86_data.c:59 +msgctxt "x86-flag" +msgid "Memory Type Range Registers" +msgstr "Bellek Tipi Aralık Kayıtları" + +#. /flag:pge +#: modules/devices/x86/x86_data.c:60 +msgctxt "x86-flag" +msgid "Page Global Enable (global bit in PDEs and PTEs)" +msgstr "Sayfa Genel Etkinleştir (Pde'lerde ve Pte'lerde genel bit)" + +#. /flag:mca +#: modules/devices/x86/x86_data.c:61 +msgctxt "x86-flag" +msgid "Machine Check Architecture" +msgstr "Makine Kontrol Mimarisi" + +#. /flag:cmov +#: modules/devices/x86/x86_data.c:62 +msgctxt "x86-flag" +msgid "CMOV instructions (conditional move) (also FCMOV)" +msgstr "CMOV talimatları (koşullu hareket) (ayrıca FCMOV)" + +#. /flag:pat +#: modules/devices/x86/x86_data.c:63 +msgctxt "x86-flag" +msgid "Page Attribute Table" +msgstr "Sayfa Öznitelik Tablosu" + +#. /flag:pse36 +#: modules/devices/x86/x86_data.c:64 +msgctxt "x86-flag" +msgid "36-bit PSEs (huge pages)" +msgstr "36 bit PSE'ler (büyük sayfalar)" + +#. /flag:pn +#: modules/devices/x86/x86_data.c:65 +msgctxt "x86-flag" +msgid "Processor serial number" +msgstr "İşlemci seri numarası" + +#. /flag:clflush +#: modules/devices/x86/x86_data.c:66 +msgctxt "x86-flag" +msgid "Cache Line Flush instruction" +msgstr "Önbellek Hat Temizleme talimatı" + +#. /flag:dts +#: modules/devices/x86/x86_data.c:67 +msgctxt "x86-flag" +msgid "" +"Debug Store (buffer for debugging and profiling instructions), or " +"alternately: digital thermal sensor" +msgstr "" +"Hata Ayıklama Deposu (hata ayıklama ve profil oluşturma talimatları için " +"arabellek) veya alternatif olarak: dijital sıcaklık sensörü" + +#. /flag:acpi +#: modules/devices/x86/x86_data.c:68 +msgctxt "x86-flag" +msgid "ACPI via MSR (temperature monitoring and clock speed modulation)" +msgstr "MSR aracılığıyla ACPI (sıcaklık izleme ve saat hızı modülasyonu)" + +#. /flag:mmx +#: modules/devices/x86/x86_data.c:69 +msgctxt "x86-flag" +msgid "Multimedia Extensions" +msgstr "Multimedya Uzantıları" + +#. /flag:fxsr +#: modules/devices/x86/x86_data.c:70 +msgctxt "x86-flag" +msgid "FXSAVE/FXRSTOR, CR4.OSFXSR" +msgstr "FXSAVE/FXRSTOR, CR4.OSFXSR" + +#. /flag:sse +#: modules/devices/x86/x86_data.c:71 +msgctxt "x86-flag" +msgid "Intel SSE vector instructions" +msgstr "Intel SSE vektör talimatları" + +#. /flag:sse2 +#: modules/devices/x86/x86_data.c:72 +msgctxt "x86-flag" +msgid "SSE2" +msgstr "SSE2" + +#. /flag:ss +#: modules/devices/x86/x86_data.c:73 +msgctxt "x86-flag" +msgid "CPU self snoop" +msgstr "CPU kendini gözetleme" + +#. /flag:ht +#: modules/devices/x86/x86_data.c:74 +msgctxt "x86-flag" +msgid "Hyper-Threading" +msgstr "Yüksek-İş parçacığı" + +#. /flag:tm +#: modules/devices/x86/x86_data.c:75 +msgctxt "x86-flag" +msgid "Automatic clock control (Thermal Monitor)" +msgstr "Otomatik saat kontrolü (Sıcaklık Monitör)" + +#. /flag:ia64 +#: modules/devices/x86/x86_data.c:76 +msgctxt "x86-flag" +msgid "" +"Intel Itanium Architecture 64-bit (not to be confused with Intel's 64-bit " +"x86 architecture with flag x86-64 or \"AMD64\" bit indicated by flag lm)" +msgstr "" +"Intel Itanium Mimarisi 64 bit (Intel'in x86-64 işaretli 64 bit x86 " +"mimarisiyle veya işaret lm ile gösterilen “AMD64” bitiyle " +"karıştırılmamalıdır)" + +#. /flag:pbe +#: modules/devices/x86/x86_data.c:77 +msgctxt "x86-flag" +msgid "Pending Break Enable (PBE# pin) wakeup support" +msgstr "Beklemede Arayı Etkinleştirme (PBE # pin) uyandırma desteği" + +#. /flag:syscall +#: modules/devices/x86/x86_data.c:80 +msgctxt "x86-flag" +msgid "SYSCALL (Fast System Call) and SYSRET (Return From Fast System Call)" +msgstr "" +"SYSCALL (Hızlı Sistem Çağrısı) ve SYSRET (Hızlı Sistem Çağrısından Dönüş)" + +#. /flag:mp +#: modules/devices/x86/x86_data.c:81 +msgctxt "x86-flag" +msgid "Multiprocessing Capable." +msgstr "Çoklu İşlem Yeteneği." + +#. /flag:nx +#: modules/devices/x86/x86_data.c:82 +msgctxt "x86-flag" +msgid "Execute Disable" +msgstr "Devre Dışı Bırak" + +#. /flag:mmxext +#: modules/devices/x86/x86_data.c:83 +msgctxt "x86-flag" +msgid "AMD MMX extensions" +msgstr "AMD MMX uzantıları" + +#. /flag:fxsr_opt +#: modules/devices/x86/x86_data.c:84 +msgctxt "x86-flag" +msgid "FXSAVE/FXRSTOR optimizations" +msgstr "FXSAVE / FXRSTOR optimizasyonları" + +#. /flag:pdpe1gb +#: modules/devices/x86/x86_data.c:85 +msgctxt "x86-flag" +msgid "One GB pages (allows hugepagesz=1G)" +msgstr "Bir GB sayfa (büyüksayfalar = 1G'ye izin verir)" + +#. /flag:rdtscp +#: modules/devices/x86/x86_data.c:86 +msgctxt "x86-flag" +msgid "Read Time-Stamp Counter and Processor ID" +msgstr "Zaman Damgası Sayacını ve İşlemci Kimliğini Oku" + +#. /flag:lm +#: modules/devices/x86/x86_data.c:87 +msgctxt "x86-flag" +msgid "Long Mode (x86-64: amd64, also known as Intel 64, i.e. 64-bit capable)" +msgstr "" +"Uzun Mod (x86-64: amd64, Intel 64 olarak da bilinir, yani 64 bit özellikli)" + +#. /flag:3dnow +#: modules/devices/x86/x86_data.c:88 +msgctxt "x86-flag" +msgid "3DNow! (AMD vector instructions, competing with Intel's SSE1)" +msgstr "3BŞimdi! (Intel'in SSE1 ile rekabet eden AMD vektör talimatları)" + +#. /flag:3dnowext +#: modules/devices/x86/x86_data.c:89 +msgctxt "x86-flag" +msgid "AMD 3DNow! extensions" +msgstr "AMD 3BŞimdi! uzantıları" + +#. /flag:recovery +#: modules/devices/x86/x86_data.c:91 +msgctxt "x86-flag" +msgid "CPU in recovery mode" +msgstr "Kurtarma modunda CPU" + +#. /flag:longrun +#: modules/devices/x86/x86_data.c:92 +msgctxt "x86-flag" +msgid "Longrun power control" +msgstr "Uzun süreli güç kontrolü" + +#. /flag:lrti +#: modules/devices/x86/x86_data.c:93 +msgctxt "x86-flag" +msgid "LongRun table interface" +msgstr "Uzun koşu tablo arayüzü" + +#. /flag:cxmmx +#: modules/devices/x86/x86_data.c:95 +msgctxt "x86-flag" +msgid "Cyrix MMX extensions" +msgstr "Cyrix MMX uzantıları" + +#. /flag:k6_mtrr +#: modules/devices/x86/x86_data.c:96 +msgctxt "x86-flag" +msgid "AMD K6 nonstandard MTRRs" +msgstr "AMD K6 standart olmayan MTRR'ler" + +#. /flag:cyrix_arr +#: modules/devices/x86/x86_data.c:97 +msgctxt "x86-flag" +msgid "Cyrix ARRs (= MTRRs)" +msgstr "Cyrix ARRs (= MTRRs)" + +#. /flag:centaur_mcr +#: modules/devices/x86/x86_data.c:98 +msgctxt "x86-flag" +msgid "Centaur MCRs (= MTRRs)" +msgstr "Centaur MCRs (= MTRRs)" + +#. /flag:constant_tsc +#: modules/devices/x86/x86_data.c:99 +msgctxt "x86-flag" +msgid "TSC ticks at a constant rate" +msgstr "TSC sabit bir oranda geçiyor" + +#. /flag:up +#: modules/devices/x86/x86_data.c:100 +msgctxt "x86-flag" +msgid "SMP kernel running on UP" +msgstr "UP'de çalışan SMP çekirdeği" + +#. /flag:art +#: modules/devices/x86/x86_data.c:101 +msgctxt "x86-flag" +msgid "Always-Running Timer" +msgstr "Her Zaman Çalışan Zamanlayıcı" + +#. /flag:arch_perfmon +#: modules/devices/x86/x86_data.c:102 +msgctxt "x86-flag" +msgid "Intel Architectural PerfMon" +msgstr "Intel Mimari PerfMon" + +#. /flag:pebs +#: modules/devices/x86/x86_data.c:103 +msgctxt "x86-flag" +msgid "Precise-Event Based Sampling" +msgstr "Kesin Olay Bazlı Örnekleme" + +#. /flag:bts +#: modules/devices/x86/x86_data.c:104 +msgctxt "x86-flag" +msgid "Branch Trace Store" +msgstr "Şube İzleme Mağazası" + +#. /flag:rep_good +#: modules/devices/x86/x86_data.c:105 +msgctxt "x86-flag" +msgid "rep microcode works well" +msgstr "rep mikro kodu iyi çalışıyor" + +#. /flag:acc_power +#: modules/devices/x86/x86_data.c:106 +msgctxt "x86-flag" +msgid "AMD accumulated power mechanism" +msgstr "AMD birikmiş güç mekanizması" + +#. /flag:nopl +#: modules/devices/x86/x86_data.c:107 +msgctxt "x86-flag" +msgid "The NOPL (0F 1F) instructions" +msgstr "NOPL (0F 1F) talimatları" + +#. /flag:xtopology +#: modules/devices/x86/x86_data.c:108 +msgctxt "x86-flag" +msgid "cpu topology enum extensions" +msgstr "cpu topolojisi numaralandırma uzantıları" + +#. /flag:tsc_reliable +#: modules/devices/x86/x86_data.c:109 +msgctxt "x86-flag" +msgid "TSC is known to be reliable" +msgstr "TSC'nin güvenilir olduğu biliniyor" + +#. /flag:nonstop_tsc +#: modules/devices/x86/x86_data.c:110 +msgctxt "x86-flag" +msgid "TSC does not stop in C states" +msgstr "TSC, C bölgelerinde durmuyor" + +#. /flag:extd_apicid +#: modules/devices/x86/x86_data.c:111 +msgctxt "x86-flag" +msgid "has extended APICID (8 bits)" +msgstr "APICID'yi (8 bit) genişletti" + +#. /flag:amd_dcm +#: modules/devices/x86/x86_data.c:112 +msgctxt "x86-flag" +msgid "multi-node processor" +msgstr "çok düğümlü işlemci" + +#. /flag:aperfmperf +#: modules/devices/x86/x86_data.c:113 +msgctxt "x86-flag" +msgid "APERFMPERF" +msgstr "APERFMPERF" + +#. /flag:eagerfpu +#: modules/devices/x86/x86_data.c:114 +msgctxt "x86-flag" +msgid "Non lazy FPU restore" +msgstr "Tembel olmayan FPU geri yüklemesi" + +#. /flag:nonstop_tsc_s3 +#: modules/devices/x86/x86_data.c:115 +msgctxt "x86-flag" +msgid "TSC doesn't stop in S3 state" +msgstr "TSC S3 durumunda durmuyor" + +#. /flag:mce_recovery +#: modules/devices/x86/x86_data.c:116 +msgctxt "x86-flag" +msgid "CPU has recoverable machine checks" +msgstr "CPU'da kurtarılabilir makine kontrolleri var" + +#. /flag:pni +#: modules/devices/x86/x86_data.c:119 +msgctxt "x86-flag" +msgid "SSE-3 (\"Prescott New Instructions\")" +msgstr "SSE-3 (“Prescott Yeni Talimatlar”)" + +#. /flag:pclmulqdq +#: modules/devices/x86/x86_data.c:120 +msgctxt "x86-flag" +msgid "" +"Perform a Carry-Less Multiplication of Quadword instruction - accelerator " +"for GCM)" +msgstr "" +"Quadword talimatının Carry-Less Çarpımını gerçekleştirin - GCM için " +"hızlandırıcı)" + +#. /flag:dtes64 +#: modules/devices/x86/x86_data.c:121 +msgctxt "x86-flag" +msgid "64-bit Debug Store" +msgstr "64-bit Hata Ayıklama Deposu" + +#. /flag:monitor +#: modules/devices/x86/x86_data.c:122 +msgctxt "x86-flag" +msgid "Monitor/Mwait support (Intel SSE3 supplements)" +msgstr "Monitor / Mwait desteği (Intel SSE3 ekleri)" + +#. /flag:ds_cpl +#: modules/devices/x86/x86_data.c:123 +msgctxt "x86-flag" +msgid "CPL Qual. Debug Store" +msgstr "CPL Kalitesi Hata Ayıklama Deposu" + +#. /flag:vmx +#: modules/devices/x86/x86_data.c:124 +msgctxt "x86-flag" +msgid "Hardware virtualization, Intel VMX" +msgstr "Donanım sanallaştırma, Intel VMX" + +#. /flag:smx +#: modules/devices/x86/x86_data.c:125 +msgctxt "x86-flag" +msgid "Safer mode TXT (TPM support)" +msgstr "Daha güvenli mod TXT (TPM desteği)" + +#. /flag:est +#: modules/devices/x86/x86_data.c:126 +msgctxt "x86-flag" +msgid "Enhanced SpeedStep" +msgstr "Gelişmiş Hız Adımı" + +#. /flag:tm2 +#: modules/devices/x86/x86_data.c:127 +msgctxt "x86-flag" +msgid "Thermal Monitor 2" +msgstr "Sıcaklık Monitörü 2" + +#. /flag:ssse3 +#: modules/devices/x86/x86_data.c:128 +msgctxt "x86-flag" +msgid "Supplemental SSE-3" +msgstr "Tamamlayıcı SSE-3" + +#. /flag:cid +#: modules/devices/x86/x86_data.c:129 +msgctxt "x86-flag" +msgid "Context ID" +msgstr "Bağlam Kimliği" + +#. /flag:sdbg +#: modules/devices/x86/x86_data.c:130 +msgctxt "x86-flag" +msgid "silicon debug" +msgstr "silikon hata ayıklama" + +#. /flag:fma +#: modules/devices/x86/x86_data.c:131 +msgctxt "x86-flag" +msgid "Fused multiply-add" +msgstr "Kaynaşmış çarpma-ekleme" + +#. /flag:cx16 +#: modules/devices/x86/x86_data.c:132 +msgctxt "x86-flag" +msgid "CMPXCHG16B" +msgstr "CMPXCHG16B" + +#. /flag:xtpr +#: modules/devices/x86/x86_data.c:133 +msgctxt "x86-flag" +msgid "Send Task Priority Messages" +msgstr "Görev Öncelikli Mesajları Gönderin" + +#. /flag:pdcm +#: modules/devices/x86/x86_data.c:134 +msgctxt "x86-flag" +msgid "Performance Capabilities" +msgstr "Performans Yetenekleri" + +#. /flag:pcid +#: modules/devices/x86/x86_data.c:135 +msgctxt "x86-flag" +msgid "Process Context Identifiers" +msgstr "İşlem Bağlam Tanımlayıcıları" + +#. /flag:dca +#: modules/devices/x86/x86_data.c:136 +msgctxt "x86-flag" +msgid "Direct Cache Access" +msgstr "Doğrudan Önbellek Erişimi" + +#. /flag:sse4_1 +#: modules/devices/x86/x86_data.c:137 +msgctxt "x86-flag" +msgid "SSE-4.1" +msgstr "SSE-4.1" + +#. /flag:sse4_2 +#: modules/devices/x86/x86_data.c:138 +msgctxt "x86-flag" +msgid "SSE-4.2" +msgstr "SSE-4.2" + +#. /flag:x2apic +#: modules/devices/x86/x86_data.c:139 +msgctxt "x86-flag" +msgid "x2APIC" +msgstr "x2APIC" + +#. /flag:movbe +#: modules/devices/x86/x86_data.c:140 +msgctxt "x86-flag" +msgid "Move Data After Swapping Bytes instruction" +msgstr "Bayt Değiştirildikten Sonra Verileri Taşı talimatı" + +#. /flag:popcnt +#: modules/devices/x86/x86_data.c:141 +msgctxt "x86-flag" +msgid "" +"Return the Count of Number of Bits Set to 1 instruction (Hamming weight, i." +"e. bit count)" +msgstr "" +"1 komuta ayarlanmış Bit Sayısı Sayısını döndür (Hamming ağırlığı, yani bit " +"sayısı)" + +#. /flag:tsc_deadline_timer +#: modules/devices/x86/x86_data.c:142 +msgctxt "x86-flag" +msgid "Tsc deadline timer" +msgstr "Tsc son tarih zamanlayıcı" + +#. /flag:aes/aes-ni +#: modules/devices/x86/x86_data.c:143 +msgctxt "x86-flag" +msgid "Advanced Encryption Standard (New Instructions)" +msgstr "Gelişmiş Şifreleme Standardı (Yeni Talimatlar)" + +#. /flag:xsave +#: modules/devices/x86/x86_data.c:144 +msgctxt "x86-flag" +msgid "Save Processor Extended States: also provides XGETBY,XRSTOR,XSETBY" +msgstr "" +"İşlemci Genişletilmiş Durumlarını Kaydet: ayrıca XGETBY, XRSTOR, XSETBY " +"sağlar" + +#. /flag:avx +#: modules/devices/x86/x86_data.c:145 +msgctxt "x86-flag" +msgid "Advanced Vector Extensions" +msgstr "Gelişmiş Vektör Uzantıları" + +#. /flag:f16c +#: modules/devices/x86/x86_data.c:146 +msgctxt "x86-flag" +msgid "16-bit fp conversions (CVT16)" +msgstr "16 bit fp dönüşümleri (CVT16)" + +#. /flag:rdrand +#: modules/devices/x86/x86_data.c:147 +msgctxt "x86-flag" +msgid "Read Random Number from hardware random number generator instruction" +msgstr "Donanım rasgele sayı üreteci talimatından Rasgele Sayı okuyun" + +#. /flag:hypervisor +#: modules/devices/x86/x86_data.c:148 +msgctxt "x86-flag" +msgid "Running on a hypervisor" +msgstr "Bir hiper yönetici üzerinde çalıştırma" + +#. /Cyrix/Centaur-defined CPU features, CPUID level 0xC0000001 +#. /flag:rng +#: modules/devices/x86/x86_data.c:150 +msgctxt "x86-flag" +msgid "Random Number Generator present (xstore)" +msgstr "Rastgele Sayı Üreticisi mevcut (xstore)" + +#. /flag:rng_en +#: modules/devices/x86/x86_data.c:151 +msgctxt "x86-flag" +msgid "Random Number Generator enabled" +msgstr "Rastgele Sayı Üreticisi etkinleştirildi" + +#. /flag:ace +#: modules/devices/x86/x86_data.c:152 +msgctxt "x86-flag" +msgid "on-CPU crypto (xcrypt)" +msgstr "CPU üzerinde kripto (xcrypt)" + +#. /flag:ace_en +#: modules/devices/x86/x86_data.c:153 +msgctxt "x86-flag" +msgid "on-CPU crypto enabled" +msgstr "CPU üzerinde kripto etkin" + +#. /flag:ace2 +#: modules/devices/x86/x86_data.c:154 +msgctxt "x86-flag" +msgid "Advanced Cryptography Engine v2" +msgstr "Gelişmiş Şifreleme Motoru v2" + +#. /flag:ace2_en +#: modules/devices/x86/x86_data.c:155 +msgctxt "x86-flag" +msgid "ACE v2 enabled" +msgstr "ACE v2 etkin" + +#. /flag:phe +#: modules/devices/x86/x86_data.c:156 +msgctxt "x86-flag" +msgid "PadLock Hash Engine" +msgstr "PadLock Karma Motoru" + +#. /flag:phe_en +#: modules/devices/x86/x86_data.c:157 +msgctxt "x86-flag" +msgid "PHE enabled" +msgstr "PHE etkin" + +#. /flag:pmm +#: modules/devices/x86/x86_data.c:158 +msgctxt "x86-flag" +msgid "PadLock Montgomery Multiplier" +msgstr "PadLock Montgomery Çarpanı" + +#. /flag:pmm_en +#: modules/devices/x86/x86_data.c:159 +msgctxt "x86-flag" +msgid "PMM enabled" +msgstr "PMM etkin" + +#. /flag:lahf_lm +#: modules/devices/x86/x86_data.c:161 +msgctxt "x86-flag" +msgid "Load AH from Flags (LAHF) and Store AH into Flags (SAHF) in long mode" +msgstr "" +"AH'yi Flags'den (LAHF) yükleyin ve AH'yi Flags'e (SAHF) uzun modda kaydedin" + +#. /flag:cmp_legacy +#: modules/devices/x86/x86_data.c:162 +msgctxt "x86-flag" +msgid "If yes HyperThreading not valid" +msgstr "Evetse, HyperThreading geçerli değil" + +#. /flag:svm +#: modules/devices/x86/x86_data.c:163 +msgctxt "x86-flag" +msgid "\"Secure virtual machine\": AMD-V" +msgstr "“Güvenli sanal makine“: AMD-V" + +#. /flag:extapic +#: modules/devices/x86/x86_data.c:164 +msgctxt "x86-flag" +msgid "Extended APIC space" +msgstr "Genişletilmiş APIC alanı" + +#. /flag:cr8_legacy +#: modules/devices/x86/x86_data.c:165 +msgctxt "x86-flag" +msgid "CR8 in 32-bit mode" +msgstr "32 bit modunda CR8" + +#. /flag:abm +#: modules/devices/x86/x86_data.c:166 +msgctxt "x86-flag" +msgid "Advanced Bit Manipulation" +msgstr "Gelişmiş Bit Manipülasyonu" + +#. /flag:sse4a +#: modules/devices/x86/x86_data.c:167 +msgctxt "x86-flag" +msgid "SSE-4A" +msgstr "SSE-4A" + +#. /flag:misalignsse +#: modules/devices/x86/x86_data.c:168 +msgctxt "x86-flag" +msgid "" +"indicates if a general-protection exception (#GP) is generated when some " +"legacy SSE instructions operate on unaligned data. Also depends on CR0 and " +"Alignment Checking bit" +msgstr "" +"bazı eski SSE talimatları hizalanmamış veriler üzerinde çalışırken bir genel " +"koruma istisnasının (#GP) oluşturulup oluşturulmadığını belirtir. Ayrıca CR0 " +"ve Hizalama Kontrol bitine bağlıdır" + +#. /flag:3dnowprefetch +#: modules/devices/x86/x86_data.c:169 +msgctxt "x86-flag" +msgid "3DNow prefetch instructions" +msgstr "3BŞimdi önceden getirme talimatları" + +#. /flag:osvw +#: modules/devices/x86/x86_data.c:170 +msgctxt "x86-flag" +msgid "" +"indicates OS Visible Workaround, which allows the OS to work around " +"processor errata." +msgstr "" +"işletim Sisteminin işlemci hataları etrafında çalışmasına izin veren İşletim " +"Sistemi Görünür Geçici Çözümünü belirtir." + +#. /flag:ibs +#: modules/devices/x86/x86_data.c:171 +msgctxt "x86-flag" +msgid "Instruction Based Sampling" +msgstr "Talimat Tabanlı Örnekleme" + +#. /flag:xop +#: modules/devices/x86/x86_data.c:172 +msgctxt "x86-flag" +msgid "extended AVX instructions" +msgstr "genişletilmiş AVX talimatları" + +#. /flag:skinit +#: modules/devices/x86/x86_data.c:173 +msgctxt "x86-flag" +msgid "SKINIT/STGI instructions" +msgstr "SKINIT / STGI talimatları" + +#. /flag:wdt +#: modules/devices/x86/x86_data.c:174 +msgctxt "x86-flag" +msgid "Watchdog timer" +msgstr "Watchdog zamanlayıcı" + +#. /flag:lwp +#: modules/devices/x86/x86_data.c:175 +msgctxt "x86-flag" +msgid "Light Weight Profiling" +msgstr "Hafif Profilleme" + +#. /flag:fma4 +#: modules/devices/x86/x86_data.c:176 +msgctxt "x86-flag" +msgid "4 operands MAC instructions" +msgstr "4 işlenen MAC talimatları" + +#. /flag:tce +#: modules/devices/x86/x86_data.c:177 +msgctxt "x86-flag" +msgid "translation cache extension" +msgstr "çeviri önbellek uzantısı" + +#. /flag:nodeid_msr +#: modules/devices/x86/x86_data.c:178 +msgctxt "x86-flag" +msgid "NodeId MSR" +msgstr "NodeId MSR" + +#. /flag:tbm +#: modules/devices/x86/x86_data.c:179 +msgctxt "x86-flag" +msgid "Trailing Bit Manipulation" +msgstr "Sondaki Bit Manipülasyonu" + +#. /flag:topoext +#: modules/devices/x86/x86_data.c:180 +msgctxt "x86-flag" +msgid "Topology Extensions CPUID leafs" +msgstr "Topoloji Uzantıları CPUID yaprakları" + +#. /flag:perfctr_core +#: modules/devices/x86/x86_data.c:181 +msgctxt "x86-flag" +msgid "Core Performance Counter Extensions" +msgstr "Çekirdek Performans Sayacı Uzantıları" + +#. /flag:perfctr_nb +#: modules/devices/x86/x86_data.c:182 +msgctxt "x86-flag" +msgid "NB Performance Counter Extensions" +msgstr "NB Performans Sayacı Uzantıları" + +#. /flag:bpext +#: modules/devices/x86/x86_data.c:183 +msgctxt "x86-flag" +msgid "data breakpoint extension" +msgstr "veri kesme noktası uzantısı" + +#. /flag:ptsc +#: modules/devices/x86/x86_data.c:184 +msgctxt "x86-flag" +msgid "performance time-stamp counter" +msgstr "performans zaman damgası sayacı" + +#. /flag:perfctr_l2 +#: modules/devices/x86/x86_data.c:185 +msgctxt "x86-flag" +msgid "L2 Performance Counter Extensions" +msgstr "L2 Performans Sayacı Uzantıları" + +#. /flag:mwaitx +#: modules/devices/x86/x86_data.c:186 +msgctxt "x86-flag" +msgid "MWAIT extension (MONITORX/MWAITX)" +msgstr "MWAIT uzantısı (MONITORX / MWAITX)" + +#. /flag:cpb +#: modules/devices/x86/x86_data.c:188 +msgctxt "x86-flag" +msgid "AMD Core Performance Boost" +msgstr "AMD Çekirdek Performans Artışı" + +#. /flag:epb +#: modules/devices/x86/x86_data.c:189 +msgctxt "x86-flag" +msgid "IA32_ENERGY_PERF_BIAS support" +msgstr "IA32_ENERJİ_PERFORMANS_EĞİLİMİ desteği" + +#. /flag:hw_pstate +#: modules/devices/x86/x86_data.c:190 +msgctxt "x86-flag" +msgid "AMD HW-PState" +msgstr "AMD HW-PState" + +#. /flag:proc_feedback +#: modules/devices/x86/x86_data.c:191 +msgctxt "x86-flag" +msgid "AMD ProcFeedbackInterface" +msgstr "AMD Pro Geri Bildirim Arayüzü" + +#. /flag:intel_pt +#: modules/devices/x86/x86_data.c:192 +msgctxt "x86-flag" +msgid "Intel Processor Tracing" +msgstr "Intel İşlemci İzleme" + +#. /flag:tpr_shadow +#: modules/devices/x86/x86_data.c:194 +msgctxt "x86-flag" +msgid "Intel TPR Shadow" +msgstr "Intel TPR Gölgesi" + +#. /flag:vnmi +#: modules/devices/x86/x86_data.c:195 +msgctxt "x86-flag" +msgid "Intel Virtual NMI" +msgstr "Intel Sanal NMI" + +#. /flag:flexpriority +#: modules/devices/x86/x86_data.c:196 +msgctxt "x86-flag" +msgid "Intel FlexPriority" +msgstr "Intel Flex Önceliği" + +#. /flag:ept +#: modules/devices/x86/x86_data.c:197 +msgctxt "x86-flag" +msgid "Intel Extended Page Table" +msgstr "Intel Genişletilmiş Sayfa Tablosu" + +#. /flag:vpid +#: modules/devices/x86/x86_data.c:198 +msgctxt "x86-flag" +msgid "Intel Virtual Processor ID" +msgstr "Intel Sanal İşlemci Kimliği" + +#. /flag:vmmcall +#: modules/devices/x86/x86_data.c:199 +msgctxt "x86-flag" +msgid "prefer VMMCALL to VMCALL" +msgstr "VMMCALL'u VMCALL'a tercih edin" + +#. /flag:fsgsbase +#: modules/devices/x86/x86_data.c:201 +msgctxt "x86-flag" +msgid "{RD/WR}{FS/GS}BASE instructions" +msgstr "{RD/WR}{FS/GS}TABAN talimatları" + +#. /flag:tsc_adjust +#: modules/devices/x86/x86_data.c:202 +msgctxt "x86-flag" +msgid "TSC adjustment MSR" +msgstr "TSC ayarı MSR" + +#. /flag:bmi1 +#: modules/devices/x86/x86_data.c:203 +msgctxt "x86-flag" +msgid "1st group bit manipulation extensions" +msgstr "1. grup bit manipülasyon uzantıları" + +#. /flag:hle +#: modules/devices/x86/x86_data.c:204 +msgctxt "x86-flag" +msgid "Hardware Lock Elision" +msgstr "Donanım Kilidi Elision" + +#. /flag:avx2 +#: modules/devices/x86/x86_data.c:205 +msgctxt "x86-flag" +msgid "AVX2 instructions" +msgstr "AVX2 talimatları" + +#. /flag:smep +#: modules/devices/x86/x86_data.c:206 +msgctxt "x86-flag" +msgid "Supervisor Mode Execution Protection" +msgstr "Süpervizör Modu Yürütme Koruması" + +#. /flag:bmi2 +#: modules/devices/x86/x86_data.c:207 +msgctxt "x86-flag" +msgid "2nd group bit manipulation extensions" +msgstr "2. grup bit işleme uzantıları" + +#. /flag:erms +#: modules/devices/x86/x86_data.c:208 +msgctxt "x86-flag" +msgid "Enhanced REP MOVSB/STOSB" +msgstr "Gelişmiş REP MOVSB / STOSB" + +#. /flag:invpcid +#: modules/devices/x86/x86_data.c:209 +msgctxt "x86-flag" +msgid "Invalidate Processor Context ID" +msgstr "İşlemci Bağlam Kimliğini Geçersiz Kıl" + +#. /flag:rtm +#: modules/devices/x86/x86_data.c:210 +msgctxt "x86-flag" +msgid "Restricted Transactional Memory" +msgstr "Sınırlandırılmış İşlem Belleği" + +#. /flag:cqm +#: modules/devices/x86/x86_data.c:211 +msgctxt "x86-flag" +msgid "Cache QoS Monitoring" +msgstr "Önbellek QoS İzleme" + +#. /flag:mpx +#: modules/devices/x86/x86_data.c:212 +msgctxt "x86-flag" +msgid "Memory Protection Extension" +msgstr "Bellek Koruma Uzantısı" + +#. /flag:avx512f +#: modules/devices/x86/x86_data.c:213 +msgctxt "x86-flag" +msgid "AVX-512 foundation" +msgstr "AVX-512 temeli" + +#. /flag:avx512dq +#: modules/devices/x86/x86_data.c:214 +msgctxt "x86-flag" +msgid "AVX-512 Double/Quad instructions" +msgstr "AVX-512 Çift / Dörtlü talimatlar" + +#. /flag:rdseed +#: modules/devices/x86/x86_data.c:215 +msgctxt "x86-flag" +msgid "The RDSEED instruction" +msgstr "RDSEED talimatı" + +#. /flag:adx +#: modules/devices/x86/x86_data.c:216 +msgctxt "x86-flag" +msgid "The ADCX and ADOX instructions" +msgstr "ADCX ve ADOX talimatları" + +#. /flag:smap +#: modules/devices/x86/x86_data.c:217 +msgctxt "x86-flag" +msgid "Supervisor Mode Access Prevention" +msgstr "Gözetmen Modu Erişim Engelleme" + +#. /flag:clflushopt +#: modules/devices/x86/x86_data.c:218 +msgctxt "x86-flag" +msgid "CLFLUSHOPT instruction" +msgstr "CLFLUSHOPT talimatı" + +#. /flag:clwb +#: modules/devices/x86/x86_data.c:219 +msgctxt "x86-flag" +msgid "CLWB instruction" +msgstr "CLWB talimatı" + +#. /flag:avx512pf +#: modules/devices/x86/x86_data.c:220 +msgctxt "x86-flag" +msgid "AVX-512 Prefetch" +msgstr "AVX-512 Ön Getirme" + +#. /flag:avx512er +#: modules/devices/x86/x86_data.c:221 +msgctxt "x86-flag" +msgid "AVX-512 Exponential and Reciprocal" +msgstr "AVX-512 Üstel ve Karşılıklı" + +#. /flag:avx512cd +#: modules/devices/x86/x86_data.c:222 +msgctxt "x86-flag" +msgid "AVX-512 Conflict Detection" +msgstr "AVX-512 Çakışma Algılama" + +#. /flag:sha_ni +#: modules/devices/x86/x86_data.c:223 +msgctxt "x86-flag" +msgid "SHA1/SHA256 Instruction Extensions" +msgstr "SHA1 / SHA256 Talimat Uzantıları" + +#. /flag:avx512bw +#: modules/devices/x86/x86_data.c:224 +msgctxt "x86-flag" +msgid "AVX-512 Byte/Word instructions" +msgstr "AVX-512 Bayt / Kelime talimatları" + +#. /flag:avx512vl +#: modules/devices/x86/x86_data.c:225 +msgctxt "x86-flag" +msgid "AVX-512 128/256 Vector Length extensions" +msgstr "AVX-512 128/256 Vektör Uzunluğu uzantıları" + +#. /flag:xsaveopt +#: modules/devices/x86/x86_data.c:227 +msgctxt "x86-flag" +msgid "Optimized XSAVE" +msgstr "Optimize edilmiş XSAVE" + +#. /flag:xsavec +#: modules/devices/x86/x86_data.c:228 +msgctxt "x86-flag" +msgid "XSAVEC" +msgstr "XSAVEC" + +#. /flag:xgetbv1 +#: modules/devices/x86/x86_data.c:229 +msgctxt "x86-flag" +msgid "XGETBV with ECX = 1" +msgstr "ECX = 1 ile XGETBV" + +#. /flag:xsaves +#: modules/devices/x86/x86_data.c:230 +msgctxt "x86-flag" +msgid "XSAVES/XRSTORS" +msgstr "XSAVES/XRSTORS" + +#. /flag:cqm_llc +#: modules/devices/x86/x86_data.c:232 +msgctxt "x86-flag" +msgid "LLC QoS" +msgstr "LLC QoS" + +#. /flag:cqm_occup_llc +#: modules/devices/x86/x86_data.c:234 +msgctxt "x86-flag" +msgid "LLC occupancy monitoring" +msgstr "LLC doluluk izleme" + +#. /flag:cqm_mbm_total +#: modules/devices/x86/x86_data.c:235 +msgctxt "x86-flag" +msgid "LLC total MBM monitoring" +msgstr "LLC toplam MBM izleme" + +#. /flag:cqm_mbm_local +#: modules/devices/x86/x86_data.c:236 +msgctxt "x86-flag" +msgid "LLC local MBM monitoring" +msgstr "LLC yerel MBM izleme" + +#. /flag:clzero +#: modules/devices/x86/x86_data.c:238 +msgctxt "x86-flag" +msgid "CLZERO instruction" +msgstr "CLZERO talimatı" + +#. /flag:irperf +#: modules/devices/x86/x86_data.c:239 +msgctxt "x86-flag" +msgid "instructions retired performance counter" +msgstr "talimatlar emekli performans sayacı" + +#. /flag:dtherm +#: modules/devices/x86/x86_data.c:241 +msgctxt "x86-flag" +msgid "digital thermal sensor" +msgstr "dijital sıcaklık sensörü" + +#. /flag:ida +#: modules/devices/x86/x86_data.c:242 +msgctxt "x86-flag" +msgid "Intel Dynamic Acceleration" +msgstr "Intel Dinamik Hızlandırma" + +#. /flag:arat +#: modules/devices/x86/x86_data.c:243 +msgctxt "x86-flag" +msgid "Always Running APIC Timer" +msgstr "Daima Çalışan APIC Zamanlayıcı" + +#. /flag:pln +#: modules/devices/x86/x86_data.c:244 +msgctxt "x86-flag" +msgid "Intel Power Limit Notification" +msgstr "Intel Güç Sınırı Bildirimi" + +#. /flag:pts +#: modules/devices/x86/x86_data.c:245 +msgctxt "x86-flag" +msgid "Intel Package Thermal Status" +msgstr "Intel Paket Sıcaklık Durumu" + +#. /flag:hwp +#: modules/devices/x86/x86_data.c:246 +msgctxt "x86-flag" +msgid "Intel Hardware P-states" +msgstr "Intel Donanım P durumları" + +#. /flag:hwp_notify +#: modules/devices/x86/x86_data.c:247 +msgctxt "x86-flag" +msgid "HWP notification" +msgstr "HWP bildirimi" + +#. /flag:hwp_act_window +#: modules/devices/x86/x86_data.c:248 +msgctxt "x86-flag" +msgid "HWP Activity Window" +msgstr "HWP Etkinlik Penceresi" + +#. /flag:hwp_epp +#: modules/devices/x86/x86_data.c:249 +msgctxt "x86-flag" +msgid "HWP Energy Performance Preference" +msgstr "HWP Enerji Performans Tercihi" + +#. /flag:hwp_pkg_req +#: modules/devices/x86/x86_data.c:250 +msgctxt "x86-flag" +msgid "HWP package-level request" +msgstr "HWP paket düzeyinde istek" + +#. /flag:npt +#: modules/devices/x86/x86_data.c:252 +msgctxt "x86-flag" +msgid "AMD Nested Page Table support" +msgstr "AMD İç İçe Sayfa Tablosu desteği" + +#. /flag:lbrv +#: modules/devices/x86/x86_data.c:253 +msgctxt "x86-flag" +msgid "AMD LBR Virtualization support" +msgstr "AMD LBR Sanallaştırma desteği" + +#. /flag:svm_lock +#: modules/devices/x86/x86_data.c:254 +msgctxt "x86-flag" +msgid "AMD SVM locking MSR" +msgstr "AMD SVM kilitleme MSR" + +#. /flag:nrip_save +#: modules/devices/x86/x86_data.c:255 +msgctxt "x86-flag" +msgid "AMD SVM next_rip save" +msgstr "AMD SVM sonraki_rip kaydetme" + +#. /flag:tsc_scale +#: modules/devices/x86/x86_data.c:256 +msgctxt "x86-flag" +msgid "AMD TSC scaling support" +msgstr "AMD TSC ölçeklendirme desteği" + +#. /flag:vmcb_clean +#: modules/devices/x86/x86_data.c:257 +msgctxt "x86-flag" +msgid "AMD VMCB clean bits support" +msgstr "AMD VMCB temiz bit desteği" + +#. /flag:flushbyasid +#: modules/devices/x86/x86_data.c:258 +msgctxt "x86-flag" +msgid "AMD flush-by-ASID support" +msgstr "AMD flush-by-ASID desteği" + +#. /flag:decodeassists +#: modules/devices/x86/x86_data.c:259 +msgctxt "x86-flag" +msgid "AMD Decode Assists support" +msgstr "AMD Decode Assists desteği" + +#. /flag:pausefilter +#: modules/devices/x86/x86_data.c:260 +msgctxt "x86-flag" +msgid "AMD filtered pause intercept" +msgstr "AMD filtreli duraklatma engellemesi" + +#. /flag:pfthreshold +#: modules/devices/x86/x86_data.c:261 +msgctxt "x86-flag" +msgid "AMD pause filter threshold" +msgstr "AMD duraklatma filtresi eşiği" + +#. /flag:avic +#: modules/devices/x86/x86_data.c:262 +msgctxt "x86-flag" +msgid "Virtual Interrupt Controller" +msgstr "Sanal Kesme Denetleyicisi" + +#. /flag:pku +#: modules/devices/x86/x86_data.c:264 +msgctxt "x86-flag" +msgid "Protection Keys for Userspace" +msgstr "Kullanıcı Alanı için Koruma Anahtarları" + +#. /flag:ospke +#: modules/devices/x86/x86_data.c:265 +msgctxt "x86-flag" +msgid "OS Protection Keys Enable" +msgstr "İşletim Sistemi Koruma Anahtarlarını Etkinleştir" + +#. /flag:overflow_recov +#: modules/devices/x86/x86_data.c:267 +msgctxt "x86-flag" +msgid "MCA overflow recovery support" +msgstr "MCA taşma kurtarma desteği" + +#. /flag:succor +#: modules/devices/x86/x86_data.c:268 +msgctxt "x86-flag" +msgid "uncorrectable error containment and recovery" +msgstr "düzeltilemez hata önleme ve kurtarma" + +#. /flag:smca +#: modules/devices/x86/x86_data.c:269 +msgctxt "x86-flag" +msgid "Scalable MCA" +msgstr "Ölçeklenebilir MCA" + +#. /bug:f00f +#: modules/devices/x86/x86_data.c:272 +msgctxt "x86-flag" +msgid "Intel F00F bug" +msgstr "Intel F00F hatası" + +#. /bug:fdiv +#: modules/devices/x86/x86_data.c:273 +msgctxt "x86-flag" +msgid "FPU FDIV" +msgstr "FPU FDIV" + +#. /bug:coma +#: modules/devices/x86/x86_data.c:274 +msgctxt "x86-flag" +msgid "Cyrix 6x86 coma" +msgstr "Cyrix 6x86 coma" + +#. /bug:tlb_mmatch +#: modules/devices/x86/x86_data.c:275 +msgctxt "x86-flag" +msgid "AMD Erratum 383" +msgstr "AMD Erratum 383" + +#. /bug:apic_c1e +#. /bug:amd_e400 +#: modules/devices/x86/x86_data.c:276 modules/devices/x86/x86_data.c:285 +msgctxt "x86-flag" +msgid "AMD Erratum 400" +msgstr "AMD Erratum 400" + +#. /bug:11ap +#: modules/devices/x86/x86_data.c:277 +msgctxt "x86-flag" +msgid "Bad local APIC aka 11AP" +msgstr "Kötü yerel APIC, 11AP" + +#. /bug:fxsave_leak +#: modules/devices/x86/x86_data.c:278 +msgctxt "x86-flag" +msgid "FXSAVE leaks FOP/FIP/FOP" +msgstr "FXSAVE FOP/FIP/FOP sızdırıyor" + +#. /bug:clflush_monitor +#: modules/devices/x86/x86_data.c:279 +msgctxt "x86-flag" +msgid "AAI65, CLFLUSH required before MONITOR" +msgstr "AAI65, CLFLUSH MONITOR'dan önce gereklidir" + +#. /bug:sysret_ss_attrs +#: modules/devices/x86/x86_data.c:280 +msgctxt "x86-flag" +msgid "SYSRET doesn't fix up SS attrs" +msgstr "SYSRET, SS özniteliklerini düzeltmiyor" + +#. /bug:espfix +#: modules/devices/x86/x86_data.c:281 +msgctxt "x86-flag" +msgid "IRET to 16-bit SS corrupts ESP/RSP high bits" +msgstr "IRET to 16-bit SS, ESP/RSP yüksek bitlerini bozar" + +#. /bug:null_seg +#: modules/devices/x86/x86_data.c:282 +msgctxt "x86-flag" +msgid "Nulling a selector preserves the base" +msgstr "Bir seçiciyi geçersiz kılmak, tabanı korur" + +#. /bug:swapgs_fence +#: modules/devices/x86/x86_data.c:283 +msgctxt "x86-flag" +msgid "SWAPGS without input dep on GS" +msgstr "GS üzerinde giriş deposu olmayan SWAPGS" + +#. /bug:monitor +#: modules/devices/x86/x86_data.c:284 +msgctxt "x86-flag" +msgid "IPI required to wake up remote CPU" +msgstr "Uzak CPU'yu uyandırmak için IPI gerekli" + +#. /bug:cpu_insecure & bug:cpu_meltdown +#: modules/devices/x86/x86_data.c:286 modules/devices/x86/x86_data.c:287 +msgctxt "x86-flag" +msgid "" +"CPU is affected by meltdown attack and needs kernel page table isolation" +msgstr "" +"CPU erime saldırısından etkilenir ve çekirdek sayfa tablosu izolasyonuna " +"ihtiyaç duyar" + +#. /bug:spectre_v1 +#: modules/devices/x86/x86_data.c:288 +msgctxt "x86-flag" +msgid "CPU is affected by Spectre variant 1 attack with conditional branches" +msgstr "CPU, koşullu dallara sahip Hayalet varyant 1 saldırısından etkilenir" + +#. /bug:spectre_v2 +#: modules/devices/x86/x86_data.c:289 +msgctxt "x86-flag" +msgid "CPU is affected by Spectre variant 2 attack with indirect branches" +msgstr "CPU, dolaylı dallarla Hayalet varyant 2 saldırısından etkilenir" + +#. /bug:spec_store_bypass +#: modules/devices/x86/x86_data.c:290 +msgctxt "x86-flag" +msgid "CPU is affected by speculative store bypass attack" +msgstr "CPU, spekülatif mağaza baypas saldırısından etkilenir" + +#. /bug:l1tf +#: modules/devices/x86/x86_data.c:291 +msgctxt "x86-flag" +msgid "CPU is affected by L1 Terminal Fault" +msgstr "CPU, L1 Terminal Arızasından etkilenir" + +#. /x86/kernel/cpu/powerflags.h +#. /flag:pm:ts +#: modules/devices/x86/x86_data.c:294 +msgctxt "x86-flag" +msgid "temperature sensor" +msgstr "sıcaklık sensörü" + +#. /flag:pm:fid +#: modules/devices/x86/x86_data.c:295 +msgctxt "x86-flag" +msgid "frequency id control" +msgstr "frekans kimliği kontrolü" + +#. /flag:pm:vid +#: modules/devices/x86/x86_data.c:296 +msgctxt "x86-flag" +msgid "voltage id control" +msgstr "voltaj kimliği kontrolü" + +#. /flag:pm:ttp +#: modules/devices/x86/x86_data.c:297 +msgctxt "x86-flag" +msgid "thermal trip" +msgstr "ısı gezisi" + +#. /flag:pm:tm +#: modules/devices/x86/x86_data.c:298 +msgctxt "x86-flag" +msgid "hardware thermal control" +msgstr "donanım ısı kontrolü" + +#. /flag:pm:stc +#: modules/devices/x86/x86_data.c:299 +msgctxt "x86-flag" +msgid "software thermal control" +msgstr "yazılım ısı kontrolü" + +#. /flag:pm:100mhzsteps +#: modules/devices/x86/x86_data.c:300 +msgctxt "x86-flag" +msgid "100 MHz multiplier control" +msgstr "100 MHz çarpan kontrolü" + +#. /flag:pm:hwpstate +#: modules/devices/x86/x86_data.c:301 +msgctxt "x86-flag" +msgid "hardware P-state control" +msgstr "donanım P durumu kontrolü" + +#. /flag:pm:cpb +#: modules/devices/x86/x86_data.c:302 +msgctxt "x86-flag" +msgid "core performance boost" +msgstr "çekirdek performans artışı" + +#. /flag:pm:eff_freq_ro +#: modules/devices/x86/x86_data.c:303 +msgctxt "x86-flag" +msgid "Readonly aperf/mperf" +msgstr "Salt okunur aperf/mperf" + +#. /flag:pm:proc_feedback +#: modules/devices/x86/x86_data.c:304 +msgctxt "x86-flag" +msgid "processor feedback interface" +msgstr "işlemci geri bildirim arayüzü" + +#. /flag:pm:acc_power +#: modules/devices/x86/x86_data.c:305 +msgctxt "x86-flag" +msgid "accumulated power mechanism" +msgstr "birikmiş güç mekanizması" + +#: modules/network.c:61 +msgid "Interfaces" +msgstr "Arayüzler" + +#: modules/network.c:62 +msgid "IP Connections" +msgstr "IP Bağlantıları" + +#: modules/network.c:63 +msgid "Routing Table" +msgstr "Yönlendirme Tablosu" + +#: modules/network.c:64 modules/network.c:309 +msgid "ARP Table" +msgstr "ARP Tablosu" + +#: modules/network.c:65 +msgid "DNS Servers" +msgstr "DNS sunucuları" + +#: modules/network.c:66 +msgid "Statistics" +msgstr "İstatistikler" + +#: modules/network.c:67 +msgid "Shared Directories" +msgstr "Paylaşılan Dizinler" + +#: modules/network.c:310 modules/network.c:332 modules/network.c:363 +#: modules/network/net.c:472 +msgid "IP Address" +msgstr "IP Adresi" + +#: modules/network.c:310 +msgid "MAC Address" +msgstr "MAC Adresi" + +#: modules/network.c:319 +msgid "SAMBA" +msgstr "SAMBA" + +#: modules/network.c:320 +msgid "NFS" +msgstr "NFS" + +#: modules/network.c:331 +msgid "Name Servers" +msgstr "İsim Sunucuları" + +#: modules/network.c:346 +msgid "Connections" +msgstr "Bağlantılar" + +#: modules/network.c:347 +msgid "Local Address" +msgstr "Yerel Adres" + +#: modules/network.c:347 +msgid "Foreign Address" +msgstr "Yabancı Adres" + +#: modules/network.c:347 +msgid "State" +msgstr "Durum" + +#: modules/network.c:363 +msgid "Sent" +msgstr "Gönderilen" + +#: modules/network.c:363 +msgid "Received" +msgstr "Alınan" + +#: modules/network.c:379 +msgid "IP routing table" +msgstr "IP yönlendirme tablosu" + +#: modules/network.c:380 +msgid "Destination/Gateway" +msgstr "Hedef/Ağ Geçidi" + +#: modules/network.c:380 modules/network/net.c:473 +msgid "Mask" +msgstr "Mask" + +#: modules/network.c:408 +msgid "Network" +msgstr "Ağ" + +#: modules/network.c:441 +msgid "Gathers information about this computer's network connection" +msgstr "Bu bilgisayarın ağ bağlantısı hakkında bilgi toplar" + +#: modules/network/net.c:72 +msgctxt "wi-op-mode" +msgid "Auto" +msgstr "Otomatik" + +#: modules/network/net.c:73 +msgctxt "wi-op-mode" +msgid "Ad-Hoc" +msgstr "Ad-Hoc" + +#: modules/network/net.c:74 +msgctxt "wi-op-mode" +msgid "Managed" +msgstr "Yönetilen" + +#: modules/network/net.c:75 +msgctxt "wi-op-mode" +msgid "Master" +msgstr "Ana" + +#: modules/network/net.c:76 +msgctxt "wi-op-mode" +msgid "Repeater" +msgstr "Tekrarlayıcı" + +#: modules/network/net.c:77 +msgctxt "wi-op-mode" +msgid "Secondary" +msgstr "İkincil" + +#: modules/network/net.c:78 +msgctxt "wi-op-mode" +msgid "(Unknown)" +msgstr "(Bilinmeyen)" + +#: modules/network/net.c:242 modules/network/net.c:262 +#: modules/network/net.c:270 +msgctxt "net-if-type" +msgid "Ethernet" +msgstr "Ethernet" + +#: modules/network/net.c:243 +msgctxt "net-if-type" +msgid "Loopback" +msgstr "Geri döngü" + +#: modules/network/net.c:244 +msgctxt "net-if-type" +msgid "Point-to-Point" +msgstr "Noktadan Noktaya" + +#: modules/network/net.c:245 modules/network/net.c:246 +#: modules/network/net.c:247 modules/network/net.c:248 +#: modules/network/net.c:272 +msgctxt "net-if-type" +msgid "Wireless" +msgstr "Wireless" + +#: modules/network/net.c:249 +msgctxt "net-if-type" +msgid "Virtual Point-to-Point (TUN)" +msgstr "Sanal Noktadan Noktaya (TUN)" + +#: modules/network/net.c:250 +msgctxt "net-if-type" +msgid "Ethernet (TAP)" +msgstr "Ethernet (TAP)" + +#: modules/network/net.c:251 +msgctxt "net-if-type" +msgid "Parallel Line Internet Protocol" +msgstr "Paralel Hat İnternet Protokolü" + +#: modules/network/net.c:252 +msgctxt "net-if-type" +msgid "Infrared" +msgstr "Kızılötesi" + +#: modules/network/net.c:253 modules/network/net.c:271 +msgctxt "net-if-type" +msgid "Serial Line Internet Protocol" +msgstr "Seri Hat İnternet Protokolü" + +#: modules/network/net.c:254 +msgctxt "net-if-type" +msgid "Integrated Services Digital Network" +msgstr "Tümleşik Hizmetler Dijital Ağı" + +#: modules/network/net.c:255 +msgctxt "net-if-type" +msgid "IPv6-over-IPv4 Tunnel" +msgstr "IPv6-over-IPv4 Tüneli" + +#: modules/network/net.c:256 +msgctxt "net-if-type" +msgid "VMWare Virtual Network Interface (NAT)" +msgstr "VMWare Sanal Ağ Arayüzü (NAT)" + +#: modules/network/net.c:257 +msgctxt "net-if-type" +msgid "VMWare Virtual Network Interface" +msgstr "VMWare Sanal Ağ Arayüzü" + +#: modules/network/net.c:258 +msgctxt "net-if-type" +msgid "Personal Area Network (PAN)" +msgstr "Kişisel Alan Ağı (PAN)" + +#: modules/network/net.c:259 +msgctxt "net-if-type" +msgid "Bluetooth" +msgstr "Bluetooth" + +#: modules/network/net.c:260 +msgctxt "net-if-type" +msgid "Bridge Interface" +msgstr "Köprü Arayüzü" + +#: modules/network/net.c:261 +msgctxt "net-if-type" +msgid "Hamachi Virtual Personal Network" +msgstr "Hamachi Sanal Kişisel Ağ" + +#: modules/network/net.c:263 +msgctxt "net-if-type" +msgid "Intermediate Functional Block" +msgstr "Ara Fonksiyonel Blok" + +#: modules/network/net.c:264 +msgctxt "net-if-type" +msgid "GRE Network Tunnel" +msgstr "GRE Ağ Tüneli" + +#: modules/network/net.c:265 +msgctxt "net-if-type" +msgid "Mesh Network" +msgstr "Mesh Ağı" + +#: modules/network/net.c:266 +msgctxt "net-if-type" +msgid "Wireless Master Interface" +msgstr "Kablosuz Ana Arayüz" + +#: modules/network/net.c:267 +msgctxt "net-if-type" +msgid "VirtualBox Virtual Network Interface" +msgstr "VirtualBox Sanal Ağ Arayüzü" + +#: modules/network/net.c:273 +msgctxt "net-if-type" +msgid "Wireless (WAN)" +msgstr "Wireless (WAN)" + +#: modules/network/net.c:275 +msgctxt "net-if-type" +msgid "(Unknown)" +msgstr "(Bilinmeyen)" + +#: modules/network/net.c:343 modules/network/net.c:353 +msgid "Network Interfaces" +msgstr "Ağ Arayüzleri" + +#: modules/network/net.c:343 +msgid "None Found" +msgstr "Bulunamadı" + +#: modules/network/net.c:409 +msgid "Network Adapter Properties" +msgstr "Ağ Bağdaştırıcısı Özellikleri" + +#: modules/network/net.c:410 +msgid "Interface Type" +msgstr "Arayüz Türü" + +#: modules/network/net.c:411 +msgid "Hardware Address (MAC)" +msgstr "Donanım Adresi (MAC)" + +#: modules/network/net.c:415 +msgid "MTU" +msgstr "MTU" + +#: modules/network/net.c:416 +msgid "Transfer Details" +msgstr "Transfer Detayları" + +#: modules/network/net.c:417 +msgid "Bytes Received" +msgstr "Bayt Alındı" + +#: modules/network/net.c:418 +msgid "Bytes Sent" +msgstr "Bayt Gönderildi" + +#: modules/network/net.c:435 modules/network/net.c:457 +#: modules/network/net.c:458 +msgid "dBm" +msgstr "dBm" + +#: modules/network/net.c:435 +msgid "mW" +msgstr "mW" + +#: modules/network/net.c:449 +msgid "Wireless Properties" +msgstr "Wireless Özellikleri" + +#: modules/network/net.c:450 +msgid "Network Name (SSID)" +msgstr "Ağ Adı (SSID)" + +#: modules/network/net.c:451 +msgid "Bit Rate" +msgstr "Bit oranı" + +#: modules/network/net.c:452 +msgid "Transmission Power" +msgstr "İletim Gücü" + +#: modules/network/net.c:455 +msgid "Link Quality" +msgstr "Link Kalitesi" + +#: modules/network/net.c:456 +msgid "Signal / Noise" +msgstr "Sinyal / Gürültü" + +#: modules/network/net.c:471 +msgid "Internet Protocol (IPv4)" +msgstr "İnternet Protokolü (IPv4)" + +#: modules/network/net.c:472 modules/network/net.c:473 +#: modules/network/net.c:475 +msgid "(Not set)" +msgstr "(Ayarlanmadı)" + +#: modules/network/net.c:474 +msgid "Broadcast Address" +msgstr "Yayın adresi" diff --git a/po/updatepo.sh b/po/updatepo.sh old mode 100644 new mode 100755 index d5b0f9d6..84e6ef7c --- a/po/updatepo.sh +++ b/po/updatepo.sh @@ -1,4 +1,4 @@ -#!bash +#!/bin/bash GITVER=`git describe --always --dirty` GITHASH=`git rev-parse HEAD` @@ -27,11 +27,13 @@ do done; MSGTOTAL=`msgattrib --untranslated hardinfo.pot | grep -E "^msgstr \"\"" | wc -l` +CMSG=`msgattrib --untranslated hardinfo.pot | grep -E "^#,.*c-format" | wc -l` + TDIFF=$(($MSGTOTAL - $MSGTOTALOLD)) CHANGE="$TDIFF" if [ $TDIFF -gt 0 ]; then CHANGE="+$TDIFF"; fi if [ $TDIFF -eq 0 ]; then CHANGE="no change"; fi -echo "hardinfo.pot now has $MSGTOTAL strings ($CHANGE)" +echo "hardinfo.pot now has $MSGTOTAL strings ($CHANGE), with $CMSG c-format strings" echo "(as of $GITVER $GITHASH)" for f in *.po @@ -47,6 +49,7 @@ do # stats UNMSG=`msgattrib --untranslated "$f" | grep -E "^msgstr \"\"" | wc -l` + FUZMSG=`msgattrib --translated "$f" | grep -E "^#,.*fuzzy" | wc -l` DONE=" "; if [ $UNMSG -eq 0 ]; then DONE="x"; fi - echo "- [$DONE] $f : ($UNMSG / $MSGTOTAL remain untranslated)" + echo "- [$DONE] $f : ($UNMSG / $MSGTOTAL remain untranslated, needs work/fuzzy: $FUZMSG)" done diff --git a/po/zh_CN.po b/po/zh_CN.po new file mode 100644 index 00000000..4cc7efc7 --- /dev/null +++ b/po/zh_CN.po @@ -0,0 +1,5945 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: hardinfo\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-10-24 15:16-0500\n" +"PO-Revision-Date: 2018-06-22 16:23+0800\n" +"Last-Translator: yetist \n" +"Language-Team: Chinese\n" +"Language: zh_CN\n" +"X-Poedit-Basepath: ../\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Poedit 2.0.8\n" +"X-Poedit-SourceCharset: UTF-8\n" + +#: hardinfo/cpu_util.c:30 +msgid "Little Endian" +msgstr "小端序" + +#: hardinfo/cpu_util.c:32 +msgid "Big Endian" +msgstr "大端序" + +#: hardinfo/cpu_util.c:184 hardinfo/cpu_util.c:195 modules/devices/gpu.c:200 +msgid "Frequency Scaling" +msgstr "" + +#: hardinfo/cpu_util.c:185 modules/devices/gpu.c:201 +msgid "Minimum" +msgstr "最小值" + +#: hardinfo/cpu_util.c:185 hardinfo/cpu_util.c:186 hardinfo/cpu_util.c:187 +#: hardinfo/dt_util.c:589 modules/devices/gpu.c:201 modules/devices/gpu.c:202 +msgid "kHz" +msgstr "kHz" + +#: hardinfo/cpu_util.c:186 modules/devices/gpu.c:202 +msgid "Maximum" +msgstr "最大值" + +#: hardinfo/cpu_util.c:187 +msgid "Current" +msgstr "当前设置" + +#: hardinfo/cpu_util.c:188 modules/devices/gpu.c:203 +msgid "Transition Latency" +msgstr "" + +#: hardinfo/cpu_util.c:188 modules/devices/gpu.c:203 +msgid "ns" +msgstr "ns" + +#: hardinfo/cpu_util.c:189 +msgid "Governor" +msgstr "" + +#: hardinfo/cpu_util.c:190 hardinfo/cpu_util.c:196 modules/devices/gpu.c:153 +#: modules/devices/pci.c:134 modules/devices/usb.c:136 +msgid "Driver" +msgstr "驱动" + +#: hardinfo/cpu_util.c:202 modules/computer.c:737 +#: modules/devices/arm/processor.c:256 modules/devices/x86/processor.c:284 +#: modules/devices/x86/processor.c:388 modules/devices/x86/processor.c:524 +msgid "(Not Available)" +msgstr "" + +#: hardinfo/cpu_util.c:210 hardinfo/cpu_util.c:212 +msgid "Socket" +msgstr "套接字" + +#: hardinfo/cpu_util.c:215 hardinfo/cpu_util.c:217 modules/devices/gpu.c:149 +#: modules/devices/gpu.c:227 +msgid "Core" +msgstr "核心" + +#: hardinfo/cpu_util.c:220 +msgid "Book" +msgstr "" + +#: hardinfo/cpu_util.c:222 +msgid "Drawer" +msgstr "" + +#: hardinfo/cpu_util.c:228 modules/devices/arm/processor.c:471 +#: modules/devices/x86/processor.c:750 +msgid "Topology" +msgstr "" + +#: hardinfo/cpu_util.c:229 +msgid "ID" +msgstr "ID" + +#: hardinfo/dmi_util.c:25 +msgid "BIOS Information" +msgstr "" + +#: hardinfo/dmi_util.c:26 modules/devices/parisc/processor.c:157 +msgid "System" +msgstr "系统" + +#: hardinfo/dmi_util.c:27 +msgid "Base Board" +msgstr "" + +#: hardinfo/dmi_util.c:28 modules/devices/dmi.c:53 +msgid "Chassis" +msgstr "" + +#: hardinfo/dmi_util.c:29 modules/computer.c:529 modules/computer.c:1000 +#: modules/devices/alpha/processor.c:87 modules/devices/arm/processor.c:341 +#: modules/devices.c:99 modules/devices/ia64/processor.c:159 +#: modules/devices/m68k/processor.c:83 modules/devices/mips/processor.c:74 +#: modules/devices/parisc/processor.c:154 modules/devices/ppc/processor.c:157 +#: modules/devices/riscv/processor.c:181 modules/devices/s390/processor.c:131 +#: modules/devices/sh/processor.c:83 modules/devices/sparc/processor.c:74 +#: modules/devices/x86/processor.c:646 +msgid "Processor" +msgstr "处理器" + +#: hardinfo/dmi_util.c:30 +msgid "Memory Controller" +msgstr "" + +#: hardinfo/dmi_util.c:31 +msgid "Memory Module" +msgstr "" + +#: hardinfo/dmi_util.c:32 modules/devices/parisc/processor.c:163 +#: modules/devices/x86/processor.c:662 +msgid "Cache" +msgstr "缓存" + +#: hardinfo/dmi_util.c:33 +msgid "Port Connector" +msgstr "" + +#: hardinfo/dmi_util.c:34 +msgid "System Slots" +msgstr "" + +#: hardinfo/dmi_util.c:35 +msgid "On Board Devices" +msgstr "" + +#: hardinfo/dmi_util.c:36 +msgid "OEM Strings" +msgstr "" + +#: hardinfo/dmi_util.c:37 +msgid "System Configuration Options" +msgstr "" + +#: hardinfo/dmi_util.c:38 +msgid "BIOS Language" +msgstr "" + +#: hardinfo/dmi_util.c:39 +msgid "Group Associations" +msgstr "" + +#: hardinfo/dmi_util.c:40 +msgid "System Event Log" +msgstr "" + +#: hardinfo/dmi_util.c:41 +msgid "Physical Memory Array" +msgstr "" + +#: hardinfo/dmi_util.c:42 +msgid "Memory Device" +msgstr "" + +#: hardinfo/dmi_util.c:43 +msgid "32-bit Memory Error" +msgstr "" + +#: hardinfo/dmi_util.c:44 +msgid "Memory Array Mapped Address" +msgstr "" + +#: hardinfo/dmi_util.c:45 +msgid "Memory Device Mapped Address" +msgstr "" + +#: hardinfo/dmi_util.c:46 +msgid "Built-in Pointing Device" +msgstr "" + +#: hardinfo/dmi_util.c:47 +msgid "Portable Battery" +msgstr "" + +#: hardinfo/dmi_util.c:48 +msgid "System Reset" +msgstr "" + +#: hardinfo/dmi_util.c:49 +msgid "Hardware Security" +msgstr "" + +#: hardinfo/dmi_util.c:50 +msgid "System Power Controls" +msgstr "" + +#: hardinfo/dmi_util.c:51 +msgid "Voltage Probe" +msgstr "" + +#: hardinfo/dmi_util.c:52 +msgid "Cooling Device" +msgstr "" + +#: hardinfo/dmi_util.c:53 +msgid "Temperature Probe" +msgstr "" + +#: hardinfo/dmi_util.c:54 +msgid "Electrical Current Probe" +msgstr "" + +#: hardinfo/dmi_util.c:55 +msgid "Out-of-band Remote Access" +msgstr "" + +#: hardinfo/dmi_util.c:56 +msgid "Boot Integrity Services" +msgstr "" + +#: hardinfo/dmi_util.c:57 +msgid "System Boot" +msgstr "" + +#: hardinfo/dmi_util.c:58 +msgid "64-bit Memory Error" +msgstr "" + +#: hardinfo/dmi_util.c:59 +msgid "Management Device" +msgstr "" + +#: hardinfo/dmi_util.c:60 +msgid "Management Device Component" +msgstr "" + +#: hardinfo/dmi_util.c:61 +msgid "Management Device Threshold Data" +msgstr "" + +#: hardinfo/dmi_util.c:62 +msgid "Memory Channel" +msgstr "" + +#: hardinfo/dmi_util.c:63 +msgid "IPMI Device" +msgstr "" + +#: hardinfo/dmi_util.c:64 +msgid "Power Supply" +msgstr "" + +#: hardinfo/dmi_util.c:65 +msgid "Additional Information" +msgstr "" + +#: hardinfo/dmi_util.c:66 +msgid "Onboard Device" +msgstr "" + +#: hardinfo/dmi_util.c:226 +msgid "Invalid chassis type (0)" +msgstr "" + +#: hardinfo/dmi_util.c:227 hardinfo/dmi_util.c:228 +msgid "Unknown chassis type" +msgstr "" + +#: hardinfo/dmi_util.c:229 +msgid "Desktop" +msgstr "桌面" + +#: hardinfo/dmi_util.c:230 +msgid "Low-profile Desktop" +msgstr "" + +#: hardinfo/dmi_util.c:231 +msgid "Pizza Box" +msgstr "" + +#: hardinfo/dmi_util.c:232 +msgid "Mini Tower" +msgstr "" + +#: hardinfo/dmi_util.c:233 +msgid "Tower" +msgstr "" + +#: hardinfo/dmi_util.c:234 +msgid "Portable" +msgstr "便携式" + +#: hardinfo/dmi_util.c:235 modules/computer.c:391 modules/computer.c:400 +#: modules/computer.c:422 +msgid "Laptop" +msgstr "笔记本电脑" + +#: hardinfo/dmi_util.c:236 +msgid "Notebook" +msgstr "笔记本" + +#: hardinfo/dmi_util.c:237 +msgid "Handheld" +msgstr "手持设备" + +#: hardinfo/dmi_util.c:238 +msgid "Docking Station" +msgstr "扩展坞" + +#: hardinfo/dmi_util.c:239 +msgid "All-in-one" +msgstr "" + +#: hardinfo/dmi_util.c:240 +msgid "Subnotebook" +msgstr "" + +#: hardinfo/dmi_util.c:241 +msgid "Space-saving" +msgstr "" + +#: hardinfo/dmi_util.c:242 +msgid "Lunch Box" +msgstr "" + +#: hardinfo/dmi_util.c:243 +msgid "Main Server Chassis" +msgstr "" + +#: hardinfo/dmi_util.c:244 +msgid "Expansion Chassis" +msgstr "" + +#: hardinfo/dmi_util.c:245 +msgid "Sub Chassis" +msgstr "" + +#: hardinfo/dmi_util.c:246 +msgid "Bus Expansion Chassis" +msgstr "" + +#: hardinfo/dmi_util.c:247 +msgid "Peripheral Chassis" +msgstr "" + +#: hardinfo/dmi_util.c:248 +msgid "RAID Chassis" +msgstr "" + +#: hardinfo/dmi_util.c:249 +msgid "Rack Mount Chassis" +msgstr "" + +#: hardinfo/dmi_util.c:250 +msgid "Sealed-case PC" +msgstr "" + +#: hardinfo/dmi_util.c:251 +msgid "Multi-system" +msgstr "" + +#: hardinfo/dmi_util.c:252 +msgid "CompactPCI" +msgstr "" + +#: hardinfo/dmi_util.c:253 +msgid "AdvancedTCA" +msgstr "" + +#: hardinfo/dmi_util.c:254 +msgid "Blade" +msgstr "" + +#: hardinfo/dmi_util.c:255 +msgid "Blade Enclosing" +msgstr "" + +#: hardinfo/dmi_util.c:256 +msgid "Tablet" +msgstr "" + +#: hardinfo/dmi_util.c:257 +msgid "Convertible" +msgstr "" + +#: hardinfo/dmi_util.c:258 +msgid "Detachable" +msgstr "" + +#: hardinfo/dmi_util.c:259 +msgid "IoT Gateway" +msgstr "" + +#: hardinfo/dmi_util.c:260 +msgid "Embedded PC" +msgstr "" + +#: hardinfo/dmi_util.c:261 +msgid "Mini PC" +msgstr "" + +#: hardinfo/dmi_util.c:262 +msgid "Stick PC" +msgstr "" + +#: hardinfo/dt_util.c:1179 +msgid "phandle Map" +msgstr "" + +#: hardinfo/dt_util.c:1180 +msgid "Alias Map" +msgstr "" + +#: hardinfo/dt_util.c:1181 +msgid "Symbol Map" +msgstr "" + +#. / %d will be latest year of copyright +#: hardinfo/hardinfo.c:50 +#, c-format +msgid "" +"Copyright (C) 2003-%d L. A. F. Pereira. See COPYING for details.\n" +"\n" +msgstr "" + +#: hardinfo/hardinfo.c:52 +#, c-format +msgid "" +"Compile-time options:\n" +" Release version: %s (%s)\n" +" BinReloc enabled: %s\n" +" Data prefix: %s\n" +" Library prefix: %s\n" +" Compiled for: %s\n" +msgstr "" + +#: hardinfo/hardinfo.c:58 hardinfo/hardinfo.c:59 modules/computer.c:785 +#: modules/computer/modules.c:131 modules/computer/modules.c:132 +#: modules/devices/inputdevices.c:123 modules/devices/printers.c:138 +#: modules/devices/spd-decode.c:903 +msgid "Yes" +msgstr "是" + +#: hardinfo/hardinfo.c:59 modules/computer.c:785 modules/computer/modules.c:131 +#: modules/computer/modules.c:132 modules/devices/printers.c:138 +#: modules/devices/spd-decode.c:900 +msgid "No" +msgstr "否" + +#: hardinfo/hardinfo.c:70 +#, c-format +msgid "" +"Failed to find runtime data.\n" +"\n" +"• Is HardInfo correctly installed?\n" +"• See if %s and %s exists and you have read permission." +msgstr "" + +#: hardinfo/hardinfo.c:77 +#, c-format +msgid "" +"Modules:\n" +"%-20s %-15s %-12s\n" +msgstr "" +"模块:\n" +"%-20s %-15s %-12s\n" + +#: hardinfo/hardinfo.c:78 +msgid "File Name" +msgstr "文件名" + +#: hardinfo/hardinfo.c:78 modules/computer.c:666 modules/computer.c:694 +#: modules/computer.c:815 modules/computer/languages.c:95 +#: modules/computer/modules.c:149 modules/devices/arm/processor.c:469 +#: modules/devices/dmi.c:37 modules/devices/dmi.c:48 modules/devices/gpu.c:233 +#: modules/devices/ia64/processor.c:160 modules/devices/inputdevices.c:111 +#: modules/devices/monitors.c:399 modules/devices/monitors.c:502 +#: modules/devices/sh/processor.c:84 modules/devices/x86/processor.c:749 +#: modules/network.c:332 +msgid "Name" +msgstr "名称" + +#: hardinfo/hardinfo.c:78 modules/computer.c:347 modules/computer.c:572 +#: modules/computer.c:574 modules/computer.c:743 modules/computer/modules.c:151 +#: modules/devices/dmi.c:40 modules/devices/dmi.c:46 modules/devices/dmi.c:50 +#: modules/devices/dmi.c:56 modules/devices/firmware.c:105 +#: modules/devices/inputdevices.c:116 modules/devices/monitors.c:405 +msgid "Version" +msgstr "版本" + +#: hardinfo/hardinfo.c:129 +#, c-format +msgid "Unknown benchmark ``%s'' or benchmark.so not loaded" +msgstr "" + +#: hardinfo/hardinfo.c:159 +msgid "Don't know what to do. Exiting." +msgstr "" + +#: hardinfo/usb_util.c:290 modules/devices/devicetree.c:91 +#: modules/devices/devicetree.c:92 modules/devices/monitors.c:407 +#: modules/devices/storage.c:246 +msgid "(None)" +msgstr "(无)" + +#: hardinfo/util.c:104 modules/computer/uptime.c:54 +#, c-format +msgid "%d day" +msgid_plural "%d days" +msgstr[0] "%d 天" + +#: hardinfo/util.c:105 modules/computer/uptime.c:55 +#, c-format +msgid "%d hour" +msgid_plural "%d hours" +msgstr[0] "%d 小时" + +#: hardinfo/util.c:106 modules/computer/uptime.c:56 +#, c-format +msgid "%d minute" +msgid_plural "%d minutes" +msgstr[0] "%d 分钟" + +#: hardinfo/util.c:107 +#, c-format +msgid "%d second" +msgid_plural "%d seconds" +msgstr[0] "" + +#: hardinfo/util.c:128 +#, c-format +msgid "%.1f B" +msgstr "%.1f B" + +#: hardinfo/util.c:130 +#, c-format +msgid "%.1f KiB" +msgstr "%.1f KiB" + +#: hardinfo/util.c:132 +#, c-format +msgid "%.1f MiB" +msgstr "%.1f MiB" + +#: hardinfo/util.c:134 +#, c-format +msgid "%.1f GiB" +msgstr "%.1f GiB" + +#: hardinfo/util.c:136 +#, c-format +msgid "%.1f TiB" +msgstr "%.1f TiB" + +#: hardinfo/util.c:138 +#, c-format +msgid "%.1f PiB" +msgstr "%.1f PiB" + +#: hardinfo/util.c:361 +msgid "Error" +msgstr "错误" + +#: hardinfo/util.c:361 hardinfo/util.c:377 +msgid "Warning" +msgstr "警告" + +#: hardinfo/util.c:376 +msgid "Fatal Error" +msgstr "严重错误" + +#: hardinfo/util.c:406 +msgid "creates a report and prints to standard output" +msgstr "" + +#: hardinfo/util.c:412 +msgid "chooses a report format ([text], html)" +msgstr "" + +#: hardinfo/util.c:418 +msgid "run benchmark; requires benchmark.so to be loaded" +msgstr "" + +#: hardinfo/util.c:424 +msgid "note attached to benchmark results" +msgstr "" + +#: hardinfo/util.c:430 +msgid "benchmark result format ([short], conf, shell)" +msgstr "" + +#: hardinfo/util.c:436 +msgid "" +"maximum number of benchmark results to include (-1 for no limit, default is " +"10)" +msgstr "" + +#: hardinfo/util.c:442 +msgid "lists modules" +msgstr "模块列表" + +#: hardinfo/util.c:448 +msgid "specify module to load" +msgstr "" + +#: hardinfo/util.c:454 +msgid "automatically load module dependencies" +msgstr "" + +#: hardinfo/util.c:461 +msgid "run in XML-RPC server mode" +msgstr "" + +#: hardinfo/util.c:468 +msgid "shows program version and quit" +msgstr "显示程序版本并退出" + +#: hardinfo/util.c:474 +msgid "do not run benchmarks" +msgstr "" + +#: hardinfo/util.c:480 +msgid "show all details" +msgstr "" + +#: hardinfo/util.c:485 +msgid "- System Profiler and Benchmark tool" +msgstr "" + +#: hardinfo/util.c:495 +#, c-format +msgid "" +"Unrecognized arguments.\n" +"Try ``%s --help'' for more information.\n" +msgstr "" + +#: hardinfo/util.c:903 +#, c-format +msgid "Module \"%s\" depends on module \"%s\", load it?" +msgstr "" + +#: hardinfo/util.c:926 +#, c-format +msgid "Module \"%s\" depends on module \"%s\"." +msgstr "" + +#: hardinfo/util.c:971 +#, c-format +msgid "No module could be loaded. Check permissions on \"%s\" and try again." +msgstr "" + +#: hardinfo/util.c:975 +msgid "" +"No module could be loaded. Please use hardinfo -l to list all available " +"modules and try again with a valid module list." +msgstr "" + +#: hardinfo/util.c:1030 +#, c-format +msgid "Scanning: %s..." +msgstr "正在扫描:%s..." + +#: hardinfo/util.c:1040 shell/shell.c:310 shell/shell.c:795 shell/shell.c:1962 +#: modules/benchmark.c:583 modules/benchmark.c:591 +msgid "Done." +msgstr "完成。" + +#: hardinfo/vendor.c:440 modules/computer.c:573 modules/computer.c:765 +#: modules/computer/os.c:79 modules/computer/os.c:263 modules/computer/os.c:300 +#: modules/computer/os.c:499 modules/computer/os.c:569 modules/devices.c:359 +#: modules/devices.c:505 modules/devices/printers.c:99 +#: modules/devices/printers.c:106 modules/devices/printers.c:116 +#: modules/devices/printers.c:131 modules/devices/printers.c:140 +#: modules/devices/printers.c:243 modules/devices/spd-decode.c:312 +#: modules/devices/usb.c:146 +msgid "Unknown" +msgstr "未知" + +#: shell/callbacks.c:128 +#, c-format +msgid "" +"Written by %s\n" +"Licensed under %s" +msgstr "" + +#: shell/callbacks.c:142 +#, c-format +msgid "No about information is associated with the %s module." +msgstr "" + +#: shell/callbacks.c:158 +msgid "Author:" +msgstr "作者:" + +#: shell/callbacks.c:161 +msgid "Contributors:" +msgstr "贡献者:" + +#: shell/callbacks.c:167 +msgid "Based on work by:" +msgstr "" + +#: shell/callbacks.c:168 +msgid "MD5 implementation by Colin Plumb (see md5.c for details)" +msgstr "" + +#: shell/callbacks.c:169 +msgid "SHA1 implementation by Steve Reid (see sha1.c for details)" +msgstr "" + +#: shell/callbacks.c:170 +msgid "Blowfish implementation by Paul Kocher (see blowfich.c for details)" +msgstr "" + +#: shell/callbacks.c:171 +msgid "Raytracing benchmark by John Walker (see fbench.c for details)" +msgstr "" + +#: shell/callbacks.c:172 +msgid "FFT benchmark by Scott Robert Ladd (see fftbench.c for details)" +msgstr "" + +#: shell/callbacks.c:173 +msgid "Some code partly based on x86cpucaps by Osamu Kayasono" +msgstr "" + +#: shell/callbacks.c:174 +msgid "Vendor list based on GtkSysInfo by Pissens Sebastien" +msgstr "" + +#: shell/callbacks.c:175 +msgid "DMI support based on code by Stewart Adam" +msgstr "" + +#: shell/callbacks.c:176 +msgid "SCSI support based on code by Pascal F. Martin" +msgstr "" + +#: shell/callbacks.c:181 +msgid "Tango Project" +msgstr "Tango 项目" + +#: shell/callbacks.c:182 +msgid "The GNOME Project" +msgstr "GNOME 项目" + +#: shell/callbacks.c:183 +msgid "VMWare, Inc. (USB icon from VMWare Workstation 6)" +msgstr "" + +#: shell/callbacks.c:201 +msgid "System information and benchmark tool" +msgstr "" + +#: shell/callbacks.c:206 +msgid "" +"HardInfo is free software; you can redistribute it and/or modify it under " +"the terms of the GNU General Public License as published by the Free " +"Software Foundation, version 2.\n" +"\n" +"This program is distributed in the hope that it will be useful, but WITHOUT " +"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or " +"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for " +"more details.\n" +"\n" +"You should have received a copy of the GNU General Public License along with " +"this program; if not, write to the Free Software Foundation, Inc., 51 " +"Franklin St, Fifth Floor, Boston, MA 02110-1301 USA" +msgstr "" + +#: shell/callbacks.c:221 +msgid "translator-credits" +msgstr "" + +#: shell/menu.c:43 +msgid "_Information" +msgstr "信息(_I)" + +#: shell/menu.c:44 +msgid "_Remote" +msgstr "远程(_R)" + +#: shell/menu.c:45 +msgid "_View" +msgstr "查看(_V)" + +#: shell/menu.c:46 +msgid "_Help" +msgstr "帮助(_H)" + +#: shell/menu.c:47 +msgid "About _Modules" +msgstr "关于模块(_M)" + +#: shell/menu.c:51 +msgid "Generate _Report" +msgstr "生成报表(_R)" + +#: shell/menu.c:56 +msgid "_Network Updater..." +msgstr "" + +#: shell/menu.c:61 +msgid "_Open..." +msgstr "打开...(_O)" + +#: shell/menu.c:66 +msgid "_Copy to Clipboard" +msgstr "复制到剪贴板(_C)" + +#: shell/menu.c:67 +msgid "Copy to clipboard" +msgstr "复制到剪贴板" + +#: shell/menu.c:71 +msgid "_Refresh" +msgstr "刷新(_R)" + +#: shell/menu.c:76 +msgid "_Open HardInfo Web Site" +msgstr "打开 HardInfo 网站(_O)" + +#: shell/menu.c:81 +msgid "_Report bug" +msgstr "报告错误(_B)" + +#: shell/menu.c:86 +msgid "_About HardInfo" +msgstr "关于 HardInfo(_A)" + +#: shell/menu.c:87 +msgid "Displays program version information" +msgstr "显示程序版本信息" + +#: shell/menu.c:91 +msgid "_Quit" +msgstr "退出(_Q)" + +#: shell/menu.c:98 +msgid "_Side Pane" +msgstr "侧边栏(_S)" + +#: shell/menu.c:99 +msgid "Toggles side pane visibility" +msgstr "更改侧边栏的可见性" + +#: shell/menu.c:102 +msgid "_Toolbar" +msgstr "工具栏(_T)" + +#: shell/report.c:769 shell/report.c:777 +msgid "Save File" +msgstr "保存文件" + +#: shell/report.c:772 shell/report.c:1243 shell/syncmanager.c:748 +msgid "_Cancel" +msgstr "取消(_C)" + +#: shell/report.c:774 +msgid "_Save" +msgstr "保存(_S)" + +#: shell/report.c:943 +msgid "Cannot create ReportContext. Programming bug?" +msgstr "" + +#: shell/report.c:962 +msgid "Open the report with your web browser?" +msgstr "在默认浏览器中打开报告?" + +#: shell/report.c:965 +msgid "_No" +msgstr "否(_N)" + +#: shell/report.c:966 +msgid "_Open" +msgstr "打开(_O)" + +#: shell/report.c:996 +msgid "Generating report..." +msgstr "生成报告..." + +#: shell/report.c:1006 +msgid "Report saved." +msgstr "报告已保存。" + +#: shell/report.c:1008 +msgid "Error while creating the report." +msgstr "在创建报表时出错。" + +#: shell/report.c:1110 +msgid "Generate Report" +msgstr "生成报表" + +#: shell/report.c:1135 +msgid "" +"Generate Report\n" +"Please choose the information that you wish to view in your report:" +msgstr "" + +#: shell/report.c:1207 +msgid "Select _None" +msgstr "不选择(_N)" + +#: shell/report.c:1218 +msgid "Select _All" +msgstr "选中全部(_A)" + +#: shell/report.c:1253 +msgid "_Generate" +msgstr "生成(_G)" + +#: shell/shell.c:407 +#, c-format +msgid "%s - System Information" +msgstr "%s - 系统信息" + +#: shell/shell.c:412 +msgid "System Information" +msgstr "系统信息" + +#: shell/shell.c:782 +msgid "Loading modules..." +msgstr "正在加载模块..." + +#: shell/shell.c:1828 +#, c-format +msgid "%s → Summary" +msgstr "%s → 概要" + +#: shell/shell.c:1936 +msgid "Updating..." +msgstr "正在更新..." + +#: shell/syncmanager.c:69 +msgid "" +"Synchronize with Central Database\n" +"The following information may be synchronized\nwith the HardInfo central " +"database." +msgstr "" + +#: shell/syncmanager.c:72 +msgid "" +"Synchronizing\n" +"This may take some time." +msgstr "" + +#: shell/syncmanager.c:132 +msgid "" +"HardInfo was compiled without libsoup support. (Network Updater requires it.)" +msgstr "" + +#: shell/syncmanager.c:161 shell/syncmanager.c:189 +#, c-format +msgid "%s (error #%d)" +msgstr "%s (错误 #%d)" + +#: shell/syncmanager.c:170 shell/syncmanager.c:198 +msgid "Could not parse XML-RPC response" +msgstr "无法解析 XML-RPC 响应" + +#: shell/syncmanager.c:280 +#, c-format +msgid "" +"Server says it supports API version %d, but this version of HardInfo only " +"supports API version %d." +msgstr "" + +#: shell/syncmanager.c:375 +msgid "Contacting HardInfo Central Database" +msgstr "" + +#: shell/syncmanager.c:376 +msgid "Cleaning up" +msgstr "正在清理" + +#: shell/syncmanager.c:493 +msgid "(canceled)" +msgstr "(已取消)" + +#: shell/syncmanager.c:510 +msgid "(failed)" +msgstr "(失败)" + +#: shell/syncmanager.c:521 +#, c-format +msgid "" +"Failed while performing \"%s\". Please file a bug report if this problem " +"persists. (Use the Help→Report bug option.)\n" +"\n" +"Details: %s" +msgstr "" + +#: shell/syncmanager.c:530 +#, c-format +msgid "" +"Failed while performing \"%s\". Please file a bug report if this problem " +"persists. (Use the Help→Report bug option.)" +msgstr "" + +#: shell/syncmanager.c:658 +msgid "Network Updater" +msgstr "" + +#: shell/syncmanager.c:757 +msgid "_Synchronize" +msgstr "同步(_S)" + +#: modules/benchmark/benches.c:82 +msgid "CPU Blowfish (Single-thread)" +msgstr "" + +#: modules/benchmark/benches.c:84 +msgid "CPU Blowfish (Multi-thread)" +msgstr "" + +#: modules/benchmark/benches.c:86 +msgid "CPU Blowfish (Multi-core)" +msgstr "" + +#: modules/benchmark/benches.c:88 +msgid "CPU Zlib" +msgstr "" + +#: modules/benchmark/benches.c:90 +msgid "CPU CryptoHash" +msgstr "" + +#: modules/benchmark/benches.c:92 +msgid "CPU Fibonacci" +msgstr "" + +#: modules/benchmark/benches.c:94 +msgid "CPU N-Queens" +msgstr "" + +#: modules/benchmark/benches.c:96 +msgid "FPU FFT" +msgstr "" + +#: modules/benchmark/benches.c:98 +msgid "FPU Raytracing" +msgstr "" + +#: modules/benchmark/benches.c:100 +msgid "SysBench CPU (Single-thread)" +msgstr "" + +#: modules/benchmark/benches.c:102 +msgid "SysBench CPU (Multi-thread)" +msgstr "" + +#: modules/benchmark/benches.c:104 +msgid "SysBench CPU (Four threads)" +msgstr "" + +#: modules/benchmark/benches.c:106 +msgid "SysBench Memory (Single-thread)" +msgstr "" + +#: modules/benchmark/benches.c:108 +msgid "SysBench Memory (Two threads)" +msgstr "" + +#: modules/benchmark/benches.c:110 +msgid "SysBench Memory" +msgstr "" + +#: modules/benchmark/benches.c:113 +msgid "GPU Drawing" +msgstr "" + +#: modules/benchmark/benches.c:126 +msgid "" +"Alexey Kopytov's sysbench is required.\n" +"Results in events/second. Higher is better." +msgstr "" + +#: modules/benchmark/benches.c:132 +msgid "" +"Alexey Kopytov's sysbench is required.\n" +"Results in MiB/second. Higher is better." +msgstr "" + +#: modules/benchmark/benches.c:136 +msgid "Results in MiB/second. Higher is better." +msgstr "结果以 MiB/秒为单位,越大越好。" + +#: modules/benchmark/benches.c:143 +msgid "Results in HIMarks. Higher is better." +msgstr "" + +#: modules/benchmark/benches.c:149 +msgid "Results in seconds. Lower is better." +msgstr "结果以秒为单位。越小越好。" + +#. /or modify +#. * it under the terms of the GNU General Public License as published by +#. * the Free Software Foundation, version 2. +#. * +#. * This program is distributed in the hope that it will be useful, +#. * but WITHOUT ANY WARRANTY; without even the implied warranty of +#. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +#. * GNU General Public License for more details. +#. * +#. * You should have received a copy of the GNU General Public License +#. * along with this program; if not, write to the Free Software +#. * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +#. +#. / Used for an unknown value. Having it in only one place cleans up the .po line references +#: modules/benchmark/bench_results.c:22 modules/computer.c:41 +#: modules/computer/display.c:41 modules/computer/display.c:58 +#: modules/computer/os.c:286 modules/computer/os.c:346 modules/devices.c:488 +#: modules/devices/dmi_memory.c:52 modules/devices/dmi_memory.c:53 +#: modules/devices/dmi_memory.c:579 modules/devices/dmi_memory.c:719 +#: modules/devices/dmi_memory.c:855 modules/devices/gpu.c:42 +#: modules/devices/gpu.c:58 modules/devices/gpu.c:112 modules/devices/gpu.c:120 +#: modules/devices/gpu.c:154 modules/devices/gpu.c:155 +#: modules/devices/gpu.c:176 modules/devices/monitors.c:27 +#: modules/devices/monitors.c:28 modules/devices/monitors.c:153 +#: modules/devices/monitors.c:162 modules/devices/pci.c:25 +#: modules/devices/pci.c:135 modules/devices/pci.c:136 +#: modules/devices/spd-decode.c:306 modules/devices/spd-decode.c:307 +#: modules/devices/spd-decode.c:310 modules/devices/spd-decode.c:311 +#: modules/devices/spd-decode.c:914 modules/devices/spd-decode.c:915 +#: modules/devices/storage.c:247 modules/devices/storage.c:309 +#: modules/devices/usb.c:28 modules/network/net.c:437 includes/cpu_util.h:11 +msgid "(Unknown)" +msgstr "(未知)" + +#: modules/benchmark/bench_results.c:49 modules/benchmark/bench_results.c:330 +#: modules/devices/alpha/processor.c:90 modules/devices/arm/processor.c:290 +#: modules/devices/arm/processor.c:303 modules/devices/arm/processor.c:345 +#: modules/devices/arm/processor.c:500 modules/devices.c:325 +#: modules/devices.c:333 modules/devices.c:361 modules/devices/gpu.c:115 +#: modules/devices/gpu.c:117 modules/devices/gpu.c:123 +#: modules/devices/gpu.c:125 modules/devices/gpu.c:179 +#: modules/devices/gpu.c:181 modules/devices/ia64/processor.c:167 +#: modules/devices/ia64/processor.c:196 modules/devices/m68k/processor.c:87 +#: modules/devices/mips/processor.c:77 modules/devices/parisc/processor.c:158 +#: modules/devices/parisc/processor.c:191 modules/devices/ppc/processor.c:160 +#: modules/devices/ppc/processor.c:187 modules/devices/riscv/processor.c:186 +#: modules/devices/riscv/processor.c:214 modules/devices/s390/processor.c:160 +#: modules/devices/sh/processor.c:87 modules/devices/sh/processor.c:88 +#: modules/devices/sh/processor.c:89 modules/devices/x86/processor.c:318 +#: modules/devices/x86/processor.c:331 modules/devices/x86/processor.c:657 +#: modules/devices/x86/processor.c:780 +msgid "MHz" +msgstr "MHz" + +#: modules/benchmark/bench_results.c:396 modules/benchmark/bench_results.c:495 +msgid "kiB" +msgstr "kiB" + +#: modules/benchmark/bench_results.c:403 modules/benchmark/bench_results.c:453 +#, c-format +msgid "%d-bit" +msgstr "" + +#: modules/benchmark/bench_results.c:422 modules/benchmark/bench_results.c:477 +msgid "Benchmark Result" +msgstr "" + +#: modules/benchmark/bench_results.c:423 modules/benchmark/bench_results.c:479 +msgid "Threads" +msgstr "线程" + +#: modules/benchmark/bench_results.c:424 modules/benchmark/bench_results.c:481 +msgid "Elapsed Time" +msgstr "" + +#: modules/benchmark/bench_results.c:424 modules/benchmark/bench_results.c:481 +msgid "seconds" +msgstr "" + +#: modules/benchmark/bench_results.c:425 modules/computer/languages.c:101 +#: modules/devices/arm/processor.c:355 modules/devices/gpu.c:147 +#: modules/devices/ia64/processor.c:166 modules/devices/pci.c:132 +#: modules/devices/ppc/processor.c:159 +msgid "Revision" +msgstr "修订版本" + +#: modules/benchmark/bench_results.c:426 modules/benchmark/bench_results.c:482 +msgid "Extra Information" +msgstr "" + +#: modules/benchmark/bench_results.c:427 modules/benchmark/bench_results.c:483 +msgid "User Note" +msgstr "" + +#: modules/benchmark/bench_results.c:429 modules/benchmark/bench_results.c:485 +msgid "Note" +msgstr "注解" + +#: modules/benchmark/bench_results.c:430 modules/benchmark/bench_results.c:486 +msgid "" +"This result is from an old version of HardInfo. Results might not be " +"comparable to current version. Some details are missing." +msgstr "" + +#: modules/benchmark/bench_results.c:431 modules/benchmark/bench_results.c:487 +#: modules/devices/devicetree/pmac_data.c:81 modules/devices/sh/processor.c:85 +msgid "Machine" +msgstr "" + +#: modules/benchmark/bench_results.c:432 modules/benchmark/bench_results.c:488 +#: modules/devices/devicetree.c:208 modules/devices/dmi.c:47 +msgid "Board" +msgstr "主板" + +#: modules/benchmark/bench_results.c:433 modules/benchmark/bench_results.c:489 +msgid "CPU Name" +msgstr "处理器名称" + +#: modules/benchmark/bench_results.c:434 modules/benchmark/bench_results.c:490 +msgid "CPU Description" +msgstr "处理器描述" + +#: modules/benchmark/bench_results.c:435 modules/benchmark/bench_results.c:491 +#: modules/benchmark.c:442 +msgid "CPU Config" +msgstr "CPU 配置" + +#: modules/benchmark/bench_results.c:436 modules/benchmark/bench_results.c:492 +msgid "Threads Available" +msgstr "" + +#: modules/benchmark/bench_results.c:437 modules/benchmark/bench_results.c:493 +msgid "GPU" +msgstr "GPU" + +#: modules/benchmark/bench_results.c:438 modules/benchmark/bench_results.c:494 +#: modules/computer.c:542 +msgid "OpenGL Renderer" +msgstr "OpenGL 渲染器" + +#: modules/benchmark/bench_results.c:439 modules/benchmark/bench_results.c:495 +#: modules/computer.c:123 modules/computer.c:531 modules/computer.c:1000 +#: modules/devices/gpu.c:150 +msgid "Memory" +msgstr "内存" + +#: modules/benchmark/bench_results.c:440 modules/benchmark/bench_results.c:496 +msgid "Pointer Size" +msgstr "" + +#: modules/benchmark/bench_results.c:478 +msgid "Benchmark" +msgstr "基准" + +#: modules/benchmark/bench_results.c:480 modules/devices/dmi_memory.c:879 +#: modules/devices/firmware.c:246 modules/devices/monitors.c:492 +#: modules/devices/x86/processor.c:691 +msgid "Result" +msgstr "结果" + +#: modules/benchmark/bench_results.c:498 +msgid "Handles" +msgstr "控制柄" + +#: modules/benchmark/bench_results.c:499 +msgid "mid" +msgstr "" + +#: modules/benchmark/bench_results.c:500 +msgid "cfg_val" +msgstr "" + +#: modules/benchmark.c:442 +msgid "Results" +msgstr "结果" + +#: modules/benchmark.c:442 modules/devices/sparc/processor.c:75 +msgid "CPU" +msgstr "CPU" + +#: modules/benchmark.c:513 +#, c-format +msgid "Benchmarking: %s." +msgstr "" + +#: modules/benchmark.c:527 +msgid "Benchmarking. Please do not move your mouse\nor press any keys." +msgstr "" + +#: modules/benchmark.c:530 +msgid "Cancel" +msgstr "取消" + +#: modules/benchmark.c:601 +msgid "Benchmarks" +msgstr "" + +#: modules/benchmark.c:619 +msgid "Perform tasks and compare with other systems" +msgstr "" + +#: modules/benchmark.c:730 +msgid "Send benchmark results" +msgstr "" + +#: modules/benchmark.c:735 +msgid "Receive benchmark results" +msgstr "" + +#: modules/computer/alsa.c:26 modules/computer.c:546 +msgid "Audio Devices" +msgstr "音频设备" + +#: modules/computer/alsa.c:34 +msgid "Audio Adapter" +msgstr "音频适配器" + +#: modules/computer.c:80 modules/devices/firmware.c:104 +msgid "Summary" +msgstr "概要" + +#: modules/computer.c:81 modules/computer.c:534 modules/computer.c:999 +msgid "Operating System" +msgstr "操作系统" + +#: modules/computer.c:82 +msgid "Security" +msgstr "" + +#: modules/computer.c:83 modules/devices/gpu.c:155 modules/devices/pci.c:136 +msgid "Kernel Modules" +msgstr "内核模块" + +#: modules/computer.c:84 modules/computer.c:678 +msgid "Boots" +msgstr "启动" + +#: modules/computer.c:85 +msgid "Languages" +msgstr "语言" + +#: modules/computer.c:86 +msgid "Memory Usage" +msgstr "" + +#: modules/computer.c:87 +msgid "Filesystems" +msgstr "文件系统" + +#: modules/computer.c:88 modules/computer.c:539 +msgid "Display" +msgstr "显示" + +#: modules/computer.c:89 modules/computer/environment.c:32 +msgid "Environment Variables" +msgstr "环境变量" + +#: modules/computer.c:91 +msgid "Development" +msgstr "开发" + +#: modules/computer.c:93 modules/computer.c:802 +msgid "Users" +msgstr "用户" + +#: modules/computer.c:94 +msgid "Groups" +msgstr "组" + +#: modules/computer.c:125 +#, c-format +msgid "%dMB (%dMB used)" +msgstr "" + +#: modules/computer.c:127 modules/computer.c:594 +msgid "Uptime" +msgstr "启动时间" + +#: modules/computer.c:129 modules/computer.c:536 +msgid "Date/Time" +msgstr "日期/时间" + +#: modules/computer.c:134 modules/computer.c:595 +msgid "Load Average" +msgstr "负载均值" + +#: modules/computer.c:247 +msgid "Scripting Languages" +msgstr "脚本语言" + +#: modules/computer.c:248 +msgid "Gambas3 (gbr3)" +msgstr "Gambas3 (gbr3)" + +#: modules/computer.c:249 +msgid "Python (default)" +msgstr "" + +#: modules/computer.c:250 +msgid "Python2" +msgstr "Python2" + +#: modules/computer.c:251 +msgid "Python3" +msgstr "Python3" + +#: modules/computer.c:252 +msgid "Perl" +msgstr "Perl" + +#: modules/computer.c:253 +msgid "Perl6 (VM)" +msgstr "Perl6 (VM)" + +#: modules/computer.c:254 +msgid "Perl6" +msgstr "Perl6" + +#: modules/computer.c:255 +msgid "PHP" +msgstr "PHP" + +#: modules/computer.c:256 +msgid "Ruby" +msgstr "Ruby" + +#: modules/computer.c:257 +msgid "Bash" +msgstr "Bash" + +#: modules/computer.c:258 +msgid "JavaScript (Node.js)" +msgstr "" + +#: modules/computer.c:259 +msgid "awk" +msgstr "" + +#: modules/computer.c:260 +msgid "Compilers" +msgstr "编译器" + +#: modules/computer.c:261 +msgid "C (GCC)" +msgstr "C (GCC)" + +#: modules/computer.c:262 +msgid "C (Clang)" +msgstr "C (Clang)" + +#: modules/computer.c:263 +msgid "D (dmd)" +msgstr "D (dmd)" + +#: modules/computer.c:264 +msgid "Gambas3 (gbc3)" +msgstr "Gambas3 (gbc3)" + +#: modules/computer.c:265 +msgid "Java" +msgstr "Java" + +#: modules/computer.c:266 +msgid "C♯ (mcs)" +msgstr "" + +#: modules/computer.c:267 +msgid "Vala" +msgstr "Vala" + +#: modules/computer.c:268 +msgid "Haskell (GHC)" +msgstr "Haskell (GHC)" + +#: modules/computer.c:269 +msgid "FreePascal" +msgstr "" + +#: modules/computer.c:270 +msgid "Go" +msgstr "Go" + +#: modules/computer.c:271 +msgid "Rust" +msgstr "" + +#: modules/computer.c:272 +msgid "Tools" +msgstr "工具" + +#: modules/computer.c:273 +msgid "make" +msgstr "make" + +#: modules/computer.c:274 +msgid "ninja" +msgstr "" + +#: modules/computer.c:275 +msgid "GDB" +msgstr "GDB" + +#: modules/computer.c:276 +msgid "LLDB" +msgstr "" + +#: modules/computer.c:277 +msgid "strace" +msgstr "" + +#: modules/computer.c:278 +msgid "valgrind" +msgstr "" + +#: modules/computer.c:279 +msgid "QMake" +msgstr "QMake" + +#: modules/computer.c:280 +msgid "CMake" +msgstr "CMake" + +#: modules/computer.c:281 +msgid "Gambas3 IDE" +msgstr "Gambas3 IDE" + +#: modules/computer.c:282 +msgid "Radare2" +msgstr "" + +#: modules/computer.c:283 +msgid "ltrace" +msgstr "" + +#: modules/computer.c:324 +msgid "Not found" +msgstr "找不到" + +#: modules/computer.c:329 +#, c-format +msgid "Detecting version: %s" +msgstr "检测版本: %s" + +#: modules/computer.c:347 +msgid "Program" +msgstr "程序" + +#: modules/computer.c:365 +msgid "Field" +msgstr "域" + +#: modules/computer.c:365 modules/computer.c:667 modules/computer/modules.c:149 +#: modules/computer/modules.c:150 modules/devices/arm/processor.c:470 +msgid "Description" +msgstr "描述" + +#: modules/computer.c:365 modules/devices.c:726 +msgid "Value" +msgstr "亮度" + +#: modules/computer.c:385 +msgid "Single-board computer" +msgstr "" + +#. /proc/apm +#: modules/computer.c:434 +msgid "Unknown physical machine type" +msgstr "" + +#: modules/computer.c:454 modules/computer.c:455 +msgid "Virtual (VMware)" +msgstr "Virtual (VMware)" + +#: modules/computer.c:457 modules/computer.c:458 modules/computer.c:459 +#: modules/computer.c:460 +msgid "Virtual (QEMU)" +msgstr "Virtual (QEMU)" + +#: modules/computer.c:462 modules/computer.c:463 +msgid "Virtual (Unknown)" +msgstr "Virtual (Unknown)" + +#: modules/computer.c:465 modules/computer.c:466 modules/computer.c:467 +#: modules/computer.c:488 +msgid "Virtual (VirtualBox)" +msgstr "Virtual (VirtualBox)" + +#: modules/computer.c:469 modules/computer.c:470 modules/computer.c:471 +#: modules/computer.c:482 +msgid "Virtual (Xen)" +msgstr "Virtual (Xen)" + +#: modules/computer.c:473 +msgid "Virtual (hypervisor present)" +msgstr "Virtual (hypervisor present)" + +#: modules/computer.c:528 modules/computer.c:953 +msgid "Computer" +msgstr "计算机" + +#: modules/computer.c:532 +msgid "Machine Type" +msgstr "机器类型" + +#: modules/computer.c:535 modules/computer.c:588 +msgid "User Name" +msgstr "用户名" + +#: modules/computer.c:540 +msgid "Resolution" +msgstr "解决方案" + +#: modules/computer.c:540 modules/computer.c:748 +#, c-format +msgid "%dx%d pixels" +msgstr "" + +#: modules/computer.c:543 +msgid "Session Display Server" +msgstr "会话显示服务器" + +#: modules/computer.c:548 modules/devices.c:108 +msgid "Input Devices" +msgstr "输入设备" + +#: modules/computer.c:572 +msgid "Kernel" +msgstr "内核" + +#: modules/computer.c:573 +msgid "Command Line" +msgstr "" + +#: modules/computer.c:575 +msgid "C Library" +msgstr "C 库" + +#: modules/computer.c:576 +msgid "Distribution" +msgstr "发行版" + +#: modules/computer.c:582 +msgid "Spin/Flavor" +msgstr "" + +#: modules/computer.c:586 +msgid "Current Session" +msgstr "当前会话" + +#: modules/computer.c:587 +msgid "Computer Name" +msgstr "计算机名称" + +#: modules/computer.c:589 modules/computer/languages.c:99 +msgid "Language" +msgstr "语言" + +#: modules/computer.c:590 modules/computer/users.c:50 +msgid "Home Directory" +msgstr "主目录" + +#: modules/computer.c:591 +msgid "Desktop Environment" +msgstr "" + +#: modules/computer.c:594 +msgid "Misc" +msgstr "其它" + +#: modules/computer.c:607 +msgid "HardInfo" +msgstr "" + +#: modules/computer.c:608 +msgid "HardInfo running as" +msgstr "" + +#: modules/computer.c:609 +msgid "Superuser" +msgstr "" + +#: modules/computer.c:609 +msgid "User" +msgstr "" + +#: modules/computer.c:613 +msgid "Health" +msgstr "" + +#: modules/computer.c:614 +msgid "Available entropy in /dev/random" +msgstr "" + +#: modules/computer.c:618 +msgid "Hardening Features" +msgstr "" + +#: modules/computer.c:619 +msgid "ASLR" +msgstr "" + +#: modules/computer.c:620 +msgid "dmesg" +msgstr "" + +#: modules/computer.c:624 +msgid "Linux Security Modules" +msgstr "" + +#: modules/computer.c:625 +msgid "Modules available" +msgstr "" + +#: modules/computer.c:626 +msgid "SELinux status" +msgstr "" + +#: modules/computer.c:632 +msgid "CPU Vulnerabilities" +msgstr "" + +#: modules/computer.c:664 +msgid "Loaded Modules" +msgstr "已加载的模块" + +#: modules/computer.c:680 +msgid "Date & Time" +msgstr "日期和时间" + +#: modules/computer.c:681 +msgid "Kernel Version" +msgstr "内核版本" + +#: modules/computer.c:691 +msgid "Available Languages" +msgstr "可用语言" + +#: modules/computer.c:693 +msgid "Language Code" +msgstr "语言代码" + +#: modules/computer.c:705 +msgid "Mounted File Systems" +msgstr "已挂载的文件系统" + +#: modules/computer.c:707 modules/computer/filesystem.c:85 +msgid "Mount Point" +msgstr "挂载点" + +#: modules/computer.c:708 +msgid "Usage" +msgstr "使用" + +#: modules/computer.c:709 modules/devices/gpu.c:75 modules/devices/gpu.c:83 +#: modules/devices/gpu.c:225 modules/devices/pci.c:88 modules/devices/pci.c:96 +#: modules/devices/pci.c:140 modules/devices/usb.c:169 +#: modules/devices/usb.c:181 +msgid "Device" +msgstr "设备" + +#: modules/computer.c:731 +msgid "Session" +msgstr "会话" + +#: modules/computer.c:732 modules/devices.c:726 modules/devices/dmi.c:55 +#: modules/devices/dmi_memory.c:603 modules/devices/dmi_memory.c:749 +#: modules/devices/inputdevices.c:112 modules/devices/x86/processor.c:714 +msgid "Type" +msgstr "类别" + +#: modules/computer.c:735 +msgid "Wayland" +msgstr "Wayland" + +#: modules/computer.c:736 modules/computer.c:741 +msgid "Current Display Name" +msgstr "当前显示名称" + +#: modules/computer.c:740 +msgid "X Server" +msgstr "X 服务器" + +#: modules/computer.c:742 modules/computer.c:782 modules/devices/dmi.c:39 +#: modules/devices/dmi.c:45 modules/devices/dmi.c:49 modules/devices/dmi.c:54 +#: modules/devices/dmi_memory.c:750 modules/devices/dmi_memory.c:895 +#: modules/devices/firmware.c:105 modules/devices/firmware.c:168 +#: modules/devices/firmware.c:190 modules/devices/firmware.c:228 +#: modules/devices/gpu.c:74 modules/devices/gpu.c:82 modules/devices/gpu.c:224 +#: modules/devices/ia64/processor.c:161 modules/devices/inputdevices.c:114 +#: modules/devices/monitors.c:398 modules/devices/pci.c:87 +#: modules/devices/pci.c:95 modules/devices/usb.c:168 +#: modules/devices/x86/processor.c:653 +msgid "Vendor" +msgstr "销售者" + +#: modules/computer.c:744 +msgid "Release Number" +msgstr "" + +#: modules/computer.c:752 +msgid "Screens" +msgstr "屏幕" + +#: modules/computer.c:758 +msgid "Disconnected" +msgstr "已断开" + +#: modules/computer.c:761 +msgid "Connected" +msgstr "已连接" + +#: modules/computer.c:769 +msgid "Unused" +msgstr "未使用" + +#: modules/computer.c:770 +#, c-format +msgid "%dx%d pixels, offset (%d, %d)" +msgstr "" + +#: modules/computer.c:779 +msgid "Outputs (XRandR)" +msgstr "Outputs (XRandR)" + +#: modules/computer.c:781 +msgid "OpenGL (GLX)" +msgstr "OpenGL (GLX)" + +#: modules/computer.c:783 +msgid "Renderer" +msgstr "渲染器" + +#: modules/computer.c:784 +msgid "Direct Rendering" +msgstr "直接渲染" + +#: modules/computer.c:786 +msgid "Version (Compatibility)" +msgstr "" + +#: modules/computer.c:787 +msgid "Shading Language Version (Compatibility)" +msgstr "" + +#: modules/computer.c:788 +msgid "Version (Core)" +msgstr "" + +#: modules/computer.c:789 +msgid "Shading Language Version (Core)" +msgstr "" + +#: modules/computer.c:790 +msgid "Version (ES)" +msgstr "" + +#: modules/computer.c:791 +msgid "Shading Language Version (ES)" +msgstr "" + +#: modules/computer.c:792 +msgid "GLX Version" +msgstr "GLX 版本" + +#: modules/computer.c:813 +msgid "Group" +msgstr "组" + +#: modules/computer.c:816 modules/computer/users.c:49 +msgid "Group ID" +msgstr "组标识" + +#. / "usable memory" +#: modules/computer.c:909 +#, c-format +msgid "%0.1f %s available to Linux" +msgstr "" + +#: modules/computer.c:911 modules/devices/dmi_memory.c:661 +#: modules/devices/dmi_memory.c:809 modules/devices/dmi_memory.c:936 +msgid "GiB" +msgstr "" + +#: modules/computer.c:913 modules/devices/dmi_memory.c:581 +#: modules/devices/dmi_memory.c:663 modules/devices/dmi_memory.c:723 +#: modules/devices/dmi_memory.c:811 modules/devices/dmi_memory.c:857 +#: modules/devices/dmi_memory.c:938 modules/network/net.c:395 +#: modules/network/net.c:417 modules/network/net.c:418 +msgid "MiB" +msgstr "MiB" + +#: modules/computer.c:915 modules/computer/memory_usage.c:77 +#: modules/computer/modules.c:149 +msgid "KiB" +msgstr "KiB" + +#: modules/computer.c:972 modules/devices/devicetree/pmac_data.c:82 +msgid "Motherboard" +msgstr "主板" + +#: modules/computer.c:1000 +msgid "Graphics" +msgstr "图形" + +#: modules/computer.c:1001 modules/devices.c:109 +msgid "Storage" +msgstr "存储器" + +#: modules/computer.c:1001 modules/devices.c:105 +msgid "Printers" +msgstr "打印机" + +#: modules/computer.c:1001 +msgid "Audio" +msgstr "音频" + +#: modules/computer.c:1050 +msgid "Gathers high-level computer information" +msgstr "" + +#: modules/computer/filesystem.c:83 +msgid "Filesystem" +msgstr "文件系统" + +#: modules/computer/filesystem.c:84 +msgid "Mounted As" +msgstr "挂载为" + +#: modules/computer/filesystem.c:84 +msgid "Read-Write" +msgstr "读/写模式" + +#: modules/computer/filesystem.c:84 +msgid "Read-Only" +msgstr "只读模式" + +#: modules/computer/filesystem.c:86 modules/devices/dmi_memory.c:609 +#: modules/devices/dmi_memory.c:754 modules/devices/dmi_memory.c:786 +#: modules/devices/dmi_memory.c:825 modules/devices/dmi_memory.c:894 +msgid "Size" +msgstr "容量" + +#: modules/computer/filesystem.c:87 +msgid "Used" +msgstr "已使用" + +#: modules/computer/filesystem.c:88 +msgid "Available" +msgstr "可用" + +#: modules/computer/languages.c:94 +msgid "Locale Information" +msgstr "区域信息" + +#: modules/computer/languages.c:96 modules/devices/dmi_memory.c:599 +#: modules/devices/gpu.c:204 +msgid "Source" +msgstr "源代码" + +#: modules/computer/languages.c:97 +msgid "Address" +msgstr "住址" + +#: modules/computer/languages.c:98 +msgid "E-mail" +msgstr "电子邮件" + +#: modules/computer/languages.c:100 +msgid "Territory" +msgstr "" + +#: modules/computer/languages.c:102 modules/devices/dmi.c:44 +msgid "Date" +msgstr "时间" + +#: modules/computer/languages.c:103 +msgid "Codeset" +msgstr "系统代码集" + +#: modules/computer/loadavg.c:64 +msgid "Couldn't obtain load average" +msgstr "" + +#: modules/computer/memory_usage.c:106 +msgid "Total Memory" +msgstr "总内存" + +#: modules/computer/memory_usage.c:107 +msgid "Free Memory" +msgstr "可用内存" + +#: modules/computer/memory_usage.c:108 +msgid "Cached Swap" +msgstr "已缓存的交换分区" + +#: modules/computer/memory_usage.c:109 +msgid "High Memory" +msgstr "高内存" + +#: modules/computer/memory_usage.c:110 +msgid "Free High Memory" +msgstr "可用高内存" + +#: modules/computer/memory_usage.c:111 +msgid "Low Memory" +msgstr "低内存" + +#: modules/computer/memory_usage.c:112 +msgid "Free Low Memory" +msgstr "可用低内存" + +#: modules/computer/memory_usage.c:113 +msgid "Virtual Memory" +msgstr "虚拟内存" + +#: modules/computer/memory_usage.c:114 +msgid "Free Virtual Memory" +msgstr "可用虚拟内存" + +#: modules/computer/modules.c:117 modules/computer/modules.c:118 +#: modules/computer/modules.c:119 modules/computer/modules.c:120 +#: modules/computer/modules.c:121 modules/computer/modules.c:122 +#: modules/devices/dmi.c:111 modules/devices/dmi_memory.c:881 +#: modules/devices/firmware.c:246 modules/devices/x86/processor.c:693 +msgid "(Not available)" +msgstr "(不可用)" + +#: modules/computer/modules.c:148 +msgid "Module Information" +msgstr "模块信息" + +#: modules/computer/modules.c:148 modules/devices/gpu.c:230 +msgid "Path" +msgstr "路径" + +#: modules/computer/modules.c:148 +msgid "Used Memory" +msgstr "已使用内存" + +#: modules/computer/modules.c:150 +msgid "Version Magic" +msgstr "版本魔数" + +#: modules/computer/modules.c:151 +msgid "In Linus' Tree" +msgstr "" + +#: modules/computer/modules.c:152 +msgid "Retpoline Enabled" +msgstr "" + +#: modules/computer/modules.c:152 +msgid "Copyright" +msgstr "版权所有" + +#: modules/computer/modules.c:152 +msgid "Author" +msgstr "作者" + +#: modules/computer/modules.c:153 +msgid "License" +msgstr "许可协议" + +#: modules/computer/modules.c:159 +msgid "Dependencies" +msgstr "依赖" + +#: modules/computer/os.c:36 modules/computer/os.c:37 modules/computer/os.c:38 +#: modules/computer/os.c:39 +msgid "GNU C Library" +msgstr "GNU C库" + +#: modules/computer/os.c:40 +msgid "uClibc or uClibc-ng" +msgstr "uClibc or uClibc-ng" + +#: modules/computer/os.c:41 +msgid "diet libc" +msgstr "" + +#: modules/computer/os.c:113 modules/computer/os.c:116 +msgid "GNOME Shell " +msgstr "GNOME Shell " + +#: modules/computer/os.c:124 modules/computer/os.c:127 +msgid "Version: " +msgstr "版本:" + +#: modules/computer/os.c:146 modules/computer/os.c:149 +msgid "MATE Desktop Environment " +msgstr "" + +#: modules/computer/os.c:180 +#, c-format +msgid "Unknown (Window Manager: %s)" +msgstr "未知 (窗口管理器:%s)" + +#. /{desktop environment} on {session type} +#: modules/computer/os.c:191 +#, c-format +msgid "%s on %s" +msgstr "" + +#: modules/computer/os.c:261 +msgid "Terminal" +msgstr "终端" + +#: modules/computer/os.c:278 +msgid "User access allowed" +msgstr "" + +#: modules/computer/os.c:280 +msgid "User access forbidden" +msgstr "" + +#: modules/computer/os.c:282 +msgid "Access allowed (running as superuser)" +msgstr "" + +#: modules/computer/os.c:284 +msgid "Access forbidden? (running as superuser)" +msgstr "" + +#: modules/computer/os.c:294 modules/computer/os.c:560 +msgid "Disabled" +msgstr "" + +#: modules/computer/os.c:296 +msgid "Partially enabled (mmap base+stack+VDSO base)" +msgstr "" + +#: modules/computer/os.c:298 +msgid "Fully enabled (mmap base+stack+VDSO base+heap)" +msgstr "" + +#. /bits of entropy for rng (0) +#: modules/computer/os.c:308 +msgid "(None or not available)" +msgstr "" + +#. /bits of entropy for rng (low/poor value) +#: modules/computer/os.c:309 +#, c-format +msgid "%d bits (low)" +msgstr "" + +#. /bits of entropy for rng (medium value) +#: modules/computer/os.c:310 +#, c-format +msgid "%d bits (medium)" +msgstr "" + +#. /bits of entropy for rng (high/good value) +#: modules/computer/os.c:311 +#, c-format +msgid "%d bits (healthy)" +msgstr "" + +#: modules/computer/os.c:555 +msgid "Not installed" +msgstr "" + +#: modules/computer/os.c:558 +msgid "Enabled" +msgstr "" + +#: modules/computer/users.c:47 +msgid "User Information" +msgstr "用户信息" + +#: modules/computer/users.c:48 +msgid "User ID" +msgstr "用户标识" + +#: modules/computer/users.c:51 +msgid "Default Shell" +msgstr "默认 Shell" + +#: modules/devices/alpha/processor.c:88 modules/devices/devicetree.c:163 +#: modules/devices/devicetree.c:209 modules/devices/devicetree/pmac_data.c:80 +#: modules/devices/gpu.c:106 modules/devices/ia64/processor.c:165 +#: modules/devices/m68k/processor.c:84 modules/devices/mips/processor.c:75 +#: modules/devices/monitors.c:400 modules/devices/parisc/processor.c:155 +#: modules/devices/ppc/processor.c:158 modules/devices/riscv/processor.c:182 +#: modules/devices/s390/processor.c:132 +msgid "Model" +msgstr "模型" + +#: modules/devices/alpha/processor.c:89 +msgid "Platform String" +msgstr "" + +#: modules/devices/alpha/processor.c:90 modules/devices/arm/processor.c:345 +#: modules/devices/ia64/processor.c:167 modules/devices/m68k/processor.c:87 +#: modules/devices/mips/processor.c:77 modules/devices/parisc/processor.c:158 +#: modules/devices/ppc/processor.c:160 modules/devices/riscv/processor.c:186 +#: modules/devices/sh/processor.c:87 modules/devices/x86/processor.c:657 +msgid "Frequency" +msgstr "频率" + +#: modules/devices/alpha/processor.c:91 modules/devices/arm/processor.c:346 +#: modules/devices/ia64/processor.c:168 modules/devices/m68k/processor.c:88 +#: modules/devices/mips/processor.c:78 modules/devices/parisc/processor.c:159 +#: modules/devices/ppc/processor.c:161 modules/devices/s390/processor.c:134 +#: modules/devices/sh/processor.c:90 modules/devices/x86/processor.c:658 +msgid "BogoMips" +msgstr "BogoMips" + +#: modules/devices/alpha/processor.c:92 modules/devices/arm/processor.c:347 +#: modules/devices/ia64/processor.c:169 modules/devices/m68k/processor.c:89 +#: modules/devices/mips/processor.c:79 modules/devices/parisc/processor.c:160 +#: modules/devices/ppc/processor.c:162 modules/devices/riscv/processor.c:187 +#: modules/devices/s390/processor.c:135 modules/devices/sh/processor.c:91 +#: modules/devices/sparc/processor.c:77 modules/devices/x86/processor.c:659 +msgid "Byte Order" +msgstr "字节序" + +#. /hw_cap +#. /flag:swp +#: modules/devices/arm/arm_data.c:42 +msgctxt "arm-flag" +msgid "SWP instruction (atomic read-modify-write)" +msgstr "" + +#. /flag:half +#: modules/devices/arm/arm_data.c:43 +msgctxt "arm-flag" +msgid "Half-word loads and stores" +msgstr "" + +#. /flag:thumb +#: modules/devices/arm/arm_data.c:44 +msgctxt "arm-flag" +msgid "Thumb (16-bit instruction set)" +msgstr "" + +#. /flag:26bit +#: modules/devices/arm/arm_data.c:45 +msgctxt "arm-flag" +msgid "26-Bit Model (Processor status register folded into program counter)" +msgstr "" + +#. /flag:fastmult +#: modules/devices/arm/arm_data.c:46 +msgctxt "arm-flag" +msgid "32x32->64-bit multiplication" +msgstr "" + +#. /flag:fpa +#: modules/devices/arm/arm_data.c:47 +msgctxt "arm-flag" +msgid "Floating point accelerator" +msgstr "" + +#. /flag:vfp +#: modules/devices/arm/arm_data.c:48 +msgctxt "arm-flag" +msgid "VFP (early SIMD vector floating point instructions)" +msgstr "" + +#. /flag:edsp +#: modules/devices/arm/arm_data.c:49 +msgctxt "arm-flag" +msgid "DSP extensions (the 'e' variant of the ARM9 CPUs, and all others above)" +msgstr "" + +#. /flag:java +#: modules/devices/arm/arm_data.c:50 +msgctxt "arm-flag" +msgid "Jazelle (Java bytecode accelerator)" +msgstr "" + +#. /flag:iwmmxt +#: modules/devices/arm/arm_data.c:51 +msgctxt "arm-flag" +msgid "SIMD instructions similar to Intel MMX" +msgstr "" + +#. /flag:crunch +#: modules/devices/arm/arm_data.c:52 +msgctxt "arm-flag" +msgid "MaverickCrunch coprocessor (if kernel support enabled)" +msgstr "" + +#. /flag:thumbee +#: modules/devices/arm/arm_data.c:53 +msgctxt "arm-flag" +msgid "ThumbEE" +msgstr "" + +#. /flag:neon +#: modules/devices/arm/arm_data.c:54 +msgctxt "arm-flag" +msgid "Advanced SIMD/NEON on AArch32" +msgstr "" + +#. /flag:evtstrm +#: modules/devices/arm/arm_data.c:55 +msgctxt "arm-flag" +msgid "Kernel event stream using generic architected timer" +msgstr "" + +#. /flag:vfpv3 +#: modules/devices/arm/arm_data.c:56 +msgctxt "arm-flag" +msgid "VFP version 3" +msgstr "" + +#. /flag:vfpv3d16 +#: modules/devices/arm/arm_data.c:57 +msgctxt "arm-flag" +msgid "VFP version 3 with 16 D-registers" +msgstr "" + +#. /flag:vfpv4 +#: modules/devices/arm/arm_data.c:58 +msgctxt "arm-flag" +msgid "VFP version 4 with fast context switching" +msgstr "" + +#. /flag:vfpd32 +#: modules/devices/arm/arm_data.c:59 +msgctxt "arm-flag" +msgid "VFP with 32 D-registers" +msgstr "" + +#. /flag:tls +#: modules/devices/arm/arm_data.c:60 +msgctxt "arm-flag" +msgid "TLS register" +msgstr "" + +#. /flag:idiva +#: modules/devices/arm/arm_data.c:61 +msgctxt "arm-flag" +msgid "SDIV and UDIV hardware division in ARM mode" +msgstr "" + +#. /flag:idivt +#: modules/devices/arm/arm_data.c:62 +msgctxt "arm-flag" +msgid "SDIV and UDIV hardware division in Thumb mode" +msgstr "" + +#. /flag:lpae +#: modules/devices/arm/arm_data.c:63 +msgctxt "arm-flag" +msgid "40-bit Large Physical Address Extension" +msgstr "" + +#. /hw_cap2 +#. /flag:pmull +#: modules/devices/arm/arm_data.c:65 +msgctxt "arm-flag" +msgid "64x64->128-bit F2m multiplication (arch>8)" +msgstr "" + +#. /flag:aes +#: modules/devices/arm/arm_data.c:66 +msgctxt "arm-flag" +msgid "Crypto:AES (arch>8)" +msgstr "" + +#. /flag:sha1 +#: modules/devices/arm/arm_data.c:67 +msgctxt "arm-flag" +msgid "Crypto:SHA1 (arch>8)" +msgstr "" + +#. /flag:sha2 +#: modules/devices/arm/arm_data.c:68 +msgctxt "arm-flag" +msgid "Crypto:SHA2 (arch>8)" +msgstr "" + +#. /flag:crc32 +#: modules/devices/arm/arm_data.c:69 +msgctxt "arm-flag" +msgid "CRC32 checksum instructions (arch>8)" +msgstr "" + +#. /flag:asimd +#: modules/devices/arm/arm_data.c:72 +msgctxt "arm-flag" +msgid "Advanced SIMD/NEON on AArch64 (arch>8)" +msgstr "" + +#: modules/devices/arm/processor.c:143 +msgid "ARM Processor" +msgstr "ARM 处理器" + +#: modules/devices/arm/processor.c:214 modules/devices/riscv/processor.c:147 +#: modules/devices/x86/processor.c:608 +msgid "Empty List" +msgstr "空列表" + +#: modules/devices/arm/processor.c:240 modules/devices/gpu.c:148 +#: modules/devices/gpu.c:226 modules/devices/x86/processor.c:268 +msgid "Clocks" +msgstr "时钟" + +#: modules/devices/arm/processor.c:286 modules/devices/arm/processor.c:299 +#: modules/devices/x86/processor.c:314 modules/devices/x86/processor.c:327 +#, c-format +msgid "%.2f-%.2f %s=%dx\n" +msgstr "" + +#: modules/devices/arm/processor.c:342 +msgid "Linux Name" +msgstr "" + +#: modules/devices/arm/processor.c:343 +msgid "Decoded Name" +msgstr "" + +#: modules/devices/arm/processor.c:344 modules/network/net.c:453 +msgid "Mode" +msgstr "模式" + +#: modules/devices/arm/processor.c:350 +msgid "ARM" +msgstr "ARM" + +#: modules/devices/arm/processor.c:351 +msgid "Implementer" +msgstr "" + +#: modules/devices/arm/processor.c:352 modules/devices/dmi_memory.c:896 +msgid "Part" +msgstr "" + +#: modules/devices/arm/processor.c:353 modules/devices/ia64/processor.c:162 +#: modules/devices/parisc/processor.c:156 modules/devices/riscv/processor.c:183 +msgid "Architecture" +msgstr "架构" + +#: modules/devices/arm/processor.c:354 +msgid "Variant" +msgstr "变量" + +#: modules/devices/arm/processor.c:356 modules/devices/riscv/processor.c:190 +#: modules/devices/sparc/processor.c:78 modules/devices/x86/processor.c:665 +msgid "Capabilities" +msgstr "容量" + +#: modules/devices/arm/processor.c:468 +msgid "SOC/Package" +msgstr "" + +#: modules/devices/arm/processor.c:472 modules/devices/x86/processor.c:751 +msgid "Logical CPU Config" +msgstr "逻辑 CPU 配置" + +#: modules/devices/arm/processor.c:489 +msgid "SOC/Package Information" +msgstr "" + +#: modules/devices/battery.c:178 +#, c-format +msgid "" +"\n" +"[Battery: %s]\n" +"State=%s (load: %s)\n" +"Capacity=%s / %s (%.2f%%)\n" +"Battery Technology=%s (%s)\n" +"Manufacturer=%s\n" +"Model Number=%s\n" +"Serial Number=%s\n" +msgstr "" + +#: modules/devices/battery.c:255 +#, c-format +msgid "" +"\n" +"[Battery: %s]\n" +"State=%s\n" +"Capacity=%s / %s\n" +"Battery Technology=%s\n" +"Manufacturer=%s\n" +"Model Number=%s\n" +"Serial Number=%s\n" +msgstr "" + +#: modules/devices/battery.c:343 +#, c-format +msgid "" +"\n" +"[Battery (APM)]\n" +"Charge=%d%%\n" +"Remaining Charge=%s of %s\n" +"Using=%s\n" +"APM driver version=%s\n" +"APM BIOS version=%s\n" +msgstr "" + +#: modules/devices/battery.c:355 +#, c-format +msgid "" +"\n" +"[Battery (APM)]\n" +"Charge=%d%%\n" +"Using=%s\n" +"APM driver version=%s\n" +"APM BIOS version=%s\n" +msgstr "" + +#: modules/devices/battery.c:382 +msgid "" +"[No batteries]\n" +"No batteries found on this system=\n" +msgstr "" + +#: modules/devices.c:100 +msgid "Graphics Processors" +msgstr "图形处理器" + +#: modules/devices.c:101 modules/devices/monitors.c:445 +#: modules/devices/monitors.c:492 +msgid "Monitors" +msgstr "" + +#: modules/devices.c:102 modules/devices/pci.c:163 +msgid "PCI Devices" +msgstr "PCI 设备" + +#: modules/devices.c:103 modules/devices/usb.c:210 +msgid "USB Devices" +msgstr "USB 设备" + +#: modules/devices.c:104 +msgid "Firmware" +msgstr "" + +#: modules/devices.c:106 +msgid "Battery" +msgstr "电池" + +#: modules/devices.c:107 +msgid "Sensors" +msgstr "传感器" + +#: modules/devices.c:110 +msgid "System DMI" +msgstr "" + +#: modules/devices.c:111 +msgid "Memory Devices" +msgstr "" + +#: modules/devices.c:113 modules/devices.c:115 +msgid "Device Tree" +msgstr "设备树" + +#: modules/devices.c:117 +msgid "Resources" +msgstr "资源" + +#: modules/devices.c:177 +#, c-format +msgid "%d physical processor" +msgid_plural "%d physical processors" +msgstr[0] "" + +#: modules/devices.c:178 +#, c-format +msgid "%d core" +msgid_plural "%d cores" +msgstr[0] "" + +#: modules/devices.c:179 +#, c-format +msgid "%d thread" +msgid_plural "%d threads" +msgstr[0] "%d 线程" + +#. /NP procs; NC cores; NT threads +#: modules/devices.c:180 +#, c-format +msgid "%s; %s; %s" +msgstr "" + +#: modules/devices.c:726 +msgid "Sensor" +msgstr "传感器" + +#: modules/devices.c:773 modules/devices/dmi_memory.c:826 +msgid "Devices" +msgstr "设备" + +#: modules/devices.c:785 +msgid "Update PCI ID listing" +msgstr "" + +#: modules/devices.c:797 +msgid "Update CPU feature database" +msgstr "" + +#: modules/devices.c:825 +msgid "Gathers information about hardware devices" +msgstr "" + +#: modules/devices.c:844 +msgid "Resource information requires superuser privileges" +msgstr "" + +#: modules/devices.c:850 +msgid "" +"Any NVMe storage devices present are not listed.\n" +"udisksd is required for NVMe devices." +msgstr "" + +#: modules/devices/devicetree.c:52 +msgid "Properties" +msgstr "属性" + +#: modules/devices/devicetree.c:53 +msgid "Children" +msgstr "子女" + +#: modules/devices/devicetree.c:89 +msgid "Node" +msgstr "节点" + +#: modules/devices/devicetree.c:90 +msgid "Node Path" +msgstr "节点路径" + +#: modules/devices/devicetree.c:91 +msgid "Alias" +msgstr "别名" + +#: modules/devices/devicetree.c:92 +msgid "Symbol" +msgstr "符号" + +#: modules/devices/devicetree.c:145 modules/devices/devicetree/pmac_data.c:79 +msgid "Platform" +msgstr "平台" + +#: modules/devices/devicetree.c:146 modules/devices/devicetree.c:211 +#: modules/devices/gpu.c:231 +msgid "Compatible" +msgstr "" + +#: modules/devices/devicetree.c:147 +msgid "GPU-compatible" +msgstr "" + +#: modules/devices/devicetree.c:162 +msgid "Raspberry Pi or Compatible" +msgstr "" + +#: modules/devices/devicetree.c:164 modules/devices/devicetree.c:191 +#: modules/devices/devicetree.c:210 modules/devices/devicetree/rpi_data.c:168 +#: modules/devices/dmi.c:41 modules/devices/dmi.c:51 modules/devices/dmi.c:57 +#: modules/devices/usb.c:178 +msgid "Serial Number" +msgstr "序列号" + +#: modules/devices/devicetree.c:165 modules/devices/devicetree/rpi_data.c:165 +msgid "RCode" +msgstr "" + +#: modules/devices/devicetree.c:165 +msgid "No revision code available; unable to lookup model details." +msgstr "" + +#: modules/devices/devicetree.c:190 +msgid "More" +msgstr "更多" + +#: modules/devices/devicetree.c:271 +msgid "Messages" +msgstr "消息" + +#: modules/devices/devicetree/pmac_data.c:78 +msgid "Apple Power Macintosh" +msgstr "" + +#: modules/devices/devicetree/pmac_data.c:83 +msgid "Detected as" +msgstr "" + +#: modules/devices/devicetree/pmac_data.c:84 +msgid "PMAC Flags" +msgstr "" + +#: modules/devices/devicetree/pmac_data.c:85 +msgid "L2 Cache" +msgstr "L2 缓存" + +#: modules/devices/devicetree/pmac_data.c:86 +msgid "PMAC Generation" +msgstr "" + +#: modules/devices/devicetree/rpi_data.c:160 +#: modules/devices/devicetree/rpi_data.c:161 +msgid "Raspberry Pi" +msgstr "" + +#: modules/devices/devicetree/rpi_data.c:161 +msgid "Board Name" +msgstr "主板名称" + +#: modules/devices/devicetree/rpi_data.c:162 +msgid "PCB Revision" +msgstr "PCB 修订版本" + +#: modules/devices/devicetree/rpi_data.c:163 +msgid "Introduction" +msgstr "介绍" + +#: modules/devices/devicetree/rpi_data.c:164 modules/devices/usb.c:170 +msgid "Manufacturer" +msgstr "制造商" + +#: modules/devices/devicetree/rpi_data.c:166 +msgid "SOC (spec)" +msgstr "" + +#: modules/devices/devicetree/rpi_data.c:167 +msgid "Memory (spec)" +msgstr "" + +#: modules/devices/devicetree/rpi_data.c:169 +msgid "Permanent overvolt bit" +msgstr "" + +#: modules/devices/devicetree/rpi_data.c:169 +msgctxt "rpi-ov-bit" +msgid "Set" +msgstr "" + +#: modules/devices/devicetree/rpi_data.c:169 +msgctxt "rpi-ov-bit" +msgid "Not set" +msgstr "" + +#: modules/devices/dmi.c:36 modules/devices/inputdevices.c:115 +#: modules/devices/usb.c:167 +msgid "Product" +msgstr "产品" + +#: modules/devices/dmi.c:38 modules/devices/ia64/processor.c:164 +#: modules/devices/sh/processor.c:86 +msgid "Family" +msgstr "家族" + +#: modules/devices/dmi.c:42 +msgid "SKU" +msgstr "" + +#: modules/devices/dmi.c:43 +msgid "BIOS" +msgstr "BIOS" + +#: modules/devices/dmi.c:52 modules/devices/dmi.c:58 +msgid "Asset Tag" +msgstr "" + +#: modules/devices/dmi.c:115 modules/devices/dmi_memory.c:882 +#: modules/devices/x86/processor.c:694 +msgid "(Not available; Perhaps try running HardInfo as root.)" +msgstr "" + +#: modules/devices/dmi.c:156 +msgid "DMI Unavailable" +msgstr "" + +#: modules/devices/dmi.c:158 +msgid "DMI is not avaliable. Perhaps this platform does not provide DMI." +msgstr "" + +#: modules/devices/dmi.c:159 +msgid "DMI is not available; Perhaps try running HardInfo as root." +msgstr "" + +#: modules/devices/dmi_memory.c:598 +msgid "Serial Presence Detect (SPD)" +msgstr "" + +#: modules/devices/dmi_memory.c:601 +msgid "SPD Revision" +msgstr "" + +#: modules/devices/dmi_memory.c:602 modules/devices/dmi_memory.c:748 +msgid "Form Factor" +msgstr "" + +#: modules/devices/dmi_memory.c:604 +msgid "Module Vendor" +msgstr "" + +#: modules/devices/dmi_memory.c:606 +msgid "DRAM Vendor" +msgstr "" + +#: modules/devices/dmi_memory.c:608 modules/devices/dmi_memory.c:753 +msgid "Part Number" +msgstr "" + +#: modules/devices/dmi_memory.c:610 +msgid "Manufacturing Date (Week / Year)" +msgstr "" + +#: modules/devices/dmi_memory.c:644 modules/devices/dmi_memory.c:879 +msgid "Memory Device List" +msgstr "" + +#: modules/devices/dmi_memory.c:686 +msgid "Memory Array" +msgstr "" + +#: modules/devices/dmi_memory.c:687 modules/devices/x86/processor.c:713 +msgid "DMI Handle" +msgstr "" + +#: modules/devices/dmi_memory.c:688 modules/devices/dmi_memory.c:746 +#: modules/devices/dmi_memory.c:784 modules/devices/dmi_memory.c:893 +msgid "Locator" +msgstr "" + +#: modules/devices/dmi_memory.c:689 +msgid "Use" +msgstr "" + +#: modules/devices/dmi_memory.c:690 +msgid "Error Correction Type" +msgstr "" + +#: modules/devices/dmi_memory.c:691 +msgid "Size (Present / Max)" +msgstr "" + +#: modules/devices/dmi_memory.c:692 +msgid "Devices (Populated / Sockets)" +msgstr "" + +#: modules/devices/dmi_memory.c:693 modules/devices/dmi_memory.c:827 +msgid "Types Present" +msgstr "" + +#: modules/devices/dmi_memory.c:744 modules/devices/dmi_memory.c:782 +msgid "Memory Socket" +msgstr "" + +#: modules/devices/dmi_memory.c:745 modules/devices/dmi_memory.c:783 +msgid "DMI Handles (Array, Socket)" +msgstr "" + +#: modules/devices/dmi_memory.c:747 modules/devices/dmi_memory.c:785 +msgid "Bank Locator" +msgstr "" + +#: modules/devices/dmi_memory.c:755 +msgid "Rated Speed" +msgstr "" + +#: modules/devices/dmi_memory.c:756 +msgid "Configured Speed" +msgstr "" + +#: modules/devices/dmi_memory.c:757 +msgid "Data Width/Total Width" +msgstr "" + +#: modules/devices/dmi_memory.c:758 +msgid "Rank" +msgstr "" + +#: modules/devices/dmi_memory.c:759 +msgid "Minimum Voltage" +msgstr "" + +#: modules/devices/dmi_memory.c:760 +msgid "Maximum Voltage" +msgstr "" + +#: modules/devices/dmi_memory.c:761 +msgid "Configured Voltage" +msgstr "" + +#: modules/devices/dmi_memory.c:786 modules/devices/dmi_memory.c:793 +#: modules/devices/monitors.c:492 +msgid "(Empty)" +msgstr "" + +#: modules/devices/dmi_memory.c:824 +msgid "Serial Presence Detect (SPD) Summary" +msgstr "" + +#: modules/devices/dmi_memory.c:947 +msgid " dmidecode utility available" +msgstr "" + +#: modules/devices/dmi_memory.c:948 +msgid " ... and HardInfo running with superuser privileges" +msgstr "" + +#: modules/devices/dmi_memory.c:949 +msgid " eeprom module loaded (for SDR, DDR, DDR2, DDR3)" +msgstr "" + +#: modules/devices/dmi_memory.c:950 +msgid "" +" ... or ee1004 module loaded and configured! " +"(for DDR4)" +msgstr "" + +#: modules/devices/dmi_memory.c:961 +msgid "Memory information requires one or both of the following:" +msgstr "" + +#: modules/devices/dmi_memory.c:982 +msgid "" +"\"More often than not, information contained in the DMI tables is " +"inaccurate,\n" +"incomplete or simply wrong.\" -dmidecode manual page" +msgstr "" + +#: modules/devices/firmware.c:69 +msgid "Device cannot be removed easily" +msgstr "" + +#: modules/devices/firmware.c:70 +msgid "Device is updatable in this or any other mode" +msgstr "" + +#: modules/devices/firmware.c:71 +msgid "Update can only be done from offline mode" +msgstr "" + +#: modules/devices/firmware.c:72 +msgid "Requires AC power" +msgstr "" + +#: modules/devices/firmware.c:73 +msgid "Is locked and can be unlocked" +msgstr "" + +#: modules/devices/firmware.c:74 +msgid "Is found in current metadata" +msgstr "" + +#: modules/devices/firmware.c:75 +msgid "Requires a bootloader mode to be manually enabled by the user" +msgstr "" + +#: modules/devices/firmware.c:76 +msgid "Has been registered with other plugins" +msgstr "" + +#: modules/devices/firmware.c:77 +msgid "Requires a reboot to apply firmware or to reload hardware" +msgstr "" + +#: modules/devices/firmware.c:78 +msgid "Requires system shutdown to apply firmware" +msgstr "" + +#: modules/devices/firmware.c:79 +msgid "Has been reported to a metadata server" +msgstr "" + +#: modules/devices/firmware.c:80 +msgid "User has been notified" +msgstr "" + +#: modules/devices/firmware.c:81 +msgid "Always use the runtime version rather than the bootloader" +msgstr "" + +#: modules/devices/firmware.c:82 +msgid "Install composite firmware on the parent before the child" +msgstr "" + +#: modules/devices/firmware.c:83 +msgid "Is currently in bootloader mode" +msgstr "" + +#: modules/devices/firmware.c:84 +msgid "The hardware is waiting to be replugged" +msgstr "" + +#: modules/devices/firmware.c:85 +msgid "Ignore validation safety checks when flashing this device" +msgstr "" + +#: modules/devices/firmware.c:86 +msgid "Requires the update to be retried with a new plugin" +msgstr "" + +#: modules/devices/firmware.c:87 +msgid "Do not add instance IDs from the device baseclass" +msgstr "" + +#: modules/devices/firmware.c:88 +msgid "Device update needs to be separately activated" +msgstr "" + +#: modules/devices/firmware.c:89 +msgid "" +"Ensure the version is a valid semantic version, e.g. numbers separated with " +"dots" +msgstr "" + +#: modules/devices/firmware.c:90 +msgid "Extra metadata can be exposed about this device" +msgstr "" + +#: modules/devices/firmware.c:104 +msgid "DeviceId" +msgstr "" + +#: modules/devices/firmware.c:104 +msgid "Guid" +msgstr "" + +#: modules/devices/firmware.c:104 +msgid "Plugin" +msgstr "" + +#: modules/devices/firmware.c:104 modules/network.c:380 +msgid "Flags" +msgstr "标志" + +#: modules/devices/firmware.c:105 +msgid "VendorId" +msgstr "" + +#: modules/devices/firmware.c:105 +msgid "VersionBootloader" +msgstr "" + +#: modules/devices/firmware.c:106 +msgid "Icon" +msgstr "" + +#: modules/devices/firmware.c:106 +msgid "InstallDuration" +msgstr "" + +#: modules/devices/firmware.c:106 +msgid "Created" +msgstr "" + +#: modules/devices/firmware.c:245 +msgid "Firmware List" +msgstr "" + +#: modules/devices/firmware.c:258 +msgid "Requires the fwupdmgr utility." +msgstr "" + +#: modules/devices/gpu.c:84 modules/devices/pci.c:97 +msgid "SVendor" +msgstr "" + +#: modules/devices/gpu.c:85 modules/devices/pci.c:98 +msgid "SDevice" +msgstr "" + +#: modules/devices/gpu.c:93 modules/devices/pci.c:108 +msgid "PCI Express" +msgstr "" + +#: modules/devices/gpu.c:94 modules/devices/pci.c:110 +msgid "Maximum Link Width" +msgstr "" + +#: modules/devices/gpu.c:95 modules/devices/pci.c:112 +msgid "Maximum Link Speed" +msgstr "" + +#: modules/devices/gpu.c:95 modules/devices/pci.c:111 modules/devices/pci.c:112 +msgid "GT/s" +msgstr "GT/s" + +#: modules/devices/gpu.c:105 +msgid "NVIDIA" +msgstr "NVIDIA" + +#: modules/devices/gpu.c:107 +msgid "BIOS Version" +msgstr "BIOS 版本" + +#: modules/devices/gpu.c:108 +msgid "UUID" +msgstr "UUID" + +#: modules/devices/gpu.c:142 modules/devices/gpu.c:222 +#: modules/devices/inputdevices.c:110 modules/devices/pci.c:129 +#: modules/devices/usb.c:166 +msgid "Device Information" +msgstr "设备信息" + +#: modules/devices/gpu.c:143 modules/devices/gpu.c:223 +msgid "Location" +msgstr "位置" + +#: modules/devices/gpu.c:144 +msgid "DRM Device" +msgstr "DRM 设备" + +#: modules/devices/gpu.c:145 modules/devices/pci.c:130 +#: modules/devices/usb.c:133 modules/devices/usb.c:174 +msgid "Class" +msgstr "分类" + +#: modules/devices/gpu.c:154 modules/devices/pci.c:135 +msgid "In Use" +msgstr "使用中" + +#: modules/devices/gpu.c:185 +msgid "Unknown integrated GPU" +msgstr "" + +#: modules/devices/gpu.c:191 +msgid "clock-frequency property" +msgstr "" + +#: modules/devices/gpu.c:192 +msgid "Operating Points (OPPv1)" +msgstr "" + +#: modules/devices/gpu.c:193 +msgid "Operating Points (OPPv2)" +msgstr "" + +#: modules/devices/gpu.c:229 +msgid "Device Tree Node" +msgstr "" + +#: modules/devices/gpu.c:232 modules/devices/monitors.c:471 +#: modules/network/net.c:454 +msgid "Status" +msgstr "状态" + +#: modules/devices/gpu.c:249 +msgid "GPUs" +msgstr "" + +#: modules/devices/gpu.c:273 +msgid "No GPU devices found" +msgstr "" + +#: modules/devices/ia64/processor.c:108 +msgid "IA64 Processor" +msgstr "" + +#: modules/devices/ia64/processor.c:163 +msgid "Architecture Revision" +msgstr "" + +#: modules/devices/ia64/processor.c:170 +msgid "CPU regs" +msgstr "" + +#: modules/devices/ia64/processor.c:171 +msgid "Features" +msgstr "功能" + +#: modules/devices/inputdevices.c:113 modules/devices/pci.c:139 +#: modules/devices/usb.c:180 +msgid "Bus" +msgstr "总线" + +#: modules/devices/inputdevices.c:119 +msgid "Connected to" +msgstr "连接到" + +#: modules/devices/inputdevices.c:123 +msgid "InfraRed port" +msgstr "" + +#: modules/devices/m68k/processor.c:85 modules/devices/riscv/processor.c:185 +msgid "MMU" +msgstr "MMU" + +#: modules/devices/m68k/processor.c:86 modules/devices/sparc/processor.c:76 +msgid "FPU" +msgstr "FPU" + +#: modules/devices/m68k/processor.c:90 +msgid "Calibration" +msgstr "校正" + +#: modules/devices/mips/processor.c:76 +msgid "System Type" +msgstr "系统类型" + +#: modules/devices/monitors.c:29 modules/devices/monitors.c:253 +#: modules/devices/monitors.c:346 modules/devices/spd-decode.c:595 +msgid "(Unspecified)" +msgstr "" + +#: modules/devices/monitors.c:228 +#, c-format +msgid "Week %d of %d" +msgstr "" + +#: modules/devices/monitors.c:238 +msgid "Ok" +msgstr "" + +#: modules/devices/monitors.c:238 +msgid "Fail" +msgstr "" + +#: modules/devices/monitors.c:266 modules/devices/monitors.c:274 +#: modules/devices/monitors.c:282 modules/devices/monitors.c:293 +#: modules/devices/monitors.c:301 modules/devices/monitors.c:308 +#: modules/devices/monitors.c:316 modules/devices/monitors.c:324 +#: modules/devices/monitors.c:332 modules/devices/monitors.c:338 +msgid "(Empty List)" +msgstr "" + +#: modules/devices/monitors.c:390 +msgid "Signal Type" +msgstr "" + +#: modules/devices/monitors.c:390 +msgid "Digital" +msgstr "" + +#: modules/devices/monitors.c:390 +msgid "Analog" +msgstr "" + +#: modules/devices/monitors.c:391 modules/devices/usb.c:132 +#: modules/network.c:310 modules/network.c:363 modules/network.c:380 +msgid "Interface" +msgstr "界面" + +#: modules/devices/monitors.c:392 +msgid "Bits per Color Channel" +msgstr "" + +#: modules/devices/monitors.c:393 +msgid "Speaker Allocation" +msgstr "" + +#: modules/devices/monitors.c:394 +msgid "Output (Max)" +msgstr "" + +#: modules/devices/monitors.c:397 +msgid "EDID Device" +msgstr "" + +#: modules/devices/monitors.c:401 +msgid "Serial" +msgstr "" + +#: modules/devices/monitors.c:402 +msgid "Manufacture Date" +msgstr "" + +#: modules/devices/monitors.c:403 +msgid "EDID Meta" +msgstr "" + +#: modules/devices/monitors.c:404 +msgid "Data Size" +msgstr "" + +#: modules/devices/monitors.c:404 +msgid "bytes" +msgstr "" + +#: modules/devices/monitors.c:406 +msgid "Extension Blocks" +msgstr "" + +#: modules/devices/monitors.c:407 +msgid "Extended to" +msgstr "" + +#: modules/devices/monitors.c:408 +msgid "Checksum" +msgstr "" + +#: modules/devices/monitors.c:409 +msgid "EDID Descriptors" +msgstr "" + +#: modules/devices/monitors.c:410 +msgid "Detailed Timing Descriptors (DTD)" +msgstr "" + +#: modules/devices/monitors.c:411 +msgid "Established Timings Bitmap (ETB)" +msgstr "" + +#: modules/devices/monitors.c:412 +msgid "Standard Timings (STD)" +msgstr "" + +#: modules/devices/monitors.c:413 +msgid "E-EDID Extension Blocks" +msgstr "" + +#: modules/devices/monitors.c:414 +msgid "EIA/CEA-861 Data Blocks" +msgstr "" + +#: modules/devices/monitors.c:415 +msgid "EIA/CEA-861 Short Audio Descriptors" +msgstr "" + +#: modules/devices/monitors.c:416 +msgid "EIA/CEA-861 Short Video Descriptors" +msgstr "" + +#: modules/devices/monitors.c:417 +msgid "DisplayID Timings" +msgstr "" + +#: modules/devices/monitors.c:418 +msgid "DisplayID Strings" +msgstr "" + +#: modules/devices/monitors.c:419 +msgid "Hex Dump" +msgstr "" + +#: modules/devices/monitors.c:419 +msgid "Data" +msgstr "" + +#: modules/devices/monitors.c:469 modules/devices/monitors.c:501 +#: modules/devices/pci.c:137 modules/devices/usb.c:179 +msgid "Connection" +msgstr "连接" + +#: modules/devices/monitors.c:470 +msgid "DRM" +msgstr "" + +#: modules/devices/parisc/processor.c:107 +msgid "PA-RISC Processor" +msgstr "" + +#: modules/devices/parisc/processor.c:161 +msgid "HVersion" +msgstr "" + +#: modules/devices/parisc/processor.c:162 +msgid "SVersion" +msgstr "" + +#: modules/devices/pci.c:109 +msgid "Link Width" +msgstr "" + +#: modules/devices/pci.c:111 +msgid "Link Speed" +msgstr "" + +#: modules/devices/pci.c:138 +msgid "Domain" +msgstr "域" + +#: modules/devices/pci.c:141 +msgid "Function" +msgstr "功能" + +#: modules/devices/pci.c:185 +msgid "No PCI devices found" +msgstr "未找到 PCI 设备" + +#: modules/devices/ppc/processor.c:117 +msgid "POWER Processor" +msgstr "POWER 处理器" + +#: modules/devices/printers.c:81 +msgid "⚬ Can do black and white printing=\n" +msgstr "" + +#: modules/devices/printers.c:83 +msgid "⚬ Can do color printing=\n" +msgstr "" + +#: modules/devices/printers.c:85 +msgid "⚬ Can do duplexing=\n" +msgstr "" + +#: modules/devices/printers.c:87 +msgid "⚬ Can do staple output=\n" +msgstr "" + +#: modules/devices/printers.c:89 +msgid "⚬ Can do copies=\n" +msgstr "" + +#: modules/devices/printers.c:91 +msgid "⚬ Can collate copies=\n" +msgstr "" + +#: modules/devices/printers.c:93 +msgid "⚬ Printer is rejecting jobs=\n" +msgstr "" + +#: modules/devices/printers.c:95 +msgid "⚬ Printer was automatically discovered and added=\n" +msgstr "" + +#: modules/devices/printers.c:110 +msgid "Idle" +msgstr "发呆" + +#: modules/devices/printers.c:112 +msgid "Printing a Job" +msgstr "打印一个任务" + +#: modules/devices/printers.c:114 +msgid "Stopped" +msgstr "已停止" + +#: modules/devices/printers.c:190 +msgid "" +"[Printers]\n" +"No suitable CUPS library found=" +msgstr "" +"[打印机]\n" +"未找到合适的 CUPS 库=" + +#: modules/devices/printers.c:200 +msgid "[Printers (CUPS)]\n" +msgstr "" + +#: modules/devices/printers.c:263 +msgid "" +"[Printers]\n" +"No printers found=\n" +msgstr "" +"[打印机]\n" +"未找到打印机=\n" + +#: modules/devices/riscv/processor.c:107 +msgid "RISC-V Processor" +msgstr "RISC-V 处理器" + +#: modules/devices/riscv/processor.c:184 +msgid "uarch" +msgstr "" + +#. /ext:RV32 +#: modules/devices/riscv/riscv_data.c:37 +msgctxt "rv-ext" +msgid "RISC-V 32-bit" +msgstr "RISC-V 32位" + +#. /ext:RV64 +#: modules/devices/riscv/riscv_data.c:38 +msgctxt "rv-ext" +msgid "RISC-V 64-bit" +msgstr "RISC-V 64位" + +#. /ext:RV128 +#: modules/devices/riscv/riscv_data.c:39 +msgctxt "rv-ext" +msgid "RISC-V 128-bit" +msgstr "RISC-V 128位" + +#. /ext:E +#: modules/devices/riscv/riscv_data.c:40 +msgctxt "rv-ext" +msgid "Base embedded integer instructions (15 registers)" +msgstr "" + +#. /ext:I +#: modules/devices/riscv/riscv_data.c:41 +msgctxt "rv-ext" +msgid "Base integer instructions (31 registers)" +msgstr "" + +#. /ext:M +#: modules/devices/riscv/riscv_data.c:42 +msgctxt "rv-ext" +msgid "Hardware integer multiply and divide" +msgstr "" + +#. /ext:A +#: modules/devices/riscv/riscv_data.c:43 +msgctxt "rv-ext" +msgid "Atomic memory operations" +msgstr "" + +#. /ext:C +#: modules/devices/riscv/riscv_data.c:44 +msgctxt "rv-ext" +msgid "Compressed 16-bit instructions" +msgstr "" + +#. /ext:F +#: modules/devices/riscv/riscv_data.c:45 +msgctxt "rv-ext" +msgid "Floating-point instructions, single-precision" +msgstr "" + +#. /ext:D +#: modules/devices/riscv/riscv_data.c:46 +msgctxt "rv-ext" +msgid "Floating-point instructions, double-precision" +msgstr "" + +#. /ext:Q +#: modules/devices/riscv/riscv_data.c:47 +msgctxt "rv-ext" +msgid "Floating-point instructions, quad-precision" +msgstr "" + +#. /ext:B +#: modules/devices/riscv/riscv_data.c:48 +msgctxt "rv-ext" +msgid "Bit manipulation instructions" +msgstr "" + +#. /ext:V +#: modules/devices/riscv/riscv_data.c:49 +msgctxt "rv-ext" +msgid "Vector operations" +msgstr "" + +#. /ext:T +#: modules/devices/riscv/riscv_data.c:50 +msgctxt "rv-ext" +msgid "Transactional memory" +msgstr "" + +#. /ext:P +#: modules/devices/riscv/riscv_data.c:51 +msgctxt "rv-ext" +msgid "Packed SIMD instructions" +msgstr "" + +#. /ext:L +#: modules/devices/riscv/riscv_data.c:52 +msgctxt "rv-ext" +msgid "Decimal floating-point instructions" +msgstr "" + +#. /ext:J +#: modules/devices/riscv/riscv_data.c:53 +msgctxt "rv-ext" +msgid "Dynamically translated languages" +msgstr "" + +#. /ext:N +#: modules/devices/riscv/riscv_data.c:54 +msgctxt "rv-ext" +msgid "User-level interrupts" +msgstr "用户级中断" + +#: modules/devices/s390/processor.c:92 +msgid "S390 Processor" +msgstr "S390 处理器" + +#: modules/devices/s390/processor.c:133 +msgid "ID String" +msgstr "ID 字符串" + +#: modules/devices/sh/processor.c:55 +msgid "SuperH Processor" +msgstr "" + +#: modules/devices/sh/processor.c:88 +msgid "Bus Frequency" +msgstr "" + +#: modules/devices/sh/processor.c:89 +msgid "Module Frequency" +msgstr "" + +#: modules/devices/spd-decode.c:306 +msgid "Row address bits" +msgstr "" + +#: modules/devices/spd-decode.c:307 +msgid "Column address bits" +msgstr "" + +#: modules/devices/spd-decode.c:308 +msgid "Number of rows" +msgstr "" + +#: modules/devices/spd-decode.c:309 +msgid "Data width" +msgstr "" + +#: modules/devices/spd-decode.c:310 +msgid "Interface signal levels" +msgstr "" + +#: modules/devices/spd-decode.c:311 +msgid "Configuration type" +msgstr "" + +#: modules/devices/spd-decode.c:312 +msgid "Refresh" +msgstr "" + +#: modules/devices/spd-decode.c:313 modules/devices/spd-decode.c:397 +#: modules/devices/spd-decode.c:492 modules/devices/spd-decode.c:617 +msgid "Timings" +msgstr "" + +#: modules/devices/spd-decode.c:593 +msgid "Ranks" +msgstr "" + +#: modules/devices/spd-decode.c:594 +msgid "IO Pins per Chip" +msgstr "" + +#: modules/devices/spd-decode.c:595 +msgid "Die count" +msgstr "" + +#: modules/devices/spd-decode.c:596 +msgid "Thermal Sensor" +msgstr "" + +#: modules/devices/spd-decode.c:596 +msgid "Present" +msgstr "" + +#: modules/devices/spd-decode.c:596 +msgid "Not present" +msgstr "" + +#: modules/devices/spd-decode.c:597 +msgid "Supported Voltages" +msgstr "" + +#: modules/devices/spd-decode.c:601 +msgid "Supported CAS Latencies" +msgstr "" + +#: modules/devices/spd-decode.c:638 +msgid "Invalid" +msgstr "" + +#: modules/devices/spd-decode.c:870 +msgid "XMP Profile" +msgstr "" + +#: modules/devices/spd-decode.c:871 modules/devices/usb.c:173 +msgid "Speed" +msgstr "" + +#: modules/devices/spd-decode.c:872 modules/devices/spd-decode.c:914 +#: modules/devices/x86/processor.c:715 +msgid "Voltage" +msgstr "" + +#: modules/devices/spd-decode.c:873 +msgid "XMP Timings" +msgstr "" + +#: modules/devices/spd-decode.c:915 +msgid "XMP" +msgstr "" + +#: modules/devices/spd-decode.c:916 +msgid "JEDEC Timings" +msgstr "" + +#: modules/devices/storage.c:84 +msgid "Read Error Rate" +msgstr "" + +#: modules/devices/storage.c:85 +msgid "Throughput Performance" +msgstr "" + +#: modules/devices/storage.c:86 +msgid "Spin-Up Time" +msgstr "" + +#: modules/devices/storage.c:87 +msgid "Start/Stop Count" +msgstr "" + +#: modules/devices/storage.c:88 +msgid "Reallocated Sector Count" +msgstr "" + +#: modules/devices/storage.c:89 +msgid "Read Channel Margin" +msgstr "" + +#: modules/devices/storage.c:90 +msgid "Seek Error Rate" +msgstr "" + +#: modules/devices/storage.c:91 +msgid "Seek Timer Performance" +msgstr "" + +#: modules/devices/storage.c:92 modules/devices/storage.c:131 +msgid "Power-On Hours" +msgstr "" + +#: modules/devices/storage.c:93 +msgid "Spin Retry Count" +msgstr "" + +#: modules/devices/storage.c:94 +msgid "Calibration Retry Count" +msgstr "" + +#: modules/devices/storage.c:95 +msgid "Power Cycle Count" +msgstr "" + +#: modules/devices/storage.c:96 modules/devices/storage.c:113 +msgid "Soft Read Error Rate" +msgstr "" + +#: modules/devices/storage.c:97 +msgid "Runtime Bad Block" +msgstr "" + +#: modules/devices/storage.c:98 +msgid "End-to-End error" +msgstr "" + +#: modules/devices/storage.c:99 +msgid "Reported Uncorrectable Errors" +msgstr "" + +#: modules/devices/storage.c:100 +msgid "Command Timeout" +msgstr "" + +#: modules/devices/storage.c:101 +msgid "High Fly Writes" +msgstr "" + +#: modules/devices/storage.c:102 +msgid "Airflow Temperature" +msgstr "" + +#: modules/devices/storage.c:103 +msgid "G-sense Error Rate" +msgstr "" + +#: modules/devices/storage.c:104 +msgid "Power-off Retract Count" +msgstr "" + +#: modules/devices/storage.c:105 +msgid "Load Cycle Count" +msgstr "" + +#: modules/devices/storage.c:106 modules/devices/storage.c:129 +msgid "Temperature" +msgstr "" + +#: modules/devices/storage.c:107 +msgid "Hardware ECC Recovered" +msgstr "" + +#: modules/devices/storage.c:108 +msgid "Reallocation Event Count" +msgstr "" + +#: modules/devices/storage.c:109 +msgid "Current Pending Sector Count" +msgstr "" + +#: modules/devices/storage.c:110 +msgid "Uncorrectable Sector Count" +msgstr "" + +#: modules/devices/storage.c:111 +msgid "UltraDMA CRC Error Count" +msgstr "" + +#: modules/devices/storage.c:112 +msgid "Multi-Zone Error Rate" +msgstr "" + +#: modules/devices/storage.c:114 +msgid "Run Out Cancel" +msgstr "" + +#: modules/devices/storage.c:115 +msgid "Flying Height" +msgstr "" + +#: modules/devices/storage.c:116 +msgid "Spin High Current" +msgstr "" + +#: modules/devices/storage.c:117 +msgid "Spin Buzz" +msgstr "" + +#: modules/devices/storage.c:118 +msgid "Offline Seek Performance" +msgstr "" + +#: modules/devices/storage.c:119 +msgid "Disk Shift" +msgstr "" + +#: modules/devices/storage.c:120 +msgid "G-Sense Error Rate" +msgstr "" + +#: modules/devices/storage.c:121 +msgid "Loaded Hours" +msgstr "" + +#: modules/devices/storage.c:122 +msgid "Load/Unload Retry Count" +msgstr "" + +#: modules/devices/storage.c:123 +msgid "Load Friction" +msgstr "" + +#: modules/devices/storage.c:124 +msgid "Load/Unload Cycle Count" +msgstr "" + +#: modules/devices/storage.c:125 +msgid "Load-in time" +msgstr "" + +#: modules/devices/storage.c:126 +msgid "Torque Amplification Count" +msgstr "" + +#: modules/devices/storage.c:127 +msgid "Power-Off Retract Count" +msgstr "" + +#: modules/devices/storage.c:128 +msgid "GMR Head Amplitude" +msgstr "" + +#: modules/devices/storage.c:130 +msgid "Endurance Remaining" +msgstr "" + +#: modules/devices/storage.c:132 +msgid "Good Block Rate" +msgstr "" + +#: modules/devices/storage.c:133 +msgid "Head Flying Hours" +msgstr "" + +#: modules/devices/storage.c:134 +msgid "Read Error Retry Rate" +msgstr "" + +#: modules/devices/storage.c:135 +msgid "Total LBAs Written" +msgstr "" + +#: modules/devices/storage.c:136 +msgid "Total LBAs Read" +msgstr "" + +#: modules/devices/storage.c:141 +msgid "" +"\n" +"[UDisks2]\n" +msgstr "" + +#: modules/devices/storage.c:199 +msgid "Removable" +msgstr "" + +#: modules/devices/storage.c:199 +msgid "Fixed" +msgstr "" + +#: modules/devices/storage.c:202 +msgid "Ejectable" +msgstr "" + +#: modules/devices/storage.c:205 +msgid "Self-monitoring (S.M.A.R.T.)" +msgstr "" + +#: modules/devices/storage.c:208 modules/devices/x86/processor.c:663 +msgid "Power Management" +msgstr "电源管理" + +#: modules/devices/storage.c:211 +msgid "Advanced Power Management" +msgstr "" + +#: modules/devices/storage.c:214 +msgid "Automatic Acoustic Management" +msgstr "" + +#: modules/devices/storage.c:217 +#, c-format +msgid "" +"[Drive Information]\n" +"Model=%s\n" +msgstr "" + +#: modules/devices/storage.c:221 modules/devices/storage.c:449 +#: modules/devices/storage.c:648 +#, c-format +msgid "Vendor=%s\n" +msgstr "" + +#: modules/devices/storage.c:226 +#, c-format +msgid "" +"Revision=%s\n" +"Block Device=%s\n" +"Serial=%s\n" +"Size=%s\n" +"Features=%s\n" +msgstr "" + +#: modules/devices/storage.c:240 +#, c-format +msgid "Rotation Rate=%d RPM\n" +msgstr "" + +#: modules/devices/storage.c:243 +#, c-format +msgid "" +"Media=%s\n" +"Media compatibility=%s\n" +msgstr "" + +#: modules/devices/storage.c:250 +#, c-format +msgid "Connection bus=%s\n" +msgstr "" + +#: modules/devices/storage.c:253 +#, c-format +msgid "" +"[Self-monitoring (S.M.A.R.T.)]\n" +"Status=%s\n" +"Bad Sectors=%ld\n" +"Power on time=%d days %d hours\n" +"Temperature=%d°C\n" +msgstr "" + +#: modules/devices/storage.c:259 +msgid "Failing" +msgstr "" + +#: modules/devices/storage.c:259 +msgid "OK" +msgstr "" + +#: modules/devices/storage.c:265 +msgid "" +"[S.M.A.R.T. Attributes]\n" +"Attribute=Normalized Value / Worst / Threshold\n" +msgstr "" + +#: modules/devices/storage.c:297 +#, c-format +msgid "(%d) %s=%s\n" +msgstr "" + +#: modules/devices/storage.c:306 +#, c-format +msgid "" +"[Partition table]\n" +"Type=%s\n" +msgstr "" + +#: modules/devices/storage.c:325 +#, c-format +msgid "Partition %s=%s\n" +msgstr "" + +#: modules/devices/storage.c:375 +msgid "" +"\n" +"[SCSI Disks]\n" +msgstr "" + +#: modules/devices/storage.c:446 modules/devices/storage.c:645 +#, c-format +msgid "" +"[Device Information]\n" +"Model=%s\n" +msgstr "" + +#: modules/devices/storage.c:453 +#, c-format +msgid "" +"Type=%s\n" +"Revision=%s\n" +"[SCSI Controller]\n" +"Controller=scsi%d\n" +"Channel=%d\n" +"ID=%d\n" +"LUN=%d\n" +msgstr "" + +#: modules/devices/storage.c:499 +msgid "" +"\n" +"[IDE Disks]\n" +msgstr "" + +#: modules/devices/storage.c:582 +#, c-format +msgid "Driver=%s\n" +msgstr "" + +#: modules/devices/storage.c:650 +#, c-format +msgid "" +"Device Name=hd%c\n" +"Media=%s\n" +"Cache=%dkb\n" +msgstr "" + +#: modules/devices/storage.c:660 +#, c-format +msgid "" +"[Geometry]\n" +"Physical=%s\n" +"Logical=%s\n" +msgstr "" + +#: modules/devices/storage.c:670 +#, c-format +msgid "" +"[Capabilities]\n" +"%s" +msgstr "" + +#: modules/devices/storage.c:677 +#, c-format +msgid "" +"[Speeds]\n" +"%s" +msgstr "" + +#: modules/devices/usb.c:134 modules/devices/usb.c:175 +msgid "Sub-class" +msgstr "" + +#: modules/devices/usb.c:135 modules/devices/usb.c:176 modules/network.c:347 +msgid "Protocol" +msgstr "协议" + +#: modules/devices/usb.c:143 modules/network/net.c:451 +msgid "Mb/s" +msgstr "Mb/s" + +#: modules/devices/usb.c:171 +msgid "Max Current" +msgstr "" + +#: modules/devices/usb.c:171 +msgid "mA" +msgstr "mA" + +#: modules/devices/usb.c:172 +msgid "USB Version" +msgstr "USB 版本" + +#: modules/devices/usb.c:177 +msgid "Device Version" +msgstr "设备版本" + +#: modules/devices/usb.c:221 +msgid "No USB devices found." +msgstr "没找到 USB 设备" + +#: modules/devices/x86/processor.c:149 +msgid "Cache information not available=\n" +msgstr "" + +#: modules/devices/x86/processor.c:155 +#, c-format +msgid "Level %d (%s)=%d-way set-associative, %d sets, %dKB size\n" +msgstr "" + +#. /cache type, as appears in: Level 1 (Data) +#: modules/devices/x86/processor.c:170 +msgctxt "cache-type" +msgid "Data" +msgstr "数据" + +#. /cache type, as appears in: Level 1 (Instruction) +#: modules/devices/x86/processor.c:171 +msgctxt "cache-type" +msgid "Instruction" +msgstr "" + +#. /cache type, as appears in: Level 2 (Unified) +#: modules/devices/x86/processor.c:172 +msgctxt "cache-type" +msgid "Unified" +msgstr "" + +#: modules/devices/x86/processor.c:367 +msgid "Caches" +msgstr "缓存" + +#: modules/devices/x86/processor.c:418 modules/devices/x86/processor.c:435 +#, c-format +msgid "Level %d (%s)#%d=%dx %dKB (%dKB), %d-way set-associative, %d sets\n" +msgstr "" + +#: modules/devices/x86/processor.c:647 +msgid "Model Name" +msgstr "型号名称" + +#: modules/devices/x86/processor.c:648 +msgid "Family, model, stepping" +msgstr "" + +#: modules/devices/x86/processor.c:654 +msgid "Microcode Version" +msgstr "" + +#: modules/devices/x86/processor.c:655 +msgid "Configuration" +msgstr "配置" + +#: modules/devices/x86/processor.c:656 +msgid "Cache Size" +msgstr "缓存大小" + +#: modules/devices/x86/processor.c:656 +msgid "kb" +msgstr "kb" + +#: modules/devices/x86/processor.c:664 +msgid "Bug Workarounds" +msgstr "" + +#: modules/devices/x86/processor.c:691 +msgid "Socket Information" +msgstr "" + +#: modules/devices/x86/processor.c:712 +msgid "CPU Socket" +msgstr "" + +#: modules/devices/x86/processor.c:716 +msgid "External Clock" +msgstr "" + +#: modules/devices/x86/processor.c:717 +msgid "Max Frequency" +msgstr "" + +#: modules/devices/x86/processor.c:748 modules/devices/x86/processor.c:769 +msgid "Package Information" +msgstr "" + +#: modules/devices/x86/processor.c:796 +msgid "Socket:Core" +msgstr "" + +#: modules/devices/x86/processor.c:796 +msgid "Thread" +msgstr "线程" + +#. /flag:fpu +#: modules/devices/x86/x86_data.c:43 +msgctxt "x86-flag" +msgid "Onboard FPU (floating point support)" +msgstr "" + +#. /flag:vme +#: modules/devices/x86/x86_data.c:44 +msgctxt "x86-flag" +msgid "Virtual 8086 mode enhancements" +msgstr "" + +#. /flag:de +#: modules/devices/x86/x86_data.c:45 +msgctxt "x86-flag" +msgid "Debugging Extensions (CR4.DE)" +msgstr "" + +#. /flag:pse +#: modules/devices/x86/x86_data.c:46 +msgctxt "x86-flag" +msgid "Page Size Extensions (4MB memory pages)" +msgstr "" + +#. /flag:tsc +#: modules/devices/x86/x86_data.c:47 +msgctxt "x86-flag" +msgid "Time Stamp Counter (RDTSC)" +msgstr "" + +#. /flag:msr +#: modules/devices/x86/x86_data.c:48 +msgctxt "x86-flag" +msgid "Model-Specific Registers (RDMSR, WRMSR)" +msgstr "" + +#. /flag:pae +#: modules/devices/x86/x86_data.c:49 +msgctxt "x86-flag" +msgid "Physical Address Extensions (support for more than 4GB of RAM)" +msgstr "" + +#. /flag:mce +#: modules/devices/x86/x86_data.c:50 +msgctxt "x86-flag" +msgid "Machine Check Exception" +msgstr "" + +#. /flag:cx8 +#: modules/devices/x86/x86_data.c:51 +msgctxt "x86-flag" +msgid "CMPXCHG8 instruction (64-bit compare-and-swap)" +msgstr "" + +#. /flag:apic +#: modules/devices/x86/x86_data.c:52 +msgctxt "x86-flag" +msgid "Onboard APIC" +msgstr "" + +#. /flag:sep +#: modules/devices/x86/x86_data.c:53 +msgctxt "x86-flag" +msgid "SYSENTER/SYSEXIT" +msgstr "" + +#. /flag:mtrr +#: modules/devices/x86/x86_data.c:54 +msgctxt "x86-flag" +msgid "Memory Type Range Registers" +msgstr "" + +#. /flag:pge +#: modules/devices/x86/x86_data.c:55 +msgctxt "x86-flag" +msgid "Page Global Enable (global bit in PDEs and PTEs)" +msgstr "" + +#. /flag:mca +#: modules/devices/x86/x86_data.c:56 +msgctxt "x86-flag" +msgid "Machine Check Architecture" +msgstr "" + +#. /flag:cmov +#: modules/devices/x86/x86_data.c:57 +msgctxt "x86-flag" +msgid "CMOV instructions (conditional move) (also FCMOV)" +msgstr "" + +#. /flag:pat +#: modules/devices/x86/x86_data.c:58 +msgctxt "x86-flag" +msgid "Page Attribute Table" +msgstr "" + +#. /flag:pse36 +#: modules/devices/x86/x86_data.c:59 +msgctxt "x86-flag" +msgid "36-bit PSEs (huge pages)" +msgstr "" + +#. /flag:pn +#: modules/devices/x86/x86_data.c:60 +msgctxt "x86-flag" +msgid "Processor serial number" +msgstr "" + +#. /flag:clflush +#: modules/devices/x86/x86_data.c:61 +msgctxt "x86-flag" +msgid "Cache Line Flush instruction" +msgstr "" + +#. /flag:dts +#: modules/devices/x86/x86_data.c:62 +msgctxt "x86-flag" +msgid "" +"Debug Store (buffer for debugging and profiling instructions), or " +"alternately: digital thermal sensor" +msgstr "" + +#. /flag:acpi +#: modules/devices/x86/x86_data.c:63 +msgctxt "x86-flag" +msgid "ACPI via MSR (temperature monitoring and clock speed modulation)" +msgstr "" + +#. /flag:mmx +#: modules/devices/x86/x86_data.c:64 +msgctxt "x86-flag" +msgid "Multimedia Extensions" +msgstr "" + +#. /flag:fxsr +#: modules/devices/x86/x86_data.c:65 +msgctxt "x86-flag" +msgid "FXSAVE/FXRSTOR, CR4.OSFXSR" +msgstr "" + +#. /flag:sse +#: modules/devices/x86/x86_data.c:66 +msgctxt "x86-flag" +msgid "Intel SSE vector instructions" +msgstr "" + +#. /flag:sse2 +#: modules/devices/x86/x86_data.c:67 +msgctxt "x86-flag" +msgid "SSE2" +msgstr "" + +#. /flag:ss +#: modules/devices/x86/x86_data.c:68 +msgctxt "x86-flag" +msgid "CPU self snoop" +msgstr "" + +#. /flag:ht +#: modules/devices/x86/x86_data.c:69 +msgctxt "x86-flag" +msgid "Hyper-Threading" +msgstr "" + +#. /flag:tm +#: modules/devices/x86/x86_data.c:70 +msgctxt "x86-flag" +msgid "Automatic clock control (Thermal Monitor)" +msgstr "" + +#. /flag:ia64 +#: modules/devices/x86/x86_data.c:71 +msgctxt "x86-flag" +msgid "" +"Intel Itanium Architecture 64-bit (not to be confused with Intel's 64-bit " +"x86 architecture with flag x86-64 or \"AMD64\" bit indicated by flag lm)" +msgstr "" + +#. /flag:pbe +#: modules/devices/x86/x86_data.c:72 +msgctxt "x86-flag" +msgid "Pending Break Enable (PBE# pin) wakeup support" +msgstr "" + +#. /flag:syscall +#: modules/devices/x86/x86_data.c:75 +msgctxt "x86-flag" +msgid "SYSCALL (Fast System Call) and SYSRET (Return From Fast System Call)" +msgstr "" + +#. /flag:mp +#: modules/devices/x86/x86_data.c:76 +msgctxt "x86-flag" +msgid "Multiprocessing Capable." +msgstr "" + +#. /flag:nx +#: modules/devices/x86/x86_data.c:77 +msgctxt "x86-flag" +msgid "Execute Disable" +msgstr "" + +#. /flag:mmxext +#: modules/devices/x86/x86_data.c:78 +msgctxt "x86-flag" +msgid "AMD MMX extensions" +msgstr "" + +#. /flag:fxsr_opt +#: modules/devices/x86/x86_data.c:79 +msgctxt "x86-flag" +msgid "FXSAVE/FXRSTOR optimizations" +msgstr "" + +#. /flag:pdpe1gb +#: modules/devices/x86/x86_data.c:80 +msgctxt "x86-flag" +msgid "One GB pages (allows hugepagesz=1G)" +msgstr "" + +#. /flag:rdtscp +#: modules/devices/x86/x86_data.c:81 +msgctxt "x86-flag" +msgid "Read Time-Stamp Counter and Processor ID" +msgstr "" + +#. /flag:lm +#: modules/devices/x86/x86_data.c:82 +msgctxt "x86-flag" +msgid "Long Mode (x86-64: amd64, also known as Intel 64, i.e. 64-bit capable)" +msgstr "" + +#. /flag:3dnow +#: modules/devices/x86/x86_data.c:83 +msgctxt "x86-flag" +msgid "3DNow! (AMD vector instructions, competing with Intel's SSE1)" +msgstr "" + +#. /flag:3dnowext +#: modules/devices/x86/x86_data.c:84 +msgctxt "x86-flag" +msgid "AMD 3DNow! extensions" +msgstr "" + +#. /flag:recovery +#: modules/devices/x86/x86_data.c:86 +msgctxt "x86-flag" +msgid "CPU in recovery mode" +msgstr "" + +#. /flag:longrun +#: modules/devices/x86/x86_data.c:87 +msgctxt "x86-flag" +msgid "Longrun power control" +msgstr "" + +#. /flag:lrti +#: modules/devices/x86/x86_data.c:88 +msgctxt "x86-flag" +msgid "LongRun table interface" +msgstr "" + +#. /flag:cxmmx +#: modules/devices/x86/x86_data.c:90 +msgctxt "x86-flag" +msgid "Cyrix MMX extensions" +msgstr "" + +#. /flag:k6_mtrr +#: modules/devices/x86/x86_data.c:91 +msgctxt "x86-flag" +msgid "AMD K6 nonstandard MTRRs" +msgstr "" + +#. /flag:cyrix_arr +#: modules/devices/x86/x86_data.c:92 +msgctxt "x86-flag" +msgid "Cyrix ARRs (= MTRRs)" +msgstr "" + +#. /flag:centaur_mcr +#: modules/devices/x86/x86_data.c:93 +msgctxt "x86-flag" +msgid "Centaur MCRs (= MTRRs)" +msgstr "" + +#. /flag:constant_tsc +#: modules/devices/x86/x86_data.c:94 +msgctxt "x86-flag" +msgid "TSC ticks at a constant rate" +msgstr "" + +#. /flag:up +#: modules/devices/x86/x86_data.c:95 +msgctxt "x86-flag" +msgid "SMP kernel running on UP" +msgstr "" + +#. /flag:art +#: modules/devices/x86/x86_data.c:96 +msgctxt "x86-flag" +msgid "Always-Running Timer" +msgstr "" + +#. /flag:arch_perfmon +#: modules/devices/x86/x86_data.c:97 +msgctxt "x86-flag" +msgid "Intel Architectural PerfMon" +msgstr "" + +#. /flag:pebs +#: modules/devices/x86/x86_data.c:98 +msgctxt "x86-flag" +msgid "Precise-Event Based Sampling" +msgstr "" + +#. /flag:bts +#: modules/devices/x86/x86_data.c:99 +msgctxt "x86-flag" +msgid "Branch Trace Store" +msgstr "" + +#. /flag:rep_good +#: modules/devices/x86/x86_data.c:100 +msgctxt "x86-flag" +msgid "rep microcode works well" +msgstr "" + +#. /flag:acc_power +#: modules/devices/x86/x86_data.c:101 +msgctxt "x86-flag" +msgid "AMD accumulated power mechanism" +msgstr "" + +#. /flag:nopl +#: modules/devices/x86/x86_data.c:102 +msgctxt "x86-flag" +msgid "The NOPL (0F 1F) instructions" +msgstr "" + +#. /flag:xtopology +#: modules/devices/x86/x86_data.c:103 +msgctxt "x86-flag" +msgid "cpu topology enum extensions" +msgstr "" + +#. /flag:tsc_reliable +#: modules/devices/x86/x86_data.c:104 +msgctxt "x86-flag" +msgid "TSC is known to be reliable" +msgstr "" + +#. /flag:nonstop_tsc +#: modules/devices/x86/x86_data.c:105 +msgctxt "x86-flag" +msgid "TSC does not stop in C states" +msgstr "" + +#. /flag:extd_apicid +#: modules/devices/x86/x86_data.c:106 +msgctxt "x86-flag" +msgid "has extended APICID (8 bits)" +msgstr "" + +#. /flag:amd_dcm +#: modules/devices/x86/x86_data.c:107 +msgctxt "x86-flag" +msgid "multi-node processor" +msgstr "" + +#. /flag:aperfmperf +#: modules/devices/x86/x86_data.c:108 +msgctxt "x86-flag" +msgid "APERFMPERF" +msgstr "" + +#. /flag:eagerfpu +#: modules/devices/x86/x86_data.c:109 +msgctxt "x86-flag" +msgid "Non lazy FPU restore" +msgstr "" + +#. /flag:nonstop_tsc_s3 +#: modules/devices/x86/x86_data.c:110 +msgctxt "x86-flag" +msgid "TSC doesn't stop in S3 state" +msgstr "" + +#. /flag:mce_recovery +#: modules/devices/x86/x86_data.c:111 +msgctxt "x86-flag" +msgid "CPU has recoverable machine checks" +msgstr "" + +#. /flag:pni +#: modules/devices/x86/x86_data.c:114 +msgctxt "x86-flag" +msgid "SSE-3 (\"Prescott New Instructions\")" +msgstr "" + +#. /flag:pclmulqdq +#: modules/devices/x86/x86_data.c:115 +msgctxt "x86-flag" +msgid "" +"Perform a Carry-Less Multiplication of Quadword instruction - accelerator " +"for GCM)" +msgstr "" + +#. /flag:dtes64 +#: modules/devices/x86/x86_data.c:116 +msgctxt "x86-flag" +msgid "64-bit Debug Store" +msgstr "" + +#. /flag:monitor +#: modules/devices/x86/x86_data.c:117 +msgctxt "x86-flag" +msgid "Monitor/Mwait support (Intel SSE3 supplements)" +msgstr "" + +#. /flag:ds_cpl +#: modules/devices/x86/x86_data.c:118 +msgctxt "x86-flag" +msgid "CPL Qual. Debug Store" +msgstr "" + +#. /flag:vmx +#: modules/devices/x86/x86_data.c:119 +msgctxt "x86-flag" +msgid "Hardware virtualization, Intel VMX" +msgstr "" + +#. /flag:smx +#: modules/devices/x86/x86_data.c:120 +msgctxt "x86-flag" +msgid "Safer mode TXT (TPM support)" +msgstr "" + +#. /flag:est +#: modules/devices/x86/x86_data.c:121 +msgctxt "x86-flag" +msgid "Enhanced SpeedStep" +msgstr "" + +#. /flag:tm2 +#: modules/devices/x86/x86_data.c:122 +msgctxt "x86-flag" +msgid "Thermal Monitor 2" +msgstr "" + +#. /flag:ssse3 +#: modules/devices/x86/x86_data.c:123 +msgctxt "x86-flag" +msgid "Supplemental SSE-3" +msgstr "" + +#. /flag:cid +#: modules/devices/x86/x86_data.c:124 +msgctxt "x86-flag" +msgid "Context ID" +msgstr "" + +#. /flag:sdbg +#: modules/devices/x86/x86_data.c:125 +msgctxt "x86-flag" +msgid "silicon debug" +msgstr "" + +#. /flag:fma +#: modules/devices/x86/x86_data.c:126 +msgctxt "x86-flag" +msgid "Fused multiply-add" +msgstr "" + +#. /flag:cx16 +#: modules/devices/x86/x86_data.c:127 +msgctxt "x86-flag" +msgid "CMPXCHG16B" +msgstr "" + +#. /flag:xtpr +#: modules/devices/x86/x86_data.c:128 +msgctxt "x86-flag" +msgid "Send Task Priority Messages" +msgstr "" + +#. /flag:pdcm +#: modules/devices/x86/x86_data.c:129 +msgctxt "x86-flag" +msgid "Performance Capabilities" +msgstr "" + +#. /flag:pcid +#: modules/devices/x86/x86_data.c:130 +msgctxt "x86-flag" +msgid "Process Context Identifiers" +msgstr "" + +#. /flag:dca +#: modules/devices/x86/x86_data.c:131 +msgctxt "x86-flag" +msgid "Direct Cache Access" +msgstr "" + +#. /flag:sse4_1 +#: modules/devices/x86/x86_data.c:132 +msgctxt "x86-flag" +msgid "SSE-4.1" +msgstr "" + +#. /flag:sse4_2 +#: modules/devices/x86/x86_data.c:133 +msgctxt "x86-flag" +msgid "SSE-4.2" +msgstr "" + +#. /flag:x2apic +#: modules/devices/x86/x86_data.c:134 +msgctxt "x86-flag" +msgid "x2APIC" +msgstr "" + +#. /flag:movbe +#: modules/devices/x86/x86_data.c:135 +msgctxt "x86-flag" +msgid "Move Data After Swapping Bytes instruction" +msgstr "" + +#. /flag:popcnt +#: modules/devices/x86/x86_data.c:136 +msgctxt "x86-flag" +msgid "" +"Return the Count of Number of Bits Set to 1 instruction (Hamming weight, i." +"e. bit count)" +msgstr "" + +#. /flag:tsc_deadline_timer +#: modules/devices/x86/x86_data.c:137 +msgctxt "x86-flag" +msgid "Tsc deadline timer" +msgstr "" + +#. /flag:aes/aes-ni +#: modules/devices/x86/x86_data.c:138 +msgctxt "x86-flag" +msgid "Advanced Encryption Standard (New Instructions)" +msgstr "" + +#. /flag:xsave +#: modules/devices/x86/x86_data.c:139 +msgctxt "x86-flag" +msgid "Save Processor Extended States: also provides XGETBY,XRSTOR,XSETBY" +msgstr "" + +#. /flag:avx +#: modules/devices/x86/x86_data.c:140 +msgctxt "x86-flag" +msgid "Advanced Vector Extensions" +msgstr "" + +#. /flag:f16c +#: modules/devices/x86/x86_data.c:141 +msgctxt "x86-flag" +msgid "16-bit fp conversions (CVT16)" +msgstr "" + +#. /flag:rdrand +#: modules/devices/x86/x86_data.c:142 +msgctxt "x86-flag" +msgid "Read Random Number from hardware random number generator instruction" +msgstr "" + +#. /flag:hypervisor +#: modules/devices/x86/x86_data.c:143 +msgctxt "x86-flag" +msgid "Running on a hypervisor" +msgstr "" + +#. /Cyrix/Centaur-defined CPU features, CPUID level 0xC0000001 +#. /flag:rng +#: modules/devices/x86/x86_data.c:145 +msgctxt "x86-flag" +msgid "Random Number Generator present (xstore)" +msgstr "" + +#. /flag:rng_en +#: modules/devices/x86/x86_data.c:146 +msgctxt "x86-flag" +msgid "Random Number Generator enabled" +msgstr "" + +#. /flag:ace +#: modules/devices/x86/x86_data.c:147 +msgctxt "x86-flag" +msgid "on-CPU crypto (xcrypt)" +msgstr "" + +#. /flag:ace_en +#: modules/devices/x86/x86_data.c:148 +msgctxt "x86-flag" +msgid "on-CPU crypto enabled" +msgstr "" + +#. /flag:ace2 +#: modules/devices/x86/x86_data.c:149 +msgctxt "x86-flag" +msgid "Advanced Cryptography Engine v2" +msgstr "" + +#. /flag:ace2_en +#: modules/devices/x86/x86_data.c:150 +msgctxt "x86-flag" +msgid "ACE v2 enabled" +msgstr "" + +#. /flag:phe +#: modules/devices/x86/x86_data.c:151 +msgctxt "x86-flag" +msgid "PadLock Hash Engine" +msgstr "" + +#. /flag:phe_en +#: modules/devices/x86/x86_data.c:152 +msgctxt "x86-flag" +msgid "PHE enabled" +msgstr "" + +#. /flag:pmm +#: modules/devices/x86/x86_data.c:153 +msgctxt "x86-flag" +msgid "PadLock Montgomery Multiplier" +msgstr "" + +#. /flag:pmm_en +#: modules/devices/x86/x86_data.c:154 +msgctxt "x86-flag" +msgid "PMM enabled" +msgstr "" + +#. /flag:lahf_lm +#: modules/devices/x86/x86_data.c:156 +msgctxt "x86-flag" +msgid "Load AH from Flags (LAHF) and Store AH into Flags (SAHF) in long mode" +msgstr "" + +#. /flag:cmp_legacy +#: modules/devices/x86/x86_data.c:157 +msgctxt "x86-flag" +msgid "If yes HyperThreading not valid" +msgstr "" + +#. /flag:svm +#: modules/devices/x86/x86_data.c:158 +msgctxt "x86-flag" +msgid "\"Secure virtual machine\": AMD-V" +msgstr "" + +#. /flag:extapic +#: modules/devices/x86/x86_data.c:159 +msgctxt "x86-flag" +msgid "Extended APIC space" +msgstr "" + +#. /flag:cr8_legacy +#: modules/devices/x86/x86_data.c:160 +msgctxt "x86-flag" +msgid "CR8 in 32-bit mode" +msgstr "" + +#. /flag:abm +#: modules/devices/x86/x86_data.c:161 +msgctxt "x86-flag" +msgid "Advanced Bit Manipulation" +msgstr "" + +#. /flag:sse4a +#: modules/devices/x86/x86_data.c:162 +msgctxt "x86-flag" +msgid "SSE-4A" +msgstr "" + +#. /flag:misalignsse +#: modules/devices/x86/x86_data.c:163 +msgctxt "x86-flag" +msgid "" +"indicates if a general-protection exception (#GP) is generated when some " +"legacy SSE instructions operate on unaligned data. Also depends on CR0 and " +"Alignment Checking bit" +msgstr "" + +#. /flag:3dnowprefetch +#: modules/devices/x86/x86_data.c:164 +msgctxt "x86-flag" +msgid "3DNow prefetch instructions" +msgstr "" + +#. /flag:osvw +#: modules/devices/x86/x86_data.c:165 +msgctxt "x86-flag" +msgid "" +"indicates OS Visible Workaround, which allows the OS to work around " +"processor errata." +msgstr "" + +#. /flag:ibs +#: modules/devices/x86/x86_data.c:166 +msgctxt "x86-flag" +msgid "Instruction Based Sampling" +msgstr "" + +#. /flag:xop +#: modules/devices/x86/x86_data.c:167 +msgctxt "x86-flag" +msgid "extended AVX instructions" +msgstr "" + +#. /flag:skinit +#: modules/devices/x86/x86_data.c:168 +msgctxt "x86-flag" +msgid "SKINIT/STGI instructions" +msgstr "" + +#. /flag:wdt +#: modules/devices/x86/x86_data.c:169 +msgctxt "x86-flag" +msgid "Watchdog timer" +msgstr "" + +#. /flag:lwp +#: modules/devices/x86/x86_data.c:170 +msgctxt "x86-flag" +msgid "Light Weight Profiling" +msgstr "" + +#. /flag:fma4 +#: modules/devices/x86/x86_data.c:171 +msgctxt "x86-flag" +msgid "4 operands MAC instructions" +msgstr "" + +#. /flag:tce +#: modules/devices/x86/x86_data.c:172 +msgctxt "x86-flag" +msgid "translation cache extension" +msgstr "" + +#. /flag:nodeid_msr +#: modules/devices/x86/x86_data.c:173 +msgctxt "x86-flag" +msgid "NodeId MSR" +msgstr "" + +#. /flag:tbm +#: modules/devices/x86/x86_data.c:174 +msgctxt "x86-flag" +msgid "Trailing Bit Manipulation" +msgstr "" + +#. /flag:topoext +#: modules/devices/x86/x86_data.c:175 +msgctxt "x86-flag" +msgid "Topology Extensions CPUID leafs" +msgstr "" + +#. /flag:perfctr_core +#: modules/devices/x86/x86_data.c:176 +msgctxt "x86-flag" +msgid "Core Performance Counter Extensions" +msgstr "" + +#. /flag:perfctr_nb +#: modules/devices/x86/x86_data.c:177 +msgctxt "x86-flag" +msgid "NB Performance Counter Extensions" +msgstr "" + +#. /flag:bpext +#: modules/devices/x86/x86_data.c:178 +msgctxt "x86-flag" +msgid "data breakpoint extension" +msgstr "" + +#. /flag:ptsc +#: modules/devices/x86/x86_data.c:179 +msgctxt "x86-flag" +msgid "performance time-stamp counter" +msgstr "" + +#. /flag:perfctr_l2 +#: modules/devices/x86/x86_data.c:180 +msgctxt "x86-flag" +msgid "L2 Performance Counter Extensions" +msgstr "" + +#. /flag:mwaitx +#: modules/devices/x86/x86_data.c:181 +msgctxt "x86-flag" +msgid "MWAIT extension (MONITORX/MWAITX)" +msgstr "" + +#. /flag:cpb +#: modules/devices/x86/x86_data.c:183 +msgctxt "x86-flag" +msgid "AMD Core Performance Boost" +msgstr "" + +#. /flag:epb +#: modules/devices/x86/x86_data.c:184 +msgctxt "x86-flag" +msgid "IA32_ENERGY_PERF_BIAS support" +msgstr "" + +#. /flag:hw_pstate +#: modules/devices/x86/x86_data.c:185 +msgctxt "x86-flag" +msgid "AMD HW-PState" +msgstr "" + +#. /flag:proc_feedback +#: modules/devices/x86/x86_data.c:186 +msgctxt "x86-flag" +msgid "AMD ProcFeedbackInterface" +msgstr "" + +#. /flag:intel_pt +#: modules/devices/x86/x86_data.c:187 +msgctxt "x86-flag" +msgid "Intel Processor Tracing" +msgstr "" + +#. /flag:tpr_shadow +#: modules/devices/x86/x86_data.c:189 +msgctxt "x86-flag" +msgid "Intel TPR Shadow" +msgstr "" + +#. /flag:vnmi +#: modules/devices/x86/x86_data.c:190 +msgctxt "x86-flag" +msgid "Intel Virtual NMI" +msgstr "" + +#. /flag:flexpriority +#: modules/devices/x86/x86_data.c:191 +msgctxt "x86-flag" +msgid "Intel FlexPriority" +msgstr "" + +#. /flag:ept +#: modules/devices/x86/x86_data.c:192 +msgctxt "x86-flag" +msgid "Intel Extended Page Table" +msgstr "" + +#. /flag:vpid +#: modules/devices/x86/x86_data.c:193 +msgctxt "x86-flag" +msgid "Intel Virtual Processor ID" +msgstr "" + +#. /flag:vmmcall +#: modules/devices/x86/x86_data.c:194 +msgctxt "x86-flag" +msgid "prefer VMMCALL to VMCALL" +msgstr "" + +#. /flag:fsgsbase +#: modules/devices/x86/x86_data.c:196 +msgctxt "x86-flag" +msgid "{RD/WR}{FS/GS}BASE instructions" +msgstr "" + +#. /flag:tsc_adjust +#: modules/devices/x86/x86_data.c:197 +msgctxt "x86-flag" +msgid "TSC adjustment MSR" +msgstr "" + +#. /flag:bmi1 +#: modules/devices/x86/x86_data.c:198 +msgctxt "x86-flag" +msgid "1st group bit manipulation extensions" +msgstr "" + +#. /flag:hle +#: modules/devices/x86/x86_data.c:199 +msgctxt "x86-flag" +msgid "Hardware Lock Elision" +msgstr "" + +#. /flag:avx2 +#: modules/devices/x86/x86_data.c:200 +msgctxt "x86-flag" +msgid "AVX2 instructions" +msgstr "" + +#. /flag:smep +#: modules/devices/x86/x86_data.c:201 +msgctxt "x86-flag" +msgid "Supervisor Mode Execution Protection" +msgstr "" + +#. /flag:bmi2 +#: modules/devices/x86/x86_data.c:202 +msgctxt "x86-flag" +msgid "2nd group bit manipulation extensions" +msgstr "" + +#. /flag:erms +#: modules/devices/x86/x86_data.c:203 +msgctxt "x86-flag" +msgid "Enhanced REP MOVSB/STOSB" +msgstr "" + +#. /flag:invpcid +#: modules/devices/x86/x86_data.c:204 +msgctxt "x86-flag" +msgid "Invalidate Processor Context ID" +msgstr "" + +#. /flag:rtm +#: modules/devices/x86/x86_data.c:205 +msgctxt "x86-flag" +msgid "Restricted Transactional Memory" +msgstr "" + +#. /flag:cqm +#: modules/devices/x86/x86_data.c:206 +msgctxt "x86-flag" +msgid "Cache QoS Monitoring" +msgstr "" + +#. /flag:mpx +#: modules/devices/x86/x86_data.c:207 +msgctxt "x86-flag" +msgid "Memory Protection Extension" +msgstr "" + +#. /flag:avx512f +#: modules/devices/x86/x86_data.c:208 +msgctxt "x86-flag" +msgid "AVX-512 foundation" +msgstr "" + +#. /flag:avx512dq +#: modules/devices/x86/x86_data.c:209 +msgctxt "x86-flag" +msgid "AVX-512 Double/Quad instructions" +msgstr "" + +#. /flag:rdseed +#: modules/devices/x86/x86_data.c:210 +msgctxt "x86-flag" +msgid "The RDSEED instruction" +msgstr "" + +#. /flag:adx +#: modules/devices/x86/x86_data.c:211 +msgctxt "x86-flag" +msgid "The ADCX and ADOX instructions" +msgstr "" + +#. /flag:smap +#: modules/devices/x86/x86_data.c:212 +msgctxt "x86-flag" +msgid "Supervisor Mode Access Prevention" +msgstr "" + +#. /flag:clflushopt +#: modules/devices/x86/x86_data.c:213 +msgctxt "x86-flag" +msgid "CLFLUSHOPT instruction" +msgstr "" + +#. /flag:clwb +#: modules/devices/x86/x86_data.c:214 +msgctxt "x86-flag" +msgid "CLWB instruction" +msgstr "" + +#. /flag:avx512pf +#: modules/devices/x86/x86_data.c:215 +msgctxt "x86-flag" +msgid "AVX-512 Prefetch" +msgstr "" + +#. /flag:avx512er +#: modules/devices/x86/x86_data.c:216 +msgctxt "x86-flag" +msgid "AVX-512 Exponential and Reciprocal" +msgstr "" + +#. /flag:avx512cd +#: modules/devices/x86/x86_data.c:217 +msgctxt "x86-flag" +msgid "AVX-512 Conflict Detection" +msgstr "" + +#. /flag:sha_ni +#: modules/devices/x86/x86_data.c:218 +msgctxt "x86-flag" +msgid "SHA1/SHA256 Instruction Extensions" +msgstr "" + +#. /flag:avx512bw +#: modules/devices/x86/x86_data.c:219 +msgctxt "x86-flag" +msgid "AVX-512 Byte/Word instructions" +msgstr "" + +#. /flag:avx512vl +#: modules/devices/x86/x86_data.c:220 +msgctxt "x86-flag" +msgid "AVX-512 128/256 Vector Length extensions" +msgstr "" + +#. /flag:xsaveopt +#: modules/devices/x86/x86_data.c:222 +msgctxt "x86-flag" +msgid "Optimized XSAVE" +msgstr "" + +#. /flag:xsavec +#: modules/devices/x86/x86_data.c:223 +msgctxt "x86-flag" +msgid "XSAVEC" +msgstr "" + +#. /flag:xgetbv1 +#: modules/devices/x86/x86_data.c:224 +msgctxt "x86-flag" +msgid "XGETBV with ECX = 1" +msgstr "" + +#. /flag:xsaves +#: modules/devices/x86/x86_data.c:225 +msgctxt "x86-flag" +msgid "XSAVES/XRSTORS" +msgstr "" + +#. /flag:cqm_llc +#: modules/devices/x86/x86_data.c:227 +msgctxt "x86-flag" +msgid "LLC QoS" +msgstr "" + +#. /flag:cqm_occup_llc +#: modules/devices/x86/x86_data.c:229 +msgctxt "x86-flag" +msgid "LLC occupancy monitoring" +msgstr "" + +#. /flag:cqm_mbm_total +#: modules/devices/x86/x86_data.c:230 +msgctxt "x86-flag" +msgid "LLC total MBM monitoring" +msgstr "" + +#. /flag:cqm_mbm_local +#: modules/devices/x86/x86_data.c:231 +msgctxt "x86-flag" +msgid "LLC local MBM monitoring" +msgstr "" + +#. /flag:clzero +#: modules/devices/x86/x86_data.c:233 +msgctxt "x86-flag" +msgid "CLZERO instruction" +msgstr "" + +#. /flag:irperf +#: modules/devices/x86/x86_data.c:234 +msgctxt "x86-flag" +msgid "instructions retired performance counter" +msgstr "" + +#. /flag:dtherm +#: modules/devices/x86/x86_data.c:236 +msgctxt "x86-flag" +msgid "digital thermal sensor" +msgstr "" + +#. /flag:ida +#: modules/devices/x86/x86_data.c:237 +msgctxt "x86-flag" +msgid "Intel Dynamic Acceleration" +msgstr "" + +#. /flag:arat +#: modules/devices/x86/x86_data.c:238 +msgctxt "x86-flag" +msgid "Always Running APIC Timer" +msgstr "" + +#. /flag:pln +#: modules/devices/x86/x86_data.c:239 +msgctxt "x86-flag" +msgid "Intel Power Limit Notification" +msgstr "" + +#. /flag:pts +#: modules/devices/x86/x86_data.c:240 +msgctxt "x86-flag" +msgid "Intel Package Thermal Status" +msgstr "" + +#. /flag:hwp +#: modules/devices/x86/x86_data.c:241 +msgctxt "x86-flag" +msgid "Intel Hardware P-states" +msgstr "" + +#. /flag:hwp_notify +#: modules/devices/x86/x86_data.c:242 +msgctxt "x86-flag" +msgid "HWP notification" +msgstr "" + +#. /flag:hwp_act_window +#: modules/devices/x86/x86_data.c:243 +msgctxt "x86-flag" +msgid "HWP Activity Window" +msgstr "" + +#. /flag:hwp_epp +#: modules/devices/x86/x86_data.c:244 +msgctxt "x86-flag" +msgid "HWP Energy Performance Preference" +msgstr "" + +#. /flag:hwp_pkg_req +#: modules/devices/x86/x86_data.c:245 +msgctxt "x86-flag" +msgid "HWP package-level request" +msgstr "" + +#. /flag:npt +#: modules/devices/x86/x86_data.c:247 +msgctxt "x86-flag" +msgid "AMD Nested Page Table support" +msgstr "" + +#. /flag:lbrv +#: modules/devices/x86/x86_data.c:248 +msgctxt "x86-flag" +msgid "AMD LBR Virtualization support" +msgstr "" + +#. /flag:svm_lock +#: modules/devices/x86/x86_data.c:249 +msgctxt "x86-flag" +msgid "AMD SVM locking MSR" +msgstr "" + +#. /flag:nrip_save +#: modules/devices/x86/x86_data.c:250 +msgctxt "x86-flag" +msgid "AMD SVM next_rip save" +msgstr "" + +#. /flag:tsc_scale +#: modules/devices/x86/x86_data.c:251 +msgctxt "x86-flag" +msgid "AMD TSC scaling support" +msgstr "" + +#. /flag:vmcb_clean +#: modules/devices/x86/x86_data.c:252 +msgctxt "x86-flag" +msgid "AMD VMCB clean bits support" +msgstr "" + +#. /flag:flushbyasid +#: modules/devices/x86/x86_data.c:253 +msgctxt "x86-flag" +msgid "AMD flush-by-ASID support" +msgstr "" + +#. /flag:decodeassists +#: modules/devices/x86/x86_data.c:254 +msgctxt "x86-flag" +msgid "AMD Decode Assists support" +msgstr "" + +#. /flag:pausefilter +#: modules/devices/x86/x86_data.c:255 +msgctxt "x86-flag" +msgid "AMD filtered pause intercept" +msgstr "" + +#. /flag:pfthreshold +#: modules/devices/x86/x86_data.c:256 +msgctxt "x86-flag" +msgid "AMD pause filter threshold" +msgstr "" + +#. /flag:avic +#: modules/devices/x86/x86_data.c:257 +msgctxt "x86-flag" +msgid "Virtual Interrupt Controller" +msgstr "" + +#. /flag:pku +#: modules/devices/x86/x86_data.c:259 +msgctxt "x86-flag" +msgid "Protection Keys for Userspace" +msgstr "" + +#. /flag:ospke +#: modules/devices/x86/x86_data.c:260 +msgctxt "x86-flag" +msgid "OS Protection Keys Enable" +msgstr "" + +#. /flag:overflow_recov +#: modules/devices/x86/x86_data.c:262 +msgctxt "x86-flag" +msgid "MCA overflow recovery support" +msgstr "" + +#. /flag:succor +#: modules/devices/x86/x86_data.c:263 +msgctxt "x86-flag" +msgid "uncorrectable error containment and recovery" +msgstr "" + +#. /flag:smca +#: modules/devices/x86/x86_data.c:264 +msgctxt "x86-flag" +msgid "Scalable MCA" +msgstr "" + +#. /bug:f00f +#: modules/devices/x86/x86_data.c:267 +msgctxt "x86-flag" +msgid "Intel F00F bug" +msgstr "" + +#. /bug:fdiv +#: modules/devices/x86/x86_data.c:268 +msgctxt "x86-flag" +msgid "FPU FDIV" +msgstr "" + +#. /bug:coma +#: modules/devices/x86/x86_data.c:269 +msgctxt "x86-flag" +msgid "Cyrix 6x86 coma" +msgstr "" + +#. /bug:tlb_mmatch +#: modules/devices/x86/x86_data.c:270 +msgctxt "x86-flag" +msgid "AMD Erratum 383" +msgstr "" + +#. /bug:apic_c1e +#. /bug:amd_e400 +#: modules/devices/x86/x86_data.c:271 modules/devices/x86/x86_data.c:280 +msgctxt "x86-flag" +msgid "AMD Erratum 400" +msgstr "" + +#. /bug:11ap +#: modules/devices/x86/x86_data.c:272 +msgctxt "x86-flag" +msgid "Bad local APIC aka 11AP" +msgstr "" + +#. /bug:fxsave_leak +#: modules/devices/x86/x86_data.c:273 +msgctxt "x86-flag" +msgid "FXSAVE leaks FOP/FIP/FOP" +msgstr "" + +#. /bug:clflush_monitor +#: modules/devices/x86/x86_data.c:274 +msgctxt "x86-flag" +msgid "AAI65, CLFLUSH required before MONITOR" +msgstr "" + +#. /bug:sysret_ss_attrs +#: modules/devices/x86/x86_data.c:275 +msgctxt "x86-flag" +msgid "SYSRET doesn't fix up SS attrs" +msgstr "" + +#. /bug:espfix +#: modules/devices/x86/x86_data.c:276 +msgctxt "x86-flag" +msgid "IRET to 16-bit SS corrupts ESP/RSP high bits" +msgstr "" + +#. /bug:null_seg +#: modules/devices/x86/x86_data.c:277 +msgctxt "x86-flag" +msgid "Nulling a selector preserves the base" +msgstr "" + +#. /bug:swapgs_fence +#: modules/devices/x86/x86_data.c:278 +msgctxt "x86-flag" +msgid "SWAPGS without input dep on GS" +msgstr "" + +#. /bug:monitor +#: modules/devices/x86/x86_data.c:279 +msgctxt "x86-flag" +msgid "IPI required to wake up remote CPU" +msgstr "" + +#. /bug:cpu_insecure & bug:cpu_meltdown +#: modules/devices/x86/x86_data.c:281 modules/devices/x86/x86_data.c:282 +msgctxt "x86-flag" +msgid "" +"CPU is affected by meltdown attack and needs kernel page table isolation" +msgstr "" + +#. /bug:spectre_v1 +#: modules/devices/x86/x86_data.c:283 +msgctxt "x86-flag" +msgid "CPU is affected by Spectre variant 1 attack with conditional branches" +msgstr "" + +#. /bug:spectre_v2 +#: modules/devices/x86/x86_data.c:284 +msgctxt "x86-flag" +msgid "CPU is affected by Spectre variant 2 attack with indirect branches" +msgstr "" + +#. /bug:spec_store_bypass +#: modules/devices/x86/x86_data.c:285 +msgctxt "x86-flag" +msgid "CPU is affected by speculative store bypass attack" +msgstr "" + +#. /bug:l1tf +#: modules/devices/x86/x86_data.c:286 +msgctxt "x86-flag" +msgid "CPU is affected by L1 Terminal Fault" +msgstr "" + +#. /x86/kernel/cpu/powerflags.h +#. /flag:pm:ts +#: modules/devices/x86/x86_data.c:289 +msgctxt "x86-flag" +msgid "temperature sensor" +msgstr "" + +#. /flag:pm:fid +#: modules/devices/x86/x86_data.c:290 +msgctxt "x86-flag" +msgid "frequency id control" +msgstr "" + +#. /flag:pm:vid +#: modules/devices/x86/x86_data.c:291 +msgctxt "x86-flag" +msgid "voltage id control" +msgstr "" + +#. /flag:pm:ttp +#: modules/devices/x86/x86_data.c:292 +msgctxt "x86-flag" +msgid "thermal trip" +msgstr "" + +#. /flag:pm:tm +#: modules/devices/x86/x86_data.c:293 +msgctxt "x86-flag" +msgid "hardware thermal control" +msgstr "" + +#. /flag:pm:stc +#: modules/devices/x86/x86_data.c:294 +msgctxt "x86-flag" +msgid "software thermal control" +msgstr "" + +#. /flag:pm:100mhzsteps +#: modules/devices/x86/x86_data.c:295 +msgctxt "x86-flag" +msgid "100 MHz multiplier control" +msgstr "" + +#. /flag:pm:hwpstate +#: modules/devices/x86/x86_data.c:296 +msgctxt "x86-flag" +msgid "hardware P-state control" +msgstr "" + +#. /flag:pm:cpb +#: modules/devices/x86/x86_data.c:297 +msgctxt "x86-flag" +msgid "core performance boost" +msgstr "" + +#. /flag:pm:eff_freq_ro +#: modules/devices/x86/x86_data.c:298 +msgctxt "x86-flag" +msgid "Readonly aperf/mperf" +msgstr "" + +#. /flag:pm:proc_feedback +#: modules/devices/x86/x86_data.c:299 +msgctxt "x86-flag" +msgid "processor feedback interface" +msgstr "" + +#. /flag:pm:acc_power +#: modules/devices/x86/x86_data.c:300 +msgctxt "x86-flag" +msgid "accumulated power mechanism" +msgstr "" + +#: modules/network.c:61 +msgid "Interfaces" +msgstr "界面" + +#: modules/network.c:62 +msgid "IP Connections" +msgstr "IP 连接" + +#: modules/network.c:63 +msgid "Routing Table" +msgstr "" + +#: modules/network.c:64 modules/network.c:309 +msgid "ARP Table" +msgstr "" + +#: modules/network.c:65 +msgid "DNS Servers" +msgstr "DNS 服务器" + +#: modules/network.c:66 +msgid "Statistics" +msgstr "统计信息" + +#: modules/network.c:67 +msgid "Shared Directories" +msgstr "共享目录" + +#: modules/network.c:310 modules/network.c:332 modules/network.c:363 +#: modules/network/net.c:472 +msgid "IP Address" +msgstr "IP 地址" + +#: modules/network.c:310 +msgid "MAC Address" +msgstr "MAC 地址" + +#: modules/network.c:319 +msgid "SAMBA" +msgstr "" + +#: modules/network.c:320 +msgid "NFS" +msgstr "NFS" + +#: modules/network.c:331 +msgid "Name Servers" +msgstr "名称服务器" + +#: modules/network.c:346 +msgid "Connections" +msgstr "连接" + +#: modules/network.c:347 +msgid "Local Address" +msgstr "本地地址" + +#: modules/network.c:347 +msgid "Foreign Address" +msgstr "外部地址" + +#: modules/network.c:347 +msgid "State" +msgstr "状态" + +#: modules/network.c:363 +msgid "Sent" +msgstr "已发送" + +#: modules/network.c:363 +msgid "Received" +msgstr "已接收" + +#: modules/network.c:379 +msgid "IP routing table" +msgstr "IP 路由表" + +#: modules/network.c:380 +msgid "Destination/Gateway" +msgstr "" + +#: modules/network.c:380 modules/network/net.c:473 +msgid "Mask" +msgstr "掩码" + +#: modules/network.c:408 +msgid "Network" +msgstr "网络" + +#: modules/network.c:441 +msgid "Gathers information about this computer's network connection" +msgstr "" + +#: modules/network/net.c:72 +msgctxt "wi-op-mode" +msgid "Auto" +msgstr "自动" + +#: modules/network/net.c:73 +msgctxt "wi-op-mode" +msgid "Ad-Hoc" +msgstr "" + +#: modules/network/net.c:74 +msgctxt "wi-op-mode" +msgid "Managed" +msgstr "" + +#: modules/network/net.c:75 +msgctxt "wi-op-mode" +msgid "Master" +msgstr "主声道" + +#: modules/network/net.c:76 +msgctxt "wi-op-mode" +msgid "Repeater" +msgstr "" + +#: modules/network/net.c:77 +msgctxt "wi-op-mode" +msgid "Secondary" +msgstr "" + +#: modules/network/net.c:78 +msgctxt "wi-op-mode" +msgid "(Unknown)" +msgstr "" + +#: modules/network/net.c:242 modules/network/net.c:262 +#: modules/network/net.c:270 +msgctxt "net-if-type" +msgid "Ethernet" +msgstr "以太网卡" + +#: modules/network/net.c:243 +msgctxt "net-if-type" +msgid "Loopback" +msgstr "回环" + +#: modules/network/net.c:244 +msgctxt "net-if-type" +msgid "Point-to-Point" +msgstr "点对点" + +#: modules/network/net.c:245 modules/network/net.c:246 +#: modules/network/net.c:247 modules/network/net.c:248 +#: modules/network/net.c:272 +msgctxt "net-if-type" +msgid "Wireless" +msgstr "无线网卡" + +#: modules/network/net.c:249 +msgctxt "net-if-type" +msgid "Virtual Point-to-Point (TUN)" +msgstr "" + +#: modules/network/net.c:250 +msgctxt "net-if-type" +msgid "Ethernet (TAP)" +msgstr "" + +#: modules/network/net.c:251 +msgctxt "net-if-type" +msgid "Parallel Line Internet Protocol" +msgstr "" + +#: modules/network/net.c:252 +msgctxt "net-if-type" +msgid "Infrared" +msgstr "红外线" + +#: modules/network/net.c:253 modules/network/net.c:271 +msgctxt "net-if-type" +msgid "Serial Line Internet Protocol" +msgstr "" + +#: modules/network/net.c:254 +msgctxt "net-if-type" +msgid "Integrated Services Digital Network" +msgstr "" + +#: modules/network/net.c:255 +msgctxt "net-if-type" +msgid "IPv6-over-IPv4 Tunnel" +msgstr "" + +#: modules/network/net.c:256 +msgctxt "net-if-type" +msgid "VMWare Virtual Network Interface (NAT)" +msgstr "" + +#: modules/network/net.c:257 +msgctxt "net-if-type" +msgid "VMWare Virtual Network Interface" +msgstr "" + +#: modules/network/net.c:258 +msgctxt "net-if-type" +msgid "Personal Area Network (PAN)" +msgstr "" + +#: modules/network/net.c:259 +msgctxt "net-if-type" +msgid "Bluetooth" +msgstr "蓝牙" + +#: modules/network/net.c:260 +msgctxt "net-if-type" +msgid "Bridge Interface" +msgstr "" + +#: modules/network/net.c:261 +msgctxt "net-if-type" +msgid "Hamachi Virtual Personal Network" +msgstr "" + +#: modules/network/net.c:263 +msgctxt "net-if-type" +msgid "Intermediate Functional Block" +msgstr "" + +#: modules/network/net.c:264 +msgctxt "net-if-type" +msgid "GRE Network Tunnel" +msgstr "" + +#: modules/network/net.c:265 +msgctxt "net-if-type" +msgid "Mesh Network" +msgstr "" + +#: modules/network/net.c:266 +msgctxt "net-if-type" +msgid "Wireless Master Interface" +msgstr "" + +#: modules/network/net.c:267 +msgctxt "net-if-type" +msgid "VirtualBox Virtual Network Interface" +msgstr "" + +#: modules/network/net.c:273 +msgctxt "net-if-type" +msgid "Wireless (WAN)" +msgstr "" + +#: modules/network/net.c:275 +msgctxt "net-if-type" +msgid "(Unknown)" +msgstr "" + +#: modules/network/net.c:343 modules/network/net.c:353 +msgid "Network Interfaces" +msgstr "网络接口" + +#: modules/network/net.c:343 +msgid "None Found" +msgstr "未找到" + +#: modules/network/net.c:409 +msgid "Network Adapter Properties" +msgstr "" + +#: modules/network/net.c:410 +msgid "Interface Type" +msgstr "接口类型" + +#: modules/network/net.c:411 +msgid "Hardware Address (MAC)" +msgstr "硬件地址(MAC)" + +#: modules/network/net.c:415 +msgid "MTU" +msgstr "MTU" + +#: modules/network/net.c:416 +msgid "Transfer Details" +msgstr "" + +#: modules/network/net.c:417 +msgid "Bytes Received" +msgstr "已接收字节数" + +#: modules/network/net.c:418 +msgid "Bytes Sent" +msgstr "已发送字节数" + +#: modules/network/net.c:435 modules/network/net.c:457 +#: modules/network/net.c:458 +msgid "dBm" +msgstr "dBm" + +#: modules/network/net.c:435 +msgid "mW" +msgstr "mW" + +#: modules/network/net.c:449 +msgid "Wireless Properties" +msgstr "无线属性" + +#: modules/network/net.c:450 +msgid "Network Name (SSID)" +msgstr "" + +#: modules/network/net.c:451 +msgid "Bit Rate" +msgstr "比特率" + +#: modules/network/net.c:452 +msgid "Transmission Power" +msgstr "" + +#: modules/network/net.c:455 +msgid "Link Quality" +msgstr "" + +#: modules/network/net.c:456 +msgid "Signal / Noise" +msgstr "" + +#: modules/network/net.c:471 +msgid "Internet Protocol (IPv4)" +msgstr "互联网协议(IPv4)" + +#: modules/network/net.c:472 modules/network/net.c:473 +#: modules/network/net.c:475 +msgid "(Not set)" +msgstr "(未设定)" + +#: modules/network/net.c:474 +msgid "Broadcast Address" +msgstr "广播地址" + +#~ msgid "Python" +#~ msgstr "Python" + +#~ msgid "CSharp (Mono, old)" +#~ msgstr "CSharp (Mono, old)" + +#~ msgid "CSharp (Mono)" +#~ msgstr "CSharp (Mono)" + +#~ msgid "RAM" +#~ msgstr "内存" diff --git a/shell/callbacks.c b/shell/callbacks.c index 9bb5c990..b9c6252b 100644 --- a/shell/callbacks.c +++ b/shell/callbacks.c @@ -1,10 +1,10 @@ /* * HardInfo - Displays System Information - * Copyright (C) 2003-2009 Leandro A. F. Pereira + * Copyright (C) 2003-2009 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, version 2. + * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -26,7 +26,7 @@ #include "shell.h" #include "report.h" #include "syncmanager.h" -#include "xmlrpc-server.h" +#include "uri_handler.h" #include "config.h" @@ -36,15 +36,62 @@ void cb_sync_manager() sync_manager_show(shell->window); } +#if GLIB_CHECK_VERSION(2,40,0) +#else +//For compatibility with older glib +gboolean g2_key_file_save_to_file (GKeyFile *key_file, + const gchar *filename, GError **error) +{ + gchar *contents; + gboolean success; + gsize length; + + g_return_val_if_fail (key_file != NULL, FALSE); + g_return_val_if_fail (filename != NULL, FALSE); + g_return_val_if_fail (error == NULL || *error == NULL, FALSE); + + contents = g_key_file_to_data (key_file, &length, NULL); + g_assert (contents != NULL); + + success = g_file_set_contents (filename, contents, length, error); + g_free (contents); + + return success; +} +#endif + +void cb_sync_on_startup() +{ + gboolean setting = shell_action_get_active("SyncOnStartupAction"); + GKeyFile *key_file = g_key_file_new(); + + g_mkdir(g_get_user_config_dir(),0755); + g_mkdir(g_build_filename(g_get_user_config_dir(), "hardinfo", NULL),0755); + + gchar *conf_path = g_build_filename(g_get_user_config_dir(), "hardinfo2", + "settings.ini", NULL); + + g_key_file_load_from_file( + key_file, conf_path, + G_KEY_FILE_KEEP_COMMENTS | G_KEY_FILE_KEEP_TRANSLATIONS, NULL); + g_key_file_set_boolean(key_file, "Sync", "OnStartup", setting); +#if GLIB_CHECK_VERSION(2,40,0) + g_key_file_save_to_file(key_file, conf_path, NULL); +#else + g2_key_file_save_to_file(key_file, conf_path, NULL); +#endif + g_free(conf_path); + g_key_file_free(key_file); +} void cb_open_web_page() { - open_url("http://www.hardinfo.org"); + uri_open("https://www.hardinfo2.org"); } void cb_report_bug() { - open_url("https://github.com/lpereira/hardinfo"); + uri_open("https://github.com/hardinfo2/hardinfo2/issues"); } void cb_refresh() @@ -95,7 +142,7 @@ void cb_about_module(GtkAction * action) { Shell *shell = shell_get_main_shell(); GSList *modules = shell->tree->modules; - ModuleAbout *ma; + const ModuleAbout *ma; gchar *name; g_object_get(G_OBJECT(action), "tooltip", &name, NULL); @@ -155,31 +202,63 @@ void cb_about() GtkWidget *about; gchar *copyright = NULL; const gchar *authors[] = { - _("Author:"), - "Leandro A. F. Pereira", - "", - _("Contributors:"), + "L. A. F. Pereira (2003-2023)", + "hwspeedy(2024-)", "Agney Lopes Roth Ferraz", "Andrey Esin", "Burt P.", + "Ondrej Čerman", + "Stewart Adam", + "Pascal F. Martin", + "TotalCaesar659", + "Julian Ospald", + "Julien Lavergne", + "Fernando López", + "PICCORO Lenz McKAY", + "Alexander Münch", + "Simon Quigley", + "AsciiWolf", + "George Schneeloch", + "Mattia Rizzolo", + "Yo", + "jamesbond", + "Ondrej Čerman", + "Mike Hewitt", + "Boris Afonot", + "", + "Based on work by:", + "uber-graph by Christian Hergert and others.", + "BinReloc by Hongli Lai", + "decode-dimms by Philip Edelbrock", + "decode-dimms by Christian Zuckschwerdt", + "decode-dimms by Burkart Lingner", + "x86cpucaps by Osamu Kayasono", + "MD5 implementation by Colin Plumb", + "SHA1 implementation by Steve Reid", + "Blowfish implementation by Paul Kocher", + "Raytracing benchmark by John Walker", + "FFT benchmark by Scott Robert Ladd", + "Vendor list based on GtkSysInfo by Pissens Sebastien", + "DMI support based on code by Stewart Adam", + "SCSI support based on code by Pascal F. Martin", + "", + "Translated by:", + "Alexander Münch", + "micrococo", + "yolanteng0", + "Yunji Lee", + "Hugo Carvalho", + "Paulo Giovanni pereira", + "Sergey Rodin", + "Sabri Ünal", + "yetist", "", - _("Based on work by:"), - _("MD5 implementation by Colin Plumb (see md5.c for details)"), - _("SHA1 implementation by Steve Reid (see sha1.c for details)"), - _("Blowfish implementation by Paul Kocher (see blowfich.c for details)"), - _("Raytracing benchmark by John Walker (see fbench.c for details)"), - _("FFT benchmark by Scott Robert Ladd (see fftbench.c for details)"), - _("Some code partly based on x86cpucaps by Osamu Kayasono"), - _("Vendor list based on GtkSysInfo by Pissens Sebastien"), - _("DMI support based on code by Stewart Adam"), - _("SCSI support based on code by Pascal F. Martin"), - NULL - }; - const gchar *artists[] = { + "Artwork by:", "Jakub Szypulka", - _("Tango Project"), - _("The GNOME Project"), - _("VMWare, Inc. (USB icon from VMWare Workstation 6)"), + "Tango Project", + "The GNOME Project", + "epicbard", + "Roundicons", NULL }; @@ -187,24 +266,24 @@ void cb_about() gtk_window_set_transient_for(GTK_WINDOW(about), GTK_WINDOW(shell->window)); #if GTK_CHECK_VERSION(2, 12, 0) - gtk_about_dialog_set_program_name(GTK_ABOUT_DIALOG(about), "HardInfo"); + gtk_about_dialog_set_program_name(GTK_ABOUT_DIALOG(about), "Hardinfo2"); #else - gtk_about_dialog_set_name(GTK_ABOUT_DIALOG(about), "HardInfo"); + gtk_about_dialog_set_name(GTK_ABOUT_DIALOG(about), "Hardinfo2"); #endif - copyright = g_strdup_printf("Copyright \302\251 2003-%d Leandro A. F. Pereira", HARDINFO_COPYRIGHT_LATEST_YEAR); + copyright = g_strdup_printf("Copyright \302\251 2003-2023 L. A. F. Pereira\nCopyright \302\251 2024-%d Hardinfo2 Project\n\n\n\n", HARDINFO2_COPYRIGHT_LATEST_YEAR); gtk_about_dialog_set_version(GTK_ABOUT_DIALOG(about), VERSION); gtk_about_dialog_set_copyright(GTK_ABOUT_DIALOG(about), copyright); gtk_about_dialog_set_comments(GTK_ABOUT_DIALOG(about), - _("System information and benchmark tool")); + _("System Information and Benchmark")); gtk_about_dialog_set_logo(GTK_ABOUT_DIALOG(about), - icon_cache_get_pixbuf("logo.png")); + icon_cache_get_pixbuf("hardinfo2.png")); gtk_about_dialog_set_license(GTK_ABOUT_DIALOG(about), - _("HardInfo is free software; you can redistribute it and/or modify " + _("HardInfo2 is free software; you can redistribute it and/or modify " "it under the terms of the GNU General Public License as published by " - "the Free Software Foundation, version 2.\n\n" + "the Free Software Foundation, version 2 or later.\n\n" "This program is distributed in the hope that it will be useful, " "but WITHOUT ANY WARRANTY; without even the implied warranty of " "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the " @@ -215,9 +294,8 @@ void cb_about() gtk_about_dialog_set_wrap_license(GTK_ABOUT_DIALOG(about), TRUE); gtk_about_dialog_set_authors(GTK_ABOUT_DIALOG(about), authors); - gtk_about_dialog_set_artists(GTK_ABOUT_DIALOG(about), artists); - gtk_about_dialog_set_translator_credits(GTK_ABOUT_DIALOG(about), - _("translator-credits")); + //gtk_about_dialog_set_artists(GTK_ABOUT_DIALOG(about), artists); + //gtk_about_dialog_set_translator_credits(GTK_ABOUT_DIALOG(about), _("translator-credits")); gtk_dialog_run(GTK_DIALOG(about)); gtk_widget_destroy(about); diff --git a/shell/iconcache.c b/shell/iconcache.c index 74b19b0c..8a3e6e13 100644 --- a/shell/iconcache.c +++ b/shell/iconcache.c @@ -1,10 +1,10 @@ /* * HardInfo - Displays System Information - * Copyright (C) 2003-2007 Leandro A. F. Pereira + * Copyright (C) 2003-2007 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, version 2. + * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of diff --git a/shell/loadgraph-uber.c b/shell/loadgraph-uber.c index 61964b37..08f1e2b5 100644 --- a/shell/loadgraph-uber.c +++ b/shell/loadgraph-uber.c @@ -1,7 +1,7 @@ /* * Christian Hergert's uber-graph (GPL3) * wrapped in an interface compatible with - * Leandro A. F. Pereira's loadgraph (GPL2.1). + * L. A. F. Pereira's loadgraph (GPL2.1). */ #include @@ -75,6 +75,10 @@ GtkWidget *load_graph_get_framed(LoadGraph * lg) return NULL; } +void load_graph_set_title(LoadGraph * lg, const gchar *title) +{ +} + void load_graph_clear(LoadGraph * lg) { int i; @@ -82,7 +86,7 @@ void load_graph_clear(LoadGraph * lg) for (i = 0; i < LG_MAX_LINES; i++) { lg->cur_value[i] = UBER_LINE_GRAPH_NO_VALUE; } - uber_graph_scale_changed(lg->uber_widget); + uber_graph_scale_changed(UBER_GRAPH(lg->uber_widget)); } } diff --git a/shell/loadgraph.c b/shell/loadgraph.c index ceb91720..0290d1f1 100644 --- a/shell/loadgraph.c +++ b/shell/loadgraph.c @@ -6,7 +6,7 @@ * - fixes autoscaling * - add color * - * Copyright (C) 2006 Leandro A. F. Pereira + * Copyright (C) 2006 L. A. F. Pereira * * The Simple Load Graph is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -43,6 +43,7 @@ struct _LoadGraph { PangoLayout *layout; gchar *suffix; + gchar *title; }; static void _draw(LoadGraph * lg); @@ -56,6 +57,7 @@ LoadGraph *load_graph_new(gint size) size++; lg->suffix = g_strdup(""); + lg->title = g_strdup(""); lg->area = gtk_drawing_area_new(); lg->size = (size * 3) / 2; lg->data = g_new0(gint, lg->size); @@ -87,6 +89,18 @@ gchar *load_graph_get_data_suffix(LoadGraph * lg) return lg->suffix; } +void load_graph_set_title(LoadGraph * lg, const gchar * title) +{ + g_free(lg->title); + lg->title = g_strdup(title); +} + +const gchar *load_graph_get_title(LoadGraph *lg) +{ + if (lg != NULL) return lg->title; + return NULL; +} + GtkWidget *load_graph_get_framed(LoadGraph * lg) { GtkWidget *align, *frame; @@ -115,6 +129,8 @@ void load_graph_clear(LoadGraph * lg) lg->max_value = 1; lg->remax_count = 0; + load_graph_set_title(lg, ""); + _draw(lg); } @@ -179,6 +195,18 @@ void load_graph_configure_expose(LoadGraph * lg) (GCallback) _expose, lg); } +static void _draw_title(LoadGraph * lg, const char* title) { + gchar *tmp = g_strdup_printf("%s", title); + pango_layout_set_markup(lg->layout, tmp, -1); + int width = 0; + int height = 0; + pango_layout_get_pixel_size(lg->layout, &width, &height); + gint position = (lg->width / 2) - (width / 2); + gdk_draw_layout(GDK_DRAWABLE(lg->buf), lg->trace, position, 2, + lg->layout); + g_free(tmp); +} + static void _draw_label_and_line(LoadGraph * lg, gint position, gint value) { gchar *tmp; @@ -242,6 +270,9 @@ static void _draw(LoadGraph * lg) _draw_label_and_line(lg, lg->height / 2, lg->max_value / 2); _draw_label_and_line(lg, 3 * (lg->height / 4), lg->max_value / 4); + /* graph title */ + _draw_title(lg, lg->title); + gtk_widget_queue_draw(lg->area); } diff --git a/shell/menu.c b/shell/menu.c index b0f01e58..83bd8144 100644 --- a/shell/menu.c +++ b/shell/menu.c @@ -1,13 +1,13 @@ /* * HardInfo - * Copyright(C) 2003-2007 Leandro A. F. Pereira. + * Copyright(C) 2003-2007 L. A. F. Pereira. * * menu.c is based on UI Manager tutorial by Ryan McDougall * Copyright(C) 2005 Ryan McDougall. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, version 2. + * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -31,22 +31,30 @@ #include "uidefs.h" +#ifndef GTK_STOCK_COPY +#define GTK_STOCK_COPY "_Copy" +#endif + +#ifndef GTK_STOCK_REFRESH +#define GTK_STOCK_REFRESH "_Refresh" +#endif + static GtkActionEntry entries[] = { {"InformationMenuAction", NULL, N_("_Information")}, /* name, stock id, label */ - {"RemoteMenuAction", NULL, N_("_Remote")}, + // {"RemoteMenuAction", NULL, N_("_Remote")}, {"ViewMenuAction", NULL, N_("_View")}, {"HelpMenuAction", NULL, N_("_Help")}, - {"HelpMenuModulesAction", HI_STOCK_ABOUT_MODULES, N_("About _Modules")}, + // {"HelpMenuModulesAction", HI_STOCK_ABOUT_MODULES, N_("About _Modules")}, {"MainMenuBarAction", NULL, ""}, {"ReportAction", HI_STOCK_REPORT, /* name, stock id */ N_("Generate _Report"), "R", /* label, accelerator */ - NULL, /* tooltip */ + N_("Generates a report with detailed system information"), /* tooltip */ G_CALLBACK(cb_generate_report)}, {"SyncManagerAction", HI_STOCK_SYNC_MENU, - N_("_Network Updater..."), NULL, - NULL, + N_("Synchronize"), NULL, + N_("Send benchmark results and receive updated data from the network"), G_CALLBACK(cb_sync_manager)}, {"OpenAction", "_Open", @@ -54,18 +62,18 @@ static GtkActionEntry entries[] = { NULL, G_CALLBACK(cb_sync_manager)}, - {"CopyAction", "_Copy", + {"CopyAction", HI_STOCK_CLIPBOARD, N_("_Copy to Clipboard"), "C", N_("Copy to clipboard"), G_CALLBACK(cb_copy_to_clipboard)}, - {"RefreshAction", "_Refresh", + {"RefreshAction", HI_STOCK_REFRESH, N_("_Refresh"), "F5", NULL, G_CALLBACK(cb_refresh)}, {"HomePageAction", HI_STOCK_INTERNET, - N_("_Open HardInfo Web Site"), NULL, + N_("_Open HardInfo2 Web Site"), NULL, NULL, G_CALLBACK(cb_open_web_page)}, @@ -75,7 +83,7 @@ static GtkActionEntry entries[] = { G_CALLBACK(cb_report_bug)}, {"AboutAction", "_About", - N_("_About HardInfo"), NULL, + N_("_About HardInfo2"), NULL, N_("Displays program version information"), G_CALLBACK(cb_about)}, @@ -94,6 +102,10 @@ static GtkToggleActionEntry toggle_entries[] = { N_("_Toolbar"), NULL, NULL, G_CALLBACK(cb_toolbar)}, + {"SyncOnStartupAction", NULL, + N_("Synchronize on startup"), NULL, + NULL, + G_CALLBACK(cb_sync_on_startup)}, }; /* Implement a handler for GtkUIManager's "add_widget" signal. The UI manager @@ -116,7 +128,7 @@ void menu_init(Shell * shell) /* Create our objects */ menu_box = shell->vbox; - action_group = gtk_action_group_new("HardInfo"); + action_group = gtk_action_group_new("HardInfo2"); menu_manager = gtk_ui_manager_new(); shell->action_group = action_group; @@ -126,7 +138,7 @@ void menu_init(Shell * shell) * menu_box -> window * actions -> action_group * action_group -> menu_manager */ - gtk_action_group_set_translation_domain( action_group, "hardinfo" );//gettext + gtk_action_group_set_translation_domain( action_group, "hardinfo2" );//gettext gtk_action_group_add_actions(action_group, entries, G_N_ELEMENTS(entries), NULL); gtk_action_group_add_toggle_actions(action_group, toggle_entries, diff --git a/shell/report.c b/shell/report.c index 6abb03a0..25b73beb 100644 --- a/shell/report.c +++ b/shell/report.c @@ -1,10 +1,10 @@ /* * HardInfo - Displays System Information - * Copyright (C) 2003-2008 Leandro A. F. Pereira + * Copyright (C) 2003-2008 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, version 2. + * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -23,6 +23,7 @@ #include #include #include +#include "uri_handler.h" static ReportDialog *report_dialog_new(GtkTreeModel * model, GtkWidget * parent); @@ -31,38 +32,41 @@ static void set_all_active(ReportDialog * rd, gboolean setting); static FileTypes file_types[] = { {"HTML (*.html)", "text/html", ".html", report_context_html_new}, {"Plain Text (*.txt)", "text/plain", ".txt", report_context_text_new}, + {"Shell Dump (*.txt)", "text/plain", ".txt", report_context_shell_new}, {NULL, NULL, NULL, NULL} }; +/* virtual functions */ void report_header(ReportContext * ctx) -{ - ctx->header(ctx); -} +{ ctx->header(ctx); } void report_footer(ReportContext * ctx) -{ - ctx->footer(ctx); -} +{ ctx->footer(ctx); } void report_title(ReportContext * ctx, gchar * text) -{ - ctx->title(ctx, text); -} +{ ctx->title(ctx, text); } void report_subtitle(ReportContext * ctx, gchar * text) -{ - ctx->subtitle(ctx, text); -} +{ ctx->subtitle(ctx, text); } void report_subsubtitle(ReportContext * ctx, gchar * text) -{ - ctx->subsubtitle(ctx, text); -} +{ ctx->subsubtitle(ctx, text); } -void report_key_value(ReportContext * ctx, gchar * key, gchar * value) -{ - ctx->keyvalue(ctx, key, value); -} +void report_key_value(ReportContext * ctx, gchar *key, gchar *value, gsize longest_key) +{ ctx->keyvalue(ctx, key, value, longest_key); } + +void report_details_start(ReportContext *ctx, gchar *key, gchar *value, gsize longest_key) +{ ctx->details_start(ctx, key, value, longest_key); } + +void report_details_section(ReportContext *ctx, gchar *label) +{ ctx->details_section(ctx, label); } + +void report_details_keyvalue(ReportContext *ctx, gchar *key, gchar *value, gsize longest_key) +{ ctx->details_keyvalue(ctx, key, value, longest_key); } + +void report_details_end(ReportContext *ctx) +{ ctx->details_end(ctx); } +/* end virtual functions */ gint report_get_visible_columns(ReportContext *ctx) { @@ -84,22 +88,60 @@ gint report_get_visible_columns(ReportContext *ctx) return columns; } +gchar *icon_name_css_id(const gchar *file) { + gchar *safe = g_strdup_printf("icon-%s", file); + gchar *p = safe; + while(*p) { + if (!isalnum(*p)) + *p = '-'; + p++; + } + return safe; +} + +gchar *make_icon_css(const gchar *file) { + if (!file || *file == 0) + return g_strdup(""); + gchar *ret = NULL; + gchar *path = g_build_filename(params.path_data, "pixmaps", file, NULL); + gchar *contents = NULL; + gsize length = 0; + if ( g_file_get_contents(path, &contents, &length, NULL) ) { + gchar *css_class = icon_name_css_id(file); + const char *ctype = "image/png"; + if (g_str_has_suffix(file, ".svg") ) + ctype = "image/svg+xml"; + gchar *b64data = g_base64_encode(contents, length); + ret = g_strdup_printf( + ".%s\n" + "{ background: url(data:%s;base64,%s) no-repeat;\n" + " background-size: cover; }\n", + css_class ? css_class : "", + ctype, b64data ); + g_free(b64data); + g_free(css_class); + } + g_free(contents); + g_free(path); + return ret ? ret : g_strdup(""); +} + +void cache_icon(ReportContext *ctx, const gchar *file) { + if (!ctx->icon_data) return; + if (!g_hash_table_lookup(ctx->icon_data, file) ) + g_hash_table_insert(ctx->icon_data, g_strdup(file), make_icon_css(file)); +} + void report_context_configure(ReportContext * ctx, GKeyFile * keyfile) { gchar **keys; const gchar *group = "$ShellParam$"; - /* FIXME: sometime in the future we'll save images in the report. this - flag will be set if we should support that. - - so i don't forget how to encode the images inside the html files: - https://en.wikipedia.org/wiki/Data:_URI_scheme */ - - ctx->is_image_enabled = (g_key_file_get_boolean(keyfile, - group, - "ViewType", - NULL) == SHELL_VIEW_PROGRESS); - + if (ctx->icon_refs) { + g_hash_table_remove_all(ctx->icon_refs); + ctx->icon_refs = NULL; + } + ctx->icon_refs = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free); keys = g_key_file_get_keys(keyfile, group, NULL, NULL); if (keys) { @@ -143,6 +185,12 @@ void report_context_configure(ReportContext * ctx, GKeyFile * keyfile) ctx->columns &= ~REPORT_COL_VALUE; ctx->columns |= REPORT_COL_PROGRESS; } + } else if (g_str_has_prefix(key, "Icon$")) { + gchar *ikey = g_utf8_strchr(key, -1, '$'); + gchar *tag = key_mi_tag(ikey); + gchar *icon = g_key_file_get_value(keyfile, group, key, NULL); + cache_icon(ctx, icon); + g_hash_table_insert(ctx->icon_refs, tag, icon); } } @@ -151,12 +199,144 @@ void report_context_configure(ReportContext * ctx, GKeyFile * keyfile) } -void report_table(ReportContext * ctx, gchar * text) +static void report_html_details_start(ReportContext *ctx, gchar *key, gchar *value, gsize longest_key) { + guint cols = report_get_visible_columns(ctx); + report_key_value(ctx, key, value, longest_key); + ctx->parent_columns = ctx->columns; + ctx->columns = REPORT_COL_VALUE; + ctx->output = h_strdup_cprintf("\n", ctx->output, cols); +} + +static void report_html_details_end(ReportContext *ctx) { + ctx->output = h_strdup_cprintf("
\n", ctx->output); + ctx->columns = ctx->parent_columns; + ctx->parent_columns = 0; +} + +void report_details(ReportContext *ctx, gchar *key, gchar *value, gchar *details, gsize longest_key) { GKeyFile *key_file = g_key_file_new(); gchar **groups; gint i; + report_details_start(ctx, key, value, longest_key); + ctx->in_details = TRUE; + + g_key_file_load_from_data(key_file, details, strlen(details), 0, NULL); + groups = g_key_file_get_groups(key_file, NULL); + + for (i = 0; groups[i]; i++) { + gchar *group, *tmpgroup; + gchar **keys; + gint j; + + if (groups[i][0] == '$') { + continue; + } + + group = groups[i]; + + tmpgroup = g_strdup(group); + strend(group, '#'); + + report_subsubtitle(ctx, group); + + keys = g_key_file_get_keys(key_file, tmpgroup, NULL, NULL); + + gsize longest_key = 0; + for (j = 0; keys[j]; j++) { + gchar *lbl; + key_get_components(keys[j], NULL, NULL, NULL, &lbl, NULL, TRUE); + longest_key = MAX(longest_key, strlen(lbl)); + g_free(lbl); + } + + for (j = 0; keys[j]; j++) { + gchar *key = keys[j]; + gchar *raw_value, *value; + + raw_value = g_key_file_get_value(key_file, tmpgroup, key, NULL); + value = g_strcompress(raw_value); /* un-escape \n, \t, etc */ + + if (g_utf8_validate(key, -1, NULL) && g_utf8_validate(value, -1, NULL)) { + strend(key, '#'); + + if (g_str_equal(value, "...")) { + g_free(value); + if (!(value = ctx->entry->fieldfunc(key))) { + value = g_strdup("..."); + } + } + + report_key_value(ctx, key, value, longest_key); + + } + + g_free(value); + g_free(raw_value); + } + + g_strfreev(keys); + g_free(tmpgroup); + } + + g_strfreev(groups); + g_key_file_free(key_file); + + ctx->in_details = FALSE; + report_details_end(ctx); +} + +static void report_table_shell_dump(ReportContext *ctx, gchar *key_file_str, int level) +{ + gchar *text, *p, *next_nl, *eq, *indent; + gchar *key, *value; + + indent = g_strnfill(level * 4, ' '); + + if (key_file_str) { + p = text = g_strdup(key_file_str); + while(next_nl = strchr(p, '\n')) { + *next_nl = 0; + eq = strchr(p, '='); + if (*p != '[' && eq) { + *eq = 0; + key = p; value = eq + 1; + + ctx->output = h_strdup_cprintf("%s%s=%s\n", ctx->output, indent, key, value); + if (key_wants_details(key) || params.force_all_details) { + gchar *mi_tag = key_mi_tag(key); + gchar *mi_data = ctx->entry->morefunc(mi_tag); /*const*/ + + if (mi_data) + report_table_shell_dump(ctx, mi_data, level + 1); + + g_free(mi_tag); + } + + } else + ctx->output = h_strdup_cprintf("%s%s\n", ctx->output, indent, p); + p = next_nl + 1; + } + } + g_free(text); + g_free(indent); + return; +} + +void report_table(ReportContext * ctx, gchar * text) +{ + GKeyFile *key_file = NULL; + gchar **groups; + gint i; + + if (ctx->format == REPORT_FORMAT_SHELL) { + report_table_shell_dump(ctx, text, 0); + return; + } + + key_file = g_key_file_new(); + /* make only "Value" column visible ("Key" column is always visible) */ ctx->columns = REPORT_COL_VALUE; ctx->show_column_headers = FALSE; @@ -166,67 +346,81 @@ void report_table(ReportContext * ctx, gchar * text) groups = g_key_file_get_groups(key_file, NULL); for (i = 0; groups[i]; i++) { - if (groups[i][0] == '$') { - report_context_configure(ctx, key_file); - break; - } + if (groups[i][0] == '$') { + report_context_configure(ctx, key_file); + break; + } } for (i = 0; groups[i]; i++) { - gchar *group, *tmpgroup; - gchar **keys; - gint j; + gchar *group, *tmpgroup; + gchar **keys; + gint j; - if (groups[i][0] == '$') { - continue; - } + if (groups[i][0] == '$') { + continue; + } - group = groups[i]; + group = groups[i]; - tmpgroup = g_strdup(group); - strend(group, '#'); + tmpgroup = g_strdup(group); + strend(group, '#'); - report_subsubtitle(ctx, group); + report_subsubtitle(ctx, group); -#if 0 - if (ctx->is_image_enabled) { - report_embed_image(ctx, key_file, group); - } else { -#endif - keys = g_key_file_get_keys(key_file, tmpgroup, NULL, NULL); - for (j = 0; keys[j]; j++) { - gchar *key = keys[j]; - gchar *value; + keys = g_key_file_get_keys(key_file, tmpgroup, NULL, NULL); - value = g_key_file_get_value(key_file, tmpgroup, key, NULL); + gsize longest_key = 0; + for (j = 0; keys[j]; j++) { + gchar *lbl; + key_get_components(keys[j], NULL, NULL, NULL, &lbl, NULL, TRUE); + longest_key = MAX(longest_key, strlen(lbl)); + g_free(lbl); + } - if (g_utf8_validate(key, -1, NULL) && g_utf8_validate(value, -1, NULL)) { - strend(key, '#'); + for (j = 0; keys[j]; j++) { + gchar *key = keys[j]; + gchar *raw_value, *value; - if (g_str_equal(value, "...")) { - g_free(value); - if (!(value = ctx->entry->fieldfunc(key))) { - value = g_strdup("..."); - } - } + raw_value = g_key_file_get_value(key_file, tmpgroup, key, NULL); + value = g_strcompress(raw_value); /* un-escape \n, \t, etc */ - if (*key == '$') { - report_key_value(ctx, strchr(key + 1, '$') + 1, - value); - } else { - report_key_value(ctx, key, value); - } + if (g_utf8_validate(key, -1, NULL) && g_utf8_validate(value, -1, NULL)) { + strend(key, '#'); - } + if (g_str_equal(value, "...")) { + g_free(value); + if (!(value = ctx->entry->fieldfunc(key))) { + value = g_strdup("..."); + } + } - g_free(value); - } + if ( key_is_flagged(key) ) { + gchar *mi_tag = key_mi_tag(key); + gchar *mi_data = NULL; /*const*/ - g_strfreev(keys); -#if 0 - } -#endif - g_free(tmpgroup); + if (key_wants_details(key) || params.force_all_details) + mi_data = ctx->entry->morefunc(mi_tag); + + if (mi_data) + report_details(ctx, key, value, mi_data, longest_key); + else + report_key_value(ctx, key, value, longest_key); + + g_free(mi_tag); + } else { + report_key_value(ctx, key, value, longest_key); + } + + } + + g_free(value); + g_free(raw_value); + } + + g_strfreev(keys); + + g_free(tmpgroup); } g_strfreev(groups); @@ -244,18 +438,35 @@ static void report_html_header(ReportContext * ctx) "\n" "\n" "\n", VERSION); } static void report_html_footer(ReportContext * ctx) { - ctx->output = h_strconcat(ctx->output, - "", NULL); + ctx->output = h_strconcat(ctx->output, "", NULL); + ctx->output = h_strconcat(ctx->output, "\n", NULL); + ctx->output = h_strconcat(ctx->output, "", NULL); } static void report_html_title(ReportContext * ctx, gchar * text) @@ -277,11 +488,22 @@ static void report_html_subtitle(ReportContext * ctx, gchar * text) ctx->first_table = FALSE; } - ctx->output = h_strdup_cprintf("
entry->icon_file) { + gchar *icon_class = icon_name_css_id(ctx->entry->icon_file); + icon = g_strdup_printf("
", icon_class); + g_free(icon_class); + } else { + icon = g_strdup(""); + } + + ctx->output = h_strdup_cprintf("\n", ctx->output, + icon, columns, text); + g_free(icon); } static void report_html_subsubtitle(ReportContext * ctx, gchar * text) @@ -291,27 +513,42 @@ static void report_html_subsubtitle(ReportContext * ctx, gchar * text) ctx->output = h_strdup_cprintf("\n", ctx->output, - columns, + columns+1, text); } static void -report_html_key_value(ReportContext * ctx, gchar * key, gchar * value) +report_html_key_value(ReportContext * ctx, gchar *key, gchar *value, gsize longest_key) { gint columns = report_get_visible_columns(ctx); gchar **values; gint i, mc; + gboolean highlight = key_is_highlighted(key); + gchar *tag = key_mi_tag(key); + gchar *icon = tag ? (gchar*)g_hash_table_lookup(ctx->icon_refs, tag) : NULL; + g_free(tag); + /* icon from the table is const, so can be re-used without free */ + if (icon) { + gchar *icon_class = icon_name_css_id(icon); + icon = g_strdup_printf("
", icon_class); + g_free(icon_class); + } else + icon = g_strdup(""); + + gchar *name = (gchar*)key_get_name(key); + if (columns == 2) { - ctx->output = h_strdup_cprintf("" + ctx->output = h_strdup_cprintf("" "\n", ctx->output, - key, value); + highlight ? " class=\"hilight\"" : "", + icon, name, value); } else { values = g_strsplit(value, "|", columns); mc = g_strv_length(values) - 1; - ctx->output = h_strdup_cprintf("\n\n", ctx->output, key); + ctx->output = h_strdup_cprintf("\n\n", ctx->output, highlight ? " class=\"hilight\"" : "", icon, name); for (i = mc; i >= 0; i--) { ctx->output = h_strdup_cprintf("", @@ -323,6 +560,7 @@ report_html_key_value(ReportContext * ctx, gchar * key, gchar * value) g_strfreev(values); } + g_free(icon); } static void report_text_header(ReportContext * ctx) @@ -364,29 +602,60 @@ static void report_text_subtitle(ReportContext * ctx, gchar * text) static void report_text_subsubtitle(ReportContext * ctx, gchar * text) { - ctx->output = h_strdup_cprintf("-%s-\n", ctx->output, text); + gchar indent[10] = " "; + if (!ctx->in_details) + indent[0] = 0; + ctx->output = h_strdup_cprintf("%s-%s-\n", ctx->output, indent, text); } static void -report_text_key_value(ReportContext * ctx, gchar * key, gchar * value) +report_text_key_value(ReportContext * ctx, gchar *key, gchar *value, gsize longest_key) { gint columns = report_get_visible_columns(ctx); gchar **values; - gint i, mc; - - if (columns == 2) { - if (strlen(value)) - ctx->output = h_strdup_cprintf("%s\t\t: %s\n", ctx->output, key, value); - else - ctx->output = h_strdup_cprintf("%s\n", ctx->output, key); + gint i, mc, field_width = MAX(10, longest_key); + gchar indent[10] = " "; + if (!ctx->in_details) + indent[0] = 0; + gchar field_spacer[51]; + for(i = 0; i < 49; i++) + field_spacer[i] = ' '; + field_width = MIN(50, field_width); + field_spacer[field_width] = 0; + + gboolean highlight = key_is_highlighted(key); + gboolean multiline = (value && strlen(value) && strchr(value, '\n')); + gchar *name = (gchar*)key_get_name(key); + gchar *pf = g_strdup_printf("%s%s", indent, highlight ? "* " : " "); + gchar *rjname = g_strdup(field_spacer); + if (strlen(name) > strlen(rjname)) + name[strlen(rjname)] = 0; + strcpy(rjname + strlen(rjname) - strlen(name), name); + + if (columns == 2 || ctx->in_details) { + if (strlen(value)) { + if (multiline) { + gchar **lines = g_strsplit(value, "\n", 0); + for(i=0; lines[i]; i++) { + if (i == 0) + ctx->output = h_strdup_cprintf("%s%s : %s\n", ctx->output, pf, rjname, lines[i]); + else + ctx->output = h_strdup_cprintf("%s%s %s\n", ctx->output, pf, field_spacer, lines[i]); + } + g_strfreev(lines); + } else { + ctx->output = h_strdup_cprintf("%s%s : %s\n", ctx->output, pf, rjname, value); + } + } else + ctx->output = h_strdup_cprintf("%s%s\n", ctx->output, pf, rjname); } else { values = g_strsplit(value, "|", columns); mc = g_strv_length(values) - 1; - ctx->output = h_strdup_cprintf("%s\t", ctx->output, key); + ctx->output = h_strdup_cprintf("%s%s", ctx->output, pf, rjname); for (i = mc; i >= 0; i--) { - ctx->output = h_strdup_cprintf("%s\t", + ctx->output = h_strdup_cprintf("\t%s", ctx->output, values[i]); } @@ -395,6 +664,7 @@ report_text_key_value(ReportContext * ctx, gchar * key, gchar * value) g_strfreev(values); } + g_free(pf); } static GSList *report_create_module_list_from_dialog(ReportDialog * rd) @@ -454,18 +724,22 @@ report_create_inner_from_module_list(ReportContext * ctx, GSList * modules) ShellModule *module = (ShellModule *) modules->data; GSList *entries; - if (!params.gui_running) + if (!params.gui_running && !params.quiet) fprintf(stderr, "\033[40;32m%s\033[0m\n", module->name); report_title(ctx, module->name); for (entries = module->entries; entries; entries = entries->next) { ShellModuleEntry *entry = (ShellModuleEntry *) entries->data; + if (entry->flags & MODULE_FLAG_HIDE) continue; - if (!params.gui_running) + if (!params.gui_running && !params.quiet) fprintf(stderr, "\033[2K\033[40;32;1m %s\033[0m\n", entry->name); + if (entry->icon_file) + cache_icon(ctx, entry->icon_file); + ctx->entry = entry; report_subtitle(ctx, entry->name); module_entry_scan(entry); @@ -536,6 +810,11 @@ ReportContext *report_context_html_new() ctx->subsubtitle = report_html_subsubtitle; ctx->keyvalue = report_html_key_value; + ctx->details_start = report_html_details_start; + ctx->details_section = report_html_subsubtitle; + ctx->details_keyvalue = report_html_key_value; + ctx->details_end = report_html_details_end; + ctx->output = g_strdup(""); ctx->format = REPORT_FORMAT_HTML; @@ -543,6 +822,8 @@ ReportContext *report_context_html_new() g_free, g_free); ctx->first_table = TRUE; + ctx->icon_data = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free); + return ctx; } @@ -558,6 +839,11 @@ ReportContext *report_context_text_new() ctx->subsubtitle = report_text_subsubtitle; ctx->keyvalue = report_text_key_value; + ctx->details_start = report_text_key_value; + ctx->details_section = report_text_subsubtitle; + ctx->details_keyvalue = report_text_key_value; + ctx->details_end = report_text_footer; /* nothing */ + ctx->output = g_strdup(""); ctx->format = REPORT_FORMAT_TEXT; @@ -568,15 +854,45 @@ ReportContext *report_context_text_new() return ctx; } +ReportContext *report_context_shell_new() +{ + ReportContext *ctx; + + ctx = g_new0(ReportContext, 1); + ctx->header = report_text_header; + ctx->footer = report_text_footer; + + ctx->title = report_text_title; + ctx->subtitle = report_text_subtitle; + /* special format handled in report_table(), + * doesn't need the others. */ + + ctx->output = g_strdup(""); + ctx->format = REPORT_FORMAT_SHELL; + + ctx->column_titles = g_hash_table_new_full(g_str_hash, g_str_equal, + g_free, g_free); + ctx->first_table = TRUE; + + return ctx; +} + void report_context_free(ReportContext * ctx) { g_hash_table_destroy(ctx->column_titles); + if(ctx->icon_refs) + g_hash_table_destroy(ctx->icon_refs); + if(ctx->icon_data) + g_hash_table_destroy(ctx->icon_data); g_free(ctx->output); g_free(ctx); } void report_create_from_module_list(ReportContext * ctx, GSList * modules) { + if (ctx->format == REPORT_FORMAT_HTML) + params.fmt_opts = FMT_OPT_HTML; + report_header(ctx); report_create_inner_from_module_list(ctx, modules); @@ -617,6 +933,9 @@ static gboolean report_generate(ReportDialog * rd) gchar *file; FILE *stream; + int old_fmt_opts = params.fmt_opts; + params.fmt_opts = FMT_OPT_NONE; + if (!(file = report_get_filename())) return FALSE; @@ -631,6 +950,7 @@ static gboolean report_generate(ReportDialog * rd) g_warning(_("Cannot create ReportContext. Programming bug?")); g_free(file); fclose(stream); + params.fmt_opts = old_fmt_opts; return FALSE; } @@ -661,7 +981,7 @@ static gboolean report_generate(ReportDialog * rd) gchar *temp; temp = g_strdup_printf("file://%s", file); - open_url(temp); + uri_open(temp); g_free(temp); } @@ -672,6 +992,7 @@ static gboolean report_generate(ReportDialog * rd) report_context_free(ctx); g_free(file); + params.fmt_opts = old_fmt_opts; return TRUE; } diff --git a/shell/shell.c b/shell/shell.c index 8688f9ac..a2773523 100644 --- a/shell/shell.c +++ b/shell/shell.c @@ -1,10 +1,10 @@ /* * HardInfo - Displays System Information - * Copyright (C) 2003-2007 Leandro A. F. Pereira + * Copyright (C) 2003-2007 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, version 2. + * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -15,6 +15,8 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ +#define _GNU_SOURCE + #include #include @@ -30,22 +32,31 @@ #include "iconcache.h" #include "menu.h" #include "stock.h" +#include "uri_handler.h" #include "callbacks.h" +struct UpdateTableItem { + union { + GtkWidget *widget; + GtkTreeIter *iter; + }; + gboolean is_iter; +}; + /* * Internal Prototypes ******************************************************** */ -static void create_window(); +static void create_window(void); static ShellTree *tree_new(void); -static ShellInfoTree *info_tree_new(gboolean extra); +static ShellInfoTree *info_tree_new(void); static void module_selected(gpointer data); static void module_selected_show_info(ShellModuleEntry * entry, gboolean reload); static void info_selected(GtkTreeSelection * ts, gpointer data); -static void info_selected_show_extra(gchar * data); +static void info_selected_show_extra(const gchar *tag); static gboolean reload_section(gpointer data); static gboolean rescan_section(gpointer data); static gboolean update_field(gpointer data); @@ -58,6 +69,8 @@ static Shell *shell = NULL; static GHashTable *update_tbl = NULL; static GSList *update_sfusrc = NULL; +gchar *lginterval = NULL; + /* * Code :) ******************************************************************** */ @@ -87,9 +100,8 @@ void shell_ui_manager_set_visible(const gchar * path, gboolean setting) void shell_clear_tree_models(Shell *shell) { gtk_tree_store_clear(GTK_TREE_STORE(shell->tree->model)); - gtk_tree_store_clear(GTK_TREE_STORE(shell->info->model)); - gtk_tree_store_clear(GTK_TREE_STORE(shell->moreinfo->model)); - gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(shell->info->view), FALSE); + gtk_tree_store_clear(GTK_TREE_STORE(shell->info_tree->model)); + gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(shell->info_tree->view), FALSE); } void shell_clear_timeouts(Shell *shell) @@ -236,7 +248,7 @@ void shell_status_pulse(void) gtk_progress_bar_pulse(GTK_PROGRESS_BAR(shell->progress)); while (gtk_events_pending()) gtk_main_iteration(); - } else { + } else if (!params.quiet) { static gint counter = 0; fprintf(stderr, "\033[2K\033[40;37;1m %c\033[0m\r", @@ -251,7 +263,7 @@ void shell_status_set_percentage(gint percentage) (float) percentage / 100.0); while (gtk_events_pending()) gtk_main_iteration(); - } else { + } else if (!params.quiet) { if (percentage < 1 || percentage >= 100) { fprintf(stderr, "\033[2K"); } else { @@ -277,14 +289,13 @@ void shell_view_set_enabled(gboolean setting) widget_set_cursor(shell->window, GDK_WATCH); } - gtk_widget_set_sensitive(shell->hpaned, setting); + gtk_widget_set_sensitive(shell->hbox, setting); shell_action_set_enabled("ViewMenuAction", setting); shell_action_set_enabled("ConnectToAction", setting); shell_action_set_enabled("RefreshAction", setting); shell_action_set_enabled("CopyAction", setting); shell_action_set_enabled("ReportAction", setting); shell_action_set_enabled("SyncManagerAction", setting && sync_manager_count_entries() > 0); - } void shell_status_set_enabled(gboolean setting) @@ -328,7 +339,7 @@ void shell_status_update(const gchar * message) gtk_progress_bar_pulse(GTK_PROGRESS_BAR(shell->progress)); while (gtk_events_pending()) gtk_main_iteration(); - } else { + } else if (!params.quiet) { fprintf(stderr, "\033[2K\033[40;37;1m %s\033[0m\r", message); } } @@ -362,12 +373,8 @@ static ShellNote *note_new(void) gtk_container_add(GTK_CONTAINER(note->event_box), border_box); gtk_widget_show(border_box); -#if GTK_CHECK_VERSION(3, 0, 0) - /* TODO:GTK3 css-based style */ -#else gtk_widget_modify_bg(border_box, GTK_STATE_NORMAL, &info_default_fill_color); gtk_widget_modify_bg(note->event_box, GTK_STATE_NORMAL, &info_default_border_color); -#endif icon = icon_cache_get_image("close.png"); gtk_widget_show(icon); @@ -399,12 +406,12 @@ void shell_set_title(Shell *shell, gchar *subtitle) if (subtitle) { gchar *tmp; - tmp = g_strdup_printf(_("%s - System Information"), subtitle); + tmp = g_strdup_printf(_("%s - System Information and Benchmark"), subtitle); gtk_window_set_title(GTK_WINDOW(shell->window), tmp); g_free(tmp); } else { - gtk_window_set_title(GTK_WINDOW(shell->window), _("System Information")); + gtk_window_set_title(GTK_WINDOW(shell->window), _("System Information and Benchmark")); } } @@ -416,9 +423,9 @@ static void create_window(void) shell->window = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_window_set_icon(GTK_WINDOW(shell->window), - icon_cache_get_pixbuf("logo.png")); + icon_cache_get_pixbuf("hardinfo2.png")); shell_set_title(shell, NULL); - gtk_window_set_default_size(GTK_WINDOW(shell->window), 800, 600); + gtk_window_set_default_size(GTK_WINDOW(shell->window), 1024, 800); g_signal_connect(G_OBJECT(shell->window), "destroy", destroy_me, NULL); #if GTK_CHECK_VERSION(3, 0, 0) @@ -455,13 +462,12 @@ static void create_window(void) gtk_box_pack_start(GTK_BOX(hbox), shell->status, FALSE, FALSE, 5); #if GTK_CHECK_VERSION(3, 0, 0) - shell->hpaned = gtk_paned_new(GTK_ORIENTATION_HORIZONTAL); + shell->hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 5); #else - shell->hpaned = gtk_hpaned_new(); + shell->hbox = gtk_hbox_new(FALSE, 5); #endif - gtk_widget_show(shell->hpaned); - gtk_box_pack_end(GTK_BOX(vbox), shell->hpaned, TRUE, TRUE, 0); - gtk_paned_set_position(GTK_PANED(shell->hpaned), 210); + gtk_widget_show(shell->hbox); + gtk_box_pack_end(GTK_BOX(vbox), shell->hbox, TRUE, TRUE, 0); #if GTK_CHECK_VERSION(3, 0, 0) vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 5); @@ -469,7 +475,7 @@ static void create_window(void) vbox = gtk_vbox_new(FALSE, 5); #endif gtk_widget_show(vbox); - gtk_paned_add2(GTK_PANED(shell->hpaned), vbox); + gtk_box_pack_end(GTK_BOX(shell->hbox), vbox, TRUE, TRUE, 0); shell->note = note_new(); gtk_box_pack_end(GTK_BOX(vbox), shell->note->event_box, FALSE, FALSE, 0); @@ -512,10 +518,8 @@ static void menu_item_set_icon_always_visible(Shell *shell, path = g_strdup_printf("%s/%s", parent_path, item_id); menuitem = gtk_ui_manager_get_widget(shell->ui_manager, path); -#if GTK_CHECK_VERSION(3, 0, 0) -#else - gtk_image_menu_item_set_always_show_image(GTK_IMAGE_MENU_ITEM(menuitem), TRUE); -#endif + + //gtk_image_menu_item_set_always_show_image(GTK_IMAGE_MENU_ITEM(menuitem), TRUE); g_free(path); } @@ -568,7 +572,8 @@ static void add_module_to_menu(gchar * name, GdkPixbuf * pixbuf) merge_id = gtk_ui_manager_new_merge_id(shell->ui_manager); gtk_ui_manager_add_ui(shell->ui_manager, merge_id, - "/menubar/HelpMenu/HelpMenuModules/LastSep", + // "/menubar/HelpMenu/HelpMenuModules/LastSep", + "/menubar/HelpMenu/LastSep", about_module, about_module, GTK_UI_MANAGER_AUTO, TRUE); shell->merge_ids = g_slist_prepend(shell->merge_ids, GINT_TO_POINTER(merge_id)); @@ -638,7 +643,7 @@ void shell_add_modules_to_gui(gpointer _shell_module, gpointer _shell_tree) -1); } - add_module_to_menu(module->name, module->icon); + //add_module_to_menu(module->name, module->icon); if (module->entries) { ShellModuleEntry *entry; @@ -647,6 +652,7 @@ void shell_add_modules_to_gui(gpointer _shell_module, gpointer _shell_tree) for (p = module->entries; p; p = g_slist_next(p)) { GtkTreeIter child; entry = (ShellModuleEntry *) p->data; + if (entry->flags & MODULE_FLAG_HIDE) continue; gtk_tree_store_append(store, &child, &parent); gtk_tree_store_set(store, &child, TREE_COL_NAME, entry->name, @@ -668,38 +674,44 @@ void shell_add_modules_to_gui(gpointer _shell_module, gpointer _shell_tree) } } -static void __tree_iter_destroy(gpointer data) +static void destroy_update_tbl_value(gpointer data) { - gtk_tree_iter_free((GtkTreeIter *) data); + struct UpdateTableItem *item = data; + + if (item->is_iter) { + gtk_tree_iter_free(item->iter); + } else { + g_object_unref(item->widget); + } + + g_free(item); } -ShellSummary *summary_new(void) +DetailView *detail_view_new(void) { - ShellSummary *summary; + DetailView *detail_view; - summary = g_new0(ShellSummary, 1); - summary->scroll = gtk_scrolled_window_new(NULL, NULL); + detail_view = g_new0(DetailView, 1); + detail_view->scroll = gtk_scrolled_window_new(NULL, NULL); #if GTK_CHECK_VERSION(3, 0, 0) - summary->view = gtk_box_new(GTK_ORIENTATION_VERTICAL, 5); + detail_view->view = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); #else - summary->view = gtk_vbox_new(FALSE, 5); + detail_view->view = gtk_vbox_new(FALSE, 0); #endif - summary->items = NULL; - gtk_container_set_border_width(GTK_CONTAINER(summary->view), 6); - gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(summary->scroll), - GTK_POLICY_AUTOMATIC, - GTK_POLICY_AUTOMATIC); + gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(detail_view->scroll), + GTK_SHADOW_IN); + gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(detail_view->scroll), + GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); #if GTK_CHECK_VERSION(3, 0, 0) - gtk_container_add(GTK_CONTAINER(summary->scroll), - summary->view); + gtk_container_add(GTK_CONTAINER(detail_view->scroll), detail_view->view); #else - gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(summary->scroll), - summary->view); + gtk_scrolled_window_add_with_viewport( + GTK_SCROLLED_WINDOW(detail_view->scroll), detail_view->view); #endif - gtk_widget_show_all(summary->scroll); + gtk_widget_show_all(detail_view->scroll); - return summary; + return detail_view; } static gboolean @@ -713,6 +725,50 @@ select_first_tree_item(gpointer data) return FALSE; } +static void +check_for_updates(void) +{ + GKeyFile *key_file = g_key_file_new(); + + gchar *conf_path = g_build_filename(g_get_user_config_dir(), "hardinfo2", + "settings.ini", NULL); + + g_key_file_load_from_file( + key_file, conf_path, + G_KEY_FILE_KEEP_COMMENTS | G_KEY_FILE_KEEP_TRANSLATIONS, NULL); + + gboolean setting = g_key_file_get_boolean(key_file, "Sync", "OnStartup", NULL); + shell_action_set_active("SyncOnStartupAction", setting); + + g_free(conf_path); + g_key_file_free(key_file); + + if (setting) { + sync_manager_update_on_startup(); + } +} + +gboolean hardinfo_link(const gchar *uri) { + /* Clicked link events pass through here on their + * way to the default handler (xdg-open). + * + * TODO: In the future, links could be used to + * jump to different pages in hardinfo. + * + * if (g_str_has_prefix(uri, "hardinfo:")) { + * hardinfo_navigate(g_utf8_strchr(uri, strlen("hardinfo2"), ':') + 1); + * return TRUE; + * } + */ + + return FALSE; /* didn't handle it */ +} + +void shell_set_transient_dialog(GtkWindow *dialog) +{ + shell->transient_dialog = dialog ? dialog : GTK_WINDOW(shell->window); +} + void shell_init(GSList * modules) { if (shell) { @@ -722,6 +778,9 @@ void shell_init(GSList * modules) DEBUG("initializing shell"); + uri_set_function(hardinfo_link); + params.fmt_opts = FMT_OPT_PANGO; + create_window(); shell_action_set_property("ConnectToAction", "is-important", TRUE); @@ -729,28 +788,27 @@ void shell_init(GSList * modules) shell_action_set_property("RefreshAction", "is-important", TRUE); shell_action_set_property("ReportAction", "is-important", TRUE); shell_action_set_property("ReportBugAction", "is-important", TRUE); + shell_action_set_property("SyncManagerAction", "is-important", TRUE); shell->tree = tree_new(); - shell->info = info_tree_new(FALSE); - shell->moreinfo = info_tree_new(TRUE); + shell->info_tree = info_tree_new(); shell->loadgraph = load_graph_new(75); - shell->summary = summary_new(); + shell->detail_view = detail_view_new(); + shell->transient_dialog = GTK_WINDOW(shell->window); update_tbl = g_hash_table_new_full(g_str_hash, g_str_equal, - g_free, __tree_iter_destroy); + g_free, destroy_update_tbl_value); - gtk_paned_pack1(GTK_PANED(shell->hpaned), shell->tree->scroll, - SHELL_PACK_RESIZE, SHELL_PACK_SHRINK); - gtk_paned_pack1(GTK_PANED(shell->vpaned), shell->info->scroll, + gtk_box_pack_start(GTK_BOX(shell->hbox), shell->tree->scroll, + FALSE, FALSE, 0); + gtk_paned_pack1(GTK_PANED(shell->vpaned), shell->info_tree->scroll, SHELL_PACK_RESIZE, SHELL_PACK_SHRINK); - gtk_notebook_append_page(GTK_NOTEBOOK(shell->notebook), - shell->moreinfo->scroll, NULL); gtk_notebook_append_page(GTK_NOTEBOOK(shell->notebook), load_graph_get_framed(shell->loadgraph), NULL); gtk_notebook_append_page(GTK_NOTEBOOK(shell->notebook), - shell->summary->scroll, NULL); + shell->detail_view->scroll, NULL); gtk_notebook_set_show_tabs(GTK_NOTEBOOK(shell->notebook), FALSE); gtk_notebook_set_show_border(GTK_NOTEBOOK(shell->notebook), FALSE); @@ -760,10 +818,12 @@ void shell_init(GSList * modules) shell->tree->modules = modules ? modules : modules_load_all(); + check_for_updates(); + g_slist_foreach(shell->tree->modules, shell_add_modules_to_gui, shell->tree); gtk_tree_view_expand_all(GTK_TREE_VIEW(shell->tree->view)); - gtk_widget_show_all(shell->hpaned); + gtk_widget_show_all(shell->hbox); load_graph_configure_expose(shell->loadgraph); gtk_widget_hide(shell->notebook); @@ -777,11 +837,7 @@ void shell_init(GSList * modules) shell_action_set_active("SidePaneAction", TRUE); shell_action_set_active("ToolbarAction", TRUE); -#ifndef HAS_LIBSOUP - shell_action_set_enabled("SyncManagerAction", FALSE); -#else shell_action_set_enabled("SyncManagerAction", sync_manager_count_entries() > 0); -#endif /* Should select Computer Summary (note: not Computer/Summary) */ g_idle_add(select_first_tree_item, NULL); @@ -790,48 +846,56 @@ void shell_init(GSList * modules) static gboolean update_field(gpointer data) { ShellFieldUpdate *fu; - GtkTreeIter *iter; + struct UpdateTableItem *item; - fu = (ShellFieldUpdate *) data; + fu = (ShellFieldUpdate *)data; g_return_val_if_fail(fu != NULL, FALSE); DEBUG("update_field [%s]", fu->field_name); - iter = g_hash_table_lookup(update_tbl, fu->field_name); - if (!iter) { + item = g_hash_table_lookup(update_tbl, fu->field_name); + if (!item) { return FALSE; } /* if the entry is still selected, update it */ - if (iter && fu->entry->selected && fu->entry->fieldfunc) { - GtkTreeStore *store = GTK_TREE_STORE(shell->info->model); - gchar *value = fu->entry->fieldfunc(fu->field_name); - - /* - * this function is also used to feed the load graph when ViewType - * is SHELL_VIEW_LOAD_GRAPH - */ - if (shell->view_type == SHELL_VIEW_LOAD_GRAPH && - gtk_tree_selection_iter_is_selected(shell->info->selection, - iter)) { - load_graph_update(shell->loadgraph, atof(value)); - } + if (fu->entry->selected && fu->entry->fieldfunc) { + gchar *value = fu->entry->fieldfunc(fu->field_name); + + if (item->is_iter) { + /* + * this function is also used to feed the load graph when ViewType + * is SHELL_VIEW_LOAD_GRAPH + */ + if (shell->view_type == SHELL_VIEW_LOAD_GRAPH && + gtk_tree_selection_iter_is_selected(shell->info_tree->selection, + item->iter)) { + + load_graph_set_title(shell->loadgraph, fu->field_name); + load_graph_update(shell->loadgraph, atof(value)); + } - gtk_tree_store_set(store, iter, INFO_TREE_COL_VALUE, value, -1); + GtkTreeStore *store = GTK_TREE_STORE(shell->info_tree->model); + gtk_tree_store_set(store, item->iter, INFO_TREE_COL_VALUE, value, -1); + } else { + GList *children = gtk_container_get_children(GTK_CONTAINER(item->widget)); + gtk_label_set_markup(GTK_LABEL(children->next->data), value); + g_list_free(children); + } - g_free(value); - return TRUE; + g_free(value); + return TRUE; } if (update_sfusrc) { - GSList *sfu; + GSList *sfu; - for (sfu = update_sfusrc; sfu; sfu = sfu->next) { - g_free(sfu->data); - } + for (sfu = update_sfusrc; sfu; sfu = sfu->next) { + g_free(sfu->data); + } - g_slist_free(update_sfusrc); - update_sfusrc = NULL; + g_slist_free(update_sfusrc); + update_sfusrc = NULL; } /* otherwise, cleanup and destroy the timeout */ @@ -841,77 +905,101 @@ static gboolean update_field(gpointer data) return FALSE; } -#define RANGE_SET_VALUE(tree,scrollbar,value) \ - do { \ - GtkRange CONCAT(*range, __LINE__) = GTK_RANGE(GTK_SCROLLED_WINDOW(shell->tree->scroll)->scrollbar); \ - gtk_range_set_value(CONCAT(range, __LINE__), value); \ - gtk_adjustment_value_changed(GTK_ADJUSTMENT(gtk_range_get_adjustment(CONCAT(range, __LINE__)))); \ - } while (0) -#define RANGE_GET_VALUE(tree,scrollbar) \ - gtk_range_get_value(GTK_RANGE \ - (GTK_SCROLLED_WINDOW(shell->tree->scroll)-> \ - scrollbar)) +#if GTK_CHECK_VERSION(3, 0, 0) +#define RANGE_SET_VALUE(...) +#define RANGE_GET_VALUE(...) 0 +#else +#define RANGE_SET_VALUE(tree, scrollbar, value) \ + do { \ + GtkRange CONCAT(*range, __LINE__) = \ + GTK_RANGE(GTK_SCROLLED_WINDOW(shell->tree->scroll)->scrollbar); \ + gtk_range_set_value(CONCAT(range, __LINE__), value); \ + gtk_adjustment_value_changed(GTK_ADJUSTMENT( \ + gtk_range_get_adjustment(CONCAT(range, __LINE__)))); \ + } while (0) +#define RANGE_GET_VALUE(tree, scrollbar) \ + gtk_range_get_value( \ + GTK_RANGE(GTK_SCROLLED_WINDOW(shell->tree->scroll)->scrollbar)) +#endif + +static void +destroy_widget(GtkWidget *widget, gpointer user_data) +{ + gtk_widget_destroy(widget); +} + +static void detail_view_clear(DetailView *detail_view) +{ + gtk_container_forall(GTK_CONTAINER(shell->detail_view->view), + destroy_widget, NULL); + RANGE_SET_VALUE(detail_view, vscrollbar, 0.0); + RANGE_SET_VALUE(detail_view, hscrollbar, 0.0); +} static gboolean reload_section(gpointer data) { - ShellModuleEntry *entry = (ShellModuleEntry *) data; + ShellModuleEntry *entry = (ShellModuleEntry *)data; #if GTK_CHECK_VERSION(2, 14, 0) GdkWindow *gdk_window = gtk_widget_get_window(GTK_WIDGET(shell->window)); #endif /* if the entry is still selected, update it */ if (entry->selected) { - GtkTreePath *path = NULL; - GtkTreeIter iter; - double pos_info_scroll, pos_more_scroll; + GtkTreePath *path = NULL; + GtkTreeIter iter; + double pos_info_scroll; + double pos_detail_scroll; - /* save current position */ + /* save current position */ #if GTK_CHECK_VERSION(3, 0, 0) - /* TODO:GTK3 */ + /* TODO:GTK3 */ #else - pos_info_scroll = RANGE_GET_VALUE(info, vscrollbar); - pos_more_scroll = RANGE_GET_VALUE(moreinfo, vscrollbar); + pos_info_scroll = RANGE_GET_VALUE(info_tree, vscrollbar); + pos_detail_scroll = RANGE_GET_VALUE(detail_view, vscrollbar); #endif - /* avoid drawing the window while we reload */ + /* avoid drawing the window while we reload */ #if GTK_CHECK_VERSION(2, 14, 0) - gdk_window_freeze_updates(gdk_window); + gdk_window_freeze_updates(gdk_window); #else - gdk_window_freeze_updates(shell->window->window); + gdk_window_freeze_updates(shell->window->window); #endif - /* gets the current selected path */ - if (gtk_tree_selection_get_selected - (shell->info->selection, &shell->info->model, &iter)) { - path = gtk_tree_model_get_path(shell->info->model, &iter); + /* gets the current selected path */ + if (gtk_tree_selection_get_selected(shell->info_tree->selection, + &shell->info_tree->model, &iter)) { + path = gtk_tree_model_get_path(shell->info_tree->model, &iter); } - /* update the information, clear the treeview and populate it again */ - module_entry_reload(entry); - info_selected_show_extra(NULL); /* clears the more info store */ - module_selected_show_info(entry, TRUE); - - /* if there was a selection, reselect it */ - if (path) { - gtk_tree_selection_select_path(shell->info->selection, path); - gtk_tree_view_set_cursor(GTK_TREE_VIEW(shell->info->view), path, NULL, - FALSE); - gtk_tree_path_free(path); + /* update the information, clear the treeview and populate it again */ + module_entry_reload(entry); + detail_view_clear(shell->detail_view); + module_selected_show_info(entry, TRUE); + + /* if there was a selection, reselect it */ + if (path) { + gtk_tree_selection_select_path(shell->info_tree->selection, path); + gtk_tree_view_set_cursor(GTK_TREE_VIEW(shell->info_tree->view), + path, NULL, FALSE); + gtk_tree_path_free(path); } else { /* restore position */ #if GTK_CHECK_VERSION(3, 0, 0) - /* TODO:GTK3 */ + /* TODO:GTK3 */ #else - RANGE_SET_VALUE(info, vscrollbar, pos_info_scroll); - RANGE_SET_VALUE(moreinfo, vscrollbar, pos_more_scroll); + RANGE_SET_VALUE(info_tree, vscrollbar, pos_info_scroll); #endif } - /* make the window drawable again */ +#if !GTK_CHECK_VERSION(3, 0, 0) + RANGE_SET_VALUE(detail_view, vscrollbar, pos_detail_scroll); +#endif + + /* make the window drawable again */ #if GTK_CHECK_VERSION(2, 14, 0) - gdk_window_thaw_updates(gdk_window); + gdk_window_thaw_updates(gdk_window); #else - gdk_window_thaw_updates(shell->window->window); + gdk_window_thaw_updates(shell->window->window); #endif } @@ -967,331 +1055,334 @@ static void set_view_type(ShellViewType viewtype, gboolean reload) #if GTK_CHECK_VERSION(2, 18, 0) GtkAllocation* alloc; #endif + gboolean type_changed = FALSE; + if (viewtype != shell->view_type) + type_changed = TRUE; if (viewtype < SHELL_VIEW_NORMAL || viewtype >= SHELL_VIEW_N_VIEWS) - viewtype = SHELL_VIEW_NORMAL; + viewtype = SHELL_VIEW_NORMAL; shell->normalize_percentage = TRUE; shell->view_type = viewtype; shell->_order_type = SHELL_ORDER_DESCENDING; /* use an unsorted tree model */ - GtkTreeSortable *sortable = GTK_TREE_SORTABLE(shell->info->model); + GtkTreeSortable *sortable = GTK_TREE_SORTABLE(shell->info_tree->model); gtk_tree_sortable_set_sort_column_id(sortable, GTK_TREE_SORTABLE_UNSORTED_SORT_COLUMN_ID, GTK_SORT_ASCENDING); - gtk_tree_view_set_model(GTK_TREE_VIEW(shell->info->view), + gtk_tree_view_set_model(GTK_TREE_VIEW(shell->info_tree->view), GTK_TREE_MODEL(sortable)); /* reset to the default view columns */ if (!reload) { - gtk_tree_view_column_set_visible(shell->info->col_extra1, FALSE); - gtk_tree_view_column_set_visible(shell->info->col_extra2, FALSE); - gtk_tree_view_column_set_visible(shell->info->col_progress, FALSE); - gtk_tree_view_column_set_visible(shell->info->col_value, TRUE); + gtk_tree_view_column_set_visible(shell->info_tree->col_extra1, FALSE); + gtk_tree_view_column_set_visible(shell->info_tree->col_extra2, FALSE); + gtk_tree_view_column_set_visible(shell->info_tree->col_progress, FALSE); + gtk_tree_view_column_set_visible(shell->info_tree->col_value, TRUE); } /* turn off the rules hint */ #if GTK_CHECK_VERSION(3, 0, 0) #else - gtk_tree_view_set_rules_hint(GTK_TREE_VIEW(shell->info->view), FALSE); + gtk_tree_view_set_rules_hint(GTK_TREE_VIEW(shell->info_tree->view), FALSE); #endif close_note(NULL, NULL); + detail_view_clear(shell->detail_view); switch (viewtype) { default: case SHELL_VIEW_NORMAL: - gtk_widget_show(shell->info->scroll); - gtk_widget_hide(shell->notebook); + gtk_widget_show(shell->info_tree->scroll); + gtk_widget_hide(shell->notebook); - if (!reload) { - gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(shell->info->view), FALSE); + if (!reload) { + gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(shell->info_tree->view), FALSE); } - break; + break; case SHELL_VIEW_DUAL: - gtk_widget_show(shell->info->scroll); - gtk_widget_show(shell->moreinfo->scroll); - gtk_notebook_set_current_page(GTK_NOTEBOOK(shell->notebook), 0); + gtk_widget_show(shell->info_tree->scroll); + gtk_notebook_set_current_page(GTK_NOTEBOOK(shell->notebook), 1); gtk_widget_show(shell->notebook); + if (type_changed) { #if GTK_CHECK_VERSION(2, 18, 0) - alloc = g_new(GtkAllocation, 1); - gtk_widget_get_allocation(shell->hpaned, alloc); - gtk_paned_set_position(GTK_PANED(shell->vpaned), alloc->height / 2); - g_free(alloc); + alloc = g_new(GtkAllocation, 1); + gtk_widget_get_allocation(shell->hbox, alloc); + gtk_paned_set_position(GTK_PANED(shell->vpaned), alloc->height / 2); + g_free(alloc); #else - gtk_paned_set_position(GTK_PANED(shell->vpaned), - shell->hpaned->allocation.height / 2); + gtk_paned_set_position(GTK_PANED(shell->vpaned), + shell->hbox->allocation.height / 2); #endif + } break; case SHELL_VIEW_LOAD_GRAPH: - gtk_widget_show(shell->info->scroll); - gtk_notebook_set_current_page(GTK_NOTEBOOK(shell->notebook), 1); + gtk_widget_show(shell->info_tree->scroll); + gtk_notebook_set_current_page(GTK_NOTEBOOK(shell->notebook), 0); gtk_widget_show(shell->notebook); load_graph_clear(shell->loadgraph); + if (type_changed) { #if GTK_CHECK_VERSION(2, 18, 0) - alloc = g_new(GtkAllocation, 1); - gtk_widget_get_allocation(shell->hpaned, alloc); - gtk_paned_set_position(GTK_PANED(shell->vpaned), - alloc->height - load_graph_get_height(shell->loadgraph) - 16); - g_free(alloc); + alloc = g_new(GtkAllocation, 1); + gtk_widget_get_allocation(shell->hbox, alloc); + gtk_paned_set_position(GTK_PANED(shell->vpaned), + alloc->height - load_graph_get_height(shell->loadgraph) - 16); + g_free(alloc); #else - gtk_paned_set_position(GTK_PANED(shell->vpaned), - shell->hpaned->allocation.height - - load_graph_get_height(shell->loadgraph) - 16); + gtk_paned_set_position(GTK_PANED(shell->vpaned), + shell->hbox->allocation.height - + load_graph_get_height(shell->loadgraph) - 16); #endif - - break; + } + break; case SHELL_VIEW_PROGRESS_DUAL: gtk_widget_show(shell->notebook); - gtk_widget_show(shell->moreinfo->scroll); - gtk_notebook_set_current_page(GTK_NOTEBOOK(shell->notebook), 0); + gtk_notebook_set_current_page(GTK_NOTEBOOK(shell->notebook), 1); /* fallthrough */ case SHELL_VIEW_PROGRESS: - gtk_widget_show(shell->info->scroll); + gtk_widget_show(shell->info_tree->scroll); if (!reload) { - gtk_tree_view_column_set_visible(shell->info->col_progress, TRUE); - gtk_tree_view_column_set_visible(shell->info->col_value, FALSE); + gtk_tree_view_column_set_visible(shell->info_tree->col_progress, TRUE); + gtk_tree_view_column_set_visible(shell->info_tree->col_value, FALSE); } if (viewtype == SHELL_VIEW_PROGRESS) gtk_widget_hide(shell->notebook); break; - case SHELL_VIEW_SUMMARY: - gtk_notebook_set_current_page(GTK_NOTEBOOK(shell->notebook), 2); + case SHELL_VIEW_DETAIL: + gtk_notebook_set_current_page(GTK_NOTEBOOK(shell->notebook), 1); gtk_widget_show(shell->notebook); - gtk_widget_hide(shell->info->scroll); - gtk_widget_hide(shell->moreinfo->scroll); + gtk_widget_hide(shell->info_tree->scroll); } } -static void -group_handle_special(GKeyFile * key_file, ShellModuleEntry * entry, - gchar * group, gchar ** keys, gboolean reload) +static void group_handle_special(GKeyFile *key_file, + ShellModuleEntry *entry, + const gchar *group, + gchar **keys) { - if (g_str_equal(group, "$ShellParam$")) { - gboolean headers_visible = FALSE; - gint i; - - for (i = 0; keys[i]; i++) { - gchar *key = keys[i]; - - if (g_str_has_prefix(key, "UpdateInterval")) { - ShellFieldUpdate *fu = g_new0(ShellFieldUpdate, 1); - ShellFieldUpdateSource *sfutbl; - gint ms; - - ms = g_key_file_get_integer(key_file, group, key, NULL); - - fu->field_name = g_strdup(g_utf8_strchr(key, -1, '$') + 1); - fu->entry = entry; - - sfutbl = g_new0(ShellFieldUpdateSource, 1); - sfutbl->source_id = g_timeout_add(ms, update_field, fu); - sfutbl->sfu = fu; - - update_sfusrc = g_slist_prepend(update_sfusrc, sfutbl); - } else if (g_str_equal(key, "NormalizePercentage")) { - shell->normalize_percentage = g_key_file_get_boolean(key_file, group, key, NULL); - } else if (g_str_equal(key, "LoadGraphSuffix")) { - gchar *suffix = - g_key_file_get_value(key_file, group, key, NULL); - load_graph_set_data_suffix(shell->loadgraph, suffix); - g_free(suffix); - } else if (g_str_equal(key, "ReloadInterval")) { - gint ms; - - ms = g_key_file_get_integer(key_file, group, key, NULL); - - g_timeout_add(ms, reload_section, entry); - } else if (g_str_equal(key, "RescanInterval")) { - gint ms; - - ms = g_key_file_get_integer(key_file, group, key, NULL); - - g_timeout_add(ms, rescan_section, entry); - } else if (g_str_equal(key, "ShowColumnHeaders")) { - headers_visible = g_key_file_get_boolean(key_file, group, key, NULL); - } else if (g_str_has_prefix(key, "ColumnTitle")) { - GtkTreeViewColumn *column = NULL; - gchar *value, *title = g_utf8_strchr(key, -1, '$') + 1; - - value = g_key_file_get_value(key_file, group, key, NULL); - - if (g_str_equal(title, "Extra1")) { - column = shell->info->col_extra1; - } else if (g_str_equal(title, "Extra2")) { - column = shell->info->col_extra2; - } else if (g_str_equal(title, "Value")) { - column = shell->info->col_value; - } else if (g_str_equal(title, "TextValue")) { - column = shell->info->col_textvalue; - } else if (g_str_equal(title, "Progress")) { - column = shell->info->col_progress; - } + if (!g_str_equal(group, "$ShellParam$")) { + g_warning("Unknown parameter group: ``%s''", group); + return; + } - if (column) { - gtk_tree_view_column_set_title(column, value); - gtk_tree_view_column_set_visible(column, TRUE); - } + gboolean headers_visible = FALSE; + gint i; - g_free(value); - } else if (g_str_equal(key, "OrderType")) { - shell->_order_type = g_key_file_get_integer(key_file, - group, - key, NULL); - } else if (g_str_equal(key, "ViewType")) { - set_view_type(g_key_file_get_integer(key_file, group, - key, NULL), reload); - } else if (g_str_has_prefix(key, "Icon")) { - GtkTreeIter *iter = g_hash_table_lookup(update_tbl, - g_utf8_strchr(key, - -1, '$') + 1); - - if (iter) { - gchar *file = - g_key_file_get_value(key_file, group, key, NULL); - gtk_tree_store_set(GTK_TREE_STORE(shell->info->model), - iter, INFO_TREE_COL_PBUF, - icon_cache_get_pixbuf_at_size(file, - 22, - 22), - -1); - g_free(file); - } - } else if (g_str_equal(key, "Zebra")) { + for (i = 0; keys[i]; i++) { + gchar *key = keys[i]; + + if (g_str_has_prefix(key, "UpdateInterval$")) { + ShellFieldUpdate *fu = g_new0(ShellFieldUpdate, 1); + ShellFieldUpdateSource *sfutbl; + gint ms; + + ms = g_key_file_get_integer(key_file, group, key, NULL); + + /* Old style used just the label which has to be checked by translating it, + * and potentially could by ambiguous. + * New style can use tag or label. If new style including a tag, + * send both tag and label and let the hi_get_field() function use + * key_get_components() to split it. */ + const gchar *chk = g_utf8_strchr(key, -1, '$'); + fu->field_name = g_strdup(key_is_flagged(chk) ? chk : chk + 1); + fu->entry = entry; + + sfutbl = g_new0(ShellFieldUpdateSource, 1); + sfutbl->source_id = g_timeout_add(ms, update_field, fu); + sfutbl->sfu = fu; + + update_sfusrc = g_slist_prepend(update_sfusrc, sfutbl); + } else if (g_str_equal(key, "NormalizePercentage")) { + shell->normalize_percentage = + g_key_file_get_boolean(key_file, group, key, NULL); + } else if (g_str_equal(key, "LoadGraphSuffix")) { + gchar *suffix = g_key_file_get_value(key_file, group, key, NULL); + load_graph_set_data_suffix(shell->loadgraph, suffix); + g_free(suffix); + } else if (g_str_equal(key, "ReloadInterval")) { + gint ms; + + ms = g_key_file_get_integer(key_file, group, key, NULL); + + g_timeout_add(ms, reload_section, entry); + } else if (g_str_equal(key, "RescanInterval")) { + gint ms; + + ms = g_key_file_get_integer(key_file, group, key, NULL); + + g_timeout_add(ms, rescan_section, entry); + } else if (g_str_equal(key, "ShowColumnHeaders")) { + headers_visible = + g_key_file_get_boolean(key_file, group, key, NULL); + } else if (g_str_has_prefix(key, "ColumnTitle")) { + GtkTreeViewColumn *column = NULL; + gchar *value, *title = g_utf8_strchr(key, -1, '$') + 1; + + value = g_key_file_get_value(key_file, group, key, NULL); + + if (g_str_equal(title, "Extra1")) { + column = shell->info_tree->col_extra1; + } else if (g_str_equal(title, "Extra2")) { + column = shell->info_tree->col_extra2; + } else if (g_str_equal(title, "Value")) { + column = shell->info_tree->col_value; + } else if (g_str_equal(title, "TextValue")) { + column = shell->info_tree->col_textvalue; + } else if (g_str_equal(title, "Progress")) { + column = shell->info_tree->col_progress; + } + + if (column) { + gtk_tree_view_column_set_title(column, value); + gtk_tree_view_column_set_visible(column, TRUE); + } + + g_free(value); + } else if (g_str_equal(key, "OrderType")) { + shell->_order_type = + g_key_file_get_integer(key_file, group, key, NULL); + } else if (g_str_has_prefix(key, "Icon$")) { + struct UpdateTableItem *item; + + const gchar *ikey = g_utf8_strchr(key, -1, '$'); + gchar *tag, *name; + key_get_components(ikey, NULL, &tag, &name, NULL, NULL, TRUE); + + if (tag) + item = g_hash_table_lookup(update_tbl, tag); + else + item = g_hash_table_lookup(update_tbl, name); + g_free(name); + g_free(tag); + + if (item) { + gchar *file = g_key_file_get_value(key_file, group, key, NULL); + GdkPixbuf *pixbuf = icon_cache_get_pixbuf_at_size(file, 22, 22); + + g_free(file); + + if (item->is_iter) { + gtk_tree_store_set( + GTK_TREE_STORE(shell->info_tree->model), item->iter, + INFO_TREE_COL_PBUF, pixbuf, -1); + } else { + GList *children = gtk_container_get_children(GTK_CONTAINER(item->widget)); + gtk_image_set_from_pixbuf(GTK_IMAGE(children->data), pixbuf); + gtk_widget_show(GTK_WIDGET(children->data)); + g_list_free(children); + } + } + } else if (g_str_equal(key, "Zebra")) { #if GTK_CHECK_VERSION(3, 0, 0) #else - gtk_tree_view_set_rules_hint(GTK_TREE_VIEW - (shell->info->view), - g_key_file_get_boolean - (key_file, group, key, NULL)); + gtk_tree_view_set_rules_hint( + GTK_TREE_VIEW(shell->info_tree->view), + g_key_file_get_boolean(key_file, group, key, NULL)); #endif - } - } - - gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(shell->info->view), headers_visible); - } else { - g_warning("Unknown parameter group: ``%s''", group); + } } + + gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(shell->info_tree->view), + headers_visible); } -static void -group_handle_normal(GKeyFile * key_file, ShellModuleEntry * entry, - gchar * group, gchar ** keys, gsize ngroups) +static void group_handle_normal(GKeyFile *key_file, + ShellModuleEntry *entry, + const gchar *group, + gchar **keys, + gsize ngroups) { GtkTreeIter parent; - GtkTreeStore *store = GTK_TREE_STORE(shell->info->model); - gchar *tmp = g_strdup(group); + GtkTreeStore *store = GTK_TREE_STORE(shell->info_tree->model); gint i; if (ngroups > 1) { - gtk_tree_store_append(store, &parent, NULL); + gtk_tree_store_append(store, &parent, NULL); - strend(tmp, '#'); - gtk_tree_store_set(store, &parent, INFO_TREE_COL_NAME, tmp, -1); - g_free(tmp); - } - - for (i = 0; keys[i]; i++) { - gchar *key = keys[i]; - gchar *value; - GtkTreeIter child; - - value = g_key_file_get_value(key_file, group, key, NULL); - if (entry->fieldfunc && value && g_str_equal(value, "...")) { - g_free(value); - value = entry->fieldfunc(key); + gchar *tmp = g_strdup(group); + strend(tmp, '#'); + gtk_tree_store_set(store, &parent, INFO_TREE_COL_NAME, tmp, -1); + g_free(tmp); } - if ((key && value) && g_utf8_validate(key, -1, NULL) && g_utf8_validate(value, -1, NULL)) { - if (ngroups == 1) { - gtk_tree_store_append(store, &child, NULL); - } else { - gtk_tree_store_append(store, &child, &parent); - } - - /* FIXME: use g_key_file_get_string_list? */ - if (g_utf8_strchr(value, -1, '|')) { - gchar **columns = g_strsplit(value, "|", 0); - - gtk_tree_store_set(store, &child, INFO_TREE_COL_VALUE, columns[0], -1); - if (columns[1]) { - gtk_tree_store_set(store, &child, INFO_TREE_COL_EXTRA1, columns[1], -1); - if (columns[2]) { - gtk_tree_store_set(store, &child, INFO_TREE_COL_EXTRA2, columns[2], -1); - } - } - - g_strfreev(columns); - } else { - gtk_tree_store_set(store, &child, INFO_TREE_COL_VALUE, value, -1); - } - - strend(key, '#'); - - if (*key == '$') { - gchar **tmp; - - tmp = g_strsplit(++key, "$", 0); - - gtk_tree_store_set(store, &child, INFO_TREE_COL_NAME, - tmp[1], INFO_TREE_COL_DATA, tmp[0], -1); - - g_strfreev(tmp); - } else { - gtk_tree_store_set(store, &child, INFO_TREE_COL_NAME, _(key), - INFO_TREE_COL_DATA, NULL, -1); - } - - g_hash_table_insert(update_tbl, g_strdup(key), - gtk_tree_iter_copy(&child)); - - } - - g_free(value); - } -} - -static void -moreinfo_handle_normal(GKeyFile * key_file, gchar * group, gchar ** keys) -{ - GtkTreeIter parent; - GtkTreeStore *store = GTK_TREE_STORE(shell->moreinfo->model); - gint i; - - gtk_tree_store_append(store, &parent, NULL); - gtk_tree_store_set(store, &parent, INFO_TREE_COL_NAME, group, -1); + g_key_file_set_list_separator(key_file, '|'); for (i = 0; keys[i]; i++) { - gchar *key = keys[i]; - GtkTreeIter child; - gchar *value; + gchar *key = keys[i]; + gchar **values; + gsize vcount = 0; + GtkTreeIter child; + + values = g_key_file_get_string_list(key_file, group, key, &vcount, NULL); + if (!vcount) { + /* Check for empty value */ + values = g_new0(gchar*, 2); + values[0] = g_key_file_get_string(key_file, group, key, NULL); + if (values[0]) { + vcount = 1; + } else { + g_strfreev(values); + continue; + } + } - value = g_key_file_get_value(key_file, group, key, NULL); + if (entry->fieldfunc && values[0] && g_str_equal(values[0], "...")) { + g_free(values[0]); + values[0] = entry->fieldfunc(key); + } - if (g_utf8_validate(key, -1, NULL) - && g_utf8_validate(value, -1, NULL)) { - strend(key, '#'); + if (ngroups == 1) { + gtk_tree_store_append(store, &child, NULL); + } else { + gtk_tree_store_append(store, &child, &parent); + } - gtk_tree_store_append(store, &child, &parent); - gtk_tree_store_set(store, &child, INFO_TREE_COL_VALUE, - value, INFO_TREE_COL_NAME, key, -1); - } + if (vcount > 0) + gtk_tree_store_set(store, &child, INFO_TREE_COL_VALUE, + values[0], -1); + if (vcount > 1) + gtk_tree_store_set(store, &child, INFO_TREE_COL_EXTRA1, + values[1], -1); + if (vcount > 2) + gtk_tree_store_set(store, &child, INFO_TREE_COL_EXTRA2, + values[2], -1); + + struct UpdateTableItem *item = g_new0(struct UpdateTableItem, 1); + item->is_iter = TRUE; + item->iter = gtk_tree_iter_copy(&child); + gchar *flags, *tag, *name, *label; + key_get_components(key, &flags, &tag, &name, &label, NULL, TRUE); + + if (flags) { + //TODO: name was formerly used where label is here. Check all uses + //for problems. + gtk_tree_store_set(store, &child, INFO_TREE_COL_NAME, label, + INFO_TREE_COL_DATA, flags, -1); + g_hash_table_insert(update_tbl, tag, item); + g_free(label); + } else { + gtk_tree_store_set(store, &child, INFO_TREE_COL_NAME, key, + INFO_TREE_COL_DATA, NULL, -1); + g_hash_table_insert(update_tbl, name, item); + g_free(tag); + } + g_free(flags); - g_free(value); + g_strfreev(values); } } static void update_progress() { - GtkTreeModel *model = shell->info->model; + GtkTreeModel *model = shell->info_tree->model; GtkTreeStore *store = GTK_TREE_STORE(model); GtkTreeIter iter, fiter; gchar *tmp; @@ -1354,13 +1445,13 @@ static void update_progress() } while (gtk_tree_model_iter_next(model, &iter)); /* now sort everything up. that wasn't as hard as i thought :) */ - GtkTreeSortable *sortable = GTK_TREE_SORTABLE(shell->info->model); + GtkTreeSortable *sortable = GTK_TREE_SORTABLE(shell->info_tree->model); gtk_tree_sortable_set_sort_func(sortable, INFO_TREE_COL_VALUE, info_tree_compare_val_func, 0, NULL); gtk_tree_sortable_set_sort_column_id(sortable, INFO_TREE_COL_VALUE, GTK_SORT_DESCENDING); - gtk_tree_view_set_model(GTK_TREE_VIEW(shell->info->view), + gtk_tree_view_set_model(GTK_TREE_VIEW(shell->info_tree->view), GTK_TREE_MODEL(sortable)); } @@ -1404,133 +1495,290 @@ select_first_item(gpointer data) { GtkTreeIter first; - if (gtk_tree_model_get_iter_first(shell->info->model, &first)) - gtk_tree_selection_select_iter(shell->info->selection, &first); + if (gtk_tree_model_get_iter_first(shell->info_tree->model, &first)) + gtk_tree_selection_select_iter(shell->info_tree->selection, &first); return FALSE; } -static gboolean -select_marked_or_first_item(gpointer data) +static gboolean select_marked_or_first_item(gpointer data) { GtkTreeIter first, it; gboolean found_selection = FALSE; gchar *datacol; - if ( gtk_tree_model_get_iter_first(shell->info->model, &first) ) { + if (gtk_tree_model_get_iter_first(shell->info_tree->model, &first)) { it = first; - while ( gtk_tree_model_iter_next(shell->info->model, &it) ) { - gtk_tree_model_get(shell->info->model, &it, INFO_TREE_COL_DATA, &datacol, -1); - if (datacol != NULL && *datacol == '*') { - gtk_tree_selection_select_iter(shell->info->selection, &it); + while (gtk_tree_model_iter_next(shell->info_tree->model, &it)) { + gtk_tree_model_get(shell->info_tree->model, &it, INFO_TREE_COL_DATA, + &datacol, -1); + if (key_is_highlighted(datacol)) { + gtk_tree_selection_select_iter(shell->info_tree->selection, + &it); found_selection = TRUE; } g_free(datacol); } if (!found_selection) - gtk_tree_selection_select_iter(shell->info->selection, &first); + gtk_tree_selection_select_iter(shell->info_tree->selection, &first); } return FALSE; } -static void -module_selected_show_info(ShellModuleEntry * entry, gboolean reload) +static void module_selected_show_info_list(GKeyFile *key_file, + ShellModuleEntry *entry, + gchar **groups, + gsize ngroups) { - GKeyFile *key_file = g_key_file_new(); - GtkTreeStore *store; - gchar *key_data, **groups; - gboolean has_shell_param = FALSE; + GtkTreeStore *store = GTK_TREE_STORE(shell->info_tree->model); gint i; - gsize ngroups; -#if GTK_CHECK_VERSION(2, 14, 0) - GdkWindow *gdk_window = gtk_widget_get_window(GTK_WIDGET(shell->info->view)); -#endif - module_entry_scan(entry); - key_data = module_entry_function(entry); + gtk_tree_store_clear(store); - /* */ -#if GTK_CHECK_VERSION(2, 14, 0) - gdk_window_freeze_updates(gdk_window); -#else - gdk_window_freeze_updates(shell->info->view->window); -#endif + g_object_ref(shell->info_tree->model); + gtk_tree_view_set_model(GTK_TREE_VIEW(shell->info_tree->view), NULL); - g_object_ref(shell->info->model); - gtk_tree_view_set_model(GTK_TREE_VIEW(shell->info->view), NULL); + gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(shell->info_tree->view), + FALSE); - /* reset the view type to normal */ - set_view_type(SHELL_VIEW_NORMAL, reload); + for (i = 0; groups[i]; i++) { + gchar **keys = g_key_file_get_keys(key_file, groups[i], NULL, NULL); - if (!reload) { - /* recreate the iter hash table */ - h_hash_table_remove_all(update_tbl); + if (groups[i][0] == '$') { + group_handle_special(key_file, entry, groups[i], keys); + } else { + group_handle_normal(key_file, entry, groups[i], keys, ngroups); + } + + g_strfreev(keys); } - shell_clear_field_updates(); + g_object_unref(shell->info_tree->model); + gtk_tree_view_set_model(GTK_TREE_VIEW(shell->info_tree->view), + shell->info_tree->model); + gtk_tree_view_expand_all(GTK_TREE_VIEW(shell->info_tree->view)); + gtk_tree_view_set_show_expanders(GTK_TREE_VIEW(shell->info_tree->view), + ngroups > 1); +} - store = GTK_TREE_STORE(shell->info->model); +static gboolean detail_activate_link (GtkLabel *label, gchar *uri, gpointer user_data) { + return uri_open(uri); +} - gtk_tree_store_clear(store); +static gchar *vendor_info_markup(const Vendor *v) { + if (!v) return NULL; + gchar *ven_mt = NULL; + gchar *full_link = NULL, *p = NULL; + gchar *ven_tag = v->name_short ? g_strdup(v->name_short) : g_strdup(v->name); + tag_vendor(&ven_tag, 0, ven_tag, v->ansi_color, FMT_OPT_PANGO); + //if (v->name_short) + // ven_mt = appf(ven_mt, "\n", "%s", v->name); + ven_mt = appf(ven_mt, "\n", "%s", ven_tag); + if (v->url) { + if (!g_str_has_prefix(v->url, "http") ) + full_link = g_strdup_printf("http://%s", v->url); + ven_mt = appf(ven_mt, "\n", "%s: %s", _("URL"), full_link ? full_link : v->url, v->url); + g_free(full_link); + full_link = NULL; + } + if (v->url_support) { + if (!g_str_has_prefix(v->url_support, "http") ) + full_link = g_strdup_printf("http://%s", v->url_support); + ven_mt = appf(ven_mt, "\n", "%s: %s", _("Support URL"), full_link ? full_link : v->url_support, v->url_support); + g_free(full_link); + full_link = NULL; + } + if (v->wikipedia) { + /* sending the title to wikipedia.com/wiki will autmatically handle the language and section parts, + * but perhaps that shouldn't be relied on so much? */ + full_link = g_strdup_printf("http://wikipedia.com/wiki/%s", v->wikipedia); + for(p = full_link; *p; p++) { + if (*p == ' ') *p = '_'; + } + ven_mt = appf(ven_mt, "\n", "%s: %s", _("Wikipedia"), full_link ? full_link : v->wikipedia, v->wikipedia); + g_free(full_link); + full_link = NULL; + } + g_free(ven_tag); + return ven_mt; +} - g_key_file_load_from_data(key_file, key_data, strlen(key_data), 0, - NULL); - groups = g_key_file_get_groups(key_file, &ngroups); +static void module_selected_show_info_detail(GKeyFile *key_file, + ShellModuleEntry *entry, + gchar **groups) +{ + gint i; - for (i = 0; groups[i]; i++) - if (groups[i][0] == '$') - ngroups--; + detail_view_clear(shell->detail_view); for (i = 0; groups[i]; i++) { - gchar *group = groups[i]; - gchar **keys = g_key_file_get_keys(key_file, group, NULL, NULL); + gsize nkeys; + gchar **keys = g_key_file_get_keys(key_file, groups[i], &nkeys, NULL); + gchar *group_label = g_strdup(groups[i]); + strend(group_label, '#'); - if (*group == '$') { - group_handle_special(key_file, entry, group, keys, reload); - has_shell_param = TRUE; - } else { - group_handle_normal(key_file, entry, group, keys, ngroups); - } + if (entry && groups[i][0] == '$') { + group_handle_special(key_file, entry, groups[i], keys); + } else { + gchar *tmp = g_strdup_printf("%s", group_label); + GtkWidget *label = gtk_label_new(tmp); + gtk_label_set_use_markup(GTK_LABEL(label), TRUE); + GtkWidget *frame = gtk_frame_new(NULL); + gtk_frame_set_label_widget(GTK_FRAME(frame), label); + gtk_frame_set_shadow_type(GTK_FRAME(frame), GTK_SHADOW_NONE); + g_free(tmp); + + gtk_container_set_border_width(GTK_CONTAINER(frame), 6); + gtk_box_pack_start(GTK_BOX(shell->detail_view->view), frame, FALSE, + FALSE, 0); + + GtkWidget *table = gtk_table_new(nkeys, 2, FALSE); + gtk_container_set_border_width(GTK_CONTAINER(table), 4); + gtk_container_add(GTK_CONTAINER(frame), table); + + gint j, a = 0; + for (j = 0; keys[j]; j++) { + gchar *key_markup; + gchar *value; + gchar *name, *label, *tag, *flags; + key_get_components(keys[j], &flags, &tag, &name, &label, NULL, TRUE); + + value = g_key_file_get_string(key_file, groups[i], keys[j], NULL); + + if (entry && entry->fieldfunc && value && g_str_equal(value, "...")) { + g_free(value); + value = entry->fieldfunc(keys[j]); + } + + gboolean has_ven = key_value_has_vendor_string(flags); + const Vendor *v = has_ven ? vendor_match(value, NULL) : NULL; + + key_markup = + g_strdup_printf("%s", label); + + GtkWidget *key_label = gtk_label_new(key_markup); + gtk_label_set_use_markup(GTK_LABEL(key_label), TRUE); + gtk_misc_set_alignment(GTK_MISC(key_label), 1.0f, 0.5f); - g_strfreev(keys); + GtkWidget *value_label = gtk_label_new(value); + gtk_label_set_use_markup(GTK_LABEL(value_label), TRUE); + gtk_label_set_selectable(GTK_LABEL(value_label), TRUE); +#if !GTK_CHECK_VERSION(3, 0, 0) + gtk_label_set_line_wrap(GTK_LABEL(value_label), TRUE); +#endif + gtk_misc_set_alignment(GTK_MISC(value_label), 0.0f, 0.5f); + + GtkWidget *value_icon = gtk_image_new(); + + GtkWidget *value_box = gtk_hbox_new(FALSE, 4); + gtk_box_pack_start(GTK_BOX(value_box), value_icon, FALSE, FALSE, 0); + gtk_box_pack_start(GTK_BOX(value_box), value_label, TRUE, TRUE, 0); + + g_signal_connect(key_label, "activate-link", G_CALLBACK(detail_activate_link), NULL); + g_signal_connect(value_label, "activate-link", G_CALLBACK(detail_activate_link), NULL); + + gtk_widget_show(key_label); + gtk_widget_show(value_box); + gtk_widget_show(value_label); + + gtk_table_attach(GTK_TABLE(table), key_label, 0, 1, j + a, j + a + 1, + GTK_FILL, GTK_FILL, 6, 4); + gtk_table_attach(GTK_TABLE(table), value_box, 1, 2, j + a, j + a + 1, + GTK_FILL | GTK_EXPAND, GTK_FILL, 0, 4); + + if (v) { + a++; /* insert a row */ + gchar *vendor_markup = vendor_info_markup(v); + GtkWidget *vendor_label = gtk_label_new(vendor_markup); + gtk_label_set_use_markup(GTK_LABEL(vendor_label), TRUE); + gtk_label_set_selectable(GTK_LABEL(vendor_label), TRUE); + gtk_misc_set_alignment(GTK_MISC(vendor_label), 0.0f, 0.5f); + g_signal_connect(vendor_label, "activate-link", G_CALLBACK(detail_activate_link), NULL); + GtkWidget *vendor_box = gtk_hbox_new(FALSE, 4); + gtk_box_pack_start(GTK_BOX(vendor_box), vendor_label, TRUE, TRUE, 0); + gtk_table_attach(GTK_TABLE(table), vendor_box, 1, 2, j + a, j + a + 1, + GTK_FILL | GTK_EXPAND, GTK_FILL, 0, 4); + gtk_widget_show(vendor_box); + gtk_widget_show(vendor_label); + g_free(vendor_markup); + } + + struct UpdateTableItem *item = g_new0(struct UpdateTableItem, 1); + item->is_iter = FALSE; + item->widget = g_object_ref(value_box); + + if (tag) { + g_hash_table_insert(update_tbl, tag, item); + g_free(name); + } else { + g_hash_table_insert(update_tbl, name, item); + g_free(tag); + } + + g_free(flags); + g_free(value); + g_free(key_markup); + g_free(label); + } + + gtk_widget_show(table); + gtk_widget_show(label); + gtk_widget_show(frame); + } + + g_strfreev(keys); + g_free(group_label); } +} - /* */ - if (!has_shell_param) { - gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(shell->info->view), FALSE); +static void +module_selected_show_info(ShellModuleEntry *entry, gboolean reload) +{ + GdkWindow *gdk_window = gtk_widget_get_window(GTK_WIDGET(shell->info_tree->view)); + gsize ngroups; + gint i; + + gdk_window_freeze_updates(gdk_window); + + module_entry_scan(entry); + if (!reload) { + /* recreate the iter hash table */ + h_hash_table_remove_all(update_tbl); } + shell_clear_field_updates(); - /* */ - g_object_unref(shell->info->model); - gtk_tree_view_set_model(GTK_TREE_VIEW(shell->info->view), shell->info->model); - gtk_tree_view_expand_all(GTK_TREE_VIEW(shell->info->view)); + GKeyFile *key_file = g_key_file_new(); + gchar *key_data = module_entry_function(entry); -#if GTK_CHECK_VERSION(2, 14, 0) - gdk_window_thaw_updates(gdk_window); -#else - gdk_window_thaw_updates(shell->info->view->window); -#endif - shell_set_note_from_entry(entry); + g_key_file_load_from_data(key_file, key_data, strlen(key_data), 0, NULL); + set_view_type(g_key_file_get_integer(key_file, "$ShellParam$", + "ViewType", NULL), reload); - if (shell->view_type == SHELL_VIEW_PROGRESS || shell->view_type == SHELL_VIEW_PROGRESS_DUAL) { - update_progress(); + gchar **groups = g_key_file_get_groups(key_file, &ngroups); + + for (i = 0; groups[i]; i++) { + if (groups[i][0] == '$') + ngroups--; } -#if GTK_CHECK_VERSION(2,12,0) - if (ngroups == 1) { - gtk_tree_view_set_show_expanders(GTK_TREE_VIEW(shell->info->view), - FALSE); + if (shell->view_type == SHELL_VIEW_DETAIL) { + module_selected_show_info_detail(key_file, entry, groups); } else { - gtk_tree_view_set_show_expanders(GTK_TREE_VIEW(shell->info->view), - TRUE); + module_selected_show_info_list(key_file, entry, groups, ngroups); } -#endif g_strfreev(groups); g_key_file_free(key_file); g_free(key_data); + switch (shell->view_type) { + case SHELL_VIEW_PROGRESS_DUAL: + case SHELL_VIEW_PROGRESS: + update_progress(); + break; + } + if (!reload) { switch (shell->view_type) { case SHELL_VIEW_DUAL: @@ -1539,48 +1787,31 @@ module_selected_show_info(ShellModuleEntry * entry, gboolean reload) g_idle_add(select_marked_or_first_item, NULL); } } + shell_set_note_from_entry(entry); + + gdk_window_thaw_updates(gdk_window); } -static void info_selected_show_extra(gchar * data) +static void info_selected_show_extra(const gchar *tag) { - GtkTreeStore *store; + if (!tag || !shell->selected->morefunc) + return; - store = GTK_TREE_STORE(shell->moreinfo->model); - gtk_tree_store_clear(store); + GKeyFile *key_file = g_key_file_new(); + gchar *key_data = shell->selected->morefunc((gchar *)tag); + gchar **groups; - if (!shell->selected->morefunc) - return; + g_key_file_load_from_data(key_file, key_data, strlen(key_data), 0, NULL); + groups = g_key_file_get_groups(key_file, NULL); - if (data) { - /* skip the select marker */ - if (*data == '*') - data++; - GKeyFile *key_file = g_key_file_new(); - gchar *key_data = shell->selected->morefunc(data); - gchar **groups; - gint i; - - g_key_file_load_from_data(key_file, key_data, strlen(key_data), 0, - NULL); - groups = g_key_file_get_groups(key_file, NULL); - - for (i = 0; groups[i]; i++) { - gchar *group = groups[i]; - gchar **keys = - g_key_file_get_keys(key_file, group, NULL, NULL); - - moreinfo_handle_normal(key_file, group, keys); - } + module_selected_show_info_detail(key_file, NULL, groups); - gtk_tree_view_expand_all(GTK_TREE_VIEW(shell->moreinfo->view)); - - g_strfreev(groups); - g_key_file_free(key_file); - g_free(key_data); - } + g_strfreev(groups); + g_key_file_free(key_file); + g_free(key_data); } -static gchar *shell_summary_clear_value(gchar *value) +static gchar *detail_view_clear_value(gchar *value) { GKeyFile *keyfile; gchar *return_value; @@ -1630,83 +1861,66 @@ static gchar *shell_summary_clear_value(gchar *value) return g_strstrip(return_value); } -static void shell_summary_add_item(ShellSummary *summary, - gchar *icon, - gchar *name, - gchar *value) +static void detail_view_add_item(DetailView *detail_view, + gchar *icon, + gchar *name, + gchar *value) { - GtkWidget *frame; - GtkWidget *frame_label_box; - GtkWidget *frame_image; - GtkWidget *frame_label; - GtkWidget *content; - GtkWidget *alignment; - gchar *temp; + GtkWidget *frame; + GtkWidget *frame_label_box; + GtkWidget *frame_image; + GtkWidget *frame_label; + GtkWidget *content; + GtkWidget *alignment; + gchar *temp; - temp = shell_summary_clear_value(value); + temp = detail_view_clear_value(value); - /* creates the frame */ - frame = gtk_frame_new(NULL); - gtk_frame_set_shadow_type(GTK_FRAME(frame), - GTK_SHADOW_NONE); + /* creates the frame */ + frame = gtk_frame_new(NULL); + gtk_frame_set_shadow_type(GTK_FRAME(frame), GTK_SHADOW_NONE); #if GTK_CHECK_VERSION(3, 0, 0) - frame_label_box = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 5); + frame_label_box = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 5); #else - frame_label_box = gtk_hbox_new(FALSE, 5); + frame_label_box = gtk_hbox_new(FALSE, 5); #endif - frame_image = icon_cache_get_image(icon); - frame_label = gtk_label_new(name); - gtk_label_set_use_markup(GTK_LABEL(frame_label), TRUE); - gtk_box_pack_start(GTK_BOX(frame_label_box), frame_image, FALSE, FALSE, 0); - gtk_box_pack_start(GTK_BOX(frame_label_box), frame_label, FALSE, FALSE, 0); - - content = gtk_label_new(temp); - /* TODO:GTK3 gtk_alignment_new(), etc is deprecated from 3.14 */ + frame_image = icon_cache_get_image(icon); + frame_label = gtk_label_new(name); + gtk_label_set_use_markup(GTK_LABEL(frame_label), TRUE); + gtk_box_pack_start(GTK_BOX(frame_label_box), frame_image, FALSE, FALSE, 0); + gtk_box_pack_start(GTK_BOX(frame_label_box), frame_label, FALSE, FALSE, 0); + + content = gtk_label_new(temp); + /* TODO:GTK3 gtk_alignment_new(), etc is deprecated from 3.14 */ #if GTK_CHECK_VERSION(3, 0, 0) - GtkWidget *frame_box; - frame_box = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 5); - gtk_widget_set_margin_start(GTK_WIDGET(frame_box), 48); - gtk_box_pack_start(GTK_BOX(frame_box), content, FALSE, FALSE, 0); - gtk_container_add(GTK_CONTAINER(frame), frame_box); + GtkWidget *frame_box; + frame_box = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 5); + gtk_widget_set_margin_start(GTK_WIDGET(frame_box), 48); + gtk_box_pack_start(GTK_BOX(frame_box), content, FALSE, FALSE, 0); + gtk_container_add(GTK_CONTAINER(frame), frame_box); #else - alignment = gtk_alignment_new(0.5, 0.5, 1, 1); - gtk_alignment_set_padding(GTK_ALIGNMENT(alignment), 0, 0, 48, 0); - gtk_widget_show(alignment); - gtk_container_add(GTK_CONTAINER(frame), alignment); - gtk_misc_set_alignment(GTK_MISC(content), 0.0, 0.5); - gtk_container_add(GTK_CONTAINER(alignment), content); + alignment = gtk_alignment_new(0.5, 0.5, 1, 1); + gtk_alignment_set_padding(GTK_ALIGNMENT(alignment), 0, 0, 48, 0); + gtk_widget_show(alignment); + gtk_container_add(GTK_CONTAINER(frame), alignment); + gtk_misc_set_alignment(GTK_MISC(content), 0.0, 0.5); + gtk_container_add(GTK_CONTAINER(alignment), content); #endif - gtk_widget_show_all(frame); - gtk_widget_show_all(frame_label_box); - - gtk_frame_set_label_widget(GTK_FRAME(frame), frame_label_box); + gtk_widget_show_all(frame); + gtk_widget_show_all(frame_label_box); - /* pack the item on the summary screen */ - gtk_box_pack_start(GTK_BOX(shell->summary->view), frame, FALSE, FALSE, 4); + gtk_frame_set_label_widget(GTK_FRAME(frame), frame_label_box); - /* add the item to the list of summary items */ - summary->items = g_slist_prepend(summary->items, frame); + /* pack the item on the detail_view screen */ + gtk_box_pack_start(GTK_BOX(shell->detail_view->view), frame, FALSE, FALSE, + 4); - g_free(temp); + g_free(temp); } -static void shell_summary_clear(ShellSummary *summary) -{ - GSList *item; - - for (item = summary->items; item; item = item->next) { - gtk_widget_destroy(GTK_WIDGET(item->data)); - } - - g_slist_free(summary->items); - summary->items = NULL; - - if (summary->header) gtk_widget_destroy(summary->header); - summary->header = NULL; -} -static void shell_summary_create_header(ShellSummary *summary, +static void detail_view_create_header(DetailView *detail_view, gchar *title) { GtkWidget *header, *label; @@ -1721,27 +1935,25 @@ static void shell_summary_create_header(ShellSummary *summary, label = gtk_bin_get_child(GTK_BIN(header)); gtk_label_set_use_markup(GTK_LABEL(label), TRUE); - gtk_box_pack_start(GTK_BOX(shell->summary->view), header, FALSE, FALSE, 4); - - summary->header = header; + gtk_box_pack_start(GTK_BOX(shell->detail_view->view), header, FALSE, FALSE, 4); g_free(temp); } -static void shell_show_summary(void) +static void shell_show_detail_view(void) { GKeyFile *keyfile; - gchar *summary; + gchar *detail; - set_view_type(SHELL_VIEW_SUMMARY, FALSE); - shell_summary_clear(shell->summary); - shell_summary_create_header(shell->summary, shell->selected_module->name); + set_view_type(SHELL_VIEW_DETAIL, FALSE); + detail_view_clear(shell->detail_view); + detail_view_create_header(shell->detail_view, shell->selected_module->name); keyfile = g_key_file_new(); - summary = shell->selected_module->summaryfunc(); + detail = shell->selected_module->summaryfunc(); - if (g_key_file_load_from_data(keyfile, summary, - strlen(summary), 0, NULL)) { + if (g_key_file_load_from_data(keyfile, detail, + strlen(detail), 0, NULL)) { gchar **groups; gint group; @@ -1760,7 +1972,7 @@ static void shell_show_summary(void) method_result = g_strdup("N/A"); } - shell_summary_add_item(shell->summary, + detail_view_add_item(shell->detail_view, icon, groups[group], method_result); shell_status_pulse(); @@ -1771,11 +1983,11 @@ static void shell_show_summary(void) g_strfreev(groups); } else { - DEBUG("error while parsing summary"); + DEBUG("error while parsing detail_view"); set_view_type(SHELL_VIEW_NORMAL, FALSE); } - g_free(summary); + g_free(detail); g_key_file_free(keyfile); shell_view_set_enabled(TRUE); @@ -1789,76 +2001,77 @@ static void module_selected(gpointer data) ShellModuleEntry *entry; static ShellModuleEntry *current = NULL; static gboolean updating = FALSE; - GtkScrollbar *hscrollbar, *vscrollbar; + GtkScrollbar *hscrollbar, *vscrollbar; - /* Gets the currently selected item on the left-side TreeView; if there is no - selection, silently return */ + /* Gets the currently selected item on the left-side TreeView; if there is + no selection, silently return */ if (!gtk_tree_selection_get_selected(shelltree->selection, &model, &iter)) { - return; + return; } - /* Mark the currently selected module as "unselected"; this is used to kill the - update timeout. */ + /* Mark the currently selected module as "unselected"; this is used to kill + the update timeout. */ if (current) { - current->selected = FALSE; + current->selected = FALSE; } if (updating) { - return; + return; } else { - updating = TRUE; + updating = TRUE; } if (!gtk_tree_model_iter_parent(model, &parent, &iter)) { memcpy(&parent, &iter, sizeof(iter)); } - gtk_tree_model_get(model, &parent, TREE_COL_MODULE, &shell->selected_module, -1); + gtk_tree_model_get(model, &parent, TREE_COL_MODULE, &shell->selected_module, + -1); /* Get the current selection and shows its related info */ gtk_tree_model_get(model, &iter, TREE_COL_MODULE_ENTRY, &entry, -1); if (entry && !entry->selected) { - gchar *title; + gchar *title; - shell_status_set_enabled(TRUE); - shell_status_update(_("Updating...")); + shell_status_set_enabled(TRUE); + shell_status_update(_("Updating...")); - entry->selected = TRUE; - shell->selected = entry; - module_selected_show_info(entry, FALSE); + entry->selected = TRUE; + shell->selected = entry; + module_selected_show_info(entry, FALSE); - info_selected_show_extra(NULL); /* clears the more info store */ - gtk_tree_view_columns_autosize(GTK_TREE_VIEW(shell->info->view)); + gtk_tree_view_columns_autosize(GTK_TREE_VIEW(shell->info_tree->view)); - /* urgh. why don't GTK do this when the model is cleared? */ + /* urgh. why don't GTK do this when the model is cleared? */ #if GTK_CHECK_VERSION(3, 0, 0) - /* TODO:GTK3 */ + /* TODO:GTK3 */ #else - RANGE_SET_VALUE(info, vscrollbar, 0.0); - RANGE_SET_VALUE(info, hscrollbar, 0.0); - RANGE_SET_VALUE(moreinfo, vscrollbar, 0.0); - RANGE_SET_VALUE(moreinfo, hscrollbar, 0.0); + RANGE_SET_VALUE(info_tree, vscrollbar, 0.0); + RANGE_SET_VALUE(info_tree, hscrollbar, 0.0); + RANGE_SET_VALUE(detail_view, vscrollbar, 0.0); + RANGE_SET_VALUE(detail_view, hscrollbar, 0.0); #endif - title = g_strdup_printf("%s - %s", shell->selected_module->name, entry->name); - shell_set_title(shell, title); - g_free(title); + title = g_strdup_printf("%s - %s", shell->selected_module->name, + entry->name); + shell_set_title(shell, title); + g_free(title); - shell_action_set_enabled("RefreshAction", TRUE); - shell_action_set_enabled("CopyAction", TRUE); + shell_action_set_enabled("RefreshAction", TRUE); + shell_action_set_enabled("CopyAction", TRUE); - shell_status_update(_("Done.")); - shell_status_set_enabled(FALSE); + shell_status_update(_("Done.")); + shell_status_set_enabled(FALSE); } else { - shell_set_title(shell, NULL); - shell_action_set_enabled("RefreshAction", FALSE); - shell_action_set_enabled("CopyAction", FALSE); + shell_set_title(shell, NULL); + shell_action_set_enabled("RefreshAction", FALSE); + shell_action_set_enabled("CopyAction", FALSE); - gtk_tree_store_clear(GTK_TREE_STORE(shell->info->model)); - set_view_type(SHELL_VIEW_NORMAL, FALSE); + gtk_tree_store_clear(GTK_TREE_STORE(shell->info_tree->model)); + set_view_type(SHELL_VIEW_NORMAL, FALSE); if (shell->selected_module->summaryfunc) { - shell_show_summary(); + shell_show_detail_view(); } } @@ -1871,7 +2084,7 @@ static void info_selected(GtkTreeSelection * ts, gpointer data) ShellInfoTree *info = (ShellInfoTree *) data; GtkTreeModel *model = GTK_TREE_MODEL(info->model); GtkTreeIter parent; - gchar *datacol; + gchar *datacol, *mi_tag; if (!gtk_tree_selection_get_selected(ts, &model, &parent)) return; @@ -1883,11 +2096,12 @@ static void info_selected(GtkTreeSelection * ts, gpointer data) } gtk_tree_model_get(model, &parent, INFO_TREE_COL_DATA, &datacol, -1); - info_selected_show_extra(datacol); - gtk_tree_view_columns_autosize(GTK_TREE_VIEW(shell->moreinfo->view)); + mi_tag = key_mi_tag(datacol); + info_selected_show_extra(mi_tag); + g_free(mi_tag); } -static ShellInfoTree *info_tree_new(gboolean extra) +static ShellInfoTree *info_tree_new(void) { ShellInfoTree *info; GtkWidget *treeview, *scroll; @@ -1974,9 +2188,7 @@ static ShellInfoTree *info_tree_new(gboolean extra) sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(treeview)); - if (!extra) - g_signal_connect(G_OBJECT(sel), "changed", - (GCallback) info_selected, info); + g_signal_connect(G_OBJECT(sel), "changed", (GCallback)info_selected, info); gtk_container_add(GTK_CONTAINER(scroll), treeview); @@ -2049,3 +2261,138 @@ static ShellTree *tree_new() return shelltree; } + +gboolean key_is_flagged(const gchar *key) { + return (key && *key == '$' && strchr(key+1, '$')) ? TRUE : FALSE; +} + +gboolean key_is_highlighted(const gchar *key) { + gchar *flags; + key_get_components(key, &flags, NULL, NULL, NULL, NULL, TRUE); + if (flags && strchr(flags, '*')) { + g_free(flags); + return TRUE; + } + return FALSE; +} + +gboolean key_wants_details(const gchar *key) { + gchar *flags; + key_get_components(key, &flags, NULL, NULL, NULL, NULL, TRUE); + if (flags && strchr(flags, '!')) { + g_free(flags); + return TRUE; + } + return FALSE; +} + +gboolean key_value_has_vendor_string(const gchar *key) { + gchar *flags; + key_get_components(key, &flags, NULL, NULL, NULL, NULL, TRUE); + if (flags && strchr(flags, '^')) { + g_free(flags); + return TRUE; + } + return FALSE; +} + +gboolean key_label_is_escaped(const gchar *key) { + gchar *flags; + key_get_components(key, &flags, NULL, NULL, NULL, NULL, TRUE); + if (flags && strchr(flags, '@')) { + g_free(flags); + return TRUE; + } + return FALSE; +} + +gchar *key_mi_tag(const gchar *key) { + static char flag_list[] = "*!^@"; + gchar *p = (gchar*)key, *l, *t; + + if (key_is_flagged(key)) { + l = strchr(key+1, '$'); + if (*p == '$') p++; /* skip first if exists */ + while(p < l && strchr(flag_list, *p)) { + p++; + } + if (strlen(p)) { + t = g_strdup(p); + *(strchr(t, '$')) = 0; + return t; + } + } + return NULL; +} + +const gchar *key_get_name(const gchar *key) { + if (key_is_flagged(key)) + return strchr(key+1, '$')+1; + return key; +} + +/* key syntax: + * [$[][]$][#[]] + * + * example for key = "$*!Foo$Bar#7": + * flags = "$*!^Foo$" // key_is/wants_*() still works on flags + * tag = "Foo" // the moreinfo/icon tag + * name = "Bar#7" // the full unique name + * label = "Bar" // the label displayed + * dis = "7" + */ +void key_get_components(const gchar *key, + gchar **flags, gchar **tag, gchar **name, gchar **label, gchar **dis, + gboolean null_empty) { + + if (null_empty) { +#define K_NULL_EMPTY(f) if (f) { *f = NULL; } + K_NULL_EMPTY(flags); + K_NULL_EMPTY(tag); + K_NULL_EMPTY(name); + K_NULL_EMPTY(label); + K_NULL_EMPTY(dis); + } + + if (!key || !*key) + return; + + const gchar *np = g_utf8_strchr(key+1, -1, '$') + 1; + if (*key == '$' && np) { + /* is flagged */ + gchar *f = g_strdup(key); + gchar *s = g_utf8_strchr(f+1, -1, '$'); + if(s==NULL) { + DEBUG("ERROR NOT FOUND"); + }else{ + /* if((s-f+1)>strlen(key)) { + DEBUG("ERROR TOO LATE"); + }else{*/ + *(g_utf8_strchr(f+1, -1, '$') + 1) = 0; + if (flags) + *flags = g_strdup(f); + if (tag) + *tag = key_mi_tag(f); + g_free(f); + //} + } + } else + np = key; + + if (name) + *name = g_strdup(np); + if (label) { + *label = g_strdup(np); + gchar *lbp = g_utf8_strchr(*label, -1, '#'); + if (lbp) + *lbp = 0; + if (lbp && dis) + *dis = g_strdup(lbp + 1); + + if (flags && *flags && strchr(*flags, '@')) { + gchar *ol = *label; + *label = g_strcompress(ol); + g_free(ol); + } + } +} diff --git a/shell/stock.c b/shell/stock.c index 86d66778..27b2eedb 100644 --- a/shell/stock.c +++ b/shell/stock.c @@ -1,10 +1,10 @@ /* * HardInfo - Displays System Information - * Copyright (C) 2003-2007 Leandro A. F. Pereira + * Copyright (C) 2003-2007 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, version 2. + * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -25,11 +25,13 @@ static struct { gchar *filename; gchar *stock_id; } stock_icons[] = { + { "clipboard.png", HI_STOCK_CLIPBOARD}, + { "refresh.png", HI_STOCK_REFRESH}, { "report.png", HI_STOCK_REPORT}, { "internet.png", HI_STOCK_INTERNET}, { "module.png", HI_STOCK_MODULE}, { "about-modules.png", HI_STOCK_ABOUT_MODULES}, - { "syncmanager-small.png", HI_STOCK_SYNC_MENU}, + { "server_sync.png", HI_STOCK_SYNC_MENU}, { "face-grin.png", HI_STOCK_DONATE}, { "server.png", HI_STOCK_SERVER}, }; @@ -38,8 +40,6 @@ static GtkIconFactory *icon_factory; void stock_icon_register(gchar * filename, gchar * stock_id) { -#if GTK_CHECK_VERSION(3, 0, 0) -#else GtkIconSet *icon_set; GtkIconSource *icon_source; @@ -54,13 +54,10 @@ void stock_icon_register(gchar * filename, gchar * stock_id) gtk_icon_factory_add(icon_factory, stock_id, icon_set); gtk_icon_set_unref(icon_set); -#endif } void stock_icon_register_pixbuf(GdkPixbuf * pixbuf, gchar * stock_id) { -#if GTK_CHECK_VERSION(3, 0, 0) -#else GtkIconSet *icon_set; GtkIconSource *icon_source; @@ -74,30 +71,23 @@ void stock_icon_register_pixbuf(GdkPixbuf * pixbuf, gchar * stock_id) gtk_icon_factory_add(icon_factory, stock_id, icon_set); gtk_icon_set_unref(icon_set); -#endif } void stock_icons_init(void) { - gint i; + guint i; guint n_stock_icons = G_N_ELEMENTS(stock_icons); DEBUG("initializing stock icons"); -#if GTK_CHECK_VERSION(3, 0, 0) -#else icon_factory = gtk_icon_factory_new(); -#endif for (i = 0; i < n_stock_icons; i++) { stock_icon_register(stock_icons[i].filename, stock_icons[i].stock_id); } -#if GTK_CHECK_VERSION(3, 0, 0) -#else gtk_icon_factory_add_default(icon_factory); -#endif g_object_unref(icon_factory); } diff --git a/shell/syncmanager.c b/shell/syncmanager.c index db94d474..0f08cf87 100644 --- a/shell/syncmanager.c +++ b/shell/syncmanager.c @@ -1,10 +1,10 @@ /* * HardInfo - Displays System Information - * Copyright (C) 2003-2009 Leandro A. F. Pereira + * Copyright (C) 2003-2009 L. A. F. Pereira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, version 2. + * the Free Software Foundation, version 2 or later. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -16,17 +16,20 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ -#include "syncmanager.h" -#include "iconcache.h" -#include "hardinfo.h" #include "config.h" +#include "hardinfo.h" +#include "iconcache.h" +#include "syncmanager.h" -#ifdef HAS_LIBSOUP #include #include #include +#ifndef SOUP_CHECK_VERSION + #define SOUP_CHECK_VERSION(a,b,c) 0 +#endif + typedef struct _SyncDialog SyncDialog; typedef struct _SyncNetArea SyncNetArea; typedef struct _SyncNetAction SyncNetAction; @@ -36,9 +39,6 @@ struct _SyncNetArea { }; struct _SyncNetAction { - gchar *name; - gboolean(*do_action) (SyncDialog * sd, gpointer sna); - SyncEntry *entry; GError *error; }; @@ -50,12 +50,13 @@ struct _SyncDialog { GtkWidget *button_sync; GtkWidget *button_cancel; GtkWidget *button_close; + GtkWidget *button_priv_policy; GtkWidget *scroll_box; SyncNetArea *sna; - gboolean flag_cancel:1; + gboolean flag_cancel : 1; }; static GSList *entries = NULL; @@ -63,479 +64,385 @@ static SoupSession *session = NULL; static GMainLoop *loop; static GQuark err_quark; -#define XMLRPC_SERVER_URI "https://xmlrpc.hardinfo.org/" -#define XMLRPC_SERVER_API_VERSION 1 +//Note there are personal information involved and very old +//linux systems does not work with HTTPS so use HTTP for now +#define API_SERVER_URI "http://api.hardinfo2.org" -#define LABEL_SYNC_DEFAULT _("Synchronize with Central Database\n" \ - "The following information may be synchronized " \ - "with the HardInfo central database.") -#define LABEL_SYNC_SYNCING _("Synchronizing\n" \ - "This may take some time.") +#define LABEL_SYNC_DEFAULT \ + _("Synchronize with Central Database\n" \ + "The following information may be synchronized\n" \ + "with the HardInfo central database.") +#define LABEL_SYNC_SYNCING \ + _("Synchronizing\n" \ + "This may take some time.") static SyncDialog *sync_dialog_new(GtkWidget *parent); -static void sync_dialog_destroy(SyncDialog * sd); -static void sync_dialog_start_sync(SyncDialog * sd); +static void sync_dialog_destroy(SyncDialog *sd); +static void sync_dialog_start_sync(SyncDialog *sd); static SyncNetArea *sync_dialog_netarea_new(void); -static void sync_dialog_netarea_destroy(SyncNetArea * sna); -static void sync_dialog_netarea_show(SyncDialog * sd); +static void sync_dialog_netarea_destroy(SyncNetArea *sna); +static void sync_dialog_netarea_show(SyncDialog *sd); #if 0 static void sync_dialog_netarea_hide(SyncDialog * sd); #endif -static void sync_dialog_netarea_start_actions(SyncDialog * sd, - SyncNetAction * sna, gint n); - -#define SNA_ERROR(code,message,...) if (!sna->error) { \ - sna->error = g_error_new(err_quark, code, message, \ - ##__VA_ARGS__); \ - } -#endif /* HAS_LIBSOUP */ +static void +sync_dialog_netarea_start_actions(SyncDialog *sd, SyncNetAction *sna, gint n); +#define SNA_ERROR(code, message, ...) \ + if (!sna->error) { \ + sna->error = g_error_new(err_quark, code, message, ##__VA_ARGS__); \ + } gint sync_manager_count_entries(void) { -#ifdef HAS_LIBSOUP return g_slist_length(entries); -#else - return 0; -#endif } -void sync_manager_add_entry(SyncEntry * entry) +void sync_manager_add_entry(SyncEntry *entry) { -#ifdef HAS_LIBSOUP - DEBUG("registering syncmanager entry ''%s''", entry->fancy_name); + DEBUG("registering syncmanager entry ''%s''", entry->name); entry->selected = TRUE; entries = g_slist_append(entries, entry); -#else - DEBUG("libsoup support is disabled."); -#endif /* HAS_LIBSOUP */ } void sync_manager_clear_entries(void) { -#ifdef HAS_LIBSOUP DEBUG("clearing syncmanager entries"); g_slist_free(entries); entries = NULL; -#else - DEBUG("libsoup support is disabled."); -#endif /* HAS_LIBSOUP */ } void sync_manager_show(GtkWidget *parent) { -#ifndef HAS_LIBSOUP - g_warning - (_("HardInfo was compiled without libsoup support. (Network Updater requires it.)")); -#else /* !HAS_LIBSOUP */ SyncDialog *sd = sync_dialog_new(parent); err_quark = g_quark_from_static_string("syncmanager"); if (gtk_dialog_run(GTK_DIALOG(sd->dialog)) == GTK_RESPONSE_ACCEPT) { - shell_view_set_enabled(FALSE); - shell_status_set_enabled(TRUE); + shell_view_set_enabled(FALSE); + shell_status_set_enabled(TRUE); + shell_set_transient_dialog(GTK_WINDOW(sd->dialog)); - sync_dialog_start_sync(sd); + sync_dialog_start_sync(sd); - shell_status_set_enabled(FALSE); - shell_view_set_enabled(TRUE); + shell_set_transient_dialog(NULL); + shell_status_set_enabled(FALSE); + shell_view_set_enabled(TRUE); } sync_dialog_destroy(sd); -#endif /* HAS_LIBSOUP */ } -#ifdef HAS_LIBSOUP -static gint _soup_get_xmlrpc_value_int(SoupMessage * msg, - SyncNetAction * sna) +static gboolean _cancel_sync(GtkWidget *widget, gpointer data) { - gint int_value = -1; - - sna->error = NULL; - - if (!SOUP_STATUS_IS_SUCCESSFUL(msg->status_code)) { - SNA_ERROR(1, _("%s (error #%d)"), msg->reason_phrase, - msg->status_code); - goto bad; - } - - GVariant *value = soup_xmlrpc_parse_response(msg->response_body->data, - msg->response_body->length, - "h", NULL); - if (!value) { - SNA_ERROR(2, _("Could not parse XML-RPC response")); - goto bad; - } - - int_value = g_variant_get_int32(value); - g_variant_unref(value); + SyncDialog *sd = (SyncDialog *)data; -bad: - return int_value; -} - -static gchar *_soup_get_xmlrpc_value_string(SoupMessage * msg, - SyncNetAction * sna) -{ - gchar *string = NULL; - - sna->error = NULL; - - if (!SOUP_STATUS_IS_SUCCESSFUL(msg->status_code)) { - SNA_ERROR(1, _("%s (error #%d)"), msg->reason_phrase, - msg->status_code); - goto bad; - } - - GVariant *value = soup_xmlrpc_parse_response(msg->response_body->data, - msg->response_body->length, - "s", NULL); - if (!value) { - SNA_ERROR(2, _("Could not parse XML-RPC response")); - goto bad; + if (session) { + soup_session_abort(session); } - string = g_strdup(g_variant_get_string(value, NULL)); - g_variant_unref(value); - -bad: - return string; -} - -static gboolean _soup_xmlrpc_call(gchar * method, SyncNetAction * sna, - SoupSessionCallback callback) -{ - SoupMessage *msg; - - sna->error = NULL; - - msg = soup_xmlrpc_message_new(XMLRPC_SERVER_URI, method, NULL, NULL); - if (!msg) - return FALSE; - - DEBUG("calling xmlrpc method %s", method); + sd->flag_cancel = TRUE; + g_main_loop_quit(loop); - soup_session_queue_message(session, msg, callback, sna); - g_main_run(loop); + gtk_widget_set_sensitive(widget, FALSE); - return TRUE; + return FALSE; } -static gboolean _soup_xmlrpc_call_with_parameters(gchar * method, - SyncNetAction * sna, - SoupSessionCallback - callback, ...) +static SyncNetAction *sync_manager_get_selected_actions(gint *n) { - SoupMessage *msg; - GVariantBuilder builder; - GVariant *parameters; - gchar *argument, *body; - va_list ap; - - sna->error = NULL; - - msg = soup_message_new("POST", XMLRPC_SERVER_URI); - - DEBUG("calling xmlrpc method %s", method); - if (!msg) - return FALSE; - - g_variant_builder_init(&builder, G_VARIANT_TYPE_ARRAY); - va_start(ap, callback); - while ((argument = va_arg(ap, gchar *))) { - g_variant_builder_add(&builder, "s", argument); - DEBUG("with parameter: %s", argument); - } - va_end(ap); - parameters = g_variant_builder_end(&builder); - g_variant_builder_unref(&builder); + gint i; + GSList *entry; + SyncNetAction *actions; - body = soup_xmlrpc_build_request(method, parameters, NULL); - g_variant_unref(parameters); - if (body) { - soup_message_set_request(msg, "text/xml", - SOUP_MEMORY_TAKE, body, strlen(body)); + actions = g_new0(SyncNetAction, g_slist_length(entries)); - soup_session_queue_message(session, msg, callback, sna); - g_main_run(loop); + for (entry = entries, i = 0; entry; entry = entry->next) { + SyncEntry *e = (SyncEntry *)entry->data; - return TRUE; + if (e->selected) { + SyncNetAction sna = {.entry = e}; + actions[i++] = sna; + } } - return FALSE; + *n = i; + return actions; } -static void _action_check_api_version_got_response(SoupSession * session, - SoupMessage * msg, - gpointer user_data) +#if !SOUP_CHECK_VERSION(3,0,0) +static SoupURI *sync_manager_get_proxy(void) { - SyncNetAction *sna = (SyncNetAction *) user_data; - gint version = _soup_get_xmlrpc_value_int(msg, sna); + const gchar *conf; - if (version != XMLRPC_SERVER_API_VERSION) { - SNA_ERROR(5, _("Server says it supports API version %d, but " - "this version of HardInfo only supports API " - "version %d."), version, XMLRPC_SERVER_API_VERSION); + if (!(conf = g_getenv("HTTP_PROXY"))) { + if (!(conf = g_getenv("http_proxy"))) { + return NULL; + } } - g_main_quit(loop); -} - -static gboolean _action_check_api_version(SyncDialog * sd, - gpointer user_data) -{ - SyncNetAction *sna = (SyncNetAction *) user_data; - - if (!_soup_xmlrpc_call("server.getAPIVersion", sna, - _action_check_api_version_got_response)) - return FALSE; - - return sna->error ? FALSE : TRUE; + return soup_uri_new(conf); } +#endif -static void _action_call_function_got_response(SoupSession * session, - SoupMessage * msg, - gpointer user_data) +static void ensure_soup_session(void) { - SyncNetAction *sna = (SyncNetAction *) user_data; - gchar *string; - - if ((string = _soup_get_xmlrpc_value_string(msg, sna)) && - sna->entry->save_to) { - DEBUG("received string: %s\n", string); - gchar *filename = g_build_filename(g_get_home_dir(), ".hardinfo", - sna->entry->save_to, NULL); - - DEBUG("saving to %s", filename); - - g_file_set_contents(filename, string, -1, NULL); - g_free(filename); - } + if (!session) { +#if SOUP_CHECK_VERSION(3,0,0) + session = soup_session_new_with_options("timeout", 10, NULL); +#else +#if SOUP_CHECK_VERSION(2,42,0) + SoupURI *proxy = sync_manager_get_proxy(); - if (sna->entry->callback) { - sna->entry->callback(sna->entry, string); + session = soup_session_new_with_options( + SOUP_SESSION_TIMEOUT, 10, SOUP_SESSION_PROXY_URI, proxy, NULL); +#else + SoupURI *proxy = sync_manager_get_proxy(); + session = soup_session_async_new_with_options( + SOUP_SESSION_TIMEOUT, 10, SOUP_SESSION_PROXY_URI, proxy, NULL); +#endif +#endif } - - g_free(string); - g_main_quit(loop); } -static gboolean _action_call_function(SyncDialog * sd, gpointer user_data) +static void sync_dialog_start_sync(SyncDialog *sd) { - SyncNetAction *sna = (SyncNetAction *) user_data; - - if (sna->entry) { - gchar *str_data = NULL; - - if (sna->entry->get_data) - str_data = sna->entry->get_data(); + gint nactions; + SyncNetAction *actions; - if (!_soup_xmlrpc_call_with_parameters("sync.callFunctionEx", sna, - _action_call_function_got_response, - VERSION, ARCH, - sna->entry->name, - str_data, NULL)) { - g_free(str_data); + ensure_soup_session(); - return FALSE; - } + loop = g_main_loop_new(NULL, FALSE); - g_free(str_data); - } + gtk_widget_hide(sd->button_sync); + gtk_widget_hide(sd->button_priv_policy); + sync_dialog_netarea_show(sd); + g_signal_connect(G_OBJECT(sd->button_cancel), "clicked", + (GCallback)_cancel_sync, sd); - return sna->error ? FALSE : TRUE; -} + actions = sync_manager_get_selected_actions(&nactions); + sync_dialog_netarea_start_actions(sd, actions, nactions); + g_free(actions); -static gboolean _cancel_sync(GtkWidget * widget, gpointer data) -{ - SyncDialog *sd = (SyncDialog *) data; + if (sd->flag_cancel) { + gtk_widget_hide(sd->button_cancel); + gtk_widget_show(sd->button_close); - if (session) { - soup_session_abort(session); + /* wait for the user to close the dialog */ + g_main_loop_run(loop); } - sd->flag_cancel = TRUE; - g_main_quit(loop); - - gtk_widget_set_sensitive(widget, FALSE); - - return FALSE; + g_main_loop_unref(loop); } -static SyncNetAction *sync_manager_get_selected_actions(gint * n) +#if SOUP_CHECK_VERSION(2,42,0) +static void got_response(GObject *source, GAsyncResult *res, gpointer user_data) +#else +static void got_response(SoupSession *source, SoupMessage *res, gpointer user_data) +#endif { - gint i; - GSList *entry; - SyncNetAction *actions; - SyncNetAction - action_check_api = { _("Contacting HardInfo Central Database"), _action_check_api_version }, - action_clean_up = { _("Cleaning up"), NULL}; - - actions = g_new0(SyncNetAction, 2 + g_slist_length(entries)); + SyncNetAction *sna = user_data; + GInputStream *is; +#if SOUP_CHECK_VERSION(2,42,0) +#else + const guint8 *buf=NULL; + gsize len,datawritten; + SoupBuffer *soupmsg=NULL; +#endif - for (entry = entries, i = 1; entry; entry = entry->next) { - SyncEntry *e = (SyncEntry *) entry->data; +#if SOUP_CHECK_VERSION(2,42,0) + is = soup_session_send_finish(session, res, &sna->error); + if (is == NULL) + goto out; + if (sna->error != NULL) + goto out; +#endif - if (e->selected) { - SyncNetAction sna = - { e->fancy_name, _action_call_function, e }; + if (sna->entry->file_name != NULL) { + //check for missing config dirs + g_mkdir(g_get_user_config_dir(), 0766); + g_mkdir(g_build_filename(g_get_user_config_dir(),"hardinfo2",NULL), 0766); + // + gchar *path = g_build_filename(g_get_user_config_dir(), "hardinfo2", + sna->entry->file_name, NULL); + GFile *file = g_file_new_for_path(path); + GFileOutputStream *output = + g_file_replace(file, NULL, FALSE, G_FILE_CREATE_REPLACE_DESTINATION, + NULL, &sna->error); + + if (output != NULL) { +#if SOUP_CHECK_VERSION(2,42,0) + g_output_stream_splice(G_OUTPUT_STREAM(output), is, + G_OUTPUT_STREAM_SPLICE_CLOSE_TARGET, NULL, + &sna->error); +#else + soupmsg=soup_message_body_flatten(res->response_body); + if(soupmsg){ + soup_buffer_get_data(soupmsg,&buf,&len); + DEBUG("got file with len: %u", (unsigned int)len); + if(len>0){ + g_output_stream_write_all(G_OUTPUT_STREAM(output),buf,len,&datawritten,NULL,&sna->error); + soup_buffer_free(soupmsg); + } + } +#endif + } - actions[i++] = sna; - } + g_free(path); + g_object_unref(file); } - actions[0] = action_check_api; - actions[i++] = action_clean_up; - - *n = i; - return actions; +out: + g_main_loop_quit(loop); +#if SOUP_CHECK_VERSION(2,42,0) + g_object_unref(is); +#endif } -static SoupURI *sync_manager_get_proxy(void) +static gboolean send_request_for_net_action(SyncNetAction *sna) { - const gchar *conf; + gchar *uri; + SoupMessage *msg; + guint response_code; - if (!(conf = g_getenv("HTTP_PROXY"))) { - if (!(conf = g_getenv("http_proxy"))) { - return NULL; - } - } + uri = g_strdup_printf("%s/%s", API_SERVER_URI, sna->entry->file_name); - return soup_uri_new(conf); -} + if (sna->entry->generate_contents_for_upload == NULL) { + msg = soup_message_new("GET", uri); + } else { + gsize size; + gchar *contents = sna->entry->generate_contents_for_upload(&size); -static void sync_dialog_start_sync(SyncDialog * sd) -{ - gint nactions; - SyncNetAction *actions; + msg = soup_message_new("POST", uri); - if (!session) { - SoupURI *proxy = sync_manager_get_proxy(); - - session = soup_session_new_with_options(SOUP_SESSION_TIMEOUT, 10, - SOUP_SESSION_PROXY_URI, - proxy, NULL); - /* Crashes if we unref the proxy? O_o */ - /*if (proxy) - g_object_unref(proxy); */ +#if SOUP_CHECK_VERSION(3, 0, 0) + GBytes *cont = g_bytes_new_static(contents,size); + soup_message_set_request_body_from_bytes(msg, "application/octet-stream", cont); +#else + soup_message_set_request(msg, "application/octet-stream", + SOUP_MEMORY_TAKE, contents, size); +#endif } - loop = g_main_loop_new(NULL, TRUE); - - gtk_widget_hide(sd->button_sync); - sync_dialog_netarea_show(sd); - g_signal_connect(G_OBJECT(sd->button_cancel), "clicked", - (GCallback) _cancel_sync, sd); - - actions = sync_manager_get_selected_actions(&nactions); - sync_dialog_netarea_start_actions(sd, actions, nactions); - g_free(actions); +#if SOUP_CHECK_VERSION(3, 0, 0) + soup_session_send_async(session, msg, G_PRIORITY_DEFAULT, NULL, got_response, sna); +#else +#if SOUP_CHECK_VERSION(2,42,0) + soup_session_send_async(session, msg, NULL, got_response, sna); +#else + soup_session_queue_message(session, msg, got_response, sna); +#endif +#endif + g_main_loop_run(loop); - if (sd->flag_cancel) { - gtk_widget_hide(sd->button_cancel); - gtk_widget_show(sd->button_close); + g_object_unref(msg); + g_free(uri); - /* wait for the user to close the dialog */ - g_main_run(loop); + if (sna->error != NULL) { + DEBUG("Error while sending request: %s", sna->error->message); + g_error_free(sna->error); + sna->error = NULL; + return FALSE; } - g_main_loop_unref(loop); + return TRUE; } -static void sync_dialog_netarea_start_actions(SyncDialog * sd, - SyncNetAction sna[], gint n) +static void +sync_dialog_netarea_start_actions(SyncDialog *sd, SyncNetAction sna[], gint n) { gint i; GtkWidget **labels; GtkWidget **status_labels; - const gchar *done_str = "\342\234\223"; + const gchar *done_str = "\342\234\223"; const gchar *error_str = "\342\234\227"; - const gchar *curr_str = "\342\226\266"; + const gchar *curr_str = "\342\226\266"; const gchar *empty_str = "\302\240\302\240"; labels = g_new0(GtkWidget *, n); status_labels = g_new0(GtkWidget *, n); for (i = 0; i < n; i++) { - GtkWidget *hbox; + GtkWidget *hbox; - hbox = gtk_hbox_new(FALSE, 5); + hbox = gtk_hbox_new(FALSE, 5); - labels[i] = gtk_label_new(sna[i].name); - status_labels[i] = gtk_label_new(empty_str); + labels[i] = gtk_label_new(_(sna[i].entry->name)); + status_labels[i] = gtk_label_new(empty_str); - gtk_label_set_use_markup(GTK_LABEL(labels[i]), TRUE); - gtk_label_set_use_markup(GTK_LABEL(status_labels[i]), TRUE); + gtk_label_set_use_markup(GTK_LABEL(labels[i]), TRUE); + gtk_label_set_use_markup(GTK_LABEL(status_labels[i]), TRUE); - gtk_misc_set_alignment(GTK_MISC(labels[i]), 0.0, 0.5); - gtk_misc_set_alignment(GTK_MISC(status_labels[i]), 1.0, 0.5); + gtk_misc_set_alignment(GTK_MISC(labels[i]), 0.0, 0.5); + gtk_misc_set_alignment(GTK_MISC(status_labels[i]), 1.0, 0.5); - gtk_box_pack_start(GTK_BOX(hbox), status_labels[i], FALSE, FALSE, 0); - gtk_box_pack_start(GTK_BOX(hbox), labels[i], TRUE, TRUE, 0); - gtk_box_pack_start(GTK_BOX(sd->sna->vbox), hbox, FALSE, FALSE, 3); + gtk_box_pack_start(GTK_BOX(hbox), status_labels[i], FALSE, FALSE, 0); + gtk_box_pack_start(GTK_BOX(hbox), labels[i], TRUE, TRUE, 0); + gtk_box_pack_start(GTK_BOX(sd->sna->vbox), hbox, FALSE, FALSE, 3); - gtk_widget_show_all(hbox); + gtk_widget_show_all(hbox); } while (gtk_events_pending()) - gtk_main_iteration(); + gtk_main_iteration(); for (i = 0; i < n; i++) { - gchar *markup; + gchar *markup; - if (sd->flag_cancel) { - markup = - g_strdup_printf("%s %s", - sna[i].name, _("(canceled)")); - gtk_label_set_markup(GTK_LABEL(labels[i]), markup); - g_free(markup); + if (sd->flag_cancel) { + markup = g_strdup_printf("%s %s", + _(sna[i].entry->name), + _("(canceled)")); + gtk_label_set_markup(GTK_LABEL(labels[i]), markup); + g_free(markup); - gtk_label_set_markup(GTK_LABEL(status_labels[i]), error_str); - break; - } + gtk_label_set_markup(GTK_LABEL(status_labels[i]), error_str); + break; + } - markup = g_strdup_printf("%s", sna[i].name); - gtk_label_set_markup(GTK_LABEL(labels[i]), markup); - g_free(markup); + markup = g_strdup_printf("%s", _(sna[i].entry->name)); + gtk_label_set_markup(GTK_LABEL(labels[i]), markup); + g_free(markup); gtk_label_set_markup(GTK_LABEL(status_labels[i]), curr_str); - if (sna[i].do_action && !sna[i].do_action(sd, &sna[i])) { - markup = - g_strdup_printf("%s %s", - sna[i].name, _("(failed)")); - gtk_label_set_markup(GTK_LABEL(labels[i]), markup); - g_free(markup); - - sd->flag_cancel = TRUE; - - gtk_label_set_markup(GTK_LABEL(status_labels[i]), error_str); - if (sna[i].error) { - if (sna[i].error->code != 1) { - /* the user has not cancelled something... */ - g_warning - (_("Failed while performing \"%s\". Please file a bug report " - "if this problem persists. (Use the Help\342\206\222Report" - " bug option.)\n\nDetails: %s"), sna[i].name, - sna[i].error->message); - } - - g_error_free(sna[i].error); - } else { - g_warning - (_("Failed while performing \"%s\". Please file a bug report " - "if this problem persists. (Use the Help\342\206\222Report" - " bug option.)"), sna[i].name); - } - break; - } + if (sna[i].entry && !send_request_for_net_action(&sna[i])) { + markup = g_strdup_printf("%s %s", + _(sna[i].entry->name), _("(failed)")); + gtk_label_set_markup(GTK_LABEL(labels[i]), markup); + g_free(markup); + + sd->flag_cancel = TRUE; + + gtk_label_set_markup(GTK_LABEL(status_labels[i]), error_str); + if (sna[i].error) { + if (sna[i].error->code != 1) { + /* the user has not cancelled something... */ + g_warning(_("Failed while performing \"%s\". Please file a " + "bug report " + "if this problem persists. (Use the " + "Help\342\206\222Report" + " bug option.)\n\nDetails: %s"), + _(sna[i].entry->name), sna[i].error->message); + } + + g_error_free(sna[i].error); + } else { + g_warning(_("Failed while performing \"%s\". Please file a bug " + "report " + "if this problem persists. (Use the " + "Help\342\206\222Report" + " bug option.)"), + _(sna[i].entry->name)); + } + break; + } gtk_label_set_markup(GTK_LABEL(status_labels[i]), done_str); - gtk_label_set_markup(GTK_LABEL(labels[i]), sna[i].name); + gtk_label_set_markup(GTK_LABEL(labels[i]), _(sna[i].entry->name)); } g_free(labels); @@ -556,14 +463,14 @@ static SyncNetArea *sync_dialog_netarea_new(void) return sna; } -static void sync_dialog_netarea_destroy(SyncNetArea * sna) +static void sync_dialog_netarea_destroy(SyncNetArea *sna) { g_return_if_fail(sna != NULL); g_free(sna); } -static void sync_dialog_netarea_show(SyncDialog * sd) +static void sync_dialog_netarea_show(SyncDialog *sd) { g_return_if_fail(sd && sd->sna); @@ -575,8 +482,7 @@ static void sync_dialog_netarea_show(SyncDialog * sd) gtk_window_reshow_with_initial_size(GTK_WINDOW(sd->dialog)); } -#if 0 -static void sync_dialog_netarea_hide(SyncDialog * sd) +static void sync_dialog_netarea_hide(SyncDialog *sd) { g_return_if_fail(sd && sd->sna); @@ -586,9 +492,8 @@ static void sync_dialog_netarea_hide(SyncDialog * sd) gtk_label_set_markup(GTK_LABEL(sd->label), LABEL_SYNC_DEFAULT); gtk_window_reshow_with_initial_size(GTK_WINDOW(sd->dialog)); } -#endif -static void populate_store(GtkListStore * store) +static void populate_store(GtkListStore *store) { GSList *entry; SyncEntry *e; @@ -596,21 +501,20 @@ static void populate_store(GtkListStore * store) gtk_list_store_clear(store); for (entry = entries; entry; entry = entry->next) { - GtkTreeIter iter; + GtkTreeIter iter; - e = (SyncEntry *) entry->data; + e = (SyncEntry *)entry->data; - e->selected = TRUE; + e->selected = TRUE; - gtk_list_store_append(store, &iter); - gtk_list_store_set(store, &iter, 0, TRUE, 1, e->fancy_name, 2, e, - -1); + gtk_list_store_append(store, &iter); + gtk_list_store_set(store, &iter, 0, TRUE, 1, _(e->name), 2, e, -1); } } -static void -sel_toggle(GtkCellRendererToggle * cellrenderertoggle, - gchar * path_str, GtkTreeModel * model) +static void sel_toggle(GtkCellRendererToggle *cellrenderertoggle, + gchar *path_str, + GtkTreeModel *model) { GtkTreeIter iter; GtkTreePath *path = gtk_tree_path_new_from_string(path_str); @@ -626,10 +530,7 @@ sel_toggle(GtkCellRendererToggle * cellrenderertoggle, gtk_tree_path_free(path); } -static void close_clicked(void) -{ - g_main_quit(loop); -} +static void close_clicked(void) { g_main_loop_quit(loop); } static SyncDialog *sync_dialog_new(GtkWidget *parent) { @@ -642,6 +543,7 @@ static SyncDialog *sync_dialog_new(GtkWidget *parent) GtkWidget *button8; GtkWidget *button7; GtkWidget *button6; + GtkWidget *priv_policy_btn; GtkWidget *label; GtkWidget *hbox; @@ -655,15 +557,13 @@ static SyncDialog *sync_dialog_new(GtkWidget *parent) dialog = gtk_dialog_new(); gtk_window_set_transient_for(GTK_WINDOW(dialog), GTK_WINDOW(parent)); - gtk_window_set_title(GTK_WINDOW(dialog), _("Network Updater")); + gtk_window_set_title(GTK_WINDOW(dialog), _("Synchronize")); gtk_window_set_resizable(GTK_WINDOW(dialog), FALSE); gtk_window_set_icon(GTK_WINDOW(dialog), - icon_cache_get_pixbuf("syncmanager.png")); + icon_cache_get_pixbuf("syncmanager.png")); gtk_window_set_default_size(GTK_WINDOW(dialog), 420, 260); - gtk_window_set_position(GTK_WINDOW(dialog), - GTK_WIN_POS_CENTER_ON_PARENT); - gtk_window_set_type_hint(GTK_WINDOW(dialog), - GDK_WINDOW_TYPE_HINT_DIALOG); + gtk_window_set_position(GTK_WINDOW(dialog), GTK_WIN_POS_CENTER_ON_PARENT); + gtk_window_set_type_hint(GTK_WINDOW(dialog), GDK_WINDOW_TYPE_HINT_DIALOG); gtk_container_set_border_width(GTK_CONTAINER(dialog), 5); @@ -691,30 +591,24 @@ static SyncDialog *sync_dialog_new(GtkWidget *parent) gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5); #endif - gtk_box_pack_start(GTK_BOX(hbox), - icon_cache_get_image("syncmanager.png"), - FALSE, FALSE, 0); + gtk_box_pack_start(GTK_BOX(hbox), icon_cache_get_image("syncmanager.png"), + FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, TRUE, 0); gtk_widget_show_all(hbox); - - gtk_box_pack_start(GTK_BOX(dialog1_vbox), sd->sna->vbox, TRUE, TRUE, - 0); + gtk_box_pack_start(GTK_BOX(dialog1_vbox), sd->sna->vbox, TRUE, TRUE, 0); scrolledwindow2 = gtk_scrolled_window_new(NULL, NULL); gtk_widget_show(scrolledwindow2); - gtk_box_pack_start(GTK_BOX(dialog1_vbox), scrolledwindow2, TRUE, TRUE, - 0); + gtk_box_pack_start(GTK_BOX(dialog1_vbox), scrolledwindow2, TRUE, TRUE, 0); gtk_widget_set_size_request(scrolledwindow2, -1, 200); gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolledwindow2), - GTK_POLICY_AUTOMATIC, - GTK_POLICY_AUTOMATIC); - gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW - (scrolledwindow2), GTK_SHADOW_IN); + GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); + gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(scrolledwindow2), + GTK_SHADOW_IN); store = - gtk_list_store_new(3, G_TYPE_BOOLEAN, G_TYPE_STRING, - G_TYPE_POINTER); + gtk_list_store_new(3, G_TYPE_BOOLEAN, G_TYPE_STRING, G_TYPE_POINTER); model = GTK_TREE_MODEL(store); treeview2 = gtk_tree_view_new_with_model(model); @@ -736,6 +630,12 @@ static SyncDialog *sync_dialog_new(GtkWidget *parent) populate_store(store); + priv_policy_btn = gtk_link_button_new_with_label( + "https://github.com/hardinfo2/hardinfo2?tab=readme-ov-file#privacy-policy", + _("Privacy Policy")); + gtk_widget_show(priv_policy_btn); + gtk_box_pack_start(GTK_BOX(dialog1_vbox), priv_policy_btn, FALSE, FALSE, 0); + #if GTK_CHECK_VERSION(2, 14, 0) dialog1_action_area = gtk_dialog_get_action_area(GTK_DIALOG(dialog)); #else @@ -743,12 +643,12 @@ static SyncDialog *sync_dialog_new(GtkWidget *parent) #endif gtk_widget_show(dialog1_action_area); gtk_button_box_set_layout(GTK_BUTTON_BOX(dialog1_action_area), - GTK_BUTTONBOX_END); + GTK_BUTTONBOX_END); button8 = gtk_button_new_with_mnemonic(_("_Cancel")); gtk_widget_show(button8); gtk_dialog_add_action_widget(GTK_DIALOG(dialog), button8, - GTK_RESPONSE_CANCEL); + GTK_RESPONSE_CANCEL); #if GTK_CHECK_VERSION(2, 18, 0) gtk_widget_set_can_default(button8, TRUE); #else @@ -757,17 +657,17 @@ static SyncDialog *sync_dialog_new(GtkWidget *parent) button7 = gtk_button_new_with_mnemonic(_("_Synchronize")); gtk_widget_show(button7); gtk_dialog_add_action_widget(GTK_DIALOG(dialog), button7, - GTK_RESPONSE_ACCEPT); + GTK_RESPONSE_ACCEPT); #if GTK_CHECK_VERSION(2, 18, 0) gtk_widget_set_can_default(button7, TRUE); #else GTK_WIDGET_SET_FLAGS(button7, GTK_CAN_DEFAULT); #endif button6 = gtk_button_new_from_stock(GTK_STOCK_CLOSE); - g_signal_connect(G_OBJECT(button6), "clicked", - (GCallback) close_clicked, NULL); + g_signal_connect(G_OBJECT(button6), "clicked", (GCallback)close_clicked, + NULL); gtk_dialog_add_action_widget(GTK_DIALOG(dialog), button6, - GTK_RESPONSE_ACCEPT); + GTK_RESPONSE_ACCEPT); #if GTK_CHECK_VERSION(2, 18, 0) gtk_widget_set_can_default(button6, TRUE); #else @@ -778,16 +678,57 @@ static SyncDialog *sync_dialog_new(GtkWidget *parent) sd->button_sync = button7; sd->button_cancel = button8; sd->button_close = button6; + sd->button_priv_policy = priv_policy_btn; sd->scroll_box = scrolledwindow2; sd->label = label; return sd; } -static void sync_dialog_destroy(SyncDialog * sd) +static void sync_dialog_destroy(SyncDialog *sd) { gtk_widget_destroy(sd->dialog); sync_dialog_netarea_destroy(sd->sna); g_free(sd); } -#endif /* HAS_LIBSOUP */ + +static gboolean sync_one(gpointer data) +{ + SyncNetAction *sna = data; + + if (sna->entry->generate_contents_for_upload) + goto out; + + DEBUG("Syncronizing: %s", sna->entry->name); + + gchar *msg = g_strdup_printf(_("Synchronizing: %s"), _(sna->entry->name)); + shell_status_update(msg); + shell_status_pulse(); + g_free(msg); + + send_request_for_net_action(sna); + +out: + g_main_loop_unref(loop); + idle_free(sna); + + return FALSE; +} + +void sync_manager_update_on_startup(void) +{ + GSList *entry; + + ensure_soup_session(); + + loop = g_main_loop_new(NULL, FALSE); + + for (entry = entries; entry; entry = entry->next) { + SyncNetAction *action = g_new0(SyncNetAction, 1); + + action->entry = entry->data; + loop = g_main_loop_ref(loop); + + g_idle_add(sync_one, action); + } +} diff --git a/test/data/alpha_as_cpuinfo b/test/data/alpha_as_cpuinfo deleted file mode 100644 index 698b3d4d..00000000 --- a/test/data/alpha_as_cpuinfo +++ /dev/null @@ -1,19 +0,0 @@ -cpu : Alpha -cpu model : EV56 -cpu variation : 7 -cpu revision : 0 -cpu serial number : -system type : Rawhide -system variation : Tincup -system revision : 0 -system serial number : BT00000000 -cycle frequency [Hz] : 531914893 -timer frequency [Hz] : 1200.00 -page size [bytes] : 8192 -phys. address bits : 40 -max. addr. space # : 127 -BogoMIPS : 1063.92 -kernel unaligned acc : 0 (pc=0,va=0) -user unaligned acc : 0 (pc=0,va=0) -platform string : AlphaServer 1200 5/533 4MB -cpus detected : 1 diff --git a/test/data/arm_asus_android_cpuinfo b/test/data/arm_asus_android_cpuinfo deleted file mode 100644 index bc1e811d..00000000 --- a/test/data/arm_asus_android_cpuinfo +++ /dev/null @@ -1,17 +0,0 @@ -Processor : AArch64 Processor rev 1 (aarch64) -processor : 0 -processor : 1 -processor : 2 -processor : 3 -processor : 4 -processor : 5 -processor : 6 -processor : 7 -Features : fp asimd evtstrm aes pmull sha1 sha2 crc32 -CPU implementer : 0x41 -CPU architecture: 8 -CPU variant : 0x0 -CPU part : 0xd03 -CPU revision : 1 - -Hardware : Qualcomm Technologies, Inc MSM8939 diff --git a/test/data/arm_jetsontx2_cpuinfo b/test/data/arm_jetsontx2_cpuinfo deleted file mode 100644 index 0ac0480b..00000000 --- a/test/data/arm_jetsontx2_cpuinfo +++ /dev/null @@ -1,61 +0,0 @@ -processor : 0 -model name : ARMv8 Processor rev 3 (v8l) -BogoMIPS : 62.50 -Features : fp asimd evtstrm aes pmull sha1 sha2 crc32 -CPU implementer : 0x41 -CPU architecture: 8 -CPU variant : 0x1 -CPU part : 0xd07 -CPU revision : 3 - -processor : 1 -model name : ARMv8 Processor rev 0 (v8l) -BogoMIPS : 62.50 -Features : fp asimd evtstrm aes pmull sha1 sha2 crc32 -CPU implementer : 0x4e -CPU architecture: 8 -CPU variant : 0x0 -CPU part : 0x003 -CPU revision : 0 -MTS version : 37620520 - -processor : 2 -model name : ARMv8 Processor rev 0 (v8l) -BogoMIPS : 62.50 -Features : fp asimd evtstrm aes pmull sha1 sha2 crc32 -CPU implementer : 0x4e -CPU architecture: 8 -CPU variant : 0x0 -CPU part : 0x003 -CPU revision : 0 -MTS version : 37620520 - -processor : 3 -model name : ARMv8 Processor rev 3 (v8l) -BogoMIPS : 62.50 -Features : fp asimd evtstrm aes pmull sha1 sha2 crc32 -CPU implementer : 0x41 -CPU architecture: 8 -CPU variant : 0x1 -CPU part : 0xd07 -CPU revision : 3 - -processor : 4 -model name : ARMv8 Processor rev 3 (v8l) -BogoMIPS : 62.50 -Features : fp asimd evtstrm aes pmull sha1 sha2 crc32 -CPU implementer : 0x41 -CPU architecture: 8 -CPU variant : 0x1 -CPU part : 0xd07 -CPU revision : 3 - -processor : 5 -model name : ARMv8 Processor rev 3 (v8l) -BogoMIPS : 62.50 -Features : fp asimd evtstrm aes pmull sha1 sha2 crc32 -CPU implementer : 0x41 -CPU architecture: 8 -CPU variant : 0x1 -CPU part : 0xd07 -CPU revision : 3 diff --git a/test/data/arm_marv_cpuinfo b/test/data/arm_marv_cpuinfo deleted file mode 100644 index e48bebc6..00000000 --- a/test/data/arm_marv_cpuinfo +++ /dev/null @@ -1,9 +0,0 @@ -Processor : Feroceon 88FR131 rev 1 (v5l) -BogoMIPS : 1192.75 -Features : swp half fastmult edsp -CPU implementer : 0x56 -CPU architecture: 5TE -CPU variant : 0x2 -CPU part : 0x131 -CPU revision : 1 - diff --git a/test/data/arm_rpi3_aarch32_cpuinfo b/test/data/arm_rpi3_aarch32_cpuinfo deleted file mode 100644 index 5092ba9b..00000000 --- a/test/data/arm_rpi3_aarch32_cpuinfo +++ /dev/null @@ -1,44 +0,0 @@ -processor : 0 -model name : ARMv7 Processor rev 4 (v7l) -BogoMIPS : 38.40 -Features : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32 -CPU implementer : 0x41 -CPU architecture: 7 -CPU variant : 0x0 -CPU part : 0xd03 -CPU revision : 4 - -processor : 1 -model name : ARMv7 Processor rev 4 (v7l) -BogoMIPS : 38.40 -Features : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32 -CPU implementer : 0x41 -CPU architecture: 7 -CPU variant : 0x0 -CPU part : 0xd03 -CPU revision : 4 - -processor : 2 -model name : ARMv7 Processor rev 4 (v7l) -BogoMIPS : 38.40 -Features : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32 -CPU implementer : 0x41 -CPU architecture: 7 -CPU variant : 0x0 -CPU part : 0xd03 -CPU revision : 4 - -processor : 3 -model name : ARMv7 Processor rev 4 (v7l) -BogoMIPS : 38.40 -Features : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32 -CPU implementer : 0x41 -CPU architecture: 7 -CPU variant : 0x0 -CPU part : 0xd03 -CPU revision : 4 - -Hardware : BCM2835 -Revision : a02082 -Serial : 00000000d5442118 - diff --git a/test/data/arm_rpi3_aarch64_cpuinfo b/test/data/arm_rpi3_aarch64_cpuinfo deleted file mode 100644 index f7aef079..00000000 --- a/test/data/arm_rpi3_aarch64_cpuinfo +++ /dev/null @@ -1,36 +0,0 @@ -processor : 0 -BogoMIPS : 38.40 -Features : fp asimd evtstrm crc32 cpuid -CPU implementer : 0x41 -CPU architecture: 8 -CPU variant : 0x0 -CPU part : 0xd03 -CPU revision : 4 - -processor : 1 -BogoMIPS : 38.40 -Features : fp asimd evtstrm crc32 cpuid -CPU implementer : 0x41 -CPU architecture: 8 -CPU variant : 0x0 -CPU part : 0xd03 -CPU revision : 4 - -processor : 2 -BogoMIPS : 38.40 -Features : fp asimd evtstrm crc32 cpuid -CPU implementer : 0x41 -CPU architecture: 8 -CPU variant : 0x0 -CPU part : 0xd03 -CPU revision : 4 - -processor : 3 -BogoMIPS : 38.40 -Features : fp asimd evtstrm crc32 cpuid -CPU implementer : 0x41 -CPU architecture: 8 -CPU variant : 0x0 -CPU part : 0xd03 -CPU revision : 4 - diff --git a/test/data/ia64_x2_cpuinfo b/test/data/ia64_x2_cpuinfo deleted file mode 100644 index f355d80e..00000000 --- a/test/data/ia64_x2_cpuinfo +++ /dev/null @@ -1,27 +0,0 @@ -processor : 0 -vendor : GenuineIntel -arch : IA-64 -family : Itanium -model : 0 -revision : 6 -archrev : 0 -features : standard -cpu number : 0 -cpu regs : 4 -cpu MHz : 733.433976 -itc MHz : 733.433976 -BogoMIPS : 517.99 - -processor : 1 -vendor : GenuineIntel -arch : IA-64 -family : Itanium -model : 0 -revision : 6 -archrev : 0 -features : standard -cpu number : 0 -cpu regs : 4 -cpu MHz : 733.433976 -itc MHz : 733.433976 -BogoMIPS : 729.80 diff --git a/test/data/m68k_sun3_cpuinfo b/test/data/m68k_sun3_cpuinfo deleted file mode 100644 index 8c9c8d54..00000000 --- a/test/data/m68k_sun3_cpuinfo +++ /dev/null @@ -1,6 +0,0 @@ -CPU: 68020 -MMU: Sun-3 -FPU: 68881 -Clocking: 19.9MHz -BogoMips: 4.97 -Calibration: 24896 loops diff --git a/test/data/mips_loongson_cpuinfo b/test/data/mips_loongson_cpuinfo deleted file mode 100644 index f2ee0e90..00000000 --- a/test/data/mips_loongson_cpuinfo +++ /dev/null @@ -1,13 +0,0 @@ -system type : gdium -processor : 0 -cpu model : ICT Loongson-2 V0.3 FPU V0.1 -BogoMIPS : 598.60 -wait instruction : no -microsecond timers : yes -tlb_entries : 64 -extra interrupt vector : no -hardware watchpoint : no -ASEs implemented : -shadow register sets : 1 -VCED exceptions : not available -VCEI exceptions : not available diff --git a/test/data/parisc_hppa_fortex4_cpuinfo b/test/data/parisc_hppa_fortex4_cpuinfo deleted file mode 100644 index 79efffc2..00000000 --- a/test/data/parisc_hppa_fortex4_cpuinfo +++ /dev/null @@ -1,59 +0,0 @@ -processor : 0 -cpu family : PA-RISC 2.0 -cpu : PA8500 (PCX-W) -cpu MHz : 440.000000 -model : 9000/785/J7000 -model name : Forte W 4-way -hversion : 0x00005bf0 -sversion : 0x00000491 -I-cache : 512 KB -D-cache : 1024 KB (WB) -ITLB entries : 160 -DTLB entries : 160 - shared with ITLB -bogomips : 878.18 -software id : 2002742099 - -processor : 1 -cpu family : PA-RISC 2.0 -cpu : PA8500 (PCX-W) -cpu MHz : 440.000000 -model : 9000/785/J7000 -model name : Forte W 4-way -hversion : 0x00005bf0 -sversion : 0x00000491 -I-cache : 512 KB -D-cache : 1024 KB (WB) -ITLB entries : 160 -DTLB entries : 160 - shared with ITLB -bogomips : 878.18 -software id : 2002742099 - -processor : 2 -cpu family : PA-RISC 2.0 -cpu : PA8500 (PCX-W) -cpu MHz : 440.000000 -model : 9000/785/J7000 -model name : Forte W 4-way -hversion : 0x00005bf0 -sversion : 0x00000491 -I-cache : 512 KB -D-cache : 1024 KB (WB) -ITLB entries : 160 -DTLB entries : 160 - shared with ITLB -bogomips : 878.18 -software id : 2002742099 - -processor : 3 -cpu family : PA-RISC 2.0 -cpu : PA8500 (PCX-W) -cpu MHz : 440.000000 -model : 9000/785/J7000 -model name : Forte W 4-way -hversion : 0x00005bf0 -sversion : 0x00000491 -I-cache : 512 KB -D-cache : 1024 KB (WB) -ITLB entries : 160 -DTLB entries : 160 - shared with ITLB -bogomips : 878.18 -software id : 2002742099 diff --git a/test/data/power8_cpuinfo b/test/data/power8_cpuinfo deleted file mode 100644 index 0544168b..00000000 --- a/test/data/power8_cpuinfo +++ /dev/null @@ -1,325 +0,0 @@ -processor : 0 -cpu : POWER8 (raw), altivec supported -clock : 3857.000000MHz -revision : 2.0 (pvr 004d 0200) - -processor : 1 -cpu : POWER8 (raw), altivec supported -clock : 3857.000000MHz -revision : 2.0 (pvr 004d 0200) - -processor : 2 -cpu : POWER8 (raw), altivec supported -clock : 3857.000000MHz -revision : 2.0 (pvr 004d 0200) - -processor : 3 -cpu : POWER8 (raw), altivec supported -clock : 3857.000000MHz -revision : 2.0 (pvr 004d 0200) - -processor : 4 -cpu : POWER8 (raw), altivec supported -clock : 3857.000000MHz -revision : 2.0 (pvr 004d 0200) - -processor : 5 -cpu : POWER8 (raw), altivec supported -clock : 3857.000000MHz -revision : 2.0 (pvr 004d 0200) - -processor : 6 -cpu : POWER8 (raw), altivec supported -clock : 3857.000000MHz -revision : 2.0 (pvr 004d 0200) - -processor : 7 -cpu : POWER8 (raw), altivec supported -clock : 3857.000000MHz -revision : 2.0 (pvr 004d 0200) - -processor : 8 -cpu : POWER8 (raw), altivec supported -clock : 2061.000000MHz -revision : 2.0 (pvr 004d 0200) - -processor : 9 -cpu : POWER8 (raw), altivec supported -clock : 2061.000000MHz -revision : 2.0 (pvr 004d 0200) - -processor : 10 -cpu : POWER8 (raw), altivec supported -clock : 2061.000000MHz -revision : 2.0 (pvr 004d 0200) - -processor : 11 -cpu : POWER8 (raw), altivec supported -clock : 2061.000000MHz -revision : 2.0 (pvr 004d 0200) - -processor : 12 -cpu : POWER8 (raw), altivec supported -clock : 2061.000000MHz -revision : 2.0 (pvr 004d 0200) - -processor : 13 -cpu : POWER8 (raw), altivec supported -clock : 2061.000000MHz -revision : 2.0 (pvr 004d 0200) - -processor : 14 -cpu : POWER8 (raw), altivec supported -clock : 2061.000000MHz -revision : 2.0 (pvr 004d 0200) - -processor : 15 -cpu : POWER8 (raw), altivec supported -clock : 2061.000000MHz -revision : 2.0 (pvr 004d 0200) - -processor : 16 -cpu : POWER8 (raw), altivec supported -clock : 3059.000000MHz -revision : 2.0 (pvr 004d 0200) - -processor : 17 -cpu : POWER8 (raw), altivec supported -clock : 3059.000000MHz -revision : 2.0 (pvr 004d 0200) - -processor : 18 -cpu : POWER8 (raw), altivec supported -clock : 3059.000000MHz -revision : 2.0 (pvr 004d 0200) - -processor : 19 -cpu : POWER8 (raw), altivec supported -clock : 3059.000000MHz -revision : 2.0 (pvr 004d 0200) - -processor : 20 -cpu : POWER8 (raw), altivec supported -clock : 3059.000000MHz -revision : 2.0 (pvr 004d 0200) - -processor : 21 -cpu : POWER8 (raw), altivec supported -clock : 3059.000000MHz -revision : 2.0 (pvr 004d 0200) - -processor : 22 -cpu : POWER8 (raw), altivec supported -clock : 3059.000000MHz -revision : 2.0 (pvr 004d 0200) - -processor : 23 -cpu : POWER8 (raw), altivec supported -clock : 3059.000000MHz -revision : 2.0 (pvr 004d 0200) - -processor : 24 -cpu : POWER8 (raw), altivec supported -clock : 2061.000000MHz -revision : 2.0 (pvr 004d 0200) - -processor : 25 -cpu : POWER8 (raw), altivec supported -clock : 2061.000000MHz -revision : 2.0 (pvr 004d 0200) - -processor : 26 -cpu : POWER8 (raw), altivec supported -clock : 2061.000000MHz -revision : 2.0 (pvr 004d 0200) - -processor : 27 -cpu : POWER8 (raw), altivec supported -clock : 2061.000000MHz -revision : 2.0 (pvr 004d 0200) - -processor : 28 -cpu : POWER8 (raw), altivec supported -clock : 2061.000000MHz -revision : 2.0 (pvr 004d 0200) - -processor : 29 -cpu : POWER8 (raw), altivec supported -clock : 2061.000000MHz -revision : 2.0 (pvr 004d 0200) - -processor : 30 -cpu : POWER8 (raw), altivec supported -clock : 2061.000000MHz -revision : 2.0 (pvr 004d 0200) - -processor : 31 -cpu : POWER8 (raw), altivec supported -clock : 2061.000000MHz -revision : 2.0 (pvr 004d 0200) - -processor : 32 -cpu : POWER8 (raw), altivec supported -clock : 2061.000000MHz -revision : 2.0 (pvr 004d 0200) - -processor : 33 -cpu : POWER8 (raw), altivec supported -clock : 2061.000000MHz -revision : 2.0 (pvr 004d 0200) - -processor : 34 -cpu : POWER8 (raw), altivec supported -clock : 2061.000000MHz -revision : 2.0 (pvr 004d 0200) - -processor : 35 -cpu : POWER8 (raw), altivec supported -clock : 2061.000000MHz -revision : 2.0 (pvr 004d 0200) - -processor : 36 -cpu : POWER8 (raw), altivec supported -clock : 2061.000000MHz -revision : 2.0 (pvr 004d 0200) - -processor : 37 -cpu : POWER8 (raw), altivec supported -clock : 2061.000000MHz -revision : 2.0 (pvr 004d 0200) - -processor : 38 -cpu : POWER8 (raw), altivec supported -clock : 2061.000000MHz -revision : 2.0 (pvr 004d 0200) - -processor : 39 -cpu : POWER8 (raw), altivec supported -clock : 2061.000000MHz -revision : 2.0 (pvr 004d 0200) - -processor : 40 -cpu : POWER8 (raw), altivec supported -clock : 2061.000000MHz -revision : 2.0 (pvr 004d 0200) - -processor : 41 -cpu : POWER8 (raw), altivec supported -clock : 2061.000000MHz -revision : 2.0 (pvr 004d 0200) - -processor : 42 -cpu : POWER8 (raw), altivec supported -clock : 2061.000000MHz -revision : 2.0 (pvr 004d 0200) - -processor : 43 -cpu : POWER8 (raw), altivec supported -clock : 2061.000000MHz -revision : 2.0 (pvr 004d 0200) - -processor : 44 -cpu : POWER8 (raw), altivec supported -clock : 2061.000000MHz -revision : 2.0 (pvr 004d 0200) - -processor : 45 -cpu : POWER8 (raw), altivec supported -clock : 2061.000000MHz -revision : 2.0 (pvr 004d 0200) - -processor : 46 -cpu : POWER8 (raw), altivec supported -clock : 2061.000000MHz -revision : 2.0 (pvr 004d 0200) - -processor : 47 -cpu : POWER8 (raw), altivec supported -clock : 2061.000000MHz -revision : 2.0 (pvr 004d 0200) - -processor : 48 -cpu : POWER8 (raw), altivec supported -clock : 2061.000000MHz -revision : 2.0 (pvr 004d 0200) - -processor : 49 -cpu : POWER8 (raw), altivec supported -clock : 2061.000000MHz -revision : 2.0 (pvr 004d 0200) - -processor : 50 -cpu : POWER8 (raw), altivec supported -clock : 2061.000000MHz -revision : 2.0 (pvr 004d 0200) - -processor : 51 -cpu : POWER8 (raw), altivec supported -clock : 2061.000000MHz -revision : 2.0 (pvr 004d 0200) - -processor : 52 -cpu : POWER8 (raw), altivec supported -clock : 2061.000000MHz -revision : 2.0 (pvr 004d 0200) - -processor : 53 -cpu : POWER8 (raw), altivec supported -clock : 2061.000000MHz -revision : 2.0 (pvr 004d 0200) - -processor : 54 -cpu : POWER8 (raw), altivec supported -clock : 2061.000000MHz -revision : 2.0 (pvr 004d 0200) - -processor : 55 -cpu : POWER8 (raw), altivec supported -clock : 2061.000000MHz -revision : 2.0 (pvr 004d 0200) - -processor : 56 -cpu : POWER8 (raw), altivec supported -clock : 2061.000000MHz -revision : 2.0 (pvr 004d 0200) - -processor : 57 -cpu : POWER8 (raw), altivec supported -clock : 2061.000000MHz -revision : 2.0 (pvr 004d 0200) - -processor : 58 -cpu : POWER8 (raw), altivec supported -clock : 2061.000000MHz -revision : 2.0 (pvr 004d 0200) - -processor : 59 -cpu : POWER8 (raw), altivec supported -clock : 2061.000000MHz -revision : 2.0 (pvr 004d 0200) - -processor : 60 -cpu : POWER8 (raw), altivec supported -clock : 2061.000000MHz -revision : 2.0 (pvr 004d 0200) - -processor : 61 -cpu : POWER8 (raw), altivec supported -clock : 2061.000000MHz -revision : 2.0 (pvr 004d 0200) - -processor : 62 -cpu : POWER8 (raw), altivec supported -clock : 2061.000000MHz -revision : 2.0 (pvr 004d 0200) - -processor : 63 -cpu : POWER8 (raw), altivec supported -clock : 2061.000000MHz -revision : 2.0 (pvr 004d 0200) - -timebase : 512000000 -platform : PowerNV -model : 8335-GCA -machine : PowerNV 8335-GCA -firmware : OPAL v3 diff --git a/test/data/ppc_g5_cpuinfo b/test/data/ppc_g5_cpuinfo deleted file mode 100644 index f326316a..00000000 --- a/test/data/ppc_g5_cpuinfo +++ /dev/null @@ -1,30 +0,0 @@ -processor : 0 -cpu : PPC970MP, altivec supported -clock : 1250.000000MHz -revision : 1.1 (pvr 0044 0101) - -processor : 1 -cpu : PPC970MP, altivec supported -clock : 1250.000000MHz -revision : 1.1 (pvr 0044 0101) - -processor : 2 -cpu : PPC970MP, altivec supported -clock : 1250.000000MHz -revision : 1.1 (pvr 0044 0101) - -processor : 3 -cpu : PPC970MP, altivec supported -clock : 1250.000000MHz -revision : 1.1 (pvr 0044 0101) - -timebase : 33333333 -platform : PowerMac -model : PowerMac11,2 -machine : PowerMac11,2 -motherboard : PowerMac11,2 MacRISC4 Power Macintosh -detected as : 337 (PowerMac G5 Dual Core) -pmac flags : 00000000 -L2 cache : 1024K unified -pmac-generation : NewWorld - diff --git a/test/data/riscv_fake_cpuinfo b/test/data/riscv_fake_cpuinfo deleted file mode 100644 index 3f23c5e8..00000000 --- a/test/data/riscv_fake_cpuinfo +++ /dev/null @@ -1,2 +0,0 @@ -hart : 0 -isa : rv32a4p0c2pdfimsu_Xargle2P1_SXbargle diff --git a/test/data/riscv_sim_cpuinfo b/test/data/riscv_sim_cpuinfo deleted file mode 100644 index a87cdecb..00000000 --- a/test/data/riscv_sim_cpuinfo +++ /dev/null @@ -1,2 +0,0 @@ -hart : 0 -isa : RV64G diff --git a/test/data/rpi1_raspbian.dts b/test/data/rpi1_raspbian.dts deleted file mode 100644 index ce50cba4..00000000 --- a/test/data/rpi1_raspbian.dts +++ /dev/null @@ -1,758 +0,0 @@ -/dts-v1/; - -/ { - compatible = "brcm,bcm2835"; - serial-number = "00000000925ea123"; - model = "Raspberry Pi Model B Rev 1"; - memreserve = <0xf000000 0x1000000>; - interrupt-parent = <0x1>; - #address-cells = <0x1>; - #size-cells = <0x1>; - - clocks { - compatible = "simple-bus"; - #address-cells = <0x1>; - #size-cells = <0x0>; - - clock@3 { - compatible = "fixed-clock"; - #clock-cells = <0x0>; - phandle = <0x2>; - reg = <0x3>; - clock-output-names = "osc"; - clock-frequency = <0x124f800>; - }; - - clock@4 { - compatible = "fixed-clock"; - #clock-cells = <0x0>; - phandle = <0x11>; - reg = <0x4>; - clock-output-names = "otg"; - clock-frequency = <0x1c9c3800>; - }; - }; - - __overrides__ { - i2c1 = [00 00 00 1b 73 74 61 74 75 73 00]; - i2c_vc = [00 00 00 1b 73 74 61 74 75 73 00]; - sd_overclock = "", "", "", " brcm,overclock-50:0"; - i2c0_baudrate = [00 00 00 1a 63 6c 6f 63 6b 2d 66 72 65 71 75 65 6e 63 79 3a 30 00]; - sd_pio_limit = "", "", "", " brcm,pio-limit:0"; - act_led_trigger = [00 00 00 1c 6c 69 6e 75 78 2c 64 65 66 61 75 6c 74 2d 74 72 69 67 67 65 72 00]; - audio = [00 00 00 1d 73 74 61 74 75 73 00]; - sd_debug = "", "", "", " brcm,debug"; - cache_line_size = [00 00 00 15 63 61 63 68 65 2d 6c 69 6e 65 2d 73 69 7a 65 3a 30 00]; - i2c1_baudrate = [00 00 00 1b 63 6c 6f 63 6b 2d 66 72 65 71 75 65 6e 63 79 3a 30 00]; - spi = [00 00 00 19 73 74 61 74 75 73 00]; - i2c_arm = [00 00 00 1a 73 74 61 74 75 73 00]; - uart0 = [00 00 00 16 73 74 61 74 75 73 00]; - i2c2_iknowwhatimdoing = [00 00 00 10 73 74 61 74 75 73 00]; - i2s = [00 00 00 18 73 74 61 74 75 73 00]; - i2c0 = [00 00 00 1a 73 74 61 74 75 73 00]; - watchdog = [00 00 00 1e 73 74 61 74 75 73 00]; - i2c_baudrate = [00 00 00 1a 63 6c 6f 63 6b 2d 66 72 65 71 75 65 6e 63 79 3a 30 00]; - i2c_vc_baudrate = [00 00 00 1b 63 6c 6f 63 6b 2d 66 72 65 71 75 65 6e 63 79 3a 30 00]; - act_led_activelow = <0x1c 0x6770696f 0x733a3800>; - i2c2_baudrate = [00 00 00 10 63 6c 6f 63 6b 2d 66 72 65 71 75 65 6e 63 79 3a 30 00]; - sd_force_pio = "", "", "", " brcm,force-pio?"; - uart1 = [00 00 00 17 73 74 61 74 75 73 00]; - i2c_arm_baudrate = [00 00 00 1a 63 6c 6f 63 6b 2d 66 72 65 71 75 65 6e 63 79 3a 30 00]; - random = [00 00 00 1f 73 74 61 74 75 73 00]; - act_led_gpio = <0x1c 0x6770696f 0x733a3400>; - i2c = [00 00 00 1a 73 74 61 74 75 73 00]; - }; - - system { - linux,serial = <0x0 0x925b29dd>; - linux,revision = <0x2>; - }; - - __symbols__ { - pwm = "/soc/pwm@7e20c000"; - clk_usb = "/clocks/clock@4"; - pixelvalve0 = "/soc/pixelvalve@7e206000"; - intc = "/soc/interrupt-controller@7e00b200"; - spi2 = "/soc/spi@7e2150c0"; - dsi1 = "/soc/dsi@7e700000"; - clocks = "/soc/cprman@7e101000"; - i2c1 = "/soc/i2c@7e804000"; - i2c_vc = "/soc/i2c@7e804000"; - firmwarekms = "/soc/firmwarekms@7e600000"; - smi = "/soc/smi@7e600000"; - gpu = "/soc/gpu"; - spi0 = "/soc/spi@7e204000"; - thermal = "/soc/thermal"; - vdd_5v0_reg = "/fixedregulator_5v0"; - vchiq = "/soc/vchiq"; - sdhost = "/soc/sdhost@7e202000"; - aux = "/soc/aux@0x7e215000"; - gpio = "/soc/gpio@7e200000"; - dpi = "/soc/dpi@7e208000"; - v3d = "/soc/v3d@7ec00000"; - audio = "/soc/audio"; - vdd_3v3_reg = "/fixedregulator_3v3"; - dma = "/soc/dma@7e007000"; - spidev1 = "/soc/spi@7e204000/spidev@1"; - vc4 = "/soc/gpu"; - power = "/soc/power"; - soc = "/soc"; - leds = "/leds"; - i2s_pins = "/soc/gpio@7e200000/i2s"; - firmware = "/soc/firmware"; - cprman = "/soc/cprman@7e101000"; - mmc = "/soc/mmc@7e300000"; - pixelvalve1 = "/soc/pixelvalve@7e207000"; - spi = "/soc/spi@7e204000"; - spi0_pins = "/soc/gpio@7e200000/spi0_pins"; - pitouchscreen_touch = "/soc/i2cdsi/bridge@38"; - i2c_arm = "/soc/i2c@7e205000"; - clk_osc = "/clocks/clock@3"; - ethernet = "/soc/usb@7e980000/usb1@1/usbether@1"; - uart0 = "/soc/serial@7e201000"; - i2c1_pins = "/soc/gpio@7e200000/i2c1"; - fb = "/soc/fb"; - sdhost_pins = "/soc/gpio@7e200000/sdhost_pins"; - i2c2 = "/soc/i2c@7e805000"; - i2s = "/soc/i2s@7e203000"; - spi1 = "/soc/spi@7e215080"; - usb = "/soc/usb@7e980000"; - dsi0 = "/soc/dsi@7e209000"; - audio_pins = "/soc/gpio@7e200000/audio_pins"; - i2c0 = "/soc/i2c@7e205000"; - i2c0_pins = "/soc/gpio@7e200000/i2c0"; - watchdog = "/soc/watchdog@7e100000"; - vec = "/soc/vec@7e806000"; - i2c_dsi = "/soc/i2cdsi"; - pitouchscreen_bridge = "/soc/i2cdsi/bridge@45"; - spi0_cs_pins = "/soc/gpio@7e200000/spi0_cs_pins"; - sound = "/soc/sound"; - hvs = "/soc/hvs@7e400000"; - act_led = "/leds/act"; - spidev0 = "/soc/spi@7e204000/spidev@0"; - hdmi = "/soc/hdmi@7e902000"; - pixelvalve2 = "/soc/pixelvalve@7e807000"; - mailbox = "/soc/mailbox@7e00b880"; - uart1 = "/soc/serial@7e215040"; - random = "/soc/rng@7e104000"; - i2c = "/soc/i2c@7e205000"; - }; - - soc { - compatible = "simple-bus"; - ranges = <0x7e000000 0x20000000 0x2000000>; - #address-cells = <0x1>; - #size-cells = <0x1>; - phandle = <0x21>; - dma-ranges = <0x40000000 0x0 0x20000000>; - - serial@7e201000 { - compatible = "brcm,bcm2835-pl011", "arm,pl011", "arm,primecell"; - clocks = <0x6 0x13 0x6 0x14>; - clock-names = "uartclk", "apb_pclk"; - status = "okay"; - interrupts = <0x2 0x19>; - phandle = <0x16>; - arm,primecell-periphid = <0x241011>; - reg = <0x7e201000 0x1000>; - }; - - pixelvalve@7e207000 { - compatible = "brcm,bcm2835-pixelvalve1"; - status = "disabled"; - interrupts = <0x2 0xe>; - phandle = <0x25>; - reg = <0x7e207000 0x100>; - }; - - cprman@7e101000 { - compatible = "brcm,bcm2835-cprman"; - clocks = <0x2 0x3 0x0 0x3 0x1 0x3 0x2 0x4 0x0 0x4 0x1 0x4 0x2>; - firmware = <0x5>; - #clock-cells = <0x1>; - phandle = <0x6>; - reg = <0x7e101000 0x2000>; - }; - - hvs@7e400000 { - compatible = "brcm,bcm2835-hvs"; - status = "disabled"; - interrupts = <0x2 0x1>; - phandle = <0x29>; - reg = <0x7e400000 0x6000>; - }; - - gpio@7e200000 { - compatible = "brcm,bcm2835-gpio"; - gpio-controller; - #interrupt-cells = <0x2>; - interrupts = <0x2 0x11 0x2 0x12>; - phandle = <0x9>; - reg = <0x7e200000 0xb4>; - #gpio-cells = <0x2>; - interrupt-controller; - - i2c1 { - brcm,pins = <0x2 0x3>; - phandle = <0xf>; - brcm,function = <0x4>; - }; - - spi0_pins { - brcm,pins = <0x9 0xa 0xb>; - phandle = <0xa>; - brcm,function = <0x4>; - }; - - sdhost_pins { - brcm,pins = <0x30 0x31 0x32 0x33 0x34 0x35>; - phandle = <0x12>; - brcm,function = <0x4>; - }; - - i2s { - brcm,pins = <0x1c 0x1d 0x1e 0x1f>; - phandle = <0x8>; - brcm,function = <0x6>; - }; - - audio_pins { - brcm,pins = <0x28 0x2d>; - phandle = <0x14>; - brcm,function = <0x4>; - }; - - i2c0 { - brcm,pins = <0x0 0x1>; - phandle = <0xc>; - brcm,function = <0x4>; - }; - - spi0_cs_pins { - brcm,pins = <0x8 0x7>; - phandle = <0xb>; - brcm,function = <0x1>; - }; - }; - - pixelvalve@7e807000 { - compatible = "brcm,bcm2835-pixelvalve2"; - status = "disabled"; - interrupts = <0x2 0xa>; - phandle = <0x2b>; - reg = <0x7e807000 0x100>; - }; - - v3d@7ec00000 { - power-domains = <0xe 0xa>; - compatible = "brcm,vc4-v3d"; - status = "disabled"; - interrupts = <0x1 0xa>; - phandle = <0x2f>; - reg = <0x7ec00000 0x1000>; - }; - - gpu { - compatible = "brcm,bcm2835-vc4"; - status = "disabled"; - phandle = <0x30>; - }; - - mmc@7e300000 { - compatible = "brcm,bcm2835-mmc"; - clocks = <0x6 0x1c>; - status = "disabled"; - interrupts = <0x2 0x1e>; - brcm,overclock-50 = <0x0>; - dma-names = "rx-tx"; - phandle = <0x32>; - reg = <0x7e300000 0x100>; - dmas = <0x7 0xb>; - }; - - arm-pmu { - compatible = "arm,arm1176-pmu"; - }; - - thermal { - compatible = "brcm,bcm2835-thermal"; - firmware = <0x5>; - phandle = <0x39>; - }; - - spi@7e204000 { - compatible = "brcm,bcm2835-spi"; - clocks = <0x6 0x14>; - status = "disabled"; - #address-cells = <0x1>; - interrupts = <0x2 0x16>; - cs-gpios = <0x9 0x8 0x1 0x9 0x7 0x1>; - #size-cells = <0x0>; - dma-names = "tx", "rx"; - phandle = <0x19>; - reg = <0x7e204000 0x1000>; - pinctrl-0 = <0xa 0xb>; - dmas = <0x7 0x6 0x7 0x7>; - pinctrl-names = "default"; - - spidev@1 { - compatible = "spidev"; - #address-cells = <0x1>; - #size-cells = <0x0>; - phandle = <0x23>; - reg = <0x1>; - spi-max-frequency = <0x7a120>; - }; - - spidev@0 { - compatible = "spidev"; - #address-cells = <0x1>; - #size-cells = <0x0>; - phandle = <0x22>; - reg = <0x0>; - spi-max-frequency = <0x7a120>; - }; - }; - - i2cdsi { - gpios = <0x9 0x2 0x0 0x9 0x3 0x0>; - compatible = "i2c-gpio"; - status = "disabled"; - #address-cells = <0x1>; - #size-cells = <0x0>; - phandle = <0x35>; - - bridge@45 { - compatible = "raspberrypi,touchscreen-bridge-i2c"; - phandle = <0x36>; - reg = <0x45>; - }; - - bridge@38 { - compatible = "raspberrypi,touchscreen-ts-i2c"; - phandle = <0x37>; - reg = <0x38>; - }; - }; - - vchiq { - compatible = "brcm,bcm2835-vchiq"; - cache-line-size = <0x20>; - firmware = <0x5>; - interrupts = <0x0 0x2>; - phandle = <0x15>; - reg = <0x7e00b840 0xf>; - }; - - i2c@7e804000 { - compatible = "brcm,bcm2835-i2c"; - clocks = <0x6 0x14>; - status = "disabled"; - #address-cells = <0x1>; - interrupts = <0x2 0x15>; - #size-cells = <0x0>; - phandle = <0x1b>; - reg = <0x7e804000 0x1000>; - clock-frequency = <0x186a0>; - pinctrl-0 = <0xf>; - pinctrl-names = "default"; - }; - - audio { - brcm,pwm-channels = <0x8>; - compatible = "brcm,bcm2835-audio"; - status = "okay"; - phandle = <0x1d>; - pinctrl-0 = <0x14>; - pinctrl-names = "default"; - }; - - timer@7e003000 { - compatible = "brcm,bcm2835-system-timer"; - interrupts = <0x1 0x0 0x1 0x1 0x1 0x2 0x1 0x3>; - reg = <0x7e003000 0x1000>; - clock-frequency = <0xf4240>; - }; - - i2s@7e203000 { - compatible = "brcm,bcm2835-i2s"; - clocks = <0x6 0x1f>; - #sound-dai-cells = <0x0>; - status = "disabled"; - dma-names = "tx", "rx"; - phandle = <0x18>; - reg = <0x7e203000 0x24>; - pinctrl-0 = <0x8>; - dmas = <0x7 0x2 0x7 0x3>; - pinctrl-names = "default"; - }; - - mailbox@7e00b880 { - compatible = "brcm,bcm2835-mbox"; - #mbox-cells = <0x0>; - interrupts = <0x0 0x1>; - phandle = <0x13>; - reg = <0x7e00b880 0x40>; - }; - - gpiomem { - compatible = "brcm,bcm2835-gpiomem"; - reg = <0x7e200000 0x1000>; - }; - - vec@7e806000 { - compatible = "brcm,bcm2835-vec"; - clocks = <0x6 0x18>; - status = "disabled"; - interrupts = <0x2 0x1b>; - phandle = <0x2a>; - reg = <0x7e806000 0x1000>; - }; - - power { - compatible = "raspberrypi,bcm2835-power"; - firmware = <0x5>; - phandle = <0xe>; - #power-domain-cells = <0x1>; - }; - - pixelvalve@7e206000 { - compatible = "brcm,bcm2835-pixelvalve0"; - status = "disabled"; - interrupts = <0x2 0xd>; - phandle = <0x24>; - reg = <0x7e206000 0x100>; - }; - - firmware { - compatible = "raspberrypi,bcm2835-firmware"; - mboxes = <0x13>; - phandle = <0x5>; - }; - - dsi@7e209000 { - compatible = "brcm,bcm2835-dsi0"; - clocks = <0x6 0x20 0x6 0x2f 0x6 0x31>; - clock-names = "phy", "escape", "pixel"; - status = "disabled"; - #address-cells = <0x1>; - interrupts = <0x2 0x4>; - #size-cells = <0x0>; - #clock-cells = <0x1>; - phandle = <0x3>; - reg = <0x7e209000 0x78>; - clock-output-names = "dsi0_byte", "dsi0_ddr2", "dsi0_ddr"; - }; - - fb { - compatible = "brcm,bcm2708-fb"; - firmware = <0x5>; - status = "okay"; - phandle = <0x38>; - }; - - sdhost@7e202000 { - compatible = "brcm,bcm2835-sdhost"; - clocks = <0x6 0x14>; - brcm,pio-limit = <0x1>; - status = "okay"; - interrupts = <0x2 0x18>; - brcm,overclock-50 = <0x0>; - bus-width = <0x4>; - dma-names = "rx-tx"; - phandle = <0x20>; - reg = <0x7e202000 0x100>; - pinctrl-0 = <0x12>; - dmas = <0x7 0xd>; - pinctrl-names = "default"; - }; - - dpi@7e208000 { - compatible = "brcm,bcm2835-dpi"; - clocks = <0x6 0x14 0x6 0x2c>; - clock-names = "core", "pixel"; - status = "disabled"; - #address-cells = <0x1>; - #size-cells = <0x0>; - phandle = <0x31>; - reg = <0x7e208000 0x8c>; - }; - - hdmi@7e902000 { - power-domains = <0xe 0x5>; - compatible = "brcm,bcm2835-hdmi"; - clocks = <0x6 0x10 0x6 0x19>; - clock-names = "pixel", "hdmi"; - ddc = <0x10>; - status = "disabled"; - interrupts = <0x2 0x8 0x2 0x9>; - dma-names = "audio-rx"; - phandle = <0x2c>; - hpd-gpios = <0x9 0x2e 0x0>; - reg = <0x7e902000 0x600 0x7e808000 0x100>; - dmas = <0x7 0x11>; - }; - - pwm@7e20c000 { - compatible = "brcm,bcm2835-pwm"; - clocks = <0x6 0x1e>; - status = "disabled"; - assigned-clock-rates = <0x989680>; - assigned-clocks = <0x6 0x1e>; - phandle = <0x28>; - reg = <0x7e20c000 0x28>; - #pwm-cells = <0x2>; - }; - - watchdog@7e100000 { - compatible = "brcm,bcm2835-pm-wdt"; - phandle = <0x1e>; - reg = <0x7e100000 0x28>; - }; - - interrupt-controller@7e00b200 { - compatible = "brcm,bcm2835-armctrl-ic"; - #interrupt-cells = <0x2>; - phandle = <0x1>; - reg = <0x7e00b200 0x200>; - interrupt-controller; - }; - - dsi@7e700000 { - power-domains = <0xe 0x12>; - compatible = "brcm,bcm2835-dsi1"; - clocks = <0x6 0x23 0x6 0x30 0x6 0x32>; - clock-names = "phy", "escape", "pixel"; - status = "disabled"; - #address-cells = <0x1>; - interrupts = <0x2 0xc>; - #size-cells = <0x0>; - #clock-cells = <0x1>; - phandle = <0x4>; - reg = <0x7e700000 0x8c>; - clock-output-names = "dsi1_byte", "dsi1_ddr2", "dsi1_ddr"; - }; - - sound { - status = "disabled"; - phandle = <0x3a>; - }; - - i2c@7e205000 { - compatible = "brcm,bcm2835-i2c"; - clocks = <0x6 0x14>; - status = "disabled"; - #address-cells = <0x1>; - interrupts = <0x2 0x15>; - #size-cells = <0x0>; - phandle = <0x1a>; - reg = <0x7e205000 0x1000>; - clock-frequency = <0x186a0>; - pinctrl-0 = <0xc>; - pinctrl-names = "default"; - }; - - serial@7e215040 { - compatible = "brcm,bcm2835-aux-uart"; - clocks = <0xd 0x0>; - status = "disabled"; - interrupt-parent = <0xd>; - interrupts = <0x0>; - phandle = <0x17>; - reg = <0x7e215040 0x40>; - }; - - dma@7e007000 { - #dma-cells = <0x1>; - compatible = "brcm,bcm2835-dma"; - brcm,dma-channel-mask = <0x7f34>; - interrupts = <0x1 0x10 0x1 0x11 0x1 0x12 0x1 0x13 0x1 0x14 0x1 0x15 0x1 0x16 0x1 0x17 0x1 0x18 0x1 0x19 0x1 0x1a 0x1 0x1b 0x1 0x1b 0x1 0x1b 0x1 0x1b 0x1 0x1c>; - phandle = <0x7>; - reg = <0x7e007000 0xf00>; - interrupt-names = "dma0", "dma1", "dma2", "dma3", "dma4", "dma5", "dma6", "dma7", "dma8", "dma9", "dma10", "dma11", "dma12", "dma13", "dma14", "dma-shared-all"; - }; - - i2c@7e805000 { - compatible = "brcm,bcm2835-i2c"; - clocks = <0x6 0x14>; - status = "disabled"; - #address-cells = <0x1>; - interrupts = <0x2 0x15>; - #size-cells = <0x0>; - phandle = <0x10>; - reg = <0x7e805000 0x1000>; - clock-frequency = <0x186a0>; - }; - - spi@7e215080 { - compatible = "brcm,bcm2835-aux-spi"; - clocks = <0xd 0x1>; - status = "disabled"; - interrupt-parent = <0xd>; - #address-cells = <0x1>; - interrupts = <0x1>; - #size-cells = <0x0>; - phandle = <0x26>; - reg = <0x7e215080 0x40>; - }; - - aux@0x7e215000 { - compatible = "brcm,bcm2835-aux"; - clocks = <0x6 0x14>; - #interrupt-cells = <0x1>; - interrupts = <0x1 0x1d>; - #clock-cells = <0x1>; - phandle = <0xd>; - reg = <0x7e215000 0x8>; - interrupt-controller; - }; - - firmwarekms@7e600000 { - compatible = "raspberrypi,rpi-firmware-kms"; - status = "disabled"; - interrupts = <0x2 0x10>; - brcm,firmware = <0x5>; - phandle = <0x33>; - reg = <0x7e600000 0x100>; - }; - - rng@7e104000 { - compatible = "brcm,bcm2835-rng"; - phandle = <0x1f>; - reg = <0x7e104000 0x10>; - }; - - usb@7e980000 { - power-domains = <0xe 0x6>; - compatible = "brcm,bcm2708-usb"; - clocks = <0x11>; - clock-names = "otg"; - #address-cells = <0x1>; - interrupts = <0x2 0x0 0x1 0x9>; - #size-cells = <0x0>; - phandle = <0x2d>; - reg = <0x7e980000 0x10000 0x7e006000 0x1000>; - - usb1@1 { - compatible = "usb424,9512"; - #address-cells = <0x1>; - #size-cells = <0x0>; - reg = <0x1>; - - usbether@1 { - compatible = "usb424,ec00"; - local-mac-address = [04 05 07 01 02 03]; - phandle = <0x2e>; - reg = <0x1>; - }; - }; - }; - - smi@7e600000 { - compatible = "brcm,bcm2835-smi"; - clocks = <0x6 0x2a>; - status = "disabled"; - interrupts = <0x2 0x10>; - assigned-clock-rates = <0x7735940>; - dma-names = "rx-tx"; - assigned-clocks = <0x6 0x2a>; - phandle = <0x34>; - reg = <0x7e600000 0x100>; - dmas = <0x7 0x4>; - }; - - spi@7e2150c0 { - compatible = "brcm,bcm2835-aux-spi"; - clocks = <0xd 0x2>; - status = "disabled"; - interrupt-parent = <0xd>; - #address-cells = <0x1>; - interrupts = <0x2>; - #size-cells = <0x0>; - phandle = <0x27>; - reg = <0x7e2150c0 0x40>; - }; - }; - - leds { - compatible = "gpio-leds"; - phandle = <0x3d>; - - act { - gpios = <0x9 0x10 0x1>; - label = "led0"; - phandle = <0x1c>; - linux,default-trigger = "mmc0"; - }; - }; - - aliases { - intc = "/soc/interrupt-controller@7e00b200"; - spi2 = "/soc/spi@7e2150c0"; - i2c1 = "/soc/i2c@7e804000"; - i2c_vc = "/soc/i2c@7e804000"; - spi0 = "/soc/spi@7e204000"; - thermal = "/soc/thermal"; - vchiq = "/soc/vchiq"; - sdhost = "/soc/sdhost@7e202000"; - aux = "/soc/aux@0x7e215000"; - gpio = "/soc/gpio@7e200000"; - audio = "/soc/audio"; - dma = "/soc/dma@7e007000"; - soc = "/soc"; - leds = "/leds"; - mmc = "/soc/mmc@7e300000"; - serial1 = "/soc/serial@7e215040"; - i2c_arm = "/soc/i2c@7e205000"; - ethernet = "/soc/usb@7e980000/usb1@1/usbether@1"; - uart0 = "/soc/serial@7e201000"; - fb = "/soc/fb"; - i2c2 = "/soc/i2c@7e805000"; - i2s = "/soc/i2s@7e203000"; - spi1 = "/soc/spi@7e215080"; - usb = "/soc/usb@7e980000"; - i2c0 = "/soc/i2c@7e205000"; - watchdog = "/soc/watchdog@7e100000"; - sound = "/soc/sound"; - mailbox = "/soc/mailbox@7e00b880"; - uart1 = "/soc/serial@7e215040"; - random = "/soc/rng@7e104000"; - i2c = "/soc/i2c@7e205000"; - serial0 = "/soc/serial@7e201000"; - }; - - chosen { - bootargs = "bcm2708_fb.fbwidth=1680 bcm2708_fb.fbheight=1050 bcm2708_fb.fbdepth=16 bcm2708_fb.fbswap=1 vc_mem.mem_base=0xfa00000 vc_mem.mem_size=0x10000000 dwc_otg.lpm_enable=0 console=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p6 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait"; - kaslr-seed = <0xb1f76783 0x32e6766e>; - }; - - memory { - device_type = "memory"; - reg = <0x0 0xf000000>; - }; - - fixedregulator_3v3 { - compatible = "regulator-fixed"; - phandle = <0x3c>; - regulator-min-microvolt = <0x325aa0>; - regulator-max-microvolt = <0x325aa0>; - regulator-always-on; - regulator-name = "3v3"; - }; - - fixedregulator_5v0 { - compatible = "regulator-fixed"; - phandle = <0x3b>; - regulator-min-microvolt = <0x4c4b40>; - regulator-max-microvolt = <0x4c4b40>; - regulator-always-on; - regulator-name = "5v0"; - }; - - axi { - - vc_mem { - reg = <0xfa00000 0x10000000 0x40000000>; - }; - }; -}; diff --git a/test/data/rpi3_arch_arm64.dts b/test/data/rpi3_arch_arm64.dts deleted file mode 100644 index 5054edd1..00000000 --- a/test/data/rpi3_arch_arm64.dts +++ /dev/null @@ -1,666 +0,0 @@ -/dts-v1/; - -/ { - compatible = "raspberrypi,3-model-b", "brcm,bcm2837"; - serial-number = "00000000d544ea12"; - model = "Raspberry Pi 3 Model B"; - interrupt-parent = <0x1>; - #address-cells = <0x1>; - #size-cells = <0x1>; - - clocks { - compatible = "simple-bus"; - #address-cells = <0x1>; - #size-cells = <0x0>; - - clock@3 { - compatible = "fixed-clock"; - #clock-cells = <0x0>; - phandle = <0x3>; - reg = <0x3>; - clock-output-names = "osc"; - clock-frequency = <0x124f800>; - linux,phandle = <0x3>; - }; - - clock@4 { - compatible = "fixed-clock"; - #clock-cells = <0x0>; - phandle = <0xe>; - reg = <0x4>; - clock-output-names = "otg"; - clock-frequency = <0x1c9c3800>; - linux,phandle = <0xe>; - }; - }; - - soc { - compatible = "simple-bus"; - ranges = <0x7e000000 0x3f000000 0x1000000 0x40000000 0x40000000 0x1000>; - #address-cells = <0x1>; - #size-cells = <0x1>; - dma-ranges = <0xc0000000 0x0 0x3f000000>; - - serial@7e201000 { - compatible = "brcm,bcm2835-pl011", "arm,pl011", "arm,primecell"; - clocks = <0x4 0x13 0x4 0x14>; - clock-names = "uartclk", "apb_pclk"; - interrupts = <0x2 0x19>; - arm,primecell-periphid = <0x241011>; - reg = <0x7e201000 0x1000>; - }; - - pixelvalve@7e207000 { - compatible = "brcm,bcm2835-pixelvalve1"; - interrupts = <0x2 0xe>; - reg = <0x7e207000 0x100>; - }; - - cprman@7e101000 { - compatible = "brcm,bcm2835-cprman"; - clocks = <0x3>; - #clock-cells = <0x1>; - phandle = <0x4>; - reg = <0x7e101000 0x2000>; - linux,phandle = <0x4>; - }; - - thermal@7e212000 { - compatible = "brcm,bcm2837-thermal"; - clocks = <0x4 0x1b>; - status = "okay"; - reg = <0x7e212000 0x8>; - }; - - hvs@7e400000 { - compatible = "brcm,bcm2835-hvs"; - interrupts = <0x2 0x1>; - reg = <0x7e400000 0x6000>; - }; - - gpio@7e200000 { - compatible = "brcm,bcm2835-gpio"; - gpio-controller; - #interrupt-cells = <0x2>; - interrupts = <0x2 0x11 0x2 0x12 0x2 0x13 0x2 0x14>; - phandle = <0x11>; - reg = <0x7e200000 0xb4>; - #gpio-cells = <0x2>; - linux,phandle = <0x11>; - pinctrl-names = "default"; - interrupt-controller; - - uart0_gpio14 { - brcm,pins = <0xe 0xf>; - brcm,function = <0x4>; - }; - - gpclk1_gpio5 { - brcm,pins = <0x5>; - brcm,function = <0x4>; - }; - - uart1_ctsrts_gpio16 { - brcm,pins = <0x10 0x11>; - brcm,function = <0x2>; - }; - - jtag_gpio4 { - brcm,pins = <0x4 0x5 0x6 0xc 0xd>; - brcm,function = <0x3>; - }; - - alt0 { - brcm,pins = <0x4 0x5 0x7 0x8 0x9 0xa 0xb 0xe 0xf>; - brcm,function = <0x4>; - }; - - uart0_gpio30 { - brcm,pins = <0x1e 0x1f>; - brcm,function = <0x7>; - }; - - uart1_ctsrts_gpio42 { - brcm,pins = <0x2a 0x2b>; - brcm,function = <0x2>; - }; - - gpclk0_gpio4 { - brcm,pins = <0x4>; - brcm,function = <0x4>; - }; - - pwm0_gpio12 { - brcm,pins = <0xc>; - brcm,function = <0x4>; - }; - - pwm1_gpio19 { - brcm,pins = <0x13>; - brcm,function = <0x2>; - }; - - pwm0_gpio40 { - brcm,pins = <0x28>; - phandle = <0x8>; - brcm,function = <0x4>; - linux,phandle = <0x8>; - }; - - gpclk2_gpio43 { - brcm,pins = <0x2b>; - brcm,function = <0x4>; - }; - - uart1_ctsrts_gpio30 { - brcm,pins = <0x1e 0x1f>; - brcm,function = <0x2>; - }; - - gpioout { - brcm,pins = <0x6>; - brcm,function = <0x1>; - }; - - spi0_gpio35 { - brcm,pins = <0x23 0x24 0x25 0x26 0x27>; - brcm,function = <0x4>; - }; - - pwm1_gpio45 { - brcm,pins = <0x2d>; - phandle = <0x9>; - brcm,function = <0x4>; - linux,phandle = <0x9>; - }; - - pcm_gpio28 { - brcm,pins = <0x1c 0x1d 0x1e 0x1f>; - brcm,function = <0x6>; - }; - - dpi_gpio0 { - brcm,pins = <0x0 0x1 0x2 0x3 0x4 0x5 0x6 0x7 0x8 0x9 0xa 0xb 0xc 0xd 0xe 0xf 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b>; - brcm,function = <0x6>; - }; - - i2c0_gpio0 { - brcm,pins = <0x0 0x1>; - phandle = <0x6>; - brcm,function = <0x4>; - linux,phandle = <0x6>; - }; - - pcm_gpio18 { - brcm,pins = <0x12 0x13 0x14 0x15>; - brcm,function = <0x4>; - }; - - pwm1_gpio13 { - brcm,pins = <0xd>; - brcm,function = <0x4>; - }; - - pwm1_gpio41 { - brcm,pins = <0x29>; - brcm,function = <0x4>; - }; - - spi0_gpio7 { - brcm,pins = <0x7 0x8 0x9 0xa 0xb>; - brcm,function = <0x4>; - }; - - i2c1_gpio44 { - brcm,pins = <0x2c 0x2d>; - brcm,function = <0x6>; - }; - - i2c_slave_gpio18 { - brcm,pins = <0x12 0x13 0x14 0x15>; - brcm,function = <0x7>; - }; - - emmc_gpio48 { - brcm,pins = <0x30 0x31 0x32 0x33 0x34 0x35>; - phandle = <0xa>; - brcm,function = <0x7>; - linux,phandle = <0xa>; - }; - - i2c1_gpio2 { - brcm,pins = <0x2 0x3>; - phandle = <0xb>; - brcm,function = <0x4>; - linux,phandle = <0xb>; - }; - - spi1_gpio16 { - brcm,pins = <0x10 0x11 0x12 0x13 0x14 0x15>; - brcm,function = <0x3>; - }; - - jtag_gpio22 { - brcm,pins = <0x16 0x17 0x18 0x19 0x1a 0x1b>; - brcm,function = <0x3>; - }; - - uart1_gpio36 { - brcm,pins = <0x24 0x25 0x26 0x27>; - brcm,function = <0x6>; - }; - - spi2_gpio40 { - brcm,pins = <0x28 0x29 0x2a 0x2b 0x2c 0x2d>; - brcm,function = <0x3>; - }; - - i2c0_gpio44 { - brcm,pins = <0x2c 0x2d>; - brcm,function = <0x5>; - }; - - uart0_ctsrts_gpio16 { - brcm,pins = <0x10 0x11>; - brcm,function = <0x7>; - }; - - gpclk2_gpio6 { - brcm,pins = <0x6>; - brcm,function = <0x4>; - }; - - sdhost_gpio48 { - brcm,pins = <0x30 0x31 0x32 0x33 0x34 0x35>; - brcm,function = <0x4>; - }; - - emmc_gpio34 { - brcm,pins = <0x22 0x23 0x24 0x25 0x26 0x27>; - brcm,pull = <0x0 0x2 0x2 0x2 0x2 0x2>; - brcm,function = <0x7>; - }; - - gpclk1_gpio44 { - brcm,pins = <0x2c>; - brcm,function = <0x4>; - }; - - uart1_gpio14 { - brcm,pins = <0xe 0xf>; - brcm,function = <0x2>; - }; - - i2c0_gpio32 { - brcm,pins = <0x20 0x22>; - brcm,function = <0x4>; - }; - - uart1_gpio32 { - brcm,pins = <0x20 0x21>; - brcm,function = <0x2>; - }; - - pwm0_gpio18 { - brcm,pins = <0x12>; - brcm,function = <0x2>; - }; - - gpclk1_gpio42 { - brcm,pins = <0x2a>; - brcm,function = <0x4>; - }; - - uart0_ctsrts_gpio32 { - brcm,pins = <0x20 0x21>; - brcm,function = <0x7>; - }; - - uart1_gpio40 { - brcm,pins = <0x28 0x29>; - brcm,function = <0x2>; - }; - - emmc_gpio22 { - brcm,pins = <0x16 0x17 0x18 0x19 0x1a 0x1b>; - brcm,function = <0x7>; - }; - }; - - pixelvalve@7e807000 { - compatible = "brcm,bcm2835-pixelvalve2"; - interrupts = <0x2 0xa>; - reg = <0x7e807000 0x100>; - }; - - v3d@7ec00000 { - power-domains = <0xc 0xa>; - compatible = "brcm,bcm2835-v3d"; - interrupts = <0x1 0xa>; - reg = <0x7ec00000 0x1000>; - }; - - gpu { - compatible = "brcm,bcm2835-vc4"; - }; - - spi@7e204000 { - compatible = "brcm,bcm2835-spi"; - clocks = <0x4 0x14>; - status = "disabled"; - #address-cells = <0x1>; - interrupts = <0x2 0x16>; - #size-cells = <0x0>; - reg = <0x7e204000 0x1000>; - }; - - sdhci@7e300000 { - compatible = "brcm,bcm2835-sdhci"; - clocks = <0x4 0x1c>; - status = "okay"; - interrupts = <0x2 0x1e>; - bus-width = <0x4>; - reg = <0x7e300000 0x100>; - pinctrl-0 = <0xa>; - pinctrl-names = "default"; - }; - - i2c@7e804000 { - compatible = "brcm,bcm2835-i2c"; - clocks = <0x4 0x14>; - status = "okay"; - #address-cells = <0x1>; - interrupts = <0x2 0x15>; - #size-cells = <0x0>; - reg = <0x7e804000 0x1000>; - clock-frequency = <0x186a0>; - pinctrl-0 = <0xb>; - pinctrl-names = "default"; - }; - - timer@7e003000 { - compatible = "brcm,bcm2835-system-timer"; - interrupts = <0x1 0x0 0x1 0x1 0x1 0x2 0x1 0x3>; - reg = <0x7e003000 0x1000>; - clock-frequency = <0xf4240>; - }; - - i2s@7e203000 { - compatible = "brcm,bcm2835-i2s"; - status = "disabled"; - dma-names = "tx", "rx"; - reg = <0x7e203000 0x20 0x7e101098 0x2>; - dmas = <0x5 0x2 0x5 0x3>; - }; - - mailbox@7e00b880 { - compatible = "brcm,bcm2835-mbox"; - #mbox-cells = <0x0>; - interrupts = <0x0 0x1>; - phandle = <0xf>; - reg = <0x7e00b880 0x40>; - linux,phandle = <0xf>; - }; - - vec@7e806000 { - power-domains = <0xc 0x7>; - compatible = "brcm,bcm2835-vec"; - clocks = <0x4 0x18>; - status = "okay"; - interrupts = <0x2 0x1b>; - reg = <0x7e806000 0x1000>; - }; - - power { - compatible = "raspberrypi,bcm2835-power"; - firmware = <0x10>; - phandle = <0xc>; - linux,phandle = <0xc>; - #power-domain-cells = <0x1>; - }; - - pixelvalve@7e206000 { - compatible = "brcm,bcm2835-pixelvalve0"; - interrupts = <0x2 0xd>; - reg = <0x7e206000 0x100>; - }; - - firmware { - compatible = "raspberrypi,bcm2835-firmware"; - mboxes = <0xf>; - phandle = <0x10>; - linux,phandle = <0x10>; - }; - - hdmi@7e902000 { - power-domains = <0xc 0x5>; - compatible = "brcm,bcm2835-hdmi"; - clocks = <0x4 0x10 0x4 0x19>; - clock-names = "pixel", "hdmi"; - ddc = <0xd>; - status = "okay"; - interrupts = <0x2 0x8 0x2 0x9>; - reg = <0x7e902000 0x600 0x7e808000 0x100>; - }; - - pwm@7e20c000 { - compatible = "brcm,bcm2835-pwm"; - clocks = <0x4 0x1e>; - status = "okay"; - assigned-clock-rates = <0x989680>; - assigned-clocks = <0x4 0x1e>; - reg = <0x7e20c000 0x28>; - pinctrl-0 = <0x8 0x9>; - #pwm-cells = <0x2>; - pinctrl-names = "default"; - }; - - watchdog@7e100000 { - compatible = "brcm,bcm2835-pm-wdt"; - reg = <0x7e100000 0x28>; - }; - - interrupt-controller@7e00b200 { - compatible = "brcm,bcm2836-armctrl-ic"; - #interrupt-cells = <0x2>; - interrupt-parent = <0x2>; - interrupts = <0x8>; - phandle = <0x1>; - reg = <0x7e00b200 0x200>; - linux,phandle = <0x1>; - interrupt-controller; - }; - - local_intc { - compatible = "brcm,bcm2836-l1-intc"; - #interrupt-cells = <0x1>; - interrupt-parent = <0x2>; - phandle = <0x2>; - reg = <0x40000000 0x100>; - linux,phandle = <0x2>; - interrupt-controller; - }; - - i2c@7e205000 { - compatible = "brcm,bcm2835-i2c"; - clocks = <0x4 0x14>; - status = "okay"; - #address-cells = <0x1>; - interrupts = <0x2 0x15>; - #size-cells = <0x0>; - reg = <0x7e205000 0x1000>; - clock-frequency = <0x186a0>; - pinctrl-0 = <0x6>; - pinctrl-names = "default"; - }; - - serial@7e215040 { - compatible = "brcm,bcm2835-aux-uart"; - clocks = <0x7 0x0>; - status = "okay"; - interrupts = <0x1 0x1d>; - reg = <0x7e215040 0x40>; - }; - - dma@7e007000 { - #dma-cells = <0x1>; - compatible = "brcm,bcm2835-dma"; - brcm,dma-channel-mask = <0x7f35>; - interrupts = <0x1 0x10 0x1 0x11 0x1 0x12 0x1 0x13 0x1 0x14 0x1 0x15 0x1 0x16 0x1 0x17 0x1 0x18 0x1 0x19 0x1 0x1a 0x1 0x1b 0x1 0x1b 0x1 0x1b 0x1 0x1b 0x1 0x1c>; - phandle = <0x5>; - reg = <0x7e007000 0xf00>; - linux,phandle = <0x5>; - interrupt-names = "dma0", "dma1", "dma2", "dma3", "dma4", "dma5", "dma6", "dma7", "dma8", "dma9", "dma10", "dma11", "dma12", "dma13", "dma14", "dma-shared-all"; - }; - - i2c@7e805000 { - compatible = "brcm,bcm2835-i2c"; - clocks = <0x4 0x14>; - status = "okay"; - #address-cells = <0x1>; - interrupts = <0x2 0x15>; - #size-cells = <0x0>; - phandle = <0xd>; - reg = <0x7e805000 0x1000>; - linux,phandle = <0xd>; - }; - - spi@7e215080 { - compatible = "brcm,bcm2835-aux-spi"; - clocks = <0x7 0x1>; - status = "disabled"; - #address-cells = <0x1>; - interrupts = <0x1 0x1d>; - #size-cells = <0x0>; - reg = <0x7e215080 0x40>; - }; - - aux@0x7e215000 { - compatible = "brcm,bcm2835-aux"; - clocks = <0x4 0x14>; - #clock-cells = <0x1>; - phandle = <0x7>; - reg = <0x7e215000 0x8>; - linux,phandle = <0x7>; - }; - - rng@7e104000 { - compatible = "brcm,bcm2835-rng"; - reg = <0x7e104000 0x10>; - }; - - usb@7e980000 { - power-domains = <0xc 0x6>; - compatible = "brcm,bcm2835-usb"; - clocks = <0xe>; - clock-names = "otg"; - #address-cells = <0x1>; - interrupts = <0x1 0x9>; - #size-cells = <0x0>; - reg = <0x7e980000 0x10000>; - dr_mode = "host"; - - usb1@1 { - compatible = "usb424,9514"; - #address-cells = <0x1>; - #size-cells = <0x0>; - reg = <0x1>; - - usbether@1 { - compatible = "usb424,ec00"; - reg = <0x1>; - }; - }; - }; - - spi@7e2150c0 { - compatible = "brcm,bcm2835-aux-spi"; - clocks = <0x7 0x2>; - status = "disabled"; - #address-cells = <0x1>; - interrupts = <0x1 0x1d>; - #size-cells = <0x0>; - reg = <0x7e2150c0 0x40>; - }; - }; - - leds { - compatible = "gpio-leds"; - - act { - gpios = <0x11 0x2f 0x0>; - label = "ACT"; - default-state = "keep"; - linux,default-trigger = "heartbeat"; - }; - }; - - aliases { - ethernet = "/soc/usb@7e980000/usb1@1/usbether@1"; - }; - - chosen { - bootargs = "console=ttyS0,115200 console=tty0 root=PARTUUID=08d5518c-02 rw rootwait smsc95xx.macaddr=01:02:03:04:05:06"; - linux,initrd-start = ":wP"; - linux,initrd-end = <0x3ab2d71e>; - }; - - framebuffer@3daf0000 { - compatible = "simple-framebuffer"; - width = <0x290>; - stride = <0xa40>; - status = "okay"; - reg = <0x3daf0000 0x10a800>; - format = "a8r8g8b8"; - height = <0x1a0>; - }; - - timer { - compatible = "arm,armv7-timer"; - always-on; - interrupt-parent = <0x2>; - interrupts = <0x0 0x1 0x3 0x2>; - }; - - memory { - device_type = "memory"; - reg = <0x0 0x3b000000>; - }; - - cpus { - #address-cells = <0x1>; - #size-cells = <0x0>; - - cpu@3 { - compatible = "arm,cortex-a53"; - cpu-release-addr = <0x0 0xf0>; - device_type = "cpu"; - enable-method = "spin-table"; - reg = <0x3>; - }; - - cpu@1 { - compatible = "arm,cortex-a53"; - cpu-release-addr = <0x0 0xe0>; - device_type = "cpu"; - enable-method = "spin-table"; - reg = <0x1>; - }; - - cpu@2 { - compatible = "arm,cortex-a53"; - cpu-release-addr = <0x0 0xe8>; - device_type = "cpu"; - enable-method = "spin-table"; - reg = <0x2>; - }; - - cpu@0 { - compatible = "arm,cortex-a53"; - cpu-release-addr = <0x0 0xd8>; - device_type = "cpu"; - enable-method = "spin-table"; - reg = <0x0>; - }; - }; -}; diff --git a/test/data/rpi3_raspbian.dts b/test/data/rpi3_raspbian.dts deleted file mode 100644 index 9d6bf638..00000000 --- a/test/data/rpi3_raspbian.dts +++ /dev/null @@ -1,892 +0,0 @@ -/dts-v1/; - -/ { - compatible = "brcm,bcm2837", "brcm,bcm2836"; - serial-number = "00000000d544ea12"; - model = "Raspberry Pi 3 Model B Rev 1.2"; - memreserve = <0x3b000000 0x4000000>; - interrupt-parent = <0x1>; - #address-cells = <0x1>; - #size-cells = <0x1>; - - clocks { - compatible = "simple-bus"; - #address-cells = <0x1>; - #size-cells = <0x0>; - - clock@3 { - compatible = "fixed-clock"; - #clock-cells = <0x0>; - phandle = <0x3>; - reg = <0x3>; - clock-output-names = "osc"; - clock-frequency = <0x124f800>; - }; - - clock@4 { - compatible = "fixed-clock"; - #clock-cells = <0x0>; - phandle = <0x16>; - reg = <0x4>; - clock-output-names = "otg"; - clock-frequency = <0x1c9c3800>; - }; - }; - - __overrides__ { - pwr_led_gpio = "", "", "", "(gpios:4"; - i2c1 = "", "", "", "&status"; - i2c_vc = "", "", "", "%status"; - sd_overclock = "", "", "", ",brcm,overclock-50:0"; - i2c0_baudrate = "", "", "", "%clock-frequency:0"; - sd_pio_limit = "", "", "", ",brcm,pio-limit:0"; - act_led_trigger = "", "", "", "'linux,default-trigger"; - audio = "", "", "", ")status"; - sd_debug = "", "", "", ",brcm,debug"; - cache_line_size = [00 00 00 1c 63 61 63 68 65 2d 6c 69 6e 65 2d 73 69 7a 65 3a 30 00]; - i2c1_baudrate = "", "", "", "&clock-frequency:0"; - spi = "", "", "", "$status"; - i2c_arm = "", "", "", "&status"; - pwr_led_activelow = "", "", "", "(gpios:8"; - uart0 = "", "", "", "!status"; - i2c2_iknowwhatimdoing = [00 00 00 14 73 74 61 74 75 73 00]; - i2s = "", "", "", "#status"; - i2c0 = "", "", "", "%status"; - arm_freq = <0x1d 0x636c6f63 0x6b2d6672 0x65717565 0x6e63793a 0x30000000 0x1e636c 0x6f636b2d 0x66726571 0x75656e63 0x793a3000 0x1f 0x636c6f63 0x6b2d6672 0x65717565 0x6e63793a 0x30000000 0x20636c 0x6f636b2d 0x66726571 0x75656e63 0x793a3000>; - watchdog = "", "", "", "*status"; - i2c_baudrate = "", "", "", "&clock-frequency:0"; - i2c_vc_baudrate = "", "", "", "%clock-frequency:0"; - act_led_activelow = "", "", "", "'gpios:8"; - i2c2_baudrate = [00 00 00 14 63 6c 6f 63 6b 2d 66 72 65 71 75 65 6e 63 79 3a 30 00]; - sd_force_pio = "", "", "", ",brcm,force-pio?"; - pwr_led_trigger = "", "", "", "(linux,default-trigger"; - uart1 = "", "", "", "\"status"; - i2c_arm_baudrate = "", "", "", "&clock-frequency:0"; - random = "", "", "", "+status"; - act_led_gpio = "", "", "", "'gpios:4"; - i2c = "", "", "", "&status"; - }; - - system { - linux,serial = <0x0 0xd5442118>; - linux,revision = <0xa02082>; - }; - - __symbols__ { - pwm = "/soc/pwm@7e20c000"; - clk_usb = "/clocks/clock@4"; - pixelvalve0 = "/soc/pixelvalve@7e206000"; - intc = "/soc/interrupt-controller@7e00b200"; - spi2 = "/soc/spi@7e2150c0"; - dsi1 = "/soc/dsi@7e700000"; - clocks = "/soc/cprman@7e101000"; - i2c1 = "/soc/i2c@7e804000"; - i2c_vc = "/soc/i2c@7e205000"; - firmwarekms = "/soc/firmwarekms@7e600000"; - smi = "/soc/smi@7e600000"; - gpu = "/soc/gpu"; - spi0 = "/soc/spi@7e204000"; - thermal = "/soc/thermal"; - vdd_5v0_reg = "/fixedregulator_5v0"; - vchiq = "/soc/vchiq"; - sdhost = "/soc/sdhost@7e202000"; - aux = "/soc/aux@0x7e215000"; - gpio = "/soc/gpio@7e200000"; - dpi = "/soc/dpi@7e208000"; - v3d = "/soc/v3d@7ec00000"; - audio = "/soc/audio"; - vdd_3v3_reg = "/fixedregulator_3v3"; - dma = "/soc/dma@7e007000"; - spidev1 = "/soc/spi@7e204000/spidev@1"; - v7_cpu3 = "/cpus/cpu@3"; - vc4 = "/soc/gpu"; - power = "/soc/power"; - soc = "/soc"; - v7_cpu1 = "/cpus/cpu@1"; - leds = "/leds"; - i2s_pins = "/soc/gpio@7e200000/i2s"; - firmware = "/soc/firmware"; - cprman = "/soc/cprman@7e101000"; - mmc = "/soc/mmc@7e300000"; - pixelvalve1 = "/soc/pixelvalve@7e207000"; - spi = "/soc/spi@7e204000"; - spi0_pins = "/soc/gpio@7e200000/spi0_pins"; - pitouchscreen_touch = "/soc/i2cdsi/bridge@38"; - i2c_arm = "/soc/i2c@7e804000"; - clk_osc = "/clocks/clock@3"; - ethernet = "/soc/usb@7e980000/usb1@1/usbether@1"; - uart0 = "/soc/serial@7e201000"; - i2c1_pins = "/soc/gpio@7e200000/i2c1"; - fb = "/soc/fb"; - sdhost_pins = "/soc/gpio@7e200000/sdhost_pins"; - i2c2 = "/soc/i2c@7e805000"; - uart1_pins = "/soc/gpio@7e200000/uart1_pins"; - i2s = "/soc/i2s@7e203000"; - spi1 = "/soc/spi@7e215080"; - virtgpio = "/soc/virtgpio"; - usb = "/soc/usb@7e980000"; - dsi0 = "/soc/dsi@7e209000"; - expgpio = "/soc/expgpio"; - audio_pins = "/soc/gpio@7e200000/audio_pins"; - i2c0 = "/soc/i2c@7e205000"; - i2c0_pins = "/soc/gpio@7e200000/i2c0"; - pwr_led = "/leds/pwr"; - watchdog = "/soc/watchdog@7e100000"; - uart0_pins = "/soc/gpio@7e200000/uart0_pins"; - vec = "/soc/vec@7e806000"; - local_intc = "/soc/local_intc"; - i2c_dsi = "/soc/i2cdsi"; - pitouchscreen_bridge = "/soc/i2cdsi/bridge@45"; - spi0_cs_pins = "/soc/gpio@7e200000/spi0_cs_pins"; - sound = "/soc/sound"; - hvs = "/soc/hvs@7e400000"; - act_led = "/leds/act"; - spidev0 = "/soc/spi@7e204000/spidev@0"; - v7_cpu2 = "/cpus/cpu@2"; - bt_pins = "/soc/gpio@7e200000/bt_pins"; - sdio_pins = "/soc/gpio@7e200000/sdio_pins"; - cpus = "/cpus"; - hdmi = "/soc/hdmi@7e902000"; - pixelvalve2 = "/soc/pixelvalve@7e807000"; - v7_cpu0 = "/cpus/cpu@0"; - mailbox = "/soc/mailbox@7e00b880"; - uart1 = "/soc/serial@7e215040"; - random = "/soc/rng@7e104000"; - i2c = "/soc/i2c@7e804000"; - }; - - soc { - compatible = "simple-bus"; - ranges = <0x7e000000 0x3f000000 0x1000000 0x40000000 0x40000000 0x40000>; - #address-cells = <0x1>; - #size-cells = <0x1>; - phandle = <0x2d>; - dma-ranges = <0xc0000000 0x0 0x3f000000>; - - serial@7e201000 { - compatible = "brcm,bcm2835-pl011", "arm,pl011", "arm,primecell"; - clocks = <0x7 0x13 0x7 0x14>; - clock-names = "uartclk", "apb_pclk"; - status = "okay"; - interrupts = <0x2 0x19>; - phandle = <0x21>; - arm,primecell-periphid = <0x241011>; - reg = <0x7e201000 0x1000>; - pinctrl-0 = <0x8 0x9>; - pinctrl-names = "default"; - }; - - pixelvalve@7e207000 { - compatible = "brcm,bcm2835-pixelvalve1"; - status = "disabled"; - interrupts = <0x2 0xe>; - phandle = <0x31>; - reg = <0x7e207000 0x100>; - }; - - cprman@7e101000 { - compatible = "brcm,bcm2835-cprman"; - clocks = <0x3 0x4 0x0 0x4 0x1 0x4 0x2 0x5 0x0 0x5 0x1 0x5 0x2>; - firmware = <0x6>; - #clock-cells = <0x1>; - phandle = <0x7>; - reg = <0x7e101000 0x2000>; - }; - - hvs@7e400000 { - compatible = "brcm,bcm2835-hvs"; - status = "disabled"; - interrupts = <0x2 0x1>; - phandle = <0x35>; - reg = <0x7e400000 0x6000>; - }; - - gpio@7e200000 { - compatible = "brcm,bcm2835-gpio"; - gpio-controller; - #interrupt-cells = <0x2>; - interrupts = <0x2 0x11 0x2 0x12>; - phandle = <0xc>; - reg = <0x7e200000 0xb4>; - #gpio-cells = <0x2>; - interrupt-controller; - - i2c1 { - brcm,pins = <0x2 0x3>; - phandle = <0x13>; - brcm,function = <0x4>; - }; - - spi0_pins { - brcm,pins = <0x9 0xa 0xb>; - phandle = <0xd>; - brcm,function = <0x4>; - }; - - sdhost_pins { - brcm,pins = <0x30 0x31 0x32 0x33 0x34 0x35>; - phandle = <0x17>; - brcm,function = <0x4>; - }; - - uart1_pins { - brcm,pins; - phandle = <0x11>; - brcm,pull; - brcm,function; - }; - - i2s { - brcm,pins = <0x12 0x13 0x14 0x15>; - phandle = <0xb>; - brcm,function = <0x4>; - }; - - audio_pins { - brcm,pins = <0x28 0x29>; - phandle = <0x1a>; - brcm,function = <0x4>; - }; - - i2c0 { - brcm,pins = <0x0 0x1>; - phandle = <0xf>; - brcm,function = <0x4>; - }; - - uart0_pins { - brcm,pins = <0x20 0x21>; - phandle = <0x8>; - brcm,pull = <0x0 0x2>; - brcm,function = <0x7>; - }; - - spi0_cs_pins { - brcm,pins = <0x8 0x7>; - phandle = <0xe>; - brcm,function = <0x1>; - }; - - bt_pins { - brcm,pins = <0x2b>; - phandle = <0x9>; - brcm,pull = <0x0>; - brcm,function = <0x4>; - }; - - sdio_pins { - brcm,pins = <0x22 0x23 0x24 0x25 0x26 0x27>; - phandle = <0x18>; - brcm,pull = <0x0 0x2 0x2 0x2 0x2 0x2>; - brcm,function = <0x7>; - }; - }; - - pixelvalve@7e807000 { - compatible = "brcm,bcm2835-pixelvalve2"; - status = "disabled"; - interrupts = <0x2 0xa>; - phandle = <0x37>; - reg = <0x7e807000 0x100>; - }; - - v3d@7ec00000 { - power-domains = <0x12 0xa>; - compatible = "brcm,vc4-v3d"; - status = "disabled"; - interrupts = <0x1 0xa>; - phandle = <0x3b>; - reg = <0x7ec00000 0x1000>; - }; - - gpu { - compatible = "brcm,bcm2835-vc4"; - status = "disabled"; - phandle = <0x3c>; - }; - - mmc@7e300000 { - compatible = "brcm,bcm2835-mmc"; - clocks = <0x7 0x1c>; - status = "okay"; - interrupts = <0x2 0x1e>; - brcm,overclock-50 = <0x0>; - bus-width = <0x4>; - dma-names = "rx-tx"; - phandle = <0x3e>; - reg = <0x7e300000 0x100>; - pinctrl-0 = <0x18>; - dmas = <0xa 0xb>; - non-removable; - pinctrl-names = "default"; - }; - - arm-pmu { - compatible = "arm,cortex-a7-pmu"; - interrupt-parent = <0x2>; - interrupts = <0x9>; - }; - - thermal { - compatible = "brcm,bcm2835-thermal"; - firmware = <0x6>; - phandle = <0x45>; - }; - - spi@7e204000 { - compatible = "brcm,bcm2835-spi"; - clocks = <0x7 0x14>; - status = "disabled"; - #address-cells = <0x1>; - interrupts = <0x2 0x16>; - cs-gpios = <0xc 0x8 0x1 0xc 0x7 0x1>; - #size-cells = <0x0>; - dma-names = "tx", "rx"; - phandle = <0x24>; - reg = <0x7e204000 0x1000>; - pinctrl-0 = <0xd 0xe>; - dmas = <0xa 0x6 0xa 0x7>; - pinctrl-names = "default"; - - spidev@1 { - compatible = "spidev"; - #address-cells = <0x1>; - #size-cells = <0x0>; - phandle = <0x2f>; - reg = <0x1>; - spi-max-frequency = <0x7a120>; - }; - - spidev@0 { - compatible = "spidev"; - #address-cells = <0x1>; - #size-cells = <0x0>; - phandle = <0x2e>; - reg = <0x0>; - spi-max-frequency = <0x7a120>; - }; - }; - - i2cdsi { - gpios = <0xc 0x2c 0x0 0xc 0x2d 0x0>; - compatible = "i2c-gpio"; - status = "disabled"; - #address-cells = <0x1>; - #size-cells = <0x0>; - phandle = <0x41>; - - bridge@45 { - compatible = "raspberrypi,touchscreen-bridge-i2c"; - phandle = <0x42>; - reg = <0x45>; - }; - - bridge@38 { - compatible = "raspberrypi,touchscreen-ts-i2c"; - phandle = <0x43>; - reg = <0x38>; - }; - }; - - vchiq { - compatible = "brcm,bcm2835-vchiq"; - cache-line-size = <0x40>; - firmware = <0x6>; - interrupts = <0x0 0x2>; - phandle = <0x1c>; - reg = <0x7e00b840 0xf>; - }; - - i2c@7e804000 { - compatible = "brcm,bcm2835-i2c"; - clocks = <0x7 0x14>; - status = "disabled"; - #address-cells = <0x1>; - interrupts = <0x2 0x15>; - #size-cells = <0x0>; - phandle = <0x26>; - reg = <0x7e804000 0x1000>; - clock-frequency = <0x186a0>; - pinctrl-0 = <0x13>; - pinctrl-names = "default"; - }; - - audio { - brcm,pwm-channels = <0x8>; - compatible = "brcm,bcm2835-audio"; - status = "okay"; - phandle = <0x29>; - pinctrl-0 = <0x1a>; - pinctrl-names = "default"; - }; - - i2s@7e203000 { - compatible = "brcm,bcm2835-i2s"; - clocks = <0x7 0x1f>; - #sound-dai-cells = <0x0>; - status = "disabled"; - dma-names = "tx", "rx"; - phandle = <0x23>; - reg = <0x7e203000 0x24>; - pinctrl-0 = <0xb>; - dmas = <0xa 0x2 0xa 0x3>; - pinctrl-names = "default"; - }; - - mailbox@7e00b880 { - compatible = "brcm,bcm2835-mbox"; - #mbox-cells = <0x0>; - interrupts = <0x0 0x1>; - phandle = <0x19>; - reg = <0x7e00b880 0x40>; - }; - - gpiomem { - compatible = "brcm,bcm2835-gpiomem"; - reg = <0x7e200000 0x1000>; - }; - - vec@7e806000 { - compatible = "brcm,bcm2835-vec"; - clocks = <0x7 0x18>; - status = "disabled"; - interrupts = <0x2 0x1b>; - phandle = <0x36>; - reg = <0x7e806000 0x1000>; - }; - - power { - compatible = "raspberrypi,bcm2835-power"; - firmware = <0x6>; - phandle = <0x12>; - #power-domain-cells = <0x1>; - }; - - pixelvalve@7e206000 { - compatible = "brcm,bcm2835-pixelvalve0"; - status = "disabled"; - interrupts = <0x2 0xd>; - phandle = <0x30>; - reg = <0x7e206000 0x100>; - }; - - firmware { - compatible = "raspberrypi,bcm2835-firmware"; - mboxes = <0x19>; - phandle = <0x6>; - }; - - dsi@7e209000 { - compatible = "brcm,bcm2835-dsi0"; - clocks = <0x7 0x20 0x7 0x2f 0x7 0x31>; - clock-names = "phy", "escape", "pixel"; - status = "disabled"; - #address-cells = <0x1>; - interrupts = <0x2 0x4>; - #size-cells = <0x0>; - #clock-cells = <0x1>; - phandle = <0x4>; - reg = <0x7e209000 0x78>; - clock-output-names = "dsi0_byte", "dsi0_ddr2", "dsi0_ddr"; - }; - - fb { - compatible = "brcm,bcm2708-fb"; - firmware = <0x6>; - status = "okay"; - phandle = <0x44>; - }; - - sdhost@7e202000 { - compatible = "brcm,bcm2835-sdhost"; - clocks = <0x7 0x14>; - brcm,pio-limit = <0x1>; - status = "okay"; - interrupts = <0x2 0x18>; - brcm,overclock-50 = <0x0>; - bus-width = <0x4>; - dma-names = "rx-tx"; - phandle = <0x2c>; - reg = <0x7e202000 0x100>; - pinctrl-0 = <0x17>; - dmas = <0xa 0xd>; - pinctrl-names = "default"; - }; - - virtgpio { - compatible = "brcm,bcm2835-virtgpio"; - gpio-controller; - firmware = <0x6>; - status = "okay"; - phandle = <0x1b>; - #gpio-cells = <0x2>; - }; - - dpi@7e208000 { - compatible = "brcm,bcm2835-dpi"; - clocks = <0x7 0x14 0x7 0x2c>; - clock-names = "core", "pixel"; - status = "disabled"; - #address-cells = <0x1>; - #size-cells = <0x0>; - phandle = <0x3d>; - reg = <0x7e208000 0x8c>; - }; - - expgpio { - compatible = "brcm,bcm2835-expgpio"; - gpio-controller; - firmware = <0x6>; - status = "okay"; - phandle = <0x15>; - #gpio-cells = <0x2>; - }; - - hdmi@7e902000 { - power-domains = <0x12 0x5>; - compatible = "brcm,bcm2835-hdmi"; - clocks = <0x7 0x10 0x7 0x19>; - clock-names = "pixel", "hdmi"; - ddc = <0x14>; - status = "disabled"; - interrupts = <0x2 0x8 0x2 0x9>; - dma-names = "audio-rx"; - phandle = <0x38>; - hpd-gpios = <0x15 0x4 0x1>; - reg = <0x7e902000 0x600 0x7e808000 0x100>; - dmas = <0xa 0x11>; - }; - - timer { - compatible = "arm,armv7-timer"; - always-on; - interrupt-parent = <0x2>; - interrupts = <0x0 0x1 0x3 0x2>; - }; - - pwm@7e20c000 { - compatible = "brcm,bcm2835-pwm"; - clocks = <0x7 0x1e>; - status = "disabled"; - assigned-clock-rates = <0x989680>; - assigned-clocks = <0x7 0x1e>; - phandle = <0x34>; - reg = <0x7e20c000 0x28>; - #pwm-cells = <0x2>; - }; - - watchdog@7e100000 { - compatible = "brcm,bcm2835-pm-wdt"; - phandle = <0x2a>; - reg = <0x7e100000 0x28>; - }; - - interrupt-controller@7e00b200 { - compatible = "brcm,bcm2836-armctrl-ic"; - #interrupt-cells = <0x2>; - interrupt-parent = <0x2>; - interrupts = <0x8>; - phandle = <0x1>; - reg = <0x7e00b200 0x200>; - interrupt-controller; - }; - - local_intc { - compatible = "brcm,bcm2836-l1-intc"; - #interrupt-cells = <0x1>; - interrupt-parent = <0x2>; - phandle = <0x2>; - reg = <0x40000000 0x100>; - interrupt-controller; - }; - - dsi@7e700000 { - power-domains = <0x12 0x12>; - compatible = "brcm,bcm2835-dsi1"; - clocks = <0x7 0x23 0x7 0x30 0x7 0x32>; - clock-names = "phy", "escape", "pixel"; - status = "disabled"; - #address-cells = <0x1>; - interrupts = <0x2 0xc>; - #size-cells = <0x0>; - #clock-cells = <0x1>; - phandle = <0x5>; - reg = <0x7e700000 0x8c>; - clock-output-names = "dsi1_byte", "dsi1_ddr2", "dsi1_ddr"; - }; - - sound { - status = "disabled"; - phandle = <0x46>; - }; - - i2c@7e205000 { - compatible = "brcm,bcm2835-i2c"; - clocks = <0x7 0x14>; - status = "disabled"; - #address-cells = <0x1>; - interrupts = <0x2 0x15>; - #size-cells = <0x0>; - phandle = <0x25>; - reg = <0x7e205000 0x1000>; - clock-frequency = <0x186a0>; - pinctrl-0 = <0xf>; - pinctrl-names = "default"; - }; - - serial@7e215040 { - compatible = "brcm,bcm2835-aux-uart"; - clocks = <0x10 0x0>; - status = "disabled"; - interrupt-parent = <0x10>; - interrupts = <0x0>; - phandle = <0x22>; - reg = <0x7e215040 0x40>; - pinctrl-0 = <0x11>; - pinctrl-names = "default"; - }; - - dma@7e007000 { - #dma-cells = <0x1>; - compatible = "brcm,bcm2835-dma"; - brcm,dma-channel-mask = <0x7f34>; - interrupts = <0x1 0x10 0x1 0x11 0x1 0x12 0x1 0x13 0x1 0x14 0x1 0x15 0x1 0x16 0x1 0x17 0x1 0x18 0x1 0x19 0x1 0x1a 0x1 0x1b 0x1 0x1b 0x1 0x1b 0x1 0x1b 0x1 0x1c>; - phandle = <0xa>; - reg = <0x7e007000 0xf00>; - interrupt-names = "dma0", "dma1", "dma2", "dma3", "dma4", "dma5", "dma6", "dma7", "dma8", "dma9", "dma10", "dma11", "dma12", "dma13", "dma14", "dma-shared-all"; - }; - - i2c@7e805000 { - compatible = "brcm,bcm2835-i2c"; - clocks = <0x7 0x14>; - status = "disabled"; - #address-cells = <0x1>; - interrupts = <0x2 0x15>; - #size-cells = <0x0>; - phandle = <0x14>; - reg = <0x7e805000 0x1000>; - clock-frequency = <0x186a0>; - }; - - spi@7e215080 { - compatible = "brcm,bcm2835-aux-spi"; - clocks = <0x10 0x1>; - status = "disabled"; - interrupt-parent = <0x10>; - #address-cells = <0x1>; - interrupts = <0x1>; - #size-cells = <0x0>; - phandle = <0x32>; - reg = <0x7e215080 0x40>; - }; - - aux@0x7e215000 { - compatible = "brcm,bcm2835-aux"; - clocks = <0x7 0x14>; - #interrupt-cells = <0x1>; - interrupts = <0x1 0x1d>; - #clock-cells = <0x1>; - phandle = <0x10>; - reg = <0x7e215000 0x8>; - interrupt-controller; - }; - - firmwarekms@7e600000 { - compatible = "raspberrypi,rpi-firmware-kms"; - status = "disabled"; - interrupts = <0x2 0x10>; - brcm,firmware = <0x6>; - phandle = <0x3f>; - reg = <0x7e600000 0x100>; - }; - - rng@7e104000 { - compatible = "brcm,bcm2835-rng"; - phandle = <0x2b>; - reg = <0x7e104000 0x10>; - }; - - syscon@40000000 { - compatible = "brcm,bcm2836-arm-local", "syscon"; - reg = <0x40000000 0x100>; - }; - - usb@7e980000 { - power-domains = <0x12 0x6>; - compatible = "brcm,bcm2708-usb"; - clocks = <0x16>; - clock-names = "otg"; - #address-cells = <0x1>; - interrupts = <0x2 0x0 0x1 0x9>; - #size-cells = <0x0>; - phandle = <0x39>; - reg = <0x7e980000 0x10000 0x7e006000 0x1000>; - - usb1@1 { - compatible = "usb424,9514"; - #address-cells = <0x1>; - #size-cells = <0x0>; - reg = <0x1>; - - usbether@1 { - compatible = "usb424,ec00"; - local-mac-address = [04 05 06 01 02 03]; - phandle = <0x3a>; - reg = <0x1>; - }; - }; - }; - - smi@7e600000 { - compatible = "brcm,bcm2835-smi"; - clocks = <0x7 0x2a>; - status = "disabled"; - interrupts = <0x2 0x10>; - assigned-clock-rates = <0x7735940>; - dma-names = "rx-tx"; - assigned-clocks = <0x7 0x2a>; - phandle = <0x40>; - reg = <0x7e600000 0x100>; - dmas = <0xa 0x4>; - }; - - spi@7e2150c0 { - compatible = "brcm,bcm2835-aux-spi"; - clocks = <0x10 0x2>; - status = "disabled"; - interrupt-parent = <0x10>; - #address-cells = <0x1>; - interrupts = <0x2>; - #size-cells = <0x0>; - phandle = <0x33>; - reg = <0x7e2150c0 0x40>; - }; - }; - - leds { - compatible = "gpio-leds"; - phandle = <0x49>; - - act { - gpios = <0x1b 0x0 0x0>; - label = "led0"; - phandle = <0x27>; - linux,default-trigger = "mmc0"; - }; - - pwr { - gpios = <0x15 0x7 0x0>; - label = "led1"; - phandle = <0x28>; - linux,default-trigger = "input"; - }; - }; - - aliases { - intc = "/soc/interrupt-controller@7e00b200"; - spi2 = "/soc/spi@7e2150c0"; - i2c1 = "/soc/i2c@7e804000"; - i2c_vc = "/soc/i2c@7e205000"; - spi0 = "/soc/spi@7e204000"; - thermal = "/soc/thermal"; - vchiq = "/soc/vchiq"; - sdhost = "/soc/sdhost@7e202000"; - aux = "/soc/aux@0x7e215000"; - gpio = "/soc/gpio@7e200000"; - audio = "/soc/audio"; - dma = "/soc/dma@7e007000"; - soc = "/soc"; - leds = "/leds"; - mmc = "/soc/mmc@7e300000"; - serial1 = "/soc/serial@7e201000"; - i2c_arm = "/soc/i2c@7e804000"; - ethernet = "/soc/usb@7e980000/usb1@1/usbether@1"; - uart0 = "/soc/serial@7e201000"; - fb = "/soc/fb"; - i2c2 = "/soc/i2c@7e805000"; - i2s = "/soc/i2s@7e203000"; - spi1 = "/soc/spi@7e215080"; - usb = "/soc/usb@7e980000"; - i2c0 = "/soc/i2c@7e205000"; - watchdog = "/soc/watchdog@7e100000"; - sound = "/soc/sound"; - mailbox = "/soc/mailbox@7e00b880"; - uart1 = "/soc/serial@7e215040"; - random = "/soc/rng@7e104000"; - i2c = "/soc/i2c@7e804000"; - serial0 = "/soc/serial@7e215040"; - }; - - chosen { - bootargs = "8250.nr_uarts=0 bcm2708_fb.fbwidth=640 bcm2708_fb.fbheight=480 bcm2708_fb.fbswap=1 vc_mem.mem_base=0x3dc00000 vc_mem.mem_size=0x3f000000 dwc_otg.lpm_enable=0 console=ttyS0,115200 console=tty1 root=/dev/mmcblk0p7 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait"; - kaslr-seed = <0xef42e779 0x662d8187>; - }; - - memory { - device_type = "memory"; - reg = <0x0 0x3b000000>; - }; - - fixedregulator_3v3 { - compatible = "regulator-fixed"; - phandle = <0x48>; - regulator-min-microvolt = <0x325aa0>; - regulator-max-microvolt = <0x325aa0>; - regulator-always-on; - regulator-name = "3v3"; - }; - - cpus { - #address-cells = <0x1>; - #size-cells = <0x0>; - phandle = <0x4a>; - - cpu@3 { - compatible = "arm,cortex-a7"; - device_type = "cpu"; - phandle = <0x20>; - reg = <0x3>; - clock-frequency = <0x47868c00>; - }; - - cpu@1 { - compatible = "arm,cortex-a7"; - device_type = "cpu"; - phandle = <0x1e>; - reg = <0x1>; - clock-frequency = <0x47868c00>; - }; - - cpu@2 { - compatible = "arm,cortex-a7"; - device_type = "cpu"; - phandle = <0x1f>; - reg = <0x2>; - clock-frequency = <0x47868c00>; - }; - - cpu@0 { - compatible = "arm,cortex-a7"; - device_type = "cpu"; - phandle = <0x1d>; - reg = <0x0>; - clock-frequency = <0x47868c00>; - }; - }; - - fixedregulator_5v0 { - compatible = "regulator-fixed"; - phandle = <0x47>; - regulator-min-microvolt = <0x4c4b40>; - regulator-max-microvolt = <0x4c4b40>; - regulator-always-on; - regulator-name = "5v0"; - }; - - axi { - - vc_mem { - reg = <0x3dc00000 0x3f000000 0xc0000000>; - }; - }; -}; diff --git a/test/data/s390_hurcules_cpuinfo b/test/data/s390_hurcules_cpuinfo deleted file mode 100644 index 722678f0..00000000 --- a/test/data/s390_hurcules_cpuinfo +++ /dev/null @@ -1,5 +0,0 @@ -vendor_id : IBM/S390 -# processors : 2 -bogomips per cpu: 411.23 -processor 0: version = FF, identification = 111000, machine = 7060 -processor 1: version = FF, identification = 111111, machine = 7060 diff --git a/test/data/sh_dreamcast_cpuinfo b/test/data/sh_dreamcast_cpuinfo deleted file mode 100644 index 84e9dd90..00000000 --- a/test/data/sh_dreamcast_cpuinfo +++ /dev/null @@ -1,9 +0,0 @@ -machine : Sega Dreamcast -processor : 0 -cpu family : sh4 -cpu type : SH7750 -cache size : 8K-bytes/16K-bytes -bogomips : 199.06 -cpu clock : 199.49MHz -bus clock : 99.74MHz -module clock : 49.87MHz diff --git a/test/data/sh_sh3_cpuinfo b/test/data/sh_sh3_cpuinfo deleted file mode 100644 index a9389bec..00000000 --- a/test/data/sh_sh3_cpuinfo +++ /dev/null @@ -1,4 +0,0 @@ -cpu family : SH-3 -cache size : 8K-byte -bogomips : 39.83 - diff --git a/test/data/sh_sh64_cpuinfo b/test/data/sh_sh64_cpuinfo deleted file mode 100644 index ba869c45..00000000 --- a/test/data/sh_sh64_cpuinfo +++ /dev/null @@ -1,13 +0,0 @@ -machine : Hitachi Cayman -processor : 0 -cpu family : SH-5 -cpu type : SH5-101 -icache size : 32K-bytes -dcache size : 32K-bytes -itlb entries : 64 -dtlb entries : 64 -cpu clock : 314.73MHz -bus clock : 157.36MHz -module clock : 26.22MHz -bogomips : 313.75 - diff --git a/test/data/sparc_m7_cpuinfo b/test/data/sparc_m7_cpuinfo deleted file mode 100644 index b3556e30..00000000 --- a/test/data/sparc_m7_cpuinfo +++ /dev/null @@ -1,45 +0,0 @@ -cpu : SPARC-M7 -fpu : SPARC-M7 integrated FPU -pmu : sparc-m7 -prom : OBP 4.40.1 2016/04/25 06:45 -type : sun4v -ncpus probed : 16 -ncpus active : 16 -D$ parity tl1 : 0 -I$ parity tl1 : 0 -cpucaps : flush,stbar,swap,muldiv,v9,blkinit,n2,mul32,div32,v8plus,popc,vis,vis2,ASIBlkInit,fmaf,vis3,hpc,ima,pause,cbcond,adp,aes,des,camellia,md5,sha1,sha256,sha512,mpmul,montmul,montsqr,crc32c -Cpu0ClkTck : 00000000f65c15b0 -Cpu1ClkTck : 00000000f65c15b0 -Cpu2ClkTck : 00000000f65c15b0 -Cpu3ClkTck : 00000000f65c15b0 -Cpu4ClkTck : 00000000f65c15b0 -Cpu5ClkTck : 00000000f65c15b0 -Cpu6ClkTck : 00000000f65c15b0 -Cpu7ClkTck : 00000000f65c15b0 -Cpu8ClkTck : 00000000f65c15b0 -Cpu9ClkTck : 00000000f65c15b0 -Cpu10ClkTck : 00000000f65c15b0 -Cpu11ClkTck : 00000000f65c15b0 -Cpu12ClkTck : 00000000f65c15b0 -Cpu13ClkTck : 00000000f65c15b0 -Cpu14ClkTck : 00000000f65c15b0 -Cpu15ClkTck : 00000000f65c15b0 -MMU Type : Hypervisor (sun4v) -MMU PGSZs : 8K,64K,4MB,256MB,2GB,16GB -State: -CPU0: online -CPU1: online -CPU2: online -CPU3: online -CPU4: online -CPU5: online -CPU6: online -CPU7: online -CPU8: online -CPU9: online -CPU10: online -CPU11: online -CPU12: online -CPU13: online -CPU14: online -CPU15: online diff --git a/test/data/x86_amdr7_cpuinfo b/test/data/x86_amdr7_cpuinfo deleted file mode 100644 index ba527616..00000000 --- a/test/data/x86_amdr7_cpuinfo +++ /dev/null @@ -1,447 +0,0 @@ -processor : 0 -vendor_id : AuthenticAMD -cpu family : 23 -model : 1 -model name : AMD Ryzen 7 1800X Eight-Core Processor -stepping : 1 -microcode : 0x8001105 -cpu MHz : 2200.000 -cache size : 512 KB -physical id : 0 -siblings : 16 -core id : 0 -cpu cores : 8 -apicid : 0 -initial apicid : 0 -fpu : yes -fpu_exception : yes -cpuid level : 13 -wp : yes -flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl nonstop_tsc extd_apicid aperfmperf pni pclmulqdq monitor ssse3 fma cx16 sse4_1 sse4_2 movbe popcnt aes xsave avx f16c rdrand lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw skinit wdt tce topoext perfctr_core perfctr_nb bpext perfctr_l2 mwaitx hw_pstate vmmcall fsgsbase bmi1 avx2 smep bmi2 rdseed adx smap clflushopt sha_ni xsaveopt xsavec xgetbv1 xsaves clzero irperf arat npt lbrv svm_lock nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold avic overflow_recov succor smca -bugs : fxsave_leak sysret_ss_attrs null_seg -bogomips : 7186.18 -TLB size : 2560 4K pages -clflush size : 64 -cache_alignment : 64 -address sizes : 48 bits physical, 48 bits virtual -power management: ts ttp tm hwpstate eff_freq_ro [13] [14] - -processor : 1 -vendor_id : AuthenticAMD -cpu family : 23 -model : 1 -model name : AMD Ryzen 7 1800X Eight-Core Processor -stepping : 1 -microcode : 0x8001105 -cpu MHz : 2200.000 -cache size : 512 KB -physical id : 0 -siblings : 16 -core id : 0 -cpu cores : 8 -apicid : 1 -initial apicid : 1 -fpu : yes -fpu_exception : yes -cpuid level : 13 -wp : yes -flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl nonstop_tsc extd_apicid aperfmperf pni pclmulqdq monitor ssse3 fma cx16 sse4_1 sse4_2 movbe popcnt aes xsave avx f16c rdrand lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw skinit wdt tce topoext perfctr_core perfctr_nb bpext perfctr_l2 mwaitx hw_pstate vmmcall fsgsbase bmi1 avx2 smep bmi2 rdseed adx smap clflushopt sha_ni xsaveopt xsavec xgetbv1 xsaves clzero irperf arat npt lbrv svm_lock nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold avic overflow_recov succor smca -bugs : fxsave_leak sysret_ss_attrs null_seg -bogomips : 7186.18 -TLB size : 2560 4K pages -clflush size : 64 -cache_alignment : 64 -address sizes : 48 bits physical, 48 bits virtual -power management: ts ttp tm hwpstate eff_freq_ro [13] [14] - -processor : 2 -vendor_id : AuthenticAMD -cpu family : 23 -model : 1 -model name : AMD Ryzen 7 1800X Eight-Core Processor -stepping : 1 -microcode : 0x8001105 -cpu MHz : 2200.000 -cache size : 512 KB -physical id : 0 -siblings : 16 -core id : 1 -cpu cores : 8 -apicid : 2 -initial apicid : 2 -fpu : yes -fpu_exception : yes -cpuid level : 13 -wp : yes -flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl nonstop_tsc extd_apicid aperfmperf pni pclmulqdq monitor ssse3 fma cx16 sse4_1 sse4_2 movbe popcnt aes xsave avx f16c rdrand lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw skinit wdt tce topoext perfctr_core perfctr_nb bpext perfctr_l2 mwaitx hw_pstate vmmcall fsgsbase bmi1 avx2 smep bmi2 rdseed adx smap clflushopt sha_ni xsaveopt xsavec xgetbv1 xsaves clzero irperf arat npt lbrv svm_lock nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold avic overflow_recov succor smca -bugs : fxsave_leak sysret_ss_attrs null_seg -bogomips : 7186.18 -TLB size : 2560 4K pages -clflush size : 64 -cache_alignment : 64 -address sizes : 48 bits physical, 48 bits virtual -power management: ts ttp tm hwpstate eff_freq_ro [13] [14] - -processor : 3 -vendor_id : AuthenticAMD -cpu family : 23 -model : 1 -model name : AMD Ryzen 7 1800X Eight-Core Processor -stepping : 1 -microcode : 0x8001105 -cpu MHz : 2200.000 -cache size : 512 KB -physical id : 0 -siblings : 16 -core id : 1 -cpu cores : 8 -apicid : 3 -initial apicid : 3 -fpu : yes -fpu_exception : yes -cpuid level : 13 -wp : yes -flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl nonstop_tsc extd_apicid aperfmperf pni pclmulqdq monitor ssse3 fma cx16 sse4_1 sse4_2 movbe popcnt aes xsave avx f16c rdrand lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw skinit wdt tce topoext perfctr_core perfctr_nb bpext perfctr_l2 mwaitx hw_pstate vmmcall fsgsbase bmi1 avx2 smep bmi2 rdseed adx smap clflushopt sha_ni xsaveopt xsavec xgetbv1 xsaves clzero irperf arat npt lbrv svm_lock nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold avic overflow_recov succor smca -bugs : fxsave_leak sysret_ss_attrs null_seg -bogomips : 7186.18 -TLB size : 2560 4K pages -clflush size : 64 -cache_alignment : 64 -address sizes : 48 bits physical, 48 bits virtual -power management: ts ttp tm hwpstate eff_freq_ro [13] [14] - -processor : 4 -vendor_id : AuthenticAMD -cpu family : 23 -model : 1 -model name : AMD Ryzen 7 1800X Eight-Core Processor -stepping : 1 -microcode : 0x8001105 -cpu MHz : 2200.000 -cache size : 512 KB -physical id : 0 -siblings : 16 -core id : 2 -cpu cores : 8 -apicid : 4 -initial apicid : 4 -fpu : yes -fpu_exception : yes -cpuid level : 13 -wp : yes -flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl nonstop_tsc extd_apicid aperfmperf pni pclmulqdq monitor ssse3 fma cx16 sse4_1 sse4_2 movbe popcnt aes xsave avx f16c rdrand lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw skinit wdt tce topoext perfctr_core perfctr_nb bpext perfctr_l2 mwaitx hw_pstate vmmcall fsgsbase bmi1 avx2 smep bmi2 rdseed adx smap clflushopt sha_ni xsaveopt xsavec xgetbv1 xsaves clzero irperf arat npt lbrv svm_lock nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold avic overflow_recov succor smca -bugs : fxsave_leak sysret_ss_attrs null_seg -bogomips : 7186.18 -TLB size : 2560 4K pages -clflush size : 64 -cache_alignment : 64 -address sizes : 48 bits physical, 48 bits virtual -power management: ts ttp tm hwpstate eff_freq_ro [13] [14] - -processor : 5 -vendor_id : AuthenticAMD -cpu family : 23 -model : 1 -model name : AMD Ryzen 7 1800X Eight-Core Processor -stepping : 1 -microcode : 0x8001105 -cpu MHz : 2200.000 -cache size : 512 KB -physical id : 0 -siblings : 16 -core id : 2 -cpu cores : 8 -apicid : 5 -initial apicid : 5 -fpu : yes -fpu_exception : yes -cpuid level : 13 -wp : yes -flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl nonstop_tsc extd_apicid aperfmperf pni pclmulqdq monitor ssse3 fma cx16 sse4_1 sse4_2 movbe popcnt aes xsave avx f16c rdrand lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw skinit wdt tce topoext perfctr_core perfctr_nb bpext perfctr_l2 mwaitx hw_pstate vmmcall fsgsbase bmi1 avx2 smep bmi2 rdseed adx smap clflushopt sha_ni xsaveopt xsavec xgetbv1 xsaves clzero irperf arat npt lbrv svm_lock nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold avic overflow_recov succor smca -bugs : fxsave_leak sysret_ss_attrs null_seg -bogomips : 7186.18 -TLB size : 2560 4K pages -clflush size : 64 -cache_alignment : 64 -address sizes : 48 bits physical, 48 bits virtual -power management: ts ttp tm hwpstate eff_freq_ro [13] [14] - -processor : 6 -vendor_id : AuthenticAMD -cpu family : 23 -model : 1 -model name : AMD Ryzen 7 1800X Eight-Core Processor -stepping : 1 -microcode : 0x8001105 -cpu MHz : 2200.000 -cache size : 512 KB -physical id : 0 -siblings : 16 -core id : 3 -cpu cores : 8 -apicid : 6 -initial apicid : 6 -fpu : yes -fpu_exception : yes -cpuid level : 13 -wp : yes -flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl nonstop_tsc extd_apicid aperfmperf pni pclmulqdq monitor ssse3 fma cx16 sse4_1 sse4_2 movbe popcnt aes xsave avx f16c rdrand lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw skinit wdt tce topoext perfctr_core perfctr_nb bpext perfctr_l2 mwaitx hw_pstate vmmcall fsgsbase bmi1 avx2 smep bmi2 rdseed adx smap clflushopt sha_ni xsaveopt xsavec xgetbv1 xsaves clzero irperf arat npt lbrv svm_lock nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold avic overflow_recov succor smca -bugs : fxsave_leak sysret_ss_attrs null_seg -bogomips : 7186.18 -TLB size : 2560 4K pages -clflush size : 64 -cache_alignment : 64 -address sizes : 48 bits physical, 48 bits virtual -power management: ts ttp tm hwpstate eff_freq_ro [13] [14] - -processor : 7 -vendor_id : AuthenticAMD -cpu family : 23 -model : 1 -model name : AMD Ryzen 7 1800X Eight-Core Processor -stepping : 1 -microcode : 0x8001105 -cpu MHz : 2200.000 -cache size : 512 KB -physical id : 0 -siblings : 16 -core id : 3 -cpu cores : 8 -apicid : 7 -initial apicid : 7 -fpu : yes -fpu_exception : yes -cpuid level : 13 -wp : yes -flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl nonstop_tsc extd_apicid aperfmperf pni pclmulqdq monitor ssse3 fma cx16 sse4_1 sse4_2 movbe popcnt aes xsave avx f16c rdrand lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw skinit wdt tce topoext perfctr_core perfctr_nb bpext perfctr_l2 mwaitx hw_pstate vmmcall fsgsbase bmi1 avx2 smep bmi2 rdseed adx smap clflushopt sha_ni xsaveopt xsavec xgetbv1 xsaves clzero irperf arat npt lbrv svm_lock nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold avic overflow_recov succor smca -bugs : fxsave_leak sysret_ss_attrs null_seg -bogomips : 7186.18 -TLB size : 2560 4K pages -clflush size : 64 -cache_alignment : 64 -address sizes : 48 bits physical, 48 bits virtual -power management: ts ttp tm hwpstate eff_freq_ro [13] [14] - -processor : 8 -vendor_id : AuthenticAMD -cpu family : 23 -model : 1 -model name : AMD Ryzen 7 1800X Eight-Core Processor -stepping : 1 -microcode : 0x8001105 -cpu MHz : 3600.000 -cache size : 512 KB -physical id : 0 -siblings : 16 -core id : 4 -cpu cores : 8 -apicid : 8 -initial apicid : 8 -fpu : yes -fpu_exception : yes -cpuid level : 13 -wp : yes -flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl nonstop_tsc extd_apicid aperfmperf pni pclmulqdq monitor ssse3 fma cx16 sse4_1 sse4_2 movbe popcnt aes xsave avx f16c rdrand lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw skinit wdt tce topoext perfctr_core perfctr_nb bpext perfctr_l2 mwaitx hw_pstate vmmcall fsgsbase bmi1 avx2 smep bmi2 rdseed adx smap clflushopt sha_ni xsaveopt xsavec xgetbv1 xsaves clzero irperf arat npt lbrv svm_lock nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold avic overflow_recov succor smca -bugs : fxsave_leak sysret_ss_attrs null_seg -bogomips : 7186.18 -TLB size : 2560 4K pages -clflush size : 64 -cache_alignment : 64 -address sizes : 48 bits physical, 48 bits virtual -power management: ts ttp tm hwpstate eff_freq_ro [13] [14] - -processor : 9 -vendor_id : AuthenticAMD -cpu family : 23 -model : 1 -model name : AMD Ryzen 7 1800X Eight-Core Processor -stepping : 1 -microcode : 0x8001105 -cpu MHz : 2200.000 -cache size : 512 KB -physical id : 0 -siblings : 16 -core id : 4 -cpu cores : 8 -apicid : 9 -initial apicid : 9 -fpu : yes -fpu_exception : yes -cpuid level : 13 -wp : yes -flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl nonstop_tsc extd_apicid aperfmperf pni pclmulqdq monitor ssse3 fma cx16 sse4_1 sse4_2 movbe popcnt aes xsave avx f16c rdrand lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw skinit wdt tce topoext perfctr_core perfctr_nb bpext perfctr_l2 mwaitx hw_pstate vmmcall fsgsbase bmi1 avx2 smep bmi2 rdseed adx smap clflushopt sha_ni xsaveopt xsavec xgetbv1 xsaves clzero irperf arat npt lbrv svm_lock nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold avic overflow_recov succor smca -bugs : fxsave_leak sysret_ss_attrs null_seg -bogomips : 7186.18 -TLB size : 2560 4K pages -clflush size : 64 -cache_alignment : 64 -address sizes : 48 bits physical, 48 bits virtual -power management: ts ttp tm hwpstate eff_freq_ro [13] [14] - -processor : 10 -vendor_id : AuthenticAMD -cpu family : 23 -model : 1 -model name : AMD Ryzen 7 1800X Eight-Core Processor -stepping : 1 -microcode : 0x8001105 -cpu MHz : 2200.000 -cache size : 512 KB -physical id : 0 -siblings : 16 -core id : 5 -cpu cores : 8 -apicid : 10 -initial apicid : 10 -fpu : yes -fpu_exception : yes -cpuid level : 13 -wp : yes -flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl nonstop_tsc extd_apicid aperfmperf pni pclmulqdq monitor ssse3 fma cx16 sse4_1 sse4_2 movbe popcnt aes xsave avx f16c rdrand lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw skinit wdt tce topoext perfctr_core perfctr_nb bpext perfctr_l2 mwaitx hw_pstate vmmcall fsgsbase bmi1 avx2 smep bmi2 rdseed adx smap clflushopt sha_ni xsaveopt xsavec xgetbv1 xsaves clzero irperf arat npt lbrv svm_lock nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold avic overflow_recov succor smca -bugs : fxsave_leak sysret_ss_attrs null_seg -bogomips : 7186.18 -TLB size : 2560 4K pages -clflush size : 64 -cache_alignment : 64 -address sizes : 48 bits physical, 48 bits virtual -power management: ts ttp tm hwpstate eff_freq_ro [13] [14] - -processor : 11 -vendor_id : AuthenticAMD -cpu family : 23 -model : 1 -model name : AMD Ryzen 7 1800X Eight-Core Processor -stepping : 1 -microcode : 0x8001105 -cpu MHz : 2200.000 -cache size : 512 KB -physical id : 0 -siblings : 16 -core id : 5 -cpu cores : 8 -apicid : 11 -initial apicid : 11 -fpu : yes -fpu_exception : yes -cpuid level : 13 -wp : yes -flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl nonstop_tsc extd_apicid aperfmperf pni pclmulqdq monitor ssse3 fma cx16 sse4_1 sse4_2 movbe popcnt aes xsave avx f16c rdrand lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw skinit wdt tce topoext perfctr_core perfctr_nb bpext perfctr_l2 mwaitx hw_pstate vmmcall fsgsbase bmi1 avx2 smep bmi2 rdseed adx smap clflushopt sha_ni xsaveopt xsavec xgetbv1 xsaves clzero irperf arat npt lbrv svm_lock nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold avic overflow_recov succor smca -bugs : fxsave_leak sysret_ss_attrs null_seg -bogomips : 7186.18 -TLB size : 2560 4K pages -clflush size : 64 -cache_alignment : 64 -address sizes : 48 bits physical, 48 bits virtual -power management: ts ttp tm hwpstate eff_freq_ro [13] [14] - -processor : 12 -vendor_id : AuthenticAMD -cpu family : 23 -model : 1 -model name : AMD Ryzen 7 1800X Eight-Core Processor -stepping : 1 -microcode : 0x8001105 -cpu MHz : 2200.000 -cache size : 512 KB -physical id : 0 -siblings : 16 -core id : 6 -cpu cores : 8 -apicid : 12 -initial apicid : 12 -fpu : yes -fpu_exception : yes -cpuid level : 13 -wp : yes -flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl nonstop_tsc extd_apicid aperfmperf pni pclmulqdq monitor ssse3 fma cx16 sse4_1 sse4_2 movbe popcnt aes xsave avx f16c rdrand lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw skinit wdt tce topoext perfctr_core perfctr_nb bpext perfctr_l2 mwaitx hw_pstate vmmcall fsgsbase bmi1 avx2 smep bmi2 rdseed adx smap clflushopt sha_ni xsaveopt xsavec xgetbv1 xsaves clzero irperf arat npt lbrv svm_lock nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold avic overflow_recov succor smca -bugs : fxsave_leak sysret_ss_attrs null_seg -bogomips : 7186.18 -TLB size : 2560 4K pages -clflush size : 64 -cache_alignment : 64 -address sizes : 48 bits physical, 48 bits virtual -power management: ts ttp tm hwpstate eff_freq_ro [13] [14] - -processor : 13 -vendor_id : AuthenticAMD -cpu family : 23 -model : 1 -model name : AMD Ryzen 7 1800X Eight-Core Processor -stepping : 1 -microcode : 0x8001105 -cpu MHz : 2200.000 -cache size : 512 KB -physical id : 0 -siblings : 16 -core id : 6 -cpu cores : 8 -apicid : 13 -initial apicid : 13 -fpu : yes -fpu_exception : yes -cpuid level : 13 -wp : yes -flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl nonstop_tsc extd_apicid aperfmperf pni pclmulqdq monitor ssse3 fma cx16 sse4_1 sse4_2 movbe popcnt aes xsave avx f16c rdrand lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw skinit wdt tce topoext perfctr_core perfctr_nb bpext perfctr_l2 mwaitx hw_pstate vmmcall fsgsbase bmi1 avx2 smep bmi2 rdseed adx smap clflushopt sha_ni xsaveopt xsavec xgetbv1 xsaves clzero irperf arat npt lbrv svm_lock nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold avic overflow_recov succor smca -bugs : fxsave_leak sysret_ss_attrs null_seg -bogomips : 7186.18 -TLB size : 2560 4K pages -clflush size : 64 -cache_alignment : 64 -address sizes : 48 bits physical, 48 bits virtual -power management: ts ttp tm hwpstate eff_freq_ro [13] [14] - -processor : 14 -vendor_id : AuthenticAMD -cpu family : 23 -model : 1 -model name : AMD Ryzen 7 1800X Eight-Core Processor -stepping : 1 -microcode : 0x8001105 -cpu MHz : 2200.000 -cache size : 512 KB -physical id : 0 -siblings : 16 -core id : 7 -cpu cores : 8 -apicid : 14 -initial apicid : 14 -fpu : yes -fpu_exception : yes -cpuid level : 13 -wp : yes -flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl nonstop_tsc extd_apicid aperfmperf pni pclmulqdq monitor ssse3 fma cx16 sse4_1 sse4_2 movbe popcnt aes xsave avx f16c rdrand lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw skinit wdt tce topoext perfctr_core perfctr_nb bpext perfctr_l2 mwaitx hw_pstate vmmcall fsgsbase bmi1 avx2 smep bmi2 rdseed adx smap clflushopt sha_ni xsaveopt xsavec xgetbv1 xsaves clzero irperf arat npt lbrv svm_lock nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold avic overflow_recov succor smca -bugs : fxsave_leak sysret_ss_attrs null_seg -bogomips : 7186.18 -TLB size : 2560 4K pages -clflush size : 64 -cache_alignment : 64 -address sizes : 48 bits physical, 48 bits virtual -power management: ts ttp tm hwpstate eff_freq_ro [13] [14] - -processor : 15 -vendor_id : AuthenticAMD -cpu family : 23 -model : 1 -model name : AMD Ryzen 7 1800X Eight-Core Processor -stepping : 1 -microcode : 0x8001105 -cpu MHz : 2200.000 -cache size : 512 KB -physical id : 0 -siblings : 16 -core id : 7 -cpu cores : 8 -apicid : 15 -initial apicid : 15 -fpu : yes -fpu_exception : yes -cpuid level : 13 -wp : yes -flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl nonstop_tsc extd_apicid aperfmperf pni pclmulqdq monitor ssse3 fma cx16 sse4_1 sse4_2 movbe popcnt aes xsave avx f16c rdrand lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw skinit wdt tce topoext perfctr_core perfctr_nb bpext perfctr_l2 mwaitx hw_pstate vmmcall fsgsbase bmi1 avx2 smep bmi2 rdseed adx smap clflushopt sha_ni xsaveopt xsavec xgetbv1 xsaves clzero irperf arat npt lbrv svm_lock nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold avic overflow_recov succor smca -bugs : fxsave_leak sysret_ss_attrs null_seg -bogomips : 7186.18 -TLB size : 2560 4K pages -clflush size : 64 -cache_alignment : 64 -address sizes : 48 bits physical, 48 bits virtual -power management: ts ttp tm hwpstate eff_freq_ro [13] [14] diff --git a/test/data/x86_cyrix6x86coma_cpuinfo b/test/data/x86_cyrix6x86coma_cpuinfo deleted file mode 100644 index 9080825f..00000000 --- a/test/data/x86_cyrix6x86coma_cpuinfo +++ /dev/null @@ -1,17 +0,0 @@ -processor : 0 -vendor_id : CyrixInstead -cpu family : 5 -model : 4 -model name : 6x86L 2x Core/Bus Clock -stepping : 2 -fdiv_bug : no -hlt_bug : no -sep_bug : no -f00f_bug : no -coma_bug : yes -fpu : yes -fpu_exception : yes -cpuid level : 1 -wp : yes -flags : fpu de cx8 mtrr -bogomips : 149.50 diff --git a/test/data/x86_pent_cpuinfo b/test/data/x86_pent_cpuinfo deleted file mode 100644 index e8a7ef81..00000000 --- a/test/data/x86_pent_cpuinfo +++ /dev/null @@ -1,17 +0,0 @@ -processor : 0 -vendor_id : GenuineIntel -cpu family : 5 -model : 4 -model name : Pentium MMX -stepping : 3 -cpu MHz : 232.300 -fdiv_bug : no -hlt_bug : no -f00f_bug : yes -coma_bug : no -fpu : yes -fpu_exception : yes -cpuid level : 1 -wp : yes -flags : fpu vme de pse tsc msr mce cx8 mmx -bogomips : 465.42 diff --git a/test/data/x86_pentf00f_cpuinfo b/test/data/x86_pentf00f_cpuinfo deleted file mode 100644 index 7a511dd3..00000000 --- a/test/data/x86_pentf00f_cpuinfo +++ /dev/null @@ -1,18 +0,0 @@ -processor : 0 -vendor_id : GenuineIntel -cpu family : 5 -model : 2 -model name : Pentium 75 - 200 -stepping : 12 -cpu MHz : 133.335273 -fdiv_bug : no -hlt_bug : no -sep_bug : no -f00f_bug : yes -fpu : yes -fpu_exception : yes -cpuid level : 1 -wp : yes -flags : fpu vme de pse tsc msr mce cx8 -bogomips : 53.04 - diff --git a/test/rm_hardinfo.sh b/test/rm_hardinfo.sh deleted file mode 100644 index 8cd58075..00000000 --- a/test/rm_hardinfo.sh +++ /dev/null @@ -1,30 +0,0 @@ -#!bash - -# when you just want it all gone. -# -# it is not smart in any way, and will screw up your package manager -# if hardinfo is installed as a package. - -if [[ $EUID -ne 0 ]]; then - echo "This script must be run as root." - exit 1 -fi - -remove_hardinfo() { - BASEDER="$1" - echo "Removing hardinfo from $BASEDER ..." - rm -rf "$BASEDER/share/hardinfo" - rm -rf "$BASEDER/lib/hardinfo" - rm -f "$BASEDER"/share/locale/*/LC_MESSAGES/hardinfo.mo - rm -f "$BASEDER/bin/hardinfo" - rm -f "$BASEDER/share/applications/hardinfo.desktop" - rm -f "$BASEDER/share/doc/hardinfo" - rm -f "$BASEDER/share/man/man1/hardinfo.1.gz" - rm -f "$BASEDER/share/pixmaps/hardinfo.xpm" - rm -f "$BASEDER/share/menu/hardinfo" - #locate -e hardinfo | grep "$BASEDER" -} - -remove_hardinfo "/usr/local" -remove_hardinfo "/usr" -# add some other base install path here diff --git a/test/test.sh b/test/test.sh deleted file mode 100644 index 7f52e2b6..00000000 --- a/test/test.sh +++ /dev/null @@ -1,33 +0,0 @@ - -DATADER=`pwd` - -do_test() { - ARCH="$1" - CPUINFO="$DATADER/$2" - mkdir "build-$ARCH" - cd "build-$ARCH" - cmake ../.. -DOVRARCH=$ARCH -DOVRCPUINFO=\"$CPUINFO\" - make -j - cd .. -} - -#do_test x86 data/x86_pent_cpuinfo -#do_test x86 data/x86_amdr7_cpuinfo -#do_test x86 data/x86_pentf00f_cpuinfo -#do_test x86 data/x86_cyrix6x86coma_cpuinfo -#do_test ppc data/ppc_g5_cpuinfo -#do_test ppc data/power8_cpuinfo -#do_test arm data/arm_rpi3_aarch64_cpuinfo -#do_test arm data/arm_jetsontx2_cpuinfo -#do_test sparc data/sparc_m7_cpuinfo -#do_test mips data/mips_loongson_cpuinfo -#do_test alpha data/alpha_as_cpuinfo -#do_test parisc data/parisc_hppa_fortex4_cpuinfo -#do_test ia64 data/ia64_x2_cpuinfo -#do_test m68k data/m68k_sun3_cpuinfo -#do_test sh data/sh_dreamcast_cpuinfo -#do_test sh data/sh_sh3_cpuinfo -#do_test sh data/sh_sh64_cpuinfo -#do_test s390 data/s390_hurcules_cpuinfo -#do_test riscv data/riscv_sim_cpuinfo -#do_test riscv data/riscv_fake_cpuinfo diff --git a/test/ws_scan.sh b/test/ws_scan.sh deleted file mode 100644 index d22586f8..00000000 --- a/test/ws_scan.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!bash - -# checks for mixed indentation and empty lines with whitespace -# run from test/ - -cd .. -grep -lHIrP --include=*.{h,c} -- '^((\t+ +)|( +\t+)|\s+$)' | sed 's/^/- [ ] /' > test/hardinfo-bad.txt -grep -LHIrP --include=*.{h,c} -- '^((\t+ +)|( +\t+)|\s+$)' | sed 's/^/- [x] /' > test/hardinfo-good.txt -cat test/hardinfo-bad.txt test/hardinfo-good.txt | LC_ALL=C sort -k 1.5 | grep -vP " (test|build|deps)" -rm test/hardinfo-bad.txt test/hardinfo-good.txt -cd test diff --git a/tools/rm_hardinfo.sh b/tools/rm_hardinfo.sh new file mode 100755 index 00000000..7b4480a8 --- /dev/null +++ b/tools/rm_hardinfo.sh @@ -0,0 +1,29 @@ +#!/bin/bash + +# when you want to remove the hardinfo* mess from a make install + +if [[ $EUID -ne 0 ]]; then + echo "This script must be run as root." + exit 1 +fi + +remove_hardinfo() { + BASEDER="$1" + echo "Removing hardinfo* from $BASEDER ..." + rm -rf $BASEDER/share/hardinfo* + rm -rf $BASEDER/lib/hardinfo* + rm -f $BASEDER/share/locale/*/LC_MESSAGES/hardinfo*.mo + rm -f $BASEDER/bin/hardinfo* + rm -f $BASEDER/share/applications/hardinfo*.desktop + rm -f $BASEDER/share/doc/hardinfo* + rm -f $BASEDER/share/man/man1/hardinfo*.1.gz + rm -f $BASEDER/share/pixmaps/hardinfo*.xpm + rm -f $BASEDER/share/menu/hardinfo* + #locate -e hardinfo | grep "$BASEDER" +} + +# add some other base install path here +remove_hardinfo "/usr/local" + +echo "Removing hardinfo* settings..." +rm -rf ~/.config/hardinfo* -- cgit v1.2.3
%s%s
%s
%s%s%s%s
%s%s%s%s