Discussion:
[LAD] Anyone working on software implementation of Ravenna for Linux?
Bearcat Şándor
2017-07-15 12:48:39 UTC
Permalink
Has anyone encountered any work on this?

How powerful of a computer would be required for a software based
solution to be able to keep up with a (expensive for now) ravenna
card, if one wanted full channel count at full data rate?

I understand that it travels over an RJ45 port with standard wiring
(cat 6). I assume one would want an additional dedicated ethernet port
for this.

I'm considering learning C just to take this on.

Thanks
Len Ovens
2017-07-15 15:32:10 UTC
Permalink
Post by Bearcat Şándor
Has anyone encountered any work on this?
How powerful of a computer would be required for a software based
solution to be able to keep up with a (expensive for now) ravenna
card, if one wanted full channel count at full data rate?
I understand that it travels over an RJ45 port with standard wiring
(cat 6). I assume one would want an additional dedicated ethernet port
for this.
I'm considering learning C just to take this on.
there is a driver, but so far as I know not open source. While it is
probably possible to make an AES 67 endpoint that will work with one aes
67 box. I do not think a full endpoint that becomes part of the aes b67
network is possible without a hw network clock as the intel i210 ethernet
cards have. Concidering the cost of Ravena interfaces.... AVB may be a
better bet anyway. There are open drivers for avb... if unfinished. there
seem to be some afordable avb audio interfaces around too.

Still, if you have access to a revena interface, go for it.

BTW, the intel i210 cards seem to be cheaper from hp than from intel, or
they were when I bought mine. Same card...

