From 4c3090ace922c06d00df12f7fc5d0f2d0f194fae Mon Sep 17 00:00:00 2001 From: individ-divided <75159519+individ-divided@users.noreply.github.com> Date: Wed, 3 Mar 2021 22:31:41 +0100 Subject: [PATCH] Documentation changes SPLIT_USB_DETECT and hid_listen udev rules (#11665) Co-authored-by: David Grundberg --- docs/faq_debug.md | 13 +++++++++++++ docs/feature_split_keyboard.md | 15 ++++++++++++--- 2 files changed, 25 insertions(+), 3 deletions(-) diff --git a/docs/faq_debug.md b/docs/faq_debug.md index 872b1688e..13a649bfa 100644 --- a/docs/faq_debug.md +++ b/docs/faq_debug.md @@ -109,6 +109,19 @@ If you can't get this 'Listening:' message try building with `CONSOLE_ENABLE=yes You may need privileges to access the device an OS like Linux. Try `sudo hid_listen`. +On many Linux distros you can avoid having to run hid_listen as root +by creating a file called `/etc/udev/rules.d/70-hid-listen.rules` with +the following content: + +``` +SUBSYSTEM=="hidraw", ATTRS{idVendor}=="abcd", ATTRS{idProduct}=="def1", TAG+="uaccess", RUN{builtin}+="uaccess" +``` + +Replace abcd and def1 with your keyboard's vendor and product id, +letters must be lowercase. The `RUN{builtin}+="uaccess"` part is only +needed for older distros. + + ## Can't Get Message on Console Check: - *hid_listen* finds your device. See above. diff --git a/docs/feature_split_keyboard.md b/docs/feature_split_keyboard.md index dc081ff3a..3613775d7 100644 --- a/docs/feature_split_keyboard.md +++ b/docs/feature_split_keyboard.md @@ -243,7 +243,12 @@ This sets how many LEDs are directly connected to each controller. The first nu ```c #define SPLIT_USB_DETECT ``` -This option changes the startup behavior to detect an active USB connection when delegating master/slave. If this operation times out, then the half is assume to be a slave. This is the default behavior for ARM, and required for AVR Teensy boards (due to hardware limitations). + +Enabling this option changes the startup behavior to listen for an active USB communication to delegate which part is master and which is slave. With this option enabled and theres's USB communication, then that half assumes it is the master, otherwise it assumes it is the slave. + +Without this option, the master is the half that can detect voltage on the physical USB connection (VBUS detection). + +Enabled by default on ChibiOS/ARM. ?> This setting will stop the ability to demo using battery packs. @@ -259,9 +264,13 @@ This sets the poll frequency when detecting master/slave when using `SPLIT_USB_D ## Hardware Considerations and Mods -While most any Pro Micro can be used, micro controllers like the AVR Teensys and most (if not all) ARM boards require the Split USB Detect. +Master/slave delegation is made either by detecting voltage on VBUS connection or waiting for USB communication (`SPLIT_USB_DETECT`). Pro Micro boards can use VBUS detection out of the box and be used with or without `SPLIT_USB_DETECT`. -However, with the Teensy 2.0 and Teensy++ 2.0, there is a simple hardware mod that you can perform to add VBUS detection, so you don't need the Split USB detection option. +Many ARM boards, but not all, do not support VBUS detection. Because it is common that ARM boards lack VBUS detection, `SPLIT_USB_DETECT` is automatically defined on ARM targets (technically when ChibiOS is targetted). + +### Teensy boards + +Teensy boards lack VBUS detection out of the box and must have `SPLIT_USB_DETECT` defined. With the Teensy 2.0 and Teensy++ 2.0, there is a simple hardware mod that you can perform to add VBUS detection, so you don't need the `SPLIT_USB_DETECT` option. You'll only need a few things: