Có thể kết nối Bluetooth mà không cần ghép nối?


36

Tôi đang làm việc trên một thiết bị có thể kích hoạt không dây một hệ thống "ngay lập tức". Điều đầu tiên xuất hiện là sử dụng công nghệ RFID có lợi thế là giao tiếp nhanh và rẻ. Tuy nhiên, tôi quan tâm đến việc sử dụng khả năng bluetooth của điện thoại để hoàn thành nhiệm vụ này.

Vì vậy, câu hỏi của tôi là, để sử dụng giao tiếp Bluetooth, có cách nào để giao tiếp mà không cần ghép nối? Nói cách khác, ở mức độ rất đơn giản, giả sử người nhận Bluetooth của tôi đang mong đợi mã "abc123". Một thiết bị Bluetooth, giống như điện thoại, được lập trình để liên tục truyền mã này. Khi nhận được mã, hệ thống bắt đầu thực hiện bất cứ điều gì được cho là một khi quyền truy cập được cấp. Một hệ thống như vậy sẽ loại bỏ rào cản ghép đôi, tất nhiên, với chi phí bảo mật.

Vì vậy, khái niệm này là một khả năng? Tôi có ít hiểu biết về các giao thức liên kết Bluetooth ở mức độ rất kỹ thuật, nhưng nếu ai đó có thể dẫn tôi, tôi có thể bắt đầu học từ thời điểm đó. Đừng coi sự hiểu biết hạn chế của tôi là một hạn chế.


Có một chế độ Bluetooth thực hiện điều đó, nhưng tôi không biết nó được gọi là gì. Nó được sử dụng để gửi quảng cáo địa phương đến điện thoại di động.
jippie

2
Có nhiều mô-đun 433Mhz khác nhau sẽ truyền tín hiệu bật / tắt "ngay lập tức"; thường được sử dụng trong mở cửa nhà để xe. Chúng cũng rẻ và dễ vận hành, mặc dù chúng không cung cấp bảo mật cố hữu.
pjc50

Câu trả lời:


25

Vâng, nó hoàn toàn có thể. Tôi đã nhận xét về điều này trước đây và kể từ đó đã xem xét thêm. Bạn có thể yêu cầu thiết bị Bluetooth kích hoạt gửi tín hiệu kích hoạt thông qua tên thân thiện .

Tên thân thiện là tên dễ đọc của con người xuất hiện trong danh sách khi bạn tìm kiếm thiết bị Bluetooth để ghép nối. Tốc độ kích hoạt này phụ thuộc vào mức độ nhanh chóng của các cuộc thăm dò thiết bị nhận tên thân thiện. Bạn chưa đề cập đến loại thiết bị nhận nào bạn đang sử dụng nhưng tôi đã tìm thấy bản PDF này (PG.35) nêu chi tiết quá trình cập nhật tên thân thiện của các thiết bị Bluetooth trong phạm vi.

Bạn có thể thăm dò tên thân thiện thường xuyên như bạn yêu cầu. Nếu thiết bị kích hoạt của bạn thay đổi tên thân thiện thành mã kích hoạt abc123, thì thiết bị nhận sẽ có thể thấy tên đó mà không cần ghép nối và kích hoạt bất kỳ tác vụ nào bạn đang cố gắng thực hiện. Điều này cũng cho phép bạn có vô số mã kích hoạt, tôi nghĩ rằng bạn có thể nhận được tới 248 byte cho tên Bluetooth thân thiện.

Bạn cũng có thể cố tình mở ra cho Bluejacking . Tôi không quen thuộc với nó, nhưng nếu bảo mật không phải là vấn đề thì nó có thể hoạt động.


2
Hoàn hảo, điều này dường như là hứa hẹn nhất. Tôi thích sự đơn giản của phương pháp tên thân thiện và Bluejacking có vẻ như là một ứng cử viên tuyệt vời.
capcom

12

Câu trả lời ngắn gọn là có, có thể sử dụng Bluetooth mà không cần ghép nối. Tuy nhiên, nó vẫn sẽ luôn là một liên kết điểm-điểm. Cũng có những vấn đề tiềm ẩn khi không sử dụng ghép nối (chủ yếu là thiếu bảo mật và thiếu hỗ trợ tốt cho chế độ hoạt động này). Việc này có thể được thực hiện hay không tùy thuộc vào phần cứng Bluetooth của máy thu của bạn. Tôi giả sử bạn đang sử dụng Bluetooth 'tiêu chuẩn' thay vì Bluetooth năng lượng thấp (hoàn toàn khác biệt và không được hỗ trợ đặc biệt trong điện thoại di động). Nếu bạn đang sử dụng năng lượng thấp thì máy phát của bạn sẽ là một thiết bị có năng lượng thấp và máy thu của bạn sẽ là thứ lắng nghe các tin nhắn. Tôi chưa sử dụng cái này, vì vậy tôi không thể cung cấp cho bạn bất kỳ thông tin nào về điều này vì vậy tôi sẽ sử dụng Bluetooth 'bình thường'.

