node package manager



USB over WebSocket: Make your browser communicate with USB through WebSockets


Install NodeJS & npm the way you like.

On Ubuntu GNU/Linux, you can try :

curl -sL | sudo bash -
sudo apt-get install nodejs

Additionally on Windows, use Zadig to install the WinUSB driver for your USB device. Otherwise you will get LIBUSB_ERROR_NOT_SUPPORTED when attempting to open devices.


$ npm install eve-connector


to create a server listening on port 8164 :

var EC = require('eve-connector-server.js').createServer(8164);

If you want to test the client side implementation, just point your browser to https://localhost:8164

You can also run node test.js to see how to integrate https params (you'll find a test certificate in the root folder of the project).



On most Linux systems, USB devices are mapped with read-only permissions by default. To open a device through EveConnector, your user who runs Node.js will need to have write access to it too. A simple solution is to set a udev rule. Create a file /etc/udev/rules.d/50-yourdevicename.rules with the following content:

SUBSYSTEM=="usb", ATTR{idVendor}=="[yourdevicevendor]", MODE="0664", GROUP="plugdev"

Then, just restart the udev daemon:

service udev restart.

You can check if device permissions are set correctly by following these steps:

Find the bus and device numbers :



ls -al /dev/bus/usb/[bus]/[device]

This file should be owned by group "plugdev" and have group write permissions.


To enable debug messages in the terminal :

export DEBUG=eve-connector:*

But... why "EveConnector"?

"Eve" is the short name for e-venement (its source is hosted on github : The EveConnector was first designed to communicate from e-venement to USB peripherals... so it was quite natural to call


EveConnector is licensed under the GNU-GPLv3. See LICENSE