Mixtile Core 3588E SoM review – Part 2: Ubuntu 22.04, hardware features, RK3588 AI samples, NVIDIA Jetson compatibility

We’ve already had a look at the Mixtile Core 3588E NVIDIA Jetson Nano/TX2 NX/Xavier NX/Orin Nano compatible Rockchip RK3588 SO-DIMM system-on-module in the first part of the review with an unboxing and first boot with an Ubuntu 22.04 OEM installation.

I’ve now had more time to play with the devkit comprised of a Core 3588 module in 16GB/128GB configuration and a Leetop A206 carrier board with low-level features testing, some benchmarks, multimedia testing with 3D graphics acceleration and video playback, some AI tests using the built-in 6 TOPS NPU and the RKNPU2 toolkit, and finally I also tried out the system-on-module with the carrier board from an NVIDIA Jetson Nano developer kit.

Mixtile Core 3588E Ubuntu 22.04 review

Ubuntu 22.04 System info

We had already checked some of the system information in the first part of the Mixtile Core 3588E review, but here’s a reminder:


I also ran inxi to check a few more details.


The full boot log from the serial console can also be found on pastebin.  We can see the Mixtile Core 3588E machine comes with a Rockchip RK3588 octa-core processor clocked at 1,800 MHz (Cortex-A55) and 2,352 MHz (Cortex-A76), 16GB RAM, 128GB eMMC storage (AKJ21X device), connected to an HDMI display and Gigabit Ethernet. The system temperature is shown to be 39.8C at idle, helped with the PWM fan that’s active most of the time, but that’s not really an issue since I find it pretty quiet.

[Update January 9, 2024: Mixtile has a new firmware image with Wayland and GPIO enabled by default, that should fix some of the issues I encountered below. See release notes and download link]

Mixtile Core 3588E hardware features testing in Ubuntu 22.04

Mixtile has some documentation and I especially went through the “Hardware tutorials” to check most of the features. I had to skip the MIPI CSI camera test because they only work with IMX219 camera modules and I don’t own any.

M.2 sockets with NVMe SSD and WiFi 6 module

But I did install a 256GB M.2 NVMe SSD (Apacer AS2280P4 with up to 1,800 MB/s read speed and 1,100 MB/s write speed) and a Realtek RTL8852BE WiFi 6 and Bluetooth 5.2 module that I took from the Radxa ROCK 5B SBC in the M.2 socket on the bottom side of the Leetop A206 carrier board.

Leetop A206 M.2 MVMe SSD and WiFi 6 module
The module on the left is an OLED display. More on that later.

Let’s boot the system and check both the M.2 NVMe SSD and RealTek WiFi 6 module are properly detected:


Let’s quickly check the performance of the M.2 SSD:


That would be up to 2272 MB/s writes and 2229 MB/s reads, and there must be an issue before it’s faster than what the SSD is capable of and we’re already using EXT4 with direct I/Os… I tried the command with different sizes, but I got the same results. I did another test with FIO:


This looks closer to the theoretical performance of the Apacer SSD with 1828MB/s reads, and 909MB/s writes. In any case, the M.2 PCIe socket is performing to expectations.

While I was focused on storage testing, I also tested the eMMC flash with iozone:


A sequential read speed of 301 MB/s and a sequential write speed of 258 MB/s seems pretty good for a 128GB eMMC flash.

Let’s now focus our attention on the WiFi module. I could connect to WiFi with no issue although it shows not one but two RealTek wireless devices, but it apparently normal for this specific module.

Mixtile Core 3588E WiFi 6 Ubuntu 22.04

I connected both using 5 GHz WiFi and the link speed is 1.201 Gbps:


The download and upload speeds were tested using iperf3 and UP Xtreme i11 mini PC’s 2.5 GbE interface on the other side:

  • Upload

  • Download


586 Mbps uploads and 562 Mbps downloads are pretty good in this testbed, although there were lots of fluctuations in the download test with speeds ranging from 400 Mbps to 726 Mbps. The same module in the Rock 5B SBC delivered 821 Mbps average download speed and 420 Mbps upload speeds in the same environment and test conditions.

I reconnected the Ethernet cable to quickly check gigabit Ethernet with a bidirectional (full-duplex) test while I was at it:


No problem here. The review of a Mixtrile Core 3588E devkit is going well so far in Ubuntu.

RTC and serial debug port test

