Friday, 10 April 2015

USB Remote v1.41

Redesigned settings screen.

Settings are now grouped into categories, that should make navigation a bit easier. Also, summaries are now properly displayed.

Settings categories.

Wednesday, 11 March 2015

InputStickUtility 1.30

Home screen widget.

Widget can be used to set particular InputStick device as a default one. This will make it easier to avoid "Select InputStick device" popup dialog, when using more than one InputStick:
  • Make sure that Settings -> Dialog settings -> Never ask (use default device) is selected.
  • Use widgets to quickly set default device (for example: InputSitck-home, InputStick-work).

Select InputStickUtility widget.



Setup the widget.


Widgets for setting default device.



"Tasker" integration.

InputStickUtility is now detected by Tasker application as a plugin. For more info about Tasker app, click here.
Tasker allows to automatize process of settings default device, based on time, your location, Bluetooth/WiFi devices available in range and other factors.

USBRemote and InputStickUtility are detected as plugins.

Task example.


Bluetooth 4.0 is now supported.

InputStickUtility is now ready for upcoming Bluetooth 4.0 version of InputStick. All existing InputStick compatible apps will work with BT4.0 version without any modifications. More info about BT4.0 version will be posted soon (probably next week, when I should receive first batch of BT4.0 devices from my manufacturer).


Other changes and improvements.

  • Fixed bug when descriptor modification removed password stored in the application
  • Firmware upgrade screen will display notification if most recent FW is already flashed.
  • Automatically disconnects after settings new pairing PIN.

USB Remote v1.40

Home screen widget.

Following actions can be assigned to a widget:
  • "Connection state" - connect or disconnect can be selected.
  • "Type text" - optionally can be followed with Enter key.
  • "Run macro: - execute selected macro.
  • "Media action" - volume down, volume up, mute/unmute, previous track, next track, play/pause.
Note: if there is no active InputStick connection at the time when a widget is clicked, application will try to establish new connection.

Select USBRemote widget.

Setup the widget.

Some examples.


"Tasker" integration.

USBRemote is now detected by Tasker application as a plugin. For more info about Tasker app, click here.
Here's a simple example of task that can be triggered when MAC address of chosen InputStick device is detected in range:
  • Select "InputStick-LE" as a default device.
  • Type Windows password, followed by Enter.
  • Disconnect
Connection will be triggered automatically, so there is no need to add "Connect" action. If InputStickUtility is set to connect to default InputStick device, without displaying popup dialog, everything will happen automatically without any interaction from user.

USBRemote and InputStickUtility are detected as plugins.

Task example.


Help & info (URLs).

Added separate screen for help URLs and opening changelog.


Auto-clear option for text tab.

This will come useful when typing a lot of text using "Text" tab. When "Type" button is pressed, text field is automatically cleared and you can immediately start entering new text to type.

Automatically press Enter and clear text field after pressing "Type".

Friday, 6 February 2015

InputStickGamepad

Now that gamepad is finally supported by latest InputStick firmware, I can continue working on gamepad app.

Download InputStickGamepad.apk (note: your InputStick must have latest firmware: v.097).


Functionality available in current version:
  • use accelerometer to control: gamepad (X,Y), gamepad (Z,rX), mouse, keyboard (WSAD) or keyboard (arrows),
  • 15 gamepad buttons, 
  • sensitivity settings,
  • dead-zone can be set for accelerometer (useful when accelerometer is used for mouse or keyboard input).
A lot of configuration and customization options are necessary before this app will be ready for Google Play store, so I guess it will appear in the store no earlier than March 2015.

Thursday, 29 January 2015

USB Remote v1.30

Now it's time for new version of USB Remote app (update will appear on GooglePlay in a few hours). Here is an overview of most important changes:


Keyboard customization. 


It is now possible to enabled additional key sets on keyboard screen: 
Settings -> Choose visible key sets

you can also choose distance between the sets:
Settings -> Distance between key sets


Depending on your device and selected distance, you'll be able to fit different number of key sets:

Example 1:
8" tablet,
Small distance between key sets,
Media buttons + Macro buttons + Lock keys + Navigation keys + Punctuation characters + Number keys
Mousepad enabled







Example 2:
8" tablet,
Very large distance between key sets,
Media buttons + Macro buttons + Lock keys + Navigation keys + Number keys,
Mousepad won't fit.







Example 3:
4.3" phone,
Small distance between key sets,
Lock keys + Navigation keys + Punctuation characters + Number keys,
Mousepad disabled. 


Example 4:
4.3" phone,
Small distance between key sets,
Navigation keys + Switchable row,
Mousepad enabled.




Macro buttons.


You can assign macros to M1-M8 buttons set, which can be enabled for keyboard screen. After recording a macro, rename it to:

  • m1.txt to assign it to M1 button,
  • m2.txt to assign it to M2 button,
  • ...
  • m8.txt to assign it to M8 button.

All macro files must be stores in /USBRemote/Macros/ directory.


Sound & Vibrations.


Sound and vibrations feedback can be enabled for keyboard screen:
Settings -> Play sound when key is pressed,
Settings -> Vibrate when key is pressed.

Note: vibrations will not work with most tablet devices.


Sleep, Power and USB host resume.


These three new buttons are now available on Media screen. Sleep and Power buttons behavior will depend on your OS and settings. Resuming USB host from sleep/suspended state will work only if following conditions are met:

  • InputStick is flashed with firmware 0.97 or later,
  • USB host supplies USB power when in sleep/suspended state,
  • OS allows this device to wake the computer.




Auto-connect bug fixed.


