Vraag:
Is Bluetooth-communicatie mogelijk zonder te koppelen?
capcom
2012-11-06 01:43:24 UTC
view on stackexchange narkive permalink

Ik werk aan een apparaat dat draadloos een systeem "onmiddellijk" kan activeren. Het eerste dat in me opkwam, was het gebruik van RFID-technologie die het voordeel heeft van directe en goedkope communicatie. Ik ben echter geïnteresseerd in het gebruik van de Bluetooth-mogelijkheden van mijn telefoon om deze taak uit te voeren.

Dus mijn vraag is, om Bluetooth-communicatie te gebruiken: is er een manier om te communiceren zonder te koppelen? Met andere woorden, op een heel simplistisch niveau, stel dat mijn Bluetooth-ontvanger een code "abc123" verwacht. Een Bluetooth-apparaat, zoals een telefoon, is geprogrammeerd om deze code constant te verzenden. Na ontvangst van de code begint het systeem te doen wat het moet doen zodra toegang is verleend. Zo'n systeem zou de koppelingsbarrière natuurlijk wegnemen, ten koste van de veiligheid.

Is dit concept dus een mogelijkheid? Ik heb weinig kennis van Bluetooth-linkprotocollen op een heel technisch niveau, maar als iemand me een voorsprong kan geven, kan ik vanaf dat punt beginnen met leren. Beschouw mijn beperkte begrip niet als een beperking.

Er is een Bluetooth-modus die precies dat doet, maar ik weet niet hoe het wordt genoemd. Het werd gebruikt om lokale advertenties naar passerende mobiele telefoons te sturen.
Er zijn verschillende 433Mhz-modules die "onmiddellijk" een aan / uit-signaal verzenden; vaak gebruikt in garagedeuropeners. Ze zijn ook goedkoop en gemakkelijk te bedienen, hoewel ze geen inherente beveiliging bieden.
Vijf antwoorden:
Samuel
2012-11-11 13:20:47 UTC
view on stackexchange narkive permalink

Ja, het is heel goed mogelijk. Ik heb hier eerder op gereageerd en heb het sindsdien verder onderzocht. U kunt het activerende Bluetooth-apparaat het activeringssignaal laten verzenden via zijn beschrijvende naam .

De beschrijvende naam is de door mensen leesbare naam die in de lijst wordt weergegeven wanneer u naar een Bluetooth-apparaat zoekt om mee te koppelen. De snelheid waarmee dit wordt geactiveerd, is afhankelijk van hoe snel het ontvangende apparaat naar beschrijvende namen peilt. U heeft niet vermeld welk type ontvangend apparaat u gebruikt, maar ik vond deze pdf (pagina 35) met details over het proces voor het bijwerken van de beschrijvende namen van Bluetooth-apparaten binnen bereik.

U kunt zo vaak als u wilt naar beschrijvende namen vragen. Als uw triggerende apparaat zijn beschrijvende naam verandert in de activeringscode, abc123 , dan kan het ontvangende apparaat die naam zien zonder te koppelen en elke taak activeren die u probeert uit te voeren. Dit stelt je ook in staat om een ​​veelvoud aan activeringscodes te hebben, ik denk dat je tot 248 bytes kunt krijgen voor de vriendelijke Bluetooth-naam.

Je kunt ook overwegen om je opzettelijk open te stellen voor Bluejacking een>. Ik ben er niet bekend mee, maar als beveiliging geen probleem is, zou het kunnen werken.

Perfect, dit lijkt het meest veelbelovend. Ik hou van de eenvoud van de vriendelijke naammethode, en Bluejacking lijkt ook een geweldige kandidaat.
Zou dit het proces van het koppelen van andere apparaten niet ondermijnen?de gebruiker zal het moeilijk hebben om een vaste gebruiksvriendelijke naam te vinden om voor andere doeleinden te koppelen.
@matanster Het hele punt is om niet te koppelen met andere apparaten.
DrAl
2012-11-12 15:31:12 UTC
view on stackexchange narkive permalink

Het korte antwoord is ja, het is mogelijk om Bluetooth te gebruiken zonder te koppelen. Het blijft echter altijd een point-to-point-link. Er zijn ook mogelijke problemen als u geen koppeling gebruikt (voornamelijk het gebrek aan beveiliging en het gebrek aan goede ondersteuning voor deze modus). Of dit mogelijk is, hangt af van de Bluetooth-hardware van uw ontvanger. Ik neem aan dat je 'standaard' Bluetooth gebruikt in plaats van Bluetooth low-energy (wat totaal anders is en niet bijzonder goed wordt ondersteund in mobiele telefoons). Als u energiezuinig gebruikt, is uw zender een energiezuinig apparaat en is uw ontvanger iets dat naar de berichten luistert. Ik heb dit niet gebruikt, dus ik kan je hier geen informatie over geven, dus ik blijf bij 'normale' Bluetooth.

