とにかく一番小さくて安いので遊びたい!AliExpressでLuckfox Pico Mini Bという1029円の超小型のLinuxボードを購入しました。Cortex-A1 1.2GHz(x1)、メモリ 64MB、ストレージ Flash 128MBと組み込み向けのLinuxボードですが、これを普通じゃない使い方をして遊びます。

Ubuntuをインストールして、Apache、MySQL、PHP、WordPressというごく一般的に使われているソフトウェアを、普通これでは使わないだろってゆうデバイスに入れます。

デフォルトではBusyBoxという、組み込み向けのシステムがインストールされています。Mini AとBはFlashの有無で、128MBのメモリにOSのインストールが可能です。今回はこのOSは使いません。ファームウェアの書き込み方法などのチュートリアルを参考にしながらドライバーや書き込みソフトを用意しておきます。

目次

(1) Ubuntuのセットアップ
(2) UnixBenchをインストールする
(3) Webサーバーの構築
(4) MariaDB (MySQL)のインストール
(5) WordPressでブログを作る
(6) SDカードのバックアップを取っておこう
(7) Cloudflareでインターネットに公開する
(8) 消費電力を測ってみた
(9) Lチカしてみる
(10) Claude Codeをインストールする
(11) Luckfox Lyra Ultra がよさそう


(1) Ubuntuのセットアップ

ターミナルの接続方法

シリアルコンソールが使えるので、適当なUSB-TTLシリアル変換アダプターを使用し、UART2_TX, UART2_RX, GNDに接続します。電源はUSBから取ることにします。

Teratermなどで接続するとシリアルからログインできます。ネットワーク接続ができるようになるまではしばらく重宝します。

Ubuntuをインストールする

この動画を参考にして、Ubuntuのイメージをダウンロードしようとしたら、なんとUbuntuのファイルが削除されていました。公開停止になったのでしょうか。困ったな。どこかに落ちてないかなぁと探してたら、LuckfoxのフォーラムでURLがありました。正直得体の知れないものなので自己責任で。あとは動画を参考にSDカードに書き込み、LuckfoxのFlashを消去して、SDカードを挿入して電源を入れれば起動するはずです。

ログインするユーザーは2種類あります。起動画面に表示されていますが、root(パスワードroot)と、pico(パスワードluckfox)です。picoからsudoできますが、面倒なので以下はrootで行うことにします。

インターネットに接続できるようにする

先ほどの動画の手順を行うと、Windows側からsshでLuckfoxにログインできるようになります。しかしLuckfoxからはインターネットには接続できません。そこでWindowsのインターネット共有機能を使います。コントロールパネルのネットワークアダプターのLuckfoxのプロパティでIPアドレスを設定した場合はDHCPに戻しておきます。

そして、今度は普段インターネット接続に使用しているネットワークアダプターのプロパティを開き、共有の上の方のチェックボックスをチェックします。ホームネットワーク接続は、Luckfoxのアダプタ名を選択します。

そうしたらLuckfoxで以下のコマンドを実行すると、DHCPサーバーから新しいIPアドレスを取得して更新されるはずです。ip a コマンドで新しいIPアドレスになっているか確認してみましょう。

dhclient -v usb0
ip a

192.168.137.77 というIPアドレスが取得できましたね。

root@luckfox:~# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
2: usb0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 3a:91:cb:xx:xx:xx brd ff:ff:ff:ff:ff:ff
    inet 172.32.0.70/16 brd 172.32.255.255 scope global usb0
       valid_lft forever preferred_lft forever
    inet 192.168.137.77/24 brd 192.168.137.255 scope global dynamic usb0
       valid_lft 604790sec preferred_lft 604790sec

ためしにインターネット接続に接続できているか、自分のグローバルIPアドレスを調べてみましょう。

curl ifconfig.io

ifconfig.io/all.json だとjsonで取得できるらしい。

mDNSでホスト名でアクセスできるようにする