When auto-connect is enabled and user cancels "Select InputStick device" dialog, without selecting any device, USB Remote will no longer make another auto-connect attempt.

Tuesday, 27 January 2015

InputStickUtility 1.20

New version of InputStickUtility is ready and will be uploaded to GooglePlay later today. Here's a quick preview:


Firmware Upgrade.


After InputStickUtility is updated, you will be notified about new firmware version during next connection attempt:


You can learn more about changes introduced in latest firmware from previous post. Firmware upgrade process looks following way:


click "Flash" when ready:


Flashing new firmware should take approximately 30 seconds. Do not interrupt this process, unless it gets stuck for a long period of time. In such case, you can always start over by manually going to Firmware Upgrade: select your device from the list:

click "more" (3 "dots" icon):


and choose "Firmware upgrade" option.

Note: if device was password protected, password will be restored after the upgrade process is finished.


Managing security and configuration settings.


Security screen is slightly different than before:




Note: some options will not be displayed if you are not using the most recent firmware.


Preventing unauthorized access.


In order to prevent unauthorized person form settings password or changing pairing PIN from default value (1234), firmware v0.97 introduces "lock" mechanism:
  • if InputStick IS NOT password protected, you will be allowed to set password or change pairing PIN only if connection was established during first 30 seconds after plugging InputStick into USB port. 
  • if password protection IS already enabled, no other protection is necessary and "lock" will not be used.
The point here is to make sure that no one will remotely set password or modify PIN if you leave InputStick without password protection, plugged into USB port.

Examples:
  • Plug (0m0s), Connect (0m15s) - InputStick is unlocked. You can set password or PIN as long as you are connected.
  • Plug (0m0s), Connect (0m45s) - InputStick is locked.
  • Plug (0m0s), Connect (0m15s) - InputStick is unlocked. Disconnect (2m10s). Connect (5m20s) - InputStick is locked.

If you get "Device is locked" message, just follow the instructions:

  • Disconnect
  • Unplug InputStick.
  • Plug InputStick.
  • Connect again.


Manage password.


"Manage password" allows to enable or disable password protection and additional data encryption (AES-128). Device (InputStick) and application passwords can be set or removed separately or both at the same time. Both passwords must match. If you use your InputStick with more than one Android device, you must use one of them to set or remove both device and app passwords. On all other Android devices you will need to respectively set or remove app password only.
If access to your Android device is sufficiently protected (lock screen pattern etc), you can consider storing plain text version of your password. It may come in handy when you need to enter the password on other Android device later on.






Restore defaults.


This option allows to remove password protection and all settings. Use it in case when you forget your password. You will be asked to use your physical keyboard to set specified state of keyboard LEDs (NumLock, CapsLock, ScrollLock). After 1 minuter, InputStick will verify state of the LEDs. There are 10 such steps, after completing all of them, password and all settings will be erased and InputStick will be locked. You must unplug it form USB port before using it again.


Note: this will work only on Windows based PCs, since Linux and OS X keeps state of keyboard LEDs separate for each keyboard (InputStick will not be able to detect NumLock, CapsLock or ScrollLock changes made by user using physical keyboard).

Change pairing PIN.


New firmware allows to change Bluetooth pairing PIN. 


New PIN must consist of exactly 4 digits. Settings new PIN will be confirmed by toggling keyboard LEDs, after that InputStick will be locked. You must unplug it from USB port and plug again. After that, during next connection attempt you will be asked to enter new PIN. PIN can be stored in the app, just in case when you need to pair the InputStick with other Android device later on.


Reset pairing PIN.


This option will display instructions on how to reset pairing PIN in case you forget it:


Note: this will work only on Windows based PCs, since Linux and OS X keeps state of keyboard LEDs separate for each keyboard (InputStick will not be able to detect NumLock, CapsLock or ScrollLock changes made by user using physical keyboard).


USB Configuration.

Here you can modify some parts of USB descriptors:


This allows to make InputStick pretend to be some other hardware. First, you should get data from USB "Device descriptor" of the other device. Use this only if you know what you are doing! After uploading new settings, InputStick will simulate USB disconnect event and will reconnect in 3 seconds.
Note: at this moment it is not possible to modify configuration or report descriptors, also USB endpoints are always assigned following way:
  • keyboard interface: endpoint 1 (IN/OUT),
  • mouse interface: endpoint 2 (IN),
  • consumer control interface: endpoint 3 (IN).


Thursday, 22 January 2015

Firmware 0.97

Firmware 0.97 is now ready. It will be available within next 1-2 days with upcoming InputStickUtility update. Here is a list of most important changes:

  • Supports both Bluetooth 2.1 and Bluetooth 4.0 modules. InputStick with Bluetooth 4.0 module will be available really soon, more details will be posted a bit later.
  • Pairing PIN can be changed.
  • Pairing PIN can be restored to default value (1234): press NumLock, CapsLock or ScrollLock 15 times during first 30 seconds after plugging InputStick into USB port (Windows only).
  • Fixed bug when mouse interface did not work when InputStick was plugged into USB port before turning on USB host.
  • Added gamepad functionality: 4 axes, 16 buttons.
  • Added USB resume functionality (wake up USB host). USB host must supply power when in suspended state.
  • Text can be typed up to 4 times faster.
  • USB PID and VID can be modified by user.
  • Authentication attempts limited to 1 every second to prevent bruteforce attack.
  • If password protection is not enabled, device will be locked 30 seconds after being plugged into USB port. When locked, it will be not possible to: set password, change PIN or upgrade firmware. Other functions will work normally.