Orange Pi 5純正のUbuntuのGPU表示を高速化できるのか?

ゆきまくらさんの「OrangePi5の公式xfceイメージにビデオドライバーをあてる」にGPUドライバを適用する話が書かれていた。

ただ上記だと詳細がわからないので、いろいろ調べながら試してみた。

現状調査

まず、同じRK3588S使っているKhadas Edge 2 Proあたりの情報みればなんかあるかな?と、cnxsoftwareにある「Khadas Edge2 Pro review – A Rockchip RK3588S SBC tested with Ubuntu 22.04」を読んでみる

「inxi -Fc0」というコマンドを実行するとハードウェア構成が出る、と

orangepi@orangepi5:~$ inxi -Fc0
System:
  Host: orangepi5 Kernel: 5.10.110-rockchip-rk3588 aarch64 bits: 64
    Desktop: Xfce 4.16.0 Distro: Ubuntu 22.04.1 LTS (Jammy Jellyfish)
Machine:
  Type: ARM System: Orange Pi 5 details: N/A
CPU:
  Info: 3x 4-core model: N/A variant-1: cortex-a76 variant-2: cortex-a55
    bits: 64 type: MCP AMP cache: L2: 3x 512 KiB (1.5 MiB)
  Speed (MHz): avg: 408 min/max: 408/1800:2400 cores: 1: 408 2: 408 3: 408
    4: 408 5: 408 6: 408 7: 408 8: 408
Graphics:
  Device-1: display-subsystem driver: rockchip_drm v: N/A
  Device-2: mali-bifrost driver: mali v: N/A
  Device-3: rk3588-dw-hdmi driver: dwhdmi_rockchip v: N/A
  Display: server: X.Org v: 1.21.1.3 driver: X: loaded: modesetting
    gpu: rockchip_drm,mali,dwhdmi_rockchip resolution: 1920x1080~60Hz
  OpenGL: renderer: llvmpipe (LLVM 13.0.1 128 bits) v: 4.5 Mesa 22.0.5
Audio:
  Device-1: hdmi driver: rk_hdmi_sound
  Device-2: rk3588-dw-hdmi driver: dwhdmi_rockchip
  Device-3: hdmi driver: rk_hdmi_sound
  Sound Server-1: ALSA v: k5.10.110-rockchip-rk3588 running: yes
  Sound Server-2: PulseAudio v: 15.99.1 running: yes
Network:
  Device-1: rk3588-gmac driver: rk_gmac_dwmac
  IF: eth0 state: up speed: 1000 Mbps duplex: full mac: 66:bd:6f:11:95:d7
Drives:
  Local Storage: total: 29.9 GiB used: 11.49 GiB (38.4%)
  ID-1: /dev/mmcblk1 model: 5cMJR size: 29.9 GiB
Partition:
  ID-1: / size: 29.14 GiB used: 11.4 GiB (39.1%) fs: ext4 dev: /dev/mmcblk1p2
  ID-2: /boot size: 255.7 MiB used: 94.2 MiB (36.8%) fs: vfat
    dev: /dev/mmcblk1p1
  ID-3: /var/log size: 187.3 MiB used: 2.4 MiB (1.3%) fs: ext4
    dev: /dev/zram1
Swap:
  ID-1: swap-1 type: zram size: 3.75 GiB used: 0 KiB (0.0%) dev: /dev/zram0
Sensors:
  System Temperatures: cpu: 40.7 C mobo: N/A
  Fan Speeds (RPM): N/A
Info:
  Processes: 246 Uptime: 7m Memory: 7.51 GiB used: 796.8 MiB (10.4%)
  Shell: Bash inxi: 3.3.13
orangepi@orangepi5:~$

「glxinfo -B」で現在使用しているGPU出力に関する設定が分かるらしく「OpenGL renderer string: llvmpipe (LLVM 13.0.1, 128 bits)」を使ってる

orangepi@orangepi5:~$ glxinfo -B
name of display: :0
libGL error: failed to create dri screen
libGL error: failed to load driver: rockchip
libGL error: failed to create dri screen
libGL error: failed to load driver: rockchip
display: :0  screen: 0
direct rendering: Yes
Extended renderer info (GLX_MESA_query_renderer):
    Vendor: Mesa/X.org (0xffffffff)
    Device: llvmpipe (LLVM 13.0.1, 128 bits) (0xffffffff)
    Version: 22.0.5
    Accelerated: no
    Video memory: 7689MB
    Unified memory: no
    Preferred profile: core (0x1)
    Max core profile version: 4.5
    Max compat profile version: 4.5
    Max GLES1 profile version: 1.1
    Max GLES[23] profile version: 3.2
OpenGL vendor string: Mesa/X.org
OpenGL renderer string: llvmpipe (LLVM 13.0.1, 128 bits)
OpenGL core profile version string: 4.5 (Core Profile) Mesa 22.0.5
OpenGL core profile shading language version string: 4.50
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile

OpenGL version string: 4.5 (Compatibility Profile) Mesa 22.0.5
OpenGL shading language version string: 4.50
OpenGL context flags: (none)
OpenGL profile mask: compatibility profile

OpenGL ES profile version string: OpenGL ES 3.2 Mesa 22.0.5
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.20

orangepi@orangepi5:~$

「eglinfo」でも情報がある

orangepi@orangepi5:~$ eglinfo
EGL client extensions string:
    EGL_EXT_client_extensions EGL_EXT_platform_base
    EGL_KHR_client_get_all_proc_addresses EGL_KHR_platform_x11
    EGL_EXT_platform_x11 EGL_KHR_platform_gbm

GBM platform:
arm_release_ver of this libmali is 'g6p0-01eac0', rk_so_ver is '5'.
eglinfo: eglInitialize failed

X11 platform:
EGL API version: 1.4
EGL vendor string: ARM
EGL version string: 1.4 Valhall-"g6p0-01eac0"
EGL client APIs: OpenGL_ES
EGL extensions string:
    EGL_NV_context_priority_realtime EGL_KHR_image_pixmap
    EGL_KHR_partial_update EGL_EXT_image_dma_buf_import
    EGL_KHR_config_attribs EGL_KHR_image EGL_KHR_image_base
    EGL_KHR_fence_sync EGL_KHR_wait_sync EGL_KHR_gl_colorspace
    EGL_KHR_get_all_proc_addresses EGL_IMG_context_priority
    EGL_KHR_no_config_context EGL_EXT_image_dma_buf_import
    EGL_EXT_image_dma_buf_import_modifiers EGL_EXT_yuv_surface
    EGL_EXT_pixel_format_float EGL_ARM_pixmap_multisample_discard
    EGL_KHR_gl_texture_2D_image EGL_KHR_gl_renderbuffer_image
    EGL_KHR_create_context EGL_KHR_surfaceless_context
    EGL_KHR_gl_texture_cubemap_image EGL_EXT_image_gl_colorspace
    EGL_EXT_create_context_robustness
Configurations:
     bf lv colorbuffer dp st  ms    vis   cav bi  renderable  supported
  id sz  l  r  g  b  a th cl ns b    id   eat nd gl es es2 vg surfaces
---------------------------------------------------------------------
0x01 32  0  8  8  8  8  0  0  0 0 0x67TC      a     y  y     win,pb,pix
0x02 32  0  8  8  8  8 24  0  0 0 0x67TC      a     y  y     win,pb,pix
0x03 32  0  8  8  8  8 24  8  0 0 0x67TC      a     y  y     win,pb,pix
0x04 32  0  8  8  8  8 24  8  4 1 0x67TC      a     y  y     win,pb,pix
0x05 16  0  5  6  5  0  0  0  0 0 0x00--      y     y  y     pb,pix
0x06 16  0  5  6  5  0 24  0  0 0 0x00--      y     y  y     pb,pix
0x07 16  0  5  6  5  0 24  8  0 0 0x00--      y     y  y     pb,pix
0x08 16  0  5  6  5  0 24  8  4 1 0x00--      y     y  y     pb,pix
0x09 24  0  8  8  8  0  0  0  0 0 0x21TC      y     y  y     win,pb,pix
0x0a 24  0  8  8  8  0 24  8  0 0 0x21TC      y     y  y     win,pb,pix
0x0b 24  0  8  8  8  0  0  0  4 1 0x21TC      y     y  y     win,pb,pix
0x0c 24  0  8  8  8  0 24  8  4 1 0x21TC      y     y  y     win,pb,pix
0x0d 16  0  5  5  5  1 24  8  0 0 0x00--      a     y  y     pb,pix
0x0e 16  0  5  5  5  1 24  8  4 1 0x00--      a     y  y     pb,pix
0x0f 16  0  4  4  4  4 24  8  0 0 0x00--      a     y  y     pb,pix
0x10 16  0  4  4  4  4 24  8  4 1 0x00--      a     y  y     pb,pix
0x11 32  0  8  8  8  8 24  8  8 1 0x67TC      a     y  y     win,pb,pix
0x12 16  0  5  6  5  0 24  8  8 1 0x00--      y     y  y     pb,pix
0x13 24  0  8  8  8  0 24  8  8 1 0x21TC      y     y  y     win,pb,pix
0x14 32  0  8  8  8  8 24  8 16 1 0x67TC      a     y  y     win,pb,pix
0x15 16  0  5  6  5  0 24  8 16 1 0x00--      y     y  y     pb,pix
0x16 24  0  8  8  8  0 24  8 16 1 0x21TC      y     y  y     win,pb,pix
0x17 24  0  8  8  8  0  0  0  0 0 0x21TC            y  y     win,pb,pix
0x18 64  0 16 16 16 16 24  8  0 0 0x00--            y  y     pb
0x19 32  0 10 10 10  2 24  8  0 0 0x00--      a     y  y     pb,pix
0x1a 24  0  8  8  8  0  0  0  0 0 0x21TC      y     y  y     win,pb,pix

