2026/06/16 7:37
Wi-Fi スマート電球に内蔵された禁書図書館
RSS: https://news.ycombinator.com/rss
要約▶
日本語翻訳:
「Banned Book Library」プロジェクトは、安価な WiFi スマートボールを分散型で検閲耐性のある禁書アーカイブに変換し、不安定なクラウドサービスよりもローカルコントロールを重視し、Cory Doctorow の情報レジリエンス哲学と整合性を保ちます。ESP32C3 チップの限られた 4MB フラッシュストレージに対処し、外部メモリカード用の困難なハンダ付けを避けるために、開発者は Arduino IDE と ESP-IDF を用いてファームウェアをカスタマイズしました。具体的にはパーティションテーブルを変更して電子書籍用にスペースを割り当てるよう修正するとともに、Tasmota(ソースコードの複雑さから放棄された)に見られる平文で認証情報を格納するというセキュリティリスクを回避しています。本デバイスは、カスタム「safeboot」復旧メカニズムを備え、禁書理由とともに書籍リストを表示する Web インターフェースを内蔵しており、GPIO ピンを通じて LED の色温度を制御できる管理パネルも含まれています。DNS 劫奪を用いたキャプティブポータルを実装し、あらゆるデバイスからユーザーをローカルアーカイブへ誘導することで、物理的に分散されたネットワークによる情報レジリエンスを実現しています。今後のアップデートでは、AnalogWrite を用いた精密な RGB/ホワイト色制御や、ファイル共有のためのメッシュネットワーキングへの実験が含まれます。結局のところ、このプロジェクトは一般的なスマートホーム技術を堅牢なインフラストラクチャに転換し、日常のデバイスが重大なアーカイブ機能を受け持ち得ることを示すとともに、小容量というハードウェアの制約を特徴へと高め、保管者に最も重要な作品のみを選定するよう促しています。
本文
バンデッド・ブックライブラリー:禁止された書籍のためのサイバーパンク・デジタル・デッドドロップ
かつての WiFi 搭載スマートライトボールをハッキングし、「バンデッド・ブックライブラリー」というプロジェクトを開始しました。これは、禁止されている書籍や資料を隠れ家のように公開する、「サイバーパンクなデジタル・デッドドロップ」を目指すものです。
概要と着想
プロジェクトの背景
- アイデアの起源: ベン・ブラウンの小説『Library(図書館)』に触発されました。物語中では、有益なデータをデジタルアーカイブとして維持する「図書館」という設定があり、これに共感しました。
- コンセプト: 重要だが禁止されている書籍を WiFi ライトボール内に収め、コミュニティの場所に設置します。
- **「サイバーパンクなデジタル・デッドドロップ」*: 発見されにくく、放置されるのが理想です。
- コストパフォーマンス: デバイスは安価であり、街中に配置しても維持コストは低いと期待されます。
ハードウェアの選定:Tasmota
- オープンソースファームウェア: Tasmota を採用しました。
- クラウド非依存: クラウドサービスに依存せず、ローカル制御が可能です(ベン・ブラウンの小説や『Unauthorized Bread』と共鳴)。
- OTA 対応: 分解せずにファームウェア更新が可能(他のデバイスとは異なる利点)。
- 基板情報:
- チップ:ESP32C3(4MB)
- LED 制御用 GPIO ピン:
- 🔴 R (赤): GPIO6
- 🟢 G (緑): GPIO7
- 🔵 B (青): GPIO5
- 💡 CW (ウォームホワイト): GPIO3
- ❄️ WW (コールドホワイト): GPIO4
初期の課題
- メモリ不足: ESP32C3 のフラッシュメモリは4MBのみ。ファームウェア、Web サイト、書籍をすべて収めるのは困難でした。
- MicroSD の難しさ:
- デバイスの分解時に母基板から取り外すのが極めて困難(ゴム状のポッティングコンパウンドが硬く固着)。
- LED 制御回路の設計により、GPIO ピンの入出力を自由に使い回すことができません。
- ハンダ付けの壁: デバイスのケース内にはハンダごてが入らず、外部からアクセスする必要があります。
ハッキングとカスタマイズのプロセス
1. 分解と基板の確認
- ラジコンブレードを使い、白いプラスチックカップを剥がしdaughterボード(子基板)を外しました。
- 発見: motherboard(母基板)と daughterboard の間にあるアルミ製のアンテナは WiFi 信号の安定化のためのものであることがわかりました。
2. シリアル接続とプログラミング開始
- ハンダ付けでストレージを拡張するのは不可能なため、シリアル経由でのプログラム刷新を行いました。
- 準備作業:
- ESP32C3 のアンテナ部分を露出させる必要があります。
- 母基板からグランドライン(GND)を引き出し、IO9 をショートさせてダウンロードモードに設定します。
- 初期テスト:
を使用し、元のファームウェアをダンプして状態を確認しました。esptool
3. ストレージ容量の拡張(パーティションテーブル編集)
元々の構成では SPIFFS パーティションが 320KB しか確保されていませんでした。これを解決するために、パーティションテーブルを直接書き換えるリスクの高い操作を行いました。
-
既存の構成:
: 2880K (メインファームウェア)app0
: 320K (ファイルシステム ← 不足)spiffs
-
編集方針:
- メインファームウェアを縮小し、
パーティションを2MBに拡大しました。spiffs - これにより Web サーバー用ファイルや書籍データを格納可能となりました。
- メインファームウェアを縮小し、
-
技術的な壁と解決策:
- Arduino IDE の標準フレームワークでは、セキュリティ理由からパーティションテーブルへの書き込みが制限されていました。
- ESP-IDF の導入: 公式の ESP32 フレームワークに切り替え、
でidf.py menuconfig
を有効化しました。SPI_FLASH_DANGEROUS_WRITE_ALLOWED - Arduino as a Component: IDF の制御性を取りながら Arduino の利便性を併用する構成を採用し、カスタムライブラリの管理を自動化(
)しました。build.sh
4. セットアップとファームウェアの刷新
- Safeboot の重要性: メインファームウェアを OTA 更新するためには、WiFi 設定を含んだ最小限の Safeboot ファイルが必要です。
- Tasmota の標準 safeboot を使用すると WiFi クレデンシャルが暗号化せず保存されるためセキュリティリスク(OPSEC)があります。
- そのため、認証が必要な最小限のカスタムファームウェアを作成し、WiFi 接続なしでも OTA 更新が可能にしました。
- セットアップページ: デバイスを初めてブートすると、ファイルシステムを Flash するよう案内する Web ページが表示されます。
運用機能とユーザー体験
Web サーバーとインデックス
- デザイン: ベン・ブラウンの『Library』にオマージュし、黄色いコンテナとドアの画像を表示しています(「glitch」エフェクトを追加してハッキング感を出しました)。
- コンテンツ構成:
- 書籍情報(タイトル、著者、禁止理由)
- 外部リンクの参照(※アクセスポイント内 donc インターネット接続は不可)
管理機能 (/admin
)
/admin- パスワード保護: 管理者のみがアクセス可能です。
- LED 制御:
で各色の明るさを調整できます。AnalogWrite()- パブリック設置時に、周囲の照明や以前の設置と異なる色温度にならないよう、設定を NVS に保存しています。
キャプティブポータルの実装
- 自動アクセス: ユーザーがオープンアクセスポイントに接続した際、ブラウザを自動的に図書館の Web サーバーへ誘導します。
- 手法:
- 従来の HTTP リダイレクトではなく、HTTPS に対応するため多様なクライアント(Windows, Android, iOS, Firefox 等)向けのカスタムリクエスト(
,/generate_204
など)を検知して誘導します。/connecttest.txt
- 従来の HTTP リダイレクトではなく、HTTPS に対応するため多様なクライアント(Windows, Android, iOS, Firefox 等)向けのカスタムリクエスト(
まとめと展望
サイズ制限の美学
- 限られた容量: 4MB のメモリにより、EPUB ファイルは各約 350KB と小型のものに限られます。
- この制約こそが、どの書籍を「重要視して」デッドドロップに設置するかを考えるきっかけになります。
- 「全てを揃える」のではなく、「選ぶ」という行為自体に意義があると考えます。
今後のアイデア
- コントロールカラー: スライダーを追加し、RGB およびホワイトの色温度を微調整できるようします(既存照明との調和)。
- メッシュネットワーキング: デバイス同士をリンクさせ、接続可能な範囲内ですべての書籍にアクセスできるようにする仕組みを検討中です。
ESP32 の可能性
- 非常に安価でありながら高性能な ESP32 チップは、スマートデバイスのリユースプロジェクトにおいて極めて魅力的です。今回の経験で学んだことを活かし、更多なるハッキングプロジェクトを計画しています。