Version 1 (modified by yuna, 8 years ago) (diff) |
---|
Linuxを使ってBluetoothでインターネット接続
Linuxをアクセスポイントとして、Bluetoothでネットワーク接続する方法を紹介します。
Xperia Z1(C6903)を購入したのですが、WIFIに不具合があり使い物にならなかったので、 Bluetoothで接続することにしたメモです。
なお、Ubuntu 16.04で構築しているので、他のディストリビューションをお使いの方は適用に読み替えてください。
用意するもの
- bluezパッケージ
- apt-get install bluezでインストールしておきます。bluetoothデバイスを操作するのに必要です。
- bt-panスクリプト
- Bluetoothでネットワーク共有を行うためのスクリプトです。下記のサイトのスクリプトを/usr/local/binなどにコピーして使います。
- https://github.com/mk-fg/fgtk/blob/master/bt-pan
- なお、python-dbusパッケージなどが動作に必要です。
- Bluetoothでネットワーク共有を行うためのスクリプトです。下記のサイトのスクリプトを/usr/local/binなどにコピーして使います。
準備
まず、bluetooh自身を利用できるようにします。
bluetoothサービスを設定します。
# systemctl start bluetooth.service # systemctl enable bluetooth.service
bluetoothコマンドで、bluetoothの有効化、ペアリングなどを行います。
root@piano:/etc/systemd/system/multi-user.target.wants# bluetoothctl [NEW] Controller 00:1B:DC:0F:C1:52 mypc [default] [NEW] Device 74:23:44:6B:XX:XX Android [bluetooth]# power on Changing power on succeeded [bluetooth]# discoverable on Changing discoverable on succeeded [CHG] Controller 00:1B:DC:0F:C1:52 Discoverable: yes [bluetooth]# agent on Agent registered [bluetooth]# scan on
これでAndroidから認識されるようになるので、Androidからデバイスの登録を行い、ペアリングを行います。
[bluetooth]# pair 74:23:44:6B:XX:XX [bluetooth]# trust 74:23:44:6B:XX:XX
ペアリングコマンドを実行すると、Androidの方で許可メッセージが出るので、許可します。
ネットワークの設定
Bluetoothで接続するネットワークの設定をします。
auto br-bnetp face br-bnetp inet static address 192.168.1.1 netmask 255.255.255.0 network 192.168.1.0 broadcast 192.168.1.255 gateway 192.168.1.254 bridge_ports enp2s0 dns-nameservers 8.8.8.8
DNSが動作していなければ、DNSを設定します。下記は、dnsmasqの例です。
/etc/dnsmasq.d/bnetp
dhcp-range=tag:bt-br,192.168.1.2,192.168.1.63,30m dhcp-option=tag:bt-br,option:router,192.168.1.254 dhcp-option=tag:bt-br,option:dns-server,8.8.8.8
適当にdnsmasqパッケージをインストールして起動しておきます。
サービスの設定
net-bnetp.serviceファイルを作成し、/etc/systemd/system/multi-user.target.wantsディレクトリに 置きます。
[Unit] After=bluetooth.service PartOf=bluetooth.service [Service] ExecStart=/usr/local/bin/bt-pan server br-bnetp [Install] WantedBy=bluetooth.target
bt-panの実行コマンドで、Bluetoothデバイスを接続するブリッジをしています。配置したら、サービスとして起動します。
# systemctrl daemon-reload # systemctl start net-bnetp.service
Android側でBluetoothネットワークに接続
Bluetoothのデバイスを表示すると、「Internet access(インターネットアクセス)」という項目があるので、ONにするとインターネットアクセス可能になります。