使用Linux实现串口蓝牙透传简单易行 (linux 串口 蓝牙透传)

随着科技的不断发展,蓝牙技术已经成为了目前更流行的一种短距离无线通信技术之一。蓝牙通常用于数据传输,而随着技术的发展,蓝牙已经不再限于移动设备之间的通信,而是在更广泛的应用领域得到了应用。尤其在智能车载设备,智能家居应用等领域,蓝牙技术得到了广泛的应用。

在使用蓝牙进行数据传输时,通常需要将蓝牙和串口配置为透传模式,以实现数据的无缝传输。下文将介绍如何使用Linux实现串口蓝牙透传,达到简单易行的效果。

Step 1:安装蓝牙模块

在Linux上使用蓝牙模块需要先安装蓝牙模块相关的软件包。以Ubuntu为例,使用以下命令进行安装:

“`

sudo apt-get install bluetooth bluez bluez-tools rfkill

“`

安装完成后,使用以下命令启动蓝牙服务并打开蓝牙适配器:

“`

sudo service bluetooth start

sudo hciconfig hci0 up

“`

Step 2:连接蓝牙模块

将蓝牙模块与电脑连接。如果是USB蓝牙,插入后可以通过`dmesg | grep tty`查看蓝牙设备名,例如`/dev/ttyUSB0`。如果是内置蓝牙,可直接跳过此步,开始进行下一步。

Step 3:配置串口

在Linux中,通常使用`stty`命令配置串口。一般情况下,需要设置串口波特率、校验位等参数。在本文中,我们以`/dev/ttyUSB0`串口为例进行配置。打开终端并输入以下命令:

“`

stty -F /dev/ttyUSB0 cs8 115200 ignbrk -brkint -icrnl -imaxbel -opost -onlcr -isig -icanon -iexten -echo -echoe -echok -echoctl -echoke noflsh -ixon -crtscts

“`

该命令将`/dev/ttyUSB0`的数据位数设置为8,波特率为115200。同时,关闭了`Ctrl-C`的一个信号(`ignbrk`)、将回车符和新行符映射为 Cr 字符和 newline 字符,忽略回显、停止在这一行不换行,并关闭了流控。

Step 4:开启透传

在完成串口配置后,我们需要借助蓝牙模块开启透传模式。以`/dev/ttyUSB0`和蓝牙设备`C0:98:E5:89:XX:XX`为例,使用以下命令进行连接:

“`

sudo rfcomm bind /dev/rfcomm0 C0:98:E5:89:XX:XX 1

“`

该命令将蓝牙设备`C0:98:E5:89:XX:XX`绑定到`/dev/rfcomm0`上,并将其通道设置为1。接下来,使用以下命令开启透传模式:

“`

sudo cat /dev/ttyUSB0 | sudo tee /dev/rfcomm0

“`

该命令将串口`/dev/ttyUSB0`与蓝牙设备`C0:98:E5:89:XX:XX`进行透传。从串口发送的所有数据都将在蓝牙设备上反映出来,反之,从蓝牙设备发送的所有数据也可以通过串口进行接收。

Step 5:测试透传

在完成以上步骤后,我们可以通过在`/dev/ttyUSB0`中发送一些数据,然后在蓝牙设备上观察数据是否正确的方式来测试透传模式是否正常工作。同样的,我们也可以在蓝牙设备上发送数据,在`/dev/ttyUSB0`中接收数据,以验证透传模式的正确性。

通过以上步骤,我们可以轻松地在Linux上使用串口蓝牙透传,实现数据的无缝传输。在实际的应用中,如果需要使用多个串口,我们只需要重复以上步骤,分别绑定和开启透传即可。使用Linux系统进行串口蓝牙透传,不仅简单方便,而且能够广泛适用于各种应用场景,是一种值得推广的技术方案。

相关问题拓展阅读:

解决Linux无法连接蓝牙耳机Bose QuietComfort 35(QC35)的问题

切换到Arch也有一段时间了,一直在用腊乎的QC35也又一次遇到了蓝牙配对的问题。以前都是用Blueman,或者直接连接有线,但是问迹局源题只是被隐藏了,这次还是好好把这个问题解决了一下。

Linux下连接蓝牙设备的方法可以参照姿态 Arch Wiki:Bluetooth ,我使用的蓝牙设备是USB CSR8510

蓝牙适配器

,按页面说明安装好软件包后,启动蓝牙服务,进入bluetoothctl,耳机打开配对模式,scan on查找到我的耳机的MAC,pair 04:52:C7:5B:CB:65,出现问题:

如果你在蓝牙设置界面进行配对尝试,不同桌面也有不同的错误提示,反正就是无法完成配对。如果使用Blueman等软件,有机会可以通过多次重试成功连接,但是问题还是间歇出现,并不能治本。

百度是找不到什么好解决方案的,直接Google,不一会就找到了有用的解决方法, Pairing Bose QC 35 over Bluetooth on Fedora ,问题上看基本就是我的问题,更高票的回答也很简单,QC35声称支持低功耗蓝牙(LE)但不支持低功耗模式下的配对,Bluez也还不支持明明配对一个LE设备,却要切换到BR模式来配对(大概是这个意思),除非你在

配置文件

里指定所有设备都应该工作在BR模式,所以打开配置文件/etc/bluetooth/main.conf(没有的话新建一个),找到下面的

将 # ControllerMode = dual改为ControllerMode = bredr,然后保存,对于新建的文档,直接输入下面的然后保存

然后重启bluetooth服务

