Apakah Komunikasi Bluetooth Mungkin Tanpa Pasangan?

36

Saya sedang mengerjakan perangkat yang secara nirkabel dapat mengaktifkan sistem "secara instan". Hal pertama yang terlintas dalam pikiran adalah menggunakan teknologi RFID yang memiliki keunggulan komunikasi instan dan murah. Namun, saya tertarik menggunakan kemampuan bluetooth ponsel saya untuk menyelesaikan tugas ini.

Jadi pertanyaan saya adalah, untuk menggunakan komunikasi Bluetooth, apakah ada cara untuk berkomunikasi tanpa berpasangan? Dengan kata lain, pada tingkat yang sangat sederhana, anggap penerima Bluetooth saya mengharapkan kode "abc123". Perangkat Bluetooth, seperti telepon, diprogram untuk terus mengirimkan kode ini. Setelah menerima kode, sistem mulai melakukan apa pun yang seharusnya setelah akses diberikan. Sistem seperti itu akan menghapus penghalang berpasangan, tentu saja, dengan mengorbankan keamanan.

Jadi, apakah konsep ini suatu kemungkinan? Saya memiliki sedikit pemahaman tentang protokol tautan Bluetooth pada tingkat yang sangat teknis, tetapi jika seseorang dapat memberi saya petunjuk, saya dapat mulai belajar dari titik itu. Jangan menganggap pemahaman saya yang terbatas sebagai kendala.

capcom
sumber
Ada mode Bluetooth yang melakukan hal itu, tetapi saya tidak tahu apa namanya. Itu digunakan untuk mengirim iklan lokal ke ponsel yang lewat.
jippie
2
Ada berbagai modul 433MHz yang akan mengirimkan sinyal on / off "langsung"; sering digunakan di pembuka pintu garasi. Mereka juga murah dan mudah dioperasikan, meskipun mereka tidak memberikan keamanan yang melekat.
pjc50

Jawaban:

25

Ya, itu sepenuhnya mungkin. Saya mengomentari ini sebelumnya dan sejak itu melihat lebih jauh. Anda dapat meminta perangkat Bluetooth yang memicu mengirim sinyal aktivasi melalui nama ramahnya .

Nama yang ramah adalah nama yang dapat dibaca manusia yang muncul dalam daftar saat Anda mencari perangkat Bluetooth untuk dipasangkan. Kecepatan mengaktifkan ini tergantung pada seberapa cepat perangkat penerima melakukan polling untuk nama yang ramah. Anda belum menyebutkan jenis perangkat penerima yang Anda gunakan, tetapi saya menemukan PDF ini (hal.35) merinci proses untuk memperbarui nama-nama ramah perangkat Bluetooth dalam jangkauan.

Anda dapat polling untuk nama yang ramah sesering yang Anda butuhkan. Jika perangkat pemicu Anda mengubah nama baiknya menjadi kode aktivasi abc123, maka perangkat penerima akan dapat melihat nama itu tanpa memasangkan dan mengaktifkan tugas apa pun yang Anda coba lakukan. Ini juga memungkinkan Anda memiliki banyak kode aktivasi, saya pikir Anda bisa mendapatkan hingga 248 byte untuk nama Bluetooth yang ramah.

Anda mungkin juga sengaja membuka diri terhadap Bluejacking . Saya tidak terbiasa dengan itu, tetapi jika keamanan bukan masalah itu bisa berhasil.

Samuel
sumber
2
Sempurna, ini tampaknya paling menjanjikan. Saya suka kesederhanaan dari metode nama yang ramah, dan Bluejacking sepertinya adalah kandidat yang hebat juga.
capcom
12

Jawaban singkatnya adalah ya, dimungkinkan untuk menggunakan Bluetooth tanpa memasangkan. Namun, itu masih akan selalu menjadi tautan point-to-point. Ada juga masalah potensial dengan tidak menggunakan pemasangan (terutama kurangnya keamanan dan kurangnya dukungan yang baik untuk mode operasi ini). Apakah itu dapat dilakukan tergantung pada perangkat keras Bluetooth penerima Anda. Saya berasumsi Anda menggunakan Bluetooth 'standar' dan bukan Bluetooth berenergi rendah (yang sangat berbeda dan tidak terlalu didukung dengan baik di ponsel). Jika Anda menggunakan energi rendah maka pemancar Anda akan menjadi perangkat energi rendah dan penerima Anda akan menjadi sesuatu yang mendengarkan pesan. Saya belum pernah menggunakan ini, jadi saya tidak bisa memberi Anda informasi tentang ini jadi saya akan tetap dengan Bluetooth 'normal'.