orangepi@orangepi5:~$

cnxの記事でglmark2-es2-waylandを使ってベンチマークとってるので、マネして「sudo apt install glmark2-es2-wayland」でベンチマークソフトをインストールして実行

orangepi@orangepi5:~$ glmark2-es2-wayland
Error: main: Could not initialize canvas
orangepi@orangepi5:~$

Orange PI 5 Ubuntu環境では実行できない

よくよく確認してみるとX-waylandを使用していないので「glmark2-es2」を実行。

orangepi@orangepi5:~$ glmark2-es2
arm_release_ver of this libmali is 'g6p0-01eac0', rk_so_ver is '5'.
arm_release_ver of this libmali is 'g6p0-01eac0', rk_so_ver is '5'.
=======================================================
    glmark2 2021.02
=======================================================
    OpenGL Information
    GL_VENDOR:     ARM
    GL_RENDERER:   Mali-LODX
    GL_VERSION:    OpenGL ES 3.2 v1.g6p0-01eac0.efb75e2978d783a80fe78be1bfb0efc1
=======================================================
[build] use-vbo=false: FPS: 688 FrameTime: 1.453 ms
[build] use-vbo=true: FPS: 855 FrameTime: 1.170 ms
[texture] texture-filter=nearest: FPS: 899 FrameTime: 1.112 ms
[texture] texture-filter=linear: FPS: 859 FrameTime: 1.164 ms
[texture] texture-filter=mipmap: FPS: 848 FrameTime: 1.179 ms
[shading] shading=gouraud: FPS: 904 FrameTime: 1.106 ms
[shading] shading=blinn-phong-inf: FPS: 886 FrameTime: 1.129 ms
[shading] shading=phong: FPS: 814 FrameTime: 1.229 ms
[shading] shading=cel: FPS: 789 FrameTime: 1.267 ms
[bump] bump-render=high-poly: FPS: 552 FrameTime: 1.812 ms
[bump] bump-render=normals: FPS: 952 FrameTime: 1.050 ms
[bump] bump-render=height: FPS: 900 FrameTime: 1.111 ms
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 973 FrameTime: 1.028 ms
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 746 FrameTime: 1.340 ms
[pulsar] light=false:quads=5:texture=false: FPS: 973 FrameTime: 1.028 ms
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 482 FrameTime: 2.075 ms
[desktop] effect=shadow:windows=4: FPS: 785 FrameTime: 1.274 ms
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 222 FrameTime: 4.505 ms
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 194 FrameTime: 5.155 ms
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 354 FrameTime: 2.825 ms
[ideas] speed=duration: FPS: 491 FrameTime: 2.037 ms
[jellyfish] <default>: FPS: 696 FrameTime: 1.437 ms
[terrain] <default>: FPS: 186 FrameTime: 5.376 ms
[shadow] <default>: FPS: 732 FrameTime: 1.366 ms
[refract] <default>: FPS: 301 FrameTime: 3.322 ms
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 874 FrameTime: 1.144 ms
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 837 FrameTime: 1.195 ms
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 802 FrameTime: 1.247 ms
[function] fragment-complexity=low:fragment-steps=5: FPS: 868 FrameTime: 1.152 ms
[function] fragment-complexity=medium:fragment-steps=5: FPS: 788 FrameTime: 1.269 ms
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 877 FrameTime: 1.140 ms
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 833 FrameTime: 1.200 ms
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 820 FrameTime: 1.220 ms
=======================================================
                                  glmark2 Score: 720
=======================================================
orangepi@orangepi5:~$

glmark2の場合はどうなるかを確認

orangepi@orangepi5:~$ glmark2
libGL error: failed to create dri screen
libGL error: failed to load driver: rockchip
libGL error: failed to create dri screen
libGL error: failed to load driver: rockchip
** GLX does not support GLX_EXT_swap_control or GLX_MESA_swap_control!
** Failed to set swap interval. Results may be bounded above by refresh rate.
=======================================================
    glmark2 2021.02
=======================================================
    OpenGL Information
    GL_VENDOR:     Mesa/X.org
    GL_RENDERER:   llvmpipe (LLVM 13.0.1, 128 bits)
    GL_VERSION:    4.5 (Compatibility Profile) Mesa 22.0.5
=======================================================
** GLX does not support GLX_EXT_swap_control or GLX_MESA_swap_control!
** Failed to set swap interval. Results may be bounded above by refresh rate.
[build] use-vbo=false: FPS: 111 FrameTime: 9.009 ms
** GLX does not support GLX_EXT_swap_control or GLX_MESA_swap_control!
** Failed to set swap interval. Results may be bounded above by refresh rate.
[build] use-vbo=true: FPS: 112 FrameTime: 8.929 ms
** GLX does not support GLX_EXT_swap_control or GLX_MESA_swap_control!
** Failed to set swap interval. Results may be bounded above by refresh rate.
[texture] texture-filter=nearest: FPS: 325 FrameTime: 3.077 ms
** GLX does not support GLX_EXT_swap_control or GLX_MESA_swap_control!
** Failed to set swap interval. Results may be bounded above by refresh rate.
[texture] texture-filter=linear: FPS: 246 FrameTime: 4.065 ms
** GLX does not support GLX_EXT_swap_control or GLX_MESA_swap_control!
** Failed to set swap interval. Results may be bounded above by refresh rate.
[texture] texture-filter=mipmap: FPS: 191 FrameTime: 5.236 ms
** GLX does not support GLX_EXT_swap_control or GLX_MESA_swap_control!
** Failed to set swap interval. Results may be bounded above by refresh rate.
[shading] shading=gouraud: FPS: 85 FrameTime: 11.765 ms
** GLX does not support GLX_EXT_swap_control or GLX_MESA_swap_control!
** Failed to set swap interval. Results may be bounded above by refresh rate.
[shading] shading=blinn-phong-inf: FPS: 75 FrameTime: 13.333 ms
** GLX does not support GLX_EXT_swap_control or GLX_MESA_swap_control!
** Failed to set swap interval. Results may be bounded above by refresh rate.
[shading] shading=phong: FPS: 62 FrameTime: 16.129 ms
** GLX does not support GLX_EXT_swap_control or GLX_MESA_swap_control!
** Failed to set swap interval. Results may be bounded above by refresh rate.
[shading] shading=cel: FPS: 69 FrameTime: 14.493 ms
** GLX does not support GLX_EXT_swap_control or GLX_MESA_swap_control!
** Failed to set swap interval. Results may be bounded above by refresh rate.
[bump] bump-render=high-poly: FPS: 40 FrameTime: 25.000 ms
** GLX does not support GLX_EXT_swap_control or GLX_MESA_swap_control!
** Failed to set swap interval. Results may be bounded above by refresh rate.
[bump] bump-render=normals: FPS: 278 FrameTime: 3.597 ms
** GLX does not support GLX_EXT_swap_control or GLX_MESA_swap_control!
** Failed to set swap interval. Results may be bounded above by refresh rate.
[bump] bump-render=height: FPS: 291 FrameTime: 3.436 ms
** GLX does not support GLX_EXT_swap_control or GLX_MESA_swap_control!
** Failed to set swap interval. Results may be bounded above by refresh rate.
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 114 FrameTime: 8.772 ms
** GLX does not support GLX_EXT_swap_control or GLX_MESA_swap_control!
** Failed to set swap interval. Results may be bounded above by refresh rate.
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 99 FrameTime: 10.101 ms
** GLX does not support GLX_EXT_swap_control or GLX_MESA_swap_control!
** Failed to set swap interval. Results may be bounded above by refresh rate.
[pulsar] light=false:quads=5:texture=false: FPS: 213 FrameTime: 4.695 ms
** GLX does not support GLX_EXT_swap_control or GLX_MESA_swap_control!
** Failed to set swap interval. Results may be bounded above by refresh rate.
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 25 FrameTime: 40.000 ms
** GLX does not support GLX_EXT_swap_control or GLX_MESA_swap_control!
** Failed to set swap interval. Results may be bounded above by refresh rate.
[desktop] effect=shadow:windows=4: FPS: 65 FrameTime: 15.385 ms
** GLX does not support GLX_EXT_swap_control or GLX_MESA_swap_control!
** Failed to set swap interval. Results may be bounded above by refresh rate.
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 65 FrameTime: 15.385 ms
** GLX does not support GLX_EXT_swap_control or GLX_MESA_swap_control!
** Failed to set swap interval. Results may be bounded above by refresh rate.
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 67 FrameTime: 14.925 ms
** GLX does not support GLX_EXT_swap_control or GLX_MESA_swap_control!
** Failed to set swap interval. Results may be bounded above by refresh rate.
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 66 FrameTime: 15.152 ms
** GLX does not support GLX_EXT_swap_control or GLX_MESA_swap_control!
** Failed to set swap interval. Results may be bounded above by refresh rate.
[ideas] speed=duration: FPS: 80 FrameTime: 12.500 ms
** GLX does not support GLX_EXT_swap_control or GLX_MESA_swap_control!
** Failed to set swap interval. Results may be bounded above by refresh rate.
[jellyfish] <default>: FPS: 57 FrameTime: 17.544 ms
** GLX does not support GLX_EXT_swap_control or GLX_MESA_swap_control!
** Failed to set swap interval. Results may be bounded above by refresh rate.
[terrain] <default>: FPS: 3 FrameTime: 333.333 ms
** GLX does not support GLX_EXT_swap_control or GLX_MESA_swap_control!
** Failed to set swap interval. Results may be bounded above by refresh rate.
[shadow] <default>: FPS: 54 FrameTime: 18.519 ms
** GLX does not support GLX_EXT_swap_control or GLX_MESA_swap_control!
** Failed to set swap interval. Results may be bounded above by refresh rate.
[refract] <default>: FPS: 9 FrameTime: 111.111 ms
** GLX does not support GLX_EXT_swap_control or GLX_MESA_swap_control!
** Failed to set swap interval. Results may be bounded above by refresh rate.
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 139 FrameTime: 7.194 ms
** GLX does not support GLX_EXT_swap_control or GLX_MESA_swap_control!
** Failed to set swap interval. Results may be bounded above by refresh rate.
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 137 FrameTime: 7.299 ms
** GLX does not support GLX_EXT_swap_control or GLX_MESA_swap_control!
** Failed to set swap interval. Results may be bounded above by refresh rate.
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 140 FrameTime: 7.143 ms
** GLX does not support GLX_EXT_swap_control or GLX_MESA_swap_control!
** Failed to set swap interval. Results may be bounded above by refresh rate.
[function] fragment-complexity=low:fragment-steps=5: FPS: 98 FrameTime: 10.204 ms
** GLX does not support GLX_EXT_swap_control or GLX_MESA_swap_control!
** Failed to set swap interval. Results may be bounded above by refresh rate.
[function] fragment-complexity=medium:fragment-steps=5: FPS: 101 FrameTime: 9.901 ms
** GLX does not support GLX_EXT_swap_control or GLX_MESA_swap_control!
** Failed to set swap interval. Results may be bounded above by refresh rate.
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 129 FrameTime: 7.752 ms
** GLX does not support GLX_EXT_swap_control or GLX_MESA_swap_control!
** Failed to set swap interval. Results may be bounded above by refresh rate.
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 135 FrameTime: 7.407 ms
** GLX does not support GLX_EXT_swap_control or GLX_MESA_swap_control!
** Failed to set swap interval. Results may be bounded above by refresh rate.
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 128 FrameTime: 7.812 ms
=======================================================
                                  glmark2 Score: 115