I haven’t got a spare coin-cell battery, but I could still test the RTC.


That’s OK, once you take into account that the locale is set to Thailand and the Buddhist year 2566 corresponds to the international year 2023.

Mixtile Core 3588E serial console port

I also connected a serial debug board to have access to the board without Ethernet or display as shown above.

After disconnecting the Ethernet cable (I had no WiFi during that test), I rebooted the Ubuntu, and I used BootTerm with a baudrate of 1,500,000 bps on my Ubuntu laptop to access the serial console on the Mixtile Core 3588E:


The system date and RTC are slightly out of sync. I had no battery, so I expected the system to read the time from the RTC and sync to it, but it did not happen that way. So I shut down the board for almost two hours (still without coincell battery or Internet connection) and I got the following result:

date after shutdown no battery

The system date recovered the date and time from the last shutdown, and the RTC was set to the 1st of January 2021. That’s OK, and when I reconnected Ethernet both dates were updated and synchronized automatically.

Testing I2C with an OLED display

The Leetop A206 carrier board has a 40-pin GPIO header with the pinout shown below.

Leetop A206 40-pin GPIO header pinout

The tutorial tells us to test I2C with an OLED Display, and I happen to have one from ANAVI Thermometer kit, which I connected to I2C1 (GPIO pins 3 and 5), 3.3V, and GND as shown below.

Mixtile Core 3588E I2C-0 OLED display

But it did not work:


That’s because I2C1 is not enabled somehow, and we’ll fix that below. But in the meantime, I moved the display to I2C0 on pins 27 and 28, and this time around the oled-i2c did show the Core3588E string. But a hard-coded string is no fun to play with so I installed the SSD1306 OLED project


… and displayed my own strings:


Mixtile Core 3588E OLED display I2C-0

Nice! Back to our little I2C1 issue which I reported to Mixtile, and the company told me to edit /boot/firmware/ubuntuEnv.txt and update the “overlays” line as follows:


Then I rebooted the board and tried again:


Mixtile Core 3588E I2C-1 test

That did the trick! The company explained to me this enables special modes for the GPIO and it will updated in future images.

UART serial interface

We’ve already used the UART interface for the serial console, but the GPIO header also comes with its own UART interface to connect various peripherals. We can also test it with the USB serial debug board to send and receive messages. The first time it did not work because of the missing “overlays” line in the /boot/firmware/ubuntuEnv.txt, so make sure to update it first if it is missing.

Leetop A206 Rockchip RK3588 UART loop back test

The plan is to do a loop-back test of sort by sending data from UART1 (Tx on pin 8, Rx on pin 10) to the USB serial port from the debug board that’s connected to one of the USB port of the Leeptop A206 carrier board.

Since the board is running Ubuntu 22.04 we’ll need to do some cleanup work first:


and we’ll now see three serial interfaces:


ttyS1 is supposed to be UART1 on the GPIO header and ttyUSB0 is for the USB serial debug board we’ve just connected. Let’s open two terminal windows connected each at 9600 bps, plus a third one to send commands.

Mixtile Core 3588E UART review

I could send a hello message from ttyUSB0 to ttyS1 without issues, but it did not work the other way around from ttyS1 to ttyUSB0. I tried to change the wires and switch to Picocom utility as stipulated in the tutorial but the result was the same… Not sure what happened here.

Mixtile Core 3588E benchmarks with Ubuntu 22.04

We’ve already reviewed several Rockchip RK3588 hardware platforms, so the performance of the processor is already well-known, and I’ve only run a few benchmarks in Ubuntu 22.04 to check the Mixtile Core 3588E module works to what should be expected. I started with sbc-bench.sh script.


Output:


The 7-zip benchmark achieved 15,900 points average which compared to around 16,200 on the Rock 5B and 16,400 with the Khadas Edge2 Pro. It’s slightly lower but not much, and at first, I thought it might be due to the ~2,285/2,279 MHz measured frequencies on the Cortex-A76 clusters, but the Edge2 Pro is even lower with the Corex-A76 cores clocked at 2,257 MHz for the first cluster, and 2,259 for the second. Memory bandwidth for the Cortex-A76 cores is about 10,000 MB/s (memcpy) on the Mixtile Core 3588E, 10457.5 MB/s on the Rock 5B, and 10,855.0 MB/s on the Edge2 Pro, so again it’s lower but not significant. Results for AES-256 are also in the same ballpark for the three Rockchip RK3588 SBCs mentioned here.

