CHUWEI UBOXにWindows 11を入れた

先日買ったGMKtec NucBox G10 mini は、32GB メモリ2枚とM.2 NVMe SSD 1TBを増設して、ESXi 8 Free版をインストールして検証に使用している

軽く使っている分には問題なかったのだが、64GBメモリを限界まで使うようになると、スワップなども行うためか M.2 SSDがめちゃくちゃ発熱する。

上の蓋を取って冷却ファンを取り付けてみたものの不格好

そんな中、aliexpressを見てたらメモリ16GB/SSD 512GBが入っているRyzen 5 7430U搭載のCHUWI UBOX が約39000円というお値段で売っているのを発見

SO-DIMMスロット2個、M.2 NVMe SSDスロット2個と置き換えには十分なスペックなので買ってみた。

開梱

届いた・・・案外大きい、というのが第一印象

3機種比較

メモリ/SSD側を開けてみる

手で持っている蓋みたいなところがSSDのヒートシンクも兼ねていて放熱シリコンが貼り付けてある

SSDをくるむ銀袋にAirDisk APF10 PCIe 3.0×4 M.2 2280とかかれたSSDが入っている

メモリも銀でくるまれているが、こちらは貼り付けられていて外せなかった

WiFi はRTL8852BEと書かれていた

逆側はCPUが付いているので、ファンが付いている

初期状態

普通に初回ウィザードを経てログイン。コントロールパネルのショートカットが作成されていた

あと、キーボード配列は英語だった。

タスクマネージャを起動して、スペック確認

CPU Ryzen 5 7430Uを確認

メモリはPC4-25600(DDR4-3200) の16GB が1枚

ディスクはAirDiskというメーカの512GB

WiFiは、Realtek 8852BE

GPUは、メモリを512MB割り当てられていた

CPU-Z

Windows 11 Proのライセンスは「RETAIL」channelではあった

プレインストールのアプリは下記

AMD Settings は Radeon管理ソフトAdrenalin。ver 2024.0819.1807.1996 で新しくはない

Realtek PCI-E Wireless LAN WiFi 6 Driver はWiFiのドライバで、ver 3.00.045

Windows Updateを実施して、Windows 11 Pro 25H2 にアップデートした後


Windows 11 Pro再インストール実施

再インストール後のドライバ適用状態確認

ネットワークコントローラが未認識・・・

有線LAN Realtek 2.5Gb NIC 2ポートは認識しているので、WiFiが未認識、ということになる。

AMD Radeon Graphicsもあるので、GPUも認識はしていた。

ドライバ調査

とりあえずGPUは認識しているのだが、ドライババージョンが古め

Radeon管理ソフトAdrenalinも入れた方がいいのだろうと、AMDのダウンロードページへ移動して、[Browse Products]の[Processors]を確認・・・

Ryzen 5 7430Uがないのですが・・・

検索すると下記のように AMD Ryzen™ 5 7530U Drivers and Downloads – Latest Version が出てくるのだが、ダウンロードはできなかった

Drivers and Support for Processors and Graphics から amd-software-adrenalin-edition-26.1.1-minimalsetup-260119_web.exe をダウンロードしてインストール

ドライバが更新されたことを確認

続いてRealtek 8852BEについて対処する。

不明なデバイスとなっているWiFI部分については「PCI\VEN_10EC&DEV_B852&SUBSYS_B85210EC」をMicrosoft Update カタログで検索して入手する

検索すると Microsoft Update カタログ が出てくるので、cabファイルを展開して適用すればOK

RealTek8852BEのBluetooth機能については、下記のように認識してるので大丈夫だろう、と思っていたのですが、実際にBluetooth接続のゲームパットをつなげようとしたら認識できないことを確認。

デバイス名「USB\VID_0BDA&PID_B85B\00E04C000001」Microsoft Update カタログ で検索して、cabファイルをダウンロードしてドライバを適用

適用後は「Realtek Bluetooth Adapter」という認識に変わり、Bluetooth接続のゲームパットも正常に認識するようになった。

license HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform

VK7JG-NPHTM-C97JM-9MPGT-3V66T


ドラクエベンチマーク

GPUメモリ16GB割り当て時

GPUメモリ4GB割り当て時

GPU自動割り当て

CPU-Z

Nutanix CE 2.1(AOS 6.8.1)をRyzen 3700UのESXi 8上で構築したときのメモ 2026/04/03版

各仮想環境で作成した仮想マシンハードウェアのlspci上での見た目の違いを確認しようと思って、Nutanix CE環境を新規で構築した

