Many of us are fascinated by the idea that we can process audio signals precisely and flexibly in the digital domain. Currently, there are numerous options available in the market, including popular offerings like MiniDSP and FusionAMP, each with their unique aspects. People have also brewed their own fascinating solutions at home, using Raspberry Pis and multiple channel DACs.
Today, I would like to introduce you to something new here, something we've been working on for two years. We call it SmartCross. We hope that our work can inject some fresh air into the market.
Kindly regard this as a work-in-progress ("engineering sample"), and the final product is set to look more visually appealing.
SmartCross is capable of receiving several audio sources and switching between them. It will process the audio with CamillaDSP (crossover, EQ, filters, delay, etc.), and output the signal to four amplifier boards, each with two channels. The amplifier boards can also be replaced with pure DAC boards to provide high fidelity audio signal output.
This started as a DIY project (inspired by the ideas of "ASR Open Source Streamer Project"), but as we gradually finished each part, it becomes less and less likely of being DIYed. We believe that the best way to spread the pleasure of the project is to deliver a piece of finished and tested hardware to your hand at a reasonable price. However, we continue to value the spirit of hacking, thus we will make all software in open source license. Schematics in pdf format will also be released to help hacking. If you have the same DIY spirit as ours, you can also make an output module yourself, and we are more than happy to provide support.
DACs are driven by ultra-low-jitter oscillators to enable excellent audio reproduction. Up to 450W SMPS is integrated to allow powerful audio output.
CamillaDSP enables customizable DSP processing pipeline, with algorithms such as IIR, FIR, limiter, and compressor. With its open-source nature, you may also develop your own algorithms.
Class-D audio amplifiers with dedicated DACs are embedded within the machine, so you can directly plug your speakers into it, eliminating the need for external amplifiers. speanON plugs ensure tight and stable connection in just a click. If you would like to use your own amplifiers: no problem at all, DAC-only HiFi output modules are also available.
SmartCross aims to be hackable. We will release all of our own source code in GPL once they are stabilized, and you will be able to build the firmware of SmartCross completely from scratch (of course, you are encouraged to contribute back). Schematics in pdf format will also be released to help hacking.
Having said the above, we are only a small and young team, and we have limitations in our knowledge and experience. We know that imperfections are inevitable, and there're certainly bugs and shortcomings in our work. Therefore, we would kindly like to request that you let us know your valuable thoughts, so that we can make our machine one more step toward perfection.
We know storage space is important for hacking. A total of 2GB LPDDR3 RAM chips are installed on board, which leaves plenty room for running services you like or future upgrades. The operating system is stored on a 64GB SanDisk High Endurance SD Card to ease hacking and recovery. In case you break the system, you can pull the card out easily and reflash a new system image to it.
To receive S/PDIF and analog input, a PCM9211 chip is used. It converts these sources into I2S signal, and feeds it to CPU. PCM9211 features sample rate detection for SPDIF signals, and analog level detection for analog input, to be utilized by the controller software on CPU.
A high-quality clock generator, SiT9121, is present on the receiver board to generate the 24.576MHz master clock. It outputs LVDS clock signal, and drives the ADC block of PCM9211. The LVDS master clock is passed along to the processor board, and finally to the DAC (Amplifier) boards. Each master clock consumer has a LVDS-to-CMOS converter chip. LVDS ensures low interference and high signal quality.
The Intel AX200 WiFi and Bluetooth combo card connects the machine to internet and other devices. It can receive audio via Bluetooth A2DP, and multiple high quality codecs are supported. It can also support receiving audio via devices compatible to shairport-sync. In the future, we plan to add support to music streaming platform receiver. WiFi is also used to perform OTA firmware updates.
USB audio input is powered by the Linux kernel gadget stack. We provide the option to switch between UAC1 and UAC2, so you can connect the device to almost any computers or phones.
The I2S controller 1 in RK3399 has 8 channels. It's connected from the processor board to the interconnect board, which distributes the i2s signal and power to each of the output modules. As the i2s signals are coming out of the same group, they are naturally synchronized.
You can install any number of different output modules according to your needs. If you need power, you can install TPA3255 modules (in the pictures above); or, if you prefer efficiency, you can install the lower-power MA12070 modules (but these two types of modules cannot co-exist due to power supply voltage constraint). Or, if you prefer to use more advanced external amplifiers, DAC-only PCM5242 or CS43198 modules are also available, and can be mixed with amplifier output modules. The pin definition of the modules will be publicly released for those who prefer designing their own.
The output modules are powered by a bulky Mornsun LOF450-20B36-C supply (for the TPA3255 version), which provides 450W of power output. This is enough if you plan to drive only stereo speakers, because mid-range speakers and tweeters won't consume a lot of power. If you really need more power, you can use your own amplifiers.
The ENABLE signal of the amplifiers is controlled by the CPU, so no click-pop will happen during start-up or shutdown. Furthermore, the power supply has a power-good signal output connected to the CPU, and the amplifier will turn off as soon as the power input is disconnected, to avoid click-pop even on unexpected power disruption.
The controller is written in Rust. Thanks to Rust's safety and flexibility, we are able to develop code quickly and with few bugs. The controller is in-charge of most SmartCross' features. It connects to other components like CamillaDSP and Bluez to get their status and make configuration changes.
The GUI is written in Flutter, a cross-platform app framework. It's displayed on the touchscreen of the device, and gives you a familiar interface to control the device, if you have used smartphones (I believe you have, right?) Because of it's cross-platform nature, the same GUI is also available on your phones and computers, connecting to the machine via WiFi or USB.
gRPC is used as the communication channel between the controller and the GUI. Thanks to gRPC's bi-directional nature, all changes made in one GUI client (for example, on device's screen) will be reflected immediately on other connected clients, ensuring a smooth experience.
The whole system is built with Buildroot, which downloads and compiles software packages and pack them into one image. The system runs mainline Linux kernel (currently 6.4) with our modifications to enjoy the latest and greatest kernel features. In the future we plan to integrate all our changes to the Linux upstream.
We have finished the prototype hardware design, fulfilling all requirements above, as you can see in the picture. However, there're still bits and pieces that need to be fixed.
Software-wise, we have implemented the most critical features, but tweaks are still needed to make the interface easy to use. And there're a lot of features to be implemented. To give you an idea how far we have gone, I attach some screenshots of the GUI here.
We would also like to talk about a sensitive topic: money. How much do you think our work is worth? We will take your suggestion into consideration. We do not intend to be a commercial product, but we do want to have some extra coffee to drink
We really anticipate and appreciate your comments!
Today, I would like to introduce you to something new here, something we've been working on for two years. We call it SmartCross. We hope that our work can inject some fresh air into the market.
What is SmartCross?
SmartCross is an all-in-one device that combines digital processor, DAC converter and amplifier all into a single box. To give you an intuitive feeling:Kindly regard this as a work-in-progress ("engineering sample"), and the final product is set to look more visually appealing.
SmartCross is capable of receiving several audio sources and switching between them. It will process the audio with CamillaDSP (crossover, EQ, filters, delay, etc.), and output the signal to four amplifier boards, each with two channels. The amplifier boards can also be replaced with pure DAC boards to provide high fidelity audio signal output.
This started as a DIY project (inspired by the ideas of "ASR Open Source Streamer Project"), but as we gradually finished each part, it becomes less and less likely of being DIYed. We believe that the best way to spread the pleasure of the project is to deliver a piece of finished and tested hardware to your hand at a reasonable price. However, we continue to value the spirit of hacking, thus we will make all software in open source license. Schematics in pdf format will also be released to help hacking. If you have the same DIY spirit as ours, you can also make an output module yourself, and we are more than happy to provide support.
What's different about SmartCross?
Powerful from Heart
SmartCross is powered by a generic 64-bit ARM CPU (up to 1.8GHz), which packs way more processing power than dedicated DSP chips. It is possible to run long FIR filters, as many as 200k taps, per channel. You can also add nearly unlimited IIR filters to each channel. We also customized the Linux kernel specifically to fit the needs of realtime audio processing and playback, so you can enjoy stable audio output with minimum processing delay.DACs are driven by ultra-low-jitter oscillators to enable excellent audio reproduction. Up to 450W SMPS is integrated to allow powerful audio output.
Versatile in Features
Multiple input sources, including USB Audio, Bluetooth A2DP, S/PDIF, analog signal, and shairport-sync, can be consumed by SmartCross. Intelligent and customizable input-source switching mechanism allows you to listen to what you want conveniently. We are also working on Linux containers support, so you can even setup your own streamer software. Two USB ports are available on the back panel, enabling possible support for external storage media in the future.CamillaDSP enables customizable DSP processing pipeline, with algorithms such as IIR, FIR, limiter, and compressor. With its open-source nature, you may also develop your own algorithms.
Easy to Use
SmartCross is equipped with a rotary knob, an IR receiver and an IPS LCD touchscreen. With an intuitive graphical user interface, you can monitor real-time status, switch audio input, edit DSP profile, and change settings, right on the device itself. We also have apps to run on your smartphones and PCs to control the machine, all with the same interface and capability. You can also use a compatible IR remote controller to switch between audio inputs, DSP profiles, and adjust volume.Class-D audio amplifiers with dedicated DACs are embedded within the machine, so you can directly plug your speakers into it, eliminating the need for external amplifiers. speanON plugs ensure tight and stable connection in just a click. If you would like to use your own amplifiers: no problem at all, DAC-only HiFi output modules are also available.
Open in Mind
As open-source lovers and promoters, we value openness and collaboration of the community. SmartCross is powered by many open-source projects, including Linux kernel, CamillaDSP, Flutter, BlueALSA, shairport-sync, without which our work would become completely impossible. We contribute back to these projects to allow everyone to benefit from our efforts.SmartCross aims to be hackable. We will release all of our own source code in GPL once they are stabilized, and you will be able to build the firmware of SmartCross completely from scratch (of course, you are encouraged to contribute back). Schematics in pdf format will also be released to help hacking.
Designed with Craftsmanship
We believe in perfection. We tried our best to polish all bits in SmartCross, from hardware to software. Circuit boards within the machine (except power supply) are designed in-house specifically for SmartCross, and we paid attention to details from component selection to layout. Similarly, every software component is carefully selected and tailored in the stack. The main controller, built by us, is written in Rust to ensure stability. The device runs mainline Linux and up-to-date components built by bulildroot. We enjoyed state-of-art software technologies a lot while working on this project.Having said the above, we are only a small and young team, and we have limitations in our knowledge and experience. We know that imperfections are inevitable, and there're certainly bugs and shortcomings in our work. Therefore, we would kindly like to request that you let us know your valuable thoughts, so that we can make our machine one more step toward perfection.
Design details
This diagram may help you understand SmartCross:Hardware
The brain of SmartCross is a Rockchip RK3399 CPU. It is mainly in charge of the following:- Running audio source services like BlueALSA and shairport-sync;
- Processing signal with CamillaDSP;
- Running the controller service to control switching of audio sources, DSP configurations, wireless connections;
- Running a graphical user interface to display on LCD.
We know storage space is important for hacking. A total of 2GB LPDDR3 RAM chips are installed on board, which leaves plenty room for running services you like or future upgrades. The operating system is stored on a 64GB SanDisk High Endurance SD Card to ease hacking and recovery. In case you break the system, you can pull the card out easily and reflash a new system image to it.
To receive S/PDIF and analog input, a PCM9211 chip is used. It converts these sources into I2S signal, and feeds it to CPU. PCM9211 features sample rate detection for SPDIF signals, and analog level detection for analog input, to be utilized by the controller software on CPU.
A high-quality clock generator, SiT9121, is present on the receiver board to generate the 24.576MHz master clock. It outputs LVDS clock signal, and drives the ADC block of PCM9211. The LVDS master clock is passed along to the processor board, and finally to the DAC (Amplifier) boards. Each master clock consumer has a LVDS-to-CMOS converter chip. LVDS ensures low interference and high signal quality.
The Intel AX200 WiFi and Bluetooth combo card connects the machine to internet and other devices. It can receive audio via Bluetooth A2DP, and multiple high quality codecs are supported. It can also support receiving audio via devices compatible to shairport-sync. In the future, we plan to add support to music streaming platform receiver. WiFi is also used to perform OTA firmware updates.
USB audio input is powered by the Linux kernel gadget stack. We provide the option to switch between UAC1 and UAC2, so you can connect the device to almost any computers or phones.
The I2S controller 1 in RK3399 has 8 channels. It's connected from the processor board to the interconnect board, which distributes the i2s signal and power to each of the output modules. As the i2s signals are coming out of the same group, they are naturally synchronized.
You can install any number of different output modules according to your needs. If you need power, you can install TPA3255 modules (in the pictures above); or, if you prefer efficiency, you can install the lower-power MA12070 modules (but these two types of modules cannot co-exist due to power supply voltage constraint). Or, if you prefer to use more advanced external amplifiers, DAC-only PCM5242 or CS43198 modules are also available, and can be mixed with amplifier output modules. The pin definition of the modules will be publicly released for those who prefer designing their own.
The output modules are powered by a bulky Mornsun LOF450-20B36-C supply (for the TPA3255 version), which provides 450W of power output. This is enough if you plan to drive only stereo speakers, because mid-range speakers and tweeters won't consume a lot of power. If you really need more power, you can use your own amplifiers.
The ENABLE signal of the amplifiers is controlled by the CPU, so no click-pop will happen during start-up or shutdown. Furthermore, the power supply has a power-good signal output connected to the CPU, and the amplifier will turn off as soon as the power input is disconnected, to avoid click-pop even on unexpected power disruption.
Software
SmartCross uses a lot of existing software to achieve its features. There're two main components that we wrote from scratch: the controller and the GUI. You can think of controller as the "backend", and GUI as the "frontend".The controller is written in Rust. Thanks to Rust's safety and flexibility, we are able to develop code quickly and with few bugs. The controller is in-charge of most SmartCross' features. It connects to other components like CamillaDSP and Bluez to get their status and make configuration changes.
The GUI is written in Flutter, a cross-platform app framework. It's displayed on the touchscreen of the device, and gives you a familiar interface to control the device, if you have used smartphones (I believe you have, right?) Because of it's cross-platform nature, the same GUI is also available on your phones and computers, connecting to the machine via WiFi or USB.
gRPC is used as the communication channel between the controller and the GUI. Thanks to gRPC's bi-directional nature, all changes made in one GUI client (for example, on device's screen) will be reflected immediately on other connected clients, ensuring a smooth experience.
The whole system is built with Buildroot, which downloads and compiles software packages and pack them into one image. The system runs mainline Linux kernel (currently 6.4) with our modifications to enjoy the latest and greatest kernel features. In the future we plan to integrate all our changes to the Linux upstream.
Current progress
Unfortuantely we are unable to approxiamate when we will complete this project, but I will provide updates here if we make any progress. This is what it looks like now:We have finished the prototype hardware design, fulfilling all requirements above, as you can see in the picture. However, there're still bits and pieces that need to be fixed.
Software-wise, we have implemented the most critical features, but tweaks are still needed to make the interface easy to use. And there're a lot of features to be implemented. To give you an idea how far we have gone, I attach some screenshots of the GUI here.
Request for Comments
We sincerely request that you say something about our work: If there's anything you want missing in it? Anything you dislike? Or what do you think it can be used on?We would also like to talk about a sensitive topic: money. How much do you think our work is worth? We will take your suggestion into consideration. We do not intend to be a commercial product, but we do want to have some extra coffee to drink
We really anticipate and appreciate your comments!