I then ran Speedometer 2.0 in the pre-installed Chromium web browser…

Speedometer 2.0 Chromium Ubuntu RK3588 SBC
Chromium

… and repeated it in Firefox.

Speedometer 2.0 Firefox Ubuntu RK3588 SBC
Firefox

I was quite surprised Firefox is now faster than Chromium in this benchmark as I got 78.84 points in Chromium and 53.14 in Firefox (September 2022) with the Khadas Edge2 Pro. Web browsers are constantly evolving, and companies may have set different options, so it’s difficult to compare results here, but at least the Mixtile CPU module looks to be working fine.

Multimedia features – 3D graphics and video playback

I planned to start 3D graphics testing with glmark2-es2-wayland benchmark. But it failed because the Windowing System is set to X11, while most other recent boards are using Ubuntu 22.04 with Wayland. This was also the case for the Khadas Edge2 Pro in Ubuntu 22.04. I wonder if this may also partially explain the lower score in Chromium above.

Mixtile Core 3588E glmark2-es2 benchmark

I could still run a 3D graphics benchmark, but I had to go with glmark2-es2 instead.


We can see the Ubuntu image is using the open-source Panfrost driver which most do provided they run on an Arm SoC with a supported Mali GPU. The score was 1,042 points, and it’s definitely not comparable with glmark2-es2-wayland. For reference, the Khadad Edge2 Pro had a 4,005 glmark2 score. Since X11 and Wayland are different windowing systems we are not able to compare the score, but we might still suggest Mixtile to update their Ubuntu image to the more modern Wayland windowing system for future releases (provided it doesn’t break anything else).

I then played a 1080p60 YouTube video in Chromium and it was smooth with just 6 frames dropped at the beginning.

Mixtile Core 3588E YouTube 1080p60 Chromium
1080p60

I changed the resolution to 2160p60 (4Kp60) and I was equally impressed.

Mixtile Core 3588E YouTube 4K 60 fps Chromium
4K 60 fps

It was only when I switched to 4320p60 (8Kp60) that the video became unwatchable as it was very choppy with too many frames dropped.

Mixtile Core 3588E YouTube 8K 60 fps Chromium
8K 60 fps

We’ll now test local video playback with ffplay from the ffmpeg library.

Sintel-2010-4k.mkv (H.264, 4K 24 fps) played smoothly with hardware decoding and low CPU usage.

Rockchip RK3588 ffplay H.264 hardware video decoding
4K H.264 hardware video decoding

Fifa_WorldCup2014_Uruguay-Colombia_4K-x265.mp4 (H.265, 4K 60 fps) video file was also fine and used hardware video decoding.

Mixtile Core 3588E H.265 60 fps ffplay
4K H.265 hardware video decoding

Rockchip processors typically come with a unique feature, namely 10-bit H.264 hardware video decoding, not found on most other brands of processors. Rockchip RK3588 also implements this and it works with ffplay using -4K.mp4 file with 4K resolution.

Mixtile Core 3588E H.265 60 fps ffplay hardware video decoding
4K 10-bit H.264 hardware video decoding

Same result for Blackmagic Pocket Cinema Camera 4K ‘Balloons’-mIAfxj7nd9k.mp4 (AV1, 4K fps 23.98 fps).

Rockchip RK3588 ffplay AV1 hardware video decoding
4K AV1 hardware video decoding

I also download two 8K test videos from YouTube at 30 fps and 60 fps frame rates.

ffplay failed 8K video playback
Failed 8K hardware video decoding

The screenshot above may make it look like it’s working with the av1_rkmpp_decoder and low CPU usage, but it’s not with the image only updated infrequently around once every 30 seconds…

Using the 6 TOPS NPU on Rockchip RK3588 with the RKNPU2 toolkit

The Rockchip RK3588 comes with a 6 TOPS NPU so I tested it with the RKNPU2 toolkit like Arnon did in his review of the Youyeetoo YY3568  Rockchip RK3568 SBC with a 1 TOPS NPU.

We’ll first need to install dependencies, retrieve the code, and build the YOLOV5 demo:


End of output:


Let’s now run the demo:


Output:


It took a little 20ms to run, and the results can be found in the out.jpg file with boxes around the detected objects. One person with an unusual dress at the front and a few cars in the background were not detected, but otherwise it looks pretty good.

