Firewire

FireWire (also known as i.Link or IEEE 1394) is a personal computer (and digital audio/digital video) serial bus interface standard, offering high-speed communications and isochronous real-time data services. FireWire has replaced SCSI in many applications due to lower implementation costs and a simplified, more adaptable cabling system.
Almost all modern digital camcorders have included this connection since 1995. Many computers intended for home or professional audio/video use have built-in FireWire ports including all Macintosh and Sony computers currently produced. FireWire was also an attractive feature on the Apple iPod for several years, permitting new tracks to be uploaded in a few seconds and also for the battery to be recharged concurrently with one cable. However, Apple has eliminated FireWire support in favor of Universal Serial Bus (USB) 2.0 on its newer iPods due to space constraints.
Standards and versions

FireWire was developed by Apple Computer in the early 1990s, after work defining a slower version of the interface by the IEEE 1394 working committee in the 1980s. IEEE proposed the standard as a serial replacement for the SCSI bus. Apple's development was completed in 1995. It is defined in IEEE standard 1394 which is currently a composite of three documents: the original IEEE Std. 1394-1995, the IEEE Std. 1394a-2000 amendment, and the IEEE Std. 1394b-2002 amendment. Sony's implementation of the system is known as i.Link, and uses only the four signal pins, discarding the two pins that provide power to the device in favor of a separate power connector on Sony's i.Link products.
The system is commonly used for connection of data storage devices and digital video cameras, but is also popular in industrial systems for machine vision and professional audio systems. It is used instead of the more common USB due to its faster effective speed, higher power-distribution capabilities, and because it does not need a computer host. Perhaps more importantly, FireWire makes full use of all SCSI capabilities and, compared to USB 2.0 High Speed, has higher sustained data transfer rates, a feature especially important for audio and video editors.
However, the small royalty that Apple Computer and other patent holders have initially demanded from users of FireWire (US$0.25 per end-user system) and the more expensive hardware needed to implement it (US$1–$2) has prevented FireWire from displacing USB in low-end mass-market computer peripherals where cost of product is a major constraint.
FireWire can connect together up to 63 peripherals in an acyclic network structure (hubs, as opposed to SCSI's linear structure). It allows peer-to-peer device communication, such as communication between a scanner and a printer, to take place without using system memory or the CPU. FireWire also supports multiple hosts per bus. USB requires a special chipset to perform the same function, effectively resulting in the need for a unique and expensive cable, whereas FireWire requires only a cable with the correct number of pins on either end (normally 6). It is designed to support plug-and-play and hot swapping. Its six-wire cable is not only more convenient than SCSI cables but can supply up to 45 watts of power per port at 30 volt typically, allowing moderate-consumption devices to operate without a separate power cord. The Sony-branded i.Link usually omits the power part of the cable/connector system and uses a 4-pin connector. Power is provided by a separate power adaptor.
FireWire 400 can transfer data between devices at 100, 200, or 400 Mbit/s data rates (actually 98.304, 196.608, or 393.216 Mbit/s, but commonly referred to as S100, S200, and S400). Although USB2 claims to be capable of higher speeds (480Mbit/s), FireWire is, in practice, faster due to its "peer-to-peer" architecture which gives a more reliable and sustained throughput rate. Cable length is limited to 4.5 metres (about 15 feet) but up to 16 cables can be daisy chained yielding a total length of 72 meters under the specification.
FireWire 800 (Apple's name for the 9-pin "S800 bilingual" version of the IEEE1394b standard) was introduced commercially by Apple in 2003. This newer 1394 specification and corresponding products allow a transfer rate of 786.432 Mbit/s with backwards compatibility to the slower rates and 6-pin connectors of FireWire 400.
The full IEEE 1394b specification supports optical connections up to 100 metres in length and data rates all the way to 3.2 Gbit/s. Standard category-5 unshielded twisted pair supports 100 metres at S100, and the new p1394c technology goes all the way to S800. The original 1394 and 1394a standards used data/strobe (D/S) encoding (called legacy mode) on the signal wires, while 1394b adds a data encoding scheme called 8B10B (also referred to as beta mode). With this new technology, FireWire, which was arguably already slightly faster, is now substantially faster than Hi-Speed USB.
FireWire devices implement the ISO/IEC 13213 "configuration ROM" model for device configuration and identification, to provide plug-and-play capability. All FireWire devices are identified by an IEEE EUI-64 unique identifier (an extension of the 48-bit Ethernet MAC address format) in addition to well-known codes indicating the type of device and protocols it supports.
Networking over FireWire
FireWire, with the help of software, is well-suited for creating ad-hoc (terminals only, no routers) computer networks. Specifically, RFC 2734 specifies how to run IPv4 over the FireWire interface.
Linux, Windows XP and Mac OS X are popular operating systems that include support for networking over FireWire. Mac OS X, FreeBSD and Windows XP provide Ethernet-networking over FireWire. A network between two computers can be created without a hub, much like the scanner to printer example above. Using one FireWire cable, data can be transferred quickly between the two computers with minimal networking configuration.
Security issues
Devices on a FireWire bus can communicate by direct memory access, where a device can use hardware to map internal memory to FireWire's "Physical Memory Space". The SBP (serial bus protocol) used by FireWire disk drives use this capability to minimize interrupts and buffer copies. In SBP, the initiator (controlling device) sends a request by remotely writing a command into a specified area of the target's FireWire address space. This command usually includes buffer addresses in the initiator's FireWire "Physical Address Space", which the target is supposed to use for moving I/O data to and from the initiator.
On many implementations, particularly those like PCs and Macintoshes using the popular OHCI, the mapping between the FireWire "Physical Memory Space" and device physical memory is done in hardware, without operating system intervention. While this enables extremely high-speed and low-latency communication between data sources and sinks without unnecessary copying (such as between a video camera and a software video recording application, or between a disk drive and the application buffers), this can also be a security risk if untrustworthy devices are attached to the bus. For this reason, high-security installations will typically either purchase newer machines that map a virtual memory space to the FireWire "Physical Memory Space" (such as a G5 Macintosh, or any Sun workstation), disable the OHCI hardware mapping between FireWire and device memory, physically disable the entire FireWire interface, or do not have FireWire at all.
This feature can also be used to debug a machine whose operating
system has crashed, and in some systems for remote-console operations.
On FreeBSD, the dcons driver provides both, with using gdb as
debugger. Under Linux, firescope and fireproxy exist.
Node hierarchy
FireWire devices are organized on the bus in a tree topology. Each device has a unique self-id. One of the nodes is elected root node and always has the highest id. The self-ids are assigned during the self-id process that happens after each bus-reset. The order in which the self-ids are assigned is equivalent to traversing the tree in a depth-first, post-order manner.
Hot Plug precautions
Although FireWire devices can be hot-plugged without powering down equipment, there have been a few reports of cameras being damaged if the pins of the FireWire port are accidentally shorted while swapping. This was especially true for some early FireWire devices. However, modern FireWire devices have eliminated this problem. Furthermore, FireWire 800 ensures even greater safety when hot-swapping.
Because any hot-pluggable computer device has a risk of short circuiting, a user may wish to power off both the camcorder and computer before connecting a FireWire cable. Commercial grade equipment is less sensitive to being hot-plugged, although care should still be taken with any electronic device.
Operating system support
Full support for IEEE 1394a and 1394b is available for FreeBSD, Linux and Apple Mac OS X operating systems. Microsoft Windows XP supports 1394a and 1394b, but as of service pack 2 the default speed for all types of FireWire is S100 (100 Mbit/second). A download and registry modification is available from Microsoft to restore performance to either S400 or S800. Microsoft Windows Vista will initially support 1394a with 1394b support coming later in a service pack.