Skip to content

Third alpha version

Pre-release
Pre-release

Choose a tag to compare

@xn--nding-jua xn--nding-jua released this 27 Dec 11:18
· 325 commits to main since this release
d728771

OpenX32 - Third alpha version

We are proud to release the third alpha version of the OpenSource Operating System for the Behringer X32. It is the first version with stable audio-processing within the DSPs and full support for the newer Lattice ECP5-versions of the X32-boards.

As the system is full of microcontrollers, an FPGA and two DSPs, several individual files are in the scope of this first release:

Files in this release

  • dcp_corefs_openx32.run
    • This is the compiled Linux-Kernel in version 6.18 LTS ready to be loaded via an USB-thumbdrive on booting up the X32 console (like any regular firmware-update for the X32)
    • if Linux is not loaded, press and hold the "View"-Button next to the USB-connector when starting the X32
  • x32ctrl
    • the main Linux application that controls the X32-hardware like scribble-strips, faders, buttons, encoders, etc.
    • offers a nice GUI based on LVGL v9.3 on the built-in display
    • controls the FPGA and DSP
    • binary is compiled as static, so no dependencies are there
  • xilinx.bit and lattice.bit
    • bitstream to configure the Xilinx Spartan 3A FPGA or the Lattice ECP5 FPGA
    • support for all 32x XLR inputs, 16x XLR outputs, 6x AUX in/out, Talkback-mics and Expansion Card in/outs
    • support 1:1 routing between all inputs and outputs
    • support for UltraNet output
  • dsp1.ldr
    • configuration-file for the main Analog Devices ADSP-21371 SHARC DSP (dsp1)
    • support for 40-channel audio-mixing
    • noisegate and compression implemented for 32 channels (EQ is not working at the moment)
    • audio-level-metering
  • dsp2.ldr
    • configuration-file for the secondary Analog Devices ADSP-21371 SHARC DSP (dsp2)
    • receiver for 24 audio-channels from main-dsp
    • creates test-sine-waves with different frequencies on all 24 output-channels back to main-DSP (keep volume low when switching to these channels)

How to use this stuff

  1. Extract ZIP-file and copy all individual files together with "dcp_corefs_openx32.run" to an USB thumbdrive
  2. Plugin USB thumbdrive to X32 console and power it on (if the DCP-Bootloader is not showing up, press and hold VIEW-button next to USB-port)
  3. OpenX32 will boot after file has been checked
  4. After Linux has booted, remove the USB drive, connect an USB-hub with keyboard, reconnect the USB-thumbdrive and mount the USB thumbdrive:

mount /dev/sda1 /mnt/usb
cd /mnt/usb

  1. Run the following commands to start the system:

./startXilinx.sh (if you are using an older device with Xilinx FPGA - original Firmware starts with "FX12" on booting up)
./startLattice.sh (if you are using a newer device with Lattice FPGA - original Firmware starts with "FL12" on booting up)

  1. Connect a microphone to XLR input 1-32 or any AUX-input and some loudspeakers to control-room outputs
  2. Use regular channel-faders and main-fader to control volume

Known issues

  1. Linux is booting into a shell, but you need a keyboard with USB-hub and the steps mentioned above to get the main-software up and running
  2. EQ is not working at the moment
  3. AES50 is not implemented yet, but all other hardware-features are already available
  4. No enhanced audio-mixing options are available - just Gate/Compressor per Channel and a general main-bus-mixing

Outlook

Besides these issues try it out and enjoy this cool device from a totally different point of view. These files will not change anything on the SD-card or the general hardware so a simple power-cycle is enough to bring back the original operating system. Perhaps you would like to participate in this project - now that the general system is up and running, lots of great things could be done with this device.

This open-source version of the X32 only includes about 20% of the features of the original system. Think of it primarily as a way to better understand complex digital audio systems. Feel free to create an issue here on GitHub if you have ideas or feedback.