OGC PUCK is a simple standard command protocol that helps to automate instrument installation, configuration, and operation and data processing by physically storing information about the instrument with the device itself. The stored information includes a standard instrument datasheet, and optional PUCK payload. The payload can be an instrument description (metadata), driver code, or any other information deemed relevant by the observing system. When a PUCK-enabled instrument is connected to a host computer the host can retrieve the information from the instrument through PUCK protocol and deal with the information appropriately. The host can use retrieved instrument metadata to automatically parse and process data into a standard format. In addition, the host may install and execute instrument driver code that has been retrieved from the instrument. We refer to this automated process as plug-and-work. PUCK was originally developed by MBARI, and is now an official standard of the Open Geospatial Consortium's Sensor Web Enablement framework. The protocol is defined for instruments having an RS-232 or Ethernet interface.
OGC PUCK is implemented by several manufacturers. PUCK augments but does not replace existing instrument protocols. Thus a manufacturer can modify its instrument firmware by adding PUCK commands to the already-existing instrument command set. This approach allows manufacturers to implement PUCK without abandoning their existing firmware and software applications. Since many instruments already include a non-volatile memory device (e.g. Flash), it is usually easy for manufacturers to allocate some of that memory to PUCK memory. Note that PUCK does not specify an instrument's "native protocol", i.e. the manufacturer-defined commands that actually configure and operate the instrument. Instead it is expected that the native protocol can be deduced from references in the standard PUCK instrument datasheet or the optional PUCK payload.