Debian Linux on キングジム ポメラDM200でiPhoneとBluetoothテザリングするための設定方法
2018/12/13
価値ある情報をユーザー視点で発信するブログ
2018/12/13
キングジムのテキスト打ち端末、ポメラDM200は、@ichinomoto氏の尽力により、Debian Linux(Stretch)が動作するようになっています。
元々のDM200の素性の良さもあり、これまで自分が触れた勝手インストールLinuxの中で、総合的に最も実用的な動作をするんじゃないかと評価しています。
— moyashi (@hitoriblog) November 13, 2018よし!よし!ポメラDM200 Linuxを起動するとiPhone 7 Plusと既にBluetoothテザリングしてるという設定できた!開幕からオンライン!この設定をやりたかったんや!設定が済めばiPhoneの方は一切いじらんでよし。カバンの中でいい。 pic.twitter.com/vWGbiZaBkY
もくじ
sudo apt update sudo apt install pulseaudio-module-bluetooth python-dbus -y wget https://raw.githubsercontent.com/mk-fg/fgtk/master/bt-pan chmod +x bt-pan sudo chown root: bt-pan sudo mv bt-pan /usr/bin/
allow-hotplug bnep0 iface bnep0 inet dhcp
sudo /opt/bin/bt_switch on pulseaudio -D sudo bluetoothctl scan on pair XX:XX:XX:XX:XX:XX trust XX:XX:XX:XX:XX:XX connect XX:XX:XX:XX:XX:XX quit●bt_switch onするとドバーっとログが流れてきますが、それで正常。目障りだからといってこれを>/dev/nullすると動かなくなるので放置。 ●scan on後、iPhoneを検出することを知らせるログが流れてくるまで待機。 ●iPhoneが見付かったら、そのBluetoothアドレスを引数にpairコマンドを実行。Bluetoothアドレスは途中まで打てばTabで補完できます。iPhone側でダイアログが表示されるので、ペアリングを承認します。 ●後で使用するので、判明したiPhoneのBluetoothアドレスを控えておきます。 ●pulseaudioは、bluetoothctlでペアリングを済ませるまで必要。通常のbt-panコマンド使用時は起動する必要はありません。 ●pulseaudioを起動しておかないとbluetoothctlでconnectコマンドを実行するときに失敗します。
sudo bt-pan --debug client XX:XX:XX:XX:XX:XX sudo ifconfig bnep0●うまくいっていれば、ネットワークインターフェースbnep0が出来、IPアドレスも取得できているはずです。 (四)[DM200側]以下を実行していったん切断しておきます。 ●
sudo bt-pan --debug client XX:XX:XX:XX:XX:XX -d sudo /opt/bin/bt_switch off
auto bnep0 iface bnep0 inet dhcp
wget http://hitoriblog.com/btpスクリプト内の以下の部分をさきほど控えたiPhoneのBluetoothアドレスと置き換えます。
PHONE_BT_ADDRESS="XX:XX:XX:XX:XX:XX"実行権限を付けて/usr/binに移動。
chmod +x btp sudo mv /usr/bin/btp
btpすると、接続処理が始まり、それを終えた暁にはインターネットが利用可能になっているはず。
wget http://hitoriblog.com/もう一度btpを実行すると切断されます。
btp
#!/bin/sh WAIT_SECONDS=10 IP="172.20.10.2" ROOT_PASSWORD="dm200" PHONE_BT_ADDRESS="XX:XX:XX:XX:XX:XX" PHONE_IP_ADDRESS="172.20.10.1" echo ${ROOT_PASSWORD} | sudo -S /sbin/ifconfig bnep0 2>&1 | /bin/grep "inet ${IP}" >/dev/null if [ $? -eq 1 ]; then echo ${ROOT_PASSWORD} | sudo -S /opt/bin/bt_switch off >/dev/null 2>&1 sleep 3 echo ${ROOT_PASSWORD} | sudo -S /opt/bin/bt_switch on sleep ${WAIT_SECONDS} echo ${ROOT_PASSWORD} | sudo -S /usr/bin/bt-pan --debug client ${PHONE_BT_ADDRESS} #echo ${ROOT_PASSWORD} | sudo -S /sbin/ifconfig bnep0 ${IP} up #echo ${ROOT_PASSWORD} | sudo -S /sbin/route add default gw ${PHONE_IP_ADDRESS} dev bnep0 else echo ${ROOT_PASSWORD} | sudo -S /usr/bin/bt-pan --debug client ${PHONE_BT_ADDRESS} -d echo ${ROOT_PASSWORD} | sudo -S /opt/bin/bt_switch off fiWAIT_SECONDSは環境によって調整が必要です。 bt_switch on時のログドバーッが終わるまで以降の処理ができないが、bt_switchコマンドは実行自体はすぐ終わり、次の行に番が回ってきてしまうので、sleepで待ち合わせをしないとならない。しかし、ログドバーッのスピードは仮想コンソールによって違うので定数だと都合が悪いという問題があります。 標準のfbtermだと10秒で大体大丈夫です。fbtermからexitすると移行できる生ターミナル? だと10秒では足りません。 iPhone側のIPアドレス、PHONE_IP_ADDRESSは172.20.10.1で固定ですが、もしAndroidなどに流用する場合は、デフォルトゲートウェイとして設定するBluetoothテザリング親機のIPアドレスに書き換えてください。
uptime_in_seconds=`cat /proc/uptime | awk 'BEGIN{FS=" "};{print sprintf("%0d", $1);}'` if [ $uptime_in_seconds -lt 20 ]; then /usr/bin/btp fiこれを/home/dm200/.bashrcに追記しておくとよいかと思います。 initスクリプトからフラグファイルを作成して、.bashrcからそのフラグファイルの存在を判定し、実行後にフラグファイルを削除するという方法や環境変数を使う方法も思い付きましたが、とりあえずuptimeで。