毎回IPアドレスを指定するのは面倒なのでavahi-daemonをインストールします。

hostnamectl set-hostname luckfox
apt update
apt install -y avahi-daemon
systemctl enable --now avahi-daemon
systemctl status avahi-daemon

これでWindowsから luckfox.local でアクセスできるはずです。

繋がるけど20秒くらいかかる場合、内部のIPアドレスが重複して配信されることがあります。直し方がわからないので諦めてIPアドレスでアクセスするか、待ちます。

自動でインターネットに接続したい

Luckfoxを再起動するとインターネットに接続できなくなってしまいました。どうやら dhclient -v usb0 コマンドを再度実行しないといけないみたいです。これは面倒なので自動的に接続できるようにします。

network:
  version: 2
  renderer: networkd
  ethernets:
    usb0:
      dhcp4: true

ファイルを作成したら適用します。/runの容量不足でエラーが出るので一時的に12→24MBに変更してみます。

chmod 700 /etc/netplan/50-usb0-dhcp.yaml
mount -o remount,size=24M /run
netplan try (エラーが出なければENTERを押す)
netplan apply
shutdown -r now

最後に再起動して自動的に接続するようになったか確認してみましょう。

一応これでうまくいったかのように見えたんですが、Windowsを再起動したらIPアドレスを自動取得できませんでした。Windowsのネットワーク共有を一旦無効にして、再度設定しなおしたら繋がるようになりました。

コンソールにアクセスできなくなった??

ここまでずっと調子が良かったんですが、電源を抜いて再度接続したら、シリアルコンソールに以下のエラーが出て止まってしまいました。

[   31.226696] ttyFIQ ttyFIQ0: tty_port_close_start: tty->count = 1 port count = 2

Luckfox側のUSBケーブルを抜き、Teratermを終了、USBシリアルアダプターから+5Vをジャンパワイヤーで取ってきてLuckfoxのVBUSに与えると正常に起動するようになりました。しかし起動時にUSBが刺さってるとTTY出力が無効になってしまいます(OSの起動はできてる)。

いろいろと調べてみると、adbdが起動するとシリアルコンソールを切り替えてしまうようです。ネットが繋がっているならsshで接続した方が早いですが、ネットもシリアルも繋がらない場合は困ったもの。そんな場合はADBを使用してアクセスしましょう。

adbでコンソールにアクセスする

ADB Platform-Toolsをダウンロードして、adbコマンドを実行します。

(1) 接続されているか確認
$ ./adb.exe devices
List of devices attached
xxxxxxxxxxxxxxxx       	device

(2) ログインする
$ ./adb.exe shell
# bash
bash
root@luckfox:/#

すごくあっさりログインできてしまいました。しかしCTRL+Cを押すとadbコマンド自体が終了してしまって、使い勝手は良くないです。あくまで非常用として使って、普段はsshでログインするのがいいかもしれません。

目次へ戻る▲


(2) UnixBenchをインストールする

せっかくなのでベンチマークをしてみます。まずは必要なソフトウェアをインストールします。/runの容量不足対策のため一時的に変更します。

mount -o remount,size=24M /run
apt-get install libc6-dev gcc make perl perl-modules git

次はUnixBenchをインストールします。

git clone https://github.com/kdlucas/byte-unixbench.git
cd byte-unixbench/UnixBench/
make

コンパイルが完了したら実行してみます。UnixBenchは非常に長いテストなので、今回は整数と浮動小数点のベンチマークだけを行います。

./Run dhry2reg whetstone-double

結果

   #    #  #    #  #  #    #          #####   ######  #    #   ####   #    #
   #    #  ##   #  #   #  #           #    #  #       ##   #  #    #  #    #
   #    #  # #  #  #    ##            #####   #####   # #  #  #       ######
   #    #  #  # #  #    ##            #    #  #       #  # #  #       #    #
   #    #  #   ##  #   #  #           #    #  #       #   ##  #    #  #    #
    ####   #    #  #  #    #          #####   ######  #    #   ####   #    #

   Version 6.0.0                      Based on the Byte Magazine Unix Benchmark

   Multi-CPU version                  Version 5 revisions by Ian Smith,
                                      Sunnyvale, CA, USA
   May 21, 2025                       johantheghost at yahoo period com

