Patch 36 Protokol 48 Download

48 and 47 Client protocol. Download Counter Strike 1.6 - the most popular first person shooter game installation file trough browser. Download; CS 1. Counter strike 1.6 patch full v 36 48 protocol. Blog, find events, get the latest facts, and participate in the forums online.download cs 1.6 patch v44 full found at counterstrike loverz.counter strike 1.6 crack for steam game version.upload this patch to your cs 1.6 directory to install crack.counter strike 1.6 free download is the game which.

  1. 1 3 6 Protocol
  2. 6% Protocol Reviews
(Redirected from Bittorrent)
Part of a series on
File sharing
Technologies
Video sharing sites
BitTorrent sites
Academic/scholarly
File sharing networks
P2P clients
Streaming programs
Anonymous file sharing
Development and societal aspects
By country or region
Comparisons

BitTorrent (abbreviated to BT) is a communication protocol for peer-to-peer file sharing (P2P) which is used to distribute data and electronic files over the Internet.

BitTorrent is one of the most common protocols for transferring large files, such as digital video files containing TV shows or video clips or digital audio files containing songs. Peer-to-peer networks have been estimated to collectively account for approximately 43% to 70% of all Internet traffic (depending on location) as of February 2009.[1] In February 2013, BitTorrent was responsible for 3.35% of all worldwide bandwidth, more than half of the 6% of total bandwidth dedicated to file sharing.[2]

To send or receive files, a person uses a BitTorrent client on their Internet-connected computer. A BitTorrent client is a computer program that implements the BitTorrent protocol. Popular clients include μTorrent, Xunlei,[3]Transmission, qBittorrent, Vuze, Deluge, BitComet and Tixati. BitTorrent trackers provide a list of files available for transfer, and allow the client to find peer users known as seeds who may transfer the files.

Programmer Bram Cohen, a former University at Buffalo student,[4] designed the protocol in April 2001 and released the first available version on 2 July 2001,[5] and the most recent version in 2013.[6]BitTorrent clients are available for a variety of computing platforms and operating systems including an official client released by BitTorrent, Inc.

As of 2013, BitTorrent has 15–27 million concurrent users at any time.[7]As of January 2012, BitTorrent is utilized by 150 million active users. Based on this figure, the total number of monthly BitTorrent users may be estimated to more than a quarter of a billion.[8]

Animation of protocol use: The colored dots beneath each computer in the animation represent different parts of the file being shared. By the time a copy to a destination computer of each of those parts completes, a copy to another destination computer of that part (or other parts) is already taking place between users.
  • 2Operation
  • 3Adoption
  • 4Technologies built on BitTorrent
    • 4.2Web seeding
  • 10Malware
    • 10.1BitErrant attack

Description[edit]

The middle computer is acting as a 'seed' to provide a file to the other computers which act as peers.

The BitTorrent protocol can be used to reduce the server and network impact of distributing large files. Rather than downloading a file from a single source server, the BitTorrent protocol allows users to join a 'swarm' of hosts to upload to/download from each other simultaneously. The protocol is an alternative to the older single source, multiple mirror sources technique for distributing data, and can work effectively over networks with lower bandwidth. Using the BitTorrent protocol, several basic computers, such as home computers, can replace large servers while efficiently distributing files to many recipients. This lower bandwidth usage also helps prevent large spikes in internet traffic in a given area, keeping internet speeds higher for all users in general, regardless of whether or not they use the BitTorrent protocol. The first release of the Bittorrent client had no search engine and no peer exchange, so users who wanted to upload a file had to create a small torrent descriptor file that they would upload to a torrent index site. The first uploader acted as a seed, and downloaders would initially connect as peers. (see diagram on the right) Those who wish to download the file would download the torrent which their client would use to connect to tracker which had a list of the IP addresses of other seeds and peers in the swarm. Once a peer completed a download of the complete file, it could in turn function as a seed.

The file being distributed is divided into segments called pieces. As each peer receives a new piece of the file, it becomes a source (of that piece) for other peers, relieving the original seed from having to send that piece to every computer or user wishing a copy. With BitTorrent, the task of distributing the file is shared by those who want it; it is entirely possible for the seed to send only a single copy of the file itself, and eventually distribute to an unlimited number of peers. Each piece is protected by a cryptographic hash contained in the torrent descriptor.[6] This ensures that any modification of the piece can be reliably detected, and thus prevents both accidental and malicious modifications of any of the pieces received at other nodes. If a node starts with an authentic copy of the torrent descriptor, it can verify the authenticity of the entire file it receives.

Pieces are typically downloaded non-sequentially, and are rearranged into the correct order by the BitTorrent client, which monitors which pieces it needs, and which pieces it has and can upload to other peers. Pieces are of the same size throughout a single download (for example a 10 MB file may be transmitted as ten 1 MB pieces or as forty 256 KB pieces).Due to the nature of this approach, the download of any file can be halted at any time and be resumed at a later date, without the loss of previously downloaded information, which in turn makes BitTorrent particularly useful in the transfer of larger files. This also enables the client to seek out readily available pieces and download them immediately, rather than halting the download and waiting for the next (and possibly unavailable) piece in line, which typically reduces the overall time of the download. This eventual transition from peers to seeders determines the overall 'health' of the file (as determined by the number of times a file is available in its complete form).

The distributed nature of BitTorrent can lead to a flood-like spreading of a file throughout many peer computer nodes. As more peers join the swarm, the likelihood of a successful download by any particular node increases. Relative to traditional Internet distribution schemes, this permits a significant reduction in the original distributor's hardware and bandwidth resource costs. Distributed downloading protocols in general provide redundancy against system problems, reduce dependence on the original distributor,[9] and provide sources for the file which are generally transient and therefore there is no single point of failure as in one way server-client transfers.

Operation[edit]

A bittorrent client is capable of preparing, requesting, and transmitting any type of computer file over a network, using the protocol. Up until 2005, the only way to share files was by creating a small text file called a 'torrent'. These files contain metadata about the files to be shared and the trackers which keep track of the other seeds and peers. Users that want to download the file first obtain a torrent file for it, and connect to the tracker or seeds. In 2005, first Vuze and then the Bittorrent client introduced distributed tracking using distributed hash tables which allowed clients to exchange data on swarms directly without the need for a torrent file. In 2006, peer exchange functionality was added allowing clients to add peers based on the data found on connected nodes.

Though both ultimately transfer files over a network, a BitTorrent download differs from a one way server-client download (as is typical with an HTTP or FTP request, for example) in several fundamental ways:

  • BitTorrent makes many small data requests over different IP connections to different machines, while server-client downloading is typically made via a single TCP connection to a single machine.
  • BitTorrent downloads in a random or in a 'rarest-first'[10] approach that ensures high availability, while classic downloads are sequential.

Taken together, these differences allow BitTorrent to achieve much lower cost to the content provider, much higher redundancy, and much greater resistance to abuse or to 'flash crowds' than regular server software. However, this protection, theoretically, comes at a cost: downloads can take time to rise to full speed because it may take time for enough peer connections to be established, and it may take time for a node to receive sufficient data to become an effective uploader. This contrasts with regular downloads (such as from an HTTP server, for example) that, while more vulnerable to overload and abuse, rise to full speed very quickly, and maintain this speed throughout. In the beginning, BitTorrent's non-contiguous download methods made it harder to support 'streaming playback'. However, recently more and more clients are offering streaming options.

Search queries[edit]

The BitTorrent protocol provides no way to index torrent files. As a result, a comparatively small number of websites have hosted a large majority of torrents, many linking to copyrighted works without the authorization of copyright holders, rendering those sites especially vulnerable to lawsuits.[11] A BitTorrent index is a 'list of .torrent files, which typically includes descriptions' and information about the torrent's content.[12] Several types of websites support the discovery and distribution of data on the BitTorrent network. Public torrent-hosting sites such as The Pirate Bay allow users to search and download from their collection of torrent files. Users can typically also upload torrent files for content they wish to distribute. Often, these sites also run BitTorrent trackers for their hosted torrent files, but these two functions are not mutually dependent: a torrent file could be hosted on one site and tracked by another unrelated site. Private host/tracker sites operate like public ones except that they may restrict access to registered users and may also keep track of the amount of data each user uploads and downloads, in an attempt to reduce 'leeching'.

Web search engines allow the discovery of torrent files that are hosted and tracked on other sites; examples include The Pirate Bay, Torrentz, isoHunt and BTDigg. These sites allow the user to ask for content meeting specific criteria (such as containing a given word or phrase) and retrieve a list of links to torrent files matching those criteria. This list can often be sorted with respect to several criteria, relevance (seeders-leechers ratio) being one of the most popular and useful (due to the way the protocol behaves, the download bandwidth achievable is very sensitive to this value). Metasearch engines allow one to search several BitTorrent indices and search engines at once. DHT search engines monitors the DHT network, and indexes torrents via metadata exchange from peers.

The Tribler BitTorrent client was among the first to incorporate built-in search capabilities. With Tribler, users can find .torrent files held by random peers and taste buddies.[13] It adds such an ability to the BitTorrent protocol using a gossip protocol, somewhat similar to the eXeem network which was shut down in 2005. The software includes the ability to recommend content as well. After a dozen downloads, the Tribler software can roughly estimate the download taste of the user, and recommend additional content.[14]

In May 2007, researchers at Cornell University published a paper proposing a new approach to searching a peer-to-peer network for inexact strings,[15] which could replace the functionality of a central indexing site. A year later, the same team implemented the system as a plugin for Vuze called Cubit[16] and published a follow-up paper reporting its success.[17]

A somewhat similar facility but with a slightly different approach is provided by the BitComet client through its 'Torrent Exchange'[18] feature. Whenever two peers using BitComet (with Torrent Exchange enabled) connect to each other they exchange lists of all the torrents (name and info-hash) they have in the Torrent Share storage (torrent files which were previously downloaded and for which the user chose to enable sharing by Torrent Exchange). Thus each client builds up a list of all the torrents shared by the peers it connected to in the current session (or it can even maintain the list between sessions if instructed). At any time the user can search into that Torrent Collection list for a certain torrent and sort the list by categories. When the user chooses to download a torrent from that list, the .torrent file is automatically searched for (by info-hash value) in the DHT Network and when found it is downloaded by the querying client which can after that create and initiate a downloading task.

Downloading torrents and sharing files[edit]

Users find a torrent of interest on a torrent index site or by using a search engine built into the client, download it, and open it with a BitTorrent client. The client connects to the tracker(s) or seeds specified in the torrent file, from which it receives a list of seeds and peers currently transferring pieces of the file(s). The client connects to those peers to obtain the various pieces. If the swarm contains only the initial seeder, the client connects directly to it, and begins to request pieces. Clients incorporate mechanisms to optimize their download and upload rates.

The effectiveness of this data exchange depends largely on the policies that clients use to determine to whom to send data. Clients may prefer to send data to peers that send data back to them (a 'tit for tat' exchange scheme), which encourages fair trading. But strict policies often result in suboptimal situations, such as when newly joined peers are unable to receive any data because they don't have any pieces yet to trade themselves or when two peers with a good connection between them do not exchange data simply because neither of them takes the initiative. To counter these effects, the official BitTorrent client program uses a mechanism called 'optimistic unchoking', whereby the client reserves a portion of its available bandwidth for sending pieces to random peers (not necessarily known good partners, so called preferred peers) in hopes of discovering even better partners and to ensure that newcomers get a chance to join the swarm.[19]

Although 'swarming' scales well to tolerate 'flash crowds' for popular content, it is less useful for unpopular or niche market content. Peers arriving after the initial rush might find the content unavailable and need to wait for the arrival of a 'seed' in order to complete their downloads. The seed arrival, in turn, may take long to happen (this is termed the 'seeder promotion problem'). Since maintaining seeds for unpopular content entails high bandwidth and administrative costs, this runs counter to the goals of publishers that value BitTorrent as a cheap alternative to a client-server approach. This occurs on a huge scale; measurements have shown that 38% of all new torrents become unavailable within the first month.[20] A strategy adopted by many publishers which significantly increases availability of unpopular content consists of bundling multiple files in a single swarm.[21] More sophisticated solutions have also been proposed; generally, these use cross-torrent mechanisms through which multiple torrents can cooperate to better share content.[22]

Creating and publishing torrents[edit]

The peer distributing a data file treats the file as a number of identically sized pieces, usually with byte sizes of a power of 2, and typically between 32 kB and 16 MB each. The peer creates a hash for each piece, using the SHA-1 hash function, and records it in the torrent file. Pieces with sizes greater than 512 kB will reduce the size of a torrent file for a very large payload, but is claimed to reduce the efficiency of the protocol.[23] When another peer later receives a particular piece, the hash of the piece is compared to the recorded hash to test that the piece is error-free.[6] Peers that provide a complete file are called seeders, and the peer providing the initial copy is called the initial seeder. The exact information contained in the torrent file depends on the version of the BitTorrent protocol. By convention, the name of a torrent file has the suffix .torrent. Torrent files have an 'announce' section, which specifies the URL of the tracker, and an 'info' section, containing (suggested) names for the files, their lengths, the piece length used, and a SHA-1hash code for each piece, all of which are used by clients to verify the integrity of the data they receive. Though SHA-1 has shown signs of cryptographic weakness, Bram Cohen did not initially consider the risk big enough for a backward incompatible change to, for example, SHA-3. BitTorrent is now preparing to move to SHA-256.

