Computer

From Things and Stuff Wiki
Revision as of 03:17, 1 January 2022 by Milk (talk | contribs) (→‎Arduino)
Jump to navigation Jump to search


General

  • https://en.wikipedia.org/wiki/Koomey%27s_law - describes a trend in the history of computing hardware: for about a half-century, the number of computations per joule of energy dissipated doubled about every 1.57 years. Professor Jonathan Koomey described the trend in a 2010 paper in which he wrote that "at a fixed computing load, the amount of battery you need will fall by a factor of two every year and a half." This trend had been remarkably stable since the 1950s (R2 of over 98%). But in 2011, Koomey re-examined this data and found that after 2000, the doubling slowed to about once every 2.6 years. This is related to the slowing of Moore's Law, the ability to build smaller transistors; and the end around 2005 of Dennard scaling, the ability to build smaller transistors with constant power density. [1]



  • HDT - stands for Hardware Detection Tool is a Syslinux com32 module that displays low-level information for any x86 compatible system. It provides both a command line interface and a semi-graphical menu mode for browsing.




Resources


News and reviews


Shopping


Comparison


Notes

  • Core I7-4790K 4-Core 4.0GHz
  • 2x PCI-E 3.0


Linux / UNIX

See *nix, *nix#Hardware

cat /proc/cpuinfo

lspci

lsusb

dmidecode

Class / form



  • Portable Hardware Locality (hwloc) - provides a portable abstraction (across OS, versions, architectures, ...) of the hierarchical topology of modern architectures, including NUMA memory nodes, sockets, shared caches, cores and simultaneous multithreading. It also gathers various system attributes such as cache and memory information as well as the locality of I/O devices such as network interfaces, InfiniBand HCAs or GPUs.

Case

Mainframes

  • https://en.wikipedia.org/wiki/Mainframe_computer - or mainframes (colloquially referred to as "big iron") are computers used primarily by large organizations for critical applications; bulk data processing, such as census, industry and consumer statistics, enterprise resource planning; and transaction processing. They are larger and have more processing power than some other classes of computers: minicomputers, servers, workstations, and personal computers.The term originally referred to the large cabinets called "main frames" that housed the central processing unit and main memory of early computers. Later, the term was used to distinguish high-end commercial machines from less powerful units. Most large-scale computer system architectures were established in the 1960s, but continue to evolve. Mainframe computers are often used as servers.


Minicomputer

  • https://en.wikipedia.org/wiki/Minicomputer - or colloquially mini, is a class of smaller computers that was developed in the mid-1960's and sold for much less than mainframe and mid-size computers from IBM and its direct competitors. In a 1970 survey, The New York Times suggested a consensus definition of a minicomputer as a machine costing less than US$25,000 (equivalent to $165,000 in 2019), with an input-output device such as a teleprinter and at least four thousand words of memory, that is capable of running programs in a higher level language, such as Fortran or BASIC. The class formed a distinct group with its own software architectures and operating systems. Minis were designed for control, instrumentation, human interaction, and communication switching as distinct from calculation and record keeping. Many were sold indirectly to original equipment manufacturers (OEMs) for final end use application. During the two decade lifetime of the minicomputer class (1965–1985), almost 100 companies formed and only a half dozen remained. When single-chip CPU microprocessors appeared, beginning with the Intel 4004 in 1971, the term "minicomputer" came to mean a machine that lies in the middle range of the computing spectrum, in between the smallest mainframe computers and the microcomputers. The term "minicomputer" is little used today; the contemporary term for this class of system is "midrange computer", such as the higher-end SPARC, Power ISA and Itanium-based systems from Oracle, IBM and Hewlett-Packard.


  • https://en.wikipedia.org/wiki/Midrange_computer - or midrange systems, are a class of computer systems which fall in between mainframe computers and microcomputers. The class called minicomputers emerged in the 1960s and machines were generally known at the time as minicomputers – especially models from Digital Equipment Corporation (PDP line), Data General, Hewlett-Packard (HP3000 line and successors), and Sun Microsystems (SPARC Enterprise). These were widely used in science and research as well as for business.IBM favored the term "midrange computer" for their comparable, but more business-oriented, systems.




  • https://en.wikipedia.org/wiki/Superminicomputer - colloquially supermini, was a high-end minicomputer. The term was used to distinguish the emerging 32-bit architecture midrange computers introduced in the mid to late 1970s from the classical 16-bit systems that preceded them. The development of these computers was driven by the need of applications to address larger memory. The term midicomputer had been used earlier to refer to these systems. Virtual memory was often an additional criteria that was considered for inclusion in this class of system. The computational speed of these machines was significantly greater than the 16-bit mincomputers and approached the performance of small mainframe computers. The name has at times been described as a "frivolous" term created by "marketeers" that lacks a specific definition. Describing a class of system has historically been seen as problematic: "In the computer kingdom, taxonomic classification of equipment is more of a black art than a science." There is some diagreement about which systems should be included in this class. The origin of the name is uncertain. As technology improved rapidly the distinction between minicomputer and superminicomputer performance blurred. Companies that sold mainframe computers began to offer machines in the same price and performance range as superminicomputers. By the mid-1980s microprocessors with the hardware architecture of superminicomputers were used to produce scientific and engineering workstations. The minicomputer industry then declined through the early 1990s. The term is now considered obsolete] but still remains of interest for students/researchers of computer history.

