XCOM – Compact, embedded x86 platform for SDR and other applications
Designed to support unattended operation, IP65+, and passive cooling
Have you ever tried designing a truly embedded x86-based system? We have, and it was a journey full of unexpected pitfalls.
Consider the importance of unattended operation, including resilience in the face of power failures and power voltage fluctuation. Need support for different CPU models? A compact, IP65+ enclosure? Each of these requirements is tricky on its own; taken together, they begin to feel insurmountable. But wandering into previously uncharted territory is half the fun of engineering, and we at Fairwaves are not ones to shy away from a challenge!
Today, we are making the results of more than a year’s worth of development available to the world. With the launch of XCOM, no one ever needs to face this particular set of challenges again.
We designed XCOM to be the ultimate platform for the Fairwaves UmTRX and XTRX Software Defined Radios (SDRs), but it works just as well with other USB, Ethernet, and miniPCIe SDRs. We have already started using the first revision of XCOM in our OpenRAN cellular base stations, and the version that will ship at the end of this campaign will incorporate everything we have learned from that field experience.
We also believe that XCOM has many applications outside of the SDR space. If you have suggestions for how we could make XCOM even more useful for non-SDR projects, please reach out and let us know!
XCOM Handles Demanding CPU and I/O Requirements
These days, a lot of control boards are based on ARM chips because they are small, inexpensive, power-efficient, and embedded-friendly. But what if you need more CPU power or faster I/O than an ARM chip can provide?
What if, for example, you are working in the growing field of Software-Defined Radio (SDR) and the RF processing of your application demands intensive Digital Signal Processing (DSP) and high throughput I/O? You could use a specialized DSP chip or an FPGA, but processing your data on a sufficiently powerful x86 CPU is not only simpler, it also benefits from a more developed software ecosystem and easy virtualization.
XCOM Supports Reliable, Unattended, Always-On Operation
The downside of using x86 is a less developed ecosystem of truly embedded, unattended designs. A lot of x86-based embedded systems are used in point-of-sale terminals, measurement devices, and other equipment that are easy to access and therefore easy to restart or fix if something goes wrong. For our use case, we need equipment that adheres to the infamous telecom standard of 99.999% uptime, even though it might be hundreds of kilometers – and many hours of driving – away from anyone who could fix it. Or it might be deep under water. Or hanging from a weather baloon. Or orbiting the Earth!
Building an x86-based device that is always on when it’s connected to power, and that can be reliably reflashed to a new software release remotely is surprisingly non-trivial. We had to pay special attention to everything from hardware design to Coreboot support to make it possible.
- RF Power Amplifiers (PAs) control. XCOM uses the same PA control as our classic UmTRX SDR:
- Two software-controlled, high-load DCDCs to control the RF output power of the PAs
- Four ADCs to measure the forward and reflected power of two PAs for VSWR calculation
- GPIO to turn PAs on and off
- miniPCIe with 2x PCIe lanes. Unlike most miniPCIe slots, which provide only one PCIe lane, XCOM allows you to utilize the full bandwidth of XTRX SDR.
- EEPROM with one write-lockable page. Allows you to store hardware-specific settings in a software-independent way. Unlike SSD, EEPROM is soldered on the board and is not changed when you re-install the OS. A write-lockable page allows you to store unique IDs, security keys, and other data that should not be changed by end-users.
- Coreboot support (selected COM modules only). Unlike a proprietary BIOS, Coreboot is open-source and modular, which allows essential customization of the boot process for unattended, always-on operation. By way of example:
- Coreboot allows safe, remote upgrades of its own firmware (with support for recovery and production images).
- Coreboot can provide a simple recovery OS and can, for example, dial home and report an issue even in the case of SSD failure.
- Coreboot settings can be flashed onto the image and do not require a CMOS battery, which is a frequent point of failure.
- System indicators, such as LEDs, can be programmed to start almost immediately after XCOM is powered on and well before the OS is loaded. They can also be programmed to indicate various boot failures.
- To simplify recovery, netboot can be configured to start if a particular combination is sent over a serial console.
- Only vertical connectors. The classic side connectors used in most SBCs do not work well in small IP65+ enclosures. They require extra space around the board to plug in cables, and once the board is installed, those cables becomes virtually impossible to unplug. All of XCOM’s connectors are vertical, so the board occupies only the space required by its own footprint. Vertical connectors also make it easy to plug and unplug cables when the board is mounted in an enclosure.
- Designed for passive cooling. We took special care to ensure that XCOM can be used in environments – like inside an IP65+ enclosure – where active cooling is not possible.
- COM Express Type 10 Mini Rev. 3.0:
- Dimensions (without enclosure): 102 x 73 x 36 mm with only vertical connectors
- 8.5 V to 50 V DC (12 V to 50 V DC for SATA support)
- Input voltage monitoring
- Polarity protection circuits
- miniPCIe: 2x PCIe lanes (full XTRX SDR bandwidth support), no USB
- Storage: M.2 SATA or SATA
- I/O: DisplayPort, 2x USB 3.0, 1GbE, 2x RS232, SMBus, 16x GPIO, 4x ADC lines, RGB LED driver
- Software-controlled high-load DCDC with 2x outputs
- EEPROM: 128kB with one write-lockable page
- Hardware watchdog
The project will soon be launched on Crowdsupply.