In the early days, torrent files were typically published to torrent index websites, and registered with at least one tracker. The tracker maintained lists of the clients currently connected to the swarm.[6] Alternatively, in a trackerless system (decentralized tracking) every peer acts as a tracker. Azureus was the first[24] BitTorrent client to implement such a system through the distributed hash table (DHT) method. An alternative and incompatible DHT system, known as Mainline DHT, was released in the Mainline BitTorrent client three weeks later (though it had been in development since 2002)[24] and subsequently adopted by the μTorrent, Transmission, rTorrent, KTorrent, BitComet, and Deluge clients.

After the DHT was adopted, a 'private' flag – analogous to the broadcast flag – was unofficially introduced, telling clients to restrict the use of decentralized tracking regardless of the user's desires.[25] The flag is intentionally placed in the info section of the torrent so that it cannot be disabled or removed without changing the identity of the torrent. The purpose of the flag is to prevent torrents from being shared with clients that do not have access to the tracker. The flag was requested for inclusion in the official specification in August 2008, but has not been accepted yet.[26] Clients that have ignored the private flag were banned by many trackers, discouraging the practice.[27]

Anonymity[edit]

BitTorrent does not, on its own, offer its users anonymity. One can usually see the IP addresses of all peers in a swarm in one's own client or firewall program. This may expose users with insecure systems to attacks.[19] In some countries, copyright organizations scrape lists of peers, and send takedown notices to the internet service provider of users participating in the swarms of files that are under copyright. In some jurisdictions, copyright holders may launch lawsuits against uploaders or downloaders for infringement, and police may arrest suspects in such cases.

Various means have been used to promote anonymity. For example, the bittorrent client Tribler makes available a Tor-like onion network, optionally routing transfers through other peers to obscure which client has requested the data. The exit node would be visible to peers in a swarm, but the Tribler organization provides exit nodes. One advantage of Tribler is that clearnet torrents can be downloaded with only a small decrease in download speed from one 'hop' of routing.

i2p provides a similar anonymity layer although in that case, one can only download torrents that have been uploaded to the i2p network.[28] The bittorrent client Vuze allows users who are not concerned about anonymity to take clearnet torrents, and make them available on the i2p network.[29]

Most bittorrent clients are not designed to provide anonymity when used over Tor,[30] and there is some debate as to whether torrenting over Tor acts as a drag on the network.[31]

Private torrent trackers are usually invitation only, and require members to participate in uploading, but have the downside of a single centralized point of failure. Oink's Pink Palace and What.cd are examples of private trackers which have been shut down.

Seedbox services download the torrent files first to the company's servers, allowing the user to direct download the file from there.[32][33] One's IP address would be visible to the Seedbox provider, but not to third parties.

Virtual private networks encrypt transfers, and substitute a different IP address for the user's, so that anyone monitoring a torrent swarm will only see that address.

Adoption[edit]

A growing number of individuals and organizations are using BitTorrent to distribute their own or licensed works (e.g. indie bands distributing digital files of their new songs). Independent adopters report that without using BitTorrent technology, and its dramatically reduced demands on their private networking hardware and bandwidth, they could not afford to distribute their files.[34]

Some uses of BitTorrent for file sharing may violate laws in some jurisdictions (see legal issues section).

Film, video, and music[edit]

  • BitTorrent Inc. has obtained a number of licenses from Hollywood studios for distributing popular content from their websites.
  • Sub Pop Records releases tracks and videos via BitTorrent Inc.[35] to distribute its 1000+ albums. Babyshambles and The Libertines (both bands associated with Pete Doherty) have extensively used torrents to distribute hundreds of demos and live videos. US industrial rock band Nine Inch Nails frequently distributes albums via BitTorrent.
  • Podcasting software is starting to integrate BitTorrent to help podcasters deal with the download demands of their MP3 'radio' programs. Specifically, Juice and Miro (formerly known as Democracy Player) support automatic processing of .torrent files from RSS feeds. Similarly, some BitTorrent clients, such as μTorrent, are able to process web feeds and automatically download content found within them.
  • DGM Live purchases are provided via BitTorrent.[36]
  • VODO, a service which distributes 'free-to-share' movies and TV shows via BitTorrent.[37][38][39]

