Complete guide to Denon DRA-F109 control protocol

Hardware specs

Denon DRA-F109/DNP-F109/DCD-F109 remote connector is in fact TTL-level (5V) serial port. The connector is 3.5mm TRS jack (standard stereo plug). Tip is RX, ring is TX, sleeve is ground. Data is transmitted at 115.2 kbps baud rate. It may be easily connected to non-Denon hardware by using cheap 5V tolerant USB-to-Serial adapter. The receiver (DRA-F109) echoes back data recieved from other devices.


Data protocol

Note: 00 in this chapter means 0x00 (in hex)

We may say that byte stream is organized in packets. Each packet starts with serial port break condition. On POSIX compilant systems it is represented as 00 (null) byte when reading from the device. Break should have 16.25 ms (important when transmitting to the receiver) Packet has the following structure: BRK ff 55 length direction 00 <data> checksum, where:

The receiver implements two protocol: text-based and binary.

Text-based protocol

This protocol is only used when receiving data from the DRA, it does not react to sending such commands (we may be doing that wrong). This is a subset of Denon AVR serial protocol present in Home Theater receivers in form of standard RS232 port and it has official documentation.

The <data> of packet has the following structure: 80 00 <command> 0d, and possible commands (in regular expression notation) are:

Binary protocol

Bi-directional communication is possible with simple binary protocol. Some of it’s features overlap with text-based protocol.

Source and function selection

When function selection button in pressed on the remote:

When receiver wants to turn on specific device:

When source is changed (also by mechanical button on the receiver)

Control of input devices

The receiver forwards key-presses on the remote control if source other than tuner is selected: this data frames will have the following structure button destination 00.

Depending on selected source on the receiver the destination field is:

Buttons have the following identifiers:

Example: Packet of BRK ff 55 01 00 00 32 26 00 ad (checksum omited) means Play/pause Network Player.

Dimmer

The dimmer function sends 43 00 [brightness] where brightness may be 0, 1, 2 or 3 which means bright, dim, dark, display off respectively.

Other

The receiver also sends the following commands:

What is missing?

The receiver does not send anything if Add, Call, Search and Network Setup buttons are pressed on the remote. These buttons are exclusive for Network Player. You’ll need additional IR receiver to handle them i.e. with LIRC (see config file).

Controlling the DRA-F109 receiver

It is possible to control the receiver using binary protocol (remember to set direction to 1), for most commands length is 1. Till now we’ve identified the following commands:

Note that for the most of commands, DRA will provide feedback (usually with text-based protocol).

Example: Set volume to 10: BRK FF 55 01 01 00 40 00 0a a0.

Warning: Sending too short packet will hang the receiver (need to restart by disconnecting power).

Example implementation

Example implementation of the protocol in Ruby is available on GitHub:kfigiela/denon-raspberry where I keep code of my setup.

comments powered by Disqus