Currently in the process of applying for EtherType registration; this is a prototype.
This protocol provides a LinuxDriver for reception processing.
The driver enables exclusive processing of multiple communications.
It is used simultaneously by multiple applications.
Diretta is a protocol implemented not only on hardware sold by Diretta but also on products from multiple manufacturers.
Applications make reservations with the driver, enabling coexistence and communication using this Ether Type with applications other than Diretta.
Please use a commercial license to use Diretta.
Diretta's protocol will be disclosed under a license NDA.
If modifications to the protocol or libraries are required for integration into the actual device, you can report the necessary changes.
We are conducting a test.
https://help.diretta.link/en/support/solutions/articles/73000661018-146
Using 0x88B6 for testing purposes
Diretta is a protocol for audio data transfer.
Connection will be initiated on UDP port 19642.
It is then used to directly transfer only the audio stream.
https://www.diretta.link/
Diretta Direct Stream (DDS)
Sub Type 0x0000 is used for stream transmission.
| byte | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F |
| 0x0x | Distnation MAC Address | Source MAC Address | Ether Type | D1 | D2 | |||||||||||
| 0x1x EX=0 NO extended | Stream Data | |||||||||||||||
| 0x1x EX=1 DDS extended | LEN | VER | Sub Type | OP1 | OP2 | Stream Data / Payload | ||||||||||
DDS first control (D1) 1byte (When using QoS, interpret Stream Port Number directly as priority(0=high)._
| bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| offset=14 | EX | Stream Port Number (0-128) | ||||||
DDS second control (D2) 1byte
| bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| offset=15 | IR | Stream Counter (max 127) | ||||||
Sub Type in DDS extended (EX=1)
| bit | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| offset=18 | EXS | UID (Service Code | MSUB (Message ID per service | |||||||||||||
UID=0 MSUB=0 Stream
Assigned when used with services other than Diretta
EXS must set 0 ( For message expansion
| offset | length | description |
| 0 | 6 | Distnation MAC Address |
| 6 | 6 | Source MAC Address |
| 12 | 2 | Ether Type |
| 14 | 1 | DDS first control (D1) |
| 15 | 1 | DDS second control (D2) |
| 16 | 8 | DDS extended control |
| NO extended (EX=0) | ||
| 16 | Frame Length -16 | Stream Data (NO extended) |
| DDS extended (EX=1) | ||
| 16 | 1 | Length (LEN) |
| 17 | 1 | Version (VER) |
| Version 0 DDS extended (EX=1 VER=0) | ||
| 18 | 2 | Sub Type |
| 20 | 2 | Option Code 1 (OP1) |
| 22 | 2 | Option Code 2 (OP2) |
| 24 | Length (LEN) | Stream Data (DDS extended) /Payload |
Audio data must be aligned to 64-bit boundaries.
Therefore, it is designed so that DATA has an offset of 16 or 24.
Extended control (EX)
0 : stream start offset is 16. ProtocolVersion 0x00 / Sub Type 0x00
1 : DDS extended control (DE) is used ( stream start offset is 24.
Information request (IR)
0 : none
1 : Request the stream reception status.
Stream Port Number (0-127)
Stream output endpoint number
Handles multiple streams
Stream Counter (max 127)
Detects dropped stream packets
If dropped, a retransmission request will be made based on this value.
Stream Data
The RAW data of the output audio stream is entered here.
Length (LEN) in DDS extended
This value indicates the length of the audio stream.
Used when the size is less than the minimum size of 60 bytes for EtherFram.
If 0xff, the EtherFrame length is used.
Version (VER) in DDS extended
Protocol Version
must set 0x00
Message expansion (EXS)
Used when extending Sub Type
must set 0
Option Code 1/2 (OP1 / OP2)
For use when not Sub Type 0x0000
Protocol Diagram

Hedder Relation
Version:0 ( EX=0 or (EX=1 and VER=0 ) )
UID = 0 Control
Sub Type = 0x0001 Stream Port=0
Time Control
| byte | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F |
| 0x0x | Distnation MAC Address | Source MAC Address | Ether Type | D1 0x80 | D2 0x00 | |||||||||||
| 0x1x | LEN 16 | VER 0 | Sub Type 0x0001 | Ver0 opt1 0 (Reserv | Ver0 opt2 0 (Reserv | Host Clock 64bit (PicoSeconds | ||||||||||
UID = 1 Direta
SUB Type = 0x0101 Stream Port=0
Diretta Control
When not using UDP authentication communication
Encapsulates UDP communication
| byte | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F |
| 0x0x | Distnation MAC Address | Source MAC Address | Ether Type | D1 0xFF | D2 0x00 | |||||||||||
| 0x1x | LEN Size | VER 0 | Sub Type 0x0101 | Diretta MessageID | Diretta Status | Diretta Payload | ||||||||||
SUB Type = 0x0102 Stream Port=0
Debug Stream
SysLog-formatted messages are encapsulated.
| byte | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F |
| 0x0x | Distnation MAC Address | Source MAC Address | Ether Type | D1 0xFF | D2 0x00 | |||||||||||
| 0x1x | LEN Size | VER 0 | Sub Type 0x0102 | Ver0 opt1 facility | Ver0 opt2 level | Deubg Message | ||||||||||
Example Diretta
Diretta Discover (FInd Device)
| byte | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F |
| 0x0x | Distnation MAC Address FF:FF:FF:FF:FF:FF | Source MAC Address xx:xx:xx:xx:xx:xx | Ether Type | D1 0x80 | D2 0x00 | |||||||||||
| 0x1x | LEN 0x00 | VER 0 | Sub Type 0x0101 | Diretta MessageID 0x0000 | Diretta Status 0x0000 | |||||||||||
DDS first control(D1)
Extended control (EX) : 1
Stream Port Number : 0x00 Control port
LEN : 0x00 Diretta Payload is zero
Sub Type : 0x0101 Diretta Control
Ver0 opt1 Diretta MessageID : 0x0000 Diretta Discover
Ver0 opt2 Diretta Status : 0x0000 don't care
Diretta FOUND
| byte | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F |
| 0x0x | Distnation MAC Address xx:xx:xx:xx:xx:xx | Source MAC Address yy:yy:yy:yy:yy:yy | Ether Type | D1 0x80 | D2 0x00 | |||||||||||
| 0x1x | LEN 0x08 | VER 0 | Sub Type 0x0101 | Diretta MessageID 0x0001 | Diretta Status 0x0001 | Diretta Payload Vender ID 0xzzzzzzzzzzzzzzzz | ||||||||||
DDS first control(D1)
Extended control (EX) : 1
Stream Port Number : 0x00 Control port
LEN : 0x08 Diretta Payload is 8
Sub Type : 0x0101 Diretta Control
Ver0 opt1 Diretta MessageID : 0x0000 Diretta Found
Ver0 opt2 Diretta Status : 0x0001 Acknowledge
Diretta Payload Vender ID : manufacturer 64bit unique id
Diretta Information (ERR request ) Sent based on the result of Stream Counter in DDS second control (D2)
| byte | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F |
| 0x0x | Distnation MAC Address xx:xx:xx:xx:xx:xx | Source MAC Address yy:yy:yy:yy:yy:yy | Ether Type | D1 0x8w | D2 0x00 | |||||||||||
| 0x1x | LEN 0x08 | VER 0 | Sub Type 0x0101 | Diretta MessageID 0x000B | Diretta Status 0x0012 | Reserve 0x00 | Expected Count | Recive Count | Reserve 0x00 | |||||||
DDS first control(D1)
Extended control (EX) : 1
Stream Port Number : 0xww Stream port
LEN : 0x08 Diretta Payload is 8
Sub Type : 0x0101 Diretta Control
Ver0 opt1 Diretta MessageID : 0x000B Diretta Status Info
Ver0 opt2 Diretta Status : 0x0001 Connect and Count ERR
Diretta Payload : Report a reception error
Diretta Information (Information request) Sent based on the result of Information request (IR) in DDS second control (D2)
| byte | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F |
| 0x0x | Distnation MAC Address xx:xx:xx:xx:xx:xx | Source MAC Address yy:yy:yy:yy:yy:yy | Ether Type | D1 0x8w | D2 0x00 | |||||||||||
| 0x1x | LEN 0x08 | VER 0 | Sub Type 0x0101 | Diretta MessageID 0x000B | Diretta Status 0x0023 | Rate Time | Exist Time | Target Time | Reserve 0x00 | |||||||
DDS first control(D1)
Extended control (EX) : 1
Stream Port Number : 0xww Stream port
LEN : 0x08 Diretta Payload is 8
Sub Type : 0x0101 Diretta Control
Ver0 opt1 Diretta MessageID : 0x000B Diretta Status Info
Ver0 opt2 Diretta Status : 0x0001 Acknowledge and Connect and Info
Diretta Payload : Report the status of the receive buffer
Current test configuration
Register the stream port with the driver
Set a filter using the source MAC address for the required communication
This allows other applications on the same OS to share the same EtherType

#ifndef DDS_DRIVER_H_ #define DDS_DRIVER_H_ #include <linux/ioctl.h> /* DDD Diretta Direct Driver prototype rev 0 */ /* driver open path */ #define DDS_DRV_PATH "/dev/diretta-direct" /* MAC Address set ioctl arg */ struct _dds_macaddress{ unsigned char MAC[6]; }dds_drv_macaddress; /* ioctl magic numbers */ #define DDS_MAGIC 'x' #define DDS_REGIST_CMD 1 #define DDS_UNREGIST_CMD 2 #define DDS_CLEAR_CMD 3 #define DDS_TIMEOUT_CMD 4 #define DDS_FILTER_SRC_CMD 5 #define DDS_FILTER_DEST_CMD 6 #define DDS_FILTER_LEN_CMD 7 #define DDS_NODE_MAX_CMD 8 #define DDS_ETHERTYPE_CMD 9 #define DDS_WAKEUP_CMD 10 /* Get the Stream Port number to use Transfer */ #define DDS_REGIST_IOCTL _IO(DDS_MAGIC,DDS_REGIST_CMD) /* Release the stream port in use (this also occurs when you close the stream) */ #define DDS_UNREGIST_IOCTL _IO(DDS_MAGIC,DDS_UNREGIST_CMD) /* Clear self receive buffer */ #define DDS_CLEAR_IOCTL _IO(DDS_MAGIC,DDS_CLEAR_CMD) /* Set the 'rea'd timeout msec*/ #define DDS_TIMEOUT_IOCTL _IOW(DDS_MAGIC,DDS_TIMEOUT_CMD,int) /* Set source address filter */ #define DDS_FILTER_SRC_IOCTL _IOW(DDS_MAGIC,DDS_FILTER_SRC_CMD,dds_drv_macaddress) /* Set destination address filter */ #define DDS_FILTER_DEST_IOCTL _IOW(DDS_MAGIC,DDS_FILTER_DEST_CMD,dds_drv_macaddress) /* Set frame size limit */ #define DDS_FILTER_LEN_IOCTL _IOW(DDS_MAGIC,DDS_FILTER_LEN_CMD,int) /* Get the maximum number of registrations allowed (127 Port 0 is not use)‘ */ #define DDS_NODE_MAX_IOCTL _IO(DDS_MAGIC,DDS_NODE_MAX_CMD) /* Get the received EthreType */ #define DDS_ETHERTYPE_IOCTL _IO(DDS_MAGIC,DDS_ETHERTYPE_CMD) /* Interrupt the wait for 'read' and resume execution */ #define DDS_WAKEUP_IOCTL _IO(DDS_MAGIC,DDS_WAKEUP_CMD) #endif |
If you wish to use DDS for purposes other than Diretta, please create a ticket and contact the administrator.
Products WEB page https://www.diretta.link/dds/