# Force OFF/ON un clavier USB pour led ajoutée OFF (mode dodo)

## pti-rem

Bonjour,

J'ai mis deux dispositifs USB souples d'éclairage à led - un de chaque côté - sur mon clavier Mac Book Pro M7803 pour aider mes yeux lors de la saisie dans la pénombre.

C'est très efficace  :Smile:  Ces dispositifs ont une puissance absorbée de 1 Watt chacun d'après la fiche du produit.

Ce clavier est branché sur un Uni Class Technology Co., Ltd 2Port KVMSwitcher (10d5:55a2)

Le KVMSwitcher est connecté depuis un hub alimenté connecté à mon transportable n73sm.

```
rem@n73sm ~ $ lsusb

Bus 002 Device 012: ID 10d5:55a2 Uni Class Technology Co., Ltd 2Port KVMSwitcher

Bus 002 Device 011: ID 046d:c077 Logitech, Inc. M105 Optical Mouse

Bus 002 Device 013: ID 05ac:0205 Apple, Inc. Extended Keyboard [Mitsumi]

Bus 002 Device 010: ID 05ac:1002 Apple, Inc. Extended Keyboard Hub [Mitsumi]

Bus 002 Device 009: ID 058f:9254 Alcor Micro Corp. Hub

Bus 002 Device 008: ID 1a40:0101 Terminus Technology Inc. Hub

Bus 002 Device 006: ID 04cf:8819 Myson Century, Inc. USB 2.0 SD/MMC Reader

Bus 002 Device 004: ID 1a40:0101 Terminus Technology Inc. Hub

Bus 002 Device 007: ID 0781:5567 SanDisk Corp. Cruzer Blade

Bus 002 Device 005: ID 1a40:0101 Terminus Technology Inc. Hub

Bus 002 Device 003: ID 1a40:0101 Terminus Technology Inc. Hub

Bus 002 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub

Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub

Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Bus 001 Device 003: ID 04f2:b1bb Chicony Electronics Co., Ltd 

Bus 001 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub

Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

rem@n73sm ~ $ 
```

Le Bus 2 semble très occupé alors que les Bus 1 et 3 semblent ne pas avoir de charge. Je m'interroge là dessus.

Je souhaite pouvoir éteindre les dispositifs à led sans avoir à éteindre mon transportable (pour dormir dans le noir)

Je ne souhaite pas avoir à les débrancher à de multiples reprises.

 *https://forums.futura-sciences.com/electronique/693138-courant-debite-une-prise-usb-pc.html#:~:text=La%20norme%20USB%20limite%20le,mA%20pour%20l'USB%203.0. wrote:*   

> La norme USB limite le courant admissible à 100 mA par défaut, à 500 mA après négociation entre l'hôte (PC) et le périphérique (batterie) pour l'USB 2.0, et cela monte à 900 mA pour l'USB 3.0.

 

note : https://forums.futura-sciences.com/electronique/693138-courant-debite-une-prise-usb-pc.html#:~:text=La%20norme%20USB%20limite%20le,mA%20pour%20l'USB%203.0.

Je voudrais pouvoir rompre la négociation avec pour effet attendu d'éteindre - par manque de courant - les deux dispositifs souples à led branchés sur le clavier.

Qu'en pensez-vous ?

MerciLast edited by pti-rem on Wed Aug 26, 2020 10:51 am; edited 5 times in total

----------

## pti-rem

Je vais faire un essai avec uhubctl

https://unix.stackexchange.com/questions/165447/turning-off-power-to-usb-port-or-turn-off-power-to-entire-usb-subsystem

https://github.com/mvp/uhubctl

```
n73sm ~ # uhubctl --version

2.2.0-8-g0f6218df

n73sm ~ #
```

