5️⃣

M5Stack LLM Kit: セットアップ編

に公開

はじめに

2025年年明けより話題になっていたM5Stack Module LLM
気づいた時には完売しており、入荷待ちしてたのですが、先日(2025/4/10)デバッグ基板がより使いやすくなったLLM Module Kitなるものが突如発売されました!!
これは僥倖とポチりまして、ついに到着!
Core2 + Module LLM + デバッグ基板
筆者は開発用のOSにUbuntuを使っているのですが、開発環境整備に微妙にハマったので、構築メモとして残しておきます。

参考資料

開発を始めるにあたり、以下の「Module-LLM MAniaX」という資料を購入させて頂きました。ハードウェア的なセットアップからSSHでのログイン、そして機械学習モデルの動かし方まで非常に丁寧に、そして幅広く記載されていますのでとてもオススメです!そして発売されたばかりのLLM Module Kitまでサポートされており仕事が速すぎる!!基本コレがあれば十分です。
https://booth.pm/ja/items/6642202

開発環境とハードウェア

PC

一般的なノートPCにUbuntu22.04をインストールして使用。

デバイス

その他

  • LANケーブル
  • USB Type-Cケーブル

ハマりポイント

基本的にはModule-LLM MAniaXにしたがって進めればOKです。ただ、筆者の環境はUbuntuであり、いくつかハマったポイントがあったので解決策を書き記しておきます。なお、以下の作業はUbuntu PC側で行います。

LLM Module(本体)のUSB Type-Cポートにケーブルを差しても操作できない

こちらのポートではadbツールを使ってLLM Moduleにログインできるようです。まずはadbツールをインストールしてみましょう。

$ sudo apt install adb

adbツールでデバイス一覧を見てみます。

$ adb devices
List of devices attached
axera-ax620e    no permissions (user in plugdev group; are your udev rules wrong?); see [http://developer.android.com/tools/device.html]

no permissions とありますね。この状態だと権限が無く、ログインできません。適切な権限を付与するにはudev ruleを書く必要があるとのことです。まずは、lsusbでこのデバイスのベンダーIDを調べます。

$ lsusb
...
Bus 001 Device 028: ID 32c9:2003 axera ax620e-adb
...

ベンダーIDは 32c9 の部分ですね。これを元に以下のようなudevルールを作成します。
/etc/udev/rules.d/50-m5-llm.rules

SUBSYSTEM=="usb", ATTR{idVendor}=="32c9", MODE="0666", GROUP="plugdev"

そして反映。

sudo udevadm trigger

無事 no permission のエラーが無くなりました。

$ adb devices
List of devices attached
axera-ax620e    device

これで無事ターミナル操作できるようになります。

$ adb shell
sh-5.1#

デバッグ基板のUSB Type-Cポートにケーブルを差しても操作できない

こちらのポートでは、USB-シリアル通信が行われ、PC側ではシリアルターミナルを立ち上げて操作できるようです。この手の通信方法の場合、PC側に /dev/ttyUSBx というファイルが作成され、これを指定してシリアルターミナルを立ち上げるのが通例ですが、なんとttyUSBxが作成されません。原因特定のため、dmesgを流しながらUSBケーブルを抜き差しすると、、、

$ sudo dmesg -w
...
[43464.017437] usb 1-8.2: new full-speed USB device number 35 using xhci_hcd
[43464.106676] usb 1-8.2: New USB device found, idVendor=1a86, idProduct=7523, bcdDevice=81.34
[43464.106680] usb 1-8.2: New USB device strings: Mfr=0, Product=2, SerialNumber=0
[43464.106681] usb 1-8.2: Product: USB Serial
[43464.115382] ch341 1-8.2:1.0: ch341-uart converter detected
[43464.115974] usb 1-8.2: ch341-uart converter now attached to ttyUSB0
[43464.654953] input: BRLTTY 6.4 Linux Screen Driver Keyboard as /devices/virtual/input/input48
[43464.656294] usb 1-8.2: usbfs: interface 0 claimed by ch341 while 'brltty' sets config #1
[43464.656885] ch341-uart ttyUSB0: ch341-uart converter now disconnected from ttyUSB0
[43464.656895] ch341 1-8.2:1.0: device disconnected

切断されたというエラーがでています。

usbfs: interface 0 claimed by ch341 while 'brltty'

あたりが気になるので、調べてみると以下と同じ事象でした。
https://qiita.com/nanbuwks/items/dd251aab3a8047a47a50
brlttyというパッケージを削除すれば良いとのことで、早速削除すると無事 /dev/ttyUSB0 が作成されました。

$ sudo apt purge brltty

ttyUSB0を指定してminicomを立ち上げ、無事ログイン!

$ minicom -D /dev/ttyUSB0

おすすめ開発環境

sshログイン

LLM Module上ではUbuntuが動いているらしく、なんとSSHでログインできるそうです。
adbツール使ったりシリアルターミナル使ったりとやってきましたが、やっぱりSSHですよね、scpでファイル転送とかもしたいし。
ということで、家の回線に繋がっているLANケーブルをデバッグ基板に接続した状態でシリアルターミナルからネットワークの状態を確認したところ、IPアドレスが降ってきました!DHCP設定になっているようで、そのままインターネットに出れる状態です。

root@m5stack-LLM:~# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.0.26  netmask 255.255.255.0  broadcast 192.168.0.255

root@m5stack-LLM:~# ping google.com
64 bytes from xxx.xxx.xxx.xxx: icmp_seq=0 ttl=57 time=4.196 ms

また、デフォルトで m5stack-LLM というホスト名がついているとのことで、IPアドレスを確認することなく m5stack-LLM.local を指定することでsshできてしまいます。筆者はPC上の .ssh/config

Host m5-llm
  HostName        m5stack-LLM.local
  Port            22
  User            root
  ForwardAgent    yes

上記設定を記載することで

$ ssh m5-llm

でログインできるようにしています。またForwardAgent設定を行うことでPC上にあるSSH認証情報をLLM Module側に転送することができ、GitHubとの認証を突破したりもできます。

vscode

vscodeにはssh経由でリモートマシン上のファイルを編集する機能がありますが、もちろんLLM Moduleでも同じことができます(SSH拡張機能を入れる必要がありますが、ネット上に記事が多くあるので割愛します)。SSH拡張機能がインストールされた状態で、vscodeの左下にある >< のアイコンをクリック。

上部の検索窓に「ホストに接続する」というメニューがでてくるので、クリックし、LLM Moduleのホスト名を選択(筆者の環境では前述した ./ssh/config で設定した名前になっています)。

「フォルダを開く」から任意の場所を指定すると

こんな感じでLLM Moduleの中にあるファイルを編集することができます。

いや〜SSHめっちゃ便利で快適ですね!!
LLM Module、普通にLinuxとして使えそうなので組み込みLinuxが好きな方などにもいいんじゃないでしょうか!しばらくこれで遊べそうです!

Discussion