Linux 识别我的 BLE?

标签 linux sockets bluetooth

我有一个 BLE SoC (QN9021) 通过 UART 接口(interface)连接到 linux 系统(运行 openwrt 的 beagle bone)。我希望 linux 能够识别与系统连接的 BLE,并且 gatttool、hcitool 等命令应该适用于我的 BLE。

此外,我正在使用 Bluez,我希望 BlueZ 库能够找到并直接与我的 BLE 通信。

看起来 bluez 中的源文件使用 socket() 函数调用来与蓝牙适配器通信。我已经发布了包含套接字调用的 hcitool.c 源文件部分:

/* Open HCI device.
 * Returns device descriptor (dd). */
int hci_open_dev(int dev_id)
{
struct sockaddr_hci a;
int dd, err;

/* Check for valid device id */
if (dev_id < 0) {
    errno = ENODEV;
    return -1;
}

/* Create HCI socket */
dd = socket(AF_BLUETOOTH, SOCK_RAW | SOCK_CLOEXEC, BTPROTO_HCI);
if (dd < 0)
    return dd;

/* Bind socket to the HCI device */
memset(&a, 0, sizeof(a));
a.hci_family = AF_BLUETOOTH;
a.hci_dev = dev_id;
if (bind(dd, (struct sockaddr *) &a, sizeof(a)) < 0)
    goto failed;

return dd;

failed:
err = errno;
close(dd);
errno = err;

return -1;
}

如前所述,我通过 UART 连接 BLE SoC。我怎样才能让我的 BLE 被识别为蓝牙和像 socket() 这样的函数调用应该打开我的 BLE 的描述符?

最佳答案

你运行的时候有什么表现吗?

dmesg | grep blue

lsmod | grep blue

您需要确保您有此模块的 linux 驱动程序,它在您的内核中可用(NXP 和 TI 不一定喜欢一起玩)并且它可能内置在您的设备树中。

如果使用具有驱动程序支持的 TI BLE 模块,您可能会更幸运。

关于Linux 识别我的 BLE?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41479580/

相关文章:

android - Android 上的蓝牙文件传输(甚至受限类型)

与Linux中的内存映射设备通信

ruby - 如何使此数组.to_json(Ruby)?它在我的程序中表现不佳,但在irb中工作正常

c - 通过套接字发送图片文件时,为什么字节有所不同?

python - 如何在不关闭 tcp 套接字的情况下发送文件结尾

java - 在其他线程中使用蓝牙连接的OutputStream会干扰消息的接收

audio - FFmpeg 桌面录制不适用于蓝牙音频源

linux - 如何使用 wget 一次下载所有这些文件?

php - XAMPP - 如何从主目录执行 PHP 文件?

linux - 提交时 SVN 校验和错误