そのときに迷ったことのメモ

入手について

公式には「Nutanix Communitiy Edition」のページから遷移することになるがめんどくさい

マニュアル「Getting Started with Community Edition

リリースノートなどは、サポート契約を要求されていて読むことは出来ない

ソフトウェアのダウンロードは「Download Community Edition」から行う

2026/04/03時点でも、2024/08/19リリースの phoenix.x86_64-fnd_5.6.1_patch-aos_6.8.1_ga.iso が最新である模様

CE 2.1はAOS 6.8.1ですが、通常版は現在 AOS 7.3.0.1 である模様

インストールについて

ESXi 8の場合、「CPU ハードウェア仮想化:ハードウェア アシストによる仮想化をゲスト OS に公開」と「UEFI Secure boot 無効化」だけでいけるかと思いきや

インストーラが途中で/dev/sdbが見つからないとして失敗

NTNX日記の「ESXi で Nested Nutanix CE を構成してみる。(CE 2.1 / AOS 6.8.1 版)」に書いてある「1つめのハード ディスクは、デフォルトで作成されるものを 32GB に変更するか、いったん削除して再作成します。」がポイントだとは思いませんでした。

ゲストOSの種類はNTNX日記だと「Red Hat Enterprise Linux 8 (64 ビット)」だったのでそれで作ったのですが、open-vm-toolsを追加したところ「その他のLinux 6.x 以降(64ビット)」だ、と言われました。

初回ログイン時のユーザ情報は「Creating and Configuring a Cluster」を参照

AHVは「root」「nutanix/4u」
CVMは「nutanix」「nutanix/4u」
Web UIは「admin」「nutanix/4u」初回ログイン時にパスワード変更が求められるが制限がきつめ

Web初回ログイン時にNEXTアカウントを要求されるが、Nutanix NEXTのMy profileで表示されるユーザ名ではなく「メールアドレス」を入力する

その他メモ

LCMの動作にアクセスできるNTPサーバは必須

初期設定ではNTPサーバとして0.pool.ntp.org と 1.pool.ntp.org が登録されている

これらにアクセスできないとLCMでのInventoryが失敗する

error alert
Lcm prechecks detected 1 issue that would cause upgrade failures.

Check 'test_ntp_server_reachability' failed: Failure reason: Cannot upgrade if the configured NTP server(s): ['0.pool.ntp.org', '1.pool.ntp.org'] are not reachable. For details read article 6401

設定してあるのに上記エラーが出ているというときに、Hypervisor側でNTP動作状況確認のコマンドを実行

[root@NTNX-4bc9a811-A ~]# chronyc -n sources -v

  .-- Source mode  '^' = server, '=' = peer, '#' = local clock.
 / .- Source state '*' = current best, '+' = combined, '-' = not combined,
| /             'x' = may be in error, '~' = too variable, '?' = unusable.
||                                                 .- xxxx [ yyyy ] +/- zzzz
||      Reachability register (octal) -.           |  xxxx = adjusted offset,
||      Log2(Polling interval) --.      |          |  yyyy = measured offset,
||                                \     |          |  zzzz = estimated error.
||                                 |    |           \
MS Name/IP address         Stratum Poll Reach LastRx Last sample
===============================================================================
^? 163.5.56.11                   0   9     0     -     +0ns[   +0ns] +/-    0ns
^? 109.61.109.140                0   9     0     -     +0ns[   +0ns] +/-    0ns
^? 192.168.1.1                   0   8     0     -     +0ns[   +0ns] +/-    0ns
[root@NTNX-4bc9a811-A ~]#

hypervisor階層では問題無く動作している模様

CVMの方を確認すると、設定されていないように見える

nutanix@NTNX-4bc9a811-A-CVM:192.168.1.14:~$ sudo chronyc -n sources -v

  .-- Source mode  '^' = server, '=' = peer, '#' = local clock.
 / .- Source state '*' = current best, '+' = combined, '-' = not combined,
| /             'x' = may be in error, '~' = too variable, '?' = unusable.
||                                                 .- xxxx [ yyyy ] +/- zzzz
||      Reachability register (octal) -.           |  xxxx = adjusted offset,
||      Log2(Polling interval) --.      |          |  yyyy = measured offset,
||                                \     |          |  zzzz = estimated error.
||                                 |    |           \
MS Name/IP address         Stratum Poll Reach LastRx Last sample
===============================================================================
nutanix@NTNX-4bc9a811-A-CVM:192.168.1.14:~$

実際設定ファイルにもない