Microcomputer

  • https://en.wikipedia.org/wiki/Microcomputer - a small, relatively inexpensive computer with a microprocessor as its central processing unit (CPU). It includes a microprocessor, memory and minimal input/output (I/O) circuitry mounted on a single printed circuit board(PCB). Microcomputers became popular in the 1970s and 1980s with the advent of increasingly powerful microprocessors. The predecessors to these computers, mainframes and minicomputers, were comparatively much larger and more expensive (though indeed present-day mainframes such as the IBM System z machines use one or more custom microprocessors as their CPUs). Many microcomputers (when equipped with a keyboard and screen for input and output) are also personal computers (in the generic sense). The abbreviation micro was common during the 1970s and 1980s, but has now fallen out of common usage.

IBM PC / AT / ATX

  • https://en.wikipedia.org/wiki/Personal_computer - a multi-purpose computer whose size, capabilities, and price make it feasible for individual use. Personal computers are intended to be operated directly by an end user, rather than by a computer expert or technician. Unlike large costly minicomputer and mainframes, time-sharing by many people at the same time is not used with personal computers.


  • https://en.wikipedia.org/wiki/IBM_PC_compatible - commonly known as the IBM PC, is the original version of the IBM PC compatible hardware platform. It is IBM model number 5150 and was introduced on August 12, 1981. It was created by a team of engineers and designers under the direction of Philip Don Estridge of the IBM Entry Systems Division in Boca Raton, Florida.

The generic term "personal computer" ("PC") was in use years before 1981, applied as early as 1972 to the Xerox PARC's Alto, but the term "PC" came to mean more specifically a desktop microcomputer compatible with IBM's Personal Computer branded products. The machine was based on open architecture, and third-party suppliers sprang up to provide peripheral devices, expansion cards, and software. IBM had a substantial influence on the personal computer market in standardizing a platform for personal computers, and "IBM compatible" became an important criterion for sales growth. Only the Apple Macintosh family kept a significant share of the microcomputer market after the 1980s without compatibility to the IBM personal computer.


  • https://en.wikipedia.org/wiki/IBM_Personal_Computer/AT - more commonly known as the IBM AT and also sometimes called the PC AT or PC/AT, was IBM's second-generation PC, designed around the 6 MHz Intel 80286 microprocessor and released in 1984 as System Unit 5170. The name AT stood for "Advanced Technology," and was chosen because the AT offered various technologies that were then new in personal computers; one such advancement was that the 80286 processor supported protected mode. IBM later released an 8 MHz version of the AT.


  • https://en.wikipedia.org/wiki/PC_System_Design_Guide - also known as the PC 97, PC 98, PC 99, or PC 2001 specification, is a series of hardware design requirements and recommendations for IBM PC compatible personal computers, compiled by Microsoft and Intel Corporation during 1997–2001. They were aimed at helping manufacturers provide hardware that made the best use of the capabilities of the Microsoft Windows operating system, and to simplify setup and use of such computers. Every part of a standard computer and the most common kinds of peripheral devices are defined with specific requirements. Systems and devices that meet the specification should be automatically recognized and configured by the operating system.


  • http://en.wikipedia.org/wiki/ATX - Advanced Technology eXtended, is a motherboard and power supply configuration specification developed by Intel in 1995 to improve on previous de facto standards like the AT design. It was the first major change in desktop computer enclosure, motherboard and power supply design in many years, improving standardization and interchangeability of parts. The specification defines the key mechanical dimensions, mounting point, I/O panel, power and connector interfaces between a computer case, a motherboard and a power supply.

ATX is the most common motherboard design. Other standards for smaller boards (including microATX, FlexATX, nano-ITX, and mini-ITX) usually keep the basic rear layout but reduce the size of the board and the number of expansion slots. Dimensions of a full-size ATX board are 12 × 9.6 in (305 × 244 mm), which allows many ATX chassis to also accept microATX boards. The official ATX specifications were released by Intel in 1995 and have been revised numerous times since. The most recent ATX motherboard specification is version 2.2. The most recent ATX12V power supply unit specification is 2.4, released in April 2013. EATX (Extended ATX) is a bigger version of the ATX motherboard with 12 x 13 inch dimensions. Advantages of having an EATX motherboard is dual socket support.

Mini ATX

Small

Intel NUC

  • Intel NUC - a powerful 4x4-inch mini PC with entertainment, gaming, and productivity features, including a customizable board that is ready to accept the memory, storage, and operating systems that you want.

Zotac


UDOO x86 Advanced Plus

Single-board computer

See also Network#Hardware 2


  • 96Boards - a range of specifications with boards and peripherals offering different performance levels and features in a standard footprint.




Arduino



Raspberry Pi







BeagleBoard


  • BeagleBone - Explore the high-performance, low-power world with the tiny, affordable, open-source Beagles. Putting Android, Ubuntu and other Linux flavors at your fingertips, the Beagle family revs as high as 1GHz with flexible peripheral interfaces and a proven ecosystem of feature-rich "Cape" plug-in boards.



Banana Pi


Orange Pi

  • Orange Pi Pc Plus - It’s an open-source single-board computer. It can run Android 4.4, Ubuntu, Debian, Raspbian Image. It uses the AllWinner H3 SoC, and has 1GB DDR3 SDRAM.


ODROID

  • ODROID - ODROID-XU4, ODROID-C2, ODROID-C1+, N2, etc.





  • Turris Omnia - With powerful hardware, Turris Omnia can handle gigabit traffic and still be able to do much more. You can use it as a home server, NAS, printserver and it even has a virtual server built-in. [5]

Asus Tinker Board


ROCK64