Mixtile Core 3358E Yolo5 demo

We can also benchmark the NPU with the rknn_benchmark sample running the YOLOv5 model 10 times:


The Mixtile Core 3588E managed to detect objects at 61.65 FPS on average with a fairly complex image, which should be good enough for most real-time applications. For reference, the Youyeetoo YY3568 achieved 21.5 FPS in the same test and a different image, which may be fine for some applications, but may introduce too much lag for robotics applications.

Trying out the Mixtile Core 3588E CPU module with NVIDIA Jetson Nano Developer Kit

Mixtile states that the Core 3588E module is compatible with Jetson TX2 NX. In my understanding, the latter is also compatible with Jetson Nano, Xavier NX, and Orin Nano, so I took my old NVIDIA Jetson Nano Developer Kit (A02) from the cupboard to give it a try…

Mixtile Core 3588E developer kit NVIDIA Jetson Nano Developer Kit

I just had to remove the Mixtile Core 3588E and Jetson Nano CPU modules from their respctive carrier boards, and I could then install the Core 3588E module into the Jetson Nano carrier board without any issues. I almost used the 12V laptop power bank to power my “new” kit, but then I realized the NVIDIA devkit relies on 5V DC input instead of the 12V for the Leetop A206. So I avoided a painful embarrassment by using a 5V/3A power supply with the kit.

The Power LED did light up, but I could not see anything on the HDMI display and Ethernet did not seem to work either. So I connected a serial console:

Mixtile Core 3588E with Jetson Nano carrier board: serial console

The good news is that Ubuntu boots up when the Core 3588E is connected to the Jetson carrier board, and the Ethernet device shows up but the Ethernet link is down despite an Ethernet cable being connected to the board. So I did some further reading and learned the Jetson TX2 NX won’t work with the Jetson Nano Developer Kit A02, but the newer Jetson Nano Developer Kit B01 does work. Since the Mixtile Core 3588E is supposed to be a Jetson TX2 NX replacement, I had little hope of it working with my older carrier board. I don’t own another Jetson carrier board so I eventually had to give up that part.

Conclusion

Mixtile Core 3588E system-on-module performs well with the pre-loaded Ubuntu 22.04 image and Leetop A206 carrier board. The performance was as one would expect from a Rockchip RK3588 hardware platform, and I could test 3D graphics acceleration (with the Panfrost driver) and 4Kp60 hardware video decoding with various codecs successfully. I could also test I2C and UART interfaces from the GPIO header, the two M.2 sockets with an NVMe SSD and a WiFi 6 wireless module, and the 6 TOPS NPU could deliver 60 fps inference with YOLOv5 model enabling real-time image processing.

Having said there’s still more work to do on the Ubuntu 22.04 image, as I would not play 8K AV1 videos smoothly on YouTube or with ffplay using locally stored files, albeit 4Kp60 worked fine for both. The Ubuntu image also relies on the X11 windowing system and may benefit from an update to Wayland with better support and improved performance. I also had to tweak one config file to make I2C and UART work, but this should not be an issue in the future since it should be enabled by default.

Mixtile does not officially recommend or sell any specific Jetson TX2 NX carrier board for the Core 3588E, but since their documentation is based on the Leetop A206 carrier board, it might make sense to get that model as a “working demo”, on top of using it with your own or other carrier boards that should work in theory…

I’d like to thank Mixtile for sending the Core 3588E system-on-module with 16GB RAM and a fast 128GB eMMC flash along with the Leetop A205 board for review. The company is selling the Core 3588E module for $109 to $278 depending on the memory and storage configuration and whether a heatsink is present, and is letting customers select their preferred carrier board from other sources or design their own. As noted above, the Leetop A206 is an option, but it’s out of stock in most places including Seeed Studio where it is listed for $199, and I could only find it on an Aliexpress store selling it for close to $400.

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.
1 Comment
oldest
newest
Banana
Banana
6 months ago

nice! i still keep being amazed by your articles, wow; so many information nuggets.

the jetson tx2 nx is indeed working on a b01-b03 board, however the pinmux is different and requires tons of tweaking to get all jetson carrier features to work.

my guess is that with a ton of pinmux settings in the devicetree you can get the jetson carrier features to work on the 3588.
though timeconsuming 🙂

Khadas VIM4 SBC