# Art-Net

Art-Net is a royalty-free communications protocol for transmitting the DMX512-A lighting control protocol and Remote Device management (RDM) protocol over the User Datagram Protocol (UDP) of the Internet protocol suite. It is used to communicate between "nodes" (e.g., intelligent lighting instruments) and a "server" (a lighting desk or general purpose computer running lighting control software).

## Facilities

Art-Net is a simple implementation of DMX512-A protocol over UDP in which lighting control information is conveyed in IP packets, typically on a private local area network such as Ethernet. Supported functions include transmitting and receiving lighting data (e.g., fader levels for individual lights, positions of movable lights); management functions such as detecting nodes, updating node control parameters, and transmitting timecodes; and functions that allow nodes to "subscribe" to "publisher" nodes so that, for example, nodes A and B can subscribe to node C (C will unicast information to A and B).

## Versions

Art-Net has gone through four versions which are claimed to be interoperable. Art-Net I used broadcasts extensively, giving a universe limit of approximately 40. Art-Net II mostly uses unicast packets, and addresses 256 universes. Art-Net III, released in 2011, addresses issues in managing larger numbers of universes, up to 32,768. Artnet IV, released in 2016, allows over 1000 ports per ip address.
Internally to the protocol, it is referred to as version 14.

## Addressing

In its simplest implementation, nodes all broadcast, originally on the 2.0.0.0/8 networks.
Addressing is typically fixed per node, often locked to the MAC Address and an "OEM" code allocated to the manufacturer, and jumper settings. Networks can use DHCP or statically configured IP addresses, and use unicast packets for greater network efficiency. The protocol can address 32768 DMX "universes", each of 512 channels, limited by bandwidth.
The fixed addressing can be problematic in networks with other addressing requirements. Revision Q of the protocol addressed this problem by adding 10.0.0.0/8 as an addressing scheme. For node discovery, broadcast packets are used.

## Packet format

The following table shows a typical packet, ArtDMX, for transmitting lighting values. It is sent to the fixed UDP port 0x1936 (6454 decimal).
The pink portion is the same on all Art-Net packets; the green portion is variable. The opcode (given in little endian) tells the recipient this is a packet containing DMX data in the data portion, intended to be output of the specified universe. Sequence is a sequential number between 1 and 255 allowing the recipient to reorder packets to address out-of-order delivery (this value is set to 0 to disable this feature); physical is an information packet showing the original physical universe of this data, if required. Then follows up to 512 lighting values in the range 0 to 255. Conceptually, this packet is broadcast to all nodes; but is ignored by all nodes except the one which is configured to listen for this universe. In practice the packet is typically unicast to the correct node.
| offset (bytes) | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 |
| 0 | 'A' | 'A' | 'A' | 'A' | 'A' | 'A' | 'A' | 'A' | 'r' | 'r' | 'r' | 'r' | 'r' | 'r' | 'r' | 'r' | 't' | 't' | 't' | 't' | 't' | 't' | 't' | 't' | '-' | '-' | '-' | '-' | '-' | '-' | '-' | '-' |
| 4 | 'N' | 'N' | 'N' | 'N' | 'N' | 'N' | 'N' | 'N' | 'e' | 'e' | 'e' | 'e' | 'e' | 'e' | 'e' | 'e' | 't' | 't' | 't' | 't' | 't' | 't' | 't' | 't' | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 8 | Opcode ArtDMX (0x5000) little endian | Opcode ArtDMX (0x5000) little endian | Opcode ArtDMX (0x5000) little endian | Opcode ArtDMX (0x5000) little endian | Opcode ArtDMX (0x5000) little endian | Opcode ArtDMX (0x5000) little endian | Opcode ArtDMX (0x5000) little endian | Opcode ArtDMX (0x5000) little endian | Opcode ArtDMX (0x5000) little endian | Opcode ArtDMX (0x5000) little endian | Opcode ArtDMX (0x5000) little endian | Opcode ArtDMX (0x5000) little endian | Opcode ArtDMX (0x5000) little endian | Opcode ArtDMX (0x5000) little endian | Opcode ArtDMX (0x5000) little endian | Opcode ArtDMX (0x5000) little endian | Protocol Version Hi (0) | Protocol Version Hi (0) | Protocol Version Hi (0) | Protocol Version Hi (0) | Protocol Version Hi (0) | Protocol Version Hi (0) | Protocol Version Hi (0) | Protocol Version Hi (0) | Protocol Version Lo (14) | Protocol Version Lo (14) | Protocol Version Lo (14) | Protocol Version Lo (14) | Protocol Version Lo (14) | Protocol Version Lo (14) | Protocol Version Lo (14) | Protocol Version Lo (14) |
| 12 | Sequence | Sequence | Sequence | Sequence | Sequence | Sequence | Sequence | Sequence | Physical | Physical | Physical | Physical | Physical | Physical | Physical | Physical | Universe little endian | Universe little endian | Universe little endian | Universe little endian | Universe little endian | Universe little endian | Universe little endian | Universe little endian | Universe little endian | Universe little endian | Universe little endian | Universe little endian | Universe little endian | Universe little endian | Universe little endian | Universe little endian |
| 16 | Length Hi | Length Hi | Length Hi | Length Hi | Length Hi | Length Hi | Length Hi | Length Hi | Length Lo (2 to 512, even) | Length Lo (2 to 512, even) | Length Lo (2 to 512, even) | Length Lo (2 to 512, even) | Length Lo (2 to 512, even) | Length Lo (2 to 512, even) | Length Lo (2 to 512, even) | Length Lo (2 to 512, even) | Data | Data | Data | Data | Data | Data | Data | Data | Data | Data | Data | Data | Data | Data | Data | Data |
| 20 | Data ... | Data ... | Data ... | Data ... | Data ... | Data ... | Data ... | Data ... | Data ... | Data ... | Data ... | Data ... | Data ... | Data ... | Data ... | Data ... | Data ... | Data ... | Data ... | Data ... | Data ... | Data ... | Data ... | Data ... | Data ... | Data ... | Data ... | Data ... | Data ... | Data ... | Data ... | Data ... |