现在你应该能在bluetooth里愉快地配对了—-才怪,你还需要删除以前的配对设置,否则会出现org.bluez.Error.AuthenticationRejected错误

再次尝试配对,信任,连接,如果连接时出现Failed to connect: org.bluez.Error.Failed错误,那是你没装pulseaudio-bluetooth包,无法支持A2DP协议,装一个再试就可以了。

成功连接后声音输出可能会默认走的是HSP/HFP,音质会极差,在音频设置里切换到A2DP就正常了。更多蓝牙音频设备的设置可以查看 Arch Wiki:Bluetooth headset

关于蓝牙协议可以查看百科,或者这里有简短的科普 蓝牙协议分析(1)_基本概念

关于这里bluetooth和QC35在配对时鸡同鸭讲的问题,给出解决问题的人也表示自己的蓝牙鼠标是LE,为了使用他后来把配置文件里的ControllerMode删掉了,但是耳机和鼠标都没受影响,他猜想可能配对后的设备是不受配置文件的影响的。

为Deepin Linux启用蓝牙支持

自从安装了Deepin Linux,并 采用自己编译的内核 后,笔者的ThinkPad X200笔记本体验可谓是上升了一个非常重要的层次。后来有一天,笔者想用蓝牙耳机听音乐,然而在使用过程中发现,这台笔记本虽然自带蓝牙,屏幕下的蓝牙指示灯一直点亮着,系统中却看不到与蓝牙有关的设置选项。

出现这样的问题,多半就是因为系模告统中对蓝牙的支持没有启用,主要包括系统组件和内核两个层面。下面把我的经验总结如下。

默认地,Deepin并没有在系统中装上蓝牙组件,须用户手动安装。在终端中运行:

其中, bluetooth 是Linux蓝牙的核心组件,而 blueman 则是基于GTK+的一个全功能蓝牙管理器。把它们一齐装上,即可为Deepin启用全面的蓝牙支持。

笔者本以为安装了蓝牙组件后,蓝牙功能就能正常使用(因为之前在解决WLAN问题时,WLAN驱动未配置的情况下

无线网卡

灯是不会亮的,然而蓝牙灯始终会常亮),但是当打开蓝牙管理器时,竟然报错,提示蓝牙服务未启动。这不得不让我想到,内核中的蓝牙支持是否没有启用。

果不其然。在内核源码目录下运行 make menuconfig ,打开内核配置界面,依次对内核进行以下配置。

内核中的蓝牙选项位于【Network Settings】 –> 【Bluetooth subsystem support】。先选中【Bluetooth subsystem support】,然后按”Y“,勾选它。

【Bluetooth subsystem support】中有子菜单,按回车进入隐春,如下所示:

其中有几个选项,控制特定类型蓝牙设备协议的支持,一般全部启用。它们包括:

最为重要的一步,就是将

蓝牙适配器

驱动编译入内核当中。

进入最下方子菜单【Bluetooth device drivers】,如下所示:

菜单中根据接口和特定型号设备,列出了相应的支旦携明持选项,有些选项在勾选后还会展开新的选项。典型的接口有USB、SDIO、UART,按需要勾选。

笔者X200笔记本的蓝牙适配器是Broadcom BCM2023B,走的是USB通道,因此先勾选【HCI USB driver】,随后会在该项下面出现三个新的选项,再进一步勾选【Broadcom protocol support】。不过,在得知适配器信息之前,笔者拿捏蓝牙适配器可能也走了UART通道,所以也将【HCI UART driver】勾上,再进一步勾选下面的【Intel AG6XX protocol support】。但实际使用时发现,X200的蓝牙适配器的确走的是USB而非UART。若不能确定自己的蓝牙适配器类型,可以一并选上,也不占用太多空间。

上述配置完成后,按左右方向键选择”Save“,保存内核配置,然后选”Exit“退出。使用下面的命令重新编译内核并安装:

重启后,蓝牙功能即被激活。

在内核中启用蓝牙支持,并在系统中安装蓝牙组件后,Deepin发生了翻天覆地的变化。Deepin下蓝牙的体验非常出色。

Blueman管理器默认开机启动,会在托盘区域出现一个蓝牙图标,在其中可以很方便地管理蓝牙设备。

在Blueman管理器中可以搜索到各种蓝牙设备,包括各种手机、电脑,以及笔者的蓝牙耳机。与蓝牙耳机配对后,Deepin即刻将声音通过蓝牙进行播放,无需再进行进一步的配置,尤其方便。此外,Blueman还有其他有趣的玩法,比如文件传输、浏览设备文件,其中对设备文件的浏览功能与当年的MTK功能机类似。

以X200为代表的ThinkPad早期机型有一项设计非常出彩,就是它屏幕下的灯条,系统运行状态一目了然。其中正包括了蓝牙指示灯,当有数据传输时(如正使用蓝牙音频),指示灯会闪烁,如此就能知道蓝牙设备是否正常工作。可谓匠心。

要想让使用Deepin的笔记本支持蓝牙,需要做两项工作——

由此,Deepin下设备的价值就能被进一步挖掘,体验自会更上一层楼。

Linux系统如何利用命令打开蓝牙

1.要先确州备橘定硬件上有支持蓝牙的设备:用以下命令

(1)lsu

(2)运行hciconfig命令看蓝牙设备

(3)册团运行hcitool dev命令可以看见蓝牙设备的

硬件地址

2.激活滚指蓝牙

service bluetooth stop

service bluetooth start

关于linux 串口 蓝牙透传的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。


数据运维技术 » 使用Linux实现串口蓝牙透传简单易行 (linux 串口 蓝牙透传)