------------------------------------------------------------------------------
   Use directories for:
      * File I/O tests (named fs***) = /root/byte-unixbench/UnixBench/tmp
      * Results                      = /root/byte-unixbench/UnixBench/results
------------------------------------------------------------------------------

Use of uninitialized value in printf at ./Run line 1638.
Use of uninitialized value in printf at ./Run line 1892.

1 x Dhrystone 2 using register variables  1 2 3 4 5 6 7 8 9 10

1 x Double-Precision Whetstone  1 2 3 4 5 6 7 8 9 10

========================================================================
   BYTE UNIX Benchmarks (Version 6.0.0)

   System: luckfox: GNU/Linux
   OS: GNU/Linux -- 5.10.160 -- #8 Thu Mar 13 21:14:48 CST 2025
   Machine: armv7l (armv7l)
   Language: en_US.utf8 (charmap="ANSI_X3.4-1968", collate="ANSI_X3.4-1968")
   CPU 0: ARMv7 Processor rev 5 (v7l) (48.0 bogomips)

   15:14:25 up  1:10,  1 user,  load average: 10.72, 10.76, 10.81; runlevel Sep

------------------------------------------------------------------------
Benchmark Run: Sat Jul 12 2025 15:14:25 - 15:19:09
1 CPU in system; running 1 parallel copy of tests

Dhrystone 2 using register variables        4467453.1 lps   (10.0 s, 7 samples)
Double-Precision Whetstone                      967.6 MWIPS (10.1 s, 7 samples)

System Benchmarks Partial Index              BASELINE       RESULT    INDEX
Dhrystone 2 using register variables         116700.0    4467453.1    382.8
Double-Precision Whetstone                       55.0        967.6    175.9
                                                                   ========
System Benchmarks Index Score (Partial Only)                          259.5

なるほど~。

比較のために M5Stack Module-LLM とRyzen 7 1700(8コア/16スレッド) 3GHzのサーバー上で14スレッドを割り当てた仮想マシン(Ubuntu 24 Desktop)でもベンチマークしてみました。カッコ内はシングルコアの結果です。

実行マシンdhry2regwhetstone-double
Luckfox Pico Mini B389175
M5Stack Module-LLM1144 (576)594 (299)
Ryzen 7 1700 (VM 14thread)28873 (3384)12981 (1114)

LuckfoxはRV1103 Cortex-A7 1.2 GHzのシングルコア、Module-LLMはAX630C Cortex A53 1.2 GHzのデュアルコア、とアーキテクチャの違いもあってかシングルコア性能も高いですね。そしてRyzen 7の結果は仮想マシンなので本来のCPUの性能は出せてませんが桁違いです。まぁ組み込み向けのデバイスはこうゆう用途で使うものじゃないですから結果は参考までに。

目次へ戻る▲


(3) Webサーバーの構築

次はWordPressに必要なWebサーバーの構築を始めます。Apacheを使うのが一般的ではありますが、Luckfox Pico Mini Bはメモリが64MBしかないので、大量のメモリを必要とするApacheでは無理があります。まぁスワップメモリが1GB設定されているので動くことは動くでしょうけど、きっと現実的ではないでしょう。ということでWebサーバーはNginxをインストールします。実はNginxは初めて触るので何もわかってません。

NginxとPHP-FPMのインストール

NginxやPHP、PHPのモジュール、その他必要なソフトウェアをインストールします。

sudo apt update
mount -o remount,size=24M /run
sudo apt install -y nginx php-fpm php-mysql php-curl php-gd \
  php-mbstring php-xml php-xmlrpc php-intl php-zip unzip

