var bleno = require('bleno');
// Once bleno starts, begin advertising our BLE address
bleno.on('stateChange', function(state) {
console.log('State change: ' + state);
if (state === 'poweredOn') {
bleno.startAdvertising('MyDevice',['6d79686561727473656e74696e656c10']);
} else {
bleno.stopAdvertising();
}
});
// Notify the console that we've accepted a connection
bleno.on('accept', function(clientAddress) {
console.log("Accepted connection from address: " + clientAddress);
});
// Notify the console that we have disconnected from a client
bleno.on('disconnect', function(clientAddress) {
console.log("Disconnected from address: " + clientAddress);
});
// When we begin advertising, create a new service and characteristic
bleno.on('advertisingStart', function(error) {
if (error) {
console.log("Advertising start error: " + error);
} else {
console.log("Advertising start success");
bleno.setServices([
// Define a new service
new bleno.PrimaryService({
uuid : '6d79686561727473656e74696e656c10',
characteristics : [
// ECG characteristic
new bleno.Characteristic({
value : 'hello!',
uuid : '6d79686561727473656e74696e656c11',
properties : ['read'],
// Send a message back to the client with the characteristic's value
onReadRequest : function(offset, callback) {
console.log("Read request received");
callback(this.RESULT_SUCCESS, new Buffer("Echo: " + this.value);
}
})
]
}),
]);
}
});
Bluetooth monitor ver 5.50
= Note: Linux version 4.19.57-v7l+ (armv7l) 0.501891
= Note: Bluetooth subsystem version 2.22 0.501900
= New Index: xx:xx:xx:xx:xx:xx (Primary,UART,hci0) [hci0] 0.501905
= Open Index: xx:xx:xx:xx:xx:xx [hci0] 0.501908
= Index Info: xx:xx:xx:xx:xx:xx (Cypress Semiconductor Corporation) [hci0] 0.501911
@ MGMT Open: bluetoothd (privileged) version 1.14 {0x0001} 0.501915
@ MGMT Open: btmon (privileged) version 1.14 {0x0002} 0.501989
< HCI Command: LE Set Scan Parameters (0x08|0x000b) plen 7 #1 [hci0] 4.586280
Type: Passive (0x00)
Interval: 60.000 msec (0x0060)
Window: 30.000 msec (0x0030)
Own address type: Public (0x00)
Filter policy: Ignore not in white list (0x01)
> HCI Event: Command Complete (0x0e) plen 4 #2 [hci0] 4.586656
LE Set Scan Parameters (0x08|0x000b) ncmd 1
Status: Success (0x00)
< HCI Command: LE Set Scan Enable (0x08|0x000c) plen 2 #3 [hci0] 4.586717
Scanning: Enabled (0x01)
Filter duplicates: Enabled (0x01)
> HCI Event: Command Complete (0x0e) plen 4 #4 [hci0] 4.587132
LE Set Scan Enable (0x08|0x000c) ncmd 1
Status: Success (0x00)
> HCI Event: LE Meta Event (0x3e) plen 33 #5 [hci0] 4.619942
LE Advertising Report (0x02)
Num reports: 1
Event type: Connectable undirected - ADV_IND (0x00)
Address type: Public (0x00)
Address: xx:xx:xx:xx:xx:xx (OUI DC-A6-32)
Data length: 21
Flags: 0x06
LE General Discoverable Mode
BR/EDR Not Supported
128-bit Service UUIDs (partial): 1 entry
Vendor specific (6d796865-6172-7473-656e-74696e656c10)
RSSI: -31 dBm (0xe1)
< HCI Command: LE Set Scan Enable (0x08|0x000c) plen 2 #6 [hci0] 4.620014
Scanning: Disabled (0x00)
Filter duplicates: Disabled (0x00)
> HCI Event: Command Complete (0x0e) plen 4 #7 [hci0] 4.621661
LE Set Scan Enable (0x08|0x000c) ncmd 1
Status: Success (0x00)
< HCI Command: LE Create Connection (0x08|0x000d) plen 25 #8 [hci0] 4.621724
Scan interval: 60.000 msec (0x0060)
Scan window: 60.000 msec (0x0060)
Filter policy: White list is not used (0x00)
Peer address type: Public (0x00)
Peer address: xx:xx:xx:xx:xx:xx (OUI DC-A6-32)
Own address type: Public (0x00)
Min connection interval: 30.00 msec (0x0018)
Max connection interval: 50.00 msec (0x0028)
Connection latency: 0 (0x0000)
Supervision timeout: 420 msec (0x002a)
Min connection length: 0.000 msec (0x0000)
Max connection length: 0.000 msec (0x0000)
> HCI Event: Command Status (0x0f) plen 4 #9 [hci0] 4.622251
LE Create Connection (0x08|0x000d) ncmd 1
Status: Success (0x00)
> HCI Event: LE Meta Event (0x3e) plen 19 #10 [hci0] 4.726113
LE Connection Complete (0x01)
Status: Success (0x00)
Handle: 64
Role: Master (0x00)
Peer address type: Public (0x00)
Peer address: xx:xx:xx:xx:xx:xx (OUI DC-A6-32)
Connection interval: 48.75 msec (0x0027)
Connection latency: 0 (0x0000)
Supervision timeout: 420 msec (0x002a)
Master clock accuracy: 0x00
@ MGMT Event: Device Connected (0x000b) plen 34 {0x0002} [hci0] 4.726162
LE Address: xx:xx:xx:xx:xx:xx (OUI DC-A6-32)
Flags: 0x00000000
Data length: 21
Flags: 0x06
LE General Discoverable Mode
BR/EDR Not Supported
128-bit Service UUIDs (partial): 1 entry
Vendor specific (6d796865-6172-7473-656e-74696e656c10)
@ MGMT Event: Device Connected (0x000b) plen 34 {0x0001} [hci0] 4.726162
LE Address: xx:xx:xx:xx:xx:xx (OUI DC-A6-32)
Flags: 0x00000000
Data length: 21
Flags: 0x06
LE General Discoverable Mode
BR/EDR Not Supported
128-bit Service UUIDs (partial): 1 entry
Vendor specific (6d796865-6172-7473-656e-74696e656c10)
< HCI Command: LE Read Remote Used Features (0x08|0x0016) plen 2 #11 [hci0] 4.726356
Handle: 64
> HCI Event: Command Status (0x0f) plen 4 #12 [hci0] 4.726943
LE Read Remote Used Features (0x08|0x0016) ncmd 1
Status: Success (0x00)
> HCI Event: Command Complete (0x0e) plen 14 #13 [hci0] 4.726951
LE Read Remote Used Features (0x08|0x0016) ncmd 1
Status: Success (0x00)
00 00 00 00 00 00 00 00 00 00 ..........
> HCI Event: LE Meta Event (0x3e) plen 12 #14 [hci0] 4.881359
LE Read Remote Used Features (0x04)
Status: Success (0x00)
Handle: 64
Features: 0x3f 0x00 0x00 0x00 0x00 0x00 0x00 0x00
LE Encryption
Connection Parameter Request Procedure
Extended Reject Indication
Slave-initiated Features Exchange
LE Ping
LE Data Packet Length Extension
> HCI Event: LE Meta Event (0x3e) plen 11 #15 [hci0] 5.027630
LE Data Length Change (0x07)
Handle: 64
Max TX octets: 251
Max TX time: 2120
Max RX octets: 251
Max RX time: 2120
连接失败时
Bluetooth monitor ver 5.50
= Note: Linux version 4.19.57-v7l+ (armv7l) 0.114663
= Note: Bluetooth subsystem version 2.22 0.114671
= New Index: xx:xx:xx:xx:xx:xx (Primary,UART,hci0) [hci0] 0.114675
= Open Index: xx:xx:xx:xx:xx:xx [hci0] 0.114678
= Index Info: xx:xx:xx:xx:xx:xx (Cypress Semiconductor Corporation) [hci0] 0.114681
@ MGMT Open: bluetoothd (privileged) version 1.14 {0x0001} 0.114686
@ MGMT Open: btmon (privileged) version 1.14 {0x0002} 0.114760
< HCI Command: Disconnect (0x01|0x0006) plen 3 #1 [hci0] 5.864108
Handle: 64
Reason: Remote User Terminated Connection (0x13)
> HCI Event: Command Status (0x0f) plen 4 #2 [hci0] 5.864469
Disconnect (0x01|0x0006) ncmd 1
Status: Success (0x00)
> HCI Event: Disconnect Complete (0x05) plen 4 #3 [hci0] 5.883803
Status: Success (0x00)
Handle: 64
Reason: Remote User Terminated Connection (0x13)
@ MGMT Event: Device Disconnected (0x000c) plen 8 {0x0002} [hci0] 5.883848
LE Address: xx:xx:xx:xx:xx:xx (OUI DC-A6-32)
Reason: Connection terminated by remote host (0x03)
@ MGMT Event: Device Disconnected (0x000c) plen 8 {0x0001} [hci0] 5.883848
LE Address: xx:xx:xx:xx:xx:xx (OUI DC-A6-32)
Reason: Connection terminated by remote host (0x03)
< HCI Command: LE Set Scan Parameters (0x08|0x000b) plen 7 #4 [hci0] 25.059876
Type: Passive (0x00)
Interval: 60.000 msec (0x0060)
Window: 30.000 msec (0x0030)
Own address type: Public (0x00)
Filter policy: Ignore not in white list (0x01)
> HCI Event: Command Complete (0x0e) plen 4 #5 [hci0] 25.060698
LE Set Scan Parameters (0x08|0x000b) ncmd 1
Status: Success (0x00)
< HCI Command: LE Set Scan Enable (0x08|0x000c) plen 2 #6 [hci0] 25.060762
Scanning: Enabled (0x01)
Filter duplicates: Enabled (0x01)
> HCI Event: Command Complete (0x0e) plen 4 #7 [hci0] 25.061665
LE Set Scan Enable (0x08|0x000c) ncmd 1
Status: Success (0x00)
> HCI Event: LE Meta Event (0x3e) plen 33 #8 [hci0] 39.473657
LE Advertising Report (0x02)
Num reports: 1
Event type: Connectable undirected - ADV_IND (0x00)
Address type: Public (0x00)
Address: xx:xx:xx:xx:xx:xx (OUI DC-A6-32)
Data length: 21
Flags: 0x06
LE General Discoverable Mode
BR/EDR Not Supported
128-bit Service UUIDs (partial): 1 entry
Vendor specific (6d796865-6172-7473-656e-74696e656c10)
RSSI: -28 dBm (0xe4)
< HCI Command: LE Set Scan Enable (0x08|0x000c) plen 2 #9 [hci0] 39.473746
Scanning: Disabled (0x00)
Filter duplicates: Disabled (0x00)
> HCI Event: Command Complete (0x0e) plen 4 #10 [hci0] 39.475900
LE Set Scan Enable (0x08|0x000c) ncmd 1
Status: Success (0x00)
< HCI Command: LE Create Connection (0x08|0x000d) plen 25 #11 [hci0] 39.475956
Scan interval: 60.000 msec (0x0060)
Scan window: 60.000 msec (0x0060)
Filter policy: White list is not used (0x00)
Peer address type: Public (0x00)
Peer address: xx:xx:xx:xx:xx:xx (OUI DC-A6-32)
Own address type: Public (0x00)
Min connection interval: 30.00 msec (0x0018)
Max connection interval: 50.00 msec (0x0028)
Connection latency: 0 (0x0000)
Supervision timeout: 420 msec (0x002a)
Min connection length: 0.000 msec (0x0000)
Max connection length: 0.000 msec (0x0000)
> HCI Event: Command Status (0x0f) plen 4 #12 [hci0] 39.476993
LE Create Connection (0x08|0x000d) ncmd 1
Status: Success (0x00)
< HCI Command: LE Create Connection Cancel (0x08|0x000e) plen 0 #13 [hci0] 43.544123
> HCI Event: Command Complete (0x0e) plen 4 #14 [hci0] 43.546763
LE Create Connection Cancel (0x08|0x000e) ncmd 1
Status: Success (0x00)
> HCI Event: LE Meta Event (0x3e) plen 19 #15 [hci0] 43.546914
LE Connection Complete (0x01)
Status: Unknown Connection Identifier (0x02)
Handle: 64
Role: Master (0x00)
Peer address type: Public (0x00)
Peer address: xx:xx:xx:xx:xx:xx (OUI DC-A6-32)
Connection interval: 48.75 msec (0x0027)
Connection latency: 0 (0x0000)
Supervision timeout: 420 msec (0x002a)
Master clock accuracy: 0x00
失败时,gatttool输出错误为错误:连接错误:传输endpoint未连接(107)
4000毫秒是一个相当大的广告间隔。无论如何,bluepy使用BlueZ,当BlueZ连接时,它首先扫描,当它找到想要的设备时,它停止扫描并启动连接。在此连接尝试期间,在重新开始扫描之前有一个超时。这可能是4000毫秒的广告间隔大于超时。我想通常是2秒钟。
在尝试连接之前,请在您的中央设备上启动“sudo btmon”,让它捕获并打印HCI数据包,并在此处发布输出。
广告间隔和连接间隔是完全独立的。
问题内容: 我想用BLE扫描某些设备。我只想显示我的设备,所以我知道了设备的名称,如果是好的设备,我会将其放在列表中。 我的问题是,如果我更改设备的名称,此检查将为false。因此,我看是否有可能获得一些我添加的用于执行检查的服务的不变的东西。唯一的方法是使用gatt在发现服务后执行此操作,然后再连接到该设备,但是,是否有可能在不连接设备的情况下从该设备发现某些服务? 问题答案: 我不具备andr
我对BLE和Android上的BLE是新手,我试图理解Android是如何管理BLE地址的。通过查看不同的帖子和android文档,我了解到android正在通过在广告和扫描时使用私人可解析地址来加强LE隐私。 我有一个具有挑战性的时间限制的用例,理想情况下,我希望通过使用2个Android设备的MAC地址来执行直接的BLE连接,而不是执行通常的扫描/广告发现。不幸的是,出于隐私原因,Androi
从WireShark屏幕抓取显示问题发生时的流量 简短的问题--参考WireShark映像,是什么原因导致Master发送LL_CHANNEL_MAP_IND以及为什么要花这么长时间? 主机产品设备在TI AM4376x处理器上运行我们自己的嵌入式Linux映像。内核是4.14.79,我们的通信栈位于Bluez5之上。WiFi/蓝牙芯片是Jorjin WG7831-BO,运行Tiinit_11.8
如果有人能解释我在更新连接参数时遇到的一个问题,我将非常感谢Raspberry PI3 model B在与外围设备的BLE连接上充当中心设备,特别是在连接事件长度方面。 有人能给我解释一下这个问题吗? 谢谢
在iOS中,无法获取CBP外围对象的mac地址。现在,我有很多不同UUID但外设名称相同的BLE设备。用户必须首先通过注册命令注册到BLE设备,该BLE设备的MAC地址将在二维码扫描时获得。但是,我如何才能获得设备用户正在进行注册,因为在iOS中,我在外围设备中没有获得MAC地址?
我试图扫描BLE设备与 (我知道它在新版本中已经过时了,但我只是想看看它是否能与我的手机配合使用[4.4],我正在使用它)。因此,它开始扫描,然后继续,没有给出错误,但没有检测到设备。也会触发OnLEScan事件,但其中的设备参数为null。我的LE设备就在那里并已连接。 在Google上,我发现如果BluetoothAdapter没有UUID,就会发生这种情况。如何设置UUID?何时调用/启动O