wiki:linux/bnetp

Version 1 (modified by yuna, 7 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などにコピーして使います。

準備

まず、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にするとインターネットアクセス可能になります。