airpocketのアイコン画像
airpocket 2024年11月11日作成 (2024年11月15日更新) © MIT
セットアップや使用方法 セットアップや使用方法 閲覧数 587
airpocket 2024年11月11日作成 (2024年11月15日更新) © MIT セットアップや使用方法 セットアップや使用方法 閲覧数 587

M5Stack LLM ModuleをLinuxボードとして利用する際のFAQ/Tips

M5Stack LLM ModuleをLinuxボードとして利用する際のFAQ/Tips

はじめに

M5Stack LLM ModuleはM5Stack Core向けのエッジLLMモジュールです。
M5Stack上からUIFlow2やArduinoIDEでUART越しにAPIをたたくとKWSやASRやLLMやTTSで答えてくれます。この価格帯のボードとしては相当高性能かつめちゃ簡単に使えるエッジLLMボードなので超おすすめ(今は売り切れ2ndロット待ち)商品です。

さらにはエッジAI用のSBCとしてもとても有能なので、便利なLinuxボードとしての使う際のTipsをまとめます。
必要な機材は以下の通りです。ほかにも随時USBケーブルやUSBカメラなども使用します。

M5Stack LLM Module

今回使用するエッジAIボードです。

M5Stakc Core

Basic、Core2、CoreS3のいずれでもOKです。主に電源供給用に使用します。

Debug Board

EtherポートとUSBシリアル通信ポートを備えたデバグボードです。Lniuxボードとして遊ぶならこれがあった方が100倍便利です。

LLM Moduleにアクセス

PCはWindowsを想定しています。

デバッグボードがある場合

デバグボードがある場合は以下の手順でアクセスできます。

①LLM Moduleとdebug boardをFPCケーブルで接続する。
②debug boardのType C USBポートとPCを接続する。
③PC側でデバイスマネージャを開き、接続したCOMポートを確認する(CH340と表示されているポート)
 うまく表示されていない場合、PC側にドライバがインストールされていない可能性があるためインストールする。
④Tera Termなどのターミナルソフトを使って、ターゲットのCOMポートを開く。
 通信速度は115200bps
⑤LLM ModuleのType C USBポートとPCやモバイルバッテリーなどを接続し、電源を供給する。

デバッグボードがない場合

①PCでSDK Platform-Toolsをダウンロードして任意のフォルダに解凍する。
②LLM Module とPCをUSBケーブルで接続する。
③PCでコンソールを開いて Platform-Toolsを解凍したフォルダに移動する。
④以下のコマンドでデバイスが認識できているか確認する。ケーブルやPCのUSBの仕様によっては接続できないので、いろいろ変えて試してみる。

adb devices

⑤以下のコマンドでログインする。

adb shell

⑥必要なファイルはpushで送信

adb push data.json /opt

⑦pullでダウンロード

adb pull /opt/data.json .

起動音を消す

@nnn112358 さんより報告。
/usr/local/m5stack/startup-script.shの該当行をコメントアウトする。
https://github.com/nnn112358/M5_LLM_Module_Report/blob/main/README.md

eMMCにファームをフラッシュ

フラッシュするには、AXDLフラッシュツールを使います。
公式ドキュメントの通り進めたらOKです。
以下は手順のまとめ
※バージョンアップなどでリンク切れする可能性が高いので公式ドキュメントも確認してください。

ファームウェアをダウンロード
AXDL Flash Toolをダウンロードして解凍
ドライバをダウンロードして解凍
④ドライバ解凍先フォルダからIMAGE FLASH\AXDL_Driver_V1.20.46.1\Driver_V1.20.46.1\DriversForWin10\DriverSetup.exeを実行してインストール
④フラッシュツールの解凍先からIMAGE FLASH\AXDL_Flash_Tool_V1.24.13.1\AXDL_V1.24.13.1\Bin\AXDL.exeを実行
⑤フラッシュツールの左上のアイコンを押して、ダウンロードしたファームを読み込む
⑥Type C USBケーブルをPCに刺し、Module LLMには刺さないで待機
⑦フラッシュツールの▷アイコンを押して、書き込み待機状態にする。
⑧Module LLMのType C USBの隣ボタンを押しながら、Type C USB挿入すると自動的に書き込み開始。
10分弱程度で書き込み終了。

固定IP

@mongonta555 さんより報告。
https://x.com/mongonta555/status/1855511008305107175

ネットワーク接続

開発の上でネットワーク接続は必須なので、Etherで接続。

①debug board上のコネクタにLANケーブルを挿す
②USBシリアル、もしくはadbツールを使ってシステムにアクセス
③必要ならIPアドレスを固定して再起動
④ip a コマンドでeth0のIPアドレスを確認
⑤PCから調べたIPアドレスへSSHするなどしてネットワーク接続を確認
 ※usre:root / pass:123456