=======================================================
orangepi@orangepi5:~$

glmark2の方だとうまく動いてないようだ。

次に、ChromiumブラウザでWebGL Aquariumを開いてみると「fps 3」という数字。めっちゃカクカクしている。

cnxsoftwareのRK3588関連記事を探してみると「Rock 5B RK3588 SBC preview – What works, what doesn’t in Debian 11」に「GPU 3D acceleration is not enabled in Debian 11」という話がある。

上の方にあるglxinfo結果のように「Device: llvmpipe (LLVM 13.0.1, 128 bits) (0xffffffff)」と「llvmpipe 」が含まれている場合はソフトウェアレンダリングである、とのこと。

「dmesg|grep -i mali」を実行して起動時にGPUドライバmaliが読み込まれているかを確認してみると、エラーっぽい感じの出力となっている。

orangepi@orangepi5:~$ dmesg|grep -i mali
[    7.672628] mali fb000000.gpu: Kernel DDK version g13p0-01eac0
[    7.672650] mali fb000000.gpu: Looking up mali-supply from device tree
[    7.673153] mali fb000000.gpu: Looking up mem-supply from device tree
[    7.676448] mali fb000000.gpu: Looking up mali-supply from device tree
[    7.676724] mali fb000000.gpu: Looking up mem-supply from device tree
[    7.676911] mali fb000000.gpu: Looking up mali-supply from device tree
[    7.677340] mali fb000000.gpu: leakage=12
[    7.677395] mali fb000000.gpu: Looking up mali-supply from device tree
[    7.677419] debugfs: Directory 'fb000000.gpu-mali' with parent 'vdd_gpu_s0' already present!
[    7.679307] mali fb000000.gpu: pvtm=869
[    7.679356] mali fb000000.gpu: pvtm-volt-sel=3
[    7.680674] mali fb000000.gpu: avs=0
[    7.682511] W : [File] : drivers/gpu/arm/bifrost/platform/rk/mali_kbase_config_rk.c; [Line] : 136; [Func] : kbase_platform_rk_init(); power-off-delay-ms not available.
[    7.689235] mali fb000000.gpu: GPU hardware issue table may need updating:
[    7.689246] mali fb000000.gpu: GPU identified as 0x7 arch 10.8.6 r0p0 status 0
[    7.689340] mali fb000000.gpu: No priority control manager is configured
[    7.689348] mali fb000000.gpu: No memory group manager is configured
[    7.689378] mali fb000000.gpu: Protected memory allocator not available
[    7.689818] mali fb000000.gpu: Capping CSF_FIRMWARE_TIMEOUT to CSF_FIRMWARE_PING_TIMEOUT
[    7.690655] mali fb000000.gpu: Couldn't find power_model DT node matching 'arm,mali-simple-power-model'
[    7.690666] mali fb000000.gpu: Error -22, no DT entry: mali-simple-power-model.static-coefficient = 1*[0]
[    7.690992] mali fb000000.gpu: Error -22, no DT entry: mali-simple-power-model.dynamic-coefficient = 1*[0]
[    7.691272] mali fb000000.gpu: Error -22, no DT entry: mali-simple-power-model.ts = 4*[0]
[    7.691552] mali fb000000.gpu: Error -22, no DT entry: mali-simple-power-model.thermal-zone = ''
[    7.695409] mali fb000000.gpu: Using configured power model mali-lodx-power-model, and fallback mali-simple-power-model
[    7.695604] mali fb000000.gpu: l=10000 h=85000 hyst=5000 l_limit=0 h_limit=800000000 h_table=0
[    7.696563] mali fb000000.gpu: Probed as mali0
[    7.782056] I : [File] : drivers/gpu/arm/mali400/mali/linux/mali_kernel_linux.c; [Line] : 405; [Func] : mali_module_init(); svn_rev_string_from_arm of this mali_ko is '', rk_ko_ver is '5', built at '10:16:11', on 'Dec  7 2022'.
[    7.782364] Mali:
[    7.782367] Mali device driver loaded
[   16.423617] mali fb000000.gpu: Loading Mali firmware 0x1010000
[   16.425057] mali fb000000.gpu: Mali firmware git_sha: e6cfd856a9b143e1ab6657328e8b5ffc44a623f9
orangepi@orangepi5:~$

libmali-valhall-g610-g6p0-x11-gbm はインストールされている。

orangepi@orangepi5:~$ apt search libmali
Sorting... Done
Full Text Search... Done
libmali-valhall-g610-g6p0-x11-gbm/now 1.9-1 arm64 [installed,local]
  Mali GPU User-Space Binary Drivers

orangepi@orangepi5:~$

改善方法の試行

GPUに関する処理が改善できるのかを調査。

同じSoCを使うRock 5に関するフォーラムに「Best way to run GPU-accelerated applications」という記事があり、Panfrost GPU driverというものがあげられていた。

Ubuntu 22.02に対してインストールする場合の事例は「Ubuntu 20.02 & Mali Drivers」にあり、Ubutuのppaに登録されている panfork mesa to support mali g610 を利用する、というものである。

このPanfrost driverを適用するというのが、冒頭の「OrangePi5の公式xfceイメージにビデオドライバーをあてる」の内容である。