nutanix@NTNX-4bc9a811-A-CVM:192.168.1.14:~$ sudo cat /etc/chrony.conf
# Auto generated by ChronyConfig on Thu Jul  9 01:28:04 2026

local stratum 10
driftfile /var/lib/chrony/drift
maxdistance 16.0
makestep 1.0 3
rtcsync
allow 0.0.0.0/0
allow 127.0.0.1
allow ::/0
allow ::1
leapsectz right/UTC
cmdport 0
logdir /var/log/chrony
log measurements statistics tracking
nutanix@NTNX-4bc9a811-A-CVM:192.168.1.14:~

hypervisorの方の /etc/chrony.confを確認すると、こちらにはNTPサーバ設定はある

[root@NTNX-4bc9a811-A ~]# cat /etc/chrony.conf
# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).

# Record the rate at which the system clock gains/losses time.
driftfile /var/lib/chrony/drift

# Allow the system clock to be stepped in the first three updates
# if its offset is larger than 1 second.

# Enable kernel synchronization of the real-time clock (RTC).
rtcsync

# Enable hardware timestamping on all interfaces that support it.
#hwtimestamp *

# Increase the minimum number of selectable sources required to adjust
# the system clock.
#minsources 2

# Allow NTP client access from local network.
#allow 192.168.0.0/16

# Serve time even if not synchronized to a time source.
#local stratum 10

# Specify file containing keys for NTP authentication.
keyfile /etc/chrony.keys

# Get TAI-UTC offset and leap seconds from the system tz database.
leapsectz right/UTC

# Specify directory for log files.
logdir /var/log/chrony

# Select which information is logged.
#log measurements statistics tracking
port 0
cmdport 0
server 1.pool.ntp.org maxpoll 10 iburst
server 0.pool.ntp.org maxpoll 10 iburst
server 192.168.1.1 maxpoll 10 iburst
[root@NTNX-4bc9a811-A ~]#

ncli clusterコマンドでNTPサーバ一覧を取得すると、サーバ群は登録されていることになっている

nutanix@NTNX-4bc9a811-A-CVM:192.168.1.14:~$ ncli cluster get-ntp-servers

    NTP Servers               : 0.pool.ntp.org, 1.pool.ntp.org, 192.168.1.1
nutanix@NTNX-4bc9a811-A-CVM:192.168.1.14:~$

CVM内部からNTPサーバ群へのNTPポート123へのアクセスは成功する