Zoals ik het zie, zijn er twee problemen die moeten worden opgelost:

  1. Pin pairing uitschakelen

  2. Automatische verbinding tot stand brengen

Ik zal eerst nummer 2 behandelen omdat ik de indruk krijg dat dit is waar je echt in geïnteresseerd bent (excuses als ik dit verkeerd lees). Om dit vanaf een telefoon of ander 'master'-apparaat te kunnen doen, zou het continu moeten zoeken naar externe Bluetooth-apparaten. Wanneer het er een herkende die van toepassing was, zou het er automatisch verbinding mee maken en enkele of andere gegevens verzenden die de vereiste actie zouden initiëren. Anderen hebben het gebruik van de Bluetooth-vriendelijke naam voor dit proces genoemd en dat is zeker een manier om het te doen. Mijn ervaringen met Bluetooth-vriendelijke namen (vooral maar niet uitsluitend met de Microsoft Bluetooth-stack) is dat ze niet zo'n robuuste scanmethode zijn. Het is waarschijnlijk veel beter om de Bluetooth-apparaatklasse te gebruiken, die tegelijkertijd met het unieke apparaatadres wordt uitgezonden. Deze apparaatklasse heeft een groot aantal vooraf gespecificeerde items voor zaken als mobiele telefoons, laptops, desktops enz. Als u een van de niet-standaard apparaatklassen gebruikt (bijv. 00:00:00), kunt u direct om de overgrote meerderheid van Bluetooth-apparaten eruit te filteren. U kunt dan verbinding maken met het overgebleven apparaat en een soort verzoek-bevestiging-communicatie uitvoeren om uw actie te starten. Als je dit voldoende onduidelijk maakt (of controleer de beschrijvende naam als een tweede overweging), dan zou het impliciet alle resterende onjuiste apparaten eruit moeten filteren.


Met betrekking tot nummer 1 is pinparing niet bijzonder logisch als je creëert tijdelijke verbindingen, maar het is misschien nog steeds de beste manier om te bereiken wat je wilt doen. Als u pinparing wilt vermijden, kan deze worden uitgeschakeld en kan er een niet-gepaarde verbinding worden gemaakt. Hoe u dit doet, hangt af van de implementatie van de Bluetooth-ontvanger, maar hier zijn een paar voorbeelden:

  1. Bluegiga WT12: gebruik het commando SET BT AUTH *
  2. National Semiconductor LMX9838: gebruik GAP_SET_SECURITY_MODE commando met beveiligingsmodus 1 (geen koppeling)

enz.

U kunt dan verbinding maken met het apparaat zonder te koppelen. Als het apparaat dat de verbinding tot stand brengt hetzelfde is als de ontvanger, is dit heel eenvoudig. Als u een Windows-pc gebruikt, kunt u het moeizame proces van het maken van een nieuwe verbinding doorlopen en 'geen pincode gebruiken' kiezen, hoewel Windows u waarschijnlijk nog steeds om een ​​pincode zal vragen wanneer u verbinding maakt (0000 werkt meestal, maar het is erg schilferig). Als je python met pybluez gebruikt, is het heel eenvoudig:

  import bluetoothsock = bluetooth.BluetoothSocket (bluetooth.RFCOMM) sock.connect ((<insert MAC-adres>, <insert poortnummer>))  

Als u echter verbinding wilt maken vanaf een mobiele telefoon, wordt het veel gecompliceerder. De Android SDK lijkt niet echt ongepaarde verbindingen te ondersteunen:

De huidige Android Bluetooth API's vereisen dat apparaten worden gekoppeld voordat een RFCOMM-verbinding tot stand kan worden gebracht. (Het koppelen wordt automatisch uitgevoerd wanneer u een gecodeerde verbinding met de Bluetooth-API's tot stand brengt.)

