:orphan:
##################################### lib_xua: USB Audio Components Library #####################################
:vendor: XMOS :version: 5.0.0 :scope: General Use :description: USB Audio components library :category: General Purpose :keywords: USB Audio, I2S, MIDI, HID, DFU :devices: xcore.ai, xcore-200
Overview
lib_xua
contains shared components for use in the XMOS USB Audio (XUA) Reference Designs.
These components enable the development of USB Audio devices on the XMOS xcore
architecture.
Features
Key features of the various components in this repository are as follows
USB Audio Class 1.0/2.0 compliant
Fully Asynchronous operation (synchronous mode as an option)
Support for the following sample frequencies: 8, 11.025, 12, 16, 32, 44.1, 48, 88.2, 96, 176.4, 192, 352.8, 384kHz
Volume/mute controls for input/output (for both master and individual channels)
Support for dynamically selectable output audio formats (e.g. resolution)
Field firmware upgrade compliant to the USB Device Firmware Upgrade (DFU) Class Specification
S/PDIF output
S/PDIF input
ADAT output
ADAT input
Synchronisation to external digital streams i.e. S/PDIF or ADAT (when in asynchronous mode)
I2S (slave/master modes with configurable word-length)
TDM (slave/master modes with configurable word-length)
MIDI input/output (Compliant to USB Class Specification for MIDI devices)
DSD output ("native" and DoP mode) at DSD64 and DSD128 rates
Mixer with flexible routing
Simple playback controls via USB Human Interface Device (HID) Class
Support for adding custom HID interfaces
Note, not all features may be supported at all sample frequencies, simultaneously or on all devices. Some features may also require specific host driver support.
Known Issues
When in DSD mode with S/PDIF output enabled, DSD samples are transmitted over S/PDIF if the DSD and S/PDIF channels are shared, this may or may not be desired (#14762)
I2S input is completely disabled when DSD output is active - any input stream to the host will contain 0 samples (#14173)
Operating the design at a sample rate of less than or equal to the SOF rate (i.e. 8kHz at HS, 1kHz at FS) may expose a corner case relating to 0 length packet handling in both the driver and device and should be considered unsupported at this time (#14780)
Before DoP mode is detected a small number of DSD samples will be played out as PCM via I2S (lib_xua #162)
Volume control settings currently affect samples in both DSD and PCM modes. This results in invalid DSD output if volume control not set to 0 (#14887)
88.2kHz and 176.4kHz sample frequencies are not exposed in Windows control panels. These are known OS restrictions.
When DFU flash access fails the device NAKS the host indefinitely (sw_usb_audio #54)
In synchronous mode there is no nice transition of the reference signal when moving between internal and SOF clocks (lib_xua #275)
Binary images exceeding FLASH_MAX_UPGRADE_SIZE fail silently on DFU download (lib_xua #165)
Input does not come out of underflow for USB Audio Class 2 when sample rate is 16kHz and channel count is 2. (lib_xua #434). This will result in silence being streamed to the host. Please use USB Audio Class 1 for low channel count and sample rates.
Development repo
lib_xua <https://www.github.com/xmos/lib_xua>
_Host System Requirements
USB Audio devices built using lib_xua
have the following host system requirements.
Mac OSX version 10.6 or later
Windows 10 or 11, with Thesycon Audio Class 2.0 driver for Windows (Tested against version 5.70.0). Please contact XMOS for details.
Windows 10 or 11 with built-in USB Audio Class 1.0 driver.
Windows 10 or 11 with built-in USB Audio Class 2.0 driver.
Older versions of Windows are not guaranteed to operate as expected. Devices are also expected to operate with various Linux distributions including mobile variants.
Required Tools
Required Libraries (dependencies)
lib_adat <https://www.github.com/xmos/lib_adat>
_lib_locks <https://www.github.com/xmos/lib_locks>
_lib_logging <https://www.github.com/xmos/lib_logging>
_lib_mic_array <https://www.github.com/xmos/lib_mic_array>
_lib_xassert <https://www.github.com/xmos/lib_xassert>
_lib_xcore_math <https://www.github.com/xmos/lib_xcore_math>
_lib_spdif <https://www.github.com/xmos/lib_spdif>
_lib_sw_pll <https://www.github.com/xmos/lib_sw_pll>
_lib_xud <https://www.github.com/xmos/lib_xud>
_Related Application Notes
The following application notes use this library:
Support
This package is supported by XMOS Ltd. Issues can be raised against the software at http://www.xmos.com/support