TermuxをAndroidTV準拠ストリーミング・メディア・プレーヤAmigo 7xJPで

AndroidTV準拠ストリーミング・メディア・プレーヤAmigo 7xJPTermuxをインストールして各種サーバを走らせてやろうという話。

常時起動状態を確保

リモコンで表面上電源を切った状態では実際には電源は落ちておらず,現にGoogle Castのキャスティングを他のスマホなどからすることができる。なのでいわば「根本から」電源を絶たれでもしない限りサーバとして使うことに支障はまったくない。Wake-On-LANでなんとかなるか,スマートプラグを利用して外からコントロールするか,などとちょっと考えたがそんな必要は全くなかった(当たり前?)。

ただし,テストしていると少なくともアプリレベルでは固まってしまうことがある。現在は完全に電源を落として入れ直すことで再起動させて問題を解消させている。ところが最終的にAmigo 7xJPは他人様のお宅に収まって,そのときには私が簡単に手動で再起動させることはできなくなる。そこでそういう状況になっても遠隔で強制的に再起動できるよう,保険の意味でスマートプラグを介して電源供給しておくようにするのは賢明なことかもしれない

固まるアプリは具体的には今のところホームアプリ(ランチャーアプリ)。NewPipeアプリでYouTubeビデオを再生して,ホーム画面に戻ることで再生をバックグラウンドで継続させる。その一定時間後,スクリーンセーバのフォトフレームアプリが起動する。その後リモコンのホームボタンを押すと,真っ黒な画面になってうんともすんともいわなくなる,といった具合。 ⇦ “Termux環境下でアプリを強制終了” で限定的に対処。

さらに,起動時にmicroSDカードを認識しなかったことが一度あった。理由は全く不明。ひょっとして暑かったから?

Termux関係のアプリのインストール法

Google Play StoreにあるTermuxアプリには以下のような注釈が付けられている。したがって,Termux本体含め関係アプリは全てF-Droid から入手する必要がある

NOTE: Updates over Google Play is currently halted due to technical reasons. In the meantime, see https://github.com/termux/termux-app#installation for alternative installation sources.

Termux Google Play – Termux Wiki” にもう少し詳しい背景の説明あり。

Termux:APIはアプリをインストールするだけではダメで,以下のようにtermux-apiをインストールする必要がある。

pkg install termux-api

最初Play Store版をインストールして起動してみたところ, “unable to install the bootstrap packages” というエラーが出た。 “termux was unable to install the bootstrap packages” when I open Termux · Issue #1761 · termux/termux-packages · GitHub” にあるように内部ストレージに移動することで解消。これはうかつなことに「どんなアプリも強制的に外部ストレージにインストールできるようにする」という開発者オプションをオンにしていたせいかもしれない。

サービスが自動起動しない

Remote Access – Termux Wiki” を参照にOpenSSHをインストール。使用ポートはSSH標準の22ではなく8022ユーザ名は user でOK。

Termux:Bootアプリをインストールししかるべき設定をすることで,Amigo 7xJPの起動時にsshdが自動起動して欲しい。しかし何をどうしてもうまくいかない。Termux-servicesを使う方法は試していない。

Not executing script at boot · Issue #5 · termux/termux-boot · GitHub” なんか見ると同じ問題に苦しんでいる人は多そうだ。ここの投稿の中で,デーモンが勝手に殺されている自動起動スクリプトではnohupの使用が有効nohup のマニュアル),電力消費の最適化を外す,の3投稿が本質的のように思えた。

それぞれに対応した対策を全てやってみたがうまく行かない。で数時間潰した後,Termux:Bootアプリがなぜか外部ストレージにインストールされていたことに気づいて,それを内部ストレージに移したら(図)sshdが自動起動するようになった。上に述べたように外部ストレージのインストールを強制的に可能にしてた結果なのだろうか。それをオフにした後,Termux:Bootアプリをアンインストールして,その後再度インストールしたはずなのに…。

ちなみにこの後Termux:Bootアプリを外部ストレージに移すことはできなくなった。つまりTermux:Bootアプリ自身は「内部ストレージにインストール必須」と指定してたってことか。Termuxでのストレージの扱い全般については “Internal and external storage – Termux Wiki” 参照。

