কোনও Android ডিভাইস অক্ষম করার জন্য কীভাবে কোনও উদেব বিধি তৈরি করবেন?


8

আমার একটি এইচটিসি অ্যান্ড্রয়েড ফোন রয়েছে।

আমি যখনই এটি কম্পিউটারের সাথে সংযোগ করি তখনই আমি একটি বার্তা পাই:

Android Phone: Could not open MTP device "[usb:002,003]"

সংখ্যাগুলি ভিন্ন হতে পারে। তবে ফোনটি সঠিকভাবে সংযোগ দেয়।

usb-devices আউটপুট

T:  Bus=02 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 28 Spd=480 MxCh= 0
D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=0bb4 ProdID=0f91 Rev=02.33
S:  Manufacturer=HTC
S:  Product=Android Phone
S:  SerialNumber=FA41BWB00560
C:  #Ifs= 2 Cfg#= 1 Atr=c0 MxPwr=500mA
I:  If#= 0 Alt= 0 #EPs= 3 Cls=06(still) Sub=01 Prot=01 Driver=usbfs
I:  If#= 1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=00 Driver=(none)

lsusb

Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 002 Device 002: ID 048d:1336 Integrated Technology Express, Inc. SD/MMC Cardreader
Bus 002 Device 004: ID 0bb4:0f91 HTC (High Tech Computer Corp.) 
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 002: ID 04b8:0898 Seiko Epson Corp. 
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 002: ID 046d:c05a Logitech, Inc. M90/M100 Optical Mouse
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

lsusb -t

/:  Bus 07.Port 1: Dev 1, Class=root_hub, Driver=ohci-pci/2p, 12M
/:  Bus 06.Port 1: Dev 1, Class=root_hub, Driver=ohci-pci/3p, 12M
/:  Bus 05.Port 1: Dev 1, Class=root_hub, Driver=ohci-pci/3p, 12M
/:  Bus 04.Port 1: Dev 1, Class=root_hub, Driver=ohci-pci/3p, 12M
    |__ Port 1: Dev 2, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M
/:  Bus 03.Port 1: Dev 1, Class=root_hub, Driver=ohci-pci/3p, 12M
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/6p, 480M
    |__ Port 1: Dev 4, If 0, Class=Imaging, Driver=usbfs, 480M
    |__ Port 1: Dev 4, If 1, Class=Vendor Specific Class, Driver=, 480M
    |__ Port 3: Dev 2, If 0, Class=Mass Storage, Driver=usb-storage, 480M
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/6p, 480M
    |__ Port 2: Dev 2, If 0, Class=Vendor Specific Class, Driver=, 480M
    |__ Port 2: Dev 2, If 1, Class=Printer, Driver=usblp, 480M
    |__ Port 2: Dev 2, If 2, Class=Mass Storage, Driver=usb-storage, 480M

udevadm info -q all -n /dev/bus/usb/002/004

P: /devices/pci0000:00/0000:00:13.2/usb2/2-1
N: bus/usb/002/004
S: libmtp-2-1
E: BUSNUM=002
E: COLORD_DEVICE=1
E: COLORD_KIND=camera
E: DEVLINKS=/dev/libmtp-2-1
E: DEVNAME=/dev/bus/usb/002/004
E: DEVNUM=004
E: DEVPATH=/devices/pci0000:00/0000:00:13.2/usb2/2-1
E: DEVTYPE=usb_device
E: DRIVER=usb
E: GPHOTO2_DRIVER=PTP
E: ID_BUS=usb
E: ID_FOR_SEAT=usb-pci-0000_00_13_2-usb-0_1
E: ID_GPHOTO2=1
E: ID_MEDIA_PLAYER=1
E: ID_MODEL=Android_Phone
E: ID_MODEL_ENC=Android\x20Phone
E: ID_MODEL_ID=0f91
E: ID_MTP_DEVICE=1
E: ID_PATH=pci-0000:00:13.2-usb-0:1
E: ID_PATH_TAG=pci-0000_00_13_2-usb-0_1
E: ID_REVISION=0233
E: ID_SERIAL=HTC_Android_Phone_FA41BWB00560
E: ID_SERIAL_SHORT=FA41BWB00560
E: ID_USB_INTERFACES=:060101:ffff00:
E: ID_VENDOR=HTC
E: ID_VENDOR_ENC=HTC
E: ID_VENDOR_FROM_DATABASE=HTC (High Tech Computer Corp.)
E: ID_VENDOR_ID=0bb4
E: MAJOR=189
E: MINOR=131
E: PRODUCT=bb4/f91/233
E: SUBSYSTEM=usb
E: TAGS=:seat:uaccess:
E: TYPE=0/0/0
E: USEC_INITIALIZED=611981507

