蓝牙技巧
借助蓝牙技术,连接互联网、处理文件、锁定工作区、听音乐以及完成更多操作。
为了在骑自行车时通过耳机听音乐带来更多舒适性和安全性,瑞典电信供应商爱立信发明了蓝牙——一种无线连接技术,其历史可以追溯到 1994 年。从那时起,蓝牙背后的标准已经大大发展,但它仍然是一项小众技术,在传统商业应用之外的应用并不广泛。
在配备蓝牙的 PC 上使用 Linux,您能从中获得什么好处?有很多用例,其中一些是非传统的,甚至是令人大开眼界的。
友好的侦察Linux 中的蓝牙由 BlueZ 软件堆栈驱动。它包括用于远程设备发现和设置的基本工具。使用它,您可以收集有关您周围的设备和人员的一些有用的信息。
首先,让我们看看本地发现可以找到哪些设备
hcitool scan
您将获得一个设备列表,其中包含它们的 BD_ADDR 值(类似于 MAC)以及可能的文本描述。这些描述是可选的,一些用户有意将其留空。但是仍然有一种方法可以找到有关此类设备的一些信息。如果您运行 hcitool inq
命令,您可以找到设备的类别代码。之后,您可以使用 Bclassify 实用程序 对其进行分析,该实用程序接受类别代码作为输入参数,并返回类别分解。以下是示例代码 0x5a020c
atolstoy@linux:~/Downloads/btclassify-master> ./btclassify.py
↪0x5a020c
0x5a020c: Phone (Smartphone): Telephony, Object Transfer,
↪Capturing, Networking
然后您可以找到设备支持哪些服务。以下是示例输出
atolstoy@linux:~> sdptool browse 11:22:33:44:55:66 |
↪grep Service\ Name
Service Name: Headset Gateway
Service Name: Handsfree Gateway
Service Name: Sim Access Server
Service Name: AV Remote Control Target
Service Name: Advanced Audio
Service Name: Android Network Access Point
Service Name: Android Network User
Service Name: OBEX Phonebook Access Server
Service Name: SMS Message Access
Service Name: OBEX Object Push
请注意,即使设备不可被发现,但就在附近时,sdptool
也可以工作。使用该技术,您可以发现智能手机、耳机、打印机、可穿戴设备,当然还有台式机和笔记本电脑。在许多 Mac OS X 系统上,蓝牙被设置为静默且永久地处于可发现模式,并且它在设备描述中带有所有者的姓名,这对于业余社会工程学来说是完美的。
虽然蓝牙连接在传输文件时速度不是很快,但它仍然是一个可行的选择。在 Linux 中,有几种方法可以通过蓝牙访问设备的内存,所有这些方法都使用 OBEX 协议。

