web-dev-qa-db-fra.com

Microsoft Arc Mouse (Bluetooth) cesse de défiler après avoir suspendu Ubuntu 19.04

Edit: C'est plus compliqué que je ne l'avais remarqué. Non seulement je perds la fonction de défilement lors de la suspension, mais elle est également perdue lorsque le système commence à économiser de l'énergie. J'ai tripoté des options d'économie d'énergie en vain. J'ai trouvé une solution que je posterai dans les réponses ci-dessous.

Je viens d'installer Ubuntu 19.04 sur mon ordinateur portable Dell (Latitude 1790) et j'utilise une souris Microsoft Arc Mouse. Lorsque l'ordinateur portable suspend puis reprend, la souris Arc Mouse continue de fonctionner mais le défilement cesse de fonctionner avec la surface tactile.

Le redémarrage de l'ordinateur portable réactive le défilement. Cependant, arrêter et redémarrer Bluetooth et réappairer la souris ne réactivent pas le défilement.

Je soupçonne que quelque chose lié à cette question peut résoudre le problème:

Le défilement ne fonctionne pas après la suspension, à la recherche d'une solution permanente

Malheureusement, je ne sais pas comment déterminer le périphérique de la souris à mettre dans le script pour tester à nouveau le périphérique et redémarrer le défilement. Quelqu'un peut-il me dire comment déterminer l'appareil? Sinon, existe-t-il une autre approche pour résoudre ce problème?

J'ai regardé dans lsmod mais il n'y a rien d'évident. Voici les deux lignes qui mentionnent le bluetooth.

bluetooth             557056  43 btrtl,btintel,btbcm,bnep,btusb,rfcomm
ecdh_generic           28672  2 bluetooth

Voici tous les périphériques lsmod répertoriés ci-dessus ou contenant bt.

Dell_rbtn              20480  0
btusb                  49152  0
btrtl                  20480  1 btusb
btbcm                  16384  1 btusb
btintel                24576  1 btusb
bluetooth             557056  43 btrtl,btintel,btbcm,bnep,btusb,rfcomm

L'ordinateur portable dispose également d'un pavé tactile et le défilement continue de fonctionner sur le pavé tactile après la suspension. Je pense que cela signifie que le problème est isolé de la souris Arc Mouse.

En creusant un peu plus, j'ai trouvé que /etc/init.d/ contient les scripts pour les services et /etc/init.d/bluetooth est le script qui fait apparaître et arrête le service bluetooth. Cela semble être la partie pertinente.

start)
        log_daemon_msg "Starting $DESC"

        if test "$BLUETOOTH_ENABLED" = 0; then
                log_progress_msg "disabled. see /etc/default/bluetooth"
                log_end_msg 0
                exit 0
        fi

        start-stop-daemon --start --background $SSD_OPTIONS
        log_progress_msg "${DAEMON##*/}"

        run_sdptool || :

        if test "$HID2HCI_ENABLED" = 1; then
                enable_hci_input
        fi

        log_end_msg 0
  ;;
  stop)
        log_daemon_msg "Stopping $DESC"
        if test "$BLUETOOTH_ENABLED" = 0; then
                log_progress_msg "disabled."
                log_end_msg 0
                exit 0
        fi
        if test "$HID2HCI_UNDO" = 1; then
                disable_hci_input
        fi
        start-stop-daemon --stop $SSD_OPTIONS
        log_progress_msg "${DAEMON}"
        log_end_msg 0
  ;;

Existe-t-il quelque chose que je peux exécuter à partir d'ici qui me permettra de réinitialiser uniquement la souris et non le sous-système entier?

4
RaidPinata

Comme je l'ai mentionné plus tôt, cela se produit plus que de sortir de la suspension. Par conséquent, j'ai besoin que la solution fonctionne après ma sortie de la suspension, mais je peux également le faire manuellement lorsque l'économie d'énergie est activée sans aller jusqu'au bout.

Comme @ WinEunuuchs2Unix et moi sommes venus dans les commentaires, la solution la plus simple est de simplement redémarrer le bluetooth en utilisant Sudo services bluetooth restart. Cela supprime et fait apparaître le bluetooth et réactive le défilement de la souris. Devant le faire en ligne de commande tout le temps était un peu ennuyeux, alors j'ai décidé de me faciliter les choses.

Suite aux informations trouvées ici , j'ai créé le script dans /usr/local/sbin/restart_bluetooth.sh Avec le contenu suivant.

#!/bin/bash
service bluetooth restart

Cela peut être exécuté sans mot de passe en modifiant le fichier sudoers à l'aide de Sudo visudo. Après la ligne %Sudo ALL=(ALL:ALL) ALL, j'ai ajouté les informations pour le script, en utilisant mon nom d'utilisateur.

username  ALL=(ALL) NOPASSWD: /usr/local/sbin/restart_bluetooth.sh

Maintenant que j'ai un script qui ne nécessite pas de mot de passe. J'ai installé une icône sur mon lanceur en utilisant ce guide en installant gnome-desktop-item-edit En utilisant la commande Sudo apt install --no-install-recommends gnome-panel. J'ai ensuite créé un nouveau fichier .desktop en exécutant gnome-desktop-item-edit ~/Desktop/ --create-new. Le fichier .desktop final ressemble à ceci.

[Desktop Entry]
Version=1.0
Type=Application
Terminal=false
Icon[en_US]=/usr/share/icons/ubuntu-mono-dark/status/24/bluetooth-active.svg
Name[en_US]=Restart Bluetooth
Comment[en_US]=Restarts bluetooth service to fix scrolling issue.
Exec=Sudo /usr/local/sbin/restart_bluetooth.sh
Comment=Restarts bluetooth service to fix scrolling issue.
Name=Restart Bluetooth
Icon=bluetooth

Maintenant, je peux résoudre le problème en un seul clic après avoir fait de l'icône un favori sur mon lanceur.

2
RaidPinata

Je veux juste m'attaquer à votre propre réponse, car certains pourraient préférer une approche plus automatisée à cela. Donc depuis le début:

Créer un script /usr/local/sbin/restart-bluetooth.sh

#!/bin/bash
service bluetooth restart

Ensuite (à partir de Answer ) créez un script dans le répertoire sleep /lib/systemd/system-sleep/00restart-bluetooth.sh

#!/bin/sh
if [ $1 = post ] && [ $2 = suspend ]
then /usr/local/sbin/restart-bluetooh.sh
fi

Assurez-vous ensuite que le script est exécutable

chmod a+x /lib/systemd/system-sleep/00restart-bluetooh.sh

Cela fonctionne à chaque fois que vous réveillez votre machine. Cependant, je n'ai pas essayé avec le verrouillage du mot de passe désactivé.

3
Kevin Garubba