```
n73sm ~ # uhubctl 

Current status for hub 2-1.3.4.4 [058f:9254 ALCOR Generic USB Hub]

  Port 1: 0103 power enable connect [05ac:1002 Mitsumi Electric Hub in Apple Extended USB Keyboard]

  Port 2: 0303 power lowspeed enable connect [046d:c077 Logitech USB Optical Mouse]

  Port 3: 0303 power lowspeed enable connect [10d5:55a2 No brand 2Port KVMSwicther 1"?]

  Port 4: 0100 power

Current status for hub 2-1 [8087:0024]

  Port 1: 0503 power highspeed enable connect [1a40:0101 USB 2.0 Hub]

  Port 2: 0100 power

  Port 3: 0503 power highspeed enable connect [1a40:0101 USB 2.0 Hub]

  Port 4: 0100 power

  Port 5: 0100 power

  Port 6: 0100 power

Current status for hub 4 [1d6b:0003 Linux 4.19.97-gentoo xhci-hcd xHCI Host Controller 0000:04:00.0, USB 3.00, 1 ports]

  Port 1: 02a0 power 5gbps Rx.Detect

Current status for hub 3 [1d6b:0002 Linux 4.19.97-gentoo xhci-hcd xHCI Host Controller 0000:04:00.0]

  Port 1: 0100 power

Current status for hub 1-1 [8087:0024]

  Port 1: 0100 power

  Port 2: 0507 power highspeed suspend enable connect [04f2:b1bb Chicony Electronics Co., Ltd. USB2.0 2.0M UVC WebCam]

  Port 3: 0100 power

  Port 4: 0100 power

  Port 5: 0100 power

  Port 6: 0100 power

n73sm ~ #
```

```
n73sm ~ # uhubctl -a off -p 1 -l 2-1.3.4.4

Current status for hub 2-1.3.4.4 [058f:9254 ALCOR Generic USB Hub]

  Port 1: 0103 power enable connect [05ac:1002 Mitsumi Electric Hub in Apple Extended USB Keyboard]

Sent power off request

New status for hub 2-1.3.4.4 [058f:9254 ALCOR Generic USB Hub]

  Port 1: 0000 off

n73sm ~ #
```

Les leds USB du clavier s'éteignent une petite seconde après le retour de la commande et puis elles se rallument.

Ce n'est pas une rupture de la négociation d'alimentation en 500 mA mais juste une coupure d'alimentation qui ne s'effectue que très temporairement.

J'ai déplacé le branchement du KVM Switcher depuis mon hub externe vers une prise USB native du transportable.

Cela ne change pas grand chose.Last edited by pti-rem on Sun Aug 23, 2020 1:17 pm; edited 1 time in total

----------

## pti-rem

Je me voyais en train de mettre un micro-interrupteur pour le fil rouge d'un adaptateur USB fait maison.

Mais Trop bien !

Il me suffit de commuter le KVM Switcher pour éteindre mes deux lampes...

La deuxième machine qui y est raccordée n'est pas allumée.

Pour le moment.

----------

## netfab

Salut,

 *pti-rem wrote:*   

> 
> 
> Les leds USB du clavier s'éteignent une petite seconde après le retour de la commande et puis elles se rallument.
> 
> Ce n'est pas une rupture de la négociation d'alimentation en 500 mA mais juste une coupure d'alimentation qui ne s'effectue que très temporairement.
> ...

 

Probablement le kernel qui relance automatiquement le port USB (suspend/resume).

Tu peux essayer de jouer avec l'interface kernel prévue à cet effet :

```

# echo disabled > /sys/bus/usb/devices/usbX/power/wakeup

# echo 0 > /sys/bus/usb/devices/usbX/power/autosuspend_delay_ms

```

À tester.

https://www.kernel.org/doc/html/v4.18/driver-api/usb/power-management.html

----------

## pti-rem

Salut,

Je dois redonner le uhubctl car la numérotation s'est éclaircie.

```
n73sm ~ # uhubctl 

Current status for hub 2-1.2 [058f:9254 ALCOR Generic USB Hub]

  Port 1: 0103 power enable connect [05ac:1002 Mitsumi Electric Hub in Apple Extended USB Keyboard]

  Port 2: 0303 power lowspeed enable connect [046d:c077 Logitech USB Optical Mouse]

  Port 3: 0303 power lowspeed enable connect [10d5:55a2 No brand 2Port KVMSwicther 1"?]

  Port 4: 0100 power

Current status for hub 2-1 [8087:0024]

  Port 1: 0507 power highspeed suspend enable connect [1a40:0101 USB 2.0 Hub]

  Port 2: 0103 power enable connect [058f:9254 ALCOR Generic USB Hub]

  Port 3: 0507 power highspeed suspend enable connect [1a40:0101 USB 2.0 Hub]

  Port 4: 0100 power

  Port 5: 0100 power

  Port 6: 0100 power

Current status for hub 4 [1d6b:0003 Linux 4.19.97-gentoo xhci-hcd xHCI Host Controller 0000:04:00.0, USB 3.00, 1 ports]

  Port 1: 02a0 power 5gbps Rx.Detect

Current status for hub 3 [1d6b:0002 Linux 4.19.97-gentoo xhci-hcd xHCI Host Controller 0000:04:00.0]

  Port 1: 0100 power

Current status for hub 1-1 [8087:0024]

  Port 1: 0100 power

  Port 2: 0507 power highspeed suspend enable connect [04f2:b1bb Chicony Electronics Co., Ltd. USB2.0 2.0M UVC WebCam]

  Port 3: 0100 power

  Port 4: 0100 power

  Port 5: 0100 power

  Port 6: 0100 power

n73sm ~ #
```