Theo tôi thấy, có hai vấn đề cần khắc phục:

  1. Tắt ghép nối pin

  2. Bắt đầu kết nối tự động

Tôi sẽ đề cập đến số 2 trước khi tôi có ấn tượng rằng đây là điều bạn thực sự quan tâm (xin lỗi nếu tôi đọc sai). Để thực hiện việc này từ điện thoại hoặc thiết bị 'chính chủ' khác, nó sẽ phải liên tục tìm kiếm các thiết bị Bluetooth từ xa. Khi nó nhận ra một dữ liệu có thể áp dụng, nó sẽ tự động kết nối với nó và gửi một số dữ liệu hoặc dữ liệu khác sẽ bắt đầu bất kỳ hành động nào được yêu cầu. Những người khác đã đề cập đến việc sử dụng tên thân thiện Bluetooth cho quy trình này và đó chắc chắn là một cách để làm điều đó. Kinh nghiệm của tôi về các tên thân thiện với Bluetooth (đặc biệt nhưng không chỉ riêng với ngăn xếp Bluetooth của Microsoft) là chúng không phải là một phương pháp quét mạnh mẽ. Bạn có thể sử dụng Lớp thiết bị Bluetooth tốt hơn nhiều, được phát cùng lúc với địa chỉ thiết bị duy nhất. Lớp thiết bị này có một số lượng lớn các mục được chỉ định trước cho những thứ như điện thoại di động, máy tính xách tay, máy tính để bàn, v.v. Nếu bạn sử dụng một trong các lớp thiết bị không chuẩn (ví dụ 00:00:00), bạn sẽ có thể ngay lập tức để lọc ra phần lớn các thiết bị Bluetooth. Sau đó, bạn có thể kết nối với thiết bị còn lại và thực hiện một số loại giao tiếp xác nhận yêu cầu để bắt đầu hành động của mình. Nếu bạn thực hiện điều này tối nghĩa phù hợp (hoặc kiểm tra tên thân thiện như là một sự cân nhắc thứ hai), thì nó sẽ hoàn toàn lọc ra bất kỳ thiết bị không chính xác nào còn lại.


Về số 1, ghép nối pin không đặc biệt hợp lý nếu bạn đang tạo kết nối tạm thời, nhưng nó vẫn có thể là cách tốt nhất để đạt được những gì bạn muốn làm. Nếu bạn muốn tránh ghép nối pin, nó có thể được tắt và kết nối không ghép đôi có thể được thực hiện. Cách bạn thực hiện việc này tùy thuộc vào việc triển khai bộ thu Bluetooth, nhưng đây là một vài ví dụ:

  1. Bluegiga WT12: sử dụng lệnh SET BT AUTH *
  2. LMX9838 bán dẫn quốc gia: sử dụng lệnh GAP_SET_SECURITY_MODE với chế độ bảo mật 1 (không ghép nối)

v.v.

Kết nối với thiết bị sau đó có thể được thực hiện mà không cần ghép nối. Nếu thiết bị khởi tạo kết nối giống như thiết bị thu, điều này rất đơn giản. Nếu bạn đang sử dụng PC Windows, bạn có thể trải qua quá trình tạo kết nối mới và chọn "không sử dụng mã pin", mặc dù Windows có thể vẫn yêu cầu bạn cấp mã pin khi bạn kết nối (0000 thường hoạt động, nhưng nó rất dễ vỡ). Nếu bạn đang sử dụng python với pybluez, nó rất đơn giản:

import bluetooth
sock = bluetooth.BluetoothSocket(bluetooth.RFCOMM)
sock.connect((<insert MAC address>, <insert port number>))

Tuy nhiên, nếu bạn muốn kết nối từ điện thoại di động, nó được nhiều hơn phức tạp. SDK Android dường như không thực sự hỗ trợ các kết nối không ghép đôi:

API Bluetooth Android hiện tại yêu cầu các thiết bị được ghép nối trước khi kết nối RFCOMM có thể được thiết lập. (Việc ghép nối được thực hiện tự động khi bạn bắt đầu kết nối được mã hóa với API Bluetooth.)

