In many complex systems, a wide range of different devices, often from several manufacturers, are installed. Controlling and monitoring these devices from a central point is a challenge. Even if a device is capable of being controlled remotely via a network, there is still the problem of the many different control protocols used in a heterogenous system. Such control protocols are usually very domain-specific and often even manufacturer-specific. A central control center would have to support all protocols present in the system, which is expensive in both implementation and maintenance.

The Generic Device Control Protocol is intended to remedy this situation by means of a uniform protocol for as wide a range of devices as possible.


GDCP uses the concept of services to abstract from the physical (or virtual) devices that participate in the network. Each service is identified within the network by a unique name. Services can be discovered automatically by clients, minimizing configuration requirements.

Tree Structure

The main idea of GDCP is to represent the state and functions of a device as a tree structure that reflects the device's functionality. Each node in a GDCP tree is identified by a URI unique within the network.

Every value of the device's internal state that should be accessible from the outside is represented by a leaf in the tree. Other devices can access and manipulate these values. When a client changes a value in the tree, the device updates its internal state accordingly.


Functions are device features that cannot be sensibly represented as a value. For example, resetting a device's settings should be modelled as a function, because it is an instantaneous feature. Functions may have any number of associated arguments.


GDCP provides a mechanism called "Signals" that allows a device to notify subscribed parties of significant events, such as user input or the failure of a device component. This spares controllers from polling the devices continuously for state changes, thus saving bandwidth and processing time.


For basic security, GDCP supports simple user authentication. GDCP services may hide parts of the tree for certain users or prevent users from manipulating the tree. For more sophisticated security, it is recommended to use a secure connection using SSL or similar.


All messages in GDCP are human-readable, even for someone not intimately familiar with the message format. This makes GDCP much easier to learn both for client and server developers. It also means that GDCP can be easily integrated into existing control solutions as long as they support sending strings over TCP.