C.H.I.P.

  • C.H.I.P. - WiFi B/G/N Built-in! Plug C.H.I.P. in and hop on the internet in 60 seconds flat. 1GHz Processor C.H.I.P.'s R8 processor allows C.H.I.P. to be small and powerful enough to handle any task you can throw at it. 4GB of High-speed Storage C.H.I.P. comes with storage onboard, so there’s no need to purchase an SD card. C.H.I.P. is ready to go. 512MB of RAM C.H.I.P. comes with enough RAM to start your projects right away. Bluetooth 4.0 Wirelessly connect keyboards, mice, and controllers to C.H.I.P. With a few clicks and an old stereo, turn C.H.I.P. into an AirPlay or Bluetooth speaker. C.H.I.P. Works with ANY Display


  • C.H.I.P. Pro - 1GHz ARMv7-A, 256MB/512MB DDR3/SLC NAND, I2S Audio Dual Mics, WiFi B/G/N & BT4.2, Fully Certified, Open Source HW, OS, No NDAs!


Marvell ESPRESSObin

MiBox



Intel Galileo




Intel Compute Stick

  • Intel Compute Stick - Intel Compute Stick is a device the size of a pack of gum that turns any HDMI display into a fully functional computer: same operating system, same high quality graphics, and same wireless connectivity. All this in a PC on a stick that measures 4.5 inches from end to end, and is ready to compute right out of the box. 


Intel Quark

  • Intel Quark - Based on the Intel Quark microcontroller D2000, this kit is used to develop and prototype low-power solutions for the Internet of Things (IoT). The kit includes a developer board with sensors and hardware interface shields, a software IDE, and an open-source board support package.

HummingBoard

CuBOX


VoCore

  • VoCore - open hardware and runs OpenWrt/LEDE. It has WIFI, USB, UART, 20+ GPIOs but is only one inch square. It will help you to make a smart house, study embedded system or even make the tiniest router in the world.

Tinyduino

Single-board microcontroller


  • PlatformIO - A new generation ecosystem for embedded development. Cross-platform PlatformIO IDE and Unified Debugger; Static Code Analyzer and Remote Unit Testing; Multi-platform and Multi-architecture Build System; Firmware File Explorer and Memory Inspection

Teensy

  • Teensy USB Development Board - a complete USB-based microcontroller development system, in a very small footprint, capable of implementing many types of projects. All programming is done via the USB port.


  • Teensy Audio Library - high quality sound processing in Arduino sketches on Teensy 3.1
    • https://github.com/PaulStoffregen/Audio - A toolkit for building streaming audio projects, featuring Polyphonic Playback, Recording, Synthesis, Analysis, Effects, Filtering, Mixing, Multiple Simultaneous Inputs & Outputs, and Flexible Internal Signal Routing.

BBC micro:bit


ESP32

  • ESP32 - Created by Espressif Systems, ESP32 is a low-cost, low-power system on a chip (SoC) series with Wi-Fi & dual-mode Bluetooth capabilities! The ESP32 family includes the chips ESP32-D0WDQ6 (and ESP32-D0WD), ESP32-D2WD, ESP32-S0WD, and the system in package (SiP) ESP32-PICO-D4. At its heart, there's a dual-core or single-core Tensilica Xtensa LX6 microprocessor with a clock rate of up to 240 MHz. ESP32 is highly integrated with built-in antenna switches, RF balun, power amplifier, low-noise receive amplifier, filters, and power management modules. Engineered for mobile devices, wearable electronics, and IoT applications, ESP32 achieves ultra-low power consumption through power saving features including fine resolution clock gating, multiple power modes, and dynamic power scaling.


  • https://github.com/fdivitto/FabGL - Display Controller (VGA, SSD1306, ST7789, ILI9341), PS/2 Mouse and Keyboard Controller, Graphics Library, Sound Engine, Game Engine and ANSI/VT Terminal for the ESP32

ESP8266

  • https://en.wikipedia.org/wiki/ESP8266 - a low-cost Wi-Fi microchip with full TCP/IP stack and microcontroller capability produced by Shanghai-based Chinese manufacturer, Espressif Systems.


  • https://github.com/arendst/Tasmota - Alternative firmware for ESP8266 with easy configuration using webUI, OTA updates, automation using timers or rules, expandability and entirely local control over MQTT, HTTP, Serial or KNX

WISP

  • WISP - the Wireless Identification and Sensing Platform, is a family of sensors that are powered and read by UHF RFID readers. WISPs do not require batteries since they harvest their power from the RF signal generated by the reader. The WISP is an open source, open architecture EPC Class 1 Generation 2 RFID tag that includes a fully programmable 16 bit microcontroller, as well as arbitrary sensors. Unlike the WISP, conventional RFID tags are black boxes that cannot execute arbitrary computer programs, and do not support sensors. We have given WISPs to collaborators around the world. Many of the applications have been sensing related, but we were also surprised to find many applications in the areas of cryptography and security, enabled by WISPs programmability. [7]

PSoC

Other


  • https://github.com/chris408/digispark-usbkey-board - a super small Arduino compatible device that can be used for lots of different projects. This document and code helps you set one up as a virtual keyboard that will send characters of your choice to the host system.

Allwinner

  • http://linux-sunxi.org/Main_Page - Welcome to the wiki of the linux-sunxi community, an open source software community dedicated to providing open source operating system support for Allwinner SoC based devices. sunxi represents the family of ARM SoCs from Allwinner Technology, a Chinese fabless semiconductor company. Their best known products are the sunxi SoC series, such as the A10 (sun4i), A13 (sun5i) and A20 (sun7i) chips, which were very successful in the low-budget tablet market. See Allwinner SoC Family for more information on the different Allwinner chips.

Daisy



Secure

Power

  • 600w +


UPS