Broadcasters[edit]

  • In 2008, the CBC became the first public broadcaster in North America to make a full show (Canada's Next Great Prime Minister) available for download using BitTorrent.[40]
  • The Norwegian Broadcasting Corporation (NRK) has since March 2008 experimented with bittorrent distribution, available online.[41] Only selected works in which NRK owns all royalties are published. Responses have been very positive, and NRK is planning to offer more content.
  • The Dutch VPRO broadcasting organization released four documentaries in 2009 and 2010 under a Creative Commons license using the content distribution feature of the Mininova tracker.[42][43][44]

Personal works[edit]

  • The Amazon S3 'Simple Storage Service' is a scalable Internet-based storage service with a simple web service interface, equipped with built-in BitTorrent support.[45]
  • Blog Torrent offers a simplified BitTorrent tracker to enable bloggers and non-technical users to host a tracker on their site. Blog Torrent also allows visitors to download a 'stub' loader, which acts as a BitTorrent client to download the desired file, allowing users without BitTorrent software to use the protocol.[46] This is similar to the concept of a self-extracting archive.

Software[edit]

  • Blizzard Entertainment uses BitTorrent (via a proprietary client called the 'Blizzard Downloader', associated with the Blizzard 'BattleNet' network) to distribute content and patches for Diablo III, StarCraft II and World of Warcraft, including the games themselves.[47]
  • Wargaming uses BitTorrent in their popular titles World of Tanks, World of Warships and World of Warplanes to distribute game updates.[48]
  • CCP Games, maker of the space Simulation MMORPG Eve Online, has announced that a new launcher will be released that is based on BitTorrent.[49][50]
  • Many software games, especially those whose large size makes them difficult to host due to bandwidth limits, extremely frequent downloads, and unpredictable changes in network traffic, will distribute instead a specialized, stripped down bittorrent client with enough functionality to download the game from the other running clients and the primary server (which is maintained in case not enough peers are available).
  • Many major open source and free software projects encourage BitTorrent as well as conventional downloads of their products (via HTTP, FTP etc.) to increase availability and to reduce load on their own servers, especially when dealing with larger files.[51]

Government[edit]

  • The UK government used BitTorrent to distribute details about how the tax money of UK citizens was spent.[52][53]

Education[edit]

  • Florida State University uses BitTorrent to distribute large scientific data sets to its researchers.[54]
  • Many universities that have BOINC distributed computing projects have used the BitTorrent functionality of the client-server system to reduce the bandwidth costs of distributing the client-side applications used to process the scientific data. If a BOINC distributed computing application needs to be updated (or merely sent to a user), it can do so with little impact on the BOINC server.[55]
  • The developing Human Connectome Project uses BitTorrent to share their open dataset.[56]

Others[edit]

  • Facebook uses BitTorrent to distribute updates to Facebook servers.[57]
  • Twitter uses BitTorrent to distribute updates to Twitter servers.[58][59]
  • The Internet Archive added BitTorrent to its file download options for over 1.3 million existing files, and all newly uploaded files, in August 2012.[60][61] This method is the fastest means of downloading media from the Archive.[60][62]

As of 2011, BitTorrent had 100 million users and a greater share of network bandwidth than Netflix and Hulu combined.[63][64] In early 2015, AT&T estimates that BitTorrent represents 20% of all broadband traffic.[65]

Routers that use network address translation (NAT) must maintain tables of source and destination IP addresses and ports. Typical home routers are limited to about 2000 table entries[citation needed] while some more expensive routers have larger table capacities. BitTorrent frequently contacts 20–30 servers per second, rapidly filling the NAT tables. This is a known cause of some home routers ceasing to work correctly.[66][67]

Technologies built on BitTorrent[edit]

The BitTorrent protocol is still under development and may therefore still acquire new features and other enhancements such as improved efficiency.

Distributed trackers[edit]

On 2 May 2005, Azureus 2.3.0.0 (now known as Vuze) was released,[68] introducing support for 'trackerless' torrents through a system called the 'distributed database.' This system is a Distributed hash table implementation which allows the client to use torrents that do not have a working BitTorrent tracker. The following month, BitTorrent, Inc. released version 4.2.0 of the Mainline BitTorrent client, which supported an alternative DHT implementation (popularly known as 'Mainline DHT', outlined in a draft on their website) that is incompatible with that of Azureus. Recent measurement shows users of Mainline DHT is from 10 million to 25 million, with a daily churn of at least 10 million.[69] Mainline DHT is arguably the largest realistic DHT in the world.

Current versions of the official BitTorrent client, μTorrent, BitComet, Transmission and BitSpirit all share compatibility with Mainline DHT. Both DHT implementations are based on Kademlia.[70] As of version 3.0.5.0, Azureus also supports Mainline DHT in addition to its own distributed database through use of an optional application plugin.[71] This potentially allows the Azureus/Vuze client to reach a bigger swarm.

Another idea that has surfaced in Vuze is that of virtual torrents. This idea is based on the distributed tracker approach and is used to describe some web resource. Currently, it is used for instant messaging. It is implemented using a special messaging protocol and requires an appropriate plugin. Anatomic P2P is another approach, which uses a decentralized network of nodes that route traffic to dynamic trackers. Most BitTorrent clients also use Peer exchange (PEX) to gather peers in addition to trackers and DHT. Peer exchange checks with known peers to see if they know of any other peers. With the 3.0.5.0 release of Vuze, all major BitTorrent clients now have compatible peer exchange.

Web seeding[edit]

Web 'seeding' was implemented in 2006 as the ability of BitTorrent clients to download torrent pieces from an HTTP source in addition to the 'swarm'. The advantage of this feature is that a website may distribute a torrent for a particular file or batch of files and make those files available for download from that same web server; this can simplify long-term seeding and load balancing through the use of existing, cheap, web hosting setups. In theory, this would make using BitTorrent almost as easy for a web publisher as creating a direct HTTP download. In addition, it would allow the 'web seed' to be disabled if the swarm becomes too popular while still allowing the file to be readily available. This feature has two distinct specifications, both of which are supported by Libtorrent and the 26+ clients that use it.

Hash web seeding[edit]

The first was created by John 'TheSHAD0W' Hoffman, who created BitTornado.[72][73] This first specification requires running a web service that serves content by info-hash and piece number, rather than filename.

HTTP web seeding[edit]

The other specification is created by GetRight authors and can rely on a basic HTTP download space (using byte serving).[74][75]

1 3 6 Protocol

Other[edit]

In September 2010, a new service named Burnbit was launched which generates a torrent from any URL using webseeding.[76] There are server-side solutions that provide initial seeding of the file from the webserver via standard BitTorrent protocol and when the number of external seeders reach a limit, they stop serving the file from the original source.[77]

RSS feeds[edit]

A technique called broadcatching combines RSS feeds with the BitTorrent protocol to create a content delivery system, further simplifying and automating content distribution. Steve Gillmor explained the concept in a column for Ziff-Davis in December 2003.[78] The discussion spread quickly among bloggers (Ernest Miller,[79]Chris Pirillo, etc.). In an article entitled Broadcatching with BitTorrent, Scott Raymond explained:

I want RSS feeds of BitTorrent files. A script would periodically check the feed for new items, and use them to start the download. Then, I could find a trusted publisher of an Alias RSS feed, and 'subscribe' to all new episodes of the show, which would then start downloading automatically – like the 'season pass' feature of the TiVo.

— Scott Raymond, scottraymond.net[80]

The RSS feed will track the content, while BitTorrent ensures content integrity with cryptographichashing of all data, so feed subscribers will receive uncorrupted content. One of the first and popular software clients (free and open source) for broadcatching is Miro. Other free software clients such as PenguinTV and KatchTV are also now supporting broadcatching. The BitTorrent web-service MoveDigital added the ability to make torrents available to any web application capable of parsing XML through its standard REST-based interface in 2006,[81] though this has since been discontinued. Additionally, Torrenthut is developing a similar torrent API that will provide the same features, and help bring the torrent community to Web 2.0 standards. Alongside this release is a first PHP application built using the API called PEP, which will parse any Really Simple Syndication (RSS 2.0) feed and automatically create and seed a torrent for each enclosure found in that feed.[82]

Throttling and encryption[edit]

Since BitTorrent makes up a large proportion of total traffic, some ISPs have chosen to 'throttle' (slow down) BitTorrent transfers. For this reason, methods have been developed to disguise BitTorrent traffic in an attempt to thwart these efforts.[83] Protocol header encrypt (PHE) and Message stream encryption/Protocol encryption (MSE/PE) are features of some BitTorrent clients that attempt to make BitTorrent hard to detect and throttle. As of November 2015, Vuze, Bitcomet, KTorrent, Transmission, Deluge, μTorrent, MooPolice, Halite, qBittorrent, rTorrent, and the latest official BitTorrent client (v6) support MSE/PE encryption. In September 2006 it was reported that some software could detect and throttle BitTorrent traffic masquerading as HTTP traffic.[84]

Reports in August 2007 indicated that Comcast was preventing BitTorrent seeding by monitoring and interfering with the communication between peers. Protection against these efforts is provided by proxying the client-tracker traffic via an encrypted tunnel to a point outside of the Comcast network.[85] Comcast has more recently called a 'truce' with BitTorrent, Inc. with the intention of shaping traffic in a protocol-agnostic manner.[86] Questions about the ethics and legality of Comcast's behavior have led to renewed debate about net neutrality in the United States.[87] In general, although encryption can make it difficult to determine what is being shared, BitTorrent is vulnerable to traffic analysis. Thus, even with MSE/PE, it may be possible for an ISP to recognize BitTorrent and also to determine that a system is no longer downloading but only uploading data, and terminate its connection by injecting TCP RST (reset flag) packets.

Multitracker[edit]

Another unofficial feature is an extension to the BitTorrent metadata format proposed by John Hoffman[88] and implemented by several indexing websites. It allows the use of multiple trackers per file, so if one tracker fails, others can continue to support file transfer. It is implemented in several clients, such as BitComet, BitTornado, BitTorrent, KTorrent, Transmission, Deluge, μTorrent, rtorrent, Vuze, and Frostwire. Trackers are placed in groups, or tiers, with a tracker randomly chosen from the top tier and tried, moving to the next tier if all the trackers in the top tier fail.

Torrents with multiple trackers can decrease the time it takes to download a file, but also have a few consequences:

  • Poorly implemented[89] clients may contact multiple trackers, leading to more overhead-traffic.
  • Torrents from closed trackers suddenly become downloadable by non-members, as they can connect to a seed via an open tracker.

Implementations[edit]

The BitTorrent specification is free to use and many clients are open source, so BitTorrent clients have been created for all common operating systems using a variety of programming languages. The official BitTorrent client, μTorrent, qBittorrent, Transmission, Vuze, and BitComet are some of the most popular clients.[90][91][92][93]

Some BitTorrent implementations such as MLDonkey and Torrentflux are designed to run as servers. For example, this can be used to centralize file sharing on a single dedicated server which users share access to on the network.[94] Server-oriented BitTorrent implementations can also be hosted by hosting providers at co-located facilities with high bandwidth Internet connectivity (e.g., a datacenter) which can provide dramatic speed benefits over using BitTorrent from a regular home broadband connection. Services such as ImageShack can download files on BitTorrent for the user, allowing them to download the entire file by HTTP once it is finished. The Operaweb browser supports BitTorrent,[95] as does Wyzo. BitLet allows users to download Torrents directly from their browser using a Java applet. An increasing number of hardware devices are being made to support BitTorrent. These include routers and NAS devices containing BitTorrent-capable firmware like OpenWrt. Proprietary versions of the protocol which implement DRM, encryption, and authentication are found within managed clients such as Pando.

Development[edit]

An unimplemented (as of February 2008) unofficial feature is Similarity Enhanced Transfer (SET), a technique for improving the speed at which peer-to-peer file sharing and content distribution systems can share data. SET, proposed by researchers Pucha, Andersen, and Kaminsky, works by spotting chunks of identical data in files that are an exact or near match to the one needed and transferring these data to the client if the 'exact' data are not present. Their experiments suggested that SET will help greatly with less popular files, but not as much for popular data, where many peers are already downloading it.[96] Andersen believes that this technique could be immediately used by developers with the BitTorrent file sharing system.[97]

As of December 2008, BitTorrent, Inc. is working with Oversi on new Policy Discover Protocols that query the ISP for capabilities and network architecture information. Oversi's ISP hosted NetEnhancer box is designed to 'improve peer selection' by helping peers find local nodes, improving download speeds while reducing the loads into and out of the ISP's network.[98]

Legal issues[edit]

Although the protocol itself is legal,[99] problems stem from using the protocol to traffic copyright infringing works. There has been much controversy over the use of BitTorrent trackers. BitTorrent metafiles themselves do not store file contents. Whether the publishers of BitTorrent metafiles violate copyrights by linking to copyrighted works without the authorization of copyright holders is controversial. Various jurisdictions have pursued legal action against websites that host BitTorrent trackers. High-profile examples include the closing of Suprnova.org, TorrentSpy, LokiTorrent, BTJunkie, Mininova, Oink's Pink Palace and What.cd. The Pirate Bay torrent website, formed by a Swedish group, is noted for the 'legal' section of its website in which letters and replies on the subject of alleged copyright infringements are publicly displayed. On 31 May 2006, The Pirate Bay's servers in Sweden were raided by Swedish police on allegations by the MPAA of copyright infringement;[100] however, the tracker was up and running again three days later. In the study used to value NBC Universal in its merger with Comcast, Envisional examined the 10,000 torrent swarms managed by PublicBT which had the most active downloaders. After excluding pornographic and unidentifiable content, it was found that only one swarm offered legitimate content.[101]

In the United States, more than 200,000 lawsuits have been filed for copyright infringement on BitTorrent since 2010.[102] On 30 April 2012, the UK High Court ordered five ISPs to block BitTorrent search engine The Pirate Bay.[103] (see List of websites blocked in the United Kingdom)

Security problems[edit]

One concern is the UDP flood attack. BitTorrent implementations often use μTP for their communication. To achieve high bandwidths, the underlying protocol used is UDP, which allows spoofing of source addresses of internet traffic. It has been possible to carry out Denial-of-service attacks in a P2P lab environment, where users running BitTorrent clients act as amplifiers for an attack at another service.[104] However this is not always an effective attack because ISPs can check if the source address is correct.

Challenges[edit]

'Leeches', are those users who download more than they share. As BitTorrent is a collaborative distributed platform, there is a section of the community that wants solutions to punish and discourage such behaviour.[105]

Malware[edit]

Several studies on BitTorrent have indicated that there exist files, containing malware, available for download via BitTorrent. In particular, one small sample[106] indicated that 18% of all executable programs available for download contained malware. Another study[107] claims that as much as 14.5% of BitTorrent downloads contain zero-day malware, and that BitTorrent was used as the distribution mechanism for 47% of all zero-day malware they have found.

BitErrant attack[edit]

Due to SHA1 collisions, an attacker can alter the execution path of the executable by serving altered chunks when the victim is downloading the executable using the BitTorrent protocol.[108]

Criticism of BitErrant attack[edit]

Despite the fact that a proof of concept exists, the attack may succeed in very limited cases: such as small chunk size (32kB). By selecting larger chunks (i.e. >256kB) the amount of resources required to find SHA1 collision is tremendous, which makes the attack virtually impossible.

See also[edit]

References[edit]

  1. ^Schulze, Hendrik; Klaus Mochalski (2009). 'Internet Study 2008/2009'(PDF). Leipzig, Germany: ipoque. Archived from the original(PDF) on 26 June 2011. Retrieved 3 October 2011. Peer-to-peer file sharing (P2P) still generates by far the most traffic in all monitored regions – ranging from 43% in Northern Africa to 70% Eastern Europe.
  2. ^'Application Usage & Threat Report'. Palo Alto Networks. 2013. Archived from the original on 31 October 2013. Retrieved 7 April 2013.Cite uses deprecated parameter |deadurl= (help)
  3. ^Van der Sar, Ernesto (4 December 2009). 'Thunder Blasts uTorrent's Market Share Away - TorrentFreak'. TorrentFreak. Archived from the original on 20 February 2016. Retrieved 18 June 2018.
  4. ^'UB Engineering Tweeter'. University at Buffalo's School of Engineering and Applied Sciences. Archived from the original on 11 November 2013.Cite uses deprecated parameter |deadurl= (help)
  5. ^Cohen, Bram (2 July 2001). 'BitTorrent – a new P2P app'. Yahoo eGroups. Archived from the original on 29 January 2008. Retrieved 15 April 2007.Cite uses deprecated parameter |deadurl= (help)
  6. ^ abcdCohen, Bram (October 2002). 'BitTorrent Protocol 1.0'. BitTorrent.org. Archived from the original on 8 February 2014. Retrieved 19 April 2013.Cite uses deprecated parameter |deadurl= (help)
  7. ^Wang, Liang; Kangasharju, J. (1 September 2013). 'Measuring large-scale distributed systems: Case of Bit Torrent Mainline DHT'. IEEE P2P 2013 Proceedings. pp. 1–10. doi:10.1109/P2P.2013.6688697. ISBN978-1-4799-0515-7. Archived from the original on 18 November 2015. Retrieved 7 January 2016.Cite uses deprecated parameter |dead-url= (help)
  8. ^'BitTorrent and μTorrent Software Surpass 150 Million User Milestone'. Bittorrent.com. 9 January 2012. Archived from the original on 26 March 2014. Retrieved 9 July 2012.
  9. ^Menasche, Daniel S.; Rocha, Antonio A. A.; de Souza e Silva, Edmundo A.; Leao, Rosa M.; Towsley, Don; Venkataramani, Arun (2010). 'Estimating Self-Sustainability in Peer-to-Peer Swarming Systems'. Performance Evaluation. 67 (11): 1243–1258. arXiv:1004.0395. doi:10.1016/j.peva.2010.08.013. by D. Menasche, A. Rocha, E. de Souza e Silva, R. M. Leao, D. Towsley, A. Venkataramani.
  10. ^Urvoy-Keller (December 2006). 'Rarest First and Choke Algorithms Are Enough'(PDF). SIGCOMM. Archived(PDF) from the original on 23 May 2012. Retrieved 9 March 2012.Cite uses deprecated parameter |dead-url= (help)
  11. ^Ernesto (12 July 2009). 'PublicBT Tracker Set To Patch BitTorrent' Achilles' Heel'. Torrentfreak. Archived from the original on 26 March 2014. Retrieved 14 July 2009.Cite uses deprecated parameter |deadurl= (help)
  12. ^Chwan-Hwa (John) Wu, J. David Irwin. Introduction to Computer Networks and Cybersecurity. Chapter 5.4.: Partially Centralized Architectures. CRC Press. February 4, 2013. ISBN9781466572133
  13. ^Zeilemaker, N., Capotă, M., Bakker, A., & Pouwelse, J. (2011). 'Tribler P2P Media Search and Sharing.' Proceedings of the 19th ACM International Conference on Multimedia - MM ’11.
  14. ^'DecentralizedRecommendation –'. Tribler.org. Archived from the original on 2 December 2008. Retrieved 9 July 2012.Cite uses deprecated parameter |deadurl= (help)
  15. ^Wong, Bernard; Vigfusson, Ymir; Gun Sirer, Emin (2 May 2007). 'Hyperspaces for Object Clustering and Approximate Matching in Peer-to-Peer Overlays'(PDF). Cornell University. Archived(PDF) from the original on 17 June 2012. Retrieved 7 April 2013.Cite uses deprecated parameter |dead-url= (help)
  16. ^Wong, Bernard (2008). 'Cubit: Approximate Matching for Peer-to-Peer Overlays'. Cornell University. Archived from the original on 31 December 2012. Retrieved 26 May 2008.Cite uses deprecated parameter |deadurl= (help)
  17. ^Wong, Bernard. 'Approximate Matching for Peer-to-Peer Overlays with Cubit'(PDF). Cornell University. Archived(PDF) from the original on 29 October 2008. Retrieved 26 May 2008.Cite uses deprecated parameter |dead-url= (help)
  18. ^'Torrent Exchange'. Archived from the original on 5 October 2013. Retrieved 31 January 2010. The torrent sharing feature of BitComet. Bitcomet.com.Cite uses deprecated parameter |deadurl= (help)
  19. ^ abTamilmani, Karthik (25 October 2003). 'Studying and enhancing the BitTorrent protocol'. Stony Brook University. Archived from the original(DOC) on 19 November 2004. Retrieved 6 May 2006.
  20. ^Kaune, Sebastian; et al. (2009). 'Unraveling BitTorrent's File Unavailability: Measurements and Analysis'. arXiv:0912.0625 [cs.NI].
  21. ^D. Menasche; et al. (1–4 December 2009). Content Availability and Bundling in Swarming Systems(PDF). CoNEXT'09. Rome, Italy: ACM via sigcomm.org. ISBN978-1-60558-636-6. Archived(PDF) from the original on 1 May 2011. Retrieved 18 December 2009.Cite uses deprecated parameter |dead-url= (help)
  22. ^Kaune, Sebastian; et al. 'The Seeder Promotion Problem: Measurements, Analysis and Solution Space'(PDF). Queen Mary's University London. Archived(PDF) from the original on 9 August 2014. Retrieved 20 July 2017.Cite uses deprecated parameter |dead-url= (help)
  23. ^'BitTorrent Specification'. Wiki.theory.org. Archived from the original on 26 June 2013. Retrieved 9 July 2012.Cite uses deprecated parameter |deadurl= (help)[dubious]
  24. ^ abJones, Ben (7 June 2015). 'BitTorrent's DHT Turns 10 Years Old'. TorrentFreak. Archived from the original on 11 June 2015. Retrieved 5 July 2015.Cite uses deprecated parameter |dead-url= (help)
  25. ^'Unofficial BitTorrent Protocol Specification v1.0'. Archived from the original on 14 December 2006. Retrieved 4 October 2009.Cite uses deprecated parameter |deadurl= (help)[dubious]
  26. ^Harrison, David (3 August 2008). 'Private Torrents'. Bittorrent.org. Archived from the original on 24 March 2013. Retrieved 4 October 2009.Cite uses deprecated parameter |deadurl= (help)
  27. ^'BitComet Banned From Growing Number of Private Trackers'. Archived from the original on 26 March 2014. Retrieved 4 October 2009.Cite uses deprecated parameter |deadurl= (help)
  28. ^'I2P Compared to Tor - I2P'. Archived from the original on 22 December 2015. Retrieved 16 December 2015.Cite uses deprecated parameter |dead-url= (help)
  29. ^'I2PHelper HowTo - VuzeWiki'. Archived from the original on 20 October 2017. Retrieved 16 December 2015.Cite uses deprecated parameter |dead-url= (help)
  30. ^'Bittorrent over Tor isn't a good idea - The Tor Blog'. Archived from the original on 13 October 2016. Retrieved 2 October 2016.Cite uses deprecated parameter |dead-url= (help)
  31. ^Inc., The Tor Project. 'Tor Project: FAQ'. Archived from the original on 22 October 2016. Retrieved 2 October 2016.Cite uses deprecated parameter |dead-url= (help)
  32. ^'This Website Could Be The Ultimate All-In-One Torrent Machine'. 8 April 2016. Archived from the original on 8 April 2016.
  33. ^'Torrent From the Cloud With Seedr - TorrentFreak'. 17 January 2016. Archived from the original on 19 April 2016. Retrieved 8 April 2016.Cite uses deprecated parameter |dead-url= (help)
  34. ^See, for example, 'Why Bit Torrent'. Archived from the original on 28 January 2013.Cite uses deprecated parameter |deadurl= (help). tasvideos.org.
  35. ^'Sub Pop page on BitTorrent.com'. Archived from the original on 14 January 2007. Retrieved 13 December 2006.
  36. ^'DGMlive.com'. DGMlive.com. Archived from the original on 11 November 2013. Retrieved 9 July 2012.
  37. ^'VODO – About...'. Retrieved 15 April 2012. (WebCite).
  38. ^Cory Doctorow (15 October 2009). 'Vodo: a filesharing service for film-makers'. Boing Boing. Happy Mutants LLC. Retrieved 15 April 2012. (WebCite)
  39. ^Ernesto. 'Pioneer One, The BitTorrent Exclusive TV-Series Continues'. TorrentFreak. Retrieved 15 April 2012. (WebCite)
  40. ^'CBC to BitTorrent Canada's Next Great Prime Minister'. CBC News. 19 March 2008. Archived from the original on 14 June 2010. Retrieved 19 March 2008.
  41. ^'Bittorrent' (in Norwegian). Nrkbeta.no. 2008. Archived from the original on 24 October 2013. Retrieved 7 April 2013.Cite uses deprecated parameter |deadurl= (help)
  42. ^'Torrents uploaded by EeuwvandeStad'. MiniNova. 2009. Archived from the original on 4 November 2013. Retrieved 7 April 2013.
  43. ^Denters, M. (11 August 2010). 'Tegenlicht – Download California Dreaming'. VPRO.nl. Archived from the original on 26 March 2014. Retrieved 7 April 2013.Cite uses deprecated parameter |deadurl= (help)
  44. ^Bol, M. (1 October 2009). 'Tegenlicht – VPRO gemeengoed' (in Dutch). VPRO.nl. Archived from the original on 26 March 2014. Retrieved 7 April 2013.Cite uses deprecated parameter |deadurl= (help)
  45. ^'Using BitTorrent with Amazon S3'. Archived from the original on 26 March 2014.Cite uses deprecated parameter |deadurl= (help)
  46. ^Rustad, Roger E. (26 August 2004). 'Blog Torrent and Participatory Culture'. Grep Law. Archived from the original on 12 June 2006. Retrieved 9 May 2006.
  47. ^'Blizzard Downloader'. Curse Inc. 4 November 2010. Archived from the original on 26 March 2014. Retrieved 4 November 2010.Cite uses deprecated parameter |deadurl= (help)
  48. ^'World of Tanks FAQ'. Wargaming. 15 December 2014. Archived from the original on 18 December 2014. Retrieved 15 December 2014.Cite uses deprecated parameter |dead-url= (help)
  49. ^MJ Guthrie (11 March 2013). 'EVE Online reconfiguring launcher to use BitTorrent'. Massively.joystiq.com. Archived from the original on 13 February 2014. Retrieved 7 April 2013.
  50. ^CCP Games (20 July 2010). 'All quiet on the EVE Launcher front? – EVE Community'. Community.eveonline.com. Archived from the original on 13 March 2013. Retrieved 7 April 2013.Cite uses deprecated parameter |deadurl= (help)
  51. ^'Complete Download Options List – BitTorrent'. Ubuntu.com. Archived from the original on 24 April 2010. Retrieved 7 May 2009.Cite uses deprecated parameter |deadurl= (help)
  52. ^HM Government (4 September 2012). 'Combined Online Information System'. Data.Gov.Uk Beta. Controller of Her Majesty's Stationery Office. Archived from the original on 26 March 2014. Retrieved 7 September 2012.Cite uses deprecated parameter |deadurl= (help)
  53. ^Ernesto (4 June 2010). 'UK Government Uses BitTorrent to Share Public Spending Data'. TorrentFreak. Archived from the original on 27 October 2013. Retrieved 7 September 2012.Cite uses deprecated parameter |deadurl= (help)
  54. ^'HPC Data Repository'. Florida State University. Archived from the original on 2 April 2013. Retrieved 7 April 2013.Cite uses deprecated parameter |dead-url= (help)
  55. ^Costa, Fernando; Silva, Luis; Fedak, Gilles; Kelley, Ian (2008). 'Optimizing the data distribution layer of BOINC with Bit Torrent'. 2008 IEEE International Symposium on Parallel and Distributed Processing. IEEE International Symposium on Parallel and Distributed Processing, 2008. IPDPS 2008. IEEE. p. 1. doi:10.1109/IPDPS.2008.4536446. ISBN978-1-4244-1693-6.(registration required)
  56. ^'Torrents Help Researchers Worldwide to Study Babies' Brains'. Torrent Freak. 3 June 2017. Archived from the original on 5 January 2018. Retrieved 4 January 2018.Cite uses deprecated parameter |dead-url= (help)
  57. ^Ernesto (25 June 2010). 'Facebook Uses BitTorrent, and They Love It'. Torrent Freak. Torrent Freak. Archived from the original on 19 April 2014. Retrieved 7 September 2012.Cite uses deprecated parameter |deadurl= (help)
  58. ^Ernesto (10 February 2010). 'Twitter Uses BitTorrent For Server Deployment'. Torrent Freak. Torrent Freak. Archived from the original on 26 March 2014. Retrieved 7 September 2012.Cite uses deprecated parameter |deadurl= (help)
  59. ^Ernesto (16 July 2010). 'BitTorrent Makes Twitter's Server Deployment 75x Faster'. Torrent Freak. Torrent Freak. Archived from the original on 26 March 2014. Retrieved 7 September 2012.Cite uses deprecated parameter |deadurl= (help)
  60. ^ abErnesto (7 August 2012). 'Internet Archive Starts Seeding 1,398,875 Torrents'. TorrentFreak. Archived from the original on 8 August 2012. Retrieved 7 August 2012.Cite uses deprecated parameter |deadurl= (help)
  61. ^'Hot List for bt1.us.archive.org (Updated August 7, 2012, 7:31 pm PDT)'. Archived from the original on 3 August 2012. Retrieved 8 August 2012.Cite uses deprecated parameter |dead-url= (help). Archive.org.
  62. ^'Welcome to Archive torrents'. Archived from the original on 19 January 2016. Retrieved 22 December 2015.Cite uses deprecated parameter |dead-url= (help). Archive.org. 2012.
  63. ^Carr, Austin (4 January 2011). 'BitTorrent Has More Users Than Netflix and Hulu Combined—and Doubled'. fastcompany.com. Archived from the original on 10 January 2011. Retrieved 9 July 2012.Cite uses deprecated parameter |deadurl= (help)
  64. ^Hartley, Matt (1 July 2011). 'BitTorrent turns ten'. Financialpost.com. Archived from the original on 4 November 2013. Retrieved 9 July 2012.Cite uses deprecated parameter |deadurl= (help)
  65. ^'AT&T patents system to 'fast-lane' BitTorrent traffic'. Thestack.com. 8 May 2006. Archived from the original on 23 February 2015. Retrieved 5 March 2015.Cite uses deprecated parameter |dead-url= (help)
  66. ^'FAQ:Modems/routers that are known to have problems with P2P apps'. uTorrent.com. Archived from the original on 13 September 2008. Retrieved 7 April 2013.
  67. ^Halkes, Gertjan; Pouwelse, Johan (2011). Jordi Domingo-Pascual; et al. (eds.). UDP NAT and Firewall Puncturing in the Wild. NETWORKING 2011:10th International IFIP TC 6 Networking Conference, Valencia, Spain, May 9–13, 2011, Proceedings. Springer. p. 7. ISBN9783642207976. Archived from the original on 9 May 2013. Retrieved 7 April 2013.Cite uses deprecated parameter |dead-url= (help)
  68. ^'Vuze Changelog'. Azureus.sourceforge.net. Archived from the original on 1 December 2006.Cite uses deprecated parameter |deadurl= (help)
  69. ^Wang, Liang; Kangasharju, Jussi. (2013). 'Measuring Large-Scale Distributed Systems: Case of BitTorrent Mainline DHT'(PDF). IEEE Peer-to-Peer. Archived(PDF) from the original on 12 May 2014. Retrieved 15 May 2014.Cite uses deprecated parameter |dead-url= (help)
  70. ^'Khashmir.Sourceforge.net'. Khashmir.Sourceforge.net. Archived from the original on 2 July 2012. Retrieved 9 July 2012.Cite uses deprecated parameter |deadurl= (help)
  71. ^'Azureus.sourceforge.net'. Azureus.sourceforge.net. Archived from the original on 1 August 2012. Retrieved 9 July 2012.Cite uses deprecated parameter |deadurl= (help)
  72. ^'HTTP-Based Seeding Specification'. BitTornado.com. Archived from the original(TXT) on 20 March 2004. Retrieved 9 May 2006.
  73. ^John Hoffman, DeHackEd (25 February 2008). 'HTTP Seeding – BitTorrent Enhancement Proposal № 17'. Archived from the original on 13 December 2013. Retrieved 17 February 2012.Cite uses deprecated parameter |deadurl= (help)
  74. ^'HTTP/FTP Seeding for BitTorrent'. GetRight.com. Archived from the original on 28 December 2009. Retrieved 18 March 2010.Cite uses deprecated parameter |deadurl= (help)
  75. ^Michael Burford (25 February 2008). 'WebSeed – HTTP/FTP Seeding (GetRight style) – BitTorrent Enhancement Proposal № 19'. Bittorrent.org. Archived from the original on 13 December 2013. Retrieved 17 February 2012.Cite uses deprecated parameter |deadurl= (help)
  76. ^'Burn Any Web-Hosted File into a Torrent With Burnbit'. TorrentFreak. 13 September 2010. Archived from the original on 9 August 2011. Retrieved 9 July 2012.Cite uses deprecated parameter |deadurl= (help)
  77. ^'PHP based torrent file creator, tracker and seed server'. PHPTracker. Archived from the original on 19 December 2013. Retrieved 9 July 2012.Cite uses deprecated parameter |deadurl= (help)
  78. ^Gillmor, Steve (13 December 2003). 'BitTorrent and RSS Create Disruptive Revolution'. EWeek.com. Retrieved 22 April 2007.
  79. ^Miller, Ernest (2 March 2004). 'BitTorrent + RSS = The New Broadcast'. Archived from the original on 23 October 2013.Cite uses deprecated parameter |deadurl= (help). The Importance of... Corante.com.
  80. ^Raymond, Scott (16 December 2003). 'Broadcatching with BitTorrent'. scottraymond.net. Archived from the original on 13 February 2004.
  81. ^'MoveDigital API REST functions'. Move Digital. 2006. Archived from the original on 11 August 2006. Retrieved 9 May 2006. Documentation.
  82. ^'Prodigem Enclosure Puller(pep.txt)'. Prodigem.com. Archived from the original(TXT) on 26 May 2006. Retrieved 9 May 2006. via Internet Wayback Machine.
  83. ^'Encrypting Bittorrent to take out traffic shapers'. Torrentfreak.com. 5 February 2006. Archived from the original on 26 March 2014. Retrieved 9 May 2006.Cite uses deprecated parameter |deadurl= (help)
  84. ^Sales, Ben (27 September 2006). 'ResTech solves network issues'. studlife.com. Archived from the original on 26 March 2014.Cite uses deprecated parameter |deadurl= (help)
  85. ^'Comcast Throttles BitTorrent Traffic, Seeding Impossible'. Archived from the original on 11 October 2013.Cite uses deprecated parameter |deadurl= (help), TorrentFreak, 17 August 2007.
  86. ^Broache, Anne (27 March 2008). 'Comcast and BitTorrent Agree to Collaborate'. News.com. Archived from the original on 9 May 2008. Retrieved 9 July 2012.Cite uses deprecated parameter |deadurl= (help)
  87. ^Soghoian, Chris (4 September 2007). 'Is Comcast's BitTorrent filtering violating the law?'. Cnet.com. Archived from the original on 15 July 2010. Retrieved 9 July 2012.Cite uses deprecated parameter |deadurl= (help)
  88. ^'BEP12: Multitracker Metadata Extension'. BitTorrent Inc. Archived from the original on 27 December 2012. Retrieved 28 March 2013.Cite uses deprecated parameter |deadurl= (help)
  89. ^'P2P:Protocol:Specifications:Multitracker'. wiki.depthstrike.com. Archived from the original on 26 March 2014. Retrieved 13 November 2009.Cite uses deprecated parameter |deadurl= (help)[dubious]
  90. ^Van Der Sar, Ernesto (4 December 2009). 'Thunder Blasts uTorrent's Market Share Away'. TorrentFreak. Archived from the original on 7 December 2009. Retrieved 15 September 2011.Cite uses deprecated parameter |deadurl= (help)
  91. ^'uTorrent Dominates BitTorrent Client Market Share'. TorrentFreak. 24 June 2009. Archived from the original on 3 April 2014. Retrieved 25 June 2013.Cite uses deprecated parameter |deadurl= (help)
  92. ^'Windows Public File Sharing Market Share 2015'. opswat. Archived from the original on 14 April 2016. Retrieved 1 April 2016.Cite uses deprecated parameter |dead-url= (help)
  93. ^Henry, Alan. 'Most Popular BitTorrent Client 2015'. lifehacker. Archived from the original on 9 April 2016. Retrieved 1 April 2016.Cite uses deprecated parameter |dead-url= (help)
  94. ^'Torrent Server combines a file server with P2P file sharing'. Turnkeylinux.org. Archived from the original on 7 July 2012. Retrieved 9 July 2012.Cite uses deprecated parameter |dead-url= (help)
  95. ^Anderson, Nate (1 February 2007). 'Does network neutrality mean an end to BitTorrent throttling?'. Ars Technica, LLC. Archived from the original on 16 December 2008. Retrieved 9 February 2007.Cite uses deprecated parameter |deadurl= (help)
  96. ^Himabindu Pucha; David G. Andersen; Michael Kaminsky (April 2007). 'Exploiting Similarity for Multi-Source Downloads Using File Handprints'. Purdue University, Carnegie Mellon University, Intel Research Pittsburgh. Archived from the original on 18 June 2013. Retrieved 15 April 2007.Cite uses deprecated parameter |deadurl= (help)
  97. ^'Speed boost plan for file-sharing'. BBC News. 12 April 2007. Archived from the original on 7 December 2008. Retrieved 21 April 2007.Cite uses deprecated parameter |deadurl= (help)
  98. ^Johnston, Casey (9 December 2008). 'Arstechnica.com'. Arstechnica.com. Archived from the original on 12 December 2008. Retrieved 9 July 2012.Cite uses deprecated parameter |deadurl= (help)
  99. ^'Is torrenting safe? Is it illegal? Are you likely to be caught?'. 29 November 2018. Archived from the original on 6 October 2018. Retrieved 5 October 2018.Cite uses deprecated parameter |dead-url= (help)
  100. ^'The Piratebay is Down: Raided by the Swedish Police'. TorrentFreak. 31 May 2006. Archived from the original on 16 April 2014. Retrieved 20 May 2007.Cite uses deprecated parameter |deadurl= (help)
  101. ^'Technical report: An Estimate of Infringing Use of the Internet'(PDF). Envisional. 1 January 2011. Archived(PDF) from the original on 25 April 2012. Retrieved 6 May 2012.Cite uses deprecated parameter |dead-url= (help)
  102. ^'BitTorrent: Copyright lawyers' favourite target reaches 200,000 lawsuits'. The Guardian. 9 August 2011. Archived from the original on 4 December 2013. Retrieved 10 January 2014.
  103. ^Albanesius, Chloe (30 April 2012). 'U.K. High Court Orders ISPs to Block The Pirate Bay'. PC Magazine. Archived from the original on 25 May 2013. Retrieved 6 May 2012.Cite uses deprecated parameter |deadurl= (help)
  104. ^Adamsky, Florian (2015). 'P2P File-Sharing in Hell: Exploiting BitTorrent Vulnerabilities to Launch Distributed Reflective DoS Attacks'. Archived from the original on 1 October 2015. Retrieved 21 August 2015.Cite uses deprecated parameter |dead-url= (help)
  105. ^Bhakuni, A; Sharma, P; Kaushal, R (2014). 'Free-rider detection and punishment in Bit Torrent based P2P networks'. 2014 IEEE International Advance Computing Conference (IACC). International Advanced Computing Conference. p. 155. doi:10.1109/IAdCC.2014.6779311. ISBN978-1-4799-2572-8.
  106. ^Berns, Andrew D.; Jung, Eunjin (EJ) (24 April 2008). 'Searching for Malware in Bit Torrent'. University of Iowa, via TechRepublic. Archived from the original on 1 May 2013. Retrieved 7 April 2013.(registration required)
  107. ^Vegge, Håvard; Halvorsen, Finn Michael; Nergård, Rune Walsø (2009), 'Where Only Fools Dare to Tread: An Empirical Study on the Prevalence of Zero-Day Malware'(PDF), 2009 Fourth International Conference on Internet Monitoring and Protection, IEEE Computer Society, p. 66, doi:10.1109/ICIMP.2009.19, ISBN978-1-4244-3839-6, archived from the original(PDF (orig. work + pub. paper)) on 17 June 2013
  108. ^'BitErrant'. biterrant.io. Archived from the original on 19 March 2017. Retrieved 23 April 2017.Cite uses deprecated parameter |dead-url= (help)

Further reading[edit]

  • Pouwelse, Johan; et al. (2005). 'The Bittorrent P2P File-Sharing System: Measurements and Analysis'. Peer-to-Peer Systems IV. Lecture Notes in Computer Science. 3640. Berlin: Springer. pp. 205–216. doi:10.1007/11558989_19. ISBN978-3-540-29068-1. Retrieved 4 September 2011.

External links[edit]

Wikimedia Commons has media related to BitTorrent.
  • BitTorrent at Curlie
  • Unofficial BitTorrent Protocol Specification v1.0 at wiki.theory.org
  • Unofficial BitTorrent Location-aware Protocol 1.0 Specification at wiki.theory.org
  • Czerniawski, Michal (20 December 2009). 'Responsibility of Bittorrent Search Engines for Copyright Infringements'. SSRN. doi:10.2139/ssrn.1540913. SSRN1540913.Cite journal requires |journal= (help)
  • Cohen, Bram (16 February 2005). 'Under the hood of BitTorrent'. Computer Systems Colloquium (EE380). Stanford University.
Retrieved from 'https://en.wikipedia.org/w/index.php?title=BitTorrent&oldid=915273470'
I²C
TypeBus
Production history
DesignerPhilips Semiconductor, known today as NXP Semiconductors
Designed1982; 37 years ago
Data
Data signalOpen-collector or Open-drain
Widthdata line (SDA) + clock line (SCL)
Bitrate0.1 / 0.4 / 1.0 / 3.4 / 5.0 Mbit/s
(depending on mode)
ProtocolSerial, half-duplex

I²C (Inter-Integrated Circuit), pronounced I-squared-C, is a synchronous, multi-master, multi-slave, packet switched, single-ended, serialcomputer 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.[1]

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),[2] Nordic Semiconductor and Intersil, have introduced compatible I²C products to the market since the mid-1990s.

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.

  • 3Design
    • 3.4Physical layer
    • 3.10Addressing structure
  • 5Development tools