ただ、このPanfrostさん、行いに問題があるようでarmbianにこのppaを登録して欲しいというpull requestが拒否られています。( add panfork-mesa appgroup for jammy #4476 )

なんでもfork元のfreedesktop.orgでの行いに問題があってアカウントがbanされたんだとか・・・

なので、使うのはどうなのかなぁ、と思いつつとりあえず速度改善するのかどうかを確認してみることにします。

まずは「sudo add-apt-repository ppa:liujianfeng1994/panfork-mesa」を実行して、panfork mesa to support mali g610を登録します。

orangepi@orangepi5:~$ sudo add-apt-repository ppa:liujianfeng1994/panfork-mesa
Repository: 'deb https://ppa.launchpadcontent.net/liujianfeng1994/panfork-mesa/ubuntu/ jammy main'
Description:
https://gitlab.com/panfork/mesa
You need to download mali firmware from https://github.com/JeffyCN/rockchip_mirrors/raw/libmali/firmware/g610/mali_csffw.bin and copy it to /lib/firmware/
More info: https://launchpad.net/~liujianfeng1994/+archive/ubuntu/panfork-mesa
Adding repository.
Press [ENTER] to continue or Ctrl-c to cancel.
Adding deb entry to /etc/apt/sources.list.d/liujianfeng1994-ubuntu-panfork-mesa-jammy.list
Adding disabled deb-src entry to /etc/apt/sources.list.d/liujianfeng1994-ubuntu-panfork-mesa-jammy.list
Adding key to /etc/apt/trusted.gpg.d/liujianfeng1994-ubuntu-panfork-mesa.gpg with fingerprint 0B2F0747E3BD546820A639B68065BE1FC67AABDE
Hit:1 http://repo.huaweicloud.com/ubuntu-ports jammy InRelease
Hit:2 http://repo.huaweicloud.com/ubuntu-ports jammy-security InRelease
Hit:3 https://repo.huaweicloud.com/docker-ce/linux/ubuntu jammy InRelease
Hit:4 http://repo.huaweicloud.com/ubuntu-ports jammy-updates InRelease
Get:5 https://ppa.launchpadcontent.net/liujianfeng1994/panfork-mesa/ubuntu jammy InRelease [18.1 kB]
Hit:6 http://repo.huaweicloud.com/ubuntu-ports jammy-backports InRelease
Get:7 https://ppa.launchpadcontent.net/liujianfeng1994/panfork-mesa/ubuntu jammy/main armhf Packages [4,136 B]
Get:8 https://ppa.launchpadcontent.net/liujianfeng1994/panfork-mesa/ubuntu jammy/main arm64 Packages [4,152 B]
Fetched 26.4 kB in 4s (6,080 B/s)
Reading package lists... Done
W: https://repo.huaweicloud.com/docker-ce/linux/ubuntu/dists/jammy/InRelease: Key is stored in legacy trusted.gpg keyring (/etc/apt/trusted.gpg), see the DEPRECATION section in apt-key(8) for details.
orangepi@orangepi5:~$

出力内に「You need to download mali firmware from https://github.com/JeffyCN/rockchip_mirrors/raw/libmali/firmware/g610/mali_csffw.bin and copy it to /lib/firmware/」とあるように、mali_csffw.bin を入れ替える必要があります。

orangepi@orangepi5:~$ ls -l /lib/firmware/*mali*
-rw-r--r-- 1 root root 266240 Jul 29  2020 /lib/firmware/mali_csffw.bin
orangepi@orangepi5:~$
orangepi@orangepi5:~$ sudo curl --output /lib/firmware/mali_csffw.bin https://raw.githubusercontent.com/JeffyCN/rockchip_mirrors/libmali/firmware/g610/mali_csffw.bin
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  268k  100  268k    0     0  1319k      0 --:--:-- --:--:-- --:--:-- 1326k
orangepi@orangepi5:~$ ls -l /lib/firmware/*mali*
-rw-r--r-- 1 root root 274432 Dec 27 21:08 /lib/firmware/mali_csffw.bin
orangepi@orangepi5:~$

入れ替えたあとは「sudo apt update」でレポジトリの情報を更新します。

orangepi@orangepi5:~$ sudo apt update
Hit:1 http://repo.huaweicloud.com/ubuntu-ports jammy InRelease
Hit:2 http://repo.huaweicloud.com/ubuntu-ports jammy-security InRelease
Hit:3 http://repo.huaweicloud.com/ubuntu-ports jammy-updates InRelease
Hit:4 http://repo.huaweicloud.com/ubuntu-ports jammy-backports InRelease
Hit:5 https://repo.huaweicloud.com/docker-ce/linux/ubuntu jammy InRelease
Hit:6 https://ppa.launchpadcontent.net/liujianfeng1994/panfork-mesa/ubuntu jammy InRelease
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
33 packages can be upgraded. Run 'apt list --upgradable' to see them.
W: https://repo.huaweicloud.com/docker-ce/linux/ubuntu/dists/jammy/InRelease: Key is stored in legacy trusted.gpg keyring (/etc/apt/trusted.gpg), see the DEPRECATION section in apt-key(8) for details.
orangepi@orangepi5:~$

どんなアップデートがあるのか「apt list –upgradable」を実行して確認すると、いくつかのライブラリなどが更新対象となるようだ。

orangepi@orangepi5:~$ apt list --upgradable
Listing... Done
ffmpeg/jammy-security,jammy-updates 7:4.4.2-0ubuntu0.22.04.1 arm64 [upgradable from: 7:4.4.2-0ubuntu0.22.04.1]
gstreamer1.0-tools/jammy-updates 1.20.3-0ubuntu1 arm64 [upgradable from: 1.20.3-0ubuntu1]
libavcodec-dev/jammy-security,jammy-updates 7:4.4.2-0ubuntu0.22.04.1 arm64 [upgradable from: 7:4.4.2-0ubuntu0.22.04.1]
libavcodec58/jammy-security,jammy-updates 7:4.4.2-0ubuntu0.22.04.1 arm64 [upgradable from: 7:4.4.2-0ubuntu0.22.04.1]
libavdevice-dev/jammy-security,jammy-updates 7:4.4.2-0ubuntu0.22.04.1 arm64 [upgradable from: 7:4.4.2-0ubuntu0.22.04.1]
libavdevice58/jammy-security,jammy-updates 7:4.4.2-0ubuntu0.22.04.1 arm64 [upgradable from: 7:4.4.2-0ubuntu0.22.04.1]
libavfilter-dev/jammy-security,jammy-updates 7:4.4.2-0ubuntu0.22.04.1 arm64 [upgradable from: 7:4.4.2-0ubuntu0.22.04.1]
libavfilter7/jammy-security,jammy-updates 7:4.4.2-0ubuntu0.22.04.1 arm64 [upgradable from: 7:4.4.2-0ubuntu0.22.04.1]
libavformat-dev/jammy-security,jammy-updates 7:4.4.2-0ubuntu0.22.04.1 arm64 [upgradable from: 7:4.4.2-0ubuntu0.22.04.1]
libavformat58/jammy-security,jammy-updates 7:4.4.2-0ubuntu0.22.04.1 arm64 [upgradable from: 7:4.4.2-0ubuntu0.22.04.1]
libavutil-dev/jammy-security,jammy-updates 7:4.4.2-0ubuntu0.22.04.1 arm64 [upgradable from: 7:4.4.2-0ubuntu0.22.04.1]
libavutil56/jammy-security,jammy-updates 7:4.4.2-0ubuntu0.22.04.1 arm64 [upgradable from: 7:4.4.2-0ubuntu0.22.04.1]
libdvbv5-0/jammy 1.22.1-2build1 arm64 [upgradable from: 1.22.1-2build1]
libegl-mesa0/jammy 23.0~panfork~csf~git221210.120202c6757~j arm64 [upgradable from: 22.0.5-0ubuntu0.1]
libgbm-dev/jammy 23.0~panfork~csf~git221210.120202c6757~j arm64 [upgradable from: 22.0.5-0ubuntu0.1]
libgbm1/jammy 23.0~panfork~csf~git221210.120202c6757~j arm64 [upgradable from: 22.0.5-0ubuntu0.1]
libgl1-mesa-dri/jammy 23.0~panfork~csf~git221210.120202c6757~j arm64 [upgradable from: 22.0.5-0ubuntu0.1]
libglapi-mesa/jammy 23.0~panfork~csf~git221210.120202c6757~j arm64 [upgradable from: 22.0.5-0ubuntu0.1]
libglx-mesa0/jammy 23.0~panfork~csf~git221210.120202c6757~j arm64 [upgradable from: 22.0.5-0ubuntu0.1]
libgstreamer1.0-0/jammy-updates 1.20.3-0ubuntu1 arm64 [upgradable from: 1.20.3-0ubuntu1]
libmpv1/jammy 0.34.1-1ubuntu3 arm64 [upgradable from: 0.34.1-1ubuntu3]
libpostproc55/jammy-security,jammy-updates 7:4.4.2-0ubuntu0.22.04.1 arm64 [upgradable from: 7:4.4.2-0ubuntu0.22.04.1]
libswresample-dev/jammy-security,jammy-updates 7:4.4.2-0ubuntu0.22.04.1 arm64 [upgradable from: 7:4.4.2-0ubuntu0.22.04.1]
libswresample3/jammy-security,jammy-updates 7:4.4.2-0ubuntu0.22.04.1 arm64 [upgradable from: 7:4.4.2-0ubuntu0.22.04.1]
libswscale5/jammy-security,jammy-updates 7:4.4.2-0ubuntu0.22.04.1 arm64 [upgradable from: 7:4.4.2-0ubuntu0.22.04.1]
mesa-common-dev/jammy 23.0~panfork~csf~git221210.120202c6757~j arm64 [upgradable from: 22.0.5-0ubuntu0.1]
mpv/jammy 0.34.1-1ubuntu3 arm64 [upgradable from: 0.34.1-1ubuntu3]
v4l-utils/jammy 1.22.1-2build1 arm64 [upgradable from: 1.22.1-2build1]
wiringpi/jammy 2.50-0ubuntu2 arm64 [upgradable from: 2.46]
xserver-common/jammy-security,jammy-security,jammy-updates,jammy-updates 2:21.1.3-2ubuntu2.5 all [upgradable from: 2:21.1.3-2ubuntu2]
xserver-xorg-core/jammy-security,jammy-updates 2:21.1.3-2ubuntu2.5 arm64 [upgradable from: 2:21.1.3-2ubuntu2]
xserver-xorg-dev/jammy-security,jammy-updates 2:21.1.3-2ubuntu2.5 arm64 [upgradable from: 2:21.1.3-2ubuntu2]
xserver-xorg-legacy/jammy-security,jammy-updates 2:21.1.3-2ubuntu2.5 arm64 [upgradable from: 2:21.1.3-2ubuntu2]
orangepi@orangepi5:~$

で「sudo apt upgrade -y」を実行してアップデートを適用して、再起動します。

適用後の状況

ChromiumブラウザでWebGL Aquariumが「fps:60」で動作するようになりました

これはと思って他をいろいろチェック・・・

orangepi@orangepi5:~$ glxinfo -B
name of display: :0
display: :0  screen: 0
direct rendering: Yes
Extended renderer info (GLX_MESA_query_renderer):
    Vendor: Panfrost (0xffffffff)
    Device: Mali-G610 (Panfrost) (0xffffffff)
    Version: 23.0.0
    Accelerated: yes
    Video memory: 7689MB
    Unified memory: yes
    Preferred profile: compat (0x2)
    Max core profile version: 0.0
    Max compat profile version: 3.0
    Max GLES1 profile version: 1.1
    Max GLES[23] profile version: 3.1
OpenGL vendor string: Panfrost
OpenGL renderer string: Mali-G610 (Panfrost)
OpenGL version string: 3.0 Mesa 23.0.0-devel
OpenGL shading language version string: 1.30
OpenGL context flags: (none)

OpenGL ES profile version string: OpenGL ES 3.1 Mesa 23.0.0-devel
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.10

orangepi@orangepi5:~$

glxinfoの結果でllvmpipe がなくなり、「OpenGL renderer string: Mali-G610 (Panfrost)」となっている。

orangepi@orangepi5:~$ inxi -Fc0
System:
  Host: orangepi5 Kernel: 5.10.110-rockchip-rk3588 aarch64 bits: 64
    Desktop: Xfce 4.16.0 Distro: Ubuntu 22.04.1 LTS (Jammy Jellyfish)
Machine:
  Type: ARM System: Orange Pi 5 details: N/A
CPU:
  Info: 3x 4-core model: N/A variant-1: cortex-a55 variant-2: cortex-a76
    bits: 64 type: MCP AMP cache: L2: 3x 512 KiB (1.5 MiB)
  Speed (MHz): avg: 408 min/max: 408/1800:2400 cores: 1: 408 2: 408 3: 408
    4: 408 5: 408 6: 408 7: 408 8: 408
Graphics:
  Device-1: display-subsystem driver: rockchip_drm v: N/A
  Device-2: mali-bifrost driver: mali v: N/A
  Device-3: rk3588-dw-hdmi driver: dwhdmi_rockchip v: N/A
  Display: server: X.Org v: 1.21.1.3 driver: X: loaded: modesetting
    gpu: rockchip_drm,mali,dwhdmi_rockchip resolution: 1920x1080~60Hz
  OpenGL: renderer: Mali-G610 (Panfrost) v: 3.0 Mesa 23.0.0-devel
Audio:
  Device-1: hdmi driver: rk_hdmi_sound
  Device-2: rk3588-dw-hdmi driver: dwhdmi_rockchip
  Device-3: hdmi driver: rk_hdmi_sound
  Sound Server-1: ALSA v: k5.10.110-rockchip-rk3588 running: yes
  Sound Server-2: PulseAudio v: 15.99.1 running: yes
Network:
  Device-1: rk3588-gmac driver: rk_gmac_dwmac
  IF: eth0 state: up speed: 1000 Mbps duplex: full mac: 7e:2c:10:9c:32:61
Drives:
  Local Storage: total: 29.9 GiB used: 5 GiB (16.7%)
  ID-1: /dev/mmcblk1 model: 5cMJR size: 29.9 GiB
Partition:
  ID-1: / size: 29.14 GiB used: 4.9 GiB (16.8%) fs: ext4 dev: /dev/mmcblk1p2
  ID-2: /boot size: 255.7 MiB used: 94.2 MiB (36.8%) fs: vfat
    dev: /dev/mmcblk1p1
  ID-3: /var/log size: 187.3 MiB used: 4.5 MiB (2.4%) fs: ext4
    dev: /dev/zram1
Swap:
  ID-1: swap-1 type: zram size: 3.75 GiB used: 0 KiB (0.0%) dev: /dev/zram0
Sensors:
  System Temperatures: cpu: 45.3 C mobo: N/A
  Fan Speeds (RPM): N/A
Info:
  Processes: 263 Uptime: 1m Memory: 7.51 GiB used: 706.6 MiB (9.2%)
  Shell: Bash inxi: 3.3.13
orangepi@orangepi5:~$
orangepi@orangepi5:~$ eglinfo
EGL client extensions string:
    EGL_EXT_client_extensions EGL_EXT_platform_base
    EGL_KHR_client_get_all_proc_addresses EGL_KHR_platform_x11
    EGL_EXT_platform_x11 EGL_KHR_platform_gbm

GBM platform:
arm_release_ver of this libmali is 'g6p0-01eac0', rk_so_ver is '5'.
eglinfo: eglInitialize failed

X11 platform:
EGL API version: 1.4
EGL vendor string: ARM
EGL version string: 1.4 Valhall-"g6p0-01eac0"
EGL client APIs: OpenGL_ES
EGL extensions string:
    EGL_NV_context_priority_realtime EGL_KHR_image_pixmap
    EGL_KHR_partial_update EGL_EXT_image_dma_buf_import
    EGL_KHR_config_attribs EGL_KHR_image EGL_KHR_image_base
    EGL_KHR_fence_sync EGL_KHR_wait_sync EGL_KHR_gl_colorspace
    EGL_KHR_get_all_proc_addresses EGL_IMG_context_priority
    EGL_KHR_no_config_context EGL_EXT_image_dma_buf_import
    EGL_EXT_image_dma_buf_import_modifiers EGL_EXT_yuv_surface
    EGL_EXT_pixel_format_float EGL_ARM_pixmap_multisample_discard
    EGL_KHR_gl_texture_2D_image EGL_KHR_gl_renderbuffer_image
    EGL_KHR_create_context EGL_KHR_surfaceless_context
    EGL_KHR_gl_texture_cubemap_image EGL_EXT_image_gl_colorspace
    EGL_EXT_create_context_robustness
Configurations:
     bf lv colorbuffer dp st  ms    vis   cav bi  renderable  supported
  id sz  l  r  g  b  a th cl ns b    id   eat nd gl es es2 vg surfaces
---------------------------------------------------------------------
0x01 32  0  8  8  8  8  0  0  0 0 0x67TC      a     y  y     win,pb,pix
0x02 32  0  8  8  8  8 24  0  0 0 0x67TC      a     y  y     win,pb,pix
0x03 32  0  8  8  8  8 24  8  0 0 0x67TC      a     y  y     win,pb,pix
0x04 32  0  8  8  8  8 24  8  4 1 0x67TC      a     y  y     win,pb,pix
0x05 16  0  5  6  5  0  0  0  0 0 0x00--      y     y  y     pb,pix
0x06 16  0  5  6  5  0 24  0  0 0 0x00--      y     y  y     pb,pix
0x07 16  0  5  6  5  0 24  8  0 0 0x00--      y     y  y     pb,pix
0x08 16  0  5  6  5  0 24  8  4 1 0x00--      y     y  y     pb,pix
0x09 24  0  8  8  8  0  0  0  0 0 0x21TC      y     y  y     win,pb,pix
0x0a 24  0  8  8  8  0 24  8  0 0 0x21TC      y     y  y     win,pb,pix
0x0b 24  0  8  8  8  0  0  0  4 1 0x21TC      y     y  y     win,pb,pix
0x0c 24  0  8  8  8  0 24  8  4 1 0x21TC      y     y  y     win,pb,pix
0x0d 16  0  5  5  5  1 24  8  0 0 0x00--      a     y  y     pb,pix
0x0e 16  0  5  5  5  1 24  8  4 1 0x00--      a     y  y     pb,pix
0x0f 16  0  4  4  4  4 24  8  0 0 0x00--      a     y  y     pb,pix
0x10 16  0  4  4  4  4 24  8  4 1 0x00--      a     y  y     pb,pix
0x11 32  0  8  8  8  8 24  8  8 1 0x67TC      a     y  y     win,pb,pix
0x12 16  0  5  6  5  0 24  8  8 1 0x00--      y     y  y     pb,pix
0x13 24  0  8  8  8  0 24  8  8 1 0x21TC      y     y  y     win,pb,pix
0x14 32  0  8  8  8  8 24  8 16 1 0x67TC      a     y  y     win,pb,pix
0x15 16  0  5  6  5  0 24  8 16 1 0x00--      y     y  y     pb,pix
0x16 24  0  8  8  8  0 24  8 16 1 0x21TC      y     y  y     win,pb,pix
0x17 24  0  8  8  8  0  0  0  0 0 0x21TC            y  y     win,pb,pix
0x18 64  0 16 16 16 16 24  8  0 0 0x00--            y  y     pb
0x19 32  0 10 10 10  2 24  8  0 0 0x00--      a     y  y     pb,pix
0x1a 24  0  8  8  8  0  0  0  0 0 0x21TC      y     y  y     win,pb,pix

orangepi@orangepi5:~$

で・・・「glmark2-es2」を実行してベンチマークをとってみる(cnxの記事だと glmark2-es2-wayland を実行しているが、wayland環境ではないので、 glmark2-es2を実行する)

orangepi@orangepi5:~$ glmark2-es2
arm_release_ver of this libmali is 'g6p0-01eac0', rk_so_ver is '5'.
arm_release_ver of this libmali is 'g6p0-01eac0', rk_so_ver is '5'.
=======================================================
    glmark2 2021.02
=======================================================
    OpenGL Information
    GL_VENDOR:     ARM
    GL_RENDERER:   Mali-LODX
    GL_VERSION:    OpenGL ES 3.2 v1.g6p0-01eac0.efb75e2978d783a80fe78be1bfb0efc1
=======================================================
[build] use-vbo=false: FPS: 718 FrameTime: 1.393 ms
[build] use-vbo=true: FPS: 850 FrameTime: 1.176 ms
[texture] texture-filter=nearest: FPS: 977 FrameTime: 1.024 ms
[texture] texture-filter=linear: FPS: 820 FrameTime: 1.220 ms
[texture] texture-filter=mipmap: FPS: 833 FrameTime: 1.200 ms
[shading] shading=gouraud: FPS: 804 FrameTime: 1.244 ms
[shading] shading=blinn-phong-inf: FPS: 789 FrameTime: 1.267 ms
[shading] shading=phong: FPS: 799 FrameTime: 1.252 ms
[shading] shading=cel: FPS: 798 FrameTime: 1.253 ms
[bump] bump-render=high-poly: FPS: 607 FrameTime: 1.647 ms
[bump] bump-render=normals: FPS: 897 FrameTime: 1.115 ms
[bump] bump-render=height: FPS: 898 FrameTime: 1.114 ms
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 945 FrameTime: 1.058 ms
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 716 FrameTime: 1.397 ms
[pulsar] light=false:quads=5:texture=false: FPS: 958 FrameTime: 1.044 ms
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 479 FrameTime: 2.088 ms
[desktop] effect=shadow:windows=4: FPS: 702 FrameTime: 1.425 ms
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 195 FrameTime: 5.128 ms
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 193 FrameTime: 5.181 ms
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 348 FrameTime: 2.874 ms
[ideas] speed=duration: FPS: 475 FrameTime: 2.105 ms
[jellyfish] <default>: FPS: 723 FrameTime: 1.383 ms
[terrain] <default>: FPS: 184 FrameTime: 5.435 ms
[shadow] <default>: FPS: 716 FrameTime: 1.397 ms
[refract] <default>: FPS: 292 FrameTime: 3.425 ms
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 880 FrameTime: 1.136 ms
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 810 FrameTime: 1.235 ms
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 804 FrameTime: 1.244 ms
[function] fragment-complexity=low:fragment-steps=5: FPS: 862 FrameTime: 1.160 ms
[function] fragment-complexity=medium:fragment-steps=5: FPS: 832 FrameTime: 1.202 ms
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 800 FrameTime: 1.250 ms
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 749 FrameTime: 1.335 ms
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 817 FrameTime: 1.224 ms
=======================================================
                                  glmark2 Score: 705
=======================================================
orangepi@orangepi5:~$

glmark2-esの標準時の「glmark2 Score: 720」から下がってしまったという・・・

そして、glmark2

orangepi@orangepi5:~$ glmark2
=======================================================
    glmark2 2021.02
=======================================================
    OpenGL Information
    GL_VENDOR:     Panfrost
    GL_RENDERER:   Mali-G610 (Panfrost)
    GL_VERSION:    3.0 Mesa 23.0.0-devel
=======================================================
[build] use-vbo=false:Queue group error: status 0x24c00488 sideband 0x140947fbf
syncobj 0x5598b328f0 wait timeout
CSI 0 CS_EXTRACT (9664) != 9856, CS_ACTIVE (0)
fences:
 slot 3: seqnum 51
 slot 2: seqnum 51
syncobj 0x5598b328f0 wait timeout
CSI 1 CS_EXTRACT (12864) != 13120, CS_ACTIVE (0)
fences:
 slot 3: seqnum 51
 slot 2: seqnum 51
MESA: error: Context reset
bound csi 0 again
bound csi 1 again
Queue group error: status 0x24c00488 sideband 0x124b794ff
syncobj 0x5598b328f0 wait timeout
CSI 0 CS_EXTRACT (13120) != 13312, CS_ACTIVE (0)
fences:
 slot 3: seqnum 69
 slot 2: seqnum 69
syncobj 0x5598b328f0 wait timeout
CSI 1 CS_EXTRACT (17472) != 17728, CS_ACTIVE (0)
fences:
 slot 3: seqnum 69
 slot 2: seqnum 69
MESA: error: Context reset
bound csi 0 again
bound csi 1 again
 FPS: 156 FrameTime: 6.410 ms
[build] use-vbo=true: FPS: 492 FrameTime: 2.033 ms
[texture] texture-filter=nearest: FPS: 451 FrameTime: 2.217 ms
[texture] texture-filter=linear: FPS: 458 FrameTime: 2.183 ms
[texture] texture-filter=mipmap: FPS: 463 FrameTime: 2.160 ms
[shading] shading=gouraud: FPS: 444 FrameTime: 2.252 ms
[shading] shading=blinn-phong-inf: FPS: 237 FrameTime: 4.219 ms
[shading] shading=phong: FPS: 431 FrameTime: 2.320 ms
[shading] shading=cel: FPS: 454 FrameTime: 2.203 ms
[bump] bump-render=high-poly: FPS: 572 FrameTime: 1.748 ms
[bump] bump-render=normals: FPS: 658 FrameTime: 1.520 ms
[bump] bump-render=height: FPS: 652 FrameTime: 1.534 ms
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 659 FrameTime: 1.517 ms
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 538 FrameTime: 1.859 ms
[pulsar] light=false:quads=5:texture=false: FPS: 569 FrameTime: 1.757 ms
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 196 FrameTime: 5.102 ms
[desktop] effect=shadow:windows=4: FPS: 471 FrameTime: 2.123 ms
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 303 FrameTime: 3.300 ms
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 291 FrameTime: 3.436 ms
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 313 FrameTime: 3.195 ms
[ideas] speed=duration: FPS: 243 FrameTime: 4.115 ms
[jellyfish] <default>: FPS: 476 FrameTime: 2.101 ms
[terrain] <default>: FPS: 57 FrameTime: 17.544 ms
[shadow] <default>: FPS: 347 FrameTime: 2.882 ms
[refract] <default>: FPS: 275 FrameTime: 3.636 ms
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 599 FrameTime: 1.669 ms
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 391 FrameTime: 2.558 ms
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 382 FrameTime: 2.618 ms
[function] fragment-complexity=low:fragment-steps=5: FPS: 390 FrameTime: 2.564 ms
[function] fragment-complexity=medium:fragment-steps=5: FPS: 376 FrameTime: 2.660 ms
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 384 FrameTime: 2.604 ms
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 361 FrameTime: 2.770 ms
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 293 FrameTime: 3.413 ms
=======================================================
                                  glmark2 Score: 405
=======================================================
orangepi@orangepi5:~$

スコアは標準の115から405へと躍進していますが、実際に表示された画面は、馬が変な状態でフリーズしたまま、GUIが全部とまりましたので、Panrost GPUドライバ自体の動きが非常に怪しいようです。

というわけで、ブラウザ表示の高速化であれば大丈夫そうですが、ちゃんとGPUを使っていこうとすると、問題が出たりしそうです。

Orange Pi 5でデータディスクとしてならM.2 SATAも使える

Orange Pi 5で、M.2 SATAを利用する方法がある、という情報をいただきました。

(2023/01/05追記: M.2 NVMe SSDでLinuxを起動する記事はこちら→Orange Pi 5 が届いた)
(2023/01/08追記: M.2 SATA SSDからLinux/Androidが起動できるようになりました→Orange Pi 5でAndroid/Linux共にM.2 SATA SSDから起動できるようになった)

Orange Pi純正のUbuntuに入っているorangepi-configに設定がある、ということ。

「sudo orangepi-config」で起動して、[System]-[Hardware]を開くと、「ssd-sata」というモジュールがあります。

これにチェックを入れて保存し、再起動するとM.2 SATAを認識するようになります。

デバイスは/dev/sdaとして認識します。

ただし、現状、microSDからUbuntuを起動し、データディスクとしてM.2 SATAを起動できる、という状態です。

M.2 SATA を起動ディスクとして使うことはできませんでした。

Orange Pi 5 が届いた

2022年11月12日に発注し2022年12月5日に発送連絡があった Orange PI 5が12月19日に届いた。

Orange Pi のいつもの箱に入って届いた

中身もいつものごとく

ラズパイ2BとOrange Pi 5を並べて見る

裏面にM.2 コネクタがありますが、止めるためのネジが付属してないのでどうにか調達する必要があります。

私の場合はたまたま別件で買ったM.2 SSDにネジが添付されていたのでそれを流用しました。

さて、ここからは実際に使う為の資料について・・・

資料について

公式のマニュアルはOrange Pi 5 Downloadページ にあるUser Manualリンク にあるOrangePi_5_RK3588S_User Manual_v0.2.pdf となる。(2022/12/08版)

電源について

Orange Pi 5の注意点として電源はType-Cコネクタ形状だけれども、USB PD非対応で、5V4Aのみを受け付けるだけの単機能コネクタである、ということ。

このため、ノートパソコンなど用のType-C PD電源ををつなげても動作しません。

私の場合、秋月でラズパイ4用として売ってる「スイッチングACアダプター(USB ACアダプター) Type-Cオス 5.1V3.8A 」を買って使っています。

まお、マニュアルの上記記述にあるように、USB Type-Cとして使えるコネクタの方は電源供給には使えません。

裏面にあるM.2 コネクタには2242サイズのNVMeストレージを取り付けることができますが、固定する為のネジが添付されていません。

Orange Pi 5の基盤自体を固定する為の四隅の穴は3.0mmですが、M.2用の2230/2242用の固定穴は3.5mmとのこと。

また、GPIO端子から電源を供給することは可能ですが、推奨されていません。

GPIO端子に逆接続防止措置はないので、誤って逆に接続してしまうと基板が死ぬので注意してください。

OS書き込みについて

Linuxの場合

microSDの起動ディスクをつくる場合、Linuxを書き込む場合はddやrufus,etcher,win32diskimagerで書き込みます。

NVMe SSD起動にしたい場合は、一度microSDで起動させた後、NVMe SSDへのインストール処理を行う形となります。

使用できるNVMe SSDは、2230サイズもしくは2242サイズのものです。

NVMe SSD用に確保されている帯域は PCIe2.0x1 となっており、理論上は500MB/sまでとなります。PCIe3.0やPCIe4.0のSSDを使用しても、PCIe2.0x1で止まります。

NVMe SSDへのインストールは、Orange Pi公式配布のDebian/Ubuntuの場合「sudo nand-sata-install」を実行することでSPI Flashへブートローダを書き込み、NVMe SSDから起動できるような設定を行った上で、Linux用ディスクイメージファイルをddコマンドで/dev/nvme0n1に書き込みを行います。

書き込み後は、Linuxをshutdownし、microSDを抜いて、NVMe SSDのみとして起動します。

起動後、Orange Pi公式配布のDebian/Ubuntuの場合「sudo fix_mmc_ssd.sh」を実行し、ディスクのパーテーション調整を行います。(後述しますが、この手順は不要でした)

なお、初期ユーザは「root」パスワード「orangepi」と、ユーザ「orangepi」パスワード「orangepi」の2つがあります。

また、自動ログインの有効/無効が別途用意されているコマンドで設定できます。

詳細はUser Manualにて。

Androidの場合

Rockchip用のAndroidを起動するためのmicroSDは専用の書き込みソフトSDDiskTool(Windows)を使用する必要があります。

また、NVMe SSDからAndroidを起動したい場合は、Windows+専用ドライバ/書き込みソフト(RKDevTool)を使うことで、microSDを経由せずにType-Cケーブル経由で直接書き込むことが可能です。

ネットワーク設定について

Orange Pi公式が配布しているUbuntu/Debianイメージではネットワーク接続を /etc/network/interfaces ファイルの編集ではなくNetwork Manager経由で行う、ということになっています。

nmcliやnmtuiコマンドで設定します。


実際にセットアップしてみた

M.2 2242サイズのNVMe SSDを取り付けて…

Orangepi5_1.0.6_ubuntu_jammy_desktop_xfce_linux5.10.110.img をmicroSDに書き込んで初回起動すると、X-Windowでログインした状態となる

この際のユーザは「orangepi」

コマンドで「ip a s」などを実行してIPアドレスを確認して、sshでログイン

その際は「orangepi」でパスワードも「orangepi」

  ___  ____  _   ____
 / _ \|  _ \(_) | ___|
| | | | |_) | | |___ \
| |_| |  __/| |  ___) |
 \___/|_|   |_| |____/

Welcome to Orange Pi 1.0.6 Jammy with Linux 5.10.110-rockchip-rk3588

System load:   2%               Up time:       7 min    Local users:   3
Memory usage:  8% of 7.51G      IP:            192.168.1.141
CPU temp:      39°C            Usage of /:    16% of 29G

[ 2 security updates available, 2 updates total: apt upgrade ]
Last check: 2022-12-16 16:17

[ General system configuration (beta): orangepi-config ]

Last login: Fri Dec 16 16:17:44 2022
orangepi@orangepi5:~$

カスタマイズするためのスクリプト群が /usr/local/bin に用意されている

orangepi@orangepi5:~$ ls -l /usr/local/bin
total 1360
-rwxrwxr-x 1 root root    992 Dec  7 09:26 auto_login_cli.sh
-rwxrwxr-x 1 root root   9632 Dec  7 09:26 blink_all_gpio
-rwxrwxr-x 1 root root     47 Dec  7 09:26 cat_serial.sh
-rwxrwxr-x 1 root root    560 Dec  7 09:26 compile_python.sh
-rwxrwxr-x 1 root root    316 Dec  7 09:26 desktop_login.sh
-rwxrwxr-x 1 root root    140 Dec  7 09:26 disable_desktop_autologin.sh
-rwxrwxr-x 1 root root   2036 Dec  7 09:26 drm-hotplug.sh
-rwxrwxr-x 1 root root     86 Dec  7 09:26 enable_docker.sh
-rwxrwxr-x 1 root root    265 Dec  7 09:26 fix_mmc_ssd.sh
-rwxr-xr-x 1 root root    195 Dec 15 18:27 gpu_load.sh
-rwxrwxr-x 1 root root    111 Dec  7 09:26 install_bt_panel.sh
-rwxrwxr-x 1 root root    684 Dec  7 09:26 install_docker.sh
-rwxr-xr-x 1 root root    565 Dec 16 11:41 install_qt.sh
-rwxrwxr-x 1 root root   2364 Dec 16 15:36 install_ros.sh
-rwxrwxr-x 1 root root  76188 Dec  7 09:26 io
-rwxrwxr-x 1 root root  22896 Dec  7 09:26 memtester
-rwxrwxr-x 1 root root 772832 Dec  7 09:26 modetest
-rwxrwxr-x 1 root root  38856 Dec  7 09:26 multivideoplayer
-rwxrwxr-x 1 root root     78 Dec  7 09:26 reset_ssh.sh
-rwxrwxr-x 1 root root    115 Dec 12 09:41 set_device.sh
-rwxrwxr-x 1 root root    242 Dec 12 09:41 set_vnc.sh
-rwxrwxr-x 1 root root  19672 Dec  7 09:26 spidev_test
-rwxrwxr-x 1 root root 254056 Dec  7 09:26 stressapptest
-rwxrw-r-- 1 root root   1197 Dec 14 15:56 test_camera.sh
-rwxrwxr-x 1 root root    175 Dec 12 09:41 test_dec_mpv.sh
-rwxrwxr-x 1 root root    168 Dec  7 09:26 test_rknn_demo.sh
-rwxr-xr-x 1 root root    501 Dec 16 15:36 test_ros.sh
-rwxrwxr-x 1 root root    446 Dec  7 09:26 test_rtsp.sh
-rwxrwxr-x 1 root root  14736 Dec  7 09:26 tinycap
-rwxrwxr-x 1 root root  19448 Dec  7 09:26 tinymix
-rwxrwxr-x 1 root root  14440 Dec  7 09:26 tinypcminfo
-rwxrwxr-x 1 root root  19048 Dec  7 09:26 tinyplay
-rwxrwxr-x 1 root root     65 Dec  7 09:26 typec_usb2.sh
-rwxrwxr-x 1 root root    123 Dec 15 18:41 vpu_debug.sh
-rwxrwxr-x 1 root root  13816 Dec 16 16:23 watchdog_test
orangepi@orangepi5:~$ ls -l /usr/local/sbin
total 0
orangepi@orangepi5:~$

NVMe SSDにインストールするには/dev/nvme0n1に対してインストールイメージを書き込む

まずデバイス名確認。テストに使用したものなのでパーテーションが2つ作られている

orangepi@orangepi5:~$ ls -l /dev/nvme0*
crw------- 1 root root 239, 0 Dec 16 16:17 /dev/nvme0
brw-rw---- 1 root disk 259, 0 Dec 16 16:17 /dev/nvme0n1
brw-rw---- 1 root disk 259, 1 Dec 16 16:17 /dev/nvme0n1p1
brw-rw---- 1 root disk 259, 2 Dec 19 19:30 /dev/nvme0n1p2
orangepi@orangepi5:~$

確認のためM.2 SATA SSDが認識できないかを確認してみる

orangepi@orangepi5:~$ sudo fdisk -l
[sudo] password for orangepi:
Disk /dev/ram0: 4 MiB, 4194304 bytes, 8192 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes


Disk /dev/zram0: 3.75 GiB, 4031569920 bytes, 984270 sectors
Units: sectors of 1 * 4096 = 4096 bytes
Sector size (logical/physical): 4096 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes


Disk /dev/mtdblock0: 16 MiB, 16777216 bytes, 32768 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/mmcblk1: 29.9 GiB, 32105299968 bytes, 62705664 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 53AE4D8D-573C-E044-AB71-027F31F37494

Device          Start      End  Sectors  Size Type
/dev/mmcblk1p1  61440   585727   524288  256M Linux extended boot
/dev/mmcblk1p2 585728 62062591 61476864 29.3G Linux filesystem


Disk /dev/zram1: 200 MiB, 209715200 bytes, 51200 sectors
Units: sectors of 1 * 4096 = 4096 bytes
Sector size (logical/physical): 4096 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
orangepi@orangepi5:~$ ls /dev/nv*
ls: cannot access '/dev/nv*': No such file or directory
orangepi@orangepi5:~$

M.2 SATA SSDでは認識しないことを確認

(2022/12/21追記: データディスクとしてならM.2 SATAも動くことを確認しました → 詳細)

まあ、そういう仕様ですしね

さて、NVMe SSDに戻して、マニュアル記載のSPI Flash書き換えコマンドを実行

「sudo nand-sata-install」を実行して以下の画面とします。

「7 Install/Update the bootloader on SPI Flash」を選択してOKします

書き換え警告を[Yes]とします

YES選択後、数分間以下の状態で止まっていますが、正常です。

5分ぐらいすると下記の様になって終了します。

続いて、Orangepi5_1.0.6_ubuntu_jammy_desktop_xfce_linux5.10.110.img を /dev/nvme0n1 に対して書き込むため「sudo dd if=Orangepi5_1.0.6_ubuntu_jammy_desktop_xfce_linux5.10.110.img of=/dev/nvme0n1 status=progress」と実行します。

orangepi@orangepi5:~$ sudo dd if=Orangepi5_1.0.6_ubuntu_jammy_desktop_xfce_linux5.10.110.img of=/dev/nvme0n1 status=progress
6924734976 bytes (6.9 GB, 6.4 GiB) copied, 278 s, 24.9 MB/s
13533184+0 records in
13533184+0 records out
6928990208 bytes (6.9 GB, 6.5 GiB) copied, 279.176 s, 24.8 MB/s
orangepi@orangepi5:~$

現状のパーテーションを確認

orangepi@orangepi5:~$ sudo fdisk -l /dev/nvme0n1
GPT PMBR size mismatch (13533183 != 1000215215) will be corrected by write.
The backup GPT table is not on the end of the device.
Disk /dev/nvme0n1: 476.94 GiB, 512110190592 bytes, 1000215216 sectors
Disk model: NXM-512
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 53AE4D8D-573C-E044-AB71-027F31F37494

Device          Start      End  Sectors  Size Type
/dev/nvme0n1p1  61440   585727   524288  256M Linux extended boot
/dev/nvme0n1p2 585728 13533150 12947423  6.2G Linux filesystem
orangepi@orangepi5:~$

この段階では実際のSSD容量にあわせたパーテーション構成になっていないのでmismatchと表示されている。

この段階では、microSD起動を一度停止して、microSDを抜いてから再度電源を入れます

NVMe SSDから起動していることを確認します。

orangepi@orangepi5:~$ df -h
Filesystem      Size  Used Avail Use% Mounted on
tmpfs           769M  9.4M  760M   2% /run
/dev/nvme0n1p2  465G  4.6G  456G   1% /
tmpfs           3.8G     0  3.8G   0% /dev/shm
tmpfs           5.0M  4.0K  5.0M   1% /run/lock
tmpfs           3.8G   12K  3.8G   1% /tmp
/dev/nvme0n1p1  256M   95M  162M  37% /boot
/dev/zram1      188M  2.6M  171M   2% /var/log
tmpfs           769M   80K  769M   1% /run/user/1000
orangepi@orangepi5:~$

問題が起きてたパーテーション構成は起動時に自動修正されています。

orangepi@orangepi5:~$ sudo fdisk -l /dev/nvme0n1
Disk /dev/nvme0n1: 476.94 GiB, 512110190592 bytes, 1000215216 sectors
Disk model: NXM-512
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 53AE4D8D-573C-E044-AB71-027F31F37494

Device          Start       End   Sectors   Size Type
/dev/nvme0n1p1  61440    585727    524288   256M Linux extended boot
/dev/nvme0n1p2 585728 990183423 989597696 471.9G Linux filesystem
orangepi@orangepi5:~$

マニュアル記載にある「sudo fix_mmc_ssd.sh」はmicroSDも使う場合に実行するもので、NVMe SSDのみの場合は実行してみると以下のようなメッセージが出力されていました。

orangepi@orangepi5:~$ sudo fix_mmc_ssd.sh
ls: cannot access '/dev/mmcblk*': No such file or directory
Done
orangepi@orangepi5:~$

その上、NVMeから起動できなくなってしまうので必要無い限りはfix_mmc_ssd.shは実行しないように・・・

もしこの状態にしてしまった場合は、最初のNVMeへのインストール時に使ったmicroSDを入れるとシングルユーザモードで起動できます。

その状態で/etc/fstabにある/boot行を「/dev/nvme0n1p1 /boot vfat defaults 0 2」に書きかえて「mount -a」でマウント

その次に /boot/orangepiEnv.txt にあるroot=行を「rootdev=/dev/nvme0n1p2」に書き換えることで元の状態に戻ります。

あとは普通のUbuntu 22.04として利用できます。

ちょっと興味深かったのは、https://repo.huaweicloud.com/ からファイルを持ってくる初期設定になってるんだなぁ、というところ

カスタマイズ

「sudo orangepi-config」を実行すると設定ユーティリティが起動します。

まずは[System]から[Firmware]を選択してFirmwareアップデートを実行します。

再起動します。

この他、[Personal]にある[Timezone]など、いろいろ設定がありますので、必要に応じ変更します。

youtube(360p)再生中のCPU負荷

youtube(1080p)再生中のCPU負荷

Rockchip RK3588S搭載のOrange Pi 5が送料込み$84.2という格安価格でプレセール開始

2022/12/23追記

Orange Pi 5が届いたので「Linuxを動かす記事」「Androidを動かす記事」と「データディスクとしてM.2 SATA SSDを動かす記事(起動ディスクでは使えない)」を公開中です。


2022年7月に発表になったRockchip RK3588S搭載のOrange Pi 5が2022年12月1日から発売開始、ということで、プレセールが始まりました。

AliexressでRAM8GBモデルが送料込みで$84.2というなかなかに安い価格となっています。

他社動向を考えると安くても$120はするだろう、と思っていただけに、この価格は驚きの一言です。

さて、このOrange Pi 5、実は2022年7月の発表時点から構成に変化が出ています。

出典1:2022年7月15日付けのOrange Pi 5スペックページ
出典2:2022年11月11日付けのOrange Pi 5スペックページ

まずは表面の比較

7月版にあった「Wi-Fi 6 + Bluetooth」と「32GB EMMC Flash」が削除され、「16MB SPI Flash」と裏面に「M.2 NVMe 対応スロット」が追加されました。

7月版では恐らくEIAJ#2(PSPと同じやつ)だと思われる電源だったものが、Type-Cコネクタに変更・・・これはいいような悪いような・・・


続いて裏面

7月版の方だと、「CODEC(ES8388)」と「RTC」が書かれてないけど、配置が同じなのでこれについては変更無し。

7月版との大きな変更点は「M.2 PCIe2.0 (Supports 2242 NVMe SSD」と、M.2スロットが追加されたということ。

これにより、microSDの壊れやすさを気にする必要がなくなる、というのは大きな利点と言えます。

M.2 スロット搭載を$100を下回る価格で投入してきたのは予想外でした。

とりあえず為替レートがいろいろ動いているなか、1ドル151円換算のPayPal決済で発注してみました。

発注後、メッセージが飛んできて、2022年12月1日発送予定になるので、それまでの間「Extend delivery」ボタンを押してキャンセルされないような日数を追加してくれ、とのことです。

つまり、11/11時点で標準では「11 days」、つまり11/22にキャンセル処理がされる、ということになるので「Extend delivery」押して「14」ぐらいを入力して、25daysと12/1を超えるような日数にする、ということです

私の場合、ここで指定する日数が新しい日数なのか追加する日数なのかがわからなかったので、とりあえず「30」と入力してみたところ「41days」になりました。

このExtend delivyer設定を忘れるとAliexpress側の自動処理によって発注がキャンセルされてしまうので注意してください。


2022/11/15追記

16GBモデルの販売がプレセール価格$105(送料$11.31)で開始されました。

たしかに公式製品ページに「4GB/8GB/16GB/32GB(LPDDR4/4x)」って書いてあったけど、ほんとに16GBモデルが出るとは・・・

32GBモデルはいくらになるのかな?


2022/11/17追記

Orange Pi 5が要求しているType-Cコネクタで5V4Aをどうするかなーと秋月電子に行ってみたところ「スイッチングACアダプター(USB ACアダプター) Type-Cオス 5.1V3.8A(M-16293)」が950円だったので買っておきました。まだこれがOrange Pi 5で不足無く使えるかどうかはまだわかりません。

Oracle CloudでのUbuntu インスタンス上のOracle Cloud Agentのアップデート

Oracle Cloud上のUbuntuインスタンスにはOracle Cloud Agentがsnapパッケージでインストールされている。

ただ、ドキュメントにはインストール手法は解説があるが、アップデート手法について記載がない。

まずは、snapでインストールされているパッケージ一覧を出してみる

ubuntu@ubuntu:~$ snap list
Name                Version      Rev    Tracking         Publisher   Notes
core18              20211215     2289   latest/stable    canonical?  base
core20              20220114     1332   latest/stable    canonical?  base
lxd                 4.0.8        21843  4.0/stable/…     canonical?  -
oracle-cloud-agent  1.19.0-1130  31     latest/stable/…  oci.osi     classic
snapd               2.54.2       14553  latest/stable    canonical?  snapd
ubuntu@ubuntu:~$

次に「oracle-cloud-agent」について個別情報を取得

ubuntu@ubuntu:~$ snap info oracle-cloud-agent
name:      oracle-cloud-agent
summary:   Oracle Cloud Agent
publisher: Oracle Cloud Infrastructure (oci.osi)
store-url: https://snapcraft.io/oracle-cloud-agent
license:   unset
description: |
  Oracle Cloud Infrastructure agent for compute instance management and
  monitoring.
services:
  oracle-cloud-agent:                            simple, enabled, active
  oracle-cloud-agent.oracle-cloud-agent-updater: simple, enabled, active
snap-id:      ltx4XjES2e2ujitNIuO5GxPYDM6lp6ry
tracking:     latest/stable/ubuntu-20.04
refresh-date: 2022-02-15
channels:
  latest/stable:    1.22.0-2    2022-04-25 (37) 18MB classic
  latest/candidate: 1.22.0-2    2022-04-08 (37) 18MB classic
  latest/beta:      1.22.0-2    2022-04-08 (37) 18MB classic
  latest/edge:      ↑
installed:          1.19.0-1130            (31) 21MB classic
ubuntu@ubuntu:~$

installedが1.19.0-1130で、最新(latest)が1.22.0-2とアップデートが出ていることが分かる。

snapの更新は「sudo snap refresh」で行う。

ubuntu@ubuntu:~$ snap refresh
error: access denied (try with sudo)
ubuntu@ubuntu:~$ sudo snap refresh
Handling re-refresh of "core18", "core20", "lxd", "oracle-cloud-agent", "snapd" Handling re-refresh of "core18", "core20", "lxd", "oracle-cloud-agent", "snapd" Handling re-refresh of "core18", "core20", "lxd", "oracle-cloud-agent", "snapd" 2022-05-06T07:14:40Z INFO Waiting for automatic snapd restart...
oracle-cloud-agent (stable/ubuntu-20.04) 1.22.0-2 from Oracle Cloud Infrastructure (oci.osi) refreshed
snapd 2.55.3 from Canonical? refreshed
core18 20220309 from Canonical? refreshed
core20 20220329 from Canonical? refreshed
lxd (4.0/stable) 4.0.9-8e2046b from Canonical? refreshed
ubuntu@ubuntu:~$

そして、パッケージ情報を取得し、更新されたことを確認する。

ubuntu@ubuntu:~$ snap list
Name                Version        Rev    Tracking         Publisher   Notes
core18              20220309       2349   latest/stable    canonical?  base
core20              20220329       1437   latest/stable    canonical?  base
lxd                 4.0.9-8e2046b  22761  4.0/stable/…     canonical?  -
oracle-cloud-agent  1.22.0-2       37     latest/stable/…  oci.osi     classic
snapd               2.55.3         15541  latest/stable    canonical?  snapd
ubuntu@ubuntu:~$ snap info oracle-cloud-agent
name:      oracle-cloud-agent
summary:   Oracle Cloud Agent
publisher: Oracle Cloud Infrastructure (oci.osi)
store-url: https://snapcraft.io/oracle-cloud-agent
contact:   oci_osi_grp@oracle.com
license:   unset
description: |
  Oracle Cloud Infrastructure agent for compute instance management and
  monitoring.
services:
  oracle-cloud-agent:                            simple, enabled, active
  oracle-cloud-agent.oracle-cloud-agent-updater: simple, enabled, active
snap-id:      ltx4XjES2e2ujitNIuO5GxPYDM6lp6ry
tracking:     latest/stable/ubuntu-20.04
refresh-date: today at 07:14 UTC
channels:
  latest/stable:    1.22.0-2 2022-04-25 (37) 18MB classic
  latest/candidate: 1.22.0-2 2022-04-08 (37) 18MB classic
  latest/beta:      1.22.0-2 2022-04-08 (37) 18MB classic
  latest/edge:      ↑
installed:          1.22.0-2            (37) 18MB classic
ubuntu@ubuntu:~$