Now, the Wing Dante card (and pretty much all Dante enabled devices with a Dante 4+ firmware version) is capable of speaking AES67. Getting useful tools for AES67 is quite tricky, there's not much out there, but in essence it's a open standard - effectively PTP+RTP with a bunch of signaling around it.
Gstreamer[2] supports all the required components to "speak" AES67, you just have to fumble it together quite manually. Luckily, some people from the CCC VOC were annoyed enough with the manual fumbling that they hacked a small interface on top of it: https://github.com/voc/aes67-recorder
Now, it's really, really rough around the edges. There's not a lot of documentation, a lot of it was hacked together while on the 35C3 [3]. But it works well enough.
Rough steps to get this stuff working:
You need a Windows/MacOS machine for the initial setup of your Dante Device. Sadly there's no real way around this. A VM should do the trick I think, as you only need to use the Dante Controller. After you've made the settings, the Dante device should keep them, at least my Wing did.
Open the Dante Controller, open the device settings for your Dante device, enable the AES67 Mode, and create Multicast flows. The Brooklyn II Module in the Wing Dante supports exactly 8 Multicast flows with 8 channels each. 8x8=64 - exactly what we need.
My Tip: use manual IP & Port adressing for the Multicast flows. If you can't do that, or you have another device you want to record, take a look at aes67.app [4], it's able to listen in on the AES67 signalling and detect most of the multicast flows on your network.
Now, for the AES67-recorder, you need to generate a config file: Essentially you need to define your multicast flows as input sources. Here's where you put the same IP addresses & ports that you used while configuring the multicast flows on the Dante device. The rest should be sort of explanatory from the comments in the example config file.
My config looked like this:
Code: Select all
source:
format: S24BE
rate: 48000
sources:
- type: udp
channels: 8
address: 239.1.1.1
iface: enp5s0
port: 5001
- type: udp
channels: 8
address: 239.1.1.1
iface: enp5s0
port: 5002
- type: udp
channels: 8
address: 239.1.1.1
iface: enp5s0
port: 5003
- type: udp
channels: 8
address: 239.1.1.1
iface: enp5s0
port: 5004
- type: udp
channels: 8
address: 239.1.1.1
iface: enp5s0
port: 5005
- type: udp
channels: 8
address: 239.1.1.1
iface: enp5s0
port: 5006
- type: udp
channels: 8
address: 239.1.1.1
iface: enp5s0
port: 5007
- type: udp
channels: 8
address: 239.1.1.1
iface: enp5s0
port: 5008
clocking:
source: system
# this can work, on my system it threw a bunch of errors (I don't think i had a ptp-compatible nic)
#source: ptp
#ptp_domain: 0
#ptp_interfaces: ['enp5s0']
# in Seconds
jitterbuffer: 20
# name of each channel. unnamed channels will issue a warning and will be named "unnamed/XX"
# channel-names can contains slashes, denoting folders. a wall-clock-timestamp and the filetype suffix will be added to the name
# channel-name "s1/mics/head1" might result in a filename like "s1/mics/head1/2018-01-01_10-00-00.wav
# to *not* record a channel, set its name to the special value "!discard".
channelmap:
1: "1"
capture:
# can also be specified via command-line arg
folder: /tmp/aes67
# length of a segment in seconds
segment-length: 5
# desired capture-format, check supported with `gst-inspect-1.0 wavenc`
format: S24LE
status_server:
port: 9999
bind: '::'
level_interval_ms: 250
system_health_report_interval_ms: 1000
watchdog:
enabled: true
check_interval_ms: 1000
warn_after_missing_signal_for_ms: 2000
restart_after_missing_signal_for_ms: 5000
mqtt:
enabled: false
host: mng.c3voc.de
port: 1883
username: 'aes67-backup'
password: 'xxx'
Now, start the server (main.py) and webgui, and you should be able to see the signal metering live on http://localhost:8080
I have to make a few more experiments to possibly get PTP working, but if that all is fine I will probably throw all this on a tiny mini-itx machine [5] and be able to quickly hook it up along side my wing and just let it record everything that's going on over AES67. Very interested in trying to combine this setup with Riedel Bolero intercom, which we often use.
Anyways, just a dump of my experiences in that regard, maybe it's useful for some! Would love to hear your experiences if you try this as well.
---
[1]: Learned that the hard way: Did a fresh install on my show laptop before a festival, installed DVS with the intention of multitracking straight from the RIO, and DVS refused to take my paid license. Why? Because you get 5 activations. No, not parallel - total. After putting in your license 5 times over the total lifespan, your license is done for. What the... Who came up with this stuff?!
[2]: https://gstreamer.freedesktop.org/
[3]: 35th Chaos Communication Congress, see https://events.ccc.de/
[4]: https://aes67.app/ windows/macos/linux
[5]: DIY soundgrid server that never got to see live action due to the pandemic: i7 4790 with stock cooler, 8gigs ram, GA-H81N, Chieftec IX-03B-OP with 90 watt PicoPSU and a 120watt china 12VDC brick bolted on the top - it all _just so_ fits together.