OpenCVインストール

Computer Vision系やるならOpenCVは必須なので入れます。

apt update sudo apt install libgl1 pip install opencv-python

USBカメラ接続

@devemin さんより報告。
https://x.com/devemin/status/1855615695100506150
LLM ModuleのUSBポートにHubなどを通してUSBカメラを接続すると/dev/video0として認識される。
python でサンプルキャプチャするコード
※OpenCV使用

import cv2 # Import OpenCV library # Camera device ID (usually, USB cameras use ID 0 or 1) camera_id = 0 # Open the camera cap = cv2.VideoCapture(camera_id) # Check if the camera opened successfully if not cap.isOpened(): print("Camera not found.") # If the camera is not found exit() # Exit the program # Camera settings: Resolution (width and height) cap.set(cv2.CAP_PROP_FRAME_WIDTH, 1920) # Set width to 1920 pixels cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 1080) # Set height to 1080 pixels # Camera settings: Frame rate (FPS) cap.set(cv2.CAP_PROP_FPS, 30) # Set frame rate to 30 FPS # Camera settings: Exposure, Brightness, and Contrast cap.set(cv2.CAP_PROP_EXPOSURE, -6) # Set exposure (negative values decrease exposure) cap.set(cv2.CAP_PROP_BRIGHTNESS, 0.5) # Set brightness (0.0 to 1.0, where 0 is dark and 1 is bright) cap.set(cv2.CAP_PROP_CONTRAST, 0.5) # Set contrast (0.0 to 1.0, where 0 is low contrast and 1 is high contrast) # Verify the applied settings width = cap.get(cv2.CAP_PROP_FRAME_WIDTH) height = cap.get(cv2.CAP_PROP_FRAME_HEIGHT) fps = cap.get(cv2.CAP_PROP_FPS) exposure = cap.get(cv2.CAP_PROP_EXPOSURE) brightness = cap.get(cv2.CAP_PROP_BRIGHTNESS) contrast = cap.get(cv2.CAP_PROP_CONTRAST) print(f"Resolution: {width}x{height}") print(f"Frame rate: {fps} FPS") print(f"Exposure: {exposure}") print(f"Brightness: {brightness}") print(f"Contrast: {contrast}") # Capture one frame ret, frame = cap.read() # If the frame is successfully captured if ret: # Save the captured image to a file cv2.imwrite('captured_image.jpg', frame) print('Image saved: captured_image.jpg') # Success message for image saving else: print("Failed to capture image.") # Failure message for image capture # Release the camera cap.release() # Close any OpenCV windows (if any are used for display) cv2.destroyAllWindows()

Wi-Fiドングル

USBドングルでWi-Fi接続しようとしたけどカーネルソースが無くてムリ

入れておきたいツール

tree

apt install tree

vim

vscodeでリモートログインするなら不要ですけど。
行番号表示など軽く設定しておくと便利。

sudo apt install vim vim ~/.vimrc

追記する

set number syntax enable set expandtab set tabstop=4 set shiftwidth=4

Tips

rootのpass

は、123456

カーネルヘッダ公開されました

https://x.com/HanxiaoM/status/1856581063021105413
ダウンロード

JimmyのHiの音声は

/opt/m5stack/data/audio配下の2つのWAVファイル

https://x.com/mongonta555/status/1855533752417493017

参考リンク

M5Stack Store販売ページ
M5Stack docments公式ドキュメント、リンク
Palsar2 Toolchain:step by step でAX_modelへの変換 など
OS Image update:LLM ModuleのOS Image Flash方法
ax-samples:vision model 
ax-llm:LLMを触りたい
AXERA model zoo実行用バイナリもあるので試せる。動かせる。

@nnn112358 さんのレポート!
https://github.com/nnn112358/M5_LLM_Module_Report/tree/main
@nananauno さんのまとめ
https://zenn.dev/nananauno/scraps/259405f6aeaa90

参考アカウント

https://x.com/qqc1989 AXERA社中の人(DEV)らしき
https://x.com/kawagutt AXERA社中の人(JA)
https://x.com/hirotakaster LLM Module tester/contributer
https://x.com/HanxiaoM M5Stack社中の人(DEV)
https://x.com/M5Stack M5StackのBoss!
https://x.com/nnn112358 StickVのころからお世話になってます
https://x.com/ksasao StickVのころからお世話になってます
https://x.com/devemin ModuleLLMでROS動かす人
https://x.com/mongonta555 ModuleLLMにスタックチャンを宿らせる人

1
airpocketのアイコン画像
電子工作、プログラミング、AI、DIY、XR、IoT M5Stack / Raspberry Pi / Arduino / spresense / K210 / ESP32 / Maix / maicro:bit / oculus / Jetson Nano / minipupper etc
ログインしてコメントを投稿する