Applications[edit]

STMicroelectronics 24C08: Serial EEPROM with I²C bus

I²C is appropriate for peripherals where simplicity and low manufacturing cost are more important than speed. Common applications of the I²C bus are:

  • Describing connectable devices via small ROM configuration tables to enable 'plug and play' operation, such as
    • Serial Presence Detect (SPD) EEPROMs on dual in-line memory modules (DIMMs), and
    • Extended Display Identification Data (EDID) for monitors via VGA, DVI and HDMI connectors.
  • System management for PC systems via SMBus;
    • SMBus pins are allocated in both Conventional PCI and PCI Express connectors.
  • Accessing real-time clocks and NVRAM chips that keep user settings.
  • Accessing low-speed DACs and ADCs.
  • Changing contrast, hue, and color balance settings in monitors (via Display Data Channel).
  • Changing sound volume in intelligent speakers.
  • Controlling small (e.g. feature phone) OLED or LCD displays.
  • Reading hardware monitors and diagnostic sensors, e.g. a fan's speed.
  • Turning on and turning off the power supply of system components.[3]

A particular strength of I²C is the capability of a microcontroller to control a network of device chips with just two general-purpose I/O pins and software. Many other bus technologies used in similar applications, such as Serial Peripheral Interface Bus (SPI), require more pins and signals to connect multiple devices.

