#Rock Pi S: a tinier version of the Raspberry Pi with Alexa functionalities
Product Reviews, Single-board Computers | 6 min | 15725
Radxy, the company behind the Rock Pi 4 is back! A couple of days ago, I've received the Rock Pi S (see Fig. 1), a miniature developer board that measures just 38 x 38 mm. The board is powered by the Rockchip RK3308 SoC, which integrates four 64-bit ARM Cortex-A35 cores (Ultra-High-Efficiency). Each of the cores reaches up to 1.3 GHz. The SoC also has a built-in voice activity detector (VAD) for use with IoT and smart voice applications.
Despite its tiny size, the Rock Pi S includes a 26-pin GPIO header along with a 26-pin audio/voice header and a microSD card reader. Additionally, the Rock Pi S has a 100 Mbps Ethernet port, a USB 2.0 Type-A port and a USB 2.0 Type-C port that supports OTG and 5V power. You can choose between two RAM options: 256 MB or 512 MB and optionally, you can get 1-8 GB of onboard NAND for storage, and an extra RTL8723BS controller that supports Wi-Fi and Bluetooth 4.0. Speaking of OS, the board runs Debian (right now only Stretch) and supports also the Buildroot.
The board costs between $9.99 and $23.99 depending on the features that you want. The cheapest version has only 256 MB RAM. However, most expensive version includes 512MB, Bluetooth 4.0, Wi-Fi, PoE and 1GB of onboard NAND storage (versions with 8 GB are still not available to sell).
Since my last posts are about evaluation of hardware for IoT, I wanted to buy one board from Allnetchina to test the performance. Unfortunately, they do not ship to Germany. Thus, I contacted Radxa and they reacted quickly (thanks again to Norbert and Tom) and sent me a board to evaluate. So let's evaluate the board!
Fig. 1: The Rock Pi S Hardware
The following table includes some of the main features of the board. One of the pin headers has colors to indicate the pin functionalities (red = +V, black = GND, etc. -see Fig. 1). I find this a nice upgrade.
Rock Pi S CPU SoC – Rockchip RK3308 quad-core Cortex A35 processor @1.3 GHz System Memory 256 to 512 MB SDRAM Storage microSD card for OS storage media optional: 128 MB/1 GB onboard NAND storage for cost saving
Connectivity 10/100M Ethernet
optional: 802.11 b/g/n WiFi 4 (RTL8723BS) with external antennaUSB 1x USB 2.0 host ports
1x micro USB OTG type-C portExpansion headers 26-pin Pi GPIO header
26-pin voice/audio headerSupported OS Debian and Buildroot Power Supply 5V via micro USB port or optional PoE (additional HAT required) Dimensions - Weight 38 x 38 mm - 26 g The hardware and software that will be used in this article are listed here:
Installing/Compiling Debian
You can find the official images here. Nowaday only Debian Stretch and Slackware ARM are available, but there are plans for Ubuntu Server and Armbian (Wip) -this should be there, but the link is still not working-.
At the moment of writing this article, the Debian image (dated 2019-08-06) does not support temperature measuring. Thus, for my test with the N-Queens-Problem benchmark, I had to compile an image from scratch, because the temperature support was added with this commit on GitHub.
You can follow the instructions from this link, but I prefer to use a Docker with the needed toolchain, libraries and packages, so I combined two tutorials together and these are the steps:
Install the prerequisites and Docker:
sudo apt-get update sudo apt-get install binfmt-support qemu-user-static # curl -sSL https://get.docker.com | sh
Download the repository and switch the branch:
cd ~ git clone --recursive https://github.com/radxa/rockchip-bsp.git cd rockchip-bsp git checkout stable-4.4-rockpis git fetch origin git rebase origin/stable-4.4-rockpis git submodule update cd kernel git checkout stable-4.4-rockpis cd ../u-boots git checkout stable-4.4-rockpis
Build the Docker image with the tools and libraries for compiling the image:
cd ~/rockchip-bsp/docker sudo docker build -t rockchip-radxa:1 -f ./Dockerfile .
The Docker image
rockchip-radxa:1
is ready. Everytime you want to build images, just run a Docker container.Run the Docker container:
docker run --privileged -it -v ~/rockchip-bsp:/root rockchip-radxa:1 /bin/bash
The line starts a container from the image
rockchip-radxa:1
in an iterative mode (-it
), links the folder (-v
)~/rockchip-bsp
with/root
and defines the entrypoint to/bin/bash
. Thus, after running that line, you are inside the container and the repositories are available under/root/
.
Now, after installing prerequisities and building and running the container, you can build the image with the following steps:
cd /root/ # Build u-boot ./build/mk-uboot.sh rockpis # Build kernel ./build/mk-kernel.sh rockpis
The generated images will be copied to
out/u-boot
and you will get the kernel image and dtb file underout/kernel/
:root@ae530e6ef32d:~# ls out/u-boot/ idbloader.img sd-nand spi trust.img uboot.img root@ae530e6ef32d:~# ls out/kernel/ hw_intfc.conf Image overlays rockpi-s-linux.dtb
After that, you need to build a base debian system from linaro. You can choose from a 32bit or a 64bit version:
# Use one of this option: # To build 32bit rootfs: export ARCH=armhf # I used this option to build the base image # To build 64bit rootfs: export ARCH=arm64
and then, run these lines to build the image.
cd rootfs dpkg -i ubuntu-build-service/packages/* # ignore the broken dependencies, they will be fixed in the next step apt-get install -f RELEASE=stretch TARGET=desktop ARCH=${ARCH} ./mk-base-debian.sh
This bootstraps a Debian stretch image, and you get a rootfs tarball named
linaro-stretch-alip-xxxx.tar.gz
.If you get the following error:
chroot: failed to run command `/usr/bin/env': Exec format error [...] Failed to run livebuild, please check your network connection.
it is probably becase you did not run this on your host computer:
sudo apt-get install binfmt-support qemu-user-static
Then, build the rk-debian rootfs with debug using:
VERSION=debug ARCH=$ARCH ./mk-rootfs-stretch.sh && ./mk-image.sh
This installs Rockchip specified packages and hooks on the standard Debian rootfs and generates an ext4 format rootfs image at
rootfs/linaro-rootfs.img
.Finally, combine everything into one image using:
build/mk-image.sh -c rk3308 -t system -r rootfs/linaro-rootfs.img
This combines the u-boot, kernel and rootfs into one image and generates a GPT partition table. The output is
out/system.img
After that, you can exit the container executing the command
exit
.The last step is to flash the image on a microSD card. You can use e.g. etcher to do that. Please be aware that the default user and password to connect using SSH will be:
linaro
-Performance Test
The N-Queens Problem library needs python3 and the tqdm module. Thus, to install those type the following:
sudo apt-get install python3 python3-pip pip3 install tqdm
Because the RockPi does not have a GPU temperature sensor (or any function that provides that information), I modified the get_gpu_temp(...) function in the temperature.py file as:
def get_gpu_temp(self): #res = os.popen('vcgencmd measure_temp').readline() #res = float(res.replace('temp=','').replace('\'C\n','')) res = float(os.popen("cat /sys/class/thermal/thermal_zone1/temp").read())/1000 return res
to return the temperature of the thermal zone 1.
For the test, I used the same heatsink as for the Raspberry Pi:
The N-queens-problem benchmark (N=12) was launched and repeated 100/50 times with multi-thread and single-thread configuration, respectively. The N-queens-problem is a well-known problem that consists of placing N chess queens on an N×N chessboard so that no two queens attack each other. In this case, there are 14200 solutions for 12 queens.
The multi-thread and single-thread performances resulted as described in Fig. 2a and 2b, respectively.
Fig. 2a: Multi-thread Configuration Fig. 2b: Single-thread Configuration The following table sumarizes the performance of the Rock Pi S and compares it with the Orange Pi Zero LTS (Armbian) and Raspberry Pi 3B and 3B+ models (Raspbian Stretch).
RockPi S
oPi Zero LTS
rPi Model 3B+
rPi Model 3B
Avg. Multi-Thread Solving Time 112.32 s 69.97 s 62.66 s 70.85 s Multi-Thread Max. Temperature 56.16 °C 71.75 °C 68.78 °C 78.69 °C Avg. Single-Thread Solving Time 336.14 s 251.65 s 213.34 s 251.30 s Single-Thread Max. Temperature 48.19 °C 31.10 °C 54.22 °C 52.61 °C The performance is very limited, but I think it is a problem of the Kernel/OS. The maximal temperature is very low for the chip, thus I estimate that the performance is somehow limited by software. I'll keep you updated when the new images are released. The single-thread test was in average 3.00x slower than the multi-thread test (274.77 min vs 91.85 min to solve 50 N-queens-problems).
Conclusions
The market has become more difficult for competitors with the release of the Raspberry Pi 4. But, it is still worth thinking about alternatives to Raspberry in the low-cost segment. The Rock Pi S positions itself here against the much lower-power, single-core variants of the Raspberry Pi Zero. In comparsion with the Orange-Pi Zero LTS, the performance is still very limited. But as I said, it has to be a problem with the OS/Kernel. The board is very small and the pin header with colors is a great idea. The community has to grow up and the documentation is still in its beginning phase, which makes it difficult to experiment with the board. However, the audio/voice capabilities of the RK3308 can make a big difference in decision making to buy such a board. Thus, I will try in the next days to use the 26-pin audio/voice header, and see how it works. Stay tuned!
We use cookies to improve our services. Read more about how we use cookies and how you can refuse them.
Stuart Naylor 08.17.2020
Hi,