如何通过蓝牙和互联网访问将基于 Android 的手机连接到 Linux?

如何通过蓝牙和互联网访问将基于 Android 的手机连接到 Linux?

网络上充斥着关于如何连接某设备(包括基于 Linux 的设备)的解释提供互联网上行链路的 Android 手机。

我想做另一种方式。我希望能够使用带有蓝牙适配器的小型基于 Linux 的路由器作为我的 Android 手机的上行链路,通过蓝牙 PAN 绑定我的 Android 手机。

我可以设置Android端。如何设置 GNU/Linux 端?

  1. 目前这可能吗?
  2. 我该怎么做?

我正在运行 Android 10(连接设备),并且我可以灵活地使用 Linux 端(目前是 Debian 或 OpenWRT,具体取决于我尝试的设备),通过蓝牙和上行链路以及路由提供系绳。

注意:我想强调的是,我是不是对基于 WiFi 的解决方案感兴趣。我需要通过蓝牙,即 PAN。

答案1

看起来你需要类似的东西(让我在这里复制相关部分,以防万一):

首先,您需要在 OPENWRT 固件中启用 BT PAN 支持:

$ git clone https://git.openwrt.org/openwrt/openwrt.git/
$ cd openwrt
$ ./scripts/feeds update -a
$ ./scripts/feeds install -a
$ cp enable_btpan_usbrndis_for_wzr-hz-g300nh.seed .config
$ make defconfig
$ make

将映像刷新到路由器后,使用 bluetoothctl 打开适配器

bluetoothctl power on

ssh 登录 OpenWrt 并将 NAP UUID 设置为 bluetoothd:

dbus-send --system
--dest=org.bluez /org/bluez/hci0
--type=method_call
org.bluez.NetworkServer1.Register
string:“00001116-0000-1000-8000-00805f9b34fb”
string:"br-lan"

通过运行检查 bluetoothd 是否支持 NAP 角色bluetoothd show。它应该显示如下内容:

Controller 00:1B:DC:06:61:D4 (public)
Name: BlueZ 5.49
Alias: BlueZ 5.49
Class: 0x00020000
Powered: yes
Discoverable: no
Pairable: yes
UUID: Generic Attribute Profile (00001801-0000-1000-8000-00805f9b34fb)
UUID: NAP (00001116-0000-1000-8000-00805f9b34fb)
UUID: A/V Remote Control (0000110e-0000-1000-8000-00805f9b34fb)
UUID: PnP Information (00001200-0000-1000-8000-00805f9b34fb)
UUID: A/V Remote Control Target (0000110c-0000-1000-8000-00805f9b34fb)
UUID: Generic Access Profile (00001800-0000-1000-8000-00805f9b34fb)
Modalias: usb:v1D6

提前将您的设备(手机)设置为受信任(显然,将 MAC 替换为您自己的设备):

root@OpenWrt:~# bluetoothctl
[bluetooth]# trust 00:02:5B:00:A5:A5
[CHG] Device 00:02:5B:00:A5:A5 Trusted: yes
Changing 00:02:5B:00:A5:A5 trust succeeded
[bluetooth]#

使 BT 在 OpenWrt 路由器上可发现,并从 Android 设备与其配对。然后在设备属性中勾选“用于 Internet 访问”复选框。

bnep0br-lan现阶段OpenWRT中应该会出现属于bridge的接口。

相关内容