Revisions[edit]

The history of I²C specification releases:

  • In 1982, the original 100 kbit/s I²C system was created as a simple internal bus system for building control electronics with various Philips chips.
  • In 1992, Version 1 added 400 kbit/s Fast-mode (Fm) and a 10-bit addressing mode to increase capacity to 1008 nodes. This was the first standardized version.
  • In 1998, Version 2 added 3.4 Mbit/s High-speed mode (Hs) with power-saving requirements for electric voltage and current.
  • In 2000, Version 2.1 clarified version 2, without significant functional changes.
  • In 2007, Version 3 added 1 Mbit/s Fast-mode plus (Fm+) (using 20 mA drivers), and a device ID mechanism.
  • In 2012, Version 4 added 5 Mbit/s Ultra Fast-mode (UFm) for new USDA (data) and USCL (clock) lines using push-pull logic without pull-up resistors, and added an assigned manufacturer ID table. It is only a unidirectional bus.
  • In 2012, Version 5 corrected mistakes.
  • In 2014, Version 6 corrected two graphs. This is the most recent standard.[4]

Design[edit]

An example schematic with one master (a microcontroller), three slave nodes (an ADC, a DAC, and a microcontroller), and pull-up resistors Rp

I²C uses only two bidirectional open collector or open drain lines, Serial Data Line (SDA) and Serial Clock Line (SCL), pulled up with resistors.[4] Typical voltages used are +5 V or +3.3 V, although systems with other voltages are permitted.

The I²C reference design has a 7-bit address space, with a rarely-used 10-bit extension.[5] Common I²C bus speeds are the 100 kbit/sstandard mode and the 400 kbit/s Fast mode. There is also a 10 kbit/s low-speed mode, but arbitrarily low clock frequencies are also allowed. Recent revisions of I²C can host more nodes and run at faster speeds (400 kbit/s Fast mode, 1 Mbit/s Fast mode plus or Fm+, and 3.4 Mbit/sHigh Speed mode). These speeds are more widely used on embedded systems than on PCs.

Note the bit rates are quoted for the transfers between master and slave without clock stretching or other hardware overhead. Protocol overheads include a slave address and perhaps a register address within the slave device, as well as per-byte ACK/NACK bits. Thus the actual transfer rate of user data is lower than those peak bit rates alone would imply. For example, if each interaction with a slave inefficiently allows only 1 byte of data to be transferred, the data rate will be less than half the peak bit rate.

The number of nodes which can exist on a given I²C bus is limited by the address space and also by the total bus capacitance of 400 pF, which restricts practical communication distances to a few meters. The relatively high impedance and low noise immunity requires a common ground potential, which again restricts practical use to communication within the same PC board or small system of boards.

Reference design[edit]

The aforementioned reference design is a bus with a clock (SCL) and data (SDA) lines with 7-bit addressing. The bus has two roles for nodes: master and slave:

  • Master node – node that generates the clock and initiates communication with slaves.
  • Slave node – node that receives the clock and responds when addressed by the master.

The bus is a multi-master bus, which means that any number of master nodes can be present. Additionally, master and slave roles may be changed between messages (after a STOP is sent).

