J'essaie d'empêcher le gestionnaire de modem de fonctionner lorsque je branche mon téléphone portable sur un port USB.
J'ai essayé d'ajouter une règle personnalisée avec udev, mais mes règles personnalisées semblent ignorées. J'ai créé un fichier /etc/udev/rules.d/99-mm-usb-device-blacklist.rules
qui contient
# LG Phone
ATTRS{idVendor}=="1004", ENV{ID_MM_DEVICE_IGNORE}="1"
Et pourtant, lorsque je branche le téléphone et vérifie dmesg, voici ce que j'obtiens:
[ 1809.761940] usb 3-1: new high-speed USB device number 11 using xhci_hcd
[ 1809.778662] usb 3-1: New USB device found, idVendor=1004, idProduct=61fc
[ 1809.778670] usb 3-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 1809.778674] usb 3-1: Product: B Project USB Device
[ 1809.778677] usb 3-1: Manufacturer: LG Electronics. Inc
[ 1809.778680] usb 3-1: SerialNumber: XXXXXXXXXXXXXXXXX
[ 1809.779501] cdc_acm 3-1:1.0: This device cannot do calls on its own. It is not a modem.
[ 1809.779584] cdc_acm 3-1:1.0: ttyACM0: USB ACM device
[ 1809.780899] cdc_ether 3-1:1.3 usb0: register 'cdc_ether' at usb-0000:00:14.0-1, CDC Ethernet Device, 6e:34:73:4f:68:4c
[ 1809.781454] scsi8 : usb-storage 3-1:1.5
[ 1809.807331] IPv6: ADDRCONF(NETDEV_UP): usb0: link is not ready
[ 1809.816566] IPv6: ADDRCONF(NETDEV_UP): usb0: link is not ready
[ 1809.816759] IPv6: ADDRCONF(NETDEV_UP): usb0: link is not ready
J'ai également essayé l'édition, /lib/udev/rules.dev/77-mm-usb-device-blacklist.rules
mais cela n'a pas fonctionné non plus. Qu'est-ce que je rate? Quelle serait une étape utile pour déboguer cela?
Mise à jour: l'exécution udevadm info --export-db
montre que la règle udev est en cours de mise à jour. La sortie pertinente est:
P: /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.7
N: bus/usb/002/012
E: BUSNUM=002
E: DEVNAME=/dev/bus/usb/002/012
E: DEVNUM=012
E: DEVPATH=/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.7
E: DEVTYPE=usb_device
E: DRIVER=usb
E: ID_BUS=usb
E: ID_MM_DEVICE_IGNORE=1
E: ID_MODEL=B_Project_USB_Device
E: ID_MODEL_ENC=B\x20Project\x20USB\x20Device
E: ID_MODEL_ID=61fc
E: ID_REVISION=0216
E: ID_SERIAL=LG_Electronics._Inc_B_Project_USB_Device_XXXXXXXXXXXXX
E: ID_SERIAL_SHORT=XXXXXXXXXXXX
E: ID_USB_INTERFACES=:020201:0a0000:ffffff:020600:080650:
E: ID_VENDOR=LG_Electronics._Inc
E: ID_VENDOR_ENC=LG\x20Electronics.\x20Inc
E: ID_VENDOR_ID=1004
E: MAJOR=189
E: MINOR=139
E: PRODUCT=1004/61fc/216
E: SUBSYSTEM=usb
E: TYPE=239/2/1
E: UDEV_LOG=7
E: USEC_INITIALIZED=5987581808
Le gestionnaire de modem doit donc ignorer le périphérique. Et pourtant, mon ordinateur continue d'essayer d'initialiser une connexion réseau via mon téléphone chaque fois que je le branche sur le port USB. Y a-t-il un autre programme que udev lance?
la source
ID_MM_CANDIDATE
n'apparaît pas dans la sortie du périphérique USB, mais il existe une entrée distincte dans la sortie de la base de données pour le périphérique TTY, et elle contient les deuxID_MM_CANDIDATE=1
etID_MM_DEVICE_IGNORE=1
. Les journaux de débogage de Modem Manager montrent qu'il teste bien le périphérique.Réponses:
Bien qu'il puisse y avoir un moyen de le faire
udev
, j'ai trouvé une solution de travail beaucoup plus simple à cette question AskUbuntu .Pour résumer, vous pouvez dire à Network Manager de ne pas gérer certains périphériques en ajoutant une ligne à son fichier .conf.
Tout d'abord, recherchez l'adresse mac de votre téléphone portable. Exécutez à
dmesg
partir du terminal après l'avoir branché; l'une des impressions devrait avoir le mac. La ligne pour moi était:Ensuite, ouvrez
/etc/NetworkManager/NetworkManager.conf
avec des privilèges de super utilisateur et ajoutez le mac de votre téléphone en tant qu'appareil non géré. Ceci est monNetworkManager.conf
; J'ai ajouté les deux dernières lignes.la source
Modem Manager peut être configuré pour utiliser différentes politiques de filtrage , et les balises udev comme celles-ci
ID_MM_DEVICE_IGNORE
n'ont aucun effet sous lastrict
politique de filtrage.Vous pouvez déterminer la stratégie que Modem Manager utilise sur votre système en affichant son état:
Cela montre également que le fichier de service correspondant est
/lib/systemd/system/ModemManager.service
. Nous pouvons modifier ce fichier de différentes manières pour désactiver la vérification d'un périphérique particulier.Pour utiliser une politique différente qui fera référence aux règles de la liste noire udev, nous pouvons changer la commande dans le service:
Les options sont
default
(utilisez simplement les règles de la liste noire) ouparanoid
(commestrict
mais utilisez également les règles de la liste noire). La documentation mentionne que cela n'est pas recommandé car la prise en charge des règles de liste noire pourrait être obsolète à l'avenir.Une autre option consiste à filtrer une classe de périphériques à l'aide de plusieurs variables d'environnement spécifiques à TTY . Cela peut être réalisé en ajoutant une ligne à la
[Service]
section du fichier de service. Par exemple, pour interdire le sondage des appareils ACM TTY:Après avoir modifié le fichier de service, rechargez la
systemctl
configuration et redémarrez ModemManager:À des fins de débogage, il peut être utile de regarder les journaux du gestionnaire de modem lors de la connexion de votre appareil. Pour activer la journalisation du débogage, exécutez:
Pour regarder les messages du journal de filtrage, exécutez:
Maintenant, lorsque vous connectez votre appareil, vous devriez voir des lignes comme:
Pour remettre la journalisation ModemManager à son état antérieur, exécutez:
la source
(juste pour la science, puisque vous avez déjà résolu votre problème ...)
udev lit / exécute ses règles dans l'ordre alphabétique [1].
Cela pourrait signifier que vos paramètres doivent être remplacés par NetworkManager, c'est votre règle est inutile.
Si vous renommez votre règle de
99-
à,99999-
ce changement vous aide-t-il?[1] /unix/204979/why-do-the-rules-in-udev-rules-d-have-numbers-in-front-of-them
la source
Cette solution m'aide pour ModemManager 1.10.0 (Ubuntu 18.04)
ModemManager -V
Pour en savoir plus: balises udev courantes
Créez un fichier
/etc/udev/rules.d/49-stm32.rules
et ajoutez ceci:Après avoir enregistré le fichier et exécuté:
sudo udevadm control --reload-rules
et (peut-être que ce n'est pas nécessaire):
sudo systemctl restart ModemManager.service
Après avoir reconnecté le périphérique USB (retirez-le physiquement et insérez-le dans le port USB) et profitez-en.
la source