そんな日もある

自宅サーバー故障後G-Suiteに乗り換えて、のんびり更新中

Raspberry Pi 4 Model BのOSをTrixie(Debian 13)に変更したよ

2026年5月31日  2026年6月7日 

 元々、Raspberry Pi OS Bullseyeで動かしていましたが、今年の8月にEOSLを迎える為、Debian 13ベースのTrixieに移行することにしました。

そこでネックになったのが、以前記事にもしたSunFounder Pironmanケースです。
ステータスを表示するOLEDディスプレイや、LEDライティングとRGBファンの制御を担っています。
GitHubに公開されていますが残念ながら開発は止まっていてBullseyeでしか動きません。

そこで、Claudeに助言を得ながらテストを繰り返して無事にTrixie対応が出来ました。
ついでに手順書もClaudeに作ってもらったので、掲載しておきますね。

余談ですが、OLEDディスプレイは寿命で映らなくなったので、SunFounderから取り寄せました。青文字のOLEDでしたが、白文字OLEDになっていました。これはこれで、かっこいいw


Pironman インストール手順書

Raspberry Pi OS Trixie (Debian 13 / kernel 6.12) 対応版

 

項目

内容

対象ハードウェア

Raspberry Pi 4 Model B Rev 1.5

OS

Raspberry Pi OS Trixie (Debian 13)

カーネル

6.12.75+rpt-rpi-v8

pironmanバージョン

2.2.9

RGBピン

GPIO12 (PWM) ※SPI不可

⚠ Trixie (kernel 6.12) ではSPI (GPIO10) 経由のrpi-ws281xが動作しません。GPIO12 (PWM) を使用してください。

1. リポジトリの取得

cd ~

git clone https://github.com/sunfounder/pironman.git

cd pironman

2. 依存パッケージのインストール

2-1. aptパッケージ

⚠ libtiff5-dev Trixie に存在しません。libtiff-dev を使用します。

⚠ python3-rpi.gpio は非推奨です。python3-lgpio を使用します。

sudo apt update -y

sudo apt install -y \

  net-tools python3-smbus i2c-tools \

  libtiff-dev libopenjp2-7-dev zlib1g-dev \

  libfreetype6-dev libpng-dev libxcb1-dev \

  build-essential python3-lgpio python3-dev python3-venv

2-2. pipパッケージ

sudo pip3 install psutil pillow --no-cache-dir --break-system-packages

sudo pip3 install rpi-ws281x --break-system-packages

3. /boot/firmware/config.txt の設定

以下の内容を確認・追記してください。

sudo nano /boot/firmware/config.txt

 

【追加・確認する設定】

dtparam=i2c_arm=on

dtparam=spi=on

dtparam=audio=off          # PWM RGB使用時はoffが必要

dtoverlay=gpio-poweroff,gpio_pin=26,active_low=0

dtoverlay=gpio-ir,gpio_pin=13

[all]セクションの整理】

[all] セクションが複数に分かれている場合は以下のようにまとめてください。

[cm4]

otg_mode=1

 

[cm5]

dtoverlay=dwc2,dr_mode=host

 

[all]

enable_uart=1

dtoverlay=gpio-poweroff,gpio_pin=26,active_low=0

dtoverlay=gpio-ir,gpio_pin=13

⚠ core_freq=500 / core_freq_min=500 SPI用の設定です。PWMを使う場合は不要なので追加しないでください。

4. pironman のインストール

cd ~/pironman

sudo python3 install.py --skip-config-txt

⚠ --skip-config-txt を付けることで config.txt の上書きを防ぎます(手順3で設定済みのため)。

5. 設定ファイルのパス修正

pironman の各スクリプトは /opt/pironman/config.txt をハードコードで参照しています。実際の設定ファイルは ~/.config/pironman/config.txt にあるため、シンボリックリンクを作成します。

sudo ln -sf ~/.config/pironman/config.txt /opt/pironman/config.txt

リンクの確認:

ls -la /opt/pironman/config.txt

  → /opt/pironman/config.txt -> /home/sfukasawa/.config/pironman/config.txt と表示されればOK

6. /usr/local/bin/pironman の修正

シェルスクリプトの設定ファイルパスもハードコードされているため、修正版に差し替えます。

sudo cp pironman_fix/pironman /usr/local/bin/pironman