There may be four potential modes of operation for a given bus device, although most devices only use a single role and its two modes:

  • master transmit – master node is sending data to a slave,
  • master receive – master node is receiving data from a slave,
  • slave transmit – slave node is sending data to the master,
  • slave receive – slave node is receiving data from the master.

In addition to 0 and 1 data bits, the I²C bus allows special START and STOP signals which act as message delimiters and are distinct from the data bits. (This is in contrast to the start bits and stop bits used in asynchronous serial communication, which are distinguished from data bits only by their timing.)

The master is initially in master transmit mode by sending a START followed by the 7-bit address of the slave it wishes to communicate with, which is finally followed by a single bit representing whether it wishes to write (0) to or read (1) from the slave.

If the slave exists on the bus then it will respond with an ACK bit (active low for acknowledged) for that address. The master then continues in either transmit or receive mode (according to the read/write bit it sent), and the slave continues in the complementary mode (receive or transmit, respectively).

The address and the data bytes are sent most significant bit first. The start bit is indicated by a high-to-low transition of SDA with SCL high; the stop bit is indicated by a low-to-high transition of SDA with SCL high. All other transitions of SDA take place with SCL low.

If the master wishes to write to the slave, then it repeatedly sends a byte with the slave sending an ACK bit. (In this situation, the master is in master transmit mode, and the slave is in slave receive mode.)

If the master wishes to read from the slave, then it repeatedly receives a byte from the slave, the master sending an ACK bit after every byte except the last one. (In this situation, the master is in master receive mode, and the slave is in slave transmit mode.)

An I²C transaction may consist of multiple messages. The master terminates a message with a STOP condition if this is the end of the transaction or it may send another START condition to retain control of the bus for another message (a 'combined format' transaction).

Message protocols[edit]

I²C defines basic types of transactions, each of which begins with a START and ends with a STOP:

  • Single message where a master writes data to a slave.
  • Single message where a master reads data from a slave.
  • Combined format, where a master issues at least two reads or writes to one or more slaves.

In a combined transaction, each read or write begins with a START and the slave address. The START conditions after the first are also called repeated START bits. Repeated STARTs are not preceded by STOP conditions, which is how slaves know that the next message is part of the same transaction.

Any given slave will only respond to certain messages, as specified in its product documentation.

Pure I²C systems support arbitrary message structures. SMBus is restricted to nine of those structures, such as read word N and write word N, involving a single slave. PMBus extends SMBus with a Group protocol, allowing multiple such SMBus transactions to be sent in one combined message. The terminating STOP indicates when those grouped actions should take effect. For example, one PMBus operation might reconfigure three power supplies (using three different I²C slave addresses), and their new configurations would take effect at the same time: when they receive that STOP.

With only a few exceptions, neither I²C nor SMBus define message semantics, such as the meaning of data bytes in messages. Message semantics are otherwise product-specific. Those exceptions include messages addressed to the I²C general call address (0x00) or to the SMBus Alert Response Address; and messages involved in the SMBus Address Resolution Protocol (ARP) for dynamic address allocation and management.

In practice, most slaves adopt request-response control models, where one or more bytes following a write command are treated as a command or address. Those bytes determine how subsequent written bytes are treated or how the slave responds on subsequent reads. Most SMBus operations involve single-byte commands.

Messaging example: 24C32 EEPROM[edit]

One specific example is the 24C32 type EEPROM, which uses two request bytes that are called Address High and Address Low. (Accordingly, these EEPROMs are not usable by pure SMBus hosts, which only support single-byte commands or addresses.) These bytes are used for addressing bytes within the 32 kbit (or 4 kB) EEPROM address space. The same two-byte addressing is also used by larger EEPROMs, like the 24C512 which stores 512 kbits (or 64 kB). Writing and reading data to these EEPROMs uses a simple protocol: the address is written, and then data is transferred until the end of the message. The data transfer part protocol can cause trouble on the SMBus, since the data bytes are not preceded by a count, and more than 32 bytes can be transferred at once. I²C EEPROMs smaller than 32 kbit, like the 2 kbit 24C02, are often used on the SMBus with inefficient single-byte data transfers to overcome this problem.

A single message writes to the EEPROM. After the START, the master sends the chip's bus address with the direction bit clear (write), then sends the two-byte address of data within the EEPROM and then sends data bytes to be written starting at that address, followed by a STOP. When writing multiple bytes, all the bytes must be in the same 32-byte page. While it is busy saving those bytes to memory, the EEPROM will not respond to further I²C requests. (That is another incompatibility with SMBus: SMBus devices must always respond to their bus addresses.)

To read starting at a particular address in the EEPROM, a combined message is used. After a START, the master first writes that chip's bus address with the direction bit clear (write) and then the two bytes of EEPROM data address. It then sends a (repeated) START and the EEPROM's bus address with the direction bit set (read). The EEPROM will then respond with the data bytes beginning at the specified EEPROM data address — a combined message: first a write, then a read. The master issues an ACK after each read byte except the last byte, and then issues a STOP. The EEPROM increments the address after each data byte transferred; multi-byte reads can retrieve the entire contents of the EEPROM using one combined message.

Physical layer[edit]

At the physical layer, both SCL and SDA lines are of open-drain design, thus pull-up resistors are needed. A logic '0' is output by pulling the line to ground, and a logic '1' is output by letting the line float (output high impedance) so that the pull-up resistor pulls it high. A line is never actively driven high. This wiring allows multiple nodes to connect to the bus without short circuits from signal contention. High-speed systems (and some others) may use a current source instead of a resistor to pull-up on SCL or both SCL and SDA, to accommodate higher bus capacitance and enable faster rise times.

An important consequence of this is that multiple nodes may be driving the lines simultaneously. If any node is driving the line low, it will be low. Nodes that are trying to transmit a logical one (i.e. letting the line float high) can detect this and conclude that another node is active at the same time.

When used on SCL, this is called clock stretching and used as a flow-control mechanism for slaves. When used on SDA, this is called arbitration and ensures that there is only one transmitter at a time.

When idle, both lines are high. To start a transaction, SDA is pulled low while SCL remains high. It is illegal[4]:14 to transmit a stop marker by releasing SDA to float high again (although such a 'void message' is usually harmless), so the next step is to pull SCL low.

Except for the start and stop signals, the SDA line only changes while the clock is low; transmitting a data bit consists of pulsing the clock line high while holding the data line steady at the desired level.

While SCL is low, the transmitter (initially the master) sets SDA to the desired value and (after a small delay to let the value propagate) lets SCL float high. The master then waits for SCL to actually go high; this will be delayed by the finite rise time of the SCL signal (the RC time constant of the pull-up resistor and the parasitic capacitance of the bus) and may be additionally delayed by a slave's clock stretching.

Once SCL is high, the master waits a minimum time (4 μs for standard-speed I²C) to ensure that the receiver has seen the bit, then pulls it low again. This completes transmission of one bit.

After every 8 data bits in one direction, an 'acknowledge' bit is transmitted in the other direction. The transmitter and receiver switch roles for one bit, and the original receiver transmits a single '0' bit (ACK) back. If the transmitter sees a '1' bit (NACK) instead, it learns that:

  • (If master transmitting to slave) The slave is unable to accept the data. No such slave, command not understood, or unable to accept any more data.
  • (If slave transmitting to master) The master wishes the transfer to stop after this data byte.

Only the SDA line changes direction during acknowledge bits; the SCL is always controlled by the master.

After the acknowledge bit, the clock line is low and the master may do one of three things:

  • Begin transferring another byte of data: the transmitter sets SDA, and the master pulses SCL high.
  • Send a 'Stop': Set SDA low, let SCL go high, then let SDA go high. This releases the I²C bus.
  • Send a 'Repeated start': Set SDA high, let SCL go high, then pull SDA low again. This starts a new I²C bus message without releasing the bus.

Clock stretching using SCL[edit]

One of the more significant features of the I²C protocol is clock stretching. An addressed slave device may hold the clock line (SCL) low after receiving (or sending) a byte, indicating that it is not yet ready to process more data. The master that is communicating with the slave may not finish the transmission of the current bit, but must wait until the clock line actually goes high. If the slave is clock-stretching, the clock line will still be low (because the connections are open-drain). The same is true if a second, slower, master tries to drive the clock at the same time. (If there is more than one master, all but one of them will normally lose arbitration.)

The master must wait until it observes the clock line going high, and an additional minimal time (4 μs for standard 100 kbit/s I²C) before pulling the clock low again.

Although the master may also hold the SCL line low for as long as it desires (this is not allowed in newest Rev. 6 of the protocol – subsection 3.1.1), the term 'clock stretching' is normally used only when slaves do it. Although in theory any clock pulse may be stretched, generally it is the intervals before or after the acknowledgment bit which are used. For example, if the slave is a microcontroller, its I²C interface could stretch the clock after each byte, until the software decides whether to send a positive acknowledgment or a NACK.

Clock stretching is the only time in I²C where the slave drives SCL. Many slaves do not need to clock stretch and thus treat SCL as strictly an input with no circuitry to drive it. Some masters, such as those found inside custom ASICs may not support clock stretching; often these devices will be labeled as a 'two-wire interface' and not I²C.

To ensure a minimal bus throughput, SMBus places limits on how far clocks may be stretched. Hosts and slaves adhering to those limits cannot block access to the bus for more than a short time, which is not a guarantee made by pure I²C systems.

Arbitration using SDA[edit]

Every master monitors the bus for start and stop bits and does not start a message while another master is keeping the bus busy. However, two masters may start transmission at about the same time; in this case, arbitration occurs. Slave transmit mode can also be arbitrated, when a master addresses multiple slaves, but this is less common. In contrast to protocols (such as Ethernet) that use random back-off delays before issuing a retry, I²C has a deterministic arbitration policy. Each transmitter checks the level of the data line (SDA) and compares it with the levels it expects; if they do not match, that transmitter has lost arbitration and drops out of this protocol interaction.

If one transmitter sets SDA to 1 (not driving a signal) and a second transmitter sets it to 0 (pull to ground), the result is that the line is low. The first transmitter then observes that the level of the line is different from that expected and concludes that another node is transmitting. The first node to notice such a difference is the one that loses arbitration: it stops driving SDA. If it is a master, it also stops driving SCL and waits for a STOP; then it may try to reissue its entire message. In the meantime, the other node has not noticed any difference between the expected and actual levels on SDA and therefore continues transmission. It can do so without problems because so far the signal has been exactly as it expected; no other transmitter has disturbed its message.

If the two masters are sending a message to two different slaves, the one sending the lower slave address always 'wins' arbitration in the address stage. Since the two masters may send messages to the same slave address, and addresses sometimes refer to multiple slaves, arbitration must continue into the data stages.

Arbitration occurs very rarely, but is necessary for proper multi-master support. As with clock stretching, not all devices support arbitration. Those that do, generally label themselves as supporting 'multi-master' communication.

One case which must be handled carefully in multi-master I²C implementations is that of the masters talking to each other. One master may lose arbitration to an incoming message, and must change its role from master to slave in time to acknowledge its own address.

In the extremely rare case that two masters simultaneously send identical messages, both will regard the communication as successful, but the slave will only see one message. For this reason, when a slave can be accessed by multiple masters, every command recognized by the slave either must be idempotent or must be guaranteed never to be issued by two masters at the same time. (For example, a command which is issued by only one master need not be idempotent, nor is it necessary for a specific command to be idempotent when some mutual exclusion mechanism ensures that only one master can be caused to issue that command at any given time.)

Arbitration in SMBus[edit]

While I²C only arbitrates between masters, SMBus uses arbitration in three additional contexts, where multiple slaves respond to the master, and one gets its message through.

  • Although conceptually a single-master bus, a slave device that supports the 'host notify protocol' acts as a master to perform the notification. It seizes the bus and writes a 3-byte message to the reserved 'SMBus Host' address (0x08), passing its address and two bytes of data. When two slaves try to notify the host at the same time, one of them will lose arbitration and need to retry.
  • An alternative slave notification system uses the separate SMBALERT# signal to request attention. In this case, the host performs a 1-byte read from the reserved 'SMBus Alert Response Address' (0x0C), which is a kind of broadcast address. All alerting slaves respond with a data bytes containing their own address. When the slave successfully transmits its own address (winning arbitration against others) it stops raising that interrupt. In both this and the preceding case, arbitration ensures that one slave's message will be received, and the others will know they must retry.
  • SMBus also supports an 'address resolution protocol', wherein devices return a 16-byte 'universal device ID' (UDID). Multiple devices may respond; the one with the lowest UDID will win arbitration and be recognized.

Arbitration in PMBus[edit]

PMBus version 1.3 extends the SMBus alert response protocol in its 'zone read' protocol.[6] Slaves may be grouped into 'zones', and all slaves in a zone may be addressed to respond, with their responses masked (omitting unwanted information), inverted (so wanted information is sent as 0 bits, which win arbitration), or reordered (so the most significant information is sent first). Arbitration ensures that the highest priority response is the one first returned to the master.