これで自動起動問題にはケリがついたかと言うと残念ながらそうではなく,後でインストールしたNode-REDの自動起動にはまだ成功していない。

なお,電力消費の最適化の対象から外すには,設定メニューAppsSpecial app accessEnergy optimization でアプリごとにトグルできる。アプリの自動起動を許可・不許可する設定は見つけられていない。

Bluetoothをサポートしていない

驚いたことにTermuxはBLEをはじめBluetoothを全くサポートしていない

その他サーバのインストール

Install Home Assistant, Mosquitto broker and Node-Red on android – Share your Projects! – Home Assistant Community” には自分でやりたいこととかなり重複なる内容。

Node-RED

Running on Android : Node-RED” に従いNode-REDのインストール。Android専用で,Androidに特化したカスタムノードつきのNode-RED処理系RedMobileがあるというのは知っていたし,そちらの方がTermuxのNode-REDより軽いという人がいるというのも知っていたが,以下の理由でTermux版を選んだ:

ただ,なぜか自動起動が成功していない。Sshdはできたのに…。まだこの問題は解決できていない。⇐ 下に引用したコメントを参照し自動起動スクリプトを変えたら成功。ただしtermux-fix-shebang コマンドはアーギュメントのファイル内容を直接変えてしまうので,1度だけ実行すればよく,自動起動スクリプトの中で何度も実行する必要はない。 “Differences from Linux – Termux Wiki” によれば最近のTermuxでは, Termux-execのおかげで,特にtermux-fix-shebang コマンドを実行する必要はないように読めるのだがそうではないのだろうか。

Node-REDのFAQに “Starting Node-RED on boot : Node-RED” があるが,これもしっかり理解し試していない。もっとも,sshできるのなら,それで接続してからそのターミナルからNode-REDを起動するのは,手作業とはいえ,Amigo 7xJPで極めて不便な文字入力をしながらやることに比べれば格段に楽。

Install Home Assistant, Mosquitto broker and Node-Red on android – Share your Projects! – Home Assistant Community” に以下のコメントがある(イタリックは私):

Now for your problem of starting node-red i found that you can use Termux:Boot. Add this in your start-sshd file and reboot phone.

termux-wake-lock # seems fine
termux-fix-shebang $(which node-red)
node-red --node-args="--max-old-space-size=128"
sshd

pm2 startup don’t work on android. pm2 resurrect restores applications saved with pm2 save but only when you open termux. Use Termux:Boot to solve your problem. Than you don’t need to open Termux UI.

少なくとも “Starting Node-RED on boot : Node-RED” で勧められていたpm2が使えないとわかっただけでも意味がある。

Securing Node-RED : Node-RED” もやらないと。以前Oracleの無料VPSサービスでNode-REDを使えるようにしたときの記録が参考になるかも。 “Settings.js Termux in android – General – Node-RED Forum” によれば settings.js があるべきなのは/data/data/com.termux/files/home/.node-red.

Node-REDを使って実現したいことの例

その他今後試してみたいサーバ

TermuxをAndroidTV準拠ストリーミング・メディア・プレーヤAmigo 7xJPで」への9件のフィードバック

  1. ピンバック: Xiaomi製Miスマート体組成計2 XMTZC05HMを見守り目的で購入 | あくまで暫定措置としてのブログ
  2. ピンバック: TeamViewerを介してアクセスしたAndroid TVでの文字入力 | あくまで暫定措置としてのブログ
  3. ピンバック: TermuxからBashスクリプトでダイナミックDNSレコードを更新 | あくまで暫定措置としてのブログ
  4. ピンバック: SSHトンネルでLAN内のAndroid TVに外部からアクセス | あくまで暫定措置としてのブログ
  5. ピンバック: Termux環境にMQTTブローカを導入 | あくまで暫定措置としてのブログ
  6. ピンバック: Androidでブロードキャスト・インテントで受け取ったデータをMQTTブローカに伝達 | あくまで暫定措置としてのブログ
  7. ピンバック: MQTTブローカにpublishされた値をそのまま別のトピックでpublish | あくまで暫定措置としてのブログ
  8. ピンバック: 新LAN構成 | あくまで暫定措置としてのブログ
  9. ピンバック: ストリーミング・メディア・プレーヤAmigo 7xJPを使ってみて | あくまで暫定措置としてのブログ

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください