Ich versuche zu verhindern, dass der Modem-Manager ausgeführt wird, wenn ich mein Handy an einen USB-Anschluss anschließe.
Ich habe versucht, mit udev eine benutzerdefinierte Regel hinzuzufügen, aber meine benutzerdefinierten Regeln scheinen ignoriert zu werden. Ich habe eine Datei erstellt, /etc/udev/rules.d/99-mm-usb-device-blacklist.rules
die enthält
# LG Phone
ATTRS{idVendor}=="1004", ENV{ID_MM_DEVICE_IGNORE}="1"
Und doch, wenn ich das Telefon einstecke und dmesg überprüfe, bekomme ich Folgendes:
[ 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
Ich habe auch versucht zu bearbeiten /lib/udev/rules.dev/77-mm-usb-device-blacklist.rules
aber das hat auch nicht funktioniert. Was vermisse ich? Was wäre ein hilfreicher Schritt beim Debuggen?
Update: Beim Ausführen udevadm info --export-db
wird angezeigt, dass die udev-Regel aktualisiert wird. Die relevante Ausgabe ist:
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
Der Modem-Manager sollte das Gerät also ignorieren. Trotzdem versucht mein Computer immer wieder, eine Netzwerkverbindung über mein Telefon herzustellen, wenn ich es an den USB-Anschluss anschließe. Gibt es ein anderes Programm, das udev startet?
quelle
ID_MM_CANDIDATE
wird in der USB-Geräteausgabe nicht angezeigt, es gibt jedoch einen separaten Eintrag in der Datenbankausgabe für das TTY-Gerät, und dieser hat sowohlID_MM_CANDIDATE=1
als auchID_MM_DEVICE_IGNORE=1
. Modem Manager-Debugprotokolle zeigen, dass das Gerät tatsächlich überprüft wird.Antworten:
Obwohl es einen Weg gibt, dies zu tun
udev
, habe ich bei dieser AskUbuntu- Frage eine viel einfachere Lösung gefunden .Zusammenfassend können Sie Network Manager anweisen, bestimmte Geräte nicht zu verwalten, indem Sie der CONF-Datei eine Zeile hinzufügen.
Ermitteln Sie zunächst die MAC-Adresse Ihres Mobiltelefons. Führen Sie
dmesg
das Terminal aus, nachdem Sie es angeschlossen haben. Einer der Ausdrucke sollte den Mac haben. Die Linie für mich war:Öffnen Sie anschließend
/etc/NetworkManager/NetworkManager.conf
mit Superuser-Berechtigungen und fügen Sie den Mac Ihres Telefons als nicht verwaltetes Gerät hinzu. Das ist meinNetworkManager.conf
; Ich habe die letzten beiden Zeilen hinzugefügt.quelle
Modem Manager kann so konfiguriert werden, dass unterschiedliche Filterrichtlinien verwendet werden , und die udev-Tags, z. B.,
ID_MM_DEVICE_IGNORE
haben unter dem keine Auswirkungstrict
Filterrichtlinie.Sie können bestimmen, welche Richtlinie Modem Manager auf Ihrem System verwendet, indem Sie den Status anzeigen:
Dies zeigt auch, dass die relevante Servicedatei ist
/lib/systemd/system/ModemManager.service
. Wir können diese Datei auf verschiedene Arten bearbeiten, um die Überprüfung eines bestimmten Geräts zu deaktivieren.Um eine andere Richtlinie zu verwenden, die sich auf die Regeln der udev-Blacklist bezieht, können wir den Befehl im Service ändern:
Optionen sind
default
(benutze einfach die Blacklist-Regeln) oderparanoid
(strict
benutze aber auch die Blacklist-Regeln). Das Dokumentation wird darauf hingewiesen, dass dies nicht empfohlen wird, da die Unterstützung für Regeln für schwarze Listen in Zukunft möglicherweise veraltet sein wird.Eine andere Option ist das Filtern einer Geräteklasse mithilfe einer von mehreren TTY-spezifischen Umgebungsvariablen . Dies kann erreicht werden, indem eine Zeile an den
[Service]
Abschnitt der Servicedatei angehängt wird. So verhindern Sie beispielsweise das Testen von ACM TTY-Geräten:Laden Sie nach dem Ändern der Servicedatei die
systemctl
Konfiguration neu und starten Sie den ModemManager neu:Zu Debugging-Zwecken kann es nützlich sein, Modem-Manager-Protokolle zu überwachen, wenn Sie Ihr Gerät anschließen. Führen Sie Folgendes aus, um die Debugprotokollierung zu aktivieren:
Führen Sie zum Anzeigen der Filterprotokollnachrichten Folgendes aus:
Wenn Sie jetzt Ihr Gerät anschließen, sollten folgende Zeilen angezeigt werden:
Führen Sie Folgendes aus, um die ModemManager-Protokollierung auf den vorherigen Status zurückzusetzen:
quelle
(Nur aus Gründen der Wissenschaft, da Sie Ihr Problem bereits gelöst haben ...)
udev liest / führt seine Regeln in alphabetischer Reihenfolge aus [1].
Dies könnte bedeuten, dass Ihre Einstellungen in NetworkManager überschrieben werden sollten. Das ist Ihre Regel, die unbrauchbar ist.
Wenn Sie Ihre Regel von
99-
in umbenennen99999-
, hilft Ihnen diese Änderung?[1] /unix/204979/why-do-the-rules-in-udev-rules-d-have-numbers-in-front-of-em
quelle