XMOS AVB LC Demo Topic is solved

If you have a simple question and just want an answer.
vinaykmurthy
Junior Member
Posts: 7
Joined: Mon Nov 10, 2014 6:40 am

XMOS AVB LC Demo

Post by vinaykmurthy »

Hello All,

I have received 2 XMOS AVB boards and I am trying to stream audio from my laptop to the speakers using these boards.

Here is my set-up configuration:

a) The output of my laptop is connected to one XMOS board as "talker".

b) The boards are connected to each other via RJ-45 cables.

c) The speakers are connected to other XMOS board as "listener".

Can you please let me know if this is a valid configuration for me to test the boards ? Do I need any additional software to be running on my laptop to start this streaming. My xmos boards are using 6.0.4 version of the firmware. I went through the Quick Start Guide but there is no clear instructions on how to wire it up to make it working?

Appreciate any help in this matter. 

-Vinay



View Solution
User avatar
sethu_jangala
XCore Expert
Posts: 589
Joined: Wed Feb 29, 2012 10:03 am

Post by sethu_jangala »

Yes, you should be able to listen to the audio from the lister by using the mentioned setup. Have a look at the quick start guide for setting up the demo:

https://www.xmos.com/download/public/AV ... 6.0.4).pdf

vinaykmurthy
Junior Member
Posts: 7
Joined: Mon Nov 10, 2014 6:40 am

Post by vinaykmurthy »

Thanks a lot for your reply.

I did followed the instructions present in section 5 "Setting up the Hardware".

The document mentions "Connect the two development boards into an AVB capable Ethernet switch via the provided Ethernet cables" and "A third party 1722.1 Controller application can then be used to connect and disconnect streams between the endpoints."

Can you please let me know if an AVB capable switch is necessary for initial settings and do I need to get the avdecc library working on my laptop ?

I was under the impression that the 2 boards are sufficient to get a basic audio streaming working. 

Can you please let me know if my understanding is wrong ?

-Vinay

User avatar
infiniteimprobability
XCore Legend
Posts: 1126
Joined: Thu May 27, 2010 10:08 am

Post by infiniteimprobability »

In version 6.x of the software, the out of the box configuration has been changed, so that it expects an external 1722.1 controller entity to configure the endpoints and setup a connection. This allows them to be placed straight onto an AVB network consisting of AVB capable switch and 1722.1 controller. It also allows them to be connected straight into a mac running OSX for example, which will act as a 1722.1 controller.

 

If you connect them back to back, they'll start running the firmware, synch using PTP (one will be master, one slave), decalre attributes etc.. but not connect, because nothing has told them to connect. To make your configuration work, you need to:

 

Enable the 1722.1 controller in avb_conf.h:

#define AVB_1722_1_CONTROLLER_ENABLED 1

This will allow the one with the controller to become a talker and connectt to the listener (the other end/sink), as is described in simple_demo_controller.xc (it looks for other XMOS vendor_id endpoints). 
 
If you want them to stream back to back, you could change the controller to setup streaming in both directions, or just enable the 1722.1 controller on both ends and use the demo controller as is. They will then find each other and use the other end as a listener/sink, which means you can pipe audio easily in both directions.
 
To enable 1722.1 controller on both ends, change to the following in avb_1722_1_default_conf.h: 
 
#define AVB_1722_1_MAX_ENTITIES 2
 
.. and it should all work in the configuration you describe.
 
Please note that this configuration is a simple one and a demo only. In a practical system, there would normally be a single 1722.1 controller doing all of the AVDECC (AV discovery, enumeration & control) and a simple "find xmos endpoints and connect" rule would not be helpful. This is especially the case since the behaviour is not defined for >2 XMOS endpoints.
 
A final note - it is pretty much essential to run using xrun --xscope <xe-file> (or enable xscope printing on the run config in eclipse) so you can get the debug output from each endpoint - it will tell you exactly what is happening/not happening.