昔SDカードにWiFiが入ったEYEFIというカードがあったのですが、会社が無くなって、販売されなくなりました。
またこの会社のパソコンのアプリはインターネットのサーバと連携していたため。アプリも使用できなくなり、通常のメモリーカードとしか利用できなくなりました。
現時点での推測での仕様を書いてみます。
まずSDカードはメモリとWIFIとマイコンが入っていると考えられます。
パソコンにUSB変換モジュールでSDカードを挿すと、専用のアプリと連携しました。
これはSDIOなどではなく、SDのFAT32にあるEYEFIというディレクトリにリクエストのファイルを書き込むと、レスポンスファイルが作られるという仕組みのようです。
この仕組みを解析した人がいてeyefi-configというオープンソースがあります。
この仕組でカードのユニークなKEYとMACアドレスの取得、またWiFiアクセスポイントへの接続設定を行うことができます。
WiFIにつながれば、パソコンのアプリとはそれで通信ができます。IP亜土ですはDHCPで取得します。
カードにはHTTPサーバがありUSB接続して取得した情報でアクセスして、ファイルのコピーなどが出来るようです。 どうもカードからリクエストしてPCなどでLISTENしてるポートにつながるようです。カード側が主導で動いているようです。カード側にサーバを入れると大掛かりになるので、クライアント機能のみのようです。
カードがサブネットのすべてのホストにARPのスキャンをしたり勝手にポートに接続にきたり、かなりお行儀が悪いです。
デジカメなどでEYEFI対応のものは、SDに画像データを書き込んだ時に、上記のリクエストでファイルを書き込んだ事をマイコンに伝えてファイルリストのアップデートしているのではないかと思われます。
また、おそらくSDカードはインターネットとは直接は接続してなくて、PCのアプリがインターネット接続したのではないかと思われます。
カードからapi.eye.fiにアクセスして、ファイルの送信が行われていたようです。すでにこのサーバは存在しないのでDNSでエラーになります。
mrubyでeyefi-config相当の処理を実装して、テストでアクセスポイントへの接続を試してみたのですが、うまくいきません。アクセスポイントとの相性でしょうか。。。
アクセスポイントのログです。
2023/01/21 08:45:06 AUTH ath0: STA 00:18:56:xx:xx:xx IEEE 802.11: deassociated
2023/01/21 08:45:06 AUTH ath0: STA 00:18:56:xx:xx:xx IEEE 802.11: deauthenticated due to local deauth request
2023/01/21 08:45:03 WIRELESS ath0: had associated successfully : 00:18:56:xx:xx:xx
何回か試していたら、つながることがありました。相性かな。。。
WiFiのAPを登録して挙動をしらべたところ、ARPして返ってきたら59278ポートにhttpで以下の仕様のリクエストを送ってくるようです。
WiFiのAPの設定があると連続して100mA以上食うみたいなので、SDカードとしてのみ使う場合にはAPの設定を消したほうがよいです。それでも定期的に処理が動くようで、その時は100mA以上使ってしまうようです。バッテリー駆動では使わないほうが賢明です。