Seperti yang saya lihat, ada dua masalah yang harus diatasi:

  1. Mematikan pemasangan pin

  2. Inisiasi koneksi otomatis

Saya akan membahas nomor 2 pertama karena saya mendapat kesan bahwa ini adalah apa yang benar-benar Anda minati (maaf jika saya salah membaca ini). Untuk melakukan ini dari ponsel atau perangkat 'master' lainnya, ia harus terus mencari perangkat Bluetooth jarak jauh. Ketika mengenali satu yang berlaku, itu akan secara otomatis terhubung dan mengirim beberapa data atau lainnya yang akan memulai tindakan apa pun yang diperlukan. Yang lain telah menyebutkan penggunaan nama ramah Bluetooth untuk proses ini dan itu tentu saja merupakan salah satu cara untuk melakukannya. Pengalaman saya tentang nama yang ramah Bluetooth (terutama tetapi tidak secara eksklusif dengan Microsoft Bluetooth stack) adalah bahwa mereka tidak sekuat metode pemindaian. Anda mungkin akan jauh lebih baik menggunakan Kelas Perangkat Bluetooth, yang disiarkan bersamaan dengan alamat perangkat unik. Kelas perangkat ini memiliki sejumlah besar entri yang ditentukan sebelumnya untuk hal-hal seperti ponsel, laptop, desktop, dll. Jika Anda menggunakan salah satu kelas perangkat non-standar (mis. 00:00:00), Anda akan langsung dapat untuk menyaring sebagian besar perangkat Bluetooth. Anda kemudian dapat terhubung ke perangkat yang tersisa dan melakukan semacam komunikasi permintaan-pengakuan untuk memulai tindakan Anda. Jika Anda membuat ini tidak jelas (atau periksa nama ramah sebagai pertimbangan kedua), itu harus secara implisit menyaring semua perangkat yang salah yang tersisa.


Mengenai nomor 1, pemasangan pin tidak terlalu logis jika Anda membuat koneksi sementara, tetapi masih mungkin cara terbaik untuk mencapai apa yang ingin Anda lakukan. Jika Anda ingin menghindari pemasangan pin, itu dapat dimatikan dan koneksi yang tidak dipasangkan dapat dilakukan. Cara Anda melakukannya tergantung pada implementasi penerima Bluetooth, tetapi berikut adalah beberapa contoh:

  1. Bluegiga WT12: gunakan perintah SET BT AUTH *
  2. National Semiconductor LMX9838: gunakan perintah GAP_SET_SECURITY_MODE dengan mode keamanan 1 (tidak ada pasangan)

dll.

Menghubungkan ke perangkat kemudian dapat dilakukan tanpa memasangkan. Jika perangkat yang memulai koneksi sama dengan penerima, ini sangat mudah. Jika Anda menggunakan PC Windows, Anda dapat melalui proses pembuatan koneksi baru yang melelahkan dan memilih "jangan gunakan pin", meskipun Windows mungkin masih akan meminta pin ketika Anda terhubung (0000 biasanya berfungsi, tetapi sangat serpihan). Jika Anda menggunakan python dengan pybluez, ini sangat sederhana:

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

Namun, jika Anda ingin terhubung dari ponsel, itu menjadi jauh lebih rumit. Android SDK tampaknya tidak benar-benar mendukung koneksi tidak berpasangan:

Android Bluetooth API saat ini memerlukan perangkat untuk dipasangkan sebelum koneksi RFCOMM dapat dibuat. (Pemasangan secara otomatis dilakukan ketika Anda memulai koneksi terenkripsi dengan Bluetooth API.)