nutanix@NTNX-4bc9a811-A-CVM:192.168.1.14:~$ nc -vz -u 192.168.1.1 123
Ncat: Version 7.92 ( https://nmap.org/ncat )
Ncat: Connected to 192.168.1.1:123.
Ncat: UDP packet sent successfully
Ncat: 1 bytes sent, 0 bytes received in 2.02 seconds.
nutanix@NTNX-4bc9a811-A-CVM:192.168.1.14:~$ nc -vz -u 163.5.56.11 123
Ncat: Version 7.92 ( https://nmap.org/ncat )
Ncat: Connected to 163.5.56.11:123.
Ncat: UDP packet sent successfully
Ncat: 1 bytes sent, 0 bytes received in 2.01 seconds.
nutanix@NTNX-4bc9a811-A-CVM:192.168.1.14:~$ nc -vz -u 109.61.109.140 123
Ncat: Version 7.92 ( https://nmap.org/ncat )
Ncat: Connected to 109.61.109.140:123.
Ncat: UDP packet sent successfully
Ncat: 1 bytes sent, 0 bytes received in 2.02 seconds.
nutanix@NTNX-4bc9a811-A-CVM:192.168.1.14:~$

とりあえずCVMの/etc/chrony.confを直接編集してみた

nutanix@NTNX-4bc9a811-A-CVM:192.168.1.14:~$ sudo vi /etc/chrony.conf
nutanix@NTNX-4bc9a811-A-CVM:192.168.1.14:~$ sudo cat /etc/chrony.conf
# Auto generated by ChronyConfig on Thu Jul  9 01:28:04 2026

local stratum 10
driftfile /var/lib/chrony/drift
maxdistance 16.0
makestep 1.0 3
rtcsync
allow 0.0.0.0/0
allow 127.0.0.1
allow ::/0
allow ::1
leapsectz right/UTC
cmdport 0
logdir /var/log/chrony
log measurements statistics tracking
server 192.168.1.1 maxpoll 10 iburst
nutanix@NTNX-4bc9a811-A-CVM:192.168.1.14:~$ sudo systemctl restart chronyd
nutanix@NTNX-4bc9a811-A-CVM:192.168.1.14:~$ sudo chronyc -n sources -v

  .-- Source mode  '^' = server, '=' = peer, '#' = local clock.
 / .- Source state '*' = current best, '+' = combined, '-' = not combined,
| /             'x' = may be in error, '~' = too variable, '?' = unusable.
||                                                 .- xxxx [ yyyy ] +/- zzzz
||      Reachability register (octal) -.           |  xxxx = adjusted offset,
||      Log2(Polling interval) --.      |          |  yyyy = measured offset,
||                                \     |          |  zzzz = estimated error.
||                                 |    |           \
MS Name/IP address         Stratum Poll Reach LastRx Last sample
===============================================================================
^? 192.168.1.1                   0   6     0     -     +0ns[   +0ns] +/-    0ns
nutanix@NTNX-4bc9a811-A-CVM:192.168.1.14:~$

とりあえずNTPを使えるようにした

CLIでcheck_ntpを実行

nutanix@NTNX-4bc9a811-A-CVM:192.168.1.14:~$ ncc health_checks network_checks check_ntp

####################################################
# TIMESTAMP : Thu Jul 09 01:52:10 2026 (UTC +0000) #
####################################################
Cluster Name: cvm
Cluster Id: 3772327690115644291
Cluster UUID: 00064e84-58d6-fd69-345a-000c29b67b83
Cluster Version: 6.8.1
NCC Version: 5.0.1-83db8d0f
    CVM ID(Svmid)            : 2
    CVM external IP          : 192.168.1.14
    Hypervisor IP            : 192.168.1.13
    Hypervisor version       : Nutanix 20230302.101026
    Node serial              : 61e640f9-e1fe-4ba3-a4cc-8c2384c95c9a
    Model                    : CommunityEdition
    Node Position            : A
    Block S/N                : 4bc9a811


Running : health_checks network_checks check_ntp
[==================================================] 100%
/health_checks/network_checks/check_ntp                                              [ WARN ]
---------------------------------------------------------------------------------------------+

Detailed information for check_ntp:
Node 192.168.1.14:
WARN: NTP servers configured on CVM (['192.168.1.1']) differ from those configured in the cluster (['0.pool.ntp.org', '1.pool.ntp.org', '192.168.1.1']).
WARN: The host (192.168.1.13) is not synchronizing with any NTP server. This might occur if none of the configured NTP servers are available or you are currently experiencing network instability determined by the high offset/high jitter.
Refer to KB 4519 (http://portal.nutanix.com/kb/4519) for details on check_ntp or Recheck with: ncc health_checks network_checks check_ntp --cvm_list=192.168.1.14
+-----------------------+
| State         | Count |
+-----------------------+
| Warning       | 1     |
| Total Plugins | 1     |
+-----------------------+
Plugin output written to /home/nutanix/data/logs/ncc-output-latest.log
nutanix@NTNX-4bc9a811-A-CVM:192.168.1.14:~$

NTPサーバ群の数が違うのでダメか

nutanix@NTNX-4bc9a811-A-CVM:192.168.1.14:~$ sudo vi /etc/chrony.conf
nutanix@NTNX-4bc9a811-A-CVM:192.168.1.14:~$ sudo cat /etc/chrony.conf
# Auto generated by ChronyConfig on Thu Jul  9 01:28:04 2026

local stratum 10
driftfile /var/lib/chrony/drift
maxdistance 16.0
makestep 1.0 3
rtcsync
allow 0.0.0.0/0
allow 127.0.0.1
allow ::/0
allow ::1
leapsectz right/UTC
cmdport 0
logdir /var/log/chrony
log measurements statistics tracking
server 192.168.1.1 maxpoll 10 iburst
server 1.pool.ntp.org maxpoll 10 iburst
server 0.pool.ntp.org maxpoll 10 iburst
nutanix@NTNX-4bc9a811-A-CVM:192.168.1.14:~$ sudo systemctl restart chronyd
nutanix@NTNX-4bc9a811-A-CVM:192.168.1.14:~$ sudo chronyc -n sources -v

  .-- Source mode  '^' = server, '=' = peer, '#' = local clock.
 / .- Source state '*' = current best, '+' = combined, '-' = not combined,
| /             'x' = may be in error, '~' = too variable, '?' = unusable.
||                                                 .- xxxx [ yyyy ] +/- zzzz
||      Reachability register (octal) -.           |  xxxx = adjusted offset,
||      Log2(Polling interval) --.      |          |  yyyy = measured offset,
||                                \     |          |  zzzz = estimated error.
||                                 |    |           \
MS Name/IP address         Stratum Poll Reach LastRx Last sample
===============================================================================
^? 192.168.1.1                   0   6     0     -     +0ns[   +0ns] +/-    0ns
^? 122.215.240.52                0   6     0     -     +0ns[   +0ns] +/-    0ns
^? 46.250.253.227                0   6     0     -     +0ns[   +0ns] +/-    0ns
nutanix@NTNX-4bc9a811-A-CVM:192.168.1.14:~$

再チェック

nutanix@NTNX-4bc9a811-A-CVM:192.168.1.14:~$ ncc health_checks network_checks check_ntp

####################################################
# TIMESTAMP : Thu Jul 09 01:57:28 2026 (UTC +0000) #
####################################################
Cluster Name: cvm
Cluster Id: 3772327690115644291
Cluster UUID: 00064e84-58d6-fd69-345a-000c29b67b83
Cluster Version: 6.8.1
NCC Version: 5.0.1-83db8d0f
    CVM ID(Svmid)            : 2
    CVM external IP          : 192.168.1.14
    Hypervisor IP            : 192.168.1.13
    Hypervisor version       : Nutanix 20230302.101026
    Node serial              : 61e640f9-e1fe-4ba3-a4cc-8c2384c95c9a
    Model                    : CommunityEdition
    Node Position            : A
    Block S/N                : 4bc9a811


Running : health_checks network_checks check_ntp
[==================================================] 100%
/health_checks/network_checks/check_ntp                                              [ ERR  ]
---------------------------------------------------------------------------------------------+

Detailed information for check_ntp:
Node 192.168.1.14:
ERR : node (service_vm_id: 2) : NTP synchronized to server which is neither in the cluster nor in the list of allowed NTP servers
WARN: The host (192.168.1.13) is not synchronizing with any NTP server. This might occur if none of the configured NTP servers are available or you are currently experiencing network instability determined by the high offset/high jitter.
Refer to KB 4519 (http://portal.nutanix.com/kb/4519) for details on check_ntp or Recheck with: ncc health_checks network_checks check_ntp --cvm_list=192.168.1.14

One or more plugins generated ERROR as there were insufficient data to validate results. Please resolve other reported issues and re-run the health checks.
+-----------------------+
| State         | Count |
+-----------------------+
| Error         | 1     |
| Total Plugins | 1     |
+-----------------------+
Plugin output written to /home/nutanix/data/logs/ncc-output-latest.log
nutanix@NTNX-4bc9a811-A-CVM:192.168.1.14:~$

KB-16363 を参照してみると、「sudo chronyc tracking」を実行して「Reference ID」のところにNTPサーバ名が出てるか確認、とある・・・ない

nutanix@NTNX-4bc9a811-A-CVM:192.168.1.14:~$ sudo chronyc tracking
Reference ID    : 7F7F0101 ()
Stratum         : 10
Ref time (UTC)  : Thu Jul 09 02:06:19 2026
System time     : 0.000000004 seconds slow of NTP time
Last offset     : +0.000000000 seconds
RMS offset      : 0.000000000 seconds
Frequency       : 5.919 ppm slow
Residual freq   : +0.000 ppm
Skew            : 0.000 ppm
Root delay      : 0.000000000 seconds
Root dispersion : 0.000000000 seconds
Update interval : 0.0 seconds
Leap status     : Normal
nutanix@NTNX-4bc9a811-A-CVM:192.168.1.14:~$

[root@NTNX-4bc9a811-A ~]# chronyc tracking
Reference ID    : 00000000 ()
Stratum         : 0
Ref time (UTC)  : Thu Jan 01 00:00:00 1970
System time     : 0.000000000 seconds slow of NTP time
Last offset     : +0.000000000 seconds
RMS offset      : 0.000000000 seconds
Frequency       : 5.788 ppm slow
Residual freq   : +0.000 ppm
Skew            : 0.000 ppm
Root delay      : 1.000000000 seconds
Root dispersion : 1.000000000 seconds
Update interval : 0.0 seconds
Leap status     : Not synchronised
[root@NTNX-4bc9a811-A ~]#

いろいろ試行していたところ、結局のところopenwrtで提供しようとしていたNTPに問題が出ていたようなので、別のLinuxでchronydによるNTPサーバを立てて見たところ、そちらではなんとかなった

nutanix@NTNX-4bc9a811-A-CVM:192.168.1.14:~$ ncc health_checks network_checks check_ntp --cvm_list=192.168.1.14

####################################################
# TIMESTAMP : Thu Jul 09 06:07:56 2026 (UTC +0000) #
####################################################
Cluster Name: cvm
Cluster Id: 3772327690115644291
Cluster UUID: 00064e84-58d6-fd69-345a-000c29b67b83
Cluster Version: 6.8.1
NCC Version: 5.0.1-83db8d0f
    CVM ID(Svmid)            : 2
    CVM external IP          : 192.168.1.14
    Hypervisor IP            : 192.168.1.13
    Hypervisor version       : Nutanix 20230302.101026
    Node serial              : 61e640f9-e1fe-4ba3-a4cc-8c2384c95c9a
    Model                    : CommunityEdition
    Node Position            : A
    Block S/N                : 4bc9a811


Running : health_checks network_checks check_ntp
[==================================================] 100%
/health_checks/network_checks/check_ntp                                              [ WARN ]
---------------------------------------------------------------------------------------------+

Detailed information for check_ntp:
Node 192.168.1.14:
WARN: NTP servers configured on CVM (['0.pool.ntp.org', '192.168.1.1', '1.pool.ntp.org']) differ from those configured in the cluster (['0.pool.ntp.org', '1.pool.ntp.org', '192.168.1.1', '192.168.1.10']).
Refer to KB 4519 (http://portal.nutanix.com/kb/4519) for details on check_ntp or Recheck with: ncc health_checks network_checks check_ntp --cvm_list=192.168.1.14
+-----------------------+
| State         | Count |
+-----------------------+
| Warning       | 1     |
| Total Plugins | 1     |
+-----------------------+
Plugin output written to /home/nutanix/data/logs/ncc-output-latest.log
nutanix@NTNX-4bc9a811-A-CVM:192.168.1.14:~$

CVM内の/etc/chrony.confも書き換わっていた

nutanix@NTNX-4bc9a811-A-CVM:192.168.1.14:~$ sudo cat /etc/chrony.conf
# Auto generated by ChronyConfig on Thu Jul  9 06:11:50 2026

pool 0.pool.ntp.org iburst maxpoll 10
server 192.168.1.10 iburst maxpoll 10
pool 1.pool.ntp.org iburst maxpoll 10
server 192.168.1.1 iburst maxpoll 10
local stratum 10
driftfile /var/lib/chrony/drift
maxdistance 16.0
makestep 1.0 3
rtcsync
allow 0.0.0.0/0
allow 127.0.0.1
allow ::/0
allow ::1
leapsectz right/UTC
cmdport 0
logdir /var/log/chrony
log measurements statistics tracking
nutanix@NTNX-4bc9a811-A-CVM:192.168.1.14:~$

ESP32 C3 SuperMiniをUbuntu 24.04で使うときのメモ

ある一定温度になったら5Vファンを回す、程度の制御に使うマイコンとしてなんか買うか、とaliexpress見てたら、506円で ESP32 C3 SuperMiniというのがあったので買ってみた

購入したセラーのページには詳細がなかったので、調べてみたら、「【Arduino】ESP32 C3 SuperMiniを使う」を発見

ESP32 C3 SuperMini という製品名に対して、細かなバージョン違いがあるらしい。

掲載されている写真の部品配置と比較してみたところ、今回買ったものは「ESP32 C3 Super Mini(K2)」に相当しているみたいである

で・・・Ubuntu 24.04Serverをインストールして、arduinoをインストールし、Windows上にインストールしたVcXsrvに画面を飛ばす。

Arduiono上では、ボードマネージャにESP32追加し、ESP32 C3 Dev boardを選択して、サンプルを書き込み

エラー発生

Arduino:1.8.19 (Linux), ボード:"ESP32C3 Dev Module, Disabled, Disabled, Default 4MB with spiffs (1.2MB APP/1.5MB SPIFFS), 160MHz (WiFi), QIO, 80MHz, 4MB (32Mb), 921600, None, Disabled, Disabled"

警告:ライブラリESP_SRのカテゴリ「Sound」は有効ではありません。「Uncategorized」に設定します。
警告:ライブラリHashのカテゴリ「Security」は有効ではありません。「Uncategorized」に設定します。
警告:ライブラリESP Insightsのカテゴリ「」は有効ではありません。「Uncategorized」に設定します。
警告:ライブラリESP RainMakerのカテゴリ「」は有効ではありません。「Uncategorized」に設定します。
警告:ライブラリTFLite Microのカテゴリ「」は有効ではありません。「Uncategorized」に設定します。
警告:ライブラリWiFiProvのカテゴリ「」は有効ではありません。「Uncategorized」に設定します。
最大1310720バイトのフラッシュメモリのうち、スケッチが282882バイト(21%)を使っています。
最大327680バイトのRAMのうち、グローバル変数が14240バイト(4%)を使っていて、ローカル変数で313440バイト使うことができます。
                                                                                
 Usage: esptool [OPTIONS] COMMAND [ARGS]...                                     
                                                                                
 Try 'esptool -h' for help                                                      
╭─ Error ──────────────────────────────────────────────────────────────────────╮
│ Invalid value for '--port' / '-p': Path '/dev/ttyACM0' is not readable.      │
╰──────────────────────────────────────────────────────────────────────────────╯
                                                                                
シリアルポート「                                                                                
」が選択されていますが、そのポートは存在しないか、ボードが接続されていません。


「ファイル」メニューの「環境設定」から
「より詳細な情報を表示する:コンパイル」を有効にすると
より詳しい情報が表示されます。

確認してみる

まず、USBデバイスが存在しているかを確認

pcuser@ubuntu:~$ lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 0e0f:0003 VMware, Inc. Virtual Mouse
Bus 001 Device 007: ID 0e0f:0002 VMware, Inc. Virtual USB Hub
Bus 001 Device 008: ID 0e0f:0002 VMware, Inc. Virtual USB Hub
Bus 001 Device 022: ID 303a:1001 Espressif USB JTAG/serial debug unit
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
pcuser@ubuntu:~$

ある

rootユーザでesptoolを実行したらどうなる?

root@ubuntu:~# /home/pcuser/.arduino15/packages/esp32/tools/esptool_py/5.1.0/esptool --port /dev/ttyACM0 chip-id
esptool v5.1.0
Connected to ESP32-C3 on /dev/ttyACM0:
Chip type:          ESP32-C3 (QFN32) (revision v0.4)
Features:           Wi-Fi, BT 5 (LE), Single Core, 160MHz, Embedded Flash 4MB (XMC)
Crystal frequency:  40MHz
USB mode:           USB-Serial/JTAG
MAC:                ac:eb:e6:6d:6b:b0

Stub flasher running.

Warning: ESP32-C3 has no chip ID. Reading MAC address instead.
MAC:                ac:eb:e6:6d:6b:b0

Hard resetting via RTS pin...
root@ubuntu:~#

情報が取得できる

一般ユーザだとどうなる?

pcuser@ubuntu:~$ /home/pcuser/.arduino15/packages/esp32/tools/esptool_py/5.1.0/esptool --port /dev/ttyACM0 chip-id

 Usage: esptool [OPTIONS] COMMAND [ARGS]...

 Try 'esptool -h' for help
lq Error qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk
x Invalid value for '--port' / '-p': Path '/dev/ttyACM0' is not readable.     x
mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj

pcuser@ubuntu:~$

エラーとなる

つまり・・・/dev/ttyACM0 にアクセス権がない

pcuser@ubuntu:~$ ls -l /dev/ttyACM0
crw-rw---- 1 root dialout 166, 0  4月  8 11:40 /dev/ttyACM0
pcuser@ubuntu:~$

面倒くさいので /dev/ttyACM0自体に権限を与えてしまう

pcuser@ubuntu:~$ sudo chmod a+rw /dev/ttyACM0
[sudo] pcuser のパスワード:
pcuser@ubuntu:~$ ls -l /dev/ttyACM0
crw-rw-rw- 1 root dialout 166, 0  4月  8 11:40 /dev/ttyACM0
pcuser@ubuntu:~$

変更後は一般ユーザでもesptoolの実行に成功した

pcuser@ubuntu:~$ /home/pcuser/.arduino15/packages/esp32/tools/esptool_py/5.1.0/esptool --port /dev/ttyACM0 chip-id
esptool v5.1.0
Connected to ESP32-C3 on /dev/ttyACM0:
Chip type:          ESP32-C3 (QFN32) (revision v0.4)
Features:           Wi-Fi, BT 5 (LE), Single Core, 160MHz, Embedded Flash 4MB (XMC)
Crystal frequency:  40MHz
USB mode:           USB-Serial/JTAG
MAC:                ac:eb:e6:6d:6b:b0

Stub flasher running.

Warning: ESP32-C3 has no chip ID. Reading MAC address instead.
MAC:                ac:eb:e6:6d:6b:b0

Hard resetting via RTS pin...
pcuser@ubuntu:~$

ただ、これだと、1回抜き差しすると/dev/ttyACM0は再作成されるので権限が元に戻ってしまう

pcuser@ubuntu:~$ ls -l /dev/ttyACM0
crw-rw---- 1 root dialout 166, 0 4月 8 11:53 /dev/ttyACM0
pcuser@ubuntu:~$

簡単に解決する方法は、上記/dev/ttyACM0のグループ権限にある「dialout」に、一般ユーザを追加すること

pcuser@ubuntu:~$ sudo usermod -aG dialout pcuser
[sudo] pcuser のパスワード:
pcuser@ubuntu:~$

設定後、一回ログアウトする必要がある。ログアウトしないと古い権限が適用され使用できない

pcuser@ubuntu:~$ ls -l /dev/ttyACM0
crw-rw---- 1 root dialout 166, 0  4月  8 11:53 /dev/ttyACM0
pcuser@ubuntu:~$ /home/pcuser/.arduino15/packages/esp32/tools/esptool_py/5.1.0/esptool --port /dev/ttyACM0 chip-id

 Usage: esptool [OPTIONS] COMMAND [ARGS]...

 Try 'esptool -h' for help
lq Error qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk
x Invalid value for '--port' / '-p': Path '/dev/ttyACM0' is not readable.     x
mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj

pcuser@ubuntu:~$

ログインしなおすと、使えるようになる

pcuser@ubuntu:~$ ls -l /dev/ttyACM0
crw-rw---- 1 root dialout 166, 0  4月  8 11:53 /dev/ttyACM0
pcuser@ubuntu:~$ /home/pcuser/.arduino15/packages/esp32/tools/esptool_py/5.1.0/esptool --port /dev/ttyACM0 chip-id
esptool v5.1.0
Connected to ESP32-C3 on /dev/ttyACM0:
Chip type:          ESP32-C3 (QFN32) (revision v0.4)
Features:           Wi-Fi, BT 5 (LE), Single Core, 160MHz, Embedded Flash 4MB (XMC)
Crystal frequency:  40MHz
USB mode:           USB-Serial/JTAG
MAC:                ac:eb:e6:6d:6b:b0

Stub flasher running.

Warning: ESP32-C3 has no chip ID. Reading MAC address instead.
MAC:                ac:eb:e6:6d:6b:b0

Hard resetting via RTS pin...
pcuser@ubuntu:~$ id
uid=1000(pcuser) gid=1000(pcuser) groups=1000(pcuser),4(adm),20(dialout),24(cdrom),27(sudo),30(dip),46(plugdev),101(lxd)
pcuser@ubuntu:~$

シリアル出力をしない設定がある

debugのために下記の様な感じでシリアル出力を書いた

#define LED_PIN (8)

void setup() {
  Serial.begin(9600);
  Serial.print("start");
  pinMode(LED_PIN, OUTPUT);

  while(1)
  {
    digitalWrite(LED_PIN, LOW);
    delay(500);

    digitalWrite(LED_PIN, HIGH);
    delay(100);
  }

}

void loop() {

  Serial.println("loop test");
  delay(3000);
}

しかし、シリアルモニタに何も出力されない

調べると「esp32 c3系でシリアルモニタに出力されない」に「USB CDC On Boot」が「Disabled」になってると出力されない、という話があった

確認すると、Disabledであった

しかし「Enabled」に変えてから書き込みを行ってもシリアル出力はされない状態

arduiono 1.8.19 on ubuntu 24.04

他の事例「ESP32C3 Super Mini doen’t communicate with Serial Monitor in one setup, but it does in another setup — why?」には「ESP32C3 Dev Module」ではなく「LOLIN C3 Mini」を選んで「USB CDC On Boot:Enabled」で書き込め、ということでやってみたが、ダメだった

claudeに「esp32 c3 super mini にて シリアル出力が出てこない」と聞いてみたら「USB CDC の初期化待ち(重要!)」だそうな

ということでSerial.begin(9600);の次にdelay(2000)を追加したところ、とりあえずsetup内のserial.printについては出力はされたが、loop無いのやつが出力されない…って、あ、setup内でループしてんじゃん

#define LED_PIN (8)

void setup() {
  Serial.begin(9600);
  delay(2000); 
  Serial.print("start");
  pinMode(LED_PIN, OUTPUT);

  //while(1)
  //{
  //  digitalWrite(LED_PIN, LOW);
  //  delay(500);

  //  digitalWrite(LED_PIN, HIGH);
  //  delay(100);
  //}

}

void loop() {

  Serial.println("loop test");
  delay(3000);
}

ということで動作を確認