APCUPSD

  • apcupsd - can be used for power mangement and controlling most of APC’s UPS models on Unix and Windows machines. Apcupsd works with most of APC’s Smart-UPS models as well as most simple signalling models such a Back-UPS, and BackUPS-Office. During a power failure, apcupsd will inform the users about the power failure and that a shutdown may occur. If power is not restored, a system shutdown will follow when the battery is exhausted, a timeout (seconds) expires, or runtime expires based on internal APC calculations determined by power consumption rates. Apcupsd is licensed under the GPL version 2.

Mainboard

  • https://en.wikipedia.org/wiki/Motherboard - (sometimes alternatively known as the mainboard, system board, baseboard, planar board or logic board, or colloquially, a mobo) is the main printed circuit board (PCB) found in general purpose microcomputers and other expandable systems. It holds and allows communication between many of the crucial electronic components of a system, such as the central processing unit (CPU) and memory, and provides connectors for other peripherals. Unlike a backplane, a motherboard usually contains significant sub-systems such as the central processor, the chipset's input/output and memory controllers, interface connectors, and other components integrated for general purpose use.

Motherboard specifically refers to a PCB with expansion capability and as the name suggests, this board is often referred to as the "mother" of all components attached to it, which often include peripherals, interface cards, and daughtercards: sound cards, video cards, network cards, hard drives, or other forms of persistent storage; TV tuner cards, cards providing extra USB or FireWire slots and a variety of other custom components. Similarly, the term mainboard is applied to devices with a single board and no additional expansions or capability, such as controlling boards in laser printers, televisions, washing machines and other embedded systems with limited expansion abilities.

BIOS


  • Computer POST and beep codes - The computer POST (power-on self-test) checks a computer's internal hardware for compatibility and connection before starting the remainder of the boot process. If the computer passes the POST, the computer may give a single beep (some computers may beep twice) as it starts and continue to boot. However, if the computer fails the POST, the computer will either not beep or generate a beep code that tells the user the source of the problem.


  • dmidecode - reports information about your system's hardware as described in your system BIOS according to the SMBIOS/DMI standard (see a sample output). This information typically includes system manufacturer, model name, serial number, BIOS version, asset tag as well as a lot of other details of varying level of interest and reliability depending on the manufacturer. This will often include usage status for the CPU sockets, expansion slots (e.g. AGP, PCI, ISA) and memory module slots, and the list of I/O ports (e.g. serial, parallel, USB).


Updating



Coreboot

to sort

  • Booting a Self-signed Linux Kernel - Now that The Linux Foundation is a member of the UEFI.org group, I’ve been working on the procedures for how to boot a self-signed Linux kernel on a platform so that you do not have to rely on any external signing authority. After digging through the documentation out there, it turns out to be relatively simple in the end, so here’s a recipe for how I did this, and how you can duplicate it yourself on your own machine.


CPU

See Computing


Memory




Bus /interface












  • AllPinouts - a Web-based free content project to list cable and connectors pin-outs.



  • https://github.com/BlokasLabs/libserialport - a minimal library written in C that is intended to take careof the OS-specific details when writing software that uses serial ports.By writing your serial code to use libserialport, you enable it to worktransparently on any platform supported by the library.The operations that are supported are:- Port enumeration (obtaining a list of serial ports on the system).- Obtaining port metadata (USB device information, Bluetooth address, etc).- Opening and closing ports.- Setting port parameters (baud rate, parity, etc).- Reading, writing and flushing data.- Obtaining error information.


RS232

I²C

  • https://en.wikipedia.org/wiki/I²C - pronounced I-squared-C, is a synchronous, multi-master, multi-slave, packet switched, single-ended, serial computer bus invented in 1982 by Philips Semiconductor (now NXP Semiconductors). It is widely used for attaching lower-speed peripheral ICs to processors and microcontrollers in short-distance, intra-board communication. Alternatively I²C is spelled I2C (pronounced I-two-C) or IIC (pronounced I-I-C). Since October 10, 2006, no licensing fees are required to implement the I²C protocol. However, fees are required to obtain I²C slave addresses allocated by NXP. Several competitors, such as Siemens AG (later Infineon Technologies AG, now Intel mobile communications), NEC, Texas Instruments, STMicroelectronics (formerly SGS-Thomson), Motorola (later Freescale, now merged with NXP), Nordic Semiconductor and Intersil, have introduced compatible I²C products to the market since the mid-1990s.



  • https://en.wikipedia.org/wiki/System_Management_Bus - SMBus, defined by Intel in 1995, is a subset of I²C, defining a stricter usage. One purpose of SMBus is to promote robustness and interoperability. Accordingly, modern I²C systems incorporate some policies and rules from SMBus, sometimes supporting both I²C and SMBus, requiring only minimal reconfiguration either by commanding or output pin use.


SPI

  • https://en.wikipedia.org/wiki/Serial_Peripheral_Interface_Bus - SPI, is a synchronous serial communication interface specification used for short distance communication, primarily in embedded systems. The interface was developed by Motorola in the mid 1980s and has become a de facto standard. Typical applications include Secure Digital cards and liquid crystal displays. SPI devices communicate in full duplex mode using a master-slave architecture with a single master. The master device originates the frame for reading and writing. Multiple slave devices are supported through selection with individual slave select (SS) lines.

Sometimes SPI is called a four-wire serial bus, contrasting with three-, two-, and one-wire serial buses. The SPI may be accurately described as a synchronous serial interface, but it is different from the Synchronous Serial Interface (SSI) protocol, which is also a four-wire synchronous serial communication protocol. SSI Protocol employs differential signaling and provides only a single simplex communication channel.




GPIO / pinctrl

  • https://en.wikipedia.org/wiki/General-purpose_input/output - an uncommitted digital signal pin on an integrated circuit or electronic circuit board whose behavior—including whether it acts as input or output—is controllable by the user at run time. GPIOs have no predefined purpose and are unused by default. If used, the purpose and behavior of a GPIO is defined and implemented by the designer of higher assembly-level circuitry: the circuit board designer in the case of integrated circuit GPIOs, or system integrator in the case of board-level GPIOs.