PMBus reserves I²C addresses 0x28 and 0x37 for zone reads and writes, respectively.

Differences between modes[edit]

There are several possible operating modes for I²C communication. All are compatible in that the 100 kbit/s standard mode may always be used, but combining devices of different capabilities on the same bus can cause issues, as follows:

  • Fast mode is highly compatible and simply tightens several of the timing parameters to achieve 400 kbit/s speed. Fast mode is widely supported by I²C slave devices, so a master may use it as long as it knows that the bus capacitance and pull-up strength allow it.
  • Fast mode plus achieves up to 1 Mbit/s using more powerful (20 mA) drivers and pull-ups to achieve faster rise and fall times. Compatibility with standard and fast mode devices (with 3 mA pull-down capability) can be achieved if there is some way to reduce the strength of the pull-ups when talking to them.
  • High speed mode (3.4 Mbit/s) is compatible with normal I²C devices on the same bus, but requires the master have an active pull-up on the clock line which is enabled during high speed transfers. The first data bit is transferred with a normal open-drain rising clock edge, which may be stretched. For the remaining seven data bits, and the ACK, the master drives the clock high at the appropriate time and the slave may not stretch it. All high-speed transfers are preceded by a single-byte 'master code' at fast/standard speed. This code serves three purposes:
    1. it tells high-speed slave devices to change to high-speed timing rules,
    2. it ensures that fast/normal speed devices will not try to participate in the transfer (because it does not match their address), and
    3. because it identifies the master (there are eight master codes, and each master must use a different one), it ensures that arbitration is complete before the high-speed portion of the transfer, and so the high-speed portion need not make allowances for that ability.
  • Ultra-Fast mode is essentially a write-only I²C subset, which is incompatible with other modes except in that it is easy to add support for it to an existing I²C interface hardware design. Only one master is permitted, and it actively drives both clock and data lines at all times to achieve a 5 Mbit/s transfer rate. Clock stretching, arbitration, read transfers, and acknowledgements are all omitted. It is mainly intended for animated LED displays where a transmission error would only cause an inconsequential brief visual glitch. The resemblance to other I²C bus modes is limited to:
    • the start and stop conditions are used to delimit transfers,
    • I²C addressing allows multiple slave devices to share the bus without SPI bus style slave select signals, and
    • a ninth clock pulse is sent per byte transmitted marking the position of the unused acknowledgement bits.

In all modes, the clock frequency is controlled by the master(s), and a longer-than-normal bus may be operated at a slower-than-nominal speed by underclocking.

Circuit interconnections[edit]

I²C is popular for interfacing peripheral circuits to prototyping systems, such as the Arduino and Raspberry Pi. I²C does not employ a standardized connector, however, board designers have created various wiring schemes for I²C interconnections. To minimize the possible damage due to plugging 0.1-inch headers in backwards, some developers have suggested using alternating signal and power connections of the following wiring schemes: (GND, SCL, VCC, SDA) or (VCC, SDA, GND, SCL).[7]

The vast majority of applications use I²C in the way it was originally designed—peripheral ICs directly wired to a processor on the same printed circuit board, and therefore over relatively short distances of less than a foot, without a connector.However a few applications use I²C to communicate between two boards, in some cases over a dozen meters apart, using pairs of I²C bus buffers to boost the signal or re-encode it as a differential signal traveling over CAT5 or other cable.[8][9]

Several standard connectors carry I²C signals. For example, the UEXT connector carries I²C;the 10-pin iPack connector carries I²C;[10] the 6P6CLego Mindstorms NXT connector carries I²C;[11][12][13][14] a few people use the 8P8C connectors and CAT5 cable normally used for Ethernet physical layer to instead carry differential-encoded I²C signals[15] or boosted single-ended I²C signals;[16] and every HDMI and most DVI and VGA connectors carry DDC2 data over I²C.

Buffering and multiplexing[edit]

When there are many I²C devices in a system, there can be a need to include bus buffers or multiplexers to split large bus segments into smaller ones. This can be necessary to keep the capacitance of a bus segment below the allowable value or to allow multiple devices with the same address to be separated by a multiplexer. Many types of multiplexers and buffers exist and all must take into account the fact that I²C lines are specified to be bidirectional. Multiplexers can be implemented with analog switches, which can tie one segment to another. Analog switches maintain the bidirectional nature of the lines but do not isolate the capacitance of one segment from another or provide buffering capability.

Buffers can be used to isolate capacitance on one segment from another and/or allow I²C to be sent over longer cables or traces. Buffers for bi-directional lines such as I²C must use one of several schemes for preventing latch-up. I²C is open-drain, so buffers must drive a low on one side when they see a low on the other. One method for preventing latch-up is for a buffer to have carefully selected input and output levels such that the output level of its driver is higher than its input threshold, preventing it from triggering itself. For example, a buffer may have an input threshold of 0.4 V for detecting a low, but an output low level of 0.5 V. This method requires that all other devices on the bus have thresholds which are compatible and often means that multiple buffers implementing this scheme cannot be put in series with one another.

Alternatively, other types of buffers exist that implement current amplifiers or keep track of the state (i.e. which side drove the bus low) to prevent latch-up. The state method typically means that an unintended pulse is created during a hand-off when one side is driving the bus low, then the other drives it low, then the first side releases (this is common during an I²C acknowledgement).

Sharing SCL between multiple busses[edit]

When having a single master, it is possible to have multiple I²C busses share the same SCL line.[17][18] The packets on each bus are either sent one after the other or at the same time. This is possible, because the communication on each bus can be subdivided in alternating short periods with high SCL followed by short periods with low SCL. And the clock can be stretched, if one bus needs more time in one state.

Advantages are using slaves devices with the same address at the same time and saving connections or a faster throughput by using several data lines at the same time.

Line state table[edit]

These tables show the various atomic states and bit operations that may occur during an I²C message.

Line state
TypeInactive bus

(N)

Start

(S)

Idle

(i)

Stop

(P)

Clock stretching

(CS)

NoteFree to claim arbitrationBus claiming (master)Bus claimed (master)Bus freeing (master)Paused by slave
SDAPassive pullupFalling edge (master)Held low (master)Rising edge (master)Don't care
SCLPassive pullupPassive pullupPassive pullupPassive pullupHeld low (slave)
Line state
TypeSending one data bit (1) (0)

(SDA is set/sampled after SCL to avoid false state detection)

Receiver reply with ACK bit

(Byte received from sender)

Receiver reply with NACK bit

(Byte not received from sender)