(van http://developer.android.com/guide/topics/connectivity/bluetooth .html). Er zijn manieren om dit te omzeilen, maar ze zijn erg ingewikkeld en worden niet goed ondersteund. Als je een iPhone gebruikt, is Bluetooth-connectiviteit een heel ander blik wormen (licenties enz.), Dus dat laat ik voorlopig staan.


Dit alles gezegd hebbende, maakt vrijwel elke API die ik ooit heb bekeken het mogelijk om het koppelen en ontkoppelen uit te voeren (met de opmerkelijke uitzondering van python / pybluez, maar dat is slechts een omhulsel rond de Microsoft-stack op Windows, dus je kunt de low-level-functie altijd rechtstreeks aanroepen). Dus als je een apparaat met de juiste apparaatklasse hebt gezien, waarom niet gewoon automatisch koppelen (met een vooraf gedefinieerde koppelingspincode), de verbinding tot stand brengen, de vereiste gegevens verzenden, de verbinding verbreken en vervolgens ontkoppelen. Niets van dit alles zou enige tussenkomst van de gebruiker vereisen en zolang u het niet duizenden keren doet (wat mogelijk problemen met EEPROM-slijtage zou kunnen veroorzaken), zou het u geen problemen moeten bezorgen. Het bespaart u ook veel gedoe met het proberen om verschillende API's goed te laten werken met wat wordt gezien als een niet-standaardmethode voor het gebruik van Bluetooth.

Bedankt voor een geweldige reactie! Veel voor mij om naar te kijken.
palhaland
2012-11-12 13:55:06 UTC
view on stackexchange narkive permalink

Dit kan worden bereikt met een technologie van het Bluetooth -merk genaamd Bluetooth Smart (of Bluetooth Low Energy / Bluetooth 4.0) En ook afhankelijk van de telefoon die je hebt.

Het belangrijkste voordeel van Low Energy ten opzichte van normale Bluetooth is dat het veel minder stroom verbruikt en de verwachte levensduur van een apparaat kan jaren duren, afhankelijk van het verbindingsinterval en hoeveel het adverteert op een knoopcelbatterij.

Om dit probleem op te lossen, kunt u de betreffende code in de advertentiegegevens van de chip plaatsen. ( Bluetooth 4.0 Core Spec. Volume 3, Part C, Section 11.1.4 of 11.1.10)

Er zijn drie grote chipfabrikanten die Low Energy-chips produceren (TI, CSR en Nordic Semiconductor)

Nordic heeft een connectiviteitschip genaamd nRF8001 (een connectiviteitschip, volledig gekwalificeerd apparaat) en een SoC nRF51822. Het voordeel van het gebruik van de nRF8001 is dat u de processor van uw keuze kunt gebruiken en dat u zich geen zorgen hoeft te maken over de Bluetooth -specificatie, aangezien deze wordt afgehandeld door de chip. Het voordeel van nRF51822 is dat het een systeem op de chip is en de stuklijst verkleint, het Cortex-M0 gebruikt en volledig gekwalificeerd moet zijn wanneer het wordt vrijgegeven.

Ik heb de 8051 SoC-chip cc2540 en CSR hebben de SoC-chip CSR µEnergy

Het komt allemaal neer op uw behoefte en voorkeur in processor en functionaliteit / kosten

Rahil Ali
2014-11-21 00:33:47 UTC
view on stackexchange narkive permalink

Ja, Bluetooth-communicatie is mogelijk zonder de apparaten te koppelen. Gebruik het insecureRfcom respect van veilige RFCOM. Koppelen is niet nodig voor gegevensoverdracht.

Meer info: http://stackoverflow.com/questions/5308373/how-to-create-insecure-rfcomm-socket-in-android
shpc
2019-11-22 20:42:27 UTC
view on stackexchange narkive permalink

Het resultaat van een succesvolle koppeling is de koppelingssleutel, het geheim dat gekoppelde apparaten delen en waarmee ze kunnen communiceren.

Als het mogelijk is om de koppelingssleutel op het systeem in te stellen, dan is koppelen niet nodig.Stel gewoon dezelfde koppelingssleutel in op beide apparaten.Nadat deze verbinding met succes kan worden geopend, alsof de twee apparaten zijn gekoppeld.

Op Linux wordt bijvoorbeeld na het koppelen het info -bestand voor elk gekoppeld apparaat opgeslagen onder / var / lib / bluetooth / lokaal-apparaatadres / extern-apparaatadres /

Nadat de sectie Algemeen het volgende bevat: [LinkKey] Sleutel = FF00112233445566778899AABBCCDDEE Type = 5 PINLength = 0

Dit kan direct worden ingesteld zonder te koppelen.Als hetzelfde op het externe apparaat is geschreven.De apparaten zijn gekoppeld.



Deze Q&A is automatisch vertaald vanuit de Engelse taal.De originele inhoud is beschikbaar op stackexchange, waarvoor we bedanken voor de cc by-sa 3.0-licentie waaronder het wordt gedistribueerd.
Loading...