UART

  • https://en.wikipedia.org/wiki/Universal_asynchronous_receiver-transmitter - a computer hardware device for asynchronous serial communication in which the data format and transmission speeds are configurable. The electric signaling levels and methods are handled by a driver circuit external to the UART. A UART is usually an individual (or part of an) integrated circuit (IC) used for serial communications over a computer or peripheral device serial port. One or more UART peripherals are commonly integrated in microcontroller chips. A related device, the universal synchronous and asynchronous receiver-transmitter (USART) also supports synchronous operation.

SCSI


/dev/bsg



PATA

SATA


PCI




  • lspci is a utility for displaying information about PCI buses in the system and devices connected to them.

BNC

  • https://en.wikipedia.org/wiki/BNC_connector - a miniature quick connect/disconnect radio frequency connector used for coaxial cable. It features two bayonet lugs on the female connector; mating is fully achieved with a quarter turn of the coupling nut. BNC connectors are used with miniature-to-subminiature coaxial cable in radio, television, and other radio-frequency electronic equipment, test instruments, and video signals. The BNC was commonly used for early computer networks, including ARCnet, the IBM PC Network, and the 10BASE2 variant of Ethernet. BNC connectors are made to match the characteristic impedance of cable at either 50 ohms or 75 ohms. They are usually applied for frequencies below 4 GHz and voltages below 500 volts


USB


  • USB in a NutShell - Starting out new with USB can be quite daunting. With the USB 2.0 specification at 650 pages one could easily be put off just by the sheer size of the standard. This is only the beginning of a long list of associated standards for USB. There are USB Class Standards such as the HID Class Specification which details the common operation of devices (keyboards, mice etc) falling under the HID (Human Interface Devices) Class - only another 97 pages. If you are designing a USB Host, then you have three Host Controller Interface Standards to choose from. None of these are detailed in the USB 2.0 Spec.The good news is you don’t even need to bother reading the entire USB standard. Some chapters were churned out by marketing, others aimed at the lower link layer normally taken care off by your USB controller IC and a couple aimed at host and hub developers. Lets take a little journey through the various chapters of the USB 2.0 specification and briefly introduce the key points.


  • pid.codes - a registry of USB PID codes for open source hardware projects. You can see a list of PID assignments, or learn how to get your own. [14]






  • serialusb - a cheap USB proxy for input devices.This tool can act as a USB proxy using the well-known DIY USB adapter. Combined with usbmon and wireshark, it allows to generate and inspect USB captures. [16]


  • GIMX - free software that allows to use a computer as a hub for your gaming devices. It works on Windows® and GNU/Linux platforms. It is compatible with Playstation® and Xbox® gaming consoles, and with gaming computers. The connection between the computer and the gaming platform is performed using a USB adapter – get one on the GIMX shop! – or a Bluetooth® dongle (PS3/PS4 only). The capabilities depend on the platform, the connection method, and the gaming platform.



  • USBQ Toolkit - a Python-based programming framework for monitoring and modifying USB communications. [17]



Devices

  • LUFA - Lightweight USB Framework for AVRs, formerly known as MyUSB, is my first foray into the world of USB. It is an open-source complete USB stack for the USB-enabled Atmel AVR8 and (some of the) AVR32 microcontroller series, released under the permissive MIT License (see documentation or project source for full license details). The complete line of Atmel USB AVRs and USB AVR boards are supported by the library, as are any custom user boards, via custom board hardware drivers supplied by the user.



  • https://github.com/hak5darren/USB-Rubber-Ducky - a Human Interface Device programmable with a simple scripting language allowing penetration testers to quickly and easily craft and deploy security auditing payloads that mimic human keyboard input. The source is written in C and requires the AVR Studio 5 IDE from atmel.com/avrstudio. Hardware is commercially available at hakshop.com. Tools and payloads can be found at usbrubberducky.com. Quack!


  • Teensy USB - a complete USB-based microcontroller development system, in a very small footprint, capable of implementing many types of projects. All programming is done via the USB port.
  • USBdriveby - a device you stylishly wear around your neck which can quickly and covertly install a backdoor and override DNS settings on an unlocked machine via USB in a matter of seconds. It does this by emulating a keyboard and mouse, blindly typing controlled commands, flailing the mouse pointer around and weaponizing mouse clicks.In this project, we'll learn how to exploit a system's blind trust in USB devices, and learn how a $20 Teensy microcontroller can evade various security settings on a real system, open a permanent backdoor, disable a firewall, control the flow of network traffic, and all within a few seconds and permanently, even after the device has been removed. [18]




  • PICJUG - an open source replacement for the FT232 USB chip from FTDI. I designed it because I find that I often need a serial port, JTAG port and a couple of outputs when talking to an embedded system and didn’t like connecting multiple devices to achieve this result. Ultimately, I wanted to drop a single inexpensive part in to a design to achieve these goals. PICJUG is named after what it does. It’s a PIC J TAG, U ART and G PIO device.


Power







Linux

  • https://www.kernel.org/doc/Documentation/usb/usbmon.txt - a facility in kernel which is used to collect traces of I/O on the USB bus. This function is analogous to a packet socket used by network monitoring tools such as tcpdump(1) or Ethereal. Similarly, it is expected that a tool such as usbdump or USBMon (with uppercase letters) is used to examine raw traces produced by usbmon.