(từ http://developer.android.com/guide/topics/connectivity/bluetooth.html ). Có nhiều cách để giải quyết vấn đề này, nhưng chúng rất phức tạp và không được hỗ trợ tốt. Nếu bạn đang sử dụng iPhone, thì kết nối Bluetooth là một loại sâu hoàn toàn khác (cấp phép, v.v.), vì vậy tôi sẽ để nó ngay bây giờ.


Như đã nói, hầu như mọi API tôi từng xem đều cho phép ghép nối không được thực hiện (với ngoại lệ đáng chú ý là python / pybluez, nhưng đó chỉ là một trình bao bọc xung quanh ngăn xếp của Microsoft trên Windows, vì vậy bạn luôn có thể gọi trực tiếp chức năng cấp thấp). Vì vậy, khi bạn phát hiện ra một thiết bị có đúng loại thiết bị, tại sao không chỉ tự động ghép nối (với số pin ghép nối được xác định trước), tạo kết nối, gửi dữ liệu cần thiết, ngắt kết nối và sau đó hủy ghép nối. Không ai trong số này yêu cầu bất kỳ sự can thiệp nào của người dùng và miễn là bạn không thực hiện hàng nghìn lần (điều này có thể gây ra sự cố với mặc EEPROM), điều đó không gây ra cho bạn bất kỳ vấn đề nào. Nó cũng sẽ giúp bạn tiết kiệm rất nhiều rắc rối khi cố gắng để các API khác nhau hoạt động tốt với những gì được coi là phương pháp sử dụng Bluetooth không chuẩn.


1
Cảm ơn cho một phản ứng tuyệt vời! Rất nhiều cho tôi nhìn vào bây giờ.
capcom

10

Điều này có thể được thực hiện với một công nghệ trong Bluetooth thương hiệu gọi là Bluetooth Smart (hoặc Bluetooth Low Energy / Bluetooth 4.0) Và cũng tùy thuộc vào điện thoại bạn có.

Lợi ích chính với Năng lượng thấp so với Bluetooth thông thường là nó tiêu thụ ít năng lượng hơn và tuổi thọ dự kiến ​​của thiết bị có thể là hàng năm tùy thuộc vào khoảng thời gian kết nối và mức độ quảng cáo trên pin di động.

Để giải quyết vấn đề này, bạn có thể đặt mã trong câu hỏi bên trong dữ liệu quảng cáo của chip. ( Bluetooth lõi 4.0. Tập 3, Phần C, Mục 11.1.4 hoặc 11.1.10)

Có 3 nhà sản xuất chip lớn sản xuất chip Năng lượng thấp (TI, CSR và Chất bán dẫn Bắc Âu)

Bắc Âu có một chip kết nối được gọi là nRF8001 (một chip kết nối, thiết bị đủ điều kiện) và SoC nRF51822 . Lợi ích của việc sử dụng nRF8001 là bạn có thể sử dụng bộ xử lý lựa chọn của mình và không phải bận tâm về thông số kỹ thuật Bluetooth vì điều này được xử lý bởi chip. Lợi ích của nRF51822 là nó là một hệ thống trên chip và giảm BOM, nó chạy Cortex-M0 và phải đủ điều kiện khi phát hành.

TI có chip SoC 8051 cc2540 và CSR có chip SoC CSR miếngEnergy

Tất cả đáp ứng nhu cầu và sở thích của bạn trong bộ xử lý và chức năng / chi phí


3

Có, giao tiếp Bluetooth là có thể mà không cần ghép nối các thiết bị. Sử dụng sự insecureRfcomtôn trọng của RFCOM an toàn. Nó không yêu cầu ghép nối để truyền dữ liệu.



1

Kết quả của việc ghép nối thành công là khóa liên kết, bí mật mà các thiết bị được ghép nối chia sẻ và cho phép chúng giao tiếp.

Nếu có thể đặt khóa liên kết trên hệ thống, thì có, không cần ghép nối. Chỉ cần đặt cùng một phím liên kết trên cả hai thiết bị. Sau khi kết nối này có thể được mở thành công như thể hai thiết bị đã được ghép nối.

Chẳng hạn, trên Linux sau khi ghép nối infotệp được lưu trữ cho từng thiết bị được phân loại theo / var / lib / bluetooth / local-device-address / remote-device-address /

Sau Generalphần chứa follwing: [LinkKey] Key=FF00112233445566778899AABBCCDDEE Type=5 PINLength=0

Điều này có thể được đặt trực tiếp mà không cần ghép nối. Nếu tương tự được viết trên thiết bị từ xa. Các thiết bị được ghép nối.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.