I am new to BLE, and the LE security says it supports passkey Just Works, Out of Band and Passkey Entry. Given scenarios that the devices expects the passkey, then how to pass it through CentralManager while connecting to peripheral?.. Or do we have any alternate way to communicate with Security Manager ? Kindly provide the inputs.
See the Bluetooth Guidlines from apple. There stands that the peripheral musst send a insuffiezient autorization. Then IOS do all automatic
Related
I tried to configure a bonding pincode on my Movesense 2.0.0 sensor and I was expecting being asked for it when trying to connect to the sensor with MDS or apps like nRF Connect.
But what I got looks identical to Just Works mode, and the bonding PIN is being asked only if I try to pair the device through system's Bluetooth settings. Does it happen because in the first case there's only connection and no pairing? What are the pros/use cases for having the sensor paired at system-level?
I'm looking for a way to prevent unauthorized access (connections, API requests) to sensors from devices not knowing a secret access code (like a PIN). Do BLE/Movesense provide such a mechanism?
Neither Bluetooth nor Movesense offer a way to securely "log in with a secret password". The passkey bonding mechanism that is present in Bluetooth, is only designed with the purpose of avoiding man in the middle attacks, and the passkey must be random everytime since the protocol reveals the key after each attempt. A static passkey which some people use is not allowed per the specification. It might keep away your grandmother from accessing the device, but is not secure at all at a protocol level.
If you bond the device at a system level, the further communication will be secure (encrypted and authenticated) and will for example prevent spoofing attacks. It will also result in quicker device connection setup since GATT caching can be used.
You are not saying what "system" you are using so this is just a general answer.
I want to connect a robot, via Bluetooth, with an iPhone (4S or more) via Bluetooth low energy (BLE) 4.0. This robots require to send all the notifications of the iPhone to the device.
For example: If the iPhone gets a new email, I must send the event to the robot, and it will blink an LED. Stop.
I want to know if the iOS Bluetooth APIs of the Bluetooth framework can do this, or better, can share the Internet connection or whatever that can do this work.
I'm asking this, because I have heard that the APIs have some restrictions.
PS: ANY solution that can do this is very accepted (no Wi-Fi connection solution).
Bluetooth LE would be the way you want to go here, because standard Bluetooth requires your device to be MFi-compliant. Standard Wi-Fi could also work, if you're able to require the presence of the supporting network.
As of iOS 6.0, you can set up your iPhone as a Bluetooth LE peripheral, which would allow it to send notifications to your device, if it is configured in a central role. That would be a pretty power-efficient way of updating your device with new data.
However, there's one large hurdle to doing what you want here. iOS applications have no access to system-wide notifications, so you won't be able to listen for incoming emails or other notifications like that. You'll be able to send data to your device via Bluetooth LE, but you're not going to know when emails come in so that you could send that to your device.
With bluetooth 4, you could control a robot, as well as create a "notification" bot. It could be done quite easily. However as mentioned, you can't access system wide notifications in iOS.
However, you could use an external solution to listen for system notifications and then an API to listen a singular encoded notification and have your app listen to that.
One such system is https://ifttt.com (no affiliation)
There are also some great plug and play BLE options for rapid prototyping.
You can do it. A simple solution would be let a phone check your email periodically. Don't rely or try to use external Apple applications to do that, but use services provided by your mail.
In the case of Gmail, try to go to https://mail.google.com/mail/feed/atom. If you are logged in your Gmail, you will see the unread mail in XML format. The way you would login using a URL is: https://username:password#mail.google.com/mail/feed/atom
So what you can do is periodically parse the output and when <fullcount>0</fullcount> value changes call your robot service via BLE which should act as a callback for this specific event.
Does anybody suggest a mobile printer able to print receipt with a good SDK to interface wireless an iOS application adhoc developed ? The printer should be small and should use rechargeable batteries for field use.
I cannot use wifi because not always a trusted access point (customer premises) is available, so I think to use Bluetooth, but of course any suggestion is welcome !
FYI I already checked Zebra printers SDK for iOS but it seems able to print only using a TCP/IP address, it means (for as I know) I should use wifi. In my case the application should be used in the field from an iPad connected with cellular network. In iPad there is no hot-spot and not always there is an available wifi access point tho connect the iPad and the printer the the same network to use TCP/IP addresses. That is the reason I'm guessing the last chance should be bluetooth.
Unfortunately iOS5 does not support Bluetooth printing.
http://support.apple.com/kb/ht3647
Have you considered VPN via WEP to a network printer?
Alternatively some printers can be set up with their own email address. PDF attachments can be sent via this address to be printed. These emails can be sent encrypted.
I know that this isn't the IDEAL answer, but it is likely to work for the time being until iOS is properly updated.
Yes, I have Bluetooth printer for IOS device, it is Apple MFI approved
see details from this URL http://www.bluebamboo.com/other_file/P25i%20Datasheet%20%28EN%29%20v1.0%2009-Oct-2011.pdf
I know you already accepted an answer, but here's another one: have the technician bring their own wireless base station (AirPort Express perhaps) and create his own wireless network (that won't have internet access, but that's not needed) with appropriate security. Then you can use any HP wireless capable printer and have the iOS device and the printer connect to the wifi network created by the wireless access point (which should be set with DHCP to vend IP addresses in a non-routable range like 192.168.x.x, obviously).
We also have a Bluetooth printer that is MFI certified along with an easy to understand iOS SDK. Please take a look at the EZPay App on the Appstore. The app's currently in Japanese (fir one of our clients) but the description explain a little about the printer. I'm currently traveling at the moment, but if you shoot me an email from the contact info on the App Store. I can get a few other things out to you. Cheers... B
No need to develop a full blown SDK, check out Mobi Print. it has the Zebra sdk already implemented and connects to any webservice or ODBC database. It also has stored label/receipt formats in there app so just upload your format and should be good to go.
here is link for Mobi Print
Is it possible to detect and respond to the answer/end-call button presses from an HFP Bluetooth device on iOS? Has anyone seen this? Where should I look for answers? I understand one could get access to lower level bluetooth if you register for the device manufacturer (MFI) program but I'm hoping I don't have to dive this deep. I also know that you can respond to AVRCP commands but I am not wanting to use this option. Can anyone help?
UIResponder has a -remoteControlReceivedWithEvent: method that you can use to receive events from external devices, possibly including Bluetooth headsets. From the docs:
Remote-control events originate as commands from external accessories, including headsets. An application responds to these commands by controlling audio or video media presented to the user. The receiving responder object should examine the subtype of event to determine the intended command—for example, play (UIEventSubtypeRemoteControlPlay)—and then proceed accordingly.
To allow delivery of remote-control events, you must call the beginReceivingRemoteControlEvents method of UIApplication; to turn off delivery of remote-control events, call endReceivingRemoteControlEvents.
It’s not clear whether the answer/end button on a headset is considered equivalent to the play/pause button on, say, the earbuds’ remote, but this might be worth a try.
Sadly, there are no available bluetooth public APIs for developers, so no way to get that access in the conventional means.
As of my research, some person received some event from their bleu-tooth devices via "remoteControlReceivedWithEvent" but not all of them! Some are receiving none! And very few are receiving all of them!
I also tried Core Bluetooth but it only supports LEB (Low Energy Bluetooth devices)!
https://developer.apple.com/library/ios/documentation/NetworkingInternetWeb/Conceptual/CoreBluetooth_concepts/CoreBluetoothOverview/CoreBluetoothOverview.html#//apple_ref/doc/uid/TP40013257-CH2-SW1
Also, some posts suggest it is possible to use Classic bleutooth instead of "Low Energy":
How to use bluetooth classic instead of le
But it has limitation as well (the post is taking about "MFi accessory"! MFi is it for "made for iphone" ?!?!?!)
from the post above:
"A non-LE Bluetooth device needs to be MFi-approved to be used with the External Accessory framework (it needs to use a specific Apple chip and a proprietary communication protocol). You won't be able to build applications to access this device unless it either uses the more open Bluetooth LE or has this chip in it for standard Bluetooth. There might be ways to do this via jailbreak, but pretty much everyone I know has moved over to Bluetooth LE." !
more post: Connecting to a Bluetooth device from iOS, no MFi
Regards.
I am doing preliminary design of an iPhone app and I'm trying to find the answer to the following question: Does the MFI system allow an external accessory to restrict which particular iPhones are plugged into it?
I presume that I can add something to the external accessory protocol to do authentication/authorization. My question is, do I have to bother--does the MFI system already provide that?
I'm led to believe that if I register with the MFI program, I can get the answer, but I do not intend to ever do so. I will eventually work with a developer that is an MFI registeree. I suppose I could wait until I've established a relationship with such a developer and then ask them to find out, but I was hoping to get an answer to this one specific question prior to that point.
I'm hoping that as I am just looking for user level info, and not implementation details, that the answer is not hidden behind the MFI NDA.
Thanks.
Does the MFI system allow an external accessory to restrict which particular iPhones are plugged into it?
This is handled in the following manner:
The App must initiate a session using a protocol that the Accessory supports.
The App must know how to talk to the Accessory (i.e. how to encode/decode communication data).
There is nothing preventing any random iOS Device with the proper App installed from connecting to an External Accessory so long as the App meets the above requirements.
The External Accessory could implement some additional form of security (like sending a password maybe?) before opening up its full capabilities to the App. Obviously, this would require the Accessory developer and App developer to both know this extra procedure.