International Blinking Pattern Interpretation. The International Blinking Pattern Interpretation (IBPI) is an internal computer hardware standard.
It defines two items:
 How SGPIO is interpreted into states for drives or slots on a backplane.
 How light emitting diodes (LEDs) on a backplane should represent these states.

IBPI was defined by the SFF-8489 specification of the Small Form Factor Special Interest Group in 2011.
SGPIO has been adopted across the storage industry, and has in large replaced proprietary protocols such as SCSI Enclosure Services (SES) and SAF-TE.  Note, however, that both IBPI and the underlying SGPIO are documenting common practice rather than providing requirements; the entire changelog for version 0.4 of IPBI is "Text changes made to identify this specification as one alternative, rather than the only one."

States for drives or slots can be, for example, empty, failed, rebuilding, etc. The state of a drive or slot is determined by the host bus adapter, and is typically transmitted to the backplane through SGPIO-signals on a cable.

Typical system architecture
In a typical system architecture, the host bus adapter (HBA) connects to a backplane through a 4× iPass cable. The SGPIO-signals run inside this cable, as a sideband.

The backplane may then optionally connect to the baseboard management controller of a motherboard through an I²C or SMBus.

The SGPIO bus consists of 4 electrical signals.  It originates (or is driven by) an initiator, typically a host bus adapter or SAS (Serial_Attached_SCSI) Expander, and arrives at a target, typically a backplane.

SGPIO is typically used in conjunction with SAS or SATA cables, where each physical port is attached to a single disk drive.

SGPIO bit definitions

The figure below shows the relationship between SClock, SLoad and the two data bits named SDataOut and SDataIn. An SGPIO frame is started after SLoad has been low for at least 5 SClock cycles.

Following the start of a new SGPIO frame, 3 bits per drive are driven from the initiator on to the SDataOut line. Simultaneously, the target drives 3 bits on the SDataIn line.
The initiator and target both use the rising edge clock to transmit changes in the SLoad, SDataOut, and SDataIn.

The figure shows SGPIO for 4 drive slots (12 clocks), which is the minimum allowed. The SGPIO stream can be larger and it is not uncommon for the stream to consist of slot data for 12, 24 or 36 drives/slots in the case of an expander.

Definition of the 3 bits
The 3 bits per drive is illustrated and interpreted as follows:

The first bit (ODn.0) is exclusively used to represent Activity.  The second and third bits; Locate (ODn.1) and Fail (ODn.2) are directly used to represent a locate and fail state of the drive.

Shortcomings in SGPIO 
The original SGPIO stream was intended for a low-cost implementation, and is limited to the capability of representing activity, locate, and fail LEDs. SGPIO became popular and adopted by HBA backplane and backplane vendors in 2004, and increasingly popular after the support by hardware manufacturers. 

With the advent of SAS/SATA hard drives, backplanes typically do not vary much from low to high end systems, except the addition of an extra physical port in the case of SAS. Since it is not economical for systems vendors to design separate backplanes for high and low end systems, the SGPIO standard became popular also in mid-range and higher end systems.

In higher end systems initiators are capable of providing additional useful status information, such as rebuilding drives and predicted failures of drives. There was no standard for representing these conditions in the original SGPIO specification, at the same time as efforts were being made to elaborate a variety of additions to the standard by component vendors. This resulted in the IBPI specification, which uses blinking frequencies of bits in the SGPIO stream to represent additional states of drives.

SGPIO interpretation
There are 3 bits per slot (or hard drive) in the SGPIO specification. This section describes how each of these bits are interpreted according to the IBPI specification.

Only the activity bit is interpreted independently of the two other bits. The two other bits (locate and fail) may be interpreted in combination with each other in the special case when both bits are driven solid on. In any other case, the locate and fail bits are interpreted independently.

Note that the interpreted conditions described in this section is only used to determine the condition of bits, and does not describe how LEDs are driven based on these conditions.

Hard drive presence (slot mated status) and valid states
When the hard drive for a particular slot is not present or has been removed, activity for that slot has no meaning, and should not be interpreted. Since it could still be desirable to locate the slot or indicate a failure, the Locate and Fail bits may have meaning for a particular slot, even if the physical drive is not present.

Activity bit (ODn.0) interpretation
The following section describes how the Activity Bit should be interpreted according to the IBPI specification.

Locate bit (ODn.1) and fail bit (ODn.2) interpretation
The following section shows how the Locate and Fail bits should be interpreted according to the IBPI specification.

LED blinking pattern interpretation
The IBPI standard defines interpretations for both 2 and 3 LED implementations as shown in Figure 3.

Summary table

This table summarizes the individual tables defined earlier into one table for clarity.

History
A draft specification was first published on August 5, 2008, based on the article on Wikipedia at the time.
American Megatrends (AMI) announced a product implementing IBPI in January 2009.
After a few revisions in 2011, such as identifying IBPI as just one alternative, revision 0.4 was adopted in November 2011.
Four companies voted for the standard: AMI, Hewlett-Packard, Molex, and Sandisk. All others abstained.

References

Computer buses
Communications protocols
SCSI