honeylab's blog

各種ハードウェアの改造、主にファミコンミニなどをやってます(ました)

ATOM Cam2にUSB-Ethernet変換アダプタを使って有線LANで使用する

件のATOMCamやATOMCam2は、基本的に自分の配下の無線LANに接続して使うように設定することが前提になっていますが、有線LANを使用したほうがいいような環境(電波状態)もあり、一部のユーザからは何でできないの、という声も上がっているようです。

というわけで、無理やりハックしてATOM Cam2を有線LANで使用できるように調整してみました。

必要なファイル類はここにあります。

github.com


SDカード上には、このリポジトリにあるTest.tarとscriptsフォルダをコピーしておきます

f:id:honeylab:20210626223630p:plain

Test.tarってなんだよ?っていう方はこの辺を参考にしてください。

qiita.com

 

物理的には、USB電源供給OTGケーブルを使用し、ATOM Camに電源を、ATOM Camからのホスト信号をUSB Ethernetアダプタに接続します。

(写真はハック用なので分解された姿です)

 

 たとえばこんなやつで

 

 

 

 

ちなみに、都合のいいことにASIX AX88772 などのUSB-Ethernetドライバがカーネルに組み込まれているため、これらは挿入するだけで認識されます。

未確認ですが、Realtek r8152のドライバもあるため、これも認識する可能性があります。

 

OTGケーブルは付属のケーブルと同一寸法ではないため、屋外に設置するのであれば
この部分をうまいことして防水性能を担保する必要があります。
付属のケーブルは電源の2本しか接続されていないため、このケーブルのA側を加工してもダメです。本体基板のUSBコネクタの信号を使用する必要があります。

 

Test.tar内の test.shの中身はこんな感じです。

github.com

 

このコードにより、本来のカメラアプリ「iCamera_app」の起動前にSDカード上のscripts/pre.shが、起動後にscripts/post.shが呼び出されます。

また、このスクリプトではtelnetdを立てていますので、Advanced IP scannerなどを使用してIPアドレスを確認した後、telnetでshellに接続することができます。

(ユーザ名は root 、パスワードは atomcam2 )

 

f:id:honeylab:20210626235425p:plain

 

pre.shの中身は

github.com

 

ここで、scripts/wpa_cli.shコマンドがミソになります。

github.com

ATOMCamの組み込みアプリでは、wlanの設定のためにwpa_supplicantや設定の取得のためにwpa_cliを外部コマンドとして実行し、結果を読み込むことでwlanの接続状態を取得したり、IPアドレスの確認を行っています。

wpa_cli -p /var/run/wpa_supplicant -i wlan0 STATUS | grep ip_address
wpa_cli -p /var/run/wpa_supplicant -i wlan0 STATUS | grep wpa_state

 内部的には↑のコマンドが呼び出されています。

なんと、これに必要なだけの応答を返すため、中身はたった4行です。ひどい。

#!/bin/sh

echo 'wpa_state=COMPLETED'
echo ip_addresss=`ifconfig eth0 | awk '/inet / {print $2}' | awk -F: '{print $2}'`

 

このwpa_cli.shを本来の/bin/wpa_cliにovermountし、

mount -o bind /media/mmc/scripts/wpa_cli.sh /bin/wpa_cli

 

iCamera_appから呼び出されるようにしてしまい、実際にはwlanではなくusb etherで通信を確立し、iCamera_appをだますことで有線LANを使用可能にすることができます。

 シリアルからifconfigして確認してみると、確かにwlan0の接続が確立していない状態、eth0のみipaddressが来ている状態でATOMアプリから接続ができています。

 f:id:honeylab:20210626231014p:plain

また、この状態でATOMアプリに新規登録する際、適当なSSIDとパスワードの組み合わせを入れておけば、無線LANを一度も使わずに登録ができることを確認しました。

 

さて、scripts/以下のファイルを変更する際に、Test.tarの変更は不要です。

そのため、scripts/pre.sh , scripts/post.sh の中身は自由に書き換えて、ハック用の追加コマンドを実行することができます。

  

突貫で作ってみましたが、とりあえず動いてはいるようです。
もし使う人が多いようならば不具合も出てくるでしょうし、その解決方法も出てくるでしょう。

まあ、とりあえず技術的にはできたよ、っていうことで。