Added totorial to use the AES67 Daemon on a board to operate as AES67 USB Receiver and Transmitter.
Minor changes to daemon prerequisite.
This commit is contained in:
		
							parent
							
								
									b791c559a7
								
							
						
					
					
						commit
						16309d7943
					
				
							
								
								
									
										11
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										11
									
								
								README.md
									
									
									
									
									
								
							@ -85,12 +85,12 @@ This directory contains a the daemon configuration and status files used to run
 | 
				
			|||||||
<a name="prerequisite"></a>
 | 
					<a name="prerequisite"></a>
 | 
				
			||||||
The daemon and the demo have been tested with **Ubuntu 18.04** distro on **ARMv7** and with **Ubuntu 18.04, 19.10 and 20.04** distros on **x86** using:
 | 
					The daemon and the demo have been tested with **Ubuntu 18.04** distro on **ARMv7** and with **Ubuntu 18.04, 19.10 and 20.04** distros on **x86** using:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
* Linux kernel version >= 4.14.x
 | 
					* Linux kernel version >= 4.10.x
 | 
				
			||||||
* GCC  version >= 7.4 / clang >= 6.0.0 (C++17 support required)
 | 
					* GCC  version >= 7.x / clang >= 6.x (C++17 support required)
 | 
				
			||||||
* cmake version >= 3.10.2
 | 
					* cmake version >= 3.7
 | 
				
			||||||
* node version >= 8.10.0
 | 
					* node version >= 8.10.0
 | 
				
			||||||
* npm version >= 3.5.2
 | 
					* npm version >= 3.5.2
 | 
				
			||||||
* boost libraries version >= 1.65.1
 | 
					* boost libraries version >= 1.65
 | 
				
			||||||
* Avahi service discovery (if enabled) >= 0.7
 | 
					* Avahi service discovery (if enabled) >= 0.7
 | 
				
			||||||
 | 
					
 | 
				
			||||||
The BeagleBone® Black board with ARM Cortex-A8 32-Bit processor was used for testing on ARMv7.
 | 
					The BeagleBone® Black board with ARM Cortex-A8 32-Bit processor was used for testing on ARMv7.
 | 
				
			||||||
@ -145,6 +145,9 @@ The demo performs the following operations:
 | 
				
			|||||||
## Devices and interoperability tests ##
 | 
					## Devices and interoperability tests ##
 | 
				
			||||||
See [Devices and interoperability tests with the AES67 daemon](DEVICES.md)
 | 
					See [Devices and interoperability tests with the AES67 daemon](DEVICES.md)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## AES67 USB Receiver and Transmitter ##
 | 
				
			||||||
 | 
					See [Use your board as AES67 USB Receiver and Transmitter](USB_GADGET.md)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## Notes ##
 | 
					## Notes ##
 | 
				
			||||||
<a name="notes"></a>
 | 
					<a name="notes"></a>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										69
									
								
								USB_GADGET.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										69
									
								
								USB_GADGET.md
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,69 @@
 | 
				
			|||||||
 | 
					# AES67 USB Receiver and Transmitter #
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					This document describes how to use the AES67 Daemon on a board to operate as AES67 USB Receiver and Transmitter.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The board doesn't need to have an audio codec but a USB client or OTG connector that is able to operate in device mode.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Eventually you will connect your card to your PC (*Windows* / *Linux* / *MAC*) via USB and use the PC as a player or recorder and the card to relay audio from USB to Ethernet and vice versa.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Kernel configuration ##
 | 
				
			||||||
 | 
					<a name="kernel_config"></a>
 | 
				
			||||||
 | 
					You need to enable support for USB gadget and compile and enable the USB Audio Gadget 1.0 module of the Linux Kernel. 
 | 
				
			||||||
 | 
					For this make sure you have the following kernel config options enabled:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      CONFIG_USB_F_UAC1=m
 | 
				
			||||||
 | 
					      CONFIG_USB_CONFIGFS_F_UAC1=y
 | 
				
			||||||
 | 
					      CONFIG_GADGET_UAC1=y
 | 
				
			||||||
 | 
					In the Kernel menu config the location of these option is:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      -> Device Drivers 
 | 
				
			||||||
 | 
					        -> USB support (USB\_SUPPORT [=y])
 | 
				
			||||||
 | 
					          -> USB Gadget Support (USB\_GADGET [=y])
 | 
				
			||||||
 | 
					Transfer the new kernel and modules to the board. 
 | 
				
			||||||
 | 
					Also make sure your board is properly configured to use the USB connector in device mode.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					**_NOTE:_** The reason for configuring USB Audio Gadget 1.0 instead of 2.0 is that 2.0 does not currently work properly with *Windows*.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Install the USB Audio Gadget 1.0 ##
 | 
				
			||||||
 | 
					<a name="g_audio_install"></a>
 | 
				
			||||||
 | 
					Install the Audio Gadget module with:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      sudo modprobe g\_audio
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					If the negotiation with the connected PC is succefull on the board a new virtual audio card shows up.
 | 
				
			||||||
 | 
					To verify run:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      cat /proc/asound/card
 | 
				
			||||||
 | 
					The expected output is:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					       0 [UAC1Gadget     ]: UAC1_Gadget - UAC1_Gadget
 | 
				
			||||||
 | 
					                            UAC1_Gadget 0
 | 
				
			||||||
 | 
					By default this new audio codec works with a sample rate of 48Khz, 2 channels and sample format *S16_LE*.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					On the PC new audio input and output devices show up. 
 | 
				
			||||||
 | 
					The name assigned to these depend on the OS.
 | 
				
			||||||
 | 
					On *Windows* a new speaker and microphone named *AC interface* get configured.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## AES67 USB Transmitter ##
 | 
				
			||||||
 | 
					<a name="usb_transmitter"></a>
 | 
				
			||||||
 | 
					Before starting make sure that the [AES67 daemon basic setup](DEVICES.ms#daemon_setup) is done.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					On the board run the following command to relay the audio from the USB to the AES67 Source:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      sudo nice -n -10 ./alsaloop -c 2 -r 48000 -f S16_LE -C plughw:UAC1Gadget -P plughw:RAVENNA
 | 
				
			||||||
 | 
					On the PC start the audio playback on the new device.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					**_NOTE:_** The *ALSA RAVENNA driver* will perform the format conversion from *S16\_LE* to the *Source* format.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## AES67 USB Receiver ##
 | 
				
			||||||
 | 
					<a name="usb_receiver"></a>
 | 
				
			||||||
 | 
					Before starting make sure that the [AES67 daemon basic setup](DEVICES.ms#daemon_setup) is done. 
 | 
				
			||||||
 | 
					You also need to configure a new stereo *Sink* on the daemon.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					On the board run the following command to relay the audio from AES67 Sink to the USB:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      sudo nice -n -10 ./alsaloop -c 2 -r 48000 -f S16\_LE -P plughw:RAVENNA -C plughw:UAC1Gadget
 | 
				
			||||||
 | 
					On the PC start the audio recording on the new device.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					**_NOTE:_** The *ALSA RAVENNA driver* will perform the format conversion from *S16\_LE* to the *Sink* format.
 | 
				
			||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user