WebUSB Test Page


#1

Thought I might start a thread to track WebUSB developments.

Chrome v.61+ is now shipping with WebUSB default enabled. This is a new standard that allows web pages to interface directly to USB devices.

I found a WebUSB Support Checker static site zip. I installed it on my website here. WebUSB pages apparently have to be delivered over SSL to work.

WebUSB detects and connects to BlinkStick and my mobile devices on Windows 10.

However on Linux (Ubuntu), it marks “General Support” with an “X” when I attempt to connect to BlinkStick.

The error in the Chrome F12 console is:

Uncaught (in promise) DOMException: Access denied.
serial.js:26 This error is probably intended, can't claim all the interfaces.
Error: DOMException: Unable to claim interface. (BlinkStick Flex)

Suspect the UDEV rule for BlinkStick on Linux needs to be tweaked for WebUSB. I shall post a working rule here if that is the solution.

Update:
Apparently WebUSB does not yet allow HID access, or any other usb interface with native drivers.
So a firmware patch would be required for Blinkstick (currently HID only) to work with WebUSB.


#4

Thanks for sharing. Never knew about that WebUSB thing…
Maybe you could also share a small example of how to use it with the Blinkstick (a simple blink or so). I´m sure you´ve already tested it :slight_smile:


#5

To use WebUSB with BlinkStick, the firmware would have to be modified and a javascript library would have to be written.

WebUSB just handles detection and connection to the blinkstick usb firmware HID interface. WebUSB does not allow access to native drivers like HID, so the firmware would have to be modified to provide a WebUSB mode.

Yes, it is pretty nifty and would allow developers to instantly and painlessly develop with BlinkStick.


#6

hi dcerisano…
plz ,did you have a solution for this " Uncaught (in promise) DOMException: Access denied." when use webusb API ?


#7

Blickstick is currently a HID device, which are not yet accessible by WebUSB.

The whole point of a HID device is that native drivers are provided by the OS. WebUSB not does currently allow native driver access.

The BlinkStick HID firmware is opensource, and could be possibly modified. However, this might require a custom BlickStick USB driver to be created as well to allow WebUSB access.

Myself, I am waiting to see if WebUSB will at some point allow sandboxed (write only) native driver access (allowing HIDs like BlinkStick). There are security reasons for the current native restrictions (eg. keyboards are also HIDs, but have to be readable).

Maybe SATA based, rather than USB based firmware could be developed for BlickStick. This would not only increase the speed, but also allow more LEDs to be powered from the SATA connector which has several +5V rails (up to 100W). Some popular RGB controllers already do this (but again, no WebUSB access).

As an aside, M.2 is not really an option for RGB controller connectors since the rails are too weak (3.3V). PCIe based USB could however be an option (up to 150W at 5V).

Interestingly, USB 3.2 will provide up to 75W on the 5V rail, allowing for much larger RGB arrays to be powered from BlinkStick.


#8

Ah ,than we should wait until google allow HID driver work with webusb,many thanks for you


#9

You can also keep a eye on this thread which seems to be tracking HID access for WebUSB. They seem to be focusing on security sandbox that would allow this.

Note that Chrome already has a native HID api, so developing a Chrome Extension for BlinkStick might be another way to go.