最近考えてたんだけど、Pwnagotchiのこと。ちょっと久しぶりに作りたくなって。でも、昔のやり方だと、今のパーツじゃ動かないことが多いんだよね。特にRaspberry Pi Zero 2 WとWaveshareの新しいディスプレイの組み合わせ。
だから、自分用のメモも兼ねて、2024年版というか…最新版の作り方を残しておく。本当に動く、最低限のステップだけ。
で、何を作るの?
一言で言うと「持ち運びできるWi-Fiハンドシェイク収集機」。AIが顔文字で状態を教えてくれる、ちょっと可愛いガジェット。
でも、大事なことだから先に。これはあくまで教育と研究目的。許可なく他人のWi-Fiに何かするのは、ダメ、絶対。
必要なものリスト
基本的にはこれだけ。日本国内ならAmazonとかでだいたい揃う。PiSugar2は公式サイトから買うのもアリだけど、まあ、時間はかかるかも。そこはトレードオフだね。
| パーツ | 個人的なメモ |
|---|---|
| Raspberry Pi Zero 2 W | ヘッダーピンがはんだ付け済みのやつ。絶対そっちが楽。今からやるならZero Wじゃなくて「2 W」。64bitじゃないとOSが動かないから。 |
| Waveshare 2.13インチ e-Paper HAT (V4) | ここが一番のハマりどころ。V4じゃないと設定ファイルが違う。古い記事だとV2とかV3で、その通りやっても画面真っ暗になる。 |
| PiSugar2 | これがあるとモバイルバッテリーから解放される。Pwnagotchiを「ペット」として連れ歩くなら必須かな。 |
| MicroSDカード | 32GBあれば十分。それ以上は、まあ、趣味の世界。速度はそんなに気にしなくてもいい。 |
| Micro USBケーブル | 注意点。充電専用じゃなくて、データ転送できるやつ。意外と持ってない。100均のとかだと充電しかできないのが多い。 |
ステップ1:OSの準備
まず、SDカードにOSを焼く。公式イメージはもう更新されてないから、有志がフォークしたやつを使う。
GitHubで「pwnagotchi」で検索して、一番新しそうなリポジトリのリリースページへ。そこで「Raspberry Pi Zero 2 W」とか「64-bit」って書いてあるイメージをダウンロードする。これを間違えると起動しない。
ダウンロードしたら、Balena Etcherを使ってSDカードに書き込む。これはもう、画面の指示通りに進めるだけだから簡単。
ステップ2:PCとつなぐ(最初の関門)
OSを焼いたSDカードをラズパイに挿して、PCとUSBケーブルでつなぐ。ラズパイ側のポートは2つあるけど、真ん中の「USB」って書いてある方。
で、ここ。Windowsだと、たぶん最初はうまく認識されない。「USBシリアルデバイス」とか、そんな感じで見えるはず。
ネットワークアダプタとして認識させるために、RNDISドライバってやつを手動で入れる必要がある。これ、米国のフォーラムとかだと当たり前のように書いてあるけど、日本の記事だと意外とスルーされてたりする。
ドライバをダウンロードして、解凍して、`setup.inf`を右クリックして「インストール」。それでうまくいくはず。
成功すると、デバイスマネージャーの「ネットワークアダプター」に「USB Ethernet/RNDIS Gadget」ってのが現れる。これでやっと通信できる。
ステップ3:SSHでログイン
PC側でネットワーク接続の設定を開いて、さっきの「RNDIS Gadget」に静的IPを割り当てる。
- IPアドレス:
10.0.0.1 - サブネットマスク:
255.255.255.0
これで、Pwnagotchi(IPアドレスはデフォルトで10.0.0.2)と話せるようになる。
ターミナルからSSHで接続してみる。
ssh pi@10.0.0.2
パスワードは `raspberry`。ログインできれば、とりあえず第一段階はクリア。
ステップ4:ディスプレイとバッテリーの設定
ここからが本番。ハードウェアをちゃんと動かす設定。
ディスプレイ(Waveshare V4)
まず、ラズパイの電源を切って、ディスプレイをGPIOピンにしっかり差し込む。で、また電源を入れる。
この時点では、たぶんまだ画面は真っ暗なまま。設定ファイルをいじる必要がある。
sudo nano /etc/pwnagotchi/config.toml
このファイルを開いて、ディスプレイの設定を探す。で、こう書き換えるか、追記する。
ui.display.type = "waveshare_4"
`waveshare_v3`とかじゃなくて、`waveshare_4`。これがV4ディスプレイ用の設定。保存して、サービスを再起動。
sudo systemctl restart pwnagotchi.service
これで、ディスプレイに可愛い顔が表示されるはず。やっとPwnagotchiらしくなってきた。
バッテリー(PiSugar2)
これも後付け。まず、ラズパイとバッテリーをネジで固定する。物理的に。
次に、I2C通信を有効にする。
sudo raspi-config
「Interfacing Options」→「I2C」で有効にする。
そしたら、PiSugar2のプラグインをインストールする。これはもう、公式のコマンドをそのまま実行するのが一番早い。
# PiSugarのマネージャーをインストール
curl http://cdn.pisugar.com/release/Pisugar-power-manager.sh | sudo bash
# 必要なライブラリとプラグインをダウンロード
git clone https://github.com/PiSugar/pisugar2py.git
git clone https://github.com/PiSugar/pwnagotchi-pisugar2-plugin.git
# プラグイン用のディレクトリを作成
sudo mkdir -p /usr/local/share/pwnagotchi/installed-plugins/
# ライブラリとプラグインを正しい場所にリンクする
sudo ln -s ~/pisugar2py/ /usr/lib/python3/dist-packages/pisugar2
sudo ln -s ~/pwnagotchi-pisugar2-plugin/pisugar2.py /usr/local/share/pwnagotchi/installed-plugins/pisugar2.py
…ちょっと待って、Pythonのパスが環境によって違うかも。`python3.11`とか、自分の環境に合わせてパスは確認した方がいい。上の`python3`は汎用的な書き方。
最後に、また`config.toml`を編集して、プラグインを有効にする。
main.custom_plugins = "/usr/local/share/pwnagotchi/installed-plugins/"
main.plugins.pisugar2.enabled = true
main.plugins.pisugar2.shutdown = 5 # バッテリーが5%になったらシャットダウン
main.plugins.pisugar2.sync_rtc_on_boot = true
保存して、またサービスを再起動。これでディスプレイにバッテリー残量が表示されるようになる。%表示が出たときは、ちょっと嬉しい。
で、これからどうする?
これで、とりあえず「動く」Pwnagotchiができた。自立して、勝手にハンドシェイクを集めてくれる。
でも、これはスタート地点。`config.toml`には、もっと細かい設定がたくさんある。AIの性格を変えたり、特定のSSIDを無視したり。あとは、もっと面白いプラグインを探して追加していくのもいい。Bluetoothテザリングとか、GPS連携とか。
正直、一番楽しいのはこのカスタマイズの時間かもしれないね。
みんなはどんなプラグイン使ってるんだろう。もし「これ面白いよ」っていうのがあったら、ぜひ教えてほしいな。
