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 Direct Stream (DDS)
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)
SubType 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 | |||||||||||
| 0x1c | Stream Data | |||||||||||||||
| (Ext) 0x1c | LEN | VER | SUB Type | OP1 | OP2 | Stream Data | ||||||||||
| offset | length | |
| 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 (DE) |
| 16 | total len-16 | stream data |
| 24 | DE Length | stream data (extended mode) |
Audio data must be aligned to 64-bit boundaries.
Therefore, it is designed so that DATA has an offset of 16 or 24.
DDS first control (D1) 1byte (When using QoS, interpret this slot directly as priority._
| bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| EX | Stream Port Number (0-127) 0 is debug reserv | |||||||
DDS second control (D2) 1byte
| bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| IR | Stream Counter (max 127) | |||||||
enable extended control (EX)
0 : stream start offset is 16. ProtocolVersion 0x00 / Subtype 0x00
1 : DDS extended control is used ( stream start offset is 24.
Information Request (IR)
0 : none
1 : Request the stream reception status.
LEN in (DE)
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 0, the EtherFrame length is used.
VER in (DE)
Protocol Version
SUB Type in (DE)
| bit | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| EXS | UID (Service Code | MSUB (Message ID per service | ||||||||||||||
UID = 0 Diretta Service
Assigned when used with services other than Diretta
EXS must set 0 ( For message expansion
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.
DDS version 0
no set EX ( not use extended control)
or set 1 EX and SUB set 0
DDS version 1 or next (sub-types)
set 1 EX ( enable extended control in (first control (D1) )
SUB set not 0
OP1 / OP2
For use when not SubType0
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

#define DDS_DRIVER_H_ #include <linux/ioctl.h> #define DDS_DRV_PATH "/dev/diretta-direct" struct _dds_macaddress{ unsigned char MAC[6]; }dds_drv_macaddress; #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_REGIST_IOCTL _IO(DDS_MAGIC,DDS_REGIST_CMD) #define DDS_UNREGIST_IOCTL _IO(DDS_MAGIC,DDS_UNREGIST_CMD) #define DDS_CLEAR_IOCTL _IO(DDS_MAGIC,DDS_CLEAR_CMD) #define DDS_TIMEOUT_IOCTL _IOW(DDS_MAGIC,DDS_TIMEOUT_CMD,int) #define DDS_FILTER_SRC_IOCTL _IOW(DDS_MAGIC,DDS_FILTER_SRC_CMD,dds_drv_macaddress) #define DDS_FILTER_DEST_IOCTL _IOW(DDS_MAGIC,DDS_FILTER_DEST_CMD,dds_drv_macaddress) #define DDS_FILTER_LEN_IOCTL _IOW(DDS_MAGIC,DDS_FILTER_LEN_CMD,int) #define DDS_NODE_MAX_IOCTL _IO(DDS_MAGIC,DDS_NODE_MAX_CMD) #define DDS_ETHERTYPE_IOCTL _IO(DDS_MAGIC,DDS_ETHERTYPE_CMD) #endif |
Version:0 ( EX=0 or (EX=1 and VER=0 ) )
Ethernet mode without CRC
SUB Type = 0x0001 Stream Port=0 (Reserve
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 0x80 | D2 0x00 | |||||||||||
| 0x1c | LEN 16 | VER 0 | Sub Type 0x0001 | Ver0 opt Reserv | Port | 0x0064 (Separat | Data Size | Message | Status | |||||||
| 0x2c | Option0 | Option1 | Option2 | Option0 | DATA | |||||||||||
SUB Type = 0x0002 Stream Port=0 (Reserve
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 0x80 | D2 0x00 | |||||||||||
| 0x1c | LEN 16 | VER 0 | Sub Type 0x0002 | Ver0 opt facility | level | Deubg Message | ||||||||||
Version:1 (EX=1 and VER=1 ) (Reserve
In the event of data loss outside of Ethernet
| 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 | |||||||||||
| 0x1c | LEN 0x00 | VER 1 | Sub Type | LENGTH | CRC | |||||||||||
If you wish to use DDS for purposes other than Diretta, please create a ticket and contact the administrator.