RockPi 4C + Penta sata hat

Good evening, I have tried to set up a penta sata hat with a RockPi 4C following this official guide and I have an error installing the script provided.
I have installed the last image of Ubuntu Server 20.04 on the official download page of Radxa.
I have tried to send an email to setq@radxa.com as they suggest in case of error but I have not received any answer, so I’m here asking you for help.
This is the output of the script:

root@termin-rockpi4c:/home/rock# curl -sL https://rock.sh/get-rockpi-penta​ | bash -

*** Penta SATA Hat Install for ROCK Pi 4

*** Tested distributions:
***   Armbian 20.05.4 focal
***   Armbian 20.05.3 buster
***   Debian 9 Desktop (radxa official image)
***   Ubuntu Server 18.04 (radxa official image)

*** Please report problems to setq@radxa.com and we will try to fix.


Package(s) rockpi4c-rk-u-boot-latest libmraa python3-dev python3-pip python3-pil is required.

Would you like to apt-get install the packages? [Y/n] y
Hit:1 http://apt.radxa.com/focal-stable focal InRelease
Hit:2 http://ports.ubuntu.com/ubuntu-ports focal InRelease
Hit:3 http://software.virtualmin.com/vm/6/gpl/apt virtualmin-focal InRelease
Hit:4 http://ports.ubuntu.com/ubuntu-ports focal-security InRelease
Hit:5 http://software.virtualmin.com/vm/6/gpl/apt virtualmin-universal InRelease
Hit:6 http://ports.ubuntu.com/ubuntu-ports focal-updates InRelease
Hit:7 http://ports.ubuntu.com/ubuntu-ports focal-backports InRelease
Reading package lists... Done
N: Skipping acquire of configured file 'main/binary-arm64/Packages' as repository 'http://software.virtualmin.com/vm/6/gpl/apt virtualmin-focal InRelease' doesn't support architecture 'arm64'
N: Skipping acquire of configured file 'main/binary-arm64/Packages' as repository 'http://software.virtualmin.com/vm/6/gpl/apt virtualmin-universal InRelease' doesn't support architecture 'arm64'
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package rockpi4c-rk-u-boot-latest
E: Unable to locate package libmraa
running install
running bdist_egg
running egg_info
creating Adafruit_SSD1306.egg-info
writing Adafruit_SSD1306.egg-info/PKG-INFO
writing dependency_links to Adafruit_SSD1306.egg-info/dependency_links.txt
writing requirements to Adafruit_SSD1306.egg-info/requires.txt
writing top-level names to Adafruit_SSD1306.egg-info/top_level.txt
writing manifest file 'Adafruit_SSD1306.egg-info/SOURCES.txt'
reading manifest file 'Adafruit_SSD1306.egg-info/SOURCES.txt'
writing manifest file 'Adafruit_SSD1306.egg-info/SOURCES.txt'
installing library code to build/bdist.linux-aarch64/egg
running install_lib
running build_py
creating build
creating build/lib
creating build/lib/Adafruit_SSD1306
copying Adafruit_SSD1306/SSD1306.py -> build/lib/Adafruit_SSD1306
copying Adafruit_SSD1306/__init__.py -> build/lib/Adafruit_SSD1306
creating build/bdist.linux-aarch64
creating build/bdist.linux-aarch64/egg
creating build/bdist.linux-aarch64/egg/Adafruit_SSD1306
copying build/lib/Adafruit_SSD1306/SSD1306.py -> build/bdist.linux-aarch64/egg/Adafruit_SSD1306
copying build/lib/Adafruit_SSD1306/__init__.py -> build/bdist.linux-aarch64/egg/Adafruit_SSD1306
byte-compiling build/bdist.linux-aarch64/egg/Adafruit_SSD1306/SSD1306.py to SSD1306.cpython-38.pyc
byte-compiling build/bdist.linux-aarch64/egg/Adafruit_SSD1306/__init__.py to __init__.cpython-38.pyc
creating build/bdist.linux-aarch64/egg/EGG-INFO
copying Adafruit_SSD1306.egg-info/PKG-INFO -> build/bdist.linux-aarch64/egg/EGG-INFO
copying Adafruit_SSD1306.egg-info/SOURCES.txt -> build/bdist.linux-aarch64/egg/EGG-INFO
copying Adafruit_SSD1306.egg-info/dependency_links.txt -> build/bdist.linux-aarch64/egg/EGG-INFO
copying Adafruit_SSD1306.egg-info/requires.txt -> build/bdist.linux-aarch64/egg/EGG-INFO
copying Adafruit_SSD1306.egg-info/top_level.txt -> build/bdist.linux-aarch64/egg/EGG-INFO
zip_safe flag not set; analyzing archive contents...
creating dist
creating 'dist/Adafruit_SSD1306-1.6.2-py3.8.egg' and adding 'build/bdist.linux-aarch64/egg' to it
removing 'build/bdist.linux-aarch64/egg' (and everything under it)
Processing Adafruit_SSD1306-1.6.2-py3.8.egg
Removing /usr/local/lib/python3.8/dist-packages/Adafruit_SSD1306-1.6.2-py3.8.egg
Copying Adafruit_SSD1306-1.6.2-py3.8.egg to /usr/local/lib/python3.8/dist-packages
Adafruit-SSD1306 1.6.2 is already the active version in easy-install.pth

