M5Stack LLM Kit: セットアップ編
はじめに
2025年年明けより話題になっていたM5Stack Module LLM。
気づいた時には完売しており、入荷待ちしてたのですが、先日(2025/4/10)デバッグ基板がより使いやすくなったLLM Module Kitなるものが突如発売されました!!
これは僥倖とポチりまして、ついに到着!
筆者は開発用のOSにUbuntuを使っているのですが、開発環境整備に微妙にハマったので、構築メモとして残しておきます。
参考資料
開発を始めるにあたり、以下の「Module-LLM MAniaX」という資料を購入させて頂きました。ハードウェア的なセットアップからSSHでのログイン、そして機械学習モデルの動かし方まで非常に丁寧に、そして幅広く記載されていますのでとてもオススメです!そして発売されたばかりのLLM Module Kitまでサポートされており仕事が速すぎる!!基本コレがあれば十分です。
開発環境とハードウェア
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'
あたりが気になるので、調べてみると以下と同じ事象でした。/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