페어링없이 블루투스 통신이 가능합니까?


35

무선으로 시스템을 "즉시"활성화 할 수있는 장치에서 작업하고 있습니다. 가장 먼저 떠오른 것은 즉각적이고 저렴한 통신의 이점을 가진 RFID 기술을 사용하는 것이 었습니다. 그러나 대신이 작업을 수행하기 위해 휴대폰의 Bluetooth 기능을 사용하고 싶습니다.

내 질문은 블루투스 통신을 사용하기 위해 페어링하지 않고 통신하는 방법이 있습니까? 다시 말해, 매우 단순한 수준에서 Bluetooth 수신인이 "abc123"코드를 기대한다고 가정합니다. 전화와 같은 Bluetooth 장치는이 코드를 지속적으로 전송하도록 프로그래밍되어 있습니다. 코드를 수신하면 시스템은 일단 액세스 권한이 부여되면 모든 작업을 시작합니다. 이러한 시스템은 물론 보안 비용으로 페어링 장벽을 제거합니다.

이 개념은 가능한가? 매우 기술적 인 수준에서 Bluetooth 링크 프로토콜에 대해 거의 이해하지 못하지만 누군가 나를 이끌어 줄 수 있다면 그 시점부터 배울 수 있습니다. 나의 제한된 이해를 제약으로 생각하지 마십시오.


그렇게하는 블루투스 모드가 있지만 그것이 무엇인지 모르겠습니다. 휴대 전화로 지역 광고를 보내는 데 사용되었습니다.
jippie

2
"즉시"온 / 오프 신호를 전송하는 다양한 433Mhz 모듈이 있습니다. 차고 도어 오프너에서 종종 사용됩니다. 또한 고유 한 보안을 제공하지는 않지만 저렴하고 작동하기 쉽습니다.
pjc50

답변:


24

예, 전적으로 가능합니다. 나는 이것에 대해 이전에 언급했으며 그 이후로 더 조사했다. 트리거링 Bluetooth 장치가 친숙한 이름을 통해 활성화 신호를 보내도록 할 수 있습니다 .

친숙한 이름은 페어링 할 Bluetooth 장치를 검색 할 때 목록에 표시되는 사람이 읽을 수있는 이름입니다. 이것이 활성화되는 속도는 수신 장치가 친숙한 이름을 얼마나 빨리 폴링하는지에 따라 다릅니다. 사용중인 수신 장치 유형에 대해 언급하지 않았지만 범위 내 Bluetooth 장치의 이름을 업데이트하는 프로세스를 자세히 설명하는 이 PDF (Pg.35)를 찾았습니다 .

필요한만큼 친숙한 이름을 조사 할 수 있습니다. 트리거링 장치가 이름을 활성화 코드 ( abc123)로 변경하면 수신 장치는 페어링하지 않고 해당 이름을보고 수행하려는 작업을 활성화 할 수 있습니다. 또한 다양한 활성화 코드를 사용할 수 있습니다. 친숙한 Bluetooth 이름으로 최대 248 바이트를 얻을 수 있다고 생각합니다.

당신은 또한 의도적으로 Bluejacking에 자신을 열어 볼 수도 있습니다 . 익숙하지 않지만 보안에 문제가 없으면 작동 할 수 있습니다.


2
완벽 해, 이것이 가장 유망한 것 같습니다. 나는 친숙한 이름 방법의 단순함을 좋아하며 Bluejacking도 훌륭한 후보처럼 보입니다.
capcom

12

짧은 대답은 그렇습니다. 페어링없이 블루투스를 사용할 수 있습니다. 그러나 여전히 포인트-투-포인트 링크가 될 것입니다. 페어링을 사용하지 않는 데에도 잠재적 인 문제가 있습니다 (주로 보안 부족 및이 작동 모드에 대한 지원이 부족함). 수행 할 수 있는지 여부는 수신기의 Bluetooth 하드웨어에 따라 다릅니다. 나는 당신이 블루투스 저에너지 대신 '표준'블루투스를 사용하고 있다고 가정합니다. 저에너지를 사용하는 경우 송신기는 저에너지 장치이고 수신기는 메시지를 수신하는 장치입니다. 나는 이것을 사용하지 않았으므로 이에 대한 정보를 줄 수 없으므로 '일반적인'블루투스를 고수하겠습니다.

내가 알듯이 극복해야 할 두 가지 문제가 있습니다.

  1. 핀 페어링 끄기

  2. 자동 연결 시작

나는 이것이 당신이 정말로 관심이 있다는 인상을 받으면서 2 번을 다룰 것입니다 (이 글을 읽는다면 사과합니다). 전화 나 다른 '마스터'장치에서이 작업을 수행하려면 원격 Bluetooth 장치를 지속적으로 검색해야합니다. 적용 가능한 것을 인식하면 자동으로 연결되어 필요한 조치를 시작하는 데이터 또는 기타 데이터를 보냅니다. 다른 사람들은이 과정에서 블루투스 이름을 사용한다고 언급했으며, 그렇게하는 것이 확실한 방법입니다. Bluetooth 친숙한 이름에 대한 나의 경험 (특히 Microsoft Bluetooth 스택에서만 독점적이지는 않음)은 강력한 스캔 방법이 아니라는 것입니다. 블루투스 장치 클래스 를 사용하는 것이 훨씬 낫습니다.고유 기기 주소와 동시에 브로드 캐스트됩니다. 이 디바이스 클래스에는 휴대 전화, 랩톱, 데스크탑 등과 같은 많은 사전 지정 항목이 있습니다. 비표준 디바이스 클래스 중 하나 (예 : 00:00:00)를 사용하면 즉시 사용할 수 있습니다. 대부분의 Bluetooth 장치를 걸러냅니다. 그런 다음 나머지 장치에 연결하고 일종의 요청 승인 통신을 수행하여 작업을 시작할 수 있습니다. 이를 적절하게 모호하게하거나 (또는 ​​친숙한 이름을 두 번째 고려 사항으로 확인) 남은 잘못된 장치를 암시 적으로 필터링해야합니다.