(dari http://developer.android.com/guide/topics/connectivity/bluetooth.html ). Ada beberapa cara untuk mengatasi hal ini, tetapi sangat rumit dan tidak didukung dengan baik. Jika Anda menggunakan iPhone, maka konektivitas Bluetooth sama sekali berbeda dengan worm (lisensi dll), jadi saya akan meninggalkannya sekarang.


Setelah mengatakan semua itu, hampir setiap API yang pernah saya lihat memungkinkan pemasangan dantidak berpasangan untuk dilakukan (dengan pengecualian python / pybluez, tapi itu hanya pembungkus di sekitar tumpukan Microsoft pada Windows, jadi Anda selalu dapat memanggil fungsi tingkat rendah secara langsung). Jadi, ketika Anda melihat perangkat dengan kelas perangkat yang tepat, mengapa tidak hanya memasangkan secara otomatis (dengan nomor pin pemasangan yang telah ditentukan), buat koneksi, kirim data yang diperlukan, lepaskan kemudian putuskan hubungan. Tidak satu pun dari ini akan memerlukan intervensi pengguna dan selama Anda tidak melakukannya ribuan kali (yang berpotensi menyebabkan masalah dengan pemakaian EEPROM), itu seharusnya tidak menyebabkan Anda memiliki masalah. Ini juga akan menghemat banyak kesulitan untuk mencoba mendapatkan API yang berbeda agar bekerja dengan baik dengan apa yang dianggap sebagai metode non-standar menggunakan Bluetooth.

DrAl
sumber
1
Terima kasih atas tanggapan yang luar biasa! Banyak yang harus saya perhatikan sekarang.
capcom
10

Ini dapat dicapai dengan teknologi dalam merek Bluetooth yang disebut Bluetooth Smart (atau Bluetooth Low Energy / Bluetooth 4.0) Dan juga tergantung pada telepon yang Anda miliki.

Manfaat utama dengan Energi Rendah dibandingkan Bluetooth biasa adalah ia menghabiskan daya jauh lebih sedikit, dan masa pakai perangkat yang diharapkan bisa bertahun-tahun tergantung pada interval koneksi, dan seberapa banyak beriklan pada baterai sel koin.

Untuk mengatasi masalah ini, Anda dapat memasukkan kode tersebut ke dalam data iklan chip. ( Bluetooth 4.0 Core Spec. Volume 3, Bagian C, Bagian 11.1.4 atau 11.1.10)

Ada 3 produsen chip utama yang menghasilkan chip Energi Rendah (TI, CSR, dan Nordic Semiconductor)

Nordik memiliki chip konektivitas yang disebut nRF8001 (chip konektivitas, perangkat yang sepenuhnya memenuhi syarat) dan SoC nRF51822 . Manfaat menggunakan nRF8001 adalah Anda dapat menggunakan prosesor pilihan Anda, dan tidak perlu repot dengan spesifikasi Bluetooth karena ini ditangani oleh chip. Manfaat dari nRF51822 adalah bahwa ia adalah sistem pada chip dan mengurangi BOM, itu menjalankan Cortex-M0 dan harus sepenuhnya memenuhi syarat saat dirilis.

TI memiliki chip SoC 8051 cc2540 dan CSR memiliki chip SoC CSR µEnergi

Semuanya bermuara pada kebutuhan dan preferensi Anda dalam prosesor dan fungsionalitas / biaya

palhaland
sumber
3

Ya, komunikasi Bluetooth dimungkinkan tanpa memasangkan perangkat. Gunakan insecureRfcompenghormatan terhadap RFCOM yang aman. Tidak memerlukan pemasangan untuk transfer data.

Rahil Ali
sumber
Info lebih lanjut: stackoverflow.com/questions/5308373/…
Erik Allik
1

Hasil dari pasangan yang berhasil adalah kunci tautan, rahasia yang dipasangkan oleh perangkat yang dipasangkan dan memungkinkan mereka untuk berkomunikasi.

Jika memungkinkan untuk mengatur kunci tautan pada sistem, maka ya, tidak diperlukan pairing. Cukup atur kunci tautan yang sama di kedua perangkat. Setelah koneksi ini dapat berhasil openend seolah-olah kedua perangkat telah berpasangan.

Misalnya di Linux setelah memasangkan infofile disimpan untuk setiap perangkat yang dikupas di / var / lib / bluetooth / local-device-address / remote-device-address /

Setelah Generalbagian berisi follwing: [LinkKey] Key=FF00112233445566778899AABBCCDDEE Type=5 PINLength=0

Ini dapat diatur secara langsung tanpa pasangan. Jika hal yang sama ditulis pada perangkat jarak jauh. Perangkat dipasangkan.

shpc
sumber