Yoctoを使ってラズパイ4をセットアップ
source oe-init-build-env
sudo sysctl -w kernel.unprivileged_userns_clone=0
bitbake core-image-base
sudo dd if=tmp/deploy/images/raspberrypi4/core-image-base-raspberrypi4.rpi-sdimg of=/dev/sdd bs=4M status=progress
効率化
本体はこっち
参考サイト
LCD
頑張ったらいけるのだろうか?
Raspberry pi 4 に iPhone をLightningケーブルでつなぐとFTP経由で中身がみれる仕組みを作ったはなし
このAI時代に個人ブログを残すことの意味はあるのかと思いつつ。色々苦労したことを内に留めておくよりかはこうやって吐き出すことでスッキリするという側面もあるかなと思ったので書いてみる。
USBメモリを挿すと同様にFTP経由で中身が見れます。
基本的に ChatGPTに聞きまくって作った
どういうものを作ったのか?
iPhone を Lightningケーブルで Raspberry Pi 4 に接続すると FTP経由でパソコンから iPhone の中身が見れるシステムを作成しました。また、USBメモリの中身も Raspberry Pi 4 に挿すと FTP経由で見ることができます。
なぜ作ったのか?
とある現場では セキュリティの関係上、許可されていないデバイスをパソコンに接続することができないようになっており、パソコン間のデータのやり取りがネットワーク経由でなければならないが、ネットワークもセグメントが異なっているようなケースでは受け渡しが不便なのでローカルエリアに限った場合であればFTPサーバーのようなゲートウェイ機器を接続することでデータの受け渡しをスムーズにできるのではないか?という技術的興味があった。
仕組み
先に述べたとおりではありますが、iPhone を Raspberry Pi 4 に挿すと, /run/media/iphone
に iPhone がマウントされます。 FTPサーバーは /run/media
をルートディレクトリとしているので、FTPクライアントからは /iphone
フォルダが見えます。画像データを見たければ /iphone/DCIM
フォルダを見ればその中にあります。USBメモリもほとんど同じしくみで動作していて、USBメモリを挿すと /run/media/system
の下に USBメモリのラベル名でフォルダが作成されます。
iPhoneの接続部分
iPhone は USBメモリのようにデフォルトではマウントできないので、ChatGPTに 「iPhone を USB でつないで、写真(DCIM内の画像)を自動転送 or 任意操作で転送できるようにするには」という問いを投げました。そうすると以下のように答えてくれました。
必要なソフトウェアスタック
- libimobiledevice
Apple のプロトコル(usbmuxd, lockdown, afc, etc.)を扱う OSS ライブラリ。 - usbmuxd
iOS デバイスと USB 越しに通信するためのデーモン。libimobiledevice の基盤。 - ifuse(任意)
iPhone を FUSE を使ってマウントできる CLI ツール(内部に afc を利用)。 - udev + usbutils(任意)
USB接続検知などに必要。
libmobiledevice
については以下のリンクにソースがあります。
このあたり、 Yocto を構築してよしなにやってくれるようにしたので、いまいち仕組みがわかっていませんが私が作成した Yocto のレシピは以下のリンクのあたりに置いてあります
⇡これなんで必要だったかもはや覚えてないですが、これがないとおそらく iPhone を認識するデーモンが起動してくれないんだと思います。
idevicepair
というコマンドを使うと iPhone をペアリングするので、ペアリングがスタートしたら iPhone 側で許可してあげる必要があります。(この動作は Windows を使ってても同じ)
USBメモリ
FTPサーバー
LCD出力
タッチはない。今後の課題