Bit setup (Bs)Ready to sample (Bx)Bit setup (Bs)ACK (A)Bit setup (Bs)NACK (A')
NoteSender set bit (master/slave)Receiver sample bit (master/slave)Sender transmitter hi-ZSender sees SDA is lowSender transmitter hi-ZSender sees SDA is high
SDASet bit (after SCL falls)Capture bit (after SCL rises)Held low by receiver (after SCL falls)Driven high (or passive high) by receiver (after SCL falls)
SCLFalling edge (master)Rising edge (master)Falling edge (master)Rising edge (master)Falling edge (master)Rising edge (master)
Line state (repeated start)
TypeSetting up for a (Sr) signal after an ACK/NACKRepeated start (Sr)
NoteStart here from ACKAvoiding stop (P) stateStart here from NACKSame as start (S) signal
SDAWas held low for ACKRising edgePassive highPassive highFalling edge (master)
SCLFalling edge (master)Held lowRising edge (master)Passive highPassive pullup

Addressing structure[edit]

7-bit addressing[edit]

6% protocol reviews
Field:SI2C address fieldR/W'AI2C message sequences...P
TypeStartByte 1ACKByte X etc...

Rest of the read or write

message goes here

Stop
Bit position in byte X76543210
7-bit address pos7654321
NoteMSBLSB1 = Read
0 = Write

10-bit addressing[edit]

Field:S10-bit mode indicatorUpper addrR/W'ALower address fieldI2C message sequencesP
TypeStartByte 1ACKByte 2Byte X etc.

Rest of the read or write

message goes here

Stop
Bit position in byte X7654321076543210
Bit value11110XXXXXXXXXXX
10-bit address pos10987654321
NoteIndicates 10-bit modeMSB1 = ReadLSB
0 = Write

Reserved addresses in 7-bit address space[edit]

Protocol

Two groups of addresses are reserved for special functions:

  • 0000 XXX
  • 1111 XXX
Reserved
address
index
8-bit byteDescription
7-bit addressR/W value
MSB
(4-bit)
LSB
(3-bit)
1-bit
100000000General call
200000001Start byte
30000001XCBUS address
40000010XReserved for different bus format
50000011XReserved for future purpose
600001XXXHS-mode master code
711111XX1Device ID
811110XXX10-bit slave addressing

SMBus reserves some additional addresses. In particular, 0001 000 is reserved for the SMBus host, which may be used by master-capable devices, 0001 100 is the 'SMBus alert response address' which is polled by the host after an out-of-band interrupt, and 1100 001 is the default address which is initially used by devices capable of dynamic address assignment.

Non-reserved addresses in 7-bit address space[edit]

MSB (4-bit)Typical usage[19][20][21][22][23]
0001Digital receivers, SMBus
0010TV video line decoders, IPMB
0011AV codecs
0100Video encoders, GPIO expanders
0101ACCESS bus, PMBus
0110VESA DDC, PMBus
0111Display controller
1000TV signal processing, audio processing, SMBus
1001AV switching, ADCs and DACs, IPMB, SMBus
1010Storage memory, real-time clock
1011AV processors
1100PLLs and tuners, modulators and demodulators, SMBus
1101AV processors and decoders, audio power amplifiers, SMBus
1110AV colour space converters

Although MSB 1111 is reserved for Device ID and 10-bit slave addressing, it is also used by VESA DDC display dependent devices such as pointing devices.[22]

Transaction format[edit]

An I²C transaction consists of one or more messages. Each message begins with a start symbol, and the transaction ends with a stop symbol. Start symbols after the first, which begin a message but not a transaction, are referred to as repeated start symbols.

Each message is a read or a write. A transaction consisting of a single message is called either a read or a write transaction. A transaction consisting of multiple messages is called a combined transaction. The most common form of the latter is a write message providing intra-device address information, followed by a read message.

Many I²C devices do not distinguish between a combined transaction and the same messages sent as separate transactions, but not all. The device ID protocol requires a single transaction; slaves are forbidden from responding if they observe a stop symbol. Configuration, calibration or self-test modes which cause the slave to respond unusually are also often automatically terminated at the end of a transaction.

Timing diagram[edit]

  1. Data transfer is initiated with a start bit (S) signaled by SDA being pulled low while SCL stays high.
  2. SCL is pulled low, and SDA sets the first data bit level while keeping SCL low (during blue bar time).
  3. The data are sampled (received) when SCL rises for the first bit (B1). For a bit to be valid, SDA must not change between a rising edge of SCL and the subsequent falling edge (the entire green bar time).
  4. This process repeats, SDA transitioning while SCL is low, and the data being read while SCL is high (B2, ...Bn).
  5. The final bit is followed by a clock pulse, during which SDA is pulled low in preparation for the stop bit.
  6. A stop bit (P) is signaled when SCL rises, followed by SDA rising.

In order to avoid false marker detection, there is a minimum delay between the SCL falling edge and changing SDA, and between changing SDA and the SCL rising edge. Note that an I²C message containing N data bits (including acknowledges) contains N+1 clock pulses.

Example of bit-banging the I²C master protocol[edit]

Below is an example of bit-banging the I²C protocol as an I²C master. The example is written in pseudoC. It illustrates all of the I²C features described before (clock stretching, arbitration, start/stop bit, ack/nack).[24]

Operating-system support[edit]

  • In AmigaOS one can use the i2c.resource component[25] for AmigaOS 4.x and MorphOS 3.x or the shared library i2c.library by Wilhelm Noeker for older systems.
  • Arduino developers can use the 'Wire' library.
  • Maximite supports I²C communications natively as part of its MMBasic.
  • PICAXE uses the i2c and hi2c commands.
  • eCos supports I²C for several hardware architectures.
  • ChibiOS/RT supports I²C for several hardware architectures.
  • FreeBSD, NetBSD and OpenBSD also provide an I²C framework, with support for a number of common master controllers and sensors.
    • Since OpenBSD 3.9 (released 1 May 2006; 13 years ago), a central i2c_scan subsystem probes all possible sensor chips at once during boot, using an ad-hoc weighting scheme and a local caching function for reading register values from the I²C slaves;[26] this makes it possible to probe sensors on general-purposeoff-the-shelf i386/amd64 hardware during boot without any configuration by the user nor a noticeable probing delay; the matching procedures of the individual drivers then only has to rely on a string-based 'friendly-name' for matching;[27] as a result, most I²C sensor drivers are automatically enabled by default in applicable architectures without ill effects on stability; individual sensors, both I²C and otherwise, are exported to the userland through the sysctl hw.sensors framework.
      As of March 2019, OpenBSD has over two dozen device drivers on I²C that export some kind of a sensor through the hw.sensors framework, and the majority of these drivers are fully enabled by default in i386/amd64 GENERIC kernels of OpenBSD.
    • In NetBSD, over two dozen of I²C slave devices exist that feature hardware monitoring sensors, which are accessible through the sysmon envsys framework as property lists. On general-purpose hardware, each driver has to do its own probing, hence all drivers for the I²C slaves are disabled by default in NetBSD in GENERIC i386/amd64 builds.
  • In Linux, I²C is handled with a device driver for the specific device, and another for the I²C (or SMBus) adapter to which it is connected. Several hundred such drivers are part of current releases.
  • In Mac OS X, there are about two dozen I²C kernel extensions that communicate with sensors for reading voltage, current, temperature, motion, and other physical status.
  • In Microsoft Windows, I²C is implemented by the respective device drivers of much of the industry's available hardware.
  • Unison OS, a POSIX RTOS for IoT, supports I²C for several MCU and MPU hardware architectures.
  • In Windows CE, I²C is implemented by the respective device drivers of much of the industry's available hardware.
  • In RISC OS, I²C is provided with a generic I²C interface from the IO controller and supported from the OS module system
  • In Sinclair QDOS and MinervaQLoperating systems I²C is supported by a set of extensions provided by TF Services.

Development tools[edit]

When developing or troubleshooting systems using I²C, visibility at the level of hardware signals can be important.

I²C host adapters[edit]

There are a number of hardware solutions for host computers, running Linux, Mac or Windows, I²C master and/or slave capabilities. Most of them are based on USB-to-I²C adapters. Not all of them require proprietary drivers or APIs.

I²C protocol analyzers[edit]

I²C protocol analyzers are tools that sample an I²C bus and decode the electrical signals to provide a higher-level view of the data being transmitted on the bus.

Patch 36 Protokol 48 Download

Logic analyzers[edit]

When developing and/or troubleshooting the I²C bus, examination of hardware signals can be very important. Logic analyzers are tools that collect, analyze, decode, and store signals, so people can view the high-speed waveforms at their leisure. Logic analyzers display time stamps of each signal level change, which can help find protocol problems. Most logic analyzers have the capability to decode bus signals into high-level protocol data and show ASCII data.

Limitations[edit]

The assignment of slave addresses is one weakness of I²C. Seven bits is too few to prevent address collisions between the many thousands of available devices. What alleviates the issue of address collisions between different vendors and also allows to connect to several identical devices is that manufacturers dedicate pins that can be used to set the slave address to one of a few address options per device. Two or three pins is typical, and with many devices, there are three or more wiring options per address pin.[28][29][30]

10-bit I²C addresses are not yet widely used, and many host operating systems do not support them.[31] Neither is the complex SMBus 'ARP' scheme for dynamically assigning addresses (other than for PCI cards with SMBus presence, for which it is required).

Automatic bus configuration is a related issue. A given address may be used by a number of different protocol-incompatible devices in various systems, and hardly any device types can be detected at runtime. For example, 0x51 may be used by a 24LC02 or 24C32 EEPROM, with incompatible addressing; or by a PCF8563 RTC, which cannot reliably be distinguished from either (without changing device state, which might not be allowed). The only reliable configuration mechanisms available to hosts involve out-of-band mechanisms such as tables provided by system firmware, which list the available devices. Again, this issue can partially be addressed by ARP in SMBus systems, especially when vendor and product identifiers are used; but that has not really caught on. The rev. 03 version of the I²C specification adds a device ID mechanism.

I²C supports a limited range of speeds. Hosts supporting the multi-megabit speeds are rare. Support for the Fm+ 1 Mbit/s speed is more widespread, since its electronics are simple variants of what is used at lower speeds. Many devices do not support the 400 kbit/s speed (in part because SMBus does not yet support it). I²C nodes implemented in software (instead of dedicated hardware) may not even support the 100 kbit/s speed; so the whole range defined in the specification is rarely usable. All devices must at least partially support the highest speed used or they may spuriously detect their device address.

Devices are allowed to stretch clock cycles to suit their particular needs, which can starve bandwidth needed by faster devices and increase latencies when talking to other device addresses. Bus capacitance also places a limit on the transfer speed, especially when current sources are not used to decrease signal rise times.

Because I²C is a shared bus, there is the potential for any device to have a fault and hang the entire bus. For example, if any device holds the SDA or SCL line low, it prevents the master from sending START or STOP commands to reset the bus. Thus it is common for designs to include a reset signal that provides an external method of resetting the bus devices. However many devices do not have a dedicated reset pin, forcing the designer to put in circuitry to allow devices to be power-cycled if they need to be reset.

Because of these limits (address management, bus configuration, potential faults, speed), few I²C bus segments have even a dozen devices. It is common for systems to have several such segments. One might be dedicated to use with high-speed devices, for low-latency power management. Another might be used to control a few devices where latency and throughput are not important issues; yet another segment might be used only to read EEPROM chips describing add-on cards (such as the SPD standard used with DRAM sticks).

6% Protocol Reviews

Derivative technologies[edit]

I²C is the basis for the ACCESS.bus, the VESADisplay Data Channel (DDC) interface, the System Management Bus (SMBus), Power Management Bus (PMBus) and the Intelligent Platform Management Bus (IPMB, one of the protocols of IPMI). These variants have differences in voltage and clock frequency ranges, and may have interrupt lines.

High-availability systems (AdvancedTCA, MicroTCA) use 2-way redundant I²C for shelf management. Multi-master I²C capability is a requirement in these systems.

TWI (Two-Wire Interface) or TWSI (Two-Wire Serial Interface) is essentially the same bus implemented on various system-on-chip processors from Atmel and other vendors.[32] Vendors use the name TWI, even though I²C is not a registered trademark as of 2014-11-07.[33] Trademark protection only exists for the respective logo (see upper right corner), and patents on I²C have now lapsed.

In some cases, use of the term 'two-wire interface' indicates incomplete implementation of the I²C specification. Not supporting arbitration or clock stretching is one common limitation, which is still useful for a single master communicating with simple slaves that never stretch the clock.

MIPI I3C sensor interface standard (I3C) is a development of I²C, under development in 2017.[34]

See also[edit]

  • UEXT Connector

References[edit]

  1. ^'I²C Licensing Information'(PDF). nxp.com. Archived(PDF) from the original on 2017-01-10. Retrieved 2018-04-29.Cite uses deprecated parameter |dead-url= (help)
  2. ^'Financial Press Releases-NXP'. investors.nxp.com. Retrieved 2018-04-29.
  3. ^'Benefits of Power Supplies Equipped with I2C Ethernet Communications'. Aegis Power Systems, Inc. Aegis Power Systems, Inc. Archived from the original on 2015-12-21. Retrieved 2015-12-21.Cite uses deprecated parameter |dead-url= (help)
  4. ^ abc'I²C-bus specification and user manual'(PDF). Rev. 6. NXP. 2014-04-04. UM10204. Archived(PDF) from the original on 2013-05-11.Cite uses deprecated parameter |dead-url= (help)
  5. ^'7-bit, 8-bit, and 10-bit I2C Slave Addressing'. Total Phase. Archived from the original on 2013-06-01. Retrieved 2018-04-29.Cite uses deprecated parameter |dead-url= (help)
  6. ^Using The ZONE_READ And ZONE_WRITE Protocols(PDF) (Application Note). Revision 1.0.1. System Management Interface Forum. 2016-01-07. AN001. Archived(PDF) from the original on 2017-09-22.Cite uses deprecated parameter |dead-url= (help)
  7. ^'Is there any definitive I2C pin-out guidance out there? Not looking for a 'STANDARD''. StackExchange.
  8. ^NXP Application note AN11075: Driving I2C-bus signals over twisted pair cables with PCA9605(PDF), 2017-08-16, archived from the original(PDF) on 2017-08-16
  9. ^Vasquez, Joshua (2017-08-16), Taking the leap off board: An introduction to I2C over long wires, archived from the original on 2017-08-16
  10. ^iPack Stackable Board Format, 2017-08-19, archived from the original on 2017-08-19
  11. ^Ferrari, Mario; Ferrari, Giulio (2018-04-29). 'Building Robots with LEGO Mindstorms NXT'. pp. 63–64. Archived from the original on 2018-04-29.
  12. ^Gasperi, Michael; Hurbain, Philippe (2010), 'Chapter 13: I²C Bus Communication', Extreme NXT: Extending the LEGO MINDSTORMS NXT to the Next Level
  13. ^Philo. 'NXT connector plug'Archived 2017-08-20 at the Wayback Machine
  14. ^Sivan Toledo. 'I2C Interfacing Part 1: Adding Digital I/O Ports'Archived 2017-08-12 at the Wayback Machine.2006
  15. ^'Sending I2C reliabily over Cat5 cables'Archived 2017-08-18 at the Wayback Machine
  16. ^'I2C Bus Connectors & Cables'Archived 2017-08-18 at the Wayback Machine
  17. ^https://github.com/Testato/SoftwareWire/wiki/Multiple-I2C-busses
  18. ^https://www.microchip.com/forums/m474935.aspx
  19. ^'I²C Address Allocation Table'(PDF) (Selection Guide). Philips Semiconductors. 1999-08-24. Archived from the original(PDF) on 2017-10-16. Retrieved 2017-10-01.Cite uses deprecated parameter |dead-url= (help)
  20. ^Data Handbook IC12: I2C Peripherals, Philips ordering code 9397 750 00306
  21. ^'System Management Bus (SMBus) Specification'(PDF). Version 3.0. System Management Interface Forum. 2014-12-20. pp. 81–82. Archived(PDF) from the original on 2016-01-29. Retrieved 2017-12-01.Cite uses deprecated parameter |dead-url= (help)
  22. ^ ab'VESA Display Data Channel Command Interface (DDC/CI) Standard'(PDF). Version 1.1. VESA. 2004-10-29. pp. 15–16. Archived(PDF) from the original on 2016-09-09. Retrieved 2017-12-01.Cite uses deprecated parameter |dead-url= (help)
  23. ^'Intelligent Platform Management Interface Specification Second Generation V2.0'(PDF). Document Revision 1.1. Intel, NEC, Hewlett-Packard & Dell. 2013-10-01. p. 563. Archived(PDF) from the original on 2016-03-27. Retrieved 2017-12-01. The 7-bit portion of the slave address for the BMC is 0010_000bCite uses deprecated parameter |dead-url= (help)
  24. ^TWI Master Bit Band Driver; Atmel; July 2012Archived 2017-03-29 at the Wayback Machine.
  25. ^i2c.resource componentArchived 2011-07-24 at the Wayback Machine for AmigaOS 4.x.
  26. ^Theo de Raadt (2015-05-29). '/sys/dev/i2c/i2c_scan.c#probe_val'. Super User's BSD Cross Reference. OpenBSD. Retrieved 2019-03-04. static u_int8_t probe_val[256];
  27. ^Constantine A. Murenin (2010-05-21). '5.2. I²C bus scan through i2c_scan.c'. OpenBSD Hardware Sensors — Environmental Monitoring and Fan Control (MMath thesis). University of Waterloo: UWSpace. hdl:10012/5234. Document ID: ab71498b6b1a60ff817b29d56997a418.
  28. ^Linear Technology's LTC4151Archived 2017-08-09 at the Wayback Machine has two pins for address selection, each of which can be tied high or low or left unconnected, offering 9 different addresses.
  29. ^Maxim's MAX7314Archived 2017-07-13 at the Wayback Machine has a single pin for address selection to be tied high or low or connected to SDA or SCL, offering 4 different addresses.
  30. ^TI's UCD9224Archived 2017-11-07 at the Wayback Machine uses two ADC channels discriminating twelve levels each to select any valid 7-bit address.
  31. ^Delvare, Jean (2005-08-16). 'Re: [PATCH 4/5] add i2c_probe_device and i2c_remove_device'. linux-kernel (Mailing list). <20050816183839.0eda95e3.khali@linux-fr.org>. Archived from the original on 2016-08-17.Cite uses deprecated parameter |dead-url= (help)CS1 maint: extra punctuation (link)
  32. ^avr-libc: Example using the two-wire interface (TWI)Archived 2007-05-27 at the Wayback Machine.
  33. ^'TESS -- Error'. tmsearch.uspto.gov. Retrieved 2018-04-29.[permanent dead link]
  34. ^Thornton, Scott (2017-11-29). 'The improved inter-integrated circuit (I3C)'. Microcontroller Tips. Archived from the original on 2018-02-03.Cite uses deprecated parameter |dead-url= (help)

Further reading[edit]

  • Himpe, Vincent (2011). Mastering the I²C Bus. ISBN978-0-905705-98-9. (248 pages)
  • Paret, Dominique (1997). The I2C Bus: From Theory to Practice. ISBN978-0-471-96268-7. (314 pages)

External links[edit]

Wikimedia Commons has media related to I2C.
  • Official I2C specification (free), NXP
Retrieved from 'https://en.wikipedia.org/w/index.php?title=I²C&oldid=903143310'