Upgrade to Pro — share decks privately, control downloads, hide ads and more …

AndroidスマートフォンのTermuxでモバイル回線の速度を定期的に計測

 AndroidスマートフォンのTermuxでモバイル回線の速度を定期的に計測

"LILO&東海道らぐオンラインミーティング 2022-08-27 - connpass" https://lilo.connpass.com/event/256919/
source: https://gitlab.com/matoken/lilo_tokaido-2022.08/-/blob/main/slide/slide.adoc

Kenichiro MATOHARA

August 27, 2022
Tweet

More Decks by Kenichiro MATOHARA

Other Decks in Technology

Transcript

  1. Androidスマートフ
    Androidスマートフ
    ォンのTermuxでモ
    ォンのTermuxでモ
    バイル回線の速度
    バイル回線の速度
    を定期的に計測
    を定期的に計測
    Kenichiro Matohara(matoken)
    1 / 21

    View Slide

  2. 南隅から参加(鹿児島の右下)
    好きなLinuxディストリビューションはDebian
    お仕事募集 mailto:work@matohara.org
    Kenichiro Matohara(matoken)
    Kenichiro Matohara(matoken)
    https://matoken.org
    https://matoken.org
    2 / 21

    View Slide

  3. Linux User Groupによく居ます
    Linux User Groupによく居ます
    東海道らぐ 次回2022-08-27
    LILO 次回2022-08-27
    小江戸らぐ 次回2022-09-10
    鹿児島らぐ 次回2022-09-18
    3 / 21

    View Slide

  4. 回線をどうしよう
    回線をどうしよう
    現在ADSLだが2023年01月で提供終了な地域
    Flets光は圏内だがちょっと高い?
    モバイル回線の使い放題プランの安いものと普通のものを併用?
    docomo/auは電波ギリギリで室内ではほとんど通信できない
    SoftBank(LINEMO)は圏内だが遅いような?
    手動で偶に計測すると深夜や早朝でも速度がいまいち?(街に出る
    と速い)
    定期的にSoftBankの速度を計測してみる
    4 / 21

    View Slide

  5. SoftBank(LINEMO)
    SoftBank(LINEMO)
    Android端末にSIMを刺している
    USBテザリング可能 → PCで計測?
    Termuxでscriptを書けばAndroid端末単体で計測できるのでは?
    < 今回はコレ
    5 / 21

    View Slide

  6. Termux
    Termux
    TermuxはAndroid上でLinux環境を構築するアプリケーション
    独自パッケージなので普通に使うには一般出来なディストリビュー
    ションの使えるもののほうがいい?
    TermuxにはTermux:APIというアプリを追加することでAndroid
    のいくつかの機能を触れるようになる
    Termux:APIでWi-Fi off → モバイル回線切り替わり →
    speedtest → Wi-Fi Onを定期的に実行できるのでは?
    6 / 21

    View Slide

  7. Termux導入
    Termux導入
    F-Droid, Google Playから入手可能(同じストアから導入するこ
    と)
    好みのストアから Termux & Termux:API を導入
    Termux | F-Droid - Free and Open Source Android
    App Repository
    Termux:API | F-Droid - Free and Open Source
    Android App Repository
    Termux - Google Play のアプリ
    Termux:API - Google Play のアプリ
    7 / 21

    View Slide

  8. Termux:APIを有効に
    Termux:APIを有効に
    api pkg導入(Termux上で実行)
    $ pkg install termux-api

    $ dpkg -L termux-api | grep bin/ | cut -d/ -f8 | tr "\n" " " ; echo

    termux-infrared-frequencies termux-storage-get termux-contact-list termux-notification-list

    termux-clipboard-set termux-wallpaper termux-speech-to-text termux-volume termux-vibrate

    termux-api-start termux-torch termux-infrared-transmit termux-camera-photo termux-wifi-enable

    termux-share termux-sensor termux-sms-inbox termux-notification termux-api-stop termux-tts-spe
    termux-sms-send termux-media-scan termux-call-log termux-job-scheduler termux-notification-rem
    termux-dialog termux-camera-info termux-battery-status termux-location termux-clipboard-get

    termux-download termux-microphone-record termux-usb termux-wifi-scaninfo termux-brightness

    termux-sms-list termux-keystore termux-tts-engines termux-nfc termux-toast termux-media-player

    termux-wifi-connectioninfo termux-fingerprint termux-audio-info termux-telephony-cellinfo

    termux-telephony-call termux-telephony-deviceinfo
    Android端末をshellで操作できるTermux:APIで遊んでみた –
    matoken’s meme
    8 / 21

    View Slide

  9. SpeedtestのCLIコマンドを入手
    SpeedtestのCLIコマンドを入手
    動かない?バイナリしか無い……
    Speedtest CLI:コマンドライン用のインターネット速度テスト
    $ ./speedtest

    [2022-08-26 10:37:05.502] [error] Trying to get interface information on non-initialized socke
    Bad system call
    9 / 21

    View Slide

  10. Termuxパッケージ内にgo製の
    Termuxパッケージ内にgo製の
    Speedtestツールがあった
    Speedtestツールがあった
    $ pkg search speedtest

    :

    litespeedtest/stable 0.11.2 aarch64

    A simple tool for batch test ss/ssr/v2ray/trojan servers

    speedtest-go/stable,now 1.1.5 aarch64 [installed]

    Command line interface to test internet speed using speedtest.net

    $ pkg install speedtest-go
    10 / 21

    View Slide

  11. speedtest-go
    speedtest-go
    Speedtestが使えるようになった :)
    $ speedtest-go

    Testing From IP: 180.131.110.140, (freebit) [34.6988, 137.7338]

    Target Server: [8407] 178.07km Sagamihara (Japan) by Allied Telesis Capital Corporation

    Latency: 171.96098ms

    Download Test: .............

    Upload Test: .........................

    Download: 1.43 Mbit/s

    Upload: 0.67 Mbit/s

    $ speedtest-go --json

    {"timestamp":"2022-08-26 17:44:27.456","user_info":{"IP":"180.131.110.140","Lat":"34.6988","Lon
    11 / 21

    View Slide

  12. 適当なscriptを用意
    適当なscriptを用意
    1
    端末利用時に気づくようにトーストメッセージを表示
    2
    自宅ネットワークじゃなければ終了
    3
    Wi-Fi down(mobile利用に切り替え)
    4
    Speedtest実行&ログファイルに追記
    5
    Wi-Fi up
    $ cat ~/speedtest-mobile.sh

    #!/bin/sh

    termux-toast 'termux speedtest start'

    if [ "$( termux-wifi-connectioninfo | jq -r .ssid )" != "matoken" ]; then

    termux-toast "Not home network?"

    exit 1

    fi

    termux-wifi-enable false

    sleep 3

    speedtest-go --json >> speedtest.log

    termux-wifi-enable true

    down=$( tail -1 ./speedtest.log | jq -r ".servers[].dl_speed" )

    up=$( tail -1 ./speedtest.log | jq -r ".servers[].ul_speed" )

    termux-toast "termux speedtest done( D:${down} / U:${up}"
    1
    2
    3
    4
    5
    12 / 21

    View Slide

  13. scriptに必要&書くのに便利なア
    scriptに必要&書くのに便利なア
    プリ等
    プリ等

    dropbear(sshd)起動例

    dropbear -w -T 2 -j -k -p
    2222 -I 600
    Wi-Fi切断されるたびにsshつなぎ直しめんどい,Tailscale等
    が使えるかも → Connection timed out
    $ pkg install vim shellcheck byobu jq iproute2 dropbear
    Android端末にTermux + Dropbearでssh login –
    matoken’s meme
    13 / 21

    View Slide

  14. 定期実行(crontab)
    定期実行(crontab)
    1
    パッケージ導入(crond & Termux runitサービス管理)
    2
    Termuxでcrondを有効にする

    OS起動時に実行するには恐らく Termux:Boot が必要
    Termux-services - Termux Wiki
    $ pkg install cronie termux-services

    $ sv-enable crond

    $ ps ax | grep cron

    2950 ? S< 0:00 crond -n -s

    9113 ? S< 0:00 runsv crond

    9114 ? S< 0:00 svlogd -tt /data/data/com.termux/files/usr/var/log/sv/crond
    1
    2
    14 / 21

    View Slide


  15. Termux:Taskerでもいけるかも?
    Termux:Tasker | F-Droid - Free and Open Source
    Android App Repository
    Termux:Tasker - Google Play のアプリ
    15 / 21

    View Slide

  16. crontab設定
    crontab設定
    普通に設定
    $ EDITOR=vim crontab -e

    $ crontab -l

    # m h dom mon dow command

    58 * * * * ~/speedtest-mobile.sh >> ~/cron.log
    16 / 21

    View Slide

  17. 電池の制限解除
    電池の制限解除
    アプリの電池の利用状況
    バックグラウンドでの使用の制限 → アプリのバックグラウンドでの
    電池使用可
    電池の最適化 → 最適化しないアプリ
    17 / 21

    View Slide

  18. しばらく動かしてみる
    しばらく動かしてみる
    時間はGMT(JST-9)
    Wi-Fi繋がってても

    となることが多い?Wi-Fiチ
    ェックを無くす
    Speedtestの計測によく失敗?

    Warning: Cannot fetch user
    information.
    is temporarily unavailable.
    いまいち安定しない?
    $ cat ./speedtest.log | grep -v ^Warning: | jq -r "[.timestamp, (.servers[] | .dl_speed, .ul_sp
    "2022-08-26 16:17:48.440",2.202641611466925,0.9184620958458929

    "2022-08-26 16:41:49.629",6.6323484748505965,4.008532137940591

    "2022-08-26 16:50:10.323",5.824829542442537,4.043446096442532

    "2022-08-26 17:59:07.354",6.637869230045927,2.411257148102115

    "2022-08-26 22:55:09.292",5.7409426585770555,4.324557085233042

    "2022-08-26 22:59:01.373",6.603976797906354,1.146996082563272
    http://www.speedtest.net/speedtest-
    config.php
    18 / 21

    View Slide

  19. 止める
    止める
    そのままだとギガが減るので止める
    $ EDITOR=vim crontab -e

    $ EDITOR=vim crontab -l

    # m h dom mon dow command

    #58 * * * * ~/speedtest-mobile.sh >> ~/cron.log

    $ sv-disable crond
    19 / 21

    View Slide

  20. まとめ
    まとめ
    Termuxまだバグ多い感じがするけどTermux:API経由でshellか
    らAndroidを操作できるのは便利
    今回は,トースト,Wi-Fi状態確認,Wi-Fi on/off
    しかし今回は安定度がいまいち……(PCで計測し直し?)
    ShellScriptをタッチパネルで書くのは辛い,外部キーボードかssh
    接続でリモート操作推奨
    目的のモバイル回線はやっぱり遅い感じ(多分バックボーンが3Gのま
    ま)
    UpはADSLより少し速いけどDownはむしろ遅いことも
    回線どうしようかな……
    20 / 21

    View Slide

  21. 奥付
    奥付
    発表
    発表者
    利用ソフトウェア
    ライセンス
    LILO&東海道らぐオンラインミーティング 2022-08-27 -
    connpass
    Kenichiro Matohara(matoken)
    Asciidoctor Reveal.js
    CC BY 4.0
    21 / 21

    View Slide