InputStick with Bluetooth 4.0 is now (finally) available, you can get it here: inputstick.com/buy. New version is a bit more expensive (+3 USD/EUR), due to higher price of BT4.0 modules. InputStick with BT2.1 will still be available and supported by all InputStick compatible Android applications. After all, there are still a lot of Android 4.0 and even 2.3 devices being used.
Support for iOS devices.
BT4.0 version is next step towards making InputStick available for iOS users (Android users can also benefit from using BT4.0).
- BT4.0 version is confirmed to work with iPhone 4S and newer.
- If you are an iOS developer, familiar with BT4.0, it should be relatively easy to use basic functions (like typing ASCII characters) using protocol documentation (available here).
Not so good news:
- At this moment there are no iOS apps nor API available. Basic functionality (typing ASCII characters) is relatively easy to implement, but full API will require much more effort: encryption and authentication, keyboard layouts, firmware upgrade, restoring defaults.
- Since I'm not familiar with iOS development, this task will be carried out by other developer. At this moment I still can't give any more details about when the API may be finally available.
Why standard (BT2.1) version is not compatible with iOS devices? Apple decided that classic-Bluetooth devices must go through approval process and have special authentication chip. This is no longer the case when it comes to BT4.0, which was first introduced in iPhone 4S.
Hardware & Firmware.
The only difference between previous version and the new one is Bluetooth module. Other than that, hardware is exactly the same. Starting with 0.97 version, firmware supports both Bluetooth modules. This means that any firmware updates will be released for both BT2.1 and BT4.0 devices at the same time.
All existing applications (that use InputStickUtility as a proxy), will work with BT4.0 version out of the box. Examples: USB Remote, KP2A plugin.
If you've developed your own app and decided to use direct connection method (instead of connecting via Utility app), it will be necessary to rebuild the app using latest InputStick API.
How to use BT4.0 InputStick with your Android device? When adding new device in InputStickUtility, check "This is a BT4.0 device" checkbox.
- 4.3 or newer (API18),
- Bluetooth 4.0,
- InputStickUtility app, version 1.30 or newer.
How to check if your phone supports new InputStick?
- download InputStickUtility application from GooglePlay store,
- go to "About & Help",
- click "Check BT4.0 support".
Bluetooth 4.0 vs Bluetooth 2.1.
- faster connection establishment: BT4.0 takes less than a second to establish a connection and go through initialization. In case of BT2.1, this usually required approximately 2-3 seconds.
- lower latency: BT4.0 allowed to reduce latency, this makes noticeable difference when it comes to mouse interface, which now works smoother.
- lower data transfer rate: as a result, typing is approximately 25% slower. This becomes noticeable when a lot of text is being typed (more than 50 characters), for example when typing text files. You most likely won't even notice this when using apps like KP2A plugin or USB Remote.
- no pairing PIN: due to bug in Android OS, if BT4.0 device requires pairing PIN, the OS will ask for the PIN during EVERY SINGLE connection attempt. Because of that, by default there is no pairing PIN and changing PIN for BT4.0 devices is disabled in InputStickUtility. Note: InputStick can be password protected using 128bit key, so lack of pairing PIN does not make it less secure (compared to BT2.1 version). If someone connects to password-protected InputStick, he won't be able to use it in any way (send key or mouse events) unless correct password is provided. Also, firmware makes potential bruteforce attack less effective by limiting authentications attempts to one each second.
In my opinion, in most scenarios advantages of BT4.0 are definitely more noticeable than its disadvantages.
Which version is right for me?
If you are mostly interested in using InputStick with iOS devices, you should wait a bit longer and wait for updates regarding iOS API and apps. Unless you are an iOS developer, familiar with using Bluetooth and want to try it ASAP.
You should get standard, BT2.1 version if:
- your Android device does not support BT4.0
- you are going to use InputStick to type A LOT OF TEXT (like thousand characters at a time) and typing speed is very important in your use case.
In every other case, you should consider getting BT4.0 version.