IrOBEX (or just OBEX) is a communications protocol that facilitates the exchange of binary objects between devices. It is maintained by the Infrared Data Association but has also been adopted by the Bluetooth SIG and the SyncML wing of the OMA. One of OBEX's earliest popular applications was in the Palm III personal digital assistant. This PDA and its many successors use OBEX to exchange business cards, data, even applications.

OBEX is similar in design and function to HTTP in that a client uses a reliable transport to connect to a server and may then request or provide objects. But OBEX differs in many important respects:

  • Transports. HTTP is normally layered above a TCP/IP port. OBEX is commonly implemented over an IrLAP/IrLMP/Tiny TP stack on an IrDA device. In Bluetooth, OBEX is implemented above Baseband/Link Manager/L2CAP/RFCOMM stack. Other such "bindings" of OBEX are possible.

  • Binary transmissions. HTTP uses human-readable text, but OBEX uses binary-formatted type-length-value triplets called "Headers" to exchange information about a request or an object. These are much easier to parse by devices with limited resources.

  • Session support. HTTP transactions are inherently stateless; generally an HTTP client opens a connection, makes a single request, receives its response, and closes the connection. In OBEX, a single transport connection may bear many related operations. In fact, recent additions to the OBEX specification allow an abruptly closed transaction to be resumed with all state information intact.

OBEX is the foundation for many higher-layer "profiles":
  • In the IrDA:
  • In the Bluetooth SIG:
    • Generic Object Exchange Profile
    • Object Push Profile
    • File Transfer Profile
    • Synchronization Profile
    • Basic Imaging Profile
    • Basic Printing Profile
  • In the OMA:
    • SyncML binding

The latest version of OBEX's public specification is available at http://www.irda.org/.