1 번과 관련하여 일시적인 연결을 만드는 경우 핀 페어링은 특히 논리적이지 않지만 여전히 원하는 작업을 수행하는 가장 좋은 방법 일 수 있습니다. 핀 페어링을 피하려면 핀을 끄고 연결되지 않은 상태로 연결할 수 있습니다. 이를 수행하는 방법은 Bluetooth 수신기 구현에 따라 다르지만 몇 가지 예가 있습니다.

  1. Bluegiga WT12 : SET BT AUTH 명령 사용 *
  2. National Semiconductor LMX9838 : 보안 모드 1 (페어링 없음)으로 GAP_SET_SECURITY_MODE 명령 사용

기타

그런 다음 페어링하지 않고 장치에 연결할 수 있습니다. 연결을 시작하는 장치가 수신기와 동일하면 매우 간단합니다. Windows PC를 사용하는 경우 힘든 연결을 통해 새 연결 프로세스를 만들고 "핀을 사용하지 않음"을 선택할 수 있지만 Windows는 연결할 때 여전히 핀을 요구하지만 (0000은 일반적으로 작동하지만 매우 벗겨집니다). pybluez와 함께 파이썬을 사용하는 경우 매우 간단합니다.

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

그러나 휴대폰에서 연결하려는 경우 훨씬 더 복잡해집니다. Android SDK는 실제로 연결되지 않은 연결을 지원하지 않는 것 같습니다.

현재 Android Bluetooth API를 사용하려면 RFCOMM 연결을 설정하기 전에 장치를 페어링해야합니다. (페어링은 Bluetooth API와의 암호화 된 연결을 시작할 때 자동으로 수행됩니다.)

( http://developer.android.com/guide/topics/connectivity/bluetooth.html에서 ) 이 문제를 해결할 방법이 있지만 매우 복잡하고 잘 지원되지 않습니다. iPhone을 사용하는 경우 Bluetooth 연결은 완전히 다른 웜 캔 (라이센스 등)이므로 지금은 그대로 두겠습니다.


그 모든 것을 말했지만, 내가 본 모든 API는 페어링 페어링 해제 (파이썬 / pybluez는 주목할 만하지 만 Windows의 Microsoft 스택을 감싸는 래퍼이므로 항상 저수준 함수를 직접 호출 할 수 있음). 따라서 올바른 장치 클래스를 가진 장치를 발견했을 때 자동으로 (사전 정의 된 페어링 핀 번호로) 페어링하고, 연결하고, 필요한 데이터를 전송하고, 연결을 끊었다가 페어링 해제하지 않는 이유는 무엇입니까? 이 중 어느 것도 사용자 개입이 필요하지 않으며 수천 번 수행하지 않는 한 (EEPROM 마모에 문제를 일으킬 수 있음) 문제를 일으키지 않아야합니다. 또한 블루투스를 사용하는 비표준 방법으로 인식되는 것과 다른 API를 사용하려고 노력하면 많은 번거 로움을 덜 수 있습니다.


1
훌륭한 답변 감사합니다! 내가 지금 많이 볼 수 있습니다.
capcom

10

이것은 Bluetooth Smart (또는 Bluetooth Low Energy / Bluetooth 4.0) 라는 Bluetooth 브랜드 내의 기술과 보유한 전화기에 따라 수행 할 수 있습니다.

일반 Bluetooth에 비해 저에너지의 주요 이점 은 소비 전력이 훨씬 적고 연결 간격과 코인 셀 배터리에 광고하는 양에 따라 장치의 예상 수명이 몇 년이 될 수 있다는 것입니다.

이 문제를 해결하기 위해 문제의 코드를 칩의 광고 데이터에 넣을 수 있습니다. ( Bluetooth 4.0 핵심 사양 볼륨 3, 파트 C, 섹션 11.1.4 또는 11.1.10)

저에너지 칩 (TI, CSR 및 Nordic Semiconductor)을 생산하는 3 개의 주요 칩 제조업체가 있습니다.

Nordic은 nRF8001 (연결 칩, 정규화 된 장치)이라는 연결 칩과 SoC nRF51822를 가지고 있습니다. nRF8001 사용의 이점은 선택한 프로세서를 사용할 수 있으며, 칩이 처리 하므로 Bluetooth 사양 에 신경 쓸 필요가 없다는 것 입니다. nRF51822 의 장점은 시스템 온 칩이며 BOM을 줄이며 Cortex-M0을 실행 중이며 릴리스시 정규화되어야한다는 것입니다.

TI는 8051 SoC 칩 cc2540을 보유 하고 CSR은 SoC 칩 CSR µEnergy를 보유

프로세서와 기능 / 비용면에서 귀하의 필요와 선호 사항에 모두 부합합니다.


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.