sudo chmod +x /usr/local/bin/pironman

pironman_fixは、ここに置いておきます。


修正内容の要点:

• SUDO_USER からログインユーザーのホームディレクトリを取得

• ~/.config/pironman/config.txt を優先参照

• /opt/pironman/config.txt にフォールバック

7. systemd サービスファイルの修正

デフォルトのサービスファイルには2つの問題があります。

• After= 行にインラインコメントが混入している(systemd は不可)

• HOME 環境変数が未設定のため設定ファイルを見つけられない

sudo nano /usr/lib/systemd/system/pironman.service

以下の内容に書き換えてください:

[Unit]

Description=pironman service

After=multi-user.target

 

[Service]

Type=forking

Environment=HOME=/home/◯◯

WorkingDirectory=/opt/pironman

ExecStart=/usr/local/bin/pironman start

PrivateTmp=false

 

[Install]

WantedBy=multi-user.target

◯◯の部分は実際のユーザー名に変更してください。

sudo systemctl daemon-reload

sudo systemctl enable pironman.service

sudo systemctl start pironman.service

8. RGB ピンの設定(重要)

ピン

説明

Trixieでの動作

GPIO10 (SPI)

デフォルト設定

動作しない (kernel 6.12)

GPIO12 (PWM)

変更後の設定

正常動作

GPIO21 (PCM)

代替ピン

未確認

 

以下のコマンドでPWMに切り替えてください:

sudo pironman -rp pwm

このコマンドは config.txt dtparam=audio を自動で off に設定します。再起動が必要です。

sudo reboot

9. 動作確認

# サービス状態の確認

sudo systemctl status pironman.service

 

# 設定の確認

sudo pironman -c

 

# 画面常時点灯テスト

sudo pironman -al on

10. ソースファイルの修正(重要)

オリジナルのソースファイルはTrixie環境で動作しない箇所があります。以下の修正が必要です。

10-1. ws2812_RGB.py の修正

DMAチャンネルを10から5に変更します(kernel 6.12対応)。

sudo sed -i 's/LED_DMA=10/LED_DMA=5/g' /opt/pironman/ws2812_RGB.py

grep LED_DMA /opt/pironman/ws2812_RGB.py  # 確認

10-2. system_status.py の修正

getCPUuse() top コマンド出力フォーマットがTrixieで変更されたため、/proc/stat から直接読み込む方式に変更します。

sudo nano /opt/pironman/system_status.py

以下の関数を書き換えてください:

def getCPUuse():

    try:

        with open('/proc/stat') as f:

            line = f.readline()

        fields = [float(x) for x in line.strip().split()[1:]]

        idle = fields[3]

        total = sum(fields)

        CPU_usage = round(100.0 * (1.0 - idle / total), 1)

        return CPU_usage

    except Exception as e:

        print('getCPUuse: %s' % e)

        return 0.0

10-3. main.py の修正

以下の3箇所を修正します。

 

① GPIO初期化順序の修正(GPIO12/PWM競合解消)

GPIO.setmode() の呼び出しをRGB初期化の後に移動します。

 

電源ボタン処理をoled_okブロックの外に移動

OLEDが動作していない場合でも電源ボタンが効くようにします。

 

③ PillowAPI対応

sudo sed -i 's/text_width, text_height = font_12.getsize(.POWER OFF.)/bbox = font_12.getbbox("POWER OFF"); text_width = bbox[2] - bbox[0]; text_height = bbox[3] - bbox[1]/' /opt/pironman/main.py

④ rgb_pin を設定ファイルに保存・読み込みするよう修正

tryブロック内に以下を追加:

    rgb_pin = int(config['all']['rgb_pin'])

exceptブロック内のconfig['all']に以下を追加:

    'rgb_pin': rgb_pin,

修正済みの main.py は別途提供されたファイルを使用してください。

sudo cp main.py /opt/pironman/main.py

sudo systemctl restart pironman.service

        修正済みのmain.pyは、こちらに置いておきます。 

11. 運用上の注意

pironman の起動・停止・再起動は必ず systemctl 経由で行ってください。

    sudo systemctl restart pironman.service

⚠ sudo pironman restart 2重起動を引き起こしOLEDが乱れます。必ずsystemctlを使用してください。



ー記事をシェアするー
B!
タグ

記事を検索しちゃう?

よく見られちゃってる記事・・・