• # udev ?

    Posté par . En réponse au message Eviter le réveil après un suspend par une souris USB. Évalué à 1.

    Merci pour les propositions. Pour le BIOS, je regarderai ça en dernier ressort. Pour le script ACPI, pourquoi pas...

    Mais n'y a-t-il pas un moyen propre de configurer les propriétés dispo dans /sys/ pour une périph donné ? Il me semble que faire ça avec udev serait le bon moyen, mais je ne suis pas sur d'avoir compris, et ça ne marche pas. A ce que j'ai compris, il faut d'abord identifier le périph:

    $ udevinfo -a -p /sys/bus/usb/devices/4-2/power
    Udevinfo starts with the device specified by the devpath and then
    walks up the chain of parent devices. It prints for every device
    found, all possible attributes in the udev rules key format.
    A rule to match, can be composed by the attributes of the device
    and the attributes from one single parent device.

    looking at device '/devices/pci0000:00/0000:00:1d.0/usb4/4-2/power':
    KERNEL=="power"
    SUBSYSTEM==""
    DRIVER==""
    ATTR{wakeup}=="enabled"
    ATTR{persist}=="1"
    ATTR{autosuspend}=="2"
    ATTR{level}=="on"
    ATTR{connected_duration}=="395180"
    ATTR{active_duration}=="395180"

    looking at parent device '/devices/pci0000:00/0000:00:1d.0/usb4/4-2':
    KERNELS=="4-2"
    SUBSYSTEMS=="usb"
    DRIVERS=="usb"
    ATTRS{configuration}==""
    ATTRS{bNumInterfaces}==" 1"
    ATTRS{bConfigurationValue}=="1"
    ATTRS{bmAttributes}=="a0"
    ATTRS{bMaxPower}==" 98mA"
    ATTRS{urbnum}=="790"
    ATTRS{idVendor}=="047d"
    ATTRS{idProduct}=="104b"
    ATTRS{bcdDevice}=="0110"
    ATTRS{bDeviceClass}=="00"
    ATTRS{bDeviceSubClass}=="00"
    ATTRS{bDeviceProtocol}=="00"
    ATTRS{bNumConfigurations}=="1"
    ATTRS{bMaxPacketSize0}=="8"
    ATTRS{speed}=="1.5"
    ATTRS{busnum}=="4"
    ATTRS{devnum}=="26"
    ATTRS{version}==" 2.00"
    ATTRS{maxchild}=="0"
    ATTRS{quirks}=="0x0"
    ATTRS{authorized}=="1"
    ATTRS{product}=="Kensington Ci95m Wireless Mouse with Nano Receiver"

    looking at parent device '/devices/pci0000:00/0000:00:1d.0/usb4':
    KERNELS=="usb4"
    SUBSYSTEMS=="usb"
    DRIVERS=="usb"
    ATTRS{configuration}==""
    ATTRS{bNumInterfaces}==" 1"
    ATTRS{bConfigurationValue}=="1"
    ATTRS{bmAttributes}=="e0"
    ATTRS{bMaxPower}==" 0mA"
    ATTRS{urbnum}=="786"
    ATTRS{idVendor}=="1d6b"
    ATTRS{idProduct}=="0001"
    ATTRS{bcdDevice}=="0206"
    ATTRS{bDeviceClass}=="09"
    ATTRS{bDeviceSubClass}=="00"
    ATTRS{bDeviceProtocol}=="00"
    ATTRS{bNumConfigurations}=="1"
    ATTRS{bMaxPacketSize0}=="64"
    ATTRS{speed}=="12"
    ATTRS{busnum}=="4"
    ATTRS{devnum}=="1"
    ATTRS{version}==" 1.10"
    ATTRS{maxchild}=="2"
    ATTRS{quirks}=="0x0"
    ATTRS{authorized}=="1"
    ATTRS{manufacturer}=="Linux 2.6.26-1-686 uhci_hcd"
    ATTRS{product}=="UHCI Host Controller"
    ATTRS{serial}==".&checktime(0000,00,1,':')d.0"
    ATTRS{authorized_default}=="1"

    looking at parent device '/devices/pci0000:00/0000:00:1d.0':
    KERNELS==".&checktime(0000,00,1,':')d.0"
    SUBSYSTEMS=="pci"
    DRIVERS=="uhci_hcd"
    ATTRS{vendor}=="0x8086"
    ATTRS{device}=="0x2830"
    ATTRS{subsystem_vendor}=="0x17aa"
    ATTRS{subsystem_device}=="0x20aa"
    ATTRS{class}=="0x0c0300"
    ATTRS{irq}=="16"
    ATTRS{local_cpus}=="ff"
    ATTRS{local_cpulist}=="0-7"
    ATTRS{modalias}=="pci:v00008086d00002830sv000017AAsd000020AAbc0Csc03i00"
    ATTRS{broken_parity_status}=="0"
    ATTRS{msi_bus}==""

    looking at parent device '/devices/pci0000:00':
    KERNELS=="pci0000:00"
    SUBSYSTEMS==""
    DRIVERS==""

    Écrire des règle permettant d'identifier ce que l'on veut, par exemple:

    KERNEL=="power", SUBSYSTEMS=="usb", ATTRS{idProduct}=="104b", ATTRS{product}=="Kensington Ci95m Wireless Mouse with Nano Receiver"

    c'est à dire que l'on veut configurer le device correspondant à l'appeleation "power" dans le noyau, et dont le subsystem matche les attributs suivant (par exemple ici correspondant au sous-system usb, avec tel "idProduct", et tel nom "product". J'ai aussi essayé avec seulement l'idProduct par exemple, je pense que ça devrait suffire, mais sans succès)


    Puis ensuite, passer les paramètres que udev va régler lors de la détection du periph correspondant au pattern, ce qui donne par exemple:

    KERNEL=="power", ATTRS{idProduct}=="104b", ATTR{wakeup}="disabled"

    Placer cette ligne dans un fichier /etc/udev/rules.d/xx-kensington-mouse.rules, le xx indiquant dans quel ordre sera processé cette regle par rapport aux autres (j'ai essayé plusieurs valeurs pour que ce soit réalisé soit en premier soit en dernier, sans mieux de succès).

    Et j'ai beau brancher/débrancher mon dongle, il est toujours configuré en "wakeup enable"... Je ne comprends pas trop pourquoi ça ne marche pas :(