--
Len Ovens
www.ovenwerks.net
Bearcat Şándor
2017-07-15 21:37:10 UTC
Permalink
Ahh, i was misunderstanding. I was under the impression that i could just
put an extra 2 ethernet ports into my computer, install the kernel drivers
and libraries (when they're available) and have an operational Ravenna
input/output. However, if it needs a wordclock then it obviously needs a
card. I had thought that the 'wordclock' was part of the data packet.
Post by Bearcat Şándor
Has anyone encountered any work on this?
Post by Bearcat Şándor
How powerful of a computer would be required for a software based
solution to be able to keep up with a (expensive for now) ravenna
card, if one wanted full channel count at full data rate?
I understand that it travels over an RJ45 port with standard wiring
(cat 6). I assume one would want an additional dedicated ethernet port
for this.
I'm considering learning C just to take this on.
there is a driver, but so far as I know not open source. While it is
probably possible to make an AES 67 endpoint that will work with one aes 67
box. I do not think a full endpoint that becomes part of the aes b67
network is possible without a hw network clock as the intel i210 ethernet
cards have. Concidering the cost of Ravena interfaces.... AVB may be a
better bet anyway. There are open drivers for avb... if unfinished. there
seem to be some afordable avb audio interfaces around too.
Still, if you have access to a revena interface, go for it.
BTW, the intel i210 cards seem to be cheaper from hp than from intel, or
they were when I bought mine. Same card...
--
Len Ovens
www.ovenwerks.net
_______________________________________________
Linux-audio-dev mailing list
http://lists.linuxaudio.org/listinfo/linux-audio-dev
--
Bearcat M. Şándor
Feline Soul Systems LLC
Voice: 872.CAT.SOUL (872.228.7685)
Fax: 406.235.7070
Len Ovens
2017-07-16 00:13:46 UTC
Permalink
Ahh, i was misunderstanding. I was under the impression that i could just put an
extra 2 ethernet ports into my computer, install the kernel drivers and libraries
(when they're available)  and have an operational Ravenna input/output.  However,
if it needs a wordclock then it obviously needs a card. I had thought that the
'wordclock' was part of the data packet.
It is not word clock. but wall clock with high accuracy so word clock can
be derived. It is possible to do an end point without by treating packets
in the same way as as buffer in an audio card where alsa does not have
to be aware of the exact clock rise or fall to deal with it. However, If
you wish to send audio from an internal audio card to any aes67 endpoint.
Your computer must be able to be provide an ntp server with good enough
accuracy to provide wordclock to both your internal audio ai and to act as
a master clock on the network... or be able to sync your internal audio
card to an external ntp server. This accuracy pretty much requires a HW
ntp server. As I said the intel i210 ethernet cards at $60-ish seems to be
about the cheapest route.

Depending on how synced you want things... SRC can do a very good job and
the broadcast industry uses it a lot. The zita-njbridge does a great job
of connecting two computers together and I suspect using the zita src
library as part of an aes67 driver would make <whatever> ethernet card
workable so long as the computer was never expected to be a master clock.
So an aes67 network with only two linux computers may not be usable or at
least your network would not be wholely aes67 compliant. An endpoint with
no ntp able to follow a masterclock closely doesn't seem fully compliant
to me from what I have read. So the windows drivers downloadable from
various places would have the same problem of not being fully compliant
too. Some of the MacOS hw does have an ethernet chip with builtin ntp
server.

So a driver that does what the windows driver does should be possible.

--
Len Ovens
www.ovenwerks.net
Hanspeter Portner
2017-07-16 08:08:11 UTC
Permalink
Ahh, i was misunderstanding. I was under the impression that i could just put an
extra 2 ethernet ports into my computer, install the kernel drivers and libraries
(when they're available) and have an operational Ravenna input/output. However,
if it needs a wordclock then it obviously needs a card. I had thought that the
'wordclock' was part of the data packet.
It is not word clock. but wall clock with high accuracy so word clock can be
derived. It is possible to do an end point without by treating packets in the
same way as as buffer in an audio card where alsa does not have to be aware of
the exact clock rise or fall to deal with it. However, If you wish to send audio
from an internal audio card to any aes67 endpoint. Your computer must be able to
be provide an ntp server with good enough accuracy to provide wordclock to both
your internal audio ai and to act as a master clock on the network... or be able
to sync your internal audio card to an external ntp server. This accuracy pretty
much requires a HW ntp server. As I said the intel i210 ethernet cards at
$60-ish seems to be about the cheapest route.
Depending on how synced you want things... SRC can do a very good job and the
broadcast industry uses it a lot. The zita-njbridge does a great job of
connecting two computers together and I suspect using the zita src library as
part of an aes67 driver would make <whatever> ethernet card workable so long as
the computer was never expected to be a master clock. So an aes67 network with
only two linux computers may not be usable or at least your network would not be
wholely aes67 compliant. An endpoint with no ntp able to follow a masterclock
closely doesn't seem fully compliant to me from what I have read. So the windows
drivers downloadable from various places would have the same problem of not
being fully compliant too. Some of the MacOS hw does have an ethernet chip with
builtin ntp server.
So a driver that does what the windows driver does should be possible.
It think it should be PTP [1] instead of NTP above, the latter is not accurate
enough.

PTP can also be run in software timestamping mode, hardware timestamping will be
more accurate, though [2].

[1] https://en.wikipedia.org/wiki/Precision_Time_Protocol
[2] http://linuxptp.sourceforge.net/
Len Ovens
2017-07-16 15:35:37 UTC
Permalink
Post by Hanspeter Portner
to sync your internal audio card to an external ntp server. This accuracy pretty
much requires a HW ntp server. As I said the intel i210 ethernet cards at
$60-ish seems to be about the cheapest route.
It think it should be PTP [1] instead of NTP above, the latter is not accurate
enough.
Thats what I get for answering off the top of my head from a camp site :P
Post by Hanspeter Portner
PTP can also be run in software timestamping mode, hardware timestamping will be
more accurate, though [2].
I am not aware of anyone managing to get sw mode to be accurate enough to
derive wordclock from.
Post by Hanspeter Portner
[1] https://en.wikipedia.org/wiki/Precision_Time_Protocol
[2] http://linuxptp.sourceforge.net/
--
Len Ovens
www.ovenwerks.net
Bearcat Şándor
2017-07-20 19:09:13 UTC
Permalink
Huh. What i'm looking at purchasing are a bunch of these
https://www.genelec.com/studio-monitors/sam-studio-monitors/8430a-ip-sam-studio-monitor
for an ambisonic setup. They have a Ravenna input and they can be run in
mono or stereo. Looking at the manual (
https://www.genelec.com/sites/default/files/media/Studio%20monitors/SAM%20Studio%20Monitors/8430A/8430a_opman_ip.pdf
) it states "There are some requirements for the AE67 network. The network
must run a clock source supporting the Precision Time Protocol according to
the format defined in IEEE 1588-2008. Several audio sources and media IP
switch devices can act as PTP clock sources for the network. It is also
useful to make sure that the IP switches delivering the audio streams have
been configured to prioritize the PTP clock messages and the RTP audio
streams over other traffic."

From what you're saying i'd need to output the software stream from my
computer using a secondary ethernet port into a ptp router then into my
speakers.

Why would i need to buy an expensive router? Why not just build my own
router using http://linuxptp.sourceforge.net/ or
https://github.com/ptpd/ptpd
How does Jack2 (dbus) fit into all of this?

It seems like the ptp software above can connect multiple computers, so i
could just start out with a mini-pc with a 4 jack ethernet card and add
more mini-computers as i need to yes?

Or am i completely confused?

Thanks
Post by Len Ovens
Post by Hanspeter Portner
to sync your internal audio card to an external ntp server. This accuracy pretty
much requires a HW ntp server. As I said the intel i210 ethernet cards at
$60-ish seems to be about the cheapest route.
It think it should be PTP [1] instead of NTP above, the latter is not accurate
enough.
Thats what I get for answering off the top of my head from a camp site :P
PTP can also be run in software timestamping mode, hardware timestamping
Post by Hanspeter Portner
will be
more accurate, though [2].
I am not aware of anyone managing to get sw mode to be accurate enough to
derive wordclock from.
[1] https://en.wikipedia.org/wiki/Precision_Time_Protocol
Post by Hanspeter Portner
[2] http://linuxptp.sourceforge.net/
--
Len Ovens
www.ovenwerks.net
_______________________________________________
Linux-audio-dev mailing list
http://lists.linuxaudio.org/listinfo/linux-audio-dev
--
Bearcat M. Şándor
Feline Soul Systems LLC
Voice: 872.CAT.SOUL (872.228.7685)
Fax: 406.235.7070
Len Ovens
2017-07-20 22:57:18 UTC
Permalink
Huh. What i'm looking at purchasing are a bunch ofthese https://www.genelec.com/studio-monitors/sam-studio-monitors/8430a-ip-sam-s
tudio-monitor  for an ambisonic setup.  They have a Ravenna input and they can be
run in mono or stereo.  Looking at the manual 
... url omitted
it states "There are some requirements
for the AE67 network. The network must run a clock source supporting the
Precision Time Protocol according to the format defined in IEEE 1588-2008.
Several audio sources and media IP switch devices can act as PTP clock sources
for the network. It is also useful to make sure that the IP switches delivering
the audio streams have been configured to prioritize the PTP clock messages and
the RTP audio streams over other traffic."
The big thing here is prioritize. The switch has to have more than one
transmit/receive queue to be able to do this.
From what you're saying i'd need to output the software stream from my computer
using a secondary ethernet port into a ptp router then into my speakers.  
You may be able to do that with your main NIC, but the advantage of using
a second $50 i210 is that it has a hw PTP clock built in.
Why would i need to buy an expensive router? Why not just build my own router
using http://linuxptp.sourceforge.net/ or https://github.com/ptpd/ptpd  
So far as I know, it is very difficult to get a sw ptp clock to have the
stability needed. However, if you used a computer for nothing else but ptp
and net forwarding you might do it... I just think a $50 NIC is cheaper.
How does Jack2 (dbus) fit into all of this?
That depends on the AES67 driver. If it is built to talk to jack
dirrectly, then jack is quite important. If the driver is ALSA... not so
much.
It seems like the ptp software above can connect multiple computers, so i could
just start out with a mini-pc with a 4 jack ethernet card and add more
mini-computers as i need to yes?
Maybe, the cpu inside really does matter for a sw ptp clock. Latency has
to be much better than for audio alone. Alsa deals with 32 samples at a
time or much more (128 is much more common). but to have stable audio, ptp
has to be more accurate than 1 sample. This would be time for a real time
kernel for sure. Priorities would have to be right on... and maybe
multi-cores would not be the best thing. (no hyperthreading for sure).

One place to look at real time latency is:
https://www.osadl.org/Hardware-overview.qa-farm-hardware.0.html
Where they have many combinations of HW running in real time testing
latency. often slower cpus have better latency tests than faster or higher
core count machines.

If your mini computer with 4 or more NICS will cost more than about $400,
maybe this would be better:
https://www.sweetwater.com/store/detail/AVBSwitch
I have been surprised at total cost of putting a small system together
even assuming some parts I already have laying around (case, PS, KB,
mouse, display) The best thing is do your homework, find the list of
ethernet protocols aes67 expects and see if there are more reasonably
priced switches that will give you enough assuming your NIC can provide a
network ptp clock.
Or am i completely confused?
The big thing with aes67 is A) paying for the protocol spec. (thankyou
aes) and B) doing the dev work... that is putting it all together. AES67
does not have any discovery built in, but because your speakers use
bonjour, I would work with that (linux has Avahi that covers most of
this). I am not sure how AES "you must pay for the protocol" would go with
a GPL project because open source effectively gives the protocol away for
free. AVB on the otherhand, hosts a github project that is open source.

If it was me (and I am not a great example :) I would go aes67 direct to
jack backend. That is mostly because I am familiar with the jack api and
when I looked at trying to do the same thing in alsa, it seemed confusing
and more complex but that is just my personal POV. I am sure once I have
made my first alsa connection my POV will change. Because the ethernet
code is system and not user (in particular setting up queues and
priorities), alsa may make more sense.

Having said all that, balanced xlr audio cables are a lot cheaper than
AoIP-anything. (even ones you have to make yourself) Your speakers support
balanced audio in.

--
Len Ovens
www.ovenwerks.net

Loading...