RaspiOSに挿すだけでIPを表示するデバイスという記事があったのだけど、制約条件も多い。

C4KEW4LK/rpi_usb_ip_display: small usb micro controller with built-in LCD, designed to query a host rpi system and retrieve the ip address(es) and hostname of the system
記事では、Waveshare RP2350-LCD-1.47-Bを使っている。USB HIDでキーボードを模して、コマンドを送って結果をシリアル経由で取得してLCDに表示しているようだ。
起動時に自動ロクインしていない場合は、利用できない。ということは、GUI環境かな? わたしはLite環境を使うことが多いので、そのままでは使えそうにない。
前に試したUSBディスプレイの認識にフックをつけて、アドレスを表示させたら楽だろうか?
USBディスプレイが挿さったイベントをudevで拾って、systemd サービスでスクリプトを実行し、そのスクリプトで IPアドレスを表示させるという流れ。しかし、事前に設定が必要な事前の準備が多すぎて、イマイチ実用的ではなさそう。
できれば、素のRaspiOSに差し込んで動くようなのがほしいところだ。
ざっくりATOM S3Rを使ってでできないかなと思ったけど、先ほどの記事の制約からは逃れられない。
それでも少し思考実験してみよう。
USB HIDで起動して、入力した値をUSBシリアルデバイスにリダイレクトするようなことはできるけど、Desktopではキー入力はフロントアプリへの入力になってしまうので、無条件に動作するようにはできない。Liteのコンソールでは、ユーザー名とパスワードが必要になってインストール環境に依存するので汎用とは言えない。
Desktopの設定によっては、Ctrl+Alt+Tを送ることで、Terminalが起動することもあるけど、フロントアプリによって100%保証される動作ではない。ただ、これを打ってもテキストは入力されないので実行してみても比較的安全ではある。この後、少し待って、シリアルに対してip addrコマンドを送るようなことはできるだろう。しかし、完全ではない。
Desktopの場合、Ctrl+Alt+F2でTTY仮想コンソールに切り替えもできるけれど、これもLiteと同じでログインの処理が必要になってしまうので現実的ではない。
CDC Etherで実装して、ATOM側でDHCPサーバーを運用するという手もあるけど、Arduinoからは実装が難しく、ESP-IDFでもほとんど実績がない。
シリアルコンソールを有効に設定して、USBシリアルに割り当ててやるという手もあるな。しかし、これも事前設定はいるけど。
うーん、詰んだかな。
やっぱ、mDNSで名前引きさせるというのが妥当なんだろうね。Rendezvousを考えたAppleのエンジニアは偉大だ。

100円投げ銭 https://kinneko.booth.pm/items/1963720
オリジナル投稿:
挿すだけでIPを表示するデバイス|kinneko|pixivFANBOX
https://kinneko.fanbox.cc/posts/11073254