dmesg

[   40.632283] usb 2-1: new high-speed USB device number 3 using ehci-pci
[   40.765458] usb 2-1: New USB device found, idVendor=0bb4, idProduct=0f91
[   40.765469] usb 2-1: New USB device strings: Mfr=2, Product=3, SerialNumber=4
[   40.765475] usb 2-1: Product: Android Phone
[   40.765480] usb 2-1: Manufacturer: HTC
[   40.765485] usb 2-1: SerialNumber: FA41BWB00560
[   40.766646] usb-storage 2-1:1.1: USB Mass Storage device detected
[   40.767102] scsi host10: usb-storage 2-1:1.1
[   40.864690] usb 2-1: USB disconnect, device number 3
[   41.613079] usb 2-1: new high-speed USB device number 4 using ehci-pci
[   41.746616] usb 2-1: New USB device found, idVendor=0bb4, idProduct=0f91
[   41.746626] usb 2-1: New USB device strings: Mfr=2, Product=3, SerialNumber=4
[   41.746633] usb 2-1: Product: Android Phone
[   41.746638] usb 2-1: Manufacturer: HTC
[   41.746643] usb 2-1: SerialNumber: FA41BWB00560
[  101.942087] usb 2-1: reset high-speed USB device number 4 using ehci-pci

আমি আরও দেখতে পেলাম যে ফোন সংযুক্ত হওয়ার পরে অল্প সময়ের জন্য একটি ইউএসবি-স্টোরেজ ডিভাইস ঘোষণা করা হয়

I:  If#= 0 Alt= 0 #EPs= 3 Cls=06(still) Sub=01 Prot=01 Driver=usbfs
I:  If#= 1 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage

তারপরে এটি সংযোগ বিচ্ছিন্ন হয়ে যায় এবং শ্রেণি পরিবর্তিত হয় ff

I:  If#= 0 Alt= 0 #EPs= 3 Cls=06(still) Sub=01 Prot=01 Driver=usbfs
I:  If#= 1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=00 Driver=(none)

দয়া করে আমার জন্য নিম্নলিখিতটি করুন: 1) lsusbএবং আপনার ডিভাইস বা আপনার ডিভাইস (বাস এবং ডিভাইস) সন্ধান করুন। 2) কমান্ডটি শুরু করুন udevadm info -q all -n /dev/bus/usb/your_bus_id/your_device_idএবং বাস এবং ডিভাইস ব্যবহার করুন। আপনার প্রশ্নের মধ্যে দ্বিতীয় পদক্ষেপে কমান্ডের আউটপুট যুক্ত করুন।
এবি

ঠিক আছে এবং আউটপুটও lsusb, আমার আপনার ফোনের কেবলমাত্র অংশটি প্রয়োজন
এবি

আমি এটি যুক্ত করব, তবে আপনি ভিআইডি এবং পিআইডি ভিতরে দেখতে পাবেন usb-devices। @ এএবি
পাইলট 6

আমি প্রথম মন্তব্যটি দেখতে পেলাম না। এটিও যুক্ত হয়েছে।
পাইলট 6

1
আমি নিশ্চিত নই যে এগুলি আসলে দুটি ইউএসবি ডিভাইস।
এবি

উত্তর:


6

dmesgআউটপুট থেকে , এটি স্পষ্ট যে ফোনটি দুটিবার সংযুক্ত হয়েছে।

  • [40.632283] 1 ম ইউএসবি বাস 2 ডিভ 3 হিসাবে সংযুক্ত
  • [40.864690] সংযোগ বিচ্ছিন্ন হয়েছে
  • [41.613079] ২ য় স্থানে ইউএসবি বাস 2 ডিভ 4 হিসাবে সংযুক্ত

সমস্যা হল:

  • উভয় ফোন সংযোগ মোড একই বৈশিষ্ট্য idVendor/ idProduct/ ব্যবহার করছে bcdDevice

  • libmtp udev 'র শুধুমাত্র ব্যবহার idVendor/ idProductঅ গুরুত্বপূর্ণ / সাধারণ গুনাবলী ছাড়াও ফিল্টার ডিভাইস ACTION!="add", ENV{MAJOR}!="?*"এবং SUBSYSTEM=="usb"

  • libmtp udev নিয়মগুলি ব্যবহার করে ATTR(না ATTRS), এটি ঠিক এই ডিভাইস নোডকে লক্ষ্য করে /devices/pci0000:00/0000:00:13.2/usb2/2-1। সুতরাং আমরা ইন্টারফেস নোডের বিশদটি ব্যবহার করতে পারছি না কারণ তারা এগুলির একটি শিশু নোড।