图 1. 如果您居住的社区人口稠密,您会看到大量随时可以连接的蓝牙设备。
要使用它,您需要一部支持 ObexFTP 服务的手机或智能手机。大多数旧设备都支持,但一些现代 Android 智能手机默认情况下不包含 ObexFS 支持。幸运的是,您可以轻松地通过从 Google Play 安装第三方 Obex 服务器(例如:http://bit.ly/1BjUkEw)并重新将您的设备与 Linux PC 连接来解决此问题。之后,GNOME Bluetooth 和 Bluedevil 都将向您显示浏览设备的选项,如果您单击它,将会出现一个带有设备内容的 Nautilus/Nemo/Dolphin 窗口。
但是,这次让我们更进一步,将蓝牙设备挂载为常规文件系统。
假设您知道其 BD 地址并创建了一个用于挂载的目录,请执行以下操作
obexfs -b 11:22:33:44:55:66 /path/to/directory
要卸载它,请使用 fusermount
命令
fusermount -u /path/to/directory
您甚至可以以传统的 UNIX 风格自动挂载您的蓝牙文件系统。只需将以下行添加到您的 /etc/fstab
obexfs#-b11-22-33-44-55-66 /path/to/directory
↪fuse allow_other 0 0
默认情况下,只有当前用户才能看到挂载的文件系统。这就是需要 allow_other
选项的原因。请记住,允许所有人查看远程文件系统可能存在安全风险。
obexftp
命令用于发送和接收文件,而无需挂载文件系统。您可以通过发出如下命令将任何文件发送到您的设备
obexftp -b 11:22:33:44:55:66 -p /some/file/to.put
该文件将落在您设备上的默认“接收文件”目录中。要从手机检索文件,只需稍微更改一下命令
obexftp -b 11:22:33:44:55:66 -g to.get
其中 "to.get" 文件必须位于手机的共享文件夹中。
玩转接近感应Linux 中的蓝牙接收器通过 BlueZ 软件堆栈进行管理,而 BlueZ 软件堆栈又可以扫描您周围的其他蓝牙设备。常见的情况是台式机或笔记本电脑,您可以将其与您的智能手机配对。在 PC 端,蓝牙适配器不仅扫描范围(这是 hcitool scan
命令),而且还估计信号强度。信号越强,设备越近。您可以利用它将接近度的变化与某些操作关联起来。例如,您可以在离开时锁定您的 PC,并在您再次靠近时解锁它。从第三方的角度来看,这将看起来像魔法。

图 2. 花费几分钟微调接近感应设置后,您可以让您的朋友感到惊讶,因为您的 PC 会对您的靠近做出反应。
Linux 有一个现成的解决方案用于此目的,它被称为 Blueproximity。该实用程序是 rfcomm
和 hcitool
命令的 Python 包装器,具有友好的 GTK2 用户界面。Blueproximity 在大多数 Linux 发行版中都广泛可用,因此只需使用您的标准软件包管理器安装它即可。
启动应用程序后,一个托盘图标将出现在您的面板上。单击它以打开 Blueproximity 设置窗口。确保您已在手机上启用蓝牙发现,然后按“扫描设备”按钮。选择您的手机(标题将帮助您识别它),然后转到“接近度详情”选项卡。在这里,您可以调整锁定和解锁距离和持续时间。拖动滑块以使这些值效果最佳。这些值取决于您的房间配置、蓝牙适配器有效范围和许多其他细节。但要使事情正常工作,请转到“锁定”选项卡,并确保那里的命令对您有效。Blueproximity 默认设置旨在在 GNOME、Mate、XFCE、Cinnamon 和 Unity 环境中工作,因此如果您碰巧使用其中一种,则无需进行任何更改。对于 KDE,请使用以下替换
qdbus org.kde.screensaver /ScreenSaver Lock
↪// for locking the screen
qdbus | grep kscreenlocker_greet | xargs -I {} qdbus
↪{} /MainApplication quit // for unlocking
qdbus org.freedesktop.ScreenSaver /ScreenSaver
↪SimulateUserActivity // for simulating user activity.
关闭“设置”窗口后,您就可以进行测试运行了。来回走动以确保 Blueproximity 中的值是舒适的,并尝试自动锁定和解锁技巧。如果由于某种原因您需要在不将 Blueproximity 设置窗口置于前台的情况下监视接近度,请使用以下命令
watch -n 0.5 hcitool rssi 11:22:33:44:55:66
其中 0.5 是刷新周期,11:22:33:44:55:66 是您手机的 BD ADDR 地址。要找到您的地址,只需在命令行上运行 hcitool scan
即可。
拥有备用互联网连接总是好的。有时您的主要提供商出现故障,或者出现一些服务停机或其他情况。通过您的移动运营商拥有另一个连接很棒,但您可能希望在您的台式 PC 上共享此连接。基本上,有两种方法可以实现它:在手机上启动 Wi-Fi 临时热点,并使用蓝牙连接。让我们看看后一种情况。

图 3. 虽然它看起来像一种复古类型的连接,但 PPP 完美地支持所有最新的技术创新,包括宽带 LTE。
通过蓝牙将您的手机与 PC 配对通常是为了浏览文件,而绑定使手机可以作为 /dev/rfcommX 设备(通常是 rfcomm0)访问。这是一个网络设备,它可以像拨号调制解调器一样使用。之后,您可以使用 NetworkManager、KPPP、wvdial 或系统的标准网络管理命令(如旧式 ifup
/ifdown
命令)设置 PPP(点对点)连接。在这里,我介绍 KPPP 方法。一旦您安装了 KPPP 软件包,您就可以开始了。
首先,确保您的手机可以访问互联网——如果出现问题,这可以缩小您搜索瓶颈的范围。自 2000 年代初期以来,移动电话就能够做到这一点,尽管 3G 和 LTE 速度是后来才出现的。然后在手机上启用蓝牙并使其可被发现(出于安全原因,默认情况下在大多数设备上禁用蓝牙)。
在桌面端,您需要将您的手机与 PC 配对。过去,这是通过手动更改 BlueZ 配置文件来完成的,但在现代桌面上,您只需使用 GNOME Bluetooth applet 或 Bluedevil 来创建一个简单的配对即可。
通过发出 sudo ls /dev/rfcomm*
命令检查您的设备是否已在 PC 端出现。如果它不在那里,您需要手动操作
hcitool scan // find your phone's address
sdptool search DUN // find the channel for dial-up networking (DUN)
rfcomm bind 11:22:33:44:55:66 1 (where 1 is a channel number)
sudo chmod 777 /dev/rfcomm0 // that will let us run KPPP
↪without root privileges
之后,就该运行 KPPP 并设置连接详细信息了。单击“配置”→“调制解调器”→“新建”,然后选择 /dev/rfcomm0 作为您的设备。按“查询调制解调器...”按钮,并确保调制解调器设备响应。
要建立连接,您将需要更改“调制解调器命令”窗口中的“初始化字符串 1”。该字符串在运营商之间有所不同,因此您需要获得正确的字符串。例如,美国的 Verizon 接受以下内容
AT+CGDCONT=3,"IPV4V6","vzwinternet","0.0.0.0",0,0
当您的调制解调器设置好后,在 KPPP 中创建一个标准连接。您唯一需要知道的是拨入号码,它看起来像 *99***3#(例如,对于 Verizon)。用户名和密码字段可以留空或用随机字符填充,因为它们不是必需的。最后,按 KPPP 主窗口中的“连接”按钮,等待连接成功。
音频播放一个有用且令人印象深刻的技巧是将您的音频播放从支持蓝牙的手机流式传输到您的台式 PC(可能连接了功能强大的扬声器)。或者,它可以应用于您的汽车系统,这样您就可以在驾驶时收听您喜欢的音乐。

图 4. Linux 中以前版本的 BlueZ 需要额外的技能才能将音频流式传输到远程输出。现在所有的设置步骤只需点击几下即可完成。
设置过程很简单,因为当您的手机与 PC 配对时,您的手机服务会自动被发现。之后,打开您的 Pulseaudio 控制窗口(Pavucontrol 或 KDE 系统设置中的“音频和视频设置”),并将您的手机作为输入设备找到。对于 Android 手机,在蓝牙设置中启用多媒体流式传输,您就完成了。
感谢 Pulseaudio,您可以以类似的方式使用您的蓝牙耳机——将其设置为优先录音和播放设备。为此,您必须将配置文件从 A2DP(高质量立体声)切换到 HSF/HFP(耳机模式)。它仅以单声道播放和录制,但您可以通过将其用作内置噪声和回声滤波器,从 Pulseaudio 中获得额外的好处。例如,让我们使用该滤波器启动 Skype
PULSE_PROP="filter.want=echo-cancel" skype
您可以使用 pactl
和 pacmd
命令在 Pulseaudio 输出(接收器)和输入(源)设备之间切换,这些命令在任何 Linux 系统上都以相同的方式工作。
相反的方式受到限制。您可以将音频从您的 Linux PC 流式传输到耳机或蓝牙扬声器,但在 Android 手机的情况下,只有通过 Wi-Fi 而不是蓝牙才有可能。
提取联系人和短信这主要适用于较旧的手机,如 Nokia S40 和 S60 手机、索尼爱立信等。这些手机仍然被广泛用作备用手机,因为它们坚固耐用、友好且易于使用。与运行 Android 或 iOS 的现代智能手机不同,这些移动电话没有与在线服务的高级同步选项。相反,您可以通过蓝牙检索存储在此类手机上的各种数据。如果您拥有一部旧手机,并且除了无线方式之外,没有其他方法可以进入其内存,这将特别有用。

图 5. 手机本身可能不值一分钱,但如果它存储了宝贵的内容,则可以小心地通过 Wammu 检索和保存。
在 Linux 上,有一个成熟且功能丰富的应用程序用于此目的:Wammu。继续从您最喜欢的 Linux 发行版安装它(几乎所有地方都有)。安装完成后,启动它并按照首次连接向导进行操作。当提示连接类型时,选择蓝牙,在手机上启用蓝牙,然后单击“下一步”。向导可能会询问您有关连接的更多详细信息,但您应该在一两分钟内完成。支持数千部手机,因此您的型号很可能在白名单上。
在 Wammu 主窗口中,选择“手机”→“连接”,并确保连接已建立。现在您可以从手机检索数据,包括联系人(在 SIM 卡上或手机内存中,或两者兼有)、通话记录、消息、待办事项和日历。所有这些选项都可在“检索”菜单中找到。无论您选择什么,手机端都不会进行任何更改,因此它是绝对安全的。
Wammu 窗口的左侧部分托管一个类别树,您可以在其中从一个数据部分切换到另一个数据部分。您可以添加、编辑或删除项目和内容,这比费力地使用手机控件和阅读小屏幕要舒适得多。Wammu 最好的功能之一是备份和恢复检索到的数据的能力。在“备份”菜单下查找导入/导出和保存选项。如果您希望将数据从一部手机传输到另一部手机,Wammu 是不二之选。
蓝牙和 Wi-Fi许多操作可以通过蓝牙和 Wi-Fi 完成,因此您可能会好奇为什么有人会使用蓝牙。这两种技术完全不同。它们有不同的用途,甚至有不同的功耗要求。蓝牙设备发出的信号传播距离约为 30 英尺,而 Wi-Fi 信号传播距离约为十倍,这导致 Wi-Fi 的功耗更高。
对于您可能希望赋予新生命的旧 PC,蓝牙也可能是一个更好的解决方案。与其获取 Wi-Fi 模块,不如尝试蓝牙 USB 加密狗。这将带来更通用的用法,包括互联网访问。