Youyeetoo X1 x86 SBC Review – Part 2: GPIO, UART, I2C, SPI, NFC, PoE module, and power consumption

The Youyeetoo X1 x86 single board computer (SBC) with an Intel Celeron N5105 Jasper Lake CPU differs from a typical Intel or AMD mini PC by its range of IOs including SPI, I2C, UART, NFC connectivity, and support for PoE module that you won’t find in a typical computer, and that’s what we will test in the second part of the X1 SBC review along with power consumption.

The Youyeetoo X1 SBC is also different from Arm-based single board computers since we can just install any x86-compatible operating system by ourselves, and w don’t need to flash a board-specific image like we would do with Arm SBCs and peripherals such as SPI, I2C or UART may be or may not usable immediately due to lack of supported drivers.

We’ve already installed Ubuntu 22.04 on the Youyeetoo X1 in the first part of the review, so in the second part, we’ll use the instructions from the wiki to test the GPIOs and connect peripherals to the x86 SBC.

Configuring the GPIO voltage level on the Youyeetoo X1

The Youyeetoo X1 comes with several sets of GPIO JST connectors (2mm pitch) which can be used at 2 voltage levels: 1.8V and 3.3V.  Configuring the voltage level involves updating the BIOS of the board, for example using the file “X1_01_Digital_S8_20231023175931_3.3V.bin” which can be decoded as being for the X1 board with 8GB RAM, digital microphone enabled, and the default MIPI 7 LCD screen with GPIO voltage of 3.3V. You can read more in the section to update the BIOS in the first part of the review.

Using GPIOs with libgpiod

We can use the GPIO User Space Subsystem & libgpiod to control the GPIOs on the board.

Let’s start by installing libgpiod and gpiod:

Testing GPIOs with command line tools

We can now check the GPIO chip with the gpiodetect command. chip0 will be detected:


The gpioinfo command allows us to check the status of each GPIO pin:


The get/set commands set the GPIO to input or output. If you use gpioset with a specific GPIO to change the flag to 0, the said GPIO will automatically be the output and if you use gpioget to read the state of the GPIO, it will automatically change the mode to input:



Pin numberIO descriptionlibgpiod control IO number
1GPIO-H19179
2GPIO-H18178
3GPIO-H17177
4GPIO-H16176
5GPIO-H00160

Subset of the GPIO pin to libgpiod number table

Python programming to control Youyeetoo X1 GPIO pins

It’s also possible to use Python to manage the GPIO, so we will install the python3-libgpiod as follows:


We will then do a quick test with the following program to blink an LED (or turn on and off a relay):


It’s all good as you can see from the video below.

Checking out I2C on Youyeetoo X1

I2C driver check

Let’s install i2c-tools to check if any I2C devices are detected.


After that, we can run the i2cdetect command to locate I2C devices. But before that, let’s have a look at the schematics that tell us I2C3 is accessible through a 4-pin connector.
Youyeetoo X1 I2C schematics

So we have connected an I2C module with the ENS160 eCO2 sensor and the AHT21 temperature and humidity sensor using respectively 0x38 and x053 I2C addresses.

Youyeetoo X1 I2C AHT21 sensor


Again, it works fine with both sensors detected on the I2C bus.

Python program to test I2C

We will write a simple Python program to read values from I2C devices with the library smbus2 as follows:


The code above reads relative humidity and air temperature data from the AHT21 sensor and outputs those to the terminal.

AHT21 I2C temperature sensor python3

That’s another pass.

Youyeetoo X1’s UART connectors

Checking whether the driver works

There are 3 sets of UARTs for us to use: UART1 to UART3, which are ttyS0, ttyS4 and ttyS5 as shown in a terminal window along with other interfaces:


We will be testing the UART2 interface available through the /dev/ttyS5 device with the following pinout.

Pin NumberDescriptionRemarks
1VCCOutput voltage 3.3V
2TXDSending data TTL level
3RXDReceive data TTL level
4GNDPower reference ground

Testing UART with a with a GPS module

Using GPS over UART2
BN-180 GPS module connected to Youyeetoo X1’s UART2 port

We will test UART by connecting the Beitian BN-180 GPS module based on the u-blox NEO-M8N module. Following the manufacturer’s instructions, we opened the screen program and set the /dev/ttyS5 port to 9600 bps baudrate:


read gps coordinates over UART on Youyeetoo x1

We did receive some data, but to make it human-readable we installed the GPSD program.


We also had to edit /etc/default/gpsd to start automatically and point to the UART2 port that the GPS module is connected to.


The cgps program shows the correct GPS coordinates and other information as shown in the screenshot below.

gpsd GPS data coordinates

NFC testing

The Youyeetoo X1 board is fitted with an ST25DV04K NFC chip that’s ready to use. You just need to install an NFC antenna which Youyeetoo happens to have for sale. An IPEX connector is used and the antenna can be connected to it as shown in the photo below.

Youyeetoo X1 NFC testing

We can test the NFC using a sample program provided by Youyeetoo that sends data (e.g. a URL) after the NFC antenna is tapped with a compatible smartphone.


After successfully downloading and unzipping the program. We will install the binary packages that are necessary to compile the program.


We can now run make to build the program:


The build is successful, so we can start the NFC test program:


We can now use an NFC-enabled smartphone to tap the NFC antenna and we can open a URL such as CNX Software as shown in the video below.

.

 

SPI interface on Youyeetoo X1 SBC

Enabling the SPI driver

By default, SPI is NOT enabled:


That’s because Ubuntu 22.04 does not ship with a Linux kernel enabling SPI. So if we want to use SPI, we need to download the kernel source code, configure SPI, and compile the kernel or SPI driver module.