যা চলছে তা পেতে, ব্যবহার করুন udevadm monitor। বিবরণ ছাড়াই কেবল ইভেন্টগুলি দেখতে।

  1. ফোনটি আনপ্লাগ করুন
  2. টার্মিনাল খুলুন এবং চালান udevadm monitor -u, -uকেবল ইউডিইভি ইভেন্টগুলি প্রদর্শন করতে (পরিষ্কার আউটপুট জন্য)
  3. ফোনটি প্লাগ করুন এবং জিনিসগুলি স্থির হওয়া পর্যন্ত অপেক্ষা করুন
  4. Ctrl+ Cনিরীক্ষণ বন্ধ করতে

udevadm monitor -u -pপরিবর্তে বিশদ (পরিবেশগত বৈশিষ্ট্য) ব্যবহার করুন এবং সেই নোডে আউটপুট তুলনা করুন:

  • UDEV [107.024195] add /devices/pci0000:00/0000:00:13.2/usb2/2-1 (usb)
  • UDEV [107.998137] add /devices/pci0000:00/0000:00:13.2/usb2/2-1 (usb)

পার্থক্য লক্ষ্য করুন ID_USB_INTERFACES

অন্য পরিষ্কার উপায়, কেবল আমাদের যা প্রয়োজন তা সংগ্রহ করার জন্য একটি উদেব নিয়ম ব্যবহার করে:

  1. /lib/udev/rules.d/69-libmtp.rulesঠিক পরে একটি নিয়ম যুক্ত করুন LABEL="libmtp_usb_rules":

    ATTR{idVendor}=="0bb4", ATTR{idProduct}=="0f91", RUN+="/bin/sh -c 'env >> /home/username/udev-phone-mtp_%E{SEQNUM}.log'"
    
  2. নিয়মগুলি পুনরায় লোড করুন

    sudo udevadm control -R
    
  3. একবার ফোন রিপ্লাগ করুন।

  4. এই নিয়মটি দু'বার ট্রিগার করা উচিত। এই নোডে আউটপুট তুলনা:

    diff udev-phone-mtp_*.log

    এনে দেওয়া উচিত: (এটি কেবল আকর্ষণীয় অংশ)

    < ID_USB_INTERFACES=:060101:080650:
    ---
    > ID_USB_INTERFACES=:060101:ffff00:
    

ঠিক কীভাবে পাইলট 6 (ওপি) এটি সংযুক্ত usb-devicesহওয়ার আগে এটি ব্যবহার করতে পারে ।


আমি এই নিয়মটি যুক্ত করার পরামর্শ দিচ্ছি /lib/udev/rules.d/69-libmtp.rules, ঠিক এর পরে LABEL="libmtp_usb_rules":

ATTR{idVendor}=="0bb4", ATTR{idProduct}=="0f91", ENV{ID_USB_INTERFACES}==":060101:080650:", GOTO="libmtp_rules_end"

এই চ্যাট আলোচনা chat.stackexchange.com/rooms/28790/… সম্পর্কিত। প্রতিবেদন করা হয়েছে: প্রথমবার এটি ভালভাবে কাজ করেছে দ্বিতীয়বার আনপ্লাগ করার পরে একটি ত্রুটি হয়েছিল পরে বিলম্বের পরে খোলা হয়েছিল।
user.dz

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

1
তবে এটি সম্পর্কিত বলে মনে হচ্ছে না, কারণ আমি আপনার লাইনটি মন্তব্য করেছি এবং বিলম্ব এখনও রয়েছে। ফোনটি লঞ্চারে উপস্থিত হয় তবে এটি কিছু সময়ের জন্য মাউন্ট করতে পারে না।
পাইলট

বিলম্ব উবুন্টু সম্পর্কিত নয়। এটি একটি অ্যান্ড্রয়েড বাগ। আমি একটি কম্পিউটার থেকে ফোনটি প্লাগ করে অন্য কম্পিউটারে সংযুক্ত করেছি। একই বিলম্ব আছে।
পাইলট

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