Skip to content

xhuw/vocalfusion-rpi-setup

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

xCORE VocalFusion Raspberry Pi Setup

This repository provides a simple-to-use automated script to configure the Raspberry Pi to use xCORE VocalFusion for audio.

This setup will perform the following operations:

  • enable the I2S, I2C and SPI interfaces
  • install the Raspberry Pi kernel headers
  • install the required packages
  • compile the I2S drivers
  • update the asoundrc file to support I2S devices
  • add a cron job to load the I2S drivers at boot up

For XVF3510-INT devices these actions will be done as well:

  • configure MCLK at 12288kHz from pin 7 (BCM 4)
  • configure I2S BCLK at 3072kHz from pin 12 (BCM 18)
  • update the alias for Audacity
  • update the asoundrc file to support I2S devices
  • add a cron job to reset the device at boot up
  • add a cron job to configure the DAC at boot up

For XVF361x-INT devices these actions will be done as well:

  • configure MCLK at 12288kHz from pin 7 (BCM 4)
  • configure I2S BCLK at 3072kHz from pin 12 (BCM 18)
  • update the alias for Audacity
  • update the asoundrc file to support I2S devices
  • add a cron job to reset the device at boot up
  • add a cron job to configure the DAC at boot up

For XVF3800(DEFAULT) devices these actions will be done as well:

  • configure I2S BCLK at 3072kHz from pin 12 (BCM 18)
  • update the alias for Audacity
  • update the asoundrc file to support I2S devices
  • add a cron job to reset the device at boot up
  • add a cron job to configure the IO expander at boot up

For XVF3800-extmclk devices these actions will be done as well:

  • configure MCLK at 12288kHz from pin 7 (BCM 4) and drive to XVF3800

For XVF3510-UA and XVF361x-UA devices these actions will be done as well:

  • update the asoundrc file to support USB devices
  • update udev rules so that root privileges are not needed to access USB control interface

Setup

  1. First, obtain the required version of the Raspberry Pi operating system, which is available here

    We cannot use the latest as updates to Linux kernel v5 have broken the I2S sub-system.

    Then, install the Raspberry Pi Imager on a host computer. Raspberry Pi Imager is available here

    Run the Raspberry Pi Imager, and select the 'CHOOSE OS' button. Scroll to the bottom of the displayed list, and select "Use custom". Then select the file downloaded above (2023-02-21-raspios-bullseye-armhf.img.xz) and select "Open". The archive file does not have to be unzipped, the imager software will do that.

    Select the CHOOSE SD CARD button to which to download the image, and then select the "WRITE" button.

    When prompted, remove the written SD card and insert it into the Raspberry Pi.

  2. Connect up the keyboard, mouse, speakers and display to the Raspberry Pi and power up the system. Refer to the Getting Started Guide for you platform.

    DO NOT follow the prompt to "Update Software" on the system. Set up the locale, username, password and a network connection, but DO NOT update the software on the Raspberry Pi. This will update the kernel, and then the audio sub-system will not work.

NOTE: Headless installation forces an upgrade of the software, so it cannot be used for this setup.

NOTE: Host applications and scripts used by the XMOS products support only 32-bit Raspbian systems.

  1. On the Raspberry Pi, clone the Github repository below:

    git clone https://github.com/xmos/vocalfusion-rpi-setup

  2. For VocalFusion devices, run the installation script as follows:

    ./setup.sh xvf3100

    For VocalFusion Stereo devices, run the installation script as follows:

    ./setup.sh xvf3500

    For XVF3510 devices, run the installation script as follows:

    ./setup.sh xvf3510

    For XVF3600 I2S master devices, run the installation script as follows:

    ./setup.sh xvf3600-master

    For XVF3600 I2S slave devices, run the installation script as follows:

    ./setup.sh xvf3600-slave

    For XVF3610-UA devices, run the installation script as follows:

    ./setup.sh xvf3610-ua

    For XVF3610-INT devices, run the installation script as follows:

    ./setup.sh xvf3610-int

    For XVF3615-UA devices, run the installation script as follows:

    ./setup.sh xvf3615-ua

    For XVF3615-INT devices, run the installation script as follows:

    ./setup.sh xvf3615-int

    For XVF3800-INTDEV devices, run the installation script as follows:

    ./setup.sh xvf3800-intdev

    For XVF3800-INTHOST devices, run the installation script as follows:

    ./setup.sh xvf3800-inthost

For XVF3800-INTDEV-EXTMCLK devices, run the installation script as follows:

./setup.sh xvf3800-intdev-extmclk

Wait for the script to complete the installation. This can take several minutes.

  1. Reboot the Raspberry Pi.

Important note on clocks

The I2S/PCM driver that is provided with raspbian does not support an MCLK output. However the driver does have full ability to set the BCLK and LRCLK correctly for a given sample rate. As the driver does not know about the MCLK it is likely to choose dividers for the clocks generators which are not phase locked to the MCLK. The script in this repo gets around this problem by configuring the i2s driver to a certain frequency and then overriding the clock registers to force a phase locked frequency.

This will work until a different sample rate is chosen by an application, then the I2S driver will write it's own value to the clocks and the MCLK will no longer be phase locked. To solve this problem the following steps must be taken before connecting an XVF device with a different sample rate:

  1. Take a short recording at the new sample rate: arecord -c2 -fS32_LE -r{sample_rate} -s1 -Dhw:sndrpisimplecar
  2. For 48kHz ./resources/clk_dac_setup/setup_blk, for 16kHz ./resources/clk_dac_setup/setup_blk 16000

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 40.9%
  • C 30.7%
  • Shell 25.5%
  • Makefile 2.9%