最初に
この記事の初めに書いておくが、公式にはUIAPduinoはmacで使うのは難しそうだよと公式ページに示されているように、macは開発の前提になっていない。というか全般的に「使えたら使ってね」みたいなトーンでもある。だから公式には使いこなせないのは使う人が悪いのだ。こんなマニアックなんだから百均の棚には並ばないんじゃないかな。そもそも「100円で売る」のと「それこそ百戦錬磨の選び抜かれた低価格商品」とは同じじゃない。
UIAPduinoをmacで試す
290円で買えるUIAPduino Pro Micro CH32V003 V1.4はなかなか良い開発ボードなのだが、安いけどマニアックだよね、という感じになってしまっている。Arduino IDEを使う前提になっているのだから「Arduinoみたいに使える」ことを勝手に期待しちゃうのだが残念ながらそうではない。特に「ずっと繋ぎっぱなしで書き換えができる上にそのままシリアルモニタできる」という手軽さは無い。だがまぁ2026/03/14現在¥4,710のイタリアン謹製Unoと比べちゃうのは酷だ。
macで試される俺様
基本的に公式ページから辿れるmacで使えるようにした記事の内容とほとんど同じなのだが、先に紹介されたページだけ読んで、これを読まずに苦労したのでここに書いておきたい。
Arduinon IDEは普通にインストールできるとして、追加のボードマネージャを指定すれば、一見、環境をインストールできたみたいに見える。いつものBlinkの冒頭に#define LED_BUILTIN 2を追加して、「検証」ボタンを押すと普通にコンパイルできる。
一方で、ボードに書き込もうとするとコンパイルの後のメッセージとしてこう出る。
Failed uploading: cannot execute upload tool: fork/exec /Users/akira.kei/Library/Arduino15/packages/UIAP/tools/minichlink-2982dfd/1.0.0/minichlink: exec format error
この場合の「exec format error」とは実行ファイルがmac用じゃないということらしい。公式ページにもさらっと以下のように書いてある。つまり「mac遣いならソースからビルドなんて普通にできるでしょ知らんけど」ということだ。
minichlinkが原因で書き込みできない場合は、環境に合わせてビルドして~/.arduino15/packages/UIAP/tools/minichlink-2982dfd/1.0.0/minichlinkを置き換えます。
良い本を見つけてある
CH32V003を使うと決めてから見つけた良い技術書があるので、これを見て「minichlinkのソースはch32funにある」ことは知っていた。従って、minichlink(ソース)のダウンロードなどお手のものだ(強がり
% git clone https://github.com/cnlohr/ch32fun.git
Cloning into 'ch32fun'...
remote: Enumerating objects: 12100, done.
remote: Counting objects: 100% (991/991), done.
remote: Compressing objects: 100% (380/380), done.
remote: Total 12100 (delta 780), reused 636 (delta 611), pack-reused 11109 (from 4)
Receiving objects: 100% (12100/12100), 12.06 MiB | 4.53 MiB/s, done.
Resolving deltas: 100% (7502/7502), done.
macに対するch32fun以外の開発環境インストールについてはさらに別のページが紹介されているのだが、タライ回され感が半端ない。いずれにしろどんどんbrewしていくしかないわけで、ただでさえ空き容量の少ない安いmac miniには酷な感じになってくる。
minichlinkをソースからビルドしちゃう俺様
ビルド自体はch32funディレクトリの下にあるminichlinkでmake allするだけでいいから簡単だ。
% cd ch32fun/minichlink
% make all
% file minichlink
minichlink: Mach-O 64-bit executable arm64
% sudo cp minichlink /usr/local/bin
% minichlink -i
VID:0x1209, PID:0xb003
Error: Could not initialize any supported programmers
うん繋がらないな。macOSのシステム設定→一般→情報、の一番下にある「システムレポート...」を開き、左のメニューでUSBを選ぶと、接続されているUSB機器の情報が見れるのだが、その中に「32V003」が出ているなら、macOSには認識されていることになる。
USBベンダーIDは0x1209でUSB製品IDが0xb803であることがわかるが、先のエラーメッセージではPIDは0xb003と表示されていた。0とか8とか何がどうなってんだ。
minichlinkのソースを勝手に変更しちゃう俺様
お試しでソースの中身を見てみると、どうやらb003bootという書き込み機?に対応する部分がVID 0x1209+PID 0xb003に対応しているらしい。このb003bootってのを知らんので、ここをそのまま置き換えてしまおう。
% cd ch32fum/minichlink
% grep 'b003' minichlink.c
else if( strcmp( specpgm, "b003boot" ) == 0 )
dev = TryInit_B003Fun(SimpleReadNumberInt(init_hints->serial_port, 0x1209b003));
else if ((dev = TryInit_B003Fun(SimpleReadNumberInt(init_hints->serial_port, 0x1209b003))))
hints.specific_programmer = "b003boot";
fprintf( stderr, " -c [serial port for Ardulink, try /dev/ttyACM0 or COM11 etc] or [VID+PID of USB for b003boot, try 0x1209b003]\n" );
fprintf( stderr, " -C [specified programmer, eg. b003boot, ardulink, esp32s2chfun, funprog, isp]\n" );
下のソースをminichlink.c→minichlink.c.bakに変更して、b003を全てb803に置き換えてしまう。
% mv minichlink.c minichlink.c.bak
% sed 's/b003/b803/g' minichlink.c.bak > minichlink.c
% make all
% ./minichlink -i
VID:0x1209, PID:0xb803
Found B003Fun Bootloader
Halting Boot Countdown
Detected CH32V003
Flash Storage: 16 kB
Part UUID: 8a-ce-ab-cd-f2-a3-bc-08
Read protection: disabled
Interface Setup
USER/RDPR : 08f7/5aa5
DATA1/DATA0: 00ff/00ff
WRPR1/WRPR0: 00ff/00ff
WRPR3/WRPR2: 00ff/00ff
R32_ESIG_UNIID1: 8aceabcd
R32_ESIG_UNIID2: f2a3bc08
R32_ESIG_UNIID3: ffffffff
おっとB003Fun Bootloaderって認識されてるけどまぁいいか。ちゃんとUIAPduinoは認識されたみたいだ。これを指示通り~/.arduino15/packages/UIAP/tools/minichlink-2982dfd/1.0.0/minichlinkではなく(!?) ~/Library/Arduino15/packages/UIAP/tools/minichlink-2982dfd/1.0.0/minichlinkと入れ替えればいい。
USBシリアル変換モジュール外付け
公式ページから紹介されているようにUSBシリアル変換モジュールを外付けするとSerial.printは使えるようになる。この記事がこれ以上書いていないので問題点を書いておこう。
USBシリアル変換器は抜かないとボード電源が切れない
デバック中に書き込みモードに入るには
- USBケーブルを抜く
- USBシリアル変換器を抜く(new!)
- リセットボタンを押しながらUSBケーブルを接続してボタンから手を離す
- USBシリアル変換器を接続する(new!)
という手順になる。うん、めんどくさ。
MCH-LinkE接続...
QFPを変換しただけの(CH32V203K8T6)[https://akizukidenshi.com/catalog/g/g118063/]をMCH-LinkEで接続すると、
% minichlink -i
Found WCH Link
WCH Programmer is LinkE version 2.20
Detected CH32V203
Flash Storage: 64 kB
Part UUID: 07-c6-ab-cd-6f-e8-bc-55
Part Type: 20-32-05-00
Read protection: disabled
Interface Setup
USER/RDPR : c03f/5aa5
DATA1/DATA0: 00ff/00ff
WRPR1/WRPR0: 00ff/00ff
WRPR3/WRPR2: 00ff/00ff
R32_ESIG_UNIID1: 07c6abcd
R32_ESIG_UNIID2: 6fe8bc55
R32_ESIG_UNIID3: e339e339
%
と認識される。同じように8ピンのCH32V003J4M6だって以下の通り接続できている。
% minichlink -i
Found WCH Link
WCH Programmer is LinkE version 2.20
Detected CH32V003
Flash Storage: 16 kB
Part UUID: dc-7f-ab-cd-44-c8-bc-7c
Part Type: 00-33-05-00
Read protection: disabled
Interface Setup
USER/RDPR : 6897/5aa5
DATA1/DATA0: ff00/ff00
WRPR1/WRPR0: 00ff/00ff
WRPR3/WRPR2: 00ff/00ff
R32_ESIG_UNIID1: dc7fabcd
R32_ESIG_UNIID2: 44c8bc7c
R32_ESIG_UNIID3: ffffffff
Windowsで何度やっても何故か接続できなかったUIAPduinoも先ほど試してみたらあっさり接続できた。
% minichlink -i
Found WCH Link
WCH Programmer is LinkE version 2.20
Detected CH32V003
Flash Storage: 16 kB
Part UUID: 8a-ce-ab-cd-f2-a3-bc-08
Part Type: 00-31-05-10
Read protection: disabled
Interface Setup
USER/RDPR : 08f7/5aa5
DATA1/DATA0: 00ff/00ff
WRPR1/WRPR0: 00ff/00ff
WRPR3/WRPR2: 00ff/00ff
R32_ESIG_UNIID1: 8aceabcd
R32_ESIG_UNIID2: f2a3bc08
R32_ESIG_UNIID3: ffffffff
これで行けるならArduino IDEで開発する必要もない(開発しても良い)ことになる。USB-Cコネクタには接続不要でUSBシリアル変換器も外付けする必要もなく、WCH-LinkEは繋げっぱなしでSerial.printも使用可能だ。WCH-LinkEさえあればUIAPduinoにUSB-Cコネクタは必要ないってことになる。
なお、どうやらパワーサイクルも不要で書き換え可能なようなので、外部電源を供給しっぱなしでも、USB-Cコネクタを差しっぱなしでも、WCH-LinkEの2本(GND、SWDIO)または3本(TX→RX)を繋げばmacでも普通に開発が可能だ。
UIAPduino固有?
こうなるとUIAPduino固有の開発(USB-Cコネクタ経由の書き込み)を行うモチベーションがない。だからこの記事のタイトルには(その1)とか付けてないのは続きを書くつもりが無い体。
以降はUIAPduinoを普通の開発ボード扱いでWCH-LinkEで繋いで開発していこう。
投稿者の人気記事

-
akira.kei
さんが
前の土曜日の16:08
に
編集
をしました。
(メッセージ: 初版)
-
akira.kei
さんが
前の土曜日の16:09
に
編集
をしました。
-
akira.kei
さんが
前の土曜日の22:55
に
編集
をしました。
-
akira.kei
さんが
前の土曜日の23:49
に
編集
をしました。
-
akira.kei
さんが
前の土曜日の23:51
に
編集
をしました。
-
akira.kei
さんが
昨日の1:58
に
編集
をしました。
-
akira.kei
さんが
昨日の3:46
に
編集
をしました。
-
akira.kei
さんが
昨日の3:51
に
編集
をしました。
-
akira.kei
さんが
昨日の11:12
に
編集
をしました。
ログインしてコメントを投稿する