Keresés

Új hozzászólás Aktív témák

  • urandom0

    aktív tag

    válasz Ablakos #42473 üzenetére

    Az udev-re van szükség. Egy udev szabályt kell létrehozni a billentyűzetre, amiben letiltod a wakeup-ot. Én most ebben nem tudok segíteni, de délután/estefelé majd megírom, én hogyan oldottam meg.

  • urandom0

    aktív tag

    válasz Ablakos #42473 üzenetére

    Szóval, az udev.
    Linuxban az udev képez hidat a kernel és az eszközök között. Ez felel többek közt azért, hogy mi történjen, amikor egy eszközt csatlakoztatsz vagy leválasztasz. Az udev működését szabályokkal lehet testreszabni.
    Általában minden disztró gyárilag tartalmaz több-kevesebb szabályt a /usr/lib/udev/rules.d/ könyvtárban, de mi nem ide fogunk dolgozni, hanem az /etc/udev/rules.d könyvtárba.
    Nekem Logitech wireless egér+billentyűzet kombóm van (az egerét nem használom, csak a billentyűzetet), ezért ide létrehoztam egy 99-logitech.rules nevű fájlt. A fájlnév elején a szám a végrehajtási sorrendet jelzi, ha több fájl van ebben a mappában, a legkisebb számtól haladva a legnagyobbig hajtódnak végre a szabályok.

    Az én fájlomban egyetlen sor van:

    ACTION=="add", SUBSYSTEM=="usb", DRIVERS=="usb", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c534", ATTR{power/wakeup}="disabled", ATTR{driver/2-1.2:1.1/power/wakeup}="disabled"

    Ez annyit jelent, hogy állítsd be a következő attribútumokat a megadott eszközre akkor, amikor az csatlakoztatásra kerül. Csatlakoztatás esemény minden bootnál lefut, meg nyilván akkor is, amikor csatlakoztatod az eszköz.

    A SUBSYSTEM, a DRIVERS, az ATTRS{idVendor} és ATTRS{idProduct} attribútumok határozzák meg, hogy mely eszközre kell alkalmazni a szabályt. USB eszközök esetén az idVendort és az idProduct-ot le lehet kérdezni pl. az lsusb paranccsal:

    [root@fujitsu-fedora ~]# lsusb
    Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
    Bus 001 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
    Bus 001 Device 003: ID 17ef:608d Lenovo Optical Mouse
    [B]Bus 001 Device 004: ID 046d:c534 Logitech, Inc. Unifying Receiver[/B]
    Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
    Bus 002 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub

    Ott van a 046d:c534 osztályú eszköz, ez az én egér+billentyűzet kombóm(nak az adóvevője).
    Vagy ha kiadod az udevadm monitor parancsot, és közben bedugod az eszközt, akkor is kiírja az eszközosztály azonosítóját (meg még egy csomó mindent is).

    Azt, hogy a megadott eszközzel mi történjen, az ATTR{power/wakeup}="disabled", ATTR{driver/2-1.2:1.1/power/wakeup}="disabled" attribútumok adják meg. Figyeld meg, ez fontos, hogy a SUBSYSTEM, a DRIVERS és a többi attribútumnál kettő egyenlőségjel van, mert ezek kiválasztják az eszközt, míg ennél a két utolsó attribútumnál egy egyenlőségjel van, mert ezek pedig megváltoztatják az attribútum értékét.
    A power/wakeup és a driver/2-1.2:1.1/power/wakeup értékét is disabledre állítottam, emiatt nem fogja felébreszteni a gépet alvó állapotból.

    Elméletileg elég lenne csak simán a power/wakeup-ot disabledre állítani, de ez nem mindig működik, úgyhogy én
    a 2-1.2:1.1 azonosítójú (udevadm monitor-tól lehet megtudni) USB port wakeup-ját is disabledre tettem, így teljesen jól működik.

    Neked is egy ilyen szabályt kell csinálnod, átírni az idVendor és az idProduct azonosítókat, valamint az USB portod azonosítóját (gondolom, nem dugdosod át egyik portból a másikba a billentyűzetet), majd kiadni az udevadm control --reload parancsot, ez újratölti az udev szabályokat. Lényegében ennyi.

    Ami még érdekes lehet, az hogy az udevadm info --attribute-walk paranccsal le lehet kérdezni az eszköz összes attribútumát. Pl. név alapján:
    udevadm info --attribute-walk --name=/dev/input/event4

    A /dev/input/event4 az én egerem azonosítója (lshw -C input parancstól lehet megtudni).

    Elérési út alapján:

    udevadm info --attribute-walk --path=udevadm info --attribute-walk --path=/devices/p/devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1:1.1/0003:24AE:2015.0018/input/input94/mouse0

    A path-ot az udevadm monitor parancstól lehet megtudni.

    Az ArchWiki cikkét is érdemes megnézegetni.

    [ Szerkesztve ]

Új hozzászólás Aktív témák