We need to install several dependencies including the Linux source code to bring the make menuconfig user interface:


linux 6.2 make menuconfig

Once there, go to the Device Drivers section, scroll until you see SPI, then press the spacebar in front of the “user mode SPI device driver support” message until it reads “*”.

make menuconfig SPI driver

Also editing the .config file to remove two key values: CONFIG_SYSTEM_TRUSTED_KEYS=””  and CONFIG_SYSTEM_REVOCATION_KEYS=””. Save and go to the next step.

edit dot config CONFIG SYSTEM REVOCATION KEYS

Let’s now build the kernel, driver modules, and update grub:


But even after installing the SPI driver, it’s still not working.  We must inject the ACPI ASL code into the system and reboot:

Checking out SPI on Youyeetoo X1

Finally! The /dev/spidev1.1 is now detected.


But since information about the SPI pinout is missing, we haven’t written a program to test it. Once more information becomes available we will update this article

POE module

The X1SBC does not ship with PoE support, but it features two 6-pin and 4-pin PoE headers that allow us to add a PoE module to the board.

Youyeetoo 60W POE 60W module for X1
60W PoE module (12V/5A) by Youyeetoo available available as 30W and 72W modules.

Installation of the module can be done by soldering it to the side of the board close to where the MicroSD card socket is located. Youyeetoo sent a 60W POE module for testing which required us to curve two of the pins before installation.

SDAPo 60W POE module

We could solder the PoE module after this little change, and we tested the board with a Zyxel GS1008HP 8-port POE switch. The X1 board will boot as soon as the Ethernet cable is plugged into the RJ45 jack.

Youyeetoo X1 fitted with POE module

Youyeetoo X1 power consumption

Although TDP and power consumption do not directly correlate, the Intel Celeron N5105 has a 10W TDP according to Intel Ark, and we’ll be running a real-world test to measure the power consumption of the Youyeetoo X1 with Wi-Fi, GPIO modules and sensors, and an M.2 NVMe SSD attached to the board.

Youyeetoo X1 power consumption
Youyeetoo X1 power consumption while running 7-zip multi-thread benchmark (SBC-bench.sh script)

We measured the board’s power consumption with a multi-function power meter. The results obtained from the adapter with a voltage of 12V DC, we can calculate the energy return from the equation P=IxV:

  • Power Off – 47 mA or 564 mW
  • Idle – 577mA or 6.9 Watts
  • SBC bench (7-zip multi-thread) – 1.759 A or 21.55 Watts

Conclusion

Youyeetoo X1 board is a business-card single computer board powered by an Intel Celeron N5105 with several GPIO headers which we would not typically on most other x86 hardware. The board also features M.2 connectors, both M Key and E Key, to connect an SSD and/or a wireless module be it Wi-Fi or 4G LTE or SSD, as well as MIPI DSI and HDMI interface to connect a display or monitor with up to 4K resolution.

We tested GPIO, UART, I2C, SPI, and NFC successfully on the Youyeetoo X1, and it was mostly straightforward except for SPI which required us to enable SPI in the Linux kernel and rebuild it from source. In any case, this makes the Youyeetoo X1 SBC board suitable for edge computing and whether you are a maker, an IoT developer, or a system integrator the Youyeetoo X1 SBC could meet your requirements for projects such as industrial automation, IoT gateways, robotics, and more.

We’d like to thank Youyeetoo for sending the X1 SBC board with 8GB RAM and a 128GB eMMC flash, plus the 7-inch YYT-MIPI7LCD touchscreen display, and other accessories for review. The Youyeetoo X1 SBC can be purchased on Amazon, Aliexpress, and the company’s online store. Prices start at $109.99 for the 4GB RAM model without storage, and the model reviewed here goes for $139.99, while the YYT-MIPI7LCD display adds an extra $30.

CNXSoft: This post was translated, with a few edits and extra insights, from the original review on CNX Software Thailand by Arnon Thongtem, and edited by Suthinee Kerdkaew

Share this:

Support CNX Software! Donate via cryptocurrencies, become a Patron on Patreon, or purchase goods on Amazon or Aliexpress

ROCK 5 ITX RK3588 mini-ITX motherboard
Subscribe
Notify of
guest
The comment form collects your name, email and content to allow us keep track of the comments placed on the website. Please read and accept our website Terms and Privacy Policy to post a comment.
8 Comments
oldest
newest
Jqpabc123
Jqpabc123
10 months ago

Looks great! But if i were to hang it on the wall running 24/7, how long should I expect it to last?

This is an important question for any “embedded” product.

Steve Nordquist
Steve Nordquist
10 months ago

If you blow plenty of fresh air around your wall, not with auto exhaust from a street, and keep cats and mice (apes, lions too) away from it, it should be 35 years fine. Was your ROI farther out than that?

That barrel connector would get soiled and the socket fail in portable use, but maybe you know how to clean and where to replace those 3-wire concentric barrel connectors (which Wikipedia doesn’t even acknowledge. ASUS uses them though. The parts just aren’t around at Digi-Key or have a special name?)

bob
bob
10 months ago

There is an error for the I2C code. This is the code for the relays.

SaSe
SaSe
9 months ago

Hi,
do you have the possibility to test the M.2 M-Key socket with a PCI-Express device via an adapter? The Lattepanda can use PCIe devices in the B and M-Key slots but is much more expensive.
Thank you!

Charles
4 months ago
Mark Birss
Mark Birss
9 months ago

But since information about the SPI pinout is missing” – it appears to have been updated – here – https://wiki.youyeetoo.com/en/x1/windows/spi_driver

Khadas VIM4 SBC