From 4a73b6a21930c71368153fe4197b96f9d100fc4c Mon Sep 17 00:00:00 2001 From: hathach Date: Wed, 10 Mar 2021 11:23:44 +0700 Subject: [PATCH] update doc for BOARD name, add note for udev on Linux --- docs/getting_started.md | 4 ++++ .../device}/99-tinyusb.rules | 4 ---- examples/device/webusb_serial/src/main.c | 20 +++++++++++++++++++ 3 files changed, 24 insertions(+), 4 deletions(-) rename {tools/usb_drivers => examples/device}/99-tinyusb.rules (67%) diff --git a/docs/getting_started.md b/docs/getting_started.md index 870491fe2..8ec0ea748 100644 --- a/docs/getting_started.md +++ b/docs/getting_started.md @@ -47,6 +47,8 @@ $ git submodule update --init lib In addition, MCU driver submodule is also needed to provide low-level MCU peripheral's driver. Luckily, it will be fetched if needed when you run the `make` to build your board. +Note: some examples especially those that uses Vendor class (e.g webUSB) may requires udev permission on Linux (and/or macOS) to access usb device. It depends on your OS distro, typically copy `/examples/device/99-tinyusb.rules` file to /etc/udev/rules.d/ then run `sudo udevadm control --reload-rules && sudo udevadm trigger` is good enough. + ### Build To build example, first change directory to an example folder. @@ -61,6 +63,8 @@ Then compile with `make BOARD=[board_name] all`, for example $ make BOARD=feather_nrf52840_express all ``` +Note: `BOARD` can be found as directory name in `hw/bsp`, either in its family/boards or directly under bsp (no family). + #### Port Selection If a board has several ports, one port is chosen by default in the individual board.mk file. Use option `PORT=x` To choose another port. For example to select the HS port of a STM32F746Disco board, use: diff --git a/tools/usb_drivers/99-tinyusb.rules b/examples/device/99-tinyusb.rules similarity index 67% rename from tools/usb_drivers/99-tinyusb.rules rename to examples/device/99-tinyusb.rules index 334159f9a..e6372ed58 100644 --- a/tools/usb_drivers/99-tinyusb.rules +++ b/examples/device/99-tinyusb.rules @@ -12,7 +12,3 @@ ATTRS{idVendor}=="cafe", MODE="0666", GROUP="dialout" # Rule to blacklist TinyUSB example from being manipulated by ModemManager. SUBSYSTEMS=="usb", ATTRS{idVendor}=="cafe", ENV{ID_MM_DEVICE_IGNORE}="1" - -# Xplained Pro SamG55 Device -SUBSYSTEMS=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2111", MODE="0666", GROUP="users", ENV{ID_MM_DEVICE_IGNORE}="1" -SUBSYSTEMS=="tty", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2111", MODE="0666", GROUP="users", ENV{ID_MM_DEVICE_IGNORE}="1" diff --git a/examples/device/webusb_serial/src/main.c b/examples/device/webusb_serial/src/main.c index 143a73374..6a5a9fa61 100644 --- a/examples/device/webusb_serial/src/main.c +++ b/examples/device/webusb_serial/src/main.c @@ -23,6 +23,26 @@ * */ +/* This example demonstrates WebUSB as web serial with browser with WebUSB support (e.g Chrome). + * After enumerated successfully, browser will pop-up notification + * with URL to landing page, click on it to test + * - Click "Connect" and select device, When connected the on-board LED will litted up. + * - Any charters received from either webusb/Serial will be echo back to webusb and Serial + * + * Note: + * - The WebUSB landing page notification is currently disabled in Chrome + * on Windows due to Chromium issue 656702 (https://crbug.com/656702). You have to + * go to landing page (below) to test + * + * - On Windows 7 and prior: You need to use Zadig tool to manually bind the + * WebUSB interface with the WinUSB driver for Chrome to access. From windows 8 and 10, this + * is done automatically by firmware. + * + * - On Linux/macOS, udev permission may need to be updated by + * - copying '/examples/device/99-tinyusb.rules' file to /etc/udev/rules.d/ then + * - run 'sudo udevadm control --reload-rules && sudo udevadm trigger' + */ + #include #include #include