Installed /usr/local/lib/python3.8/dist-packages/Adafruit_SSD1306-1.6.2-py3.8.egg
Processing dependencies for Adafruit-SSD1306==1.6.2
Searching for Adafruit-GPIO>=1.0.5
Downloading https://s3.setq.io/rockpi/pypi/Adafruit-GPIO-v1.0.5.zip
Best match: Adafruit-GPIO 1.0.5
Processing Adafruit-GPIO-v1.0.5.zip
Writing /tmp/easy_install-91jz3lg5/Adafruit-GPIO-v1.0.5/setup.cfg
Running Adafruit-GPIO-v1.0.5/setup.py -q bdist_egg --dist-dir /tmp/easy_install-91jz3lg5/Adafruit-GPIO-v1.0.5/egg-dist-tmp-frbgdisa
Traceback (most recent call last):
  File "/tmp/easy_install-91jz3lg5/Adafruit-GPIO-v1.0.5/setup.py", line 11, in <module>
    classifiers = ['Development Status :: 4 - Beta',
ModuleNotFoundError: No module named 'pip'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/setuptools/sandbox.py", line 154, in save_modules
    yield saved
  File "/usr/lib/python3/dist-packages/setuptools/sandbox.py", line 195, in setup_context
    yield
  File "/usr/lib/python3/dist-packages/setuptools/sandbox.py", line 250, in run_setup
    _execfile(setup_script, ns)
  File "/usr/lib/python3/dist-packages/setuptools/sandbox.py", line 45, in _execfile
    exec(code, globals, locals)
  File "/tmp/easy_install-91jz3lg5/Adafruit-GPIO-v1.0.5/setup.py", line 14, in <module>
    'Intended Audience :: Developers',
ModuleNotFoundError: No module named 'ensurepip'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "setup.py", line 20, in <module>
    setup(name              = 'Adafruit_SSD1306',
  File "/usr/lib/python3/dist-packages/setuptools/__init__.py", line 144, in setup
    return distutils.core.setup(**attrs)
  File "/usr/lib/python3.8/distutils/core.py", line 148, in setup
    dist.run_commands()
  File "/usr/lib/python3.8/distutils/dist.py", line 966, in run_commands
    self.run_command(cmd)
  File "/usr/lib/python3.8/distutils/dist.py", line 985, in run_command
    cmd_obj.run()
  File "/usr/lib/python3/dist-packages/setuptools/command/install.py", line 67, in run
    self.do_egg_install()
  File "/usr/lib/python3/dist-packages/setuptools/command/install.py", line 117, in do_egg_install
    cmd.run(show_deprecation=False)
  File "/usr/lib/python3/dist-packages/setuptools/command/easy_install.py", line 450, in run
    self.easy_install(spec, not self.no_deps)
  File "/usr/lib/python3/dist-packages/setuptools/command/easy_install.py", line 693, in easy_install
    return self.install_item(None, spec, tmpdir, deps, True)
  File "/usr/lib/python3/dist-packages/setuptools/command/easy_install.py", line 740, in install_item
    self.process_distribution(spec, dist, deps)
  File "/usr/lib/python3/dist-packages/setuptools/command/easy_install.py", line 784, in process_distribution
    distros = WorkingSet([]).resolve(
  File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 781, in resolve
    dist = best[req.key] = env.best_match(
  File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 1066, in best_match
    return self.obtain(req, installer)
  File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 1078, in obtain
    return installer(requirement)
  File "/usr/lib/python3/dist-packages/setuptools/command/easy_install.py", line 712, in easy_install
    return self.install_item(spec, dist.location, tmpdir, deps)
  File "/usr/lib/python3/dist-packages/setuptools/command/easy_install.py", line 738, in install_item
    dists = self.install_eggs(spec, download, tmpdir)
  File "/usr/lib/python3/dist-packages/setuptools/command/easy_install.py", line 923, in install_eggs
    return self.build_and_install(setup_script, setup_base)
  File "/usr/lib/python3/dist-packages/setuptools/command/easy_install.py", line 1191, in build_and_install
    self.run_setup(setup_script, setup_base, args)
  File "/usr/lib/python3/dist-packages/setuptools/command/easy_install.py", line 1177, in run_setup
    run_setup(setup_script, args)
  File "/usr/lib/python3/dist-packages/setuptools/sandbox.py", line 253, in run_setup
    raise
  File "/usr/lib/python3.8/contextlib.py", line 131, in __exit__
    self.gen.throw(type, value, traceback)
  File "/usr/lib/python3/dist-packages/setuptools/sandbox.py", line 195, in setup_context
    yield
  File "/usr/lib/python3.8/contextlib.py", line 131, in __exit__
    self.gen.throw(type, value, traceback)
  File "/usr/lib/python3/dist-packages/setuptools/sandbox.py", line 166, in save_modules
    saved_exc.resume()
  File "/usr/lib/python3/dist-packages/setuptools/sandbox.py", line 141, in resume
    six.reraise(type, exc, self._tb)
  File "/usr/lib/python3/dist-packages/setuptools/_vendor/six.py", line 685, in reraise
    raise value.with_traceback(tb)
  File "/usr/lib/python3/dist-packages/setuptools/sandbox.py", line 154, in save_modules
    yield saved
  File "/usr/lib/python3/dist-packages/setuptools/sandbox.py", line 195, in setup_context
    yield
  File "/usr/lib/python3/dist-packages/setuptools/sandbox.py", line 250, in run_setup
    _execfile(setup_script, ns)
  File "/usr/lib/python3/dist-packages/setuptools/sandbox.py", line 45, in _execfile
    exec(code, globals, locals)
  File "/tmp/easy_install-91jz3lg5/Adafruit-GPIO-v1.0.5/setup.py", line 14, in <module>
    'Intended Audience :: Developers',
ModuleNotFoundError: No module named 'ensurepip'
(Reading database ... 180884 files and directories currently installed.)
Preparing to unpack /tmp/tmp.67UggUVbw2 ...
Removed /etc/systemd/system/multi-user.target.wants/rockpi-penta.service.
Unpacking rockpi-penta (0.10) over (0.10) ...
Setting up rockpi-penta (0.10) ...
Created symlink /etc/systemd/system/multi-user.target.wants/rockpi-penta.service → /lib/systemd/system/rockpi-penta.service.
Traceback (most recent call last):
  File "/usr/bin/rockpi-penta/misc.py", line 6, in <module>
    import mraa  # pylint: disable=import-error
ModuleNotFoundError: No module named 'mraa'

I’m sorry that Ubuntu 20.04 does not have the mraa package, so the Penta hat cannot be used now. We will support it as soon as possible.

Do you have in mind also to upload an official Debian 10 image to install on Rockpi 4C?
With support to Penta hat of course

Hello again, I have tried the penta sata without the script and it seems to work.
So, what is the script used for?
I would like to know also about my previous question, about an ETA to official Debian 10 server image for Rockpi 4C and support for penta sata hat

My colleagues have made progress in packaging the mraa to Ubuntu 20.04 and are still testing it. It will be uploaded to the apt repository soon.

That are great news! Thank you.
Do you know something about Debian 10 server image?

You have three choices.

  1. Use Armbian without desktop
  2. Use Ubuntu server
  3. compile your own Debian without desktop.

And no, there will be no Debian 10 for servers, because there is no Debian Server image even for x86 (there is boot image, but it doesn’t even have ssh server in it). Use Ubuntu period.

Script is used for fan and oled screen that is used in shell for disks.

Hi, I recently purchased a RockPi4c and Quat SATA Hat and had issues but managed to get it up and running following the below.

  1. Download OS from Downloads rockpi4c_ubuntu_focal_server_arm64_20210126_0004-gpt.img.gz (The version linked on the download page just ended up looping on the login screen)
  2. Install image using etcher to eMMC
  3. Boot device and log in
  4. Run updates and upgrades - $sudo apt update & sudo apt upgrade
  5. Install required software $sudo apt install wget git build-essential python-dev libnode-dev cmake libjson-c-dev
  6. Download mraa (libmraa2) from GitHub $sudo git clone https://eclipse/mraa
  7. Change directory to mraa $cd mraa
  8. Create a build directly $sudo mkdir build
  9. Change directory to build $cd build
  10. Run CMake on mraa $cmake …
  11. Run Make on mraa $make
  12. Install mraa $make install
  13. Change back to the home directly $cd /home
  14. Run RockPi4 penta script $curl -sL https://rock.sh/get-rockpi-penta | sudo -E bash -
  15. When prompted to install missing packages say yes. This will fail on libmraa and rockpi4c-rk-u-boot-latest just ignore this

Hope this helps.

1 Like

Hello, is there any update about this?

should this command work after following these steps?

sysemtctl status rockpi-sata.service

benn a while since I ran it but thought it was

systemctl status rockpi-penta.service

cheers