akira.keiのアイコン画像
akira.kei 2026年03月14日作成 (2026年03月15日更新) © MIT
セットアップや使用方法 セットアップや使用方法 閲覧数 36
akira.kei 2026年03月14日作成 (2026年03月15日更新) © MIT セットアップや使用方法 セットアップや使用方法 閲覧数 36

UIAPduino Pro Micro CH32V003 V1.4をMac Miniで試す

次の記事>

最初に

この記事の初めに書いておくが、公式にはUIAPduinoはmacで使うのは難しそうだよと公式ページに示されているように、macは開発の前提になっていない。というか全般的に「使えたら使ってね」みたいなトーンでもある。だから公式には使いこなせないのは使う人が悪いのだ。こんなマニアックなんだから百均の棚には並ばないんじゃないかな。そもそも「100円で売る」のと「それこそ百戦錬磨の選び抜かれた低価格商品」とは同じじゃない。
UIAPduino

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のアイコン画像
機械系エンジニアだが電子工作を趣味としている。週末はひとりバーベキュー。
ログインしてコメントを投稿する