udev বিধি অবহেলিত বলে মনে হচ্ছে; ডিভাইস দখল করা থেকে মডেম ম্যানেজারকে আটকাতে পারে না


17

আমি যখন আমার সেল ফোনটি একটি ইউএসবি পোর্টে প্লাগ করি তখন মডেম ম্যানেজারকে চলমান থেকে রোধ করার চেষ্টা করছি।

আমি উদেবের সাথে একটি কাস্টম বিধি যুক্ত করার চেষ্টা করেছি, তবে আমার কাস্টম বিধিগুলি এড়ানো হবে বলে মনে হচ্ছে। আমি একটি ফাইল তৈরি করেছি /etc/udev/rules.d/99-mm-usb-device-blacklist.rulesযা এতে রয়েছে

# LG Phone
ATTRS{idVendor}=="1004", ENV{ID_MM_DEVICE_IGNORE}="1"

এবং তবুও আমি যখন ফোনটি প্লাগ ইন করি এবং ডেমেসেগ চেক করি তখন আমি যা পাই তা হ'ল:

[ 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

আমি সম্পাদনার চেষ্টা করেছি /lib/udev/rules.dev/77-mm-usb-device-blacklist.rulesকিন্তু এটিও কার্যকর হয়নি। আমি কী মিস করছি? এটি ডিবাগ করতে সহায়ক পদক্ষেপটি কী হতে পারে?

আপডেট: চলমান udevadm info --export-dbদেখায় যে উদেব নিয়ম আপডেট করা হচ্ছে। সম্পর্কিত ফলাফল:

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

সুতরাং মডেম পরিচালকের ডিভাইসটিকে উপেক্ষা করা উচিত। এবং তবুও আমার কম্পিউটার যখনই আমি এটি ইউএসবি পোর্টে প্লাগ করে তখনই আমার ফোনের মাধ্যমে একটি নেটওয়ার্ক সংযোগের সূচনা করার চেষ্টা চালিয়ে যায়। উদেব আর একটি প্রোগ্রাম চালু করছে?


1
প্রশ্নযুক্ত ডিভাইসটি এটি কী করছে তা পরীক্ষা করতে আপনি মোডেম ম্যানেজার --debug চালিয়েছেন? ID_MM_CANDIDATE = 1 এ এন্ট্রিতে না দেখে আমিও কিছুটা অবাক হয়েছি - সম্ভবত এটি মডেম ম্যানেজারের পৃথক কোডপথ স্ক্যানিং ডিভাইস যা এই বৈশিষ্ট্যটিকে সম্মান করে না?
কিকো

@ কিকো, আমি প্রশ্ন লেখকের মত একই সমস্যা আছে। ID_MM_CANDIDATEইউএসবি ডিভাইস আউটপুটটিতে উপস্থিত হয় না, তবে টিটিওয়াই ডিভাইসের জন্য ডাটাবেস আউটপুটটিতে একটি পৃথক এন্ট্রি রয়েছে এবং এটি উভয়ই ID_MM_CANDIDATE=1এবং ID_MM_DEVICE_IGNORE=1। মডেম ম্যানেজারের ডিবাগ লগগুলি দেখায় যে এটি সত্যই ডিভাইসটির অনুসন্ধান করছে।
ইয়ান ম্যাকিননন

উত্তর:


7

এটি করার কোনও উপায় থাকতে পারে udev, তবে আমি এই আস্কউবুন্টু প্রশ্নটিতে একটি আরও সহজ কাজ সমাধান খুঁজে পেয়েছি ।

সংক্ষিপ্তসার হিসাবে, আপনি নেটওয়ার্ক ম্যানেজারকে তার .conf ফাইলটিতে একটি লাইন যুক্ত করে নির্দিষ্ট ডিভাইস পরিচালনা না করার জন্য বলতে পারেন।

প্রথমে আপনার সেল ফোনের ম্যাক ঠিকানাটি সন্ধান করুন। dmesgআপনি এটি প্লাগ ইন করার পরে টার্মিনাল থেকে চালান ; মুদ্রণ আউটগুলির মধ্যে একটিতে ম্যাক থাকা উচিত। আমার জন্য লাইনটি ছিল:

[ 4691.112016] cdc_ether 3-1:1.3 usb0: register 'cdc_ether' at usb-0000:00:14.0-1, CDC Ethernet Device, de:1a:28:c7:db:e6

এরপরে, /etc/NetworkManager/NetworkManager.confসুপার ব্যবহারকারীর প্রাইভেলিজগুলি দিয়ে খুলুন এবং আপনার ফোনের ম্যাকটি পরিচালনা না করা ডিভাইস হিসাবে যুক্ত করুন। এটি আমার NetworkManager.conf; আমি শেষ দুটি লাইন যুক্ত করেছি।

[main]
plugins=ifupdown,keyfile
dns=dnsmasq

[ifupdown]
managed=false

[keyfile]
unmanaged-devices=mac:de:1a:28:c7:db:e6

6

মডেম ম্যানেজারকে বিভিন্ন ফিল্টার নীতিগুলি ব্যবহার করার জন্য কনফিগার করা যেতে পারে এবং ইউদেব ট্যাগগুলি যেমন ফিল্টার নীতিমালার ID_MM_DEVICE_IGNOREঅধীনে কোনও প্রভাব ফেলে না strict

আপনার সিস্টেমে মডেম পরিচালক যে নীতিটি ব্যবহার করছেন সেটির অবস্থানটি দেখে আপনি তা নির্ধারণ করতে পারেন:

> sudo systemctl status ModemManager
● ModemManager.service - Modem Manager
   Loaded: loaded (/lib/systemd/system/ModemManager.service...
   Active: active (running) since ...
   ...
   CGroup: /system.slice/ModemManager.service
           └─644 /usr/sbin/ModemManager --filter-policy=strict

এটি প্রাসঙ্গিক পরিষেবা ফাইলটিও দেখায় /lib/systemd/system/ModemManager.service। কোনও নির্দিষ্ট ডিভাইসের অনুসন্ধান নিষ্ক্রিয় করতে আমরা এই ফাইলটি বিভিন্ন উপায়ে সম্পাদনা করতে পারি।

একটি ভিন্ন নীতি ব্যবহার করার জন্য যা উদেব কালো তালিকাভুক্ত বিধিগুলিকে বোঝায় আমরা পরিষেবাতে আদেশটি পরিবর্তন করতে পারি:

ExecStart=/usr/sbin/ModemManager --filter-policy=default

বিকল্পগুলি defaultহ'ল (কেবল ব্ল্যাকলিস্টের নিয়মগুলি ব্যবহার করুন) বা paranoid( ব্ল্যাকলিস্টের নিয়মগুলি পছন্দ করুন strictতবে ব্যবহার করুন)। ডকুমেন্টেশন উল্লেখ এই কালোতালিকা নিয়ম জন্য সমর্থন ভবিষ্যতে অচল হতে পারে সুপারিশ করা হয়।

অন্য বিকল্পটি হ'ল বেশ কয়েকটি টিটিওয়াই-নির্দিষ্ট পরিবেশের ভেরিয়েবল ব্যবহার করে এক শ্রেণির ডিভাইস ফিল্টার করা । [Service]পরিষেবা ফাইলের বিভাগে একটি লাইন যুক্ত করে এটি অর্জন করা যেতে পারে । উদাহরণস্বরূপ, ACM TTY ডিভাইসগুলির অনুসন্ধান নিষিদ্ধ করতে:

[Service]
...
Environment="MM_FILTER_RULE_TTY_ACM_INTERFACE=0"

পরিষেবা ফাইল পরিবর্তন করার পরে, systemctlকনফিগারেশনটি পুনরায় লোড করুন এবং মোডেমম্যানেজার পুনরায় চালু করুন:

sudo systemctl daemon-reload
sudo systemctl restart ModemManager

ডিবাগিংয়ের উদ্দেশ্যে আপনার ডিভাইসটি সংযোগ করার সময় মডেম ম্যানেজার লগগুলি দেখার জন্য এটি কার্যকর হতে পারে। ডিবাগ লগিং সক্ষম করতে, চালান:

sudo mmcli -G DEBUG;

ফিল্টার লগ বার্তা দেখতে, চালান:

journalctl -f | grep "ModemManager.*\[filter\]"

এখন আপনি যখন আপনার ডিভাইসটি সংযুক্ত করবেন তখন আপনার মতো লাইনগুলি দেখতে হবে:

# Device allowed with strict filter policy
[filter] (tty/...): port allowed:... 

# Device filtered with default filter policy and udev tags
[filter] (tty/...): port filtered: device is blacklisted

# Device filtered with strict filter policy and environment variables
[filter] (tty/...) port filtered: forbidden

মোডেম ম্যানেজার লগিংটিকে তার পূর্বের অবস্থায় ফিরিয়ে দিতে, চালান:

sudo mmcli -G ERR

ব্ল্যাকলিস্ট আর ব্যবহার করা হচ্ছে না, আমাদের এমডির মাধ্যমে আবার অনুসন্ধান করা আরডুইনো ডিভাইসগুলির সাথে আমাদের একই রকম সমস্যা হচ্ছে। আমি এমএম প্রবাহ এবং ডেবিয়ান এ সম্পর্কে কিছু সমস্যা খুলেছি, gitlab.freedesktop.org/momot-broadband/ModemManager/issues/127 এবং bugs.debian.org/cgi-bin/bugreport.cgi?bug=930264 দেখুন
ম্যাথিজস কুইজমান

0

(কেবলমাত্র বিজ্ঞানের জন্য, যেহেতু আপনি ইতিমধ্যে আপনার সমস্যা সমাধান করেছেন ...)

ইউদেব বর্ণমালা অনুসারে এর নিয়মগুলি পড়ে / সম্পাদন করে [1]।
এর অর্থ হতে পারে যে আপনার সেটিংসটি নেটওয়ার্কম্যানেজারের ওভাররাইট করা উচিত, এটাই আপনার নিয়ম অকেজো।

আপনার কাছ থেকে আপনার নিয়ম নামান্তর যদি 99-করতে 99999-এই পরিবর্তনের সাহায্য করেন?


[1] /unix/204979/why-do-the-rules-in-udev-rules-d-have-numbers-in-front-of-them


আমার এই সমস্যাটি 5 বছর আগে হয়েছিল এবং আমি এখন যে হার্ডওয়্যারটি নিয়ে সমস্যাটি অনুভব করেছি তার কোনও আর নেই। আমি ফাইলের নামগুলির সাথে জগাখিচুড়ি মনে পড়ছে বলে মনে হচ্ছে তবে সঠিক পরিস্থিতি মনে করতে পারছি না।
সুপারডেস্ক

0

এটি সমাধানটি মডেম ম্যানেজার 1.10.0 (উবুন্টু 18.04) এর জন্য আমাকে সহায়তা করে
ModemManager -V

আপনি আরও শিখতে পারেন: সাধারণ ইউদেব ট্যাগ

একটি ফাইল তৈরি করুন /etc/udev/rules.d/49-stm32.rulesএবং এটি যুক্ত করুন:

# 0483:5740 - STM32 in USB Serial Mode (CN5)
ATTRS{idVendor}=="0483", ATTRS{idProduct}=="5740", ENV{ID_MM_DEVICE_IGNORE}="1"
ATTRS{idVendor}=="0483", ATTRS{idProduct}=="5740", ENV{ID_MM_TTY_BLACKLIST}="1"
ATTRS{idVendor}=="0483", ATTRS{idProduct}=="5740", ENV{MTP_NO_PROBE}="1"
ATTRS{idVendor}=="0483", ATTRS{idProduct}=="5740", ENV{ID_MM_PORT_IGNORE}="1"
ATTRS{idVendor}=="0483", ATTRS{idProduct}=="5740", ENV{ID_MM_TTY_MANUAL_SCAN_ONLY}="1"

ফাইল সংরক্ষণ এবং চালানোর পরে:
sudo udevadm control --reload-rules

এবং (সম্ভবত এটি প্রয়োজনীয় নয়):
sudo systemctl restart ModemManager.service

ইউএসবি ডিভাইসটি পুনরায় সংযোগের পরে (শারীরিকভাবে টানুন এবং এটি ইউএসবি বন্দরে টানুন) এবং উপভোগ করুন।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.