Monday 31 March 2014

Availability info

Hardware availability:

I've just heard from my manufacturer, all devices form the very first production batch will be ready tomorrow. I'll need one more day to come and pick them up, pre-load firmware and test each device. I think there will be no more hardware-related delays, first five devices that I received last week for testing are working just fine (more details).
  • Shipping pre-orders: 2nd April 2014. I'm really sorry for delaying this again. I tried to stick to my estimated March 2014 shipping date, but at the same time I wanted to be extra careful with manufacturing. After all one stupid mistake and I could end up with a few hundreds faulty PCBs / devices.
  • Everyone else who sent me an email regarding availability will be notified by email as soon as I'll be ready to take more orders.
  • I think that next week there should be an option to order InputStick online form


By default all devices will be flashed with "Basic" firmware version which offers you: keyboard, mouse and consumer control (volume, playback control etc.) USB interfaces.
  • So what about ability to emulate all different kinds of USB devices? This will be possible with "Advanced" firmware option, which will be available as a firmware update (via Bluetooth).
  • When it will be available? I want to release it by the end of April. Current "Advanced" firmware and API implementations works fine with all different kinds of USB HID class devices, but it requires some fixes / changes to allow to efficiently emulate other USB classes like for example: virtual comm port. Releasing currently available version now and updates few weeks later will just create a lot of mess. At the same time, basing on feedback from you I assume that vast majority of people will be happy with "Basic" firmware.
  • Why it is delayed? Because of many requests for API for other platforms I focused most on "Basic" firmware version (it already did some brief tests with Windows, Linux and Java2ME platforms). Also, I put a lot of effort into security (AES-128 encryption), access control and possibly safe way to restore default settings (remove password protection).
Some more details about why I decided to make two firmware options: Simplified firmware and API

API / Apps:
  • Android API,
  • Device Manager,
  • Remote Controller,
  • Barcode Scanner,
  • Password Manager,
  • Presentation Remote,

will be available as a direct download form on 6th April 2014. I think that first pre-ordered devices should arrive to Indiegogo backers starting from 7th of April.

If you want to know what to expect from the API take a look at Developers section (this is based on previous API version, but there won't be any significant changes).

Wednesday 26 March 2014

First machine assembled PCBs

Just another quick update:

Today I've received 5 completely assembled PCBs from my manufacturer for testing. Everything except USB connector is machine assembled. So far everything works fine. Rest of the boards should be ready on Monday.

Here are some photos, they would probably look way better in daylight, but that's more less 7 hours from now :)

Friday 21 March 2014

Quick update

Completing all components necessary to start production took me a little bit more time than I assumed. DHL can move a package from Shenzhen to Warsaw over a weekend, but then it takes three days to get it through customs office. Anyway, I've already delivered all components to my manufacturer and if there won't be any unexpected problems with assembly, devices should be ready on Tuesday/Wednesday next week. Then I have to test every single unit, upload firmware and generally double-check everything, so it looks like I'll be ready to send first devices on Monday, 31.03.2014. I'll keep you posted about further progress.

Saturday 15 March 2014

Security options

Here's some information about security options available for InputStick:

1) Protocol encryption. 

Even though Bluetooth connection between smartphone and InputStick is already encrypted, it is possible to use AES-128 encryption on InputStick protocol level. I started working on this some time ago, but to make it efficient and reliable I had to make some changes to InputStick protocol. Using encryption adds additional 0.5ms latency, so if latency is a top priority (like in case of game controllers), you should carefully think if encryption is really necessary.

2) Access control.

If you leave InputStick plugged into USB port, there is a possibility that someone may try to connect to it and as a result gain access to USB host using InputStick as a keyboard and mouse. To solve this problem I've introduced additional option: "Force encryption". If set, remote device must prove that it knows encryption key before InputStick will accept any USB data.

3) Password recovery. 

Just like with any other password protected system it is necessary to take into account situation when someone simply forgets the password. In this case it would permanently lock InputStick device, so I decided that there must be a way for user to remove password protection:
  1. Plug InputStick into USB host which comes with a keyboard (preferably PC).
  2. Use smartphone to connect to InputStick and initiate restore procedure.
  3. Once every 6 minutes you will be asked to set a certain state of NumLock, CapsLock and ScrollLock. This step will be repeated 10 times.
  4. Password protection is now removed, however before you can use InputStick again you must physically unplug it form the USB port and then plug it again.
As you can see, this requires you to have physical access to USB host, USB port and InputStick for at least an hour. During such period of time one may do many more potentially dangerous things than just resetting InputStick password protection.

4) Utility application.

Opening device details screen allows to choose new security-related options:

Here you can set encryption password and choose if it must be used before sending any other data. If you choose this option, it is necessary to enter this password on any Android device that is paired with this particular InputStick device.

This activity will guide you through restoring process:

Wednesday 12 March 2014

Production update

Just a quick update about production: PCB panels are ready, but I'm still waiting for some of the components to arrive. So it looks like assembly will take place sometime next week.