-
Notifications
You must be signed in to change notification settings - Fork 1
Misc
You can open chrome://usb-internals
in Google Chrome to add a virtual device to your browser.
Attention: You don't need to do this if you are using the sketchbook as provided in this repository.
- Upgrade the Arduino IDE from USB 2.0 to 2.1: Go into the installation directory of your Arduino IDE and open
hardware/arduino/avr/cores/arduino/USBCore.h
. Then find the line#define USB_VERSION 0x200
and change0x200
to0x210
. (@see Step 3)
- Start the Arduino IDE
- Find out which Arduino you are using or to which Arduino your microcontroller is compatible to
-
Use the instructions provided for your model (for example Leonardo / Micro) to configure the Arduino IDE
- Select the model: Tools -> Board
- Select the USB port: Tools -> Port
Chrome provides a build-in device-log chrome://device-log
which can be used to identify the connected USB device:
[21:46:31] USB device added: vendor=10755 "Unknown", product=32832 "Arduino Leonardo ETH", serial="WUART", guid=fb98cfd4-48aa-4795-b439-ecc736986cee
-
vendor=10755
: The ID of the USB device Vendor -
product=32832
: The ID of the USB device -
"Arduino Leonardo ETH"
: The exact name of the USB device
vendor
& product
can be converted to hex in order to use them as a filter for WebUSB.
- Connect the Arduino via USB to your computer
- Execute the following command:
ioreg -p IOUSB -w0 -l
This will list all USB devices, for example (which means you have an "Arduino Micro"):
+-o Arduino Micro@14100000 <class AppleUSBDevice, id 0x100002626, registered, matched, active, busy 0 (40 ms), retain 22>
{
"sessionID" = 119957228755640
"iManufacturer" = 1
"bNumConfigurations" = 1
"idProduct" = 32823
"bcdDevice" = 256
"Bus Power Available" = 500
"USB Address" = 21
"bMaxPacketSize0" = 64
"iProduct" = 2
"iSerialNumber" = 3
"bDeviceClass" = 239
"Built-In" = No
"locationID" = 336592896
"bDeviceSubClass" = 2
"bcdUSB" = 528
"USB Product Name" = "Arduino Micro"
"PortNum" = 1
"non-removable" = "no"
"IOCFPlugInTypes" = {"9dc7b780-9ec0-11d4-a54f-000a27052861"="IOUSBFamily.kext/Contents/PlugIns/IOUSBLib.bundle"}
"bDeviceProtocol" = 1
"IOUserClientClass" = "IOUSBDeviceUserClientV2"
"IOPowerManagement" = {"DevicePowerState"=0,"CurrentPowerState"=3,"CapabilityFlags"=65536,"MaxPowerState"=4,"DriverPowerState"=3}
"Device Speed" = 1
"USB Vendor Name" = "Arduino LLC"
"idVendor" = 9025
"IOGeneralInterest" = "IOCommand is not serializable"
"USB Serial Number" = "WUART"
"IOClassNameOverride" = "IOUSBDevice"
}
-
USB Product Name
: The exact name of the USB device -
idVendor
: The ID of the USB device Vendor (for example Arduino LLC) -
idProduct
: The ID of the USB device
idVendor
& idProduct
can be converted to hex in order to use them as a filter for WebUSB.
- Shield: https://www.tindie.com/products/Conceptinetics/25kv-isolated-dmx-512-shield-for-arduino-r2/
- http://dmxshield.blogspot.de/2013/04/conceptinetics-dmx-library-for-arduino.html#comment-form
The following steps are not needed (if you are using an Arduino Leonardo ETH), because you can find an updated version of the Conceptinetics lib already in this repo.
- Install the lib into your Arduino library folder
- Change the following lines in
Conceptinetics.h
// Fix some settings for Arduino Leonardo ETH
// https://sourceforge.net/p/dmxlibraryforar/wiki/Getting%20DMX%20library%20to%20work%20on%20Arduino%20Leonardo/
// Comment this line
// #define USE_DMX_SERIAL_0
// Uncomment this line
#define USE_DMX_SERIAL_1
// Decrease the length of the automatic baudrate breaks
// Comment this line
// #define DMX_BREAK_RATE 49950
// Uncomment this line
#define DMX_BREAK_RATE 99900
In JavaScript you can convert a decimal number into a hex like this (e.g. in the console of your browser):
let vendorId = 10755
vendorId.toString(16) // 2a03
let productId = 32832
productId.toString(16) // 8040
These values with the prefix 0x
can be used as a filter when you request access to a specific USB device:
navigator.usb.requestDevice({
filters: [{
'vendorId': 0x2a03,
'productId': 0x8040
}]
}).then(device => console.log(device))
TK usb_descriptors.png
https://wicg.github.io/webusb/#appendix-descriptors
USB devices identify themselves to the host by providing a set of binary structures known as descriptors. The first one read by the host is the device descriptor which contains basic information such as the vendor and product IDs assigned by the USB-IF and the manufacturer.
- Native support for ES6 modules
- Enable flags for WebUSB
- chrome://flags/#enable-experimental-web-platform-features
- Native support for WebUSB