インストールしたら “nginx: [emerg] socket() [::]:80 failed (97: Unknown error)” というエラーが出ました。KernelでIPv6が無効になっているとこうなるみたいです。/etc/nginx/sites-available/default を編集して listen [::] をコメントアウトします。

server {
        listen 80 default_server;
        #listen [::]:80 default_server;

再度テストして問題なければ再起動します。

nginx -t
systemctl restart nginx

念のためポートを見てみましょう。

# netstat -antlp
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      1860/nginx: master
tcp        0      0 0.0.0.0:5555            0.0.0.0:*               LISTEN      463/adbd
tcp        0      0 127.0.0.53:53           0.0.0.0:*               LISTEN      132/systemd-resolve
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      232/sshd: /usr/sbin
tcp        0      0 127.0.0.1:5037          0.0.0.0:*               LISTEN      463/adbd
tcp        0    140 192.168.137.95:22       192.168.137.1:61867     ESTABLISHED 804/sshd: root@pts/

ポート80でnginxが待ち受けてますね。

ブラウザでアクセスしてみる

PCからアクセスできるか試してみましょう。 http://luckfox.local/
にアクセスします。「Welcome to nginx!」と表示されたら成功です。最初のアクセスは時間がかかるかもしれません。もしタイムアウトしたりホストが見つからないエラーになる場合はIPアドレスでアクセスしてみてください。

Nginxの設定

新規ファイル /etc/nginx/sites-available/wordpress.conf を作成します。内容は最低限の例です。公開する場合は適切に設定してください。

server {
    listen 80;
    # server_name luckfox.local;
    server_name _;

    root /var/www/html;
    index index.php index.html;
    autoindex off;

    # for static file
    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    # for php file
    location ~ \.php$ {
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_pass unix:/run/php/php8.1-fpm.sock;
    }

    # for security
    location ~ /\.ht {
        deny all;
    }
}

保存したら新しい設定を読み込むようにします。nginx -tでエラーが出なければ再起動します。

rm /etc/nginx/sites-enabled/default
ln -s /etc/nginx/sites-available/wordpress.conf /etc/nginx/sites-enabled/
nginx -t
systemctl restart nginx

PHPの動作確認

PHPがNginxで実行できるようになったかチェックしてみましょう。ドキュメントルート /var/www/html/ にテストファイル info.php を作成します。

<?php phpinfo(); ?>

http://luckfox.local/info.php にアクセスするとPHPの情報が表示されます。サイトを公開する際はこのファイルがあると内部の情報が知られて危険なので、確認が終わったら削除しておきます。

目次へ戻る▲


(4) MariaDB (MySQL)のインストール

次はデータベースをインストールして初期設定を行います。

apt install mariadb-server
mysql_secure_installation
mysql -u root -p

データベースやユーザーを作成します。

CREATE DATABASE wordpress CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
CREATE USER 'wpuser'@'localhost' IDENTIFIED BY 'YOUR-PASSWORD-HERE';
GRANT ALL PRIVILEGES ON wordpress.* TO 'wpuser'@'localhost';
FLUSH PRIVILEGES;

接続できるかテストしてみましょう。

mysql -u wpuser -p -e "SHOW DATABASES LIKE 'wordpress'; USE wordpress; SHOW TABLES;"

なんか出てきたらOKです。

目次へ戻る▲


(5) WordPressでブログを作る

WordPressのインストール

次はWordPressをインストールします。今回は blog/ というサブディレクトリをブログ用に使いたいと思います。

cd /var/www/html
wget https://ja.wordpress.org/latest-ja.tar.gz
tar xfz latest-ja.tar.gz
mv wordpress blog
rm latest-ja.tar.gz
chown -R www-data:www-data blog

次は設定を行います。blog/wp-config.php を編集します。

cp -p blog/wp-config-sample.php blog/wp-config.php
// 接続先のDBの設定
define( 'DB_NAME', 'wordpress' );
define( 'DB_USER', 'wpuser' );
define( 'DB_PASSWORD', 'YOUR-PASSWORD-HERE' );

// 以降の8行は記載のURLから取得
define('AUTH_KEY',''); 

// 適当なところに追加(/* That's all, stop editing! Happy publishing. */より上に)
define( 'WP_HOME',    'http://' . $_SERVER['HTTP_HOST'] . '/blog' );
define( 'WP_SITEURL', WP_HOME );

WordPressのセットアップ

ブラウザで http://luckfox.local/blog/ にアクセスします。問題なければ以下のような画面が表示されるはずです。not foundになる場合はNgingの設定、ドキュメントルートは合ってるか、パーミッションは適切かを確認してみてください。

ここまで来たらもう特別なことはありませんね。画面の指示通り進んでいきましょう。セットアップが完了したら管理画面にログインします。

ちょっと重いですが無事WordPressが稼働しました!
せっかくなので記事を投稿してみましょう。画像をアップロードして、画像が正常に表示されることを確認してみてください。

きっともう忘れてるかもしれませんが、Luckfox Pico Mini Bのメインメモリは 64MB ですからね!やばいです。

root@luckfox:/var/www/html# free -m
               total        used        free      shared  buff/cache   available
Mem:              56          24           1           5          30          22
Swap:           1023         119         904

メインメモリの2倍もスワップメモリを消費しています。

目次へ戻る▲


(6) SDカードのバックアップを取っておこう

せっかく苦労してここまで構築したので、このへんでSDカードのバックアップを取っておきましょう。ファイルシステムがSDカードのやつって経験上すぐ壊れるんですよ。まずは電源を落とします。shutdown -h nowコマンドだとなぜか再起動してしまうのでhaltコマンドにしてみました。

halt

今回はWin32 Disk Imagerを使いましたが、もちろんお好きなものでかまいません。

容量が大きいので、ダウンロード後は圧縮しておくことをおすすめします。逆にリストアするときはイメージファイルを選択してWriteを押せばOKです。

余談ですが、サイトからソフト名を検索してダウンロードするときって不安になりますね。実際にSEO汚染というのが広がっていて、広告でなくても一番上にあるサイトが本物ではなく偽物で、マルウェアが入っているものがあるそうです。そんな世の中で、「窓の杜」って出てくると安心します。

ちなみに今回ファームウェアを書き込むソフトなどは、VMware Workstation上の仮想マシン上で行いました。用心に越したことはありません。VMware Workstationは実機に接続したUSBデバイスを仮想マシンに接続できるので、信用できるかわからないソフトを使わざるを得ない場合にとても便利です。

目次へ戻る▲


(7) Cloudflareでインターネットに公開する

従来のやり方

一般のご家庭でサーバーを公開するとなると、ルーターのポートを開けてNATでポート転送をするのが一般的だと思います(今はそうじゃない?)。プロバイダーから割り当てられたIPアドレスが固定IPアドレスではない場合、途中でIPアドレスが変わってしまう問題があります。それを回避するためにダイナミックDNSを使用したりします。

しかし複数のサーバーを公開したい場合、この方法ではすでにポートが使用されているので、プロキシなどで捌かないとそれぞれのサーバーに振り分けられません。外部からのポートを開けられないサービスを使用している場合は、この方法では公開できません。

Cloudflareはすごい

そこで便利なのが、こらから紹介するCloudflareです。Cloudflareならネットにアクセスさえできれば、どこからでも使用可能になる夢のようなサービスです。あの面倒だったLet’s Encryptのサーバー証明書も、もう自分で管理する必要はありません。勝手にやってくれます。それが無料。こんな便利なもの使うしかないですね。(今回の内容は無料でできる範囲のみ)。

ドメインの登録

はじめにCloudflareにドメインを登録する必要があります。ネームサーバーをCloudflareで管理します。すでにドメインを他のサーバーで使用している場合はとても影響が大きいので慎重に検討してください。ドメインの登録に関する作業は今回のLuckfoxには関係のない部分なので、詳しい説明は割愛します。「cloudflare サーバー公開 tunnel」と検索するとたくさん情報が出てきますので、詳しくはそちらを参考にしてみてください。

トンネルを作成する

トンネルを使うとLuckfoxとCloudflareが直接繋がります。たとえるならLANケーブルでCloudflareと繋がるようなイメージです。実際にはインターネットを経由して接続されていますが、Luckfoxから見るとそんな風に見えます。これを実現するためにcloudflaredというソフトウェアをインストールします。

Cloudflareでトンネルを作成

Cloudflareのダッシュボードにアクセスして、Zero Trust→ネットワーク→Tunnelにアクセスします。「+トンネルを作成する」を押して、トンネルの種類はCloudflaredを選択、するとトンネル名を聞いてくるので、自分がわかりやすいように適当に名前を付けておきます。

cloudflaredのインストール

インストール先の環境を聞いてくるので Debian, arm64-bit を選択します。

「マシンに cloudflared がインストールされていない場合」に記載のコマンドをコピペして実行します。

sudo mkdir -p --mode=0755 /usr/share/keyrings
curl -fsSL https://pkg.cloudflare.com/cloudflare-main.gpg | sudo tee /usr/share/keyrings/cloudflare-main.gpg >/dev/null
echo 'deb [signed-by=/usr/share/keyrings/cloudflare-main.gpg] https://pkg.cloudflare.com/cloudflared any main' | sudo tee /etc/apt/sources.list.d/cloudflared.list
sudo apt-get update && sudo apt-get install cloudflared

インストールが完了したら、左下の “sudo cloudflared service install” のコピーボタンを押して、シェルで実行します。機密性の高いトークン情報が入っていますので、取り扱いには注意が必要です。インストール時に/runが容量不足になるので一時的に変更しています。

mount -o remount,size=24M /run
sudo cloudflared service install ....

エラーが出なければ完了です。

接続されたか確認

画面の一番下に「接続済」と表示されたら接続成功です

以上でトンネルの設定は完了です。次回Luckfox起動時もcloudflaredが自動的に起動します。

トンネルとドメインを紐づける。

次に進むと「トラフィックのルーティング」という設定画面が表示されます。ここではドメインとトンネルの接続元であるcloudflaredを紐づけるための設定です。ホスト名は今回は luckfox にしました。ドメインはプルダウンメニューから選択します。

サービスのところが最初はちょっとわかりづらいかもしれません。これはcloudflaredからどこにアクセスしたらそのWebサーバーにアクセスできるのか、という視点で見ます。cloudflaredはLuckfox上で稼働していますから、HTTPでlocalhostのポート80に接続すれば、Webサーバーにアクセスできます。

アクセスしてみる

それではCloudflare経由でアクセスしてみましょう。
http://luckfox.local/ (今までのURL)
  ↓
https://luckfox.akibabara.com/blog/ (新しいURL)

表示されました!
あ、でも画像が表示されませんね。これはWordPressの設定が原因です。wp-config.php を修正します。WP_HOMEの http:// を https:// に変更します。

define( 'WP_HOME',    'https://' . $_SERVER['HTTP_HOST'] . '/blog' );
define( 'WP_SITEURL', WP_HOME );

これはCloudflare経由で https:// のURLでアクセスしているのに、WordPressがhttp:// のURLを出力しているために不一致になるからです。修正して再度リロードすれば正常に表示されました!

何のセキュリティ対策もしてないので、サイトやサーバーは非常に脆弱な状態です。今回は一時的な実験目的のためデフォルト設定のまま進めましたが、実際に公開する場合は十分なセキュリティ対策をおすすめします。

重くて何もできないからWeb関係全部止める

たった1つ apt install することすら5分かかっても終わらない…。当然と言えば当然ですが重くてまともに操作ができなくなってしまいました。WordPressでブログを公開するまで作って満足したのでもう止めましょう。

systemctl disable cloudflared
systemctl disable nginx
systemctl disable mariadb
systemctl disable php8.1-fpm
shutdown -r now
systemctl enable cloudflared
systemctl enable nginx
systemctl enable mariadb
systemctl enable php8.1-fpm
shutdown -r now

これでCloudflare、Nginx、MariaDB、PHP-FPMのオン・オフができます。ここから先の作業はもうWebは関係ないので止めちゃいましょう。

目次へ戻る▲


(8) 消費電力を測ってみた

Nordic SemiconductorのPower Profiler Kit II (PPK2)で電流値を測定してみました。

結果は5Vで166mAくらいでした。消費電力にすると0.83W、なんと1Wを切ってます。むしろこの消費電力でこれだけの性能を出せるってすごいと思います。

目次へ戻る▲


(9) Lチカしてみる

Lチカの動作確認

せっかくGPIOポートがあるので、チュートリアルを参考にLチカをしてみましょう。GPIO 55にLEDを接続して光らせてみます。

echo 55 > /sys/class/gpio/export
echo 1 > /sys/class/gpio/gpio55/value       
echo 0 > /sys/class/gpio/gpio55/value
echo 55 > /sys/class/gpio/unexport

問題なくLEDが光りました!

Pythonでのコントロール

まずはuv環境でPythonをインストールします。

curl -LsSf https://astral.sh/uv/install.sh | sh
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
uv init lchika
cd lchika
uv venv

チュートリアルの3. GPIO Control (Python Program) を実行することにします。このプログラムはGPIO 55にH/Lの値を出力して、GPIO 55, 54の値を読んでいるみたいです。入力もあるのでGPIO 54にはボタンを取り付けてみました。

必要なパッケージをインストールしたら実行してみましょう。

uv add python-periphery
uv run main.py

Pin state: False
Pin state: False

あー、なんかつまらないですね。
AIにもっと面白いプログラムを作ってもらいましょうか。

目次へ戻る▲


(10) Claude Codeをインストールする

node.jsとnpmをインストール後、Claude Codeをインストールします。めっちゃ時間がかかります。気長に待ちましょう。

curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash -
apt-get install -y nodejs
node --version
npm --version
npm install -g @anthropic-ai/claude-code

一応起動しました。ものすごく重いです。/ と打っただけで数十秒待たされます。何か入力する場合は直接入力せずに、コピー&ペーストした方が余計な処理が入らなくていいです。試しに先ほどのLチカのプログラムをAIに修正してもらいましょう。

ボタンを押したら3回LEDが点滅するプログラムを作ってもらいます。

これだけやるのに10分くらいかかりました。実行してみたところ、ボタンを押すと3回LEDが点滅しました。

うーん、もっと刺激が欲しいな。そうだ!フルカラーLEDモジュールを繋げて虹色に光るゲーミング仕様にしよう!そう思っていろいろ調べていたのですが、/dev/spidev2.0 がありません。modprobeしようにもKernelモジュールが1つもないんですよね。

root@luckfox:~/rainbow# modprobe spidev
modprobe: FATAL: Module spidev not found in directory /lib/modules/5.10.160
※/lib/modules/自体がない

Kernelを再ビルドするのは難しそうなので諦めます。デフォルトのBusyBoxなら問題ないんでしょうけど、Ubuntuでいろいろインストールして遊ぶのが今回の目的だったので、とりあえずこれにておしまいにしておきます。

目次へ戻る▲


(11) Luckfox Lyra Ultra がよさそう

Luckfox社の製品カテゴリー一覧に載ってなくて気づかなかったのですが、Luckfox Lyra Ultraという5cm角のLinuxボードがあるようです。こちらのスペックはメモリ512MB、ストレージがeMMC 8GB、LANとUSBポート付きという豪華さ。これならあのスワップ地獄からも逃れられそうです。ストレージも8GBあればUbuntuは入りそうです。Aliでは現在2700円くらいで売ってます。これならもう少し遊べそうかな?

目次へ戻る▲

LINEで送る
Pocket