```
n73sm ~ # lsusb | grep 05ac:1002

Bus 002 Device 018: ID 05ac:1002 Apple, Inc. Extended Keyboard Hub [Mitsumi]

n73sm ~ #
```

J'avais déjà les valeurs disabled et 0 pour /sys/bus/usb/devices/usb2/power/wakeup et /sys/bus/usb/devices/usb2/power/autosuspend_delay_ms

J'ai essayé de jouer avec l'interface kernel, j'ai lu un peu la documentation.

J'ai eu des troubles d'affichage qui m'ont mis la frousse.

J'en ai éteint la machine.

```
n73sm ~ # cat /sys/bus/usb/devices/usb2/power/wakeup

disabled

n73sm ~ # cat /sys/bus/usb/devices/usb2/power/autosuspend_delay_ms

0

n73sm ~ #
```

Grâce à Linux USB : allumer et éteindre ?

J'ai utilisé /sys/bus/usb/drivers/usb/unbind et /sys/bus/usb/drivers/usb/bind

Pour un débutant comme moi, c'est vraiment simple :

```
#!/bin/bash

# éteindre.sh

echo '2-1.2.1' | sudo tee /sys/bus/usb/drivers/usb/unbind &> /dev/null
```

```
#!/bin/bash

# allumer.sh

echo '2-1.2.1' | sudo tee /sys/bus/usb/drivers/usb/bind &> /dev/null
```

L'alimentation du clavier est coupée par le détachement du périphérique et elle est rétablie à son rattachement.

Ça marche bien. Je n'ai pas encore beaucoup testé. La souris connectée au switcher fonctionne clavier éteint.

Il me reste à mieux identifier le périphérique 05ac:1002 pour avoir sa numérotation sous la forme N-M.a.b de manière automatique.

Dans la page web, il est mentionné :

 *Le 30 oct. 2011, Stephen Niedzielski wrote:*   

> Je n'ai pas branché un analyseur de protocole pour savoir ce qui se passe réellement dans le bus, mais je sais que la lumière de la souris s'éteint lorsque je le dissocie. J'imagine qu'une couche inférieure interagit avec le contrôleur hôte EHCI pour éteindre le port. Ceci est particulièrement utile pour les périphériques intégrés, tels que les webcams UVC, qui ne semblent jamais fonctionner correctement et qui nécessiteraient sinon un redémarrage du système pour se réinitialiser.

 

----------

## pti-rem

Pour trouver l'identifiant du périphérique USB, il est possible de comparer la liste de /sys/bus/usb/drivers/usb/ avant et après le branchement.

Ce message est un exemple.

Avant d'allumer mon dock USB-SATA double :

```
n73sm ~ # ls -F /sys/bus/usb/drivers/usb/

1-1@  1-1.2@  2-1@  2-1.1@  2-1.1.1@  2-1.1.1.1@  2-1.1.2@  2-1.1.3@  2-1.3@  2-1.3.4@  bind  uevent  unbind  usb1@  usb2@  usb3@  usb4@

n73sm ~ #
```

Après sa détection dans le système (aucun disque du dock n'est encore monté ; peu importe) :

```
n73sm ~ # ls -F /sys/bus/usb/drivers/usb/

1-1@  1-1.2@  2-1@  2-1.1@  2-1.1.1@  2-1.1.1.1@  2-1.1.2@  2-1.1.3@  2-1.3@  2-1.3.4@  4-1@  bind  uevent  unbind  usb1@  usb2@  usb3@  usb4@

n73sm ~ #
```

Mon dock est dans le bus USB avec l'identifiant 4-1

Après l'utilisation et le démontage complet, il serait possible d'utiliser cette commande pour le détacher du bus USB :

```
$ echo '4-1' | sudo tee /sys/bus/usb/drivers/usb/unbind
```

Ce qui par la même occasion fait disparaître de Thunar le ou les périphérique(s) disque(s) du dock, dans mon environnement.

----------