Security

  • SyncStop / USB Condom - prevents accidental data exchange when your device is plugged into someone else’s computer or a public charging station. SyncStop achieves this by blocking the data pins on any USB cable and allowing only power to flow through. This minimizes opportunities to steal your data or install malware on your mobile device.SyncStop is the 'cased' version of the original USB Condom. We listened and spent some time designing and manufacturing our own enclosure. [20]


  • USBGuard - software framework helps to protect your computer against rogue USB devices (a.k.a. BadUSB) by implementing basic whitelisting and blacklisting capabilities based on device attributes.

MTP


USB3


Hub


IEEE 1394 / Firewire

lsmod | egrep 'firewire|1394'
  • dvgrab is a program that captures DV video and audio data from digital camcorders via an IEEE1394 link. The DV data is stored in one or several files and can later be processed by video editing software. dvgrab can remote control the camcorder but it does not show the video's content on screen.
dvgrab --size 500 --autosplit <filename>

interactive mode;

dvgrab -i

live view;

dvgrab - | mplayer -

Thunderbolt

Bluetooth

See Radio#Bluetooth

M.2

InfiniBand

  • https://en.wikipedia.org/wiki/InfiniBand - abbreviated IB, is a computer-networking communications standard used in high-performance computing that features very high throughput and very low latency. It is used for data interconnect both among and within computers. InfiniBand is also used as either a direct or switched interconnect between servers and storage systems, as well as an interconnect between storage systems.

Fibre Channel

  • https://en.wikipedia.org/wiki/Fibre_Channel - or FC, is a high-speed network technology (commonly running at 1, 2, 4, 8, 16, 32, and 128 gigabit per second rates) primarily used to connect computer data storage to servers. Fibre Channel is mainly used in storage area networks (SAN) in commercial data centers. Fibre Channel networks form a switched fabric because they operate in unison as one big switch. Fibre Channel typically runs on optical fiber cables within and between data centers, but can also run on copper cabling.

Gen-Z




D-sub

PCMCIA / PC Card

  • https://en.wikipedia.org/wiki/PC_Card - a configuration for computer parallel communication peripheral interface, designed for laptop computers. Originally introduced as PCMCIA, the PC Card standard as well as its successors like CardBus were defined and developed by the Personal Computer Memory Card International Association (PCMCIA).

Input


  • Deskthority wiki - dedicated to mechanical keyboards, mice and other human interface devices. The main focus is everything regarding quality (mechanical) keyboards. In the nature of a wiki, the content will be frequently and constantly under construction. Want to share your knowledge and help us create the best input device wiki? This wiki is part of the Deskthority forum - sign in with your forum account and start editing! There is no separate registration, and this is an open wiki. For discussions about the wiki, requests for higher wiki rights or changes/addons to the wiki engine, see the wiki subforum.


  • Mousejack - a class of vulnerabilities that affects the vast majority of wireless, non-Bluetooth keyboards and mice. These peripherals are 'connected' to a host computer using a radio transceiver, commonly a small USB dongle. Since the connection is wireless, and mouse movements and keystrokes are sent over the air, it is possible to compromise a victim's computer by transmitting specially-crafted radio signals using a device which costs as little as $15.




Mouse


  • https://github.com/cdobrich/btnx - a daemon that enables rerouting of mouse button events through uinput as keyboard and other mouse button combinations. btnx requires btnx-config, a configuration tool for btnx. See cdobrich/btnx-config for more details.


Trackpad / touchpad

  • https://linuxtouchpad.org/ - If you’ve ever been frustrated with the touchpad experience on Linux and subsequently felt like taking a deep dive to fix it yourself, you’re not alone! This guide exists to help you find kindred engineers, and the quickest possible path to efficacy in a complex software stack.


  • Gestures — libinput 1.19.0 documentation - supports Pinch gestures and Swipe gestures on most modern touchpads and other indirect touch devices. Note that libinput does not support gestures on touchscreens, see Touchscreen gestures.


  • https://github.com/bulletmark/libinput-gestures - a utility which reads libinput gestures from your touchpad and maps them to gestures you configure in a configuration file. Each gesture can be configured to activate a shell command which is typically an xdotool command to action desktop/window/application keyboard combinations and commands. See the examples in the provided libinput-gestures.conf file. My motivation for creating this is to use triple swipe up/down to switch workspaces, and triple swipe right/left to go backwards/forwards in my browser, as per the default configuration.




Trackball


Scanner

Graphics tablet

  • https://en.wikipedia.org/wiki/Graphics_tablet - also known as a digitizer, drawing tablet, drawing pad, digital drawing tablet, pen tablet, or digital art board, is a computer input device that enables a user to hand-draw images, animations and graphics, with a special pen-like stylus, similar to the way a person draws images with a pencil and paper. These tablets may also be used to capture data or handwritten signatures. It can also be used to trace an image from a piece of paper that is taped or otherwise secured to the tablet surface. Capturing data in this way, by tracing or entering the corners of linear polylines or shapes, is called digitizing. The device consists of a rough surface upon which the user may "draw" or trace an image using the attached stylus, a pen-like drawing apparatus. The image is shown on the computer monitor, though some graphic tablets now also incorporate an LCD screen for a more realistic or natural experience and usability.


  • DIGImend - Digitizer Mending - aims at improving Linux support for generic graphics tablets. We work to provide kernel drivers, kernel and userspace driver fixes, accompanying development, testing and end-user tools, documentation and HOWTOs.

Infrared


Flirc

  • https://flirc.tv - Flirc USB learns from any remote control, not caring about different vendor protocols. Just walk through the super simple setup - pairing individual remote buttons with 'Media Centre Buttons' and you're done. It's basically a universal IR receiver, so can be used with any remote you choose, old, new or Universal! The best part about FLIRC is that it can be used to mimic a keyboard so every media center application understands it without any drivers. FLIRC runs across all platforms, Mac, Linux, and Windows.



  • irplus - Irdroid - free application for the Android Operating System which aims to reproduce infrared signals of various remote controls exactly as they are sent from the original remote. This is achieved by supporting widely-known representation formats for infrared codes like LIRC, PRONTO, RAW or proprietary formats found in some specification of manufacturers. Furthermore each layout of a remote-set can be customized with nearly endless possibilities via importable and exportable XML files. Codesets for remote controls can be gathered by following the guide i have provided under the "New codes" section. Irplus comes with minimal permissions required.




Wii Remote

  • https://en.wikipedia.org/wiki/Wii_Remote - known colloquially as the Wiimote, is the primary controller for Nintendo's Wii console. A main feature of the Wii Remote is its motion sensing capability, which allows the user to interact with and manipulate items on screen via gesture recognition and pointing through the use of accelerometer and optical sensor technology. Another feature is its expandability through the use of attachments. The attachment bundled with the Wii console is the Nunchuk, which complements the Wii Remote by providing functions similar to those in gamepad controllers.

Gesture


  • The Wekinator - free, open source software originally created in 2009 by Rebecca Fiebrink. It allows anyone to use machine learning to build new musical instruments, gestural game controllers, computer vision or computer listening systems, and more. The Wekinator allows users to build new interactive systems by demonstrating human actions and computer responses, instead of writing programming code.


  • GIMLeT | Ircam Forum - Gestural Interaction Machine Learning Toolkit - A set of Max patches for gesture analysis, interactive machine learning, and gesture-sound interaction design. GIMLeT features a modular design that allows to easily share meaningfully structured data between several gesture tracking devices, machine learning, and sound synthesis modules.

Breath

  • https://github.com/jasonwebb/openSipPuff - Simple, low-cost "sip and puff" USB interface for expressive interactions, enabling breath-based control of keypresses, mouse actions and much more using USB HID.

Output

See also *nix#Printing

Video card




https://github.com/klogg/fl2000_drm - Linux kernel FL2000DX/IT66121FN dongle DRM driver

Connectors

Display

  • https://en.wikipedia.org/wiki/Display_device - an output device for presentation of information in visual[1] or tactile form (the latter used for example in tactile electronic displays for blind people). When the input information that is supplied has an electrical signal the display is called an electronic display.Common applications for electronic visual displays are television sets or computer monitors.



  • * https://en.wikipedia.org/wiki/VESA_Display_Power_Management_Signaling - or DPMS, is a standard from the VESA consortium for power management of video monitors. Example usage includes turning off, or putting the monitor into standby after a period of idle time to save power. Some commercial displays also incorporate this technology. VESA issued DPMS 1.0 in 1993, basing their work on the United States Environmental Protection Agency's (EPA) earlier Energy Star power management specifications. Subsequent revisions were included in future VESA BIOS Extensions.


  • https://en.wikipedia.org/wiki/Display_Data_Channel - or DDC, is a collection of protocols for digital communication between a computer display and a graphics adapter that enable the display to communicate its supported display modes to the adapter and that enable the computer host to adjust monitor parameters, such as brightness and contrast.The standard was created by the Video Electronics Standards Association (VESA). The DDC suite of standards aims to provide a "plug and play" experience for computer displays. DDC1 and DDC2B/Ab/B+/Bi protocols are a physical link between a monitor and a video card, which was originally carried on either two or three pins in a 15-pin analog VGA connector.

Enhanced Display Data Channel (E-DDC) is the most recent revision of the DDC standard. Version 1 was introduced in September 1999 and featured the addition of a segment pointer which allowed up to 32 Kbytes of display information storage for use by the Enhanced EDID (E-EDID) standard. Earlier DDC implementations used simple 8-bit data offset when communicating with the EDID memory in the monitor, limiting the storage size to 28 bytes = 256 bytes, but allowing the use of cheap 2-Kbit EEPROMs. In E-DDC, a special I²C addressing scheme was introduced, in which multiple 256-byte segments could be selected. To do this, a single 8-bit segment index is passed to the display via the I²C address 30h. (Because this access is always a write, the first I²C octet will always be 60h.) Data from the selected segment is then immediately read via the regular DDC2 address using a repeated I²C 'START' signal. However, VESA specification defines the segment index value range as 00h to 7Fh, so this only allows addressing 128 segments × 256 bytes = 32 KiB. The segment index register is volatile, defaulting to zero and automatically resetting to zero after each NACK or STOP. Therefore, it must be set every time access to data above the first 256-byte segment is performed. The auto-reset mechanism is to provide for backward compatibility to, for example, DDC2B hosts, otherwise they may be stuck at a segment other than 00h in some rare cases.

