-- 20210114追記
多くの方にお読みいただけているようで光栄です。タイトルでは「SSHでログイン」とありますが、記事中にもあるとおり、SSHを導入すると不具合をきたします。本記事で実際に利用できる範囲は「シリアルでログイン」までです。
-- 追記ここまで
はじめに
SONYが出している「AIスマートホームゲートウェイ」 MANOMAをご存知ですか?(私は知りませんでした)
LTEモジュールが付いているルーターなんですけど、 OpenWRTベースで作られているデバイスらしいです。
今回はそんな OpenWRTルーター(違 をSSHでログインできるようにしていきたいと思います。
注意事項
なお、当然ながら自己責任でお願いいたします。 (ファームウェアの書き換えは発生しないので、技適適用外にはならないとは思うんですが、詳しくないので無線は切って使用するのがよいでしょう)
というかだめでした。この方法でSSHを有効にするとWWANがダメになり、DHCPも死ぬという現象が発生します。
手順(rootでログインする)
シリアル通信が必要になるので、適当な母艦PCとUSBシリアル変換みたいなのがあると良いです。
初心者すぎてそんなものは持っていなかったので、私はArduino UNO使ってます
あとはピンヘッダなどがついておらず、スルーホールになっていますので、片方がバネ付きのオスになってるケーブルがあると便利です。
殻割り
まずはシリアル通信するために本体を開封します。4つのネジとツメで固定されていてやらしー感じなんですが、 外側のカバー(メッシュのようになっているところ)を広げる感じでツメを外します。
配線
出てきた4つのピンにつないでいきます。 GND, TX, RXがわかればいいのでテスターでGNDを見つけて繋いでから、teratermなどでコンソール見つつTX, RXを特定していきます。
ボーレートは 115200です。
するとコンソールの出力がバーっとでてきます。普通に uboot とか見られるのでファーム作れる人はここから色々学ぶんでしょうね
起動オプションの変更
どうもUARTに使用しているGPIOとなにか(Z-Wave系?)が排他になっているようで、 そのまま起動してしまうと起動プロセス中にUARTが止まってしまいます。
起動オプションに ttyMSM0,115200n8
が含まれているとUARTが優先されるようなので(未検証)、
uboot の 環境変数 bootargs
を console=ttyMSM0,115200n8
に変更して起動します。
手順としては
- uboot のコンソールに入る(シリアル通信中、電源入れてからすぐ適当にKey連打する)
env set bootargs console=ttyMSM0,115200n8
を実行するrun bootcmd
で起動する
といった感じです。
ログイン完了
すると起動完了後、 Enter 押下でログインできると思います。
手順(SSHサーバーを導入する)
ここまでくれば opkg でパッケージ入れ放題!と思いきや
--------------------------------------------------------------- For those about to rock... (Chaos Calmer, r48067) Product Name: SHH-001 Image Version: 1.4.46.5 ---------------------------------------------------------------
Chaos Calmer
の文字。 OpenWRT 15.05.1には ipq806x
(←NCP-HG100にインストールされてる OpenWRTターゲット)がないぞ?!
手動でインストールする
というわけで、仕方がないので、適当にパッケージを拾ってきて入れます。
OpenWRTでは、opensshではなく、より軽量なdropbearが使われることが多いらしく、
ipq806x では dropbear_2017.75-1_ipq806x.ipk
というパッケージがありました。
https://archive.openwrt.org/snapshots/trunk/ipq806x/generic/packages/base/
これをUSBメモリなどに保存し、ルーターに差し込み、シリアル通信からログインしたコンソールで
opkg install dropbear_2017.75-1_ipq806x.ipk
を実行してインストールします。
依存パッケージとして libc があるので、それも入れます。 libc_1.1.16-1_ipq806x.ipk
(ここからきな臭くなってきます。)
最後に、
/etc/init.d/dropbear enable
で dropbear を起動時に有効にします。
ちなみに、起動できるかどうかを手動で確認したい場合は
/usr/sbin/dropbear
を実行してみるのが一番です。依存モジュールが足りないとかだとここで Not found といって怒られます。
動作確認
/etc/init.d/dropbear start
でdropbearを起動したら、おもむろにSSHします。 ssh root@192.168.132.1
(お
さいごに
ここまで書いておいてあれですが、この方法だと再起動後、様々な機能に不調をきたすようなのでより安定してdropbearが使えるようになる方法を探しています。
みなさんもよかったらぜひ、一緒にMANOMAをいじりませんか。
-- 20210114追記
dropbear を使えるようにビルドする方法を記事にしました。SSHご利用の際はこちらもご覧ください。
-- 追記ここまで