Other important changes were removal of the DDC1 and DDC2Ab protocols, deprecation of separate VESA P&D and FPDI device addresses, and clarifications to the DDC power requirements. E-DDC Version 1.1, approved March 2004, featured support for HDMI and consumer electronics. E-DDC Version 1.2, approved December 2007, introduced support for DisplayPort (which has no dedicated DDC2B links and uses its bidirectional auxiliary channel for EDID and MCCS communication) and DisplayID standards. E-DDC Version 1.3 from September 2017 contains corrections for errata and minor clarifications.

  • ddcutil - a Linux program for managing monitor settings, such as brightness, color levels, and input source. Generally speaking, any settings that can be changed by pressing buttons on the monitor can be modified by ddcutil.ddcutil primarily uses DDC/CI (Display Data Channel Command Interface) to communicate with monitors implementing MCCS (Monitor Control Command Set) over I2C. Normally, the video driver for the monitor exposes the I2C channel as devices named /dev/i2c-n. Alternatively, there is support for monitors (such as Eizo ColorEdge displays) that implement MCCS using a USB connection. See USB Connected Monitors.A particular use case for ddcutil, and the one that inspired its development, is as part of color profile management. Monitor calibration is relative to the monitor color settings currently in effect, e.g. red gain. ddcutil allows color related settings to be saved at the time a monitor is calibrated, and then restored when the calibration is applied.


  • https://en.wikipedia.org/wiki/Extended_display_identification_data - EDID, is a companion standard; it defines a compact binary file format describing the monitor's capabilities and supported graphics modes, stored in a read-only memory (EEPROM) chip programmed by the manufacturer of the monitor. The format uses a description block containing 128 bytes of data, with optional extension blocks to provide additional information. The most current version is Enhanced EDID (E-EDID) Release A, v2.0. The first version of the DDC standard was adopted in August 1994. It included the EDID 1.0 format and specified DDC1, DDC2B and DDC2Ab physical links. DDC version 2, introduced in April 1996, split EDID into a separate standard and introduced the DDC2B+ protocol. DDC version 3, December 1997, introduced the DDC2Bi protocol and support for VESA Plug and Display and Flat Panel Display Interface on separate device addresses, requiring them to comply with EDID 2.0. The DDC standard has been superseded by E-DDC in 1999.
  • read-edid - a pair of tools (originally by John Fremlin) for reading the EDID from a monitor. It should work with most monitors made since 1996, assuming the video card supports the standard read commands (most do). read-edid is a set of two tools - get-edid, which gets the raw edid information from the monitor, and parse-edid, which turns the raw binary information into a xorg.conf-compatible monitor section (Modelines also compatible with xrandr). As of read-edid version 2.0.0, the lrmi code has been replaced by libx86 code - same syntax, but allows for use on many more architectures. For powerpc, there is a /proc interface, /proc/device-tree/pci/{video-card}/EDID, which you can pipe to parse-edid. Some architectures, AFAIK, may be stuck with only parse-edid. As of read-edid version 3.0.0, there have been significant code rewrites, including a new I²C-based interface that tends to work much better and in many more cases than the old interface (still included). If you had problems before, this will likely fix them.





  • Pective - display the actual size of any item right on your monitor. All you have to do is specify your monitor size, and Pective will display the image life-size!


Display

diy;

vga to d-tv;





  • https://en.wikipedia.org/wiki/FreeSync - an adaptive sync technology initially developed by AMD in response to NVidia's G-Sync for LCD displays that reduces screen tearing. FreeSync is royalty-free, free to use, and has no performance penalty. As of 2015, VESA has adopted FreeSync as an optional component of the DisplayPort 1.2a specification. FreeSync has a dynamic refresh rate range of 9-240Hz.



Laser

3D printing



Media

See also Audio, Video, Streaming

pcskr


Graphics


Laptop



Mobile



Dasher

  • Dasher - an information-efficient text-entry interface, driven by natural continuous pointing gestures. Dasher is a competitive text-entry system wherever a full-size keyboard cannot be used - for example: when operating a computer one-handed, by joystick, touchscreen, trackball, or mouse; when operating a computer with zero hands (i.e., by head-mouse or by eyetracker); on a palmtop computer; on a wearable computer. The eyetracking version of Dasher allows an experienced user to write text as fast as normal handwriting - 29 words per minute; using a mouse, experienced users can write at 39 words per minute. Dasher can be used to write efficiently in any language. Dasher is fast and fun to learn.

Opengazer

  • Opengazer - an open source application that uses an ordinary webcam to estimate the direction of your gaze. This information can then be passed to other applications. For example, used in conjunction with Dasher, opengazer allows you to write with your eyes. Opengazer aims to be a low-cost software alternative to commercial hardware-based eye trackers.

Wearable

"People love exclusivity, but with an air of egalitarianism."





Internet of things (IoT)

  • https://en.wikipedia.org/wiki/Internet_of_things - describes physical objects (or groups of such objects) that are embedded with sensors, processing ability, software, and other technologies that connect and exchange data with other devices and systems over the Internet or other communications networks. The field has evolved due to the convergence of multiple technologies, including ubiquitous computing, commodity sensors, increasingly powerful embedded systems, and machine learning. Traditional fields of embedded systems, wireless sensor networks, control systems, automation (including home and building automation), independently and collectively enable the Internet of things. In the consumer market, IoT technology is most synonymous with products pertaining to the concept of the "smart home", including devices and appliances (such as lighting fixtures, thermostats, home security systems and cameras, and other home appliances) that support one or more common ecosystems, and can be controlled via devices associated with that ecosystem, such as smartphones and smart speakers. The IoT can also be used in healthcare systems.


ThingsBoard

  • ThingsBoard - ThingsBoard allows you to create rich IoT Dashboards for data visualization and remote device control in real-time. More than 30 customizable widgets allows you to build end-user custom dashboards for most IoT use-cases.

Mirror

MagicMirror

Smart-Mirror

AI-Smart-Mirror

Smart Mirror

Sensor

  • psensor - a graphical hardware temperature monitor for Linux.



  • Waggle - An Open Platform for Edge Computing and Intelligent Sensors

Car


Multicoptor

  • ArduPilot - the most advanced, full-featured and reliable open source autopilot software available. It has been developed over 5+ years by a team of diverse professional engineers and computer scientists. It is the only autopilot software capable of controlling any vehicle system imaginable, from conventional airplanes, multirotors, and helicopters, to boats and even submarines. And now being expanded to feature support for new emerging vehicle types such as quad-planes and compound helicopters.

Satellite