লিনাক্সে, ইউএসবিতে সংযুক্ত একাধিক আরডুইনোস কীভাবে সনাক্ত করবেন?


17

যদি আমার কাছে লিনাক্স কম্পিউটারের সাথে ইউএসবি-র মাধ্যমে একাধিক আরডুইনো সংযুক্ত থাকে এবং তারা সেগুলি দেখায়

  • / TTY / ACM0
  • / TTY / ACM1
  • / TTY / ACM2

সিরিয়াল সংযোগের মাধ্যমে তাদের সাথে সংযোগ না রেখে কোন আর্দুইনো তা আমি কীভাবে সনাক্ত করতে পারি ? আরডুইনোতে কোনও সিরিয়াল নম্বর বা একটি অনন্য আইডি আছে?

সময় দেয়ার জন্য ধন্যবাদ.

পরিস্থিতি: ইউনো আর 3, মেগা, লিওনার্দো / টিটিএইসিএম সহ [1,2,3]

উপরে উল্লিখিত ক্রমে ডিভাইসগুলির সাথে lsusb আউটপুট:

...
বাস 001 ডিভাইস 011: আইডি 2341: 0043
বাস 001 ডিভাইস 013: আইডি 2341: 8036
...
বাস 001 ডিভাইস 014: আইডি 2341: 0042

lsusb -d বিক্রেতা: ডিভাইস -vvv প্রত্যেকটির জন্য দেখায়

ইউএনও

বাস 001 ডিভাইস 014: আইডি 2341: 0042
ডিভাইস বর্ণনাকারী:
  বিলেংথ 18
  বিডেস্কিটার টাইপ 1
  বিসিডিইউএসবি 1.10
  বিডিভাইসক্লাস 2 যোগাযোগ
  বিডিভাইসসব্লাস 0
  বিডিভাইসপ্রোটোকল 0
  bMaxPacketSize0 8
  idVendor 0x2341
  আইডিপ্রডাক্ট 0x0042
  বিসিডি ডিভাইস 0.01
  আইম্যানুচারার 1 আরডুইনো (www.arduino.cc)
  আইপ্রোডাক্ট 2
  আইশেরিয়াল 220 55330313735351910141
  bNumConfigurations 1
  কনফিগারেশন বর্ণনাকারী:
    bLength 9
    বিডিস্কিটার টাইপ 2
    ডাব্লু টোটাললাইন্থ 62
    bNumInterfaces 2
    বি-কনফিগারেশন ভ্যালু 1
    iConfigration 0
    bmAttributes 0xc0
      স্ব শক্তি চালিত
    ম্যাক্সপাওয়ার 100mA
    ইন্টারফেস বর্ণনাকারী:
      bLength 9
      বিডিস্কিটার টাইপ 4
      bInterfaceNumber 0
      বিআলটারনেটসেটিং 0
      বিএনএমএন্ডপয়েন্টস ২
      বিন্টারফেসক্লাস 2 যোগাযোগ
      BInterfaceSubClass 2 বিমূর্ত (মডেম)
      বিন্টারফেসপ্রোটোকল 1 এটি-কমান্ড (v.25ter)
      iInterface 0
      সিডিসির শিরোনাম:
        বিসিডিসিডিসি 10.01
      সিডিসি এসিএম:
        বিএমসিপাবিলিটি 0x06
          বিরতি প্রেরণ
          লাইন কোডিং এবং সিরিয়াল অবস্থা
      সিডিসি ইউনিয়ন:
        বিমাস্টার ইন্টারফেস 0
        বিস্ক্লেভ ইন্টারফেস 1
      সমাপ্তি বর্ণনাকারী:
        বি। দৈর্ঘ্য 7
        বিডিস্কিটার টাইপ 5
        #EndPointAdress 0x82 EP 2 IN
        বিএমঅ্যাট্রিবিউটস 3
          স্থানান্তর প্রকারের বাধা rupt
          সিঙ্ক টাইপ নয়
          ব্যবহারের ধরণের ডেটা
        wMaxPacketSize 0x0008 1x 8 বাইট
        দ্বিখণ্ড 255
    ইন্টারফেস বর্ণনাকারী:
      bLength 9
      বিডিস্কিটার টাইপ 4
      bInterfaceNumber 1
      বিআলটারনেটসেটিং 0
      বিএনএমএন্ডপয়েন্টস 2
      বিন্টারফেসক্লাস 10 সিডিসি ডেটা
      bInterfaceSubClass 0 অব্যবহৃত
      বিন্টারফেসপ্রোটোকল 0
      iInterface 0
      সমাপ্তি বর্ণনাকারী:
        বি। দৈর্ঘ্য 7
        বিডিস্কিটার টাইপ 5
        BEndPointAdress 0x04 EP 4 আউট
        বিএমঅ্যাট্রিবিউটস 2
          স্থানান্তর প্রকারের বাল্ক
          সিঙ্ক টাইপ নয়
          ব্যবহারের ধরণের ডেটা
        wMaxPacketSize 0x0040 1x 64 বাইট
        দ্বিখণ্ডকাল 1
      সমাপ্তি বর্ণনাকারী:
        বি। দৈর্ঘ্য 7
        বিডিস্কিটার টাইপ 5
        #EndPointAddress 0x83 EP 3 IN
        বিএমঅ্যাট্রিবিউটস 2
          স্থানান্তর প্রকারের বাল্ক
          সিঙ্ক টাইপ নয়
          ব্যবহারের ধরণের ডেটা
        wMaxPacketSize 0x0040 1x 64 বাইট
        দ্বিখণ্ডকাল 1
ডিভাইসের স্থিতি: 0x0000
  (বাস চালিত)

লিওনার্দো:

বাস 001 ডিভাইস 013: আইডি 2341: 8036
ডিভাইস বর্ণনাকারী:
  বিলেংথ 18
  বিডেস্কিটার টাইপ 1
  বিসিডিইউএসবি 2.00
  বিডিভাইসক্লাস 0 (ইন্টারফেস স্তরে সংজ্ঞায়িত)
  বিডিভাইসসব্লাস 0
  বিডিভাইসপ্রোটোকল 0
  bMaxPacketSize0 64
  idVendor 0x2341
  আইডিপ্রডাক্ট 0x8036
  বিসিডি ডিভাইস 1.00
  আইম্যানুয়াকচারার 1 আরডুইনো এলএলসি
  আইপ্রোডাক্ট 2 আরডুইনো লিওনার্দো
  আইশিরিল 0
  bNumConfigurations 1
  কনফিগারেশন বর্ণনাকারী:
    bLength 9
    বিডিস্কিটার টাইপ 2
    ডাব্লু টোটাললেন্থ 100
    bNumInterfaces 3
    বি-কনফিগারেশন ভ্যালু 1
    iConfigration 0
    বিএমএট্রিবিউটস 0x80
      (বাস চালিত)
    ম্যাক্সপাওয়ার 500 এমএ
    ইন্টারফেস অ্যাসোসিয়েশন:
      বিলেংথ 8
      বিডিস্কিটার টাইপ 11
      bFrstInterface 0
      bInterfaceCount 2
      bFunctionClass 2 যোগাযোগ
      bFunctionSubClass 2 বিমূর্ত (মডেম)
      bFunctionProtocol 1 এটি-কমান্ড (v.25ter)
      iFunction 0
    ইন্টারফেস বর্ণনাকারী:
      bLength 9
      বিডিস্কিটার টাইপ 4
      bInterfaceNumber 0
      বিআলটারনেটসেটিং 0
      বিএনএমএন্ডপয়েন্টস ২
      বিন্টারফেসক্লাস 2 যোগাযোগ
      BInterfaceSubClass 2 বিমূর্ত (মডেম)
      বিন্টারফেসপ্রোটোকল 0 কিছুই নয়
      iInterface 0
      সিডিসির শিরোনাম:
        বিসিডিসিডিসি 1.10
      সিডিসি কল পরিচালনা:
        bmCapables 0x01
          কল পরিচালনা
        বিডাটাআইন্টারফেস 1
      সিডিসি এসিএম:
        বিএমসিপাবিলিটি 0x06
          বিরতি প্রেরণ
          লাইন কোডিং এবং সিরিয়াল অবস্থা
      সিডিসি ইউনিয়ন:
        বিমাস্টার ইন্টারফেস 0
        বিস্ক্লেভ ইন্টারফেস 1
      সমাপ্তি বর্ণনাকারী:
        বি। দৈর্ঘ্য 7
        বিডিস্কিটার টাইপ 5
        #EndPointAdress 0x81 EP 1 IN
        বিএমঅ্যাট্রিবিউটস 3
          স্থানান্তর প্রকারের বাধা rupt
          সিঙ্ক টাইপ নয়
          ব্যবহারের ধরণের ডেটা
        wMaxPacketSize 0x0040 1x 64 বাইট
        দ্বিপদী 0
      সমাপ্তি বর্ণনাকারী:
        বি। দৈর্ঘ্য 7
        বিডিস্কিটার টাইপ 5
        #EndPointAddress 0x83 EP 3 IN
        বিএমঅ্যাট্রিবিউটস 2
          স্থানান্তর প্রকারের বাল্ক
          সিঙ্ক টাইপ নয়
          ব্যবহারের ধরণের ডেটা
        wMaxPacketSize 0x0040 1x 64 বাইট
        দ্বিপদী 0
    ইন্টারফেস বর্ণনাকারী:
      bLength 9
      বিডিস্কিটার টাইপ 4
      bInterfaceNumber 2
      বিআলটারনেটসেটিং 0
      বিএনএমএন্ডপয়েন্টস ২
      বিন্টারফেসক্লাস 3 হিউম্যান ইন্টারফেস ডিভাইস
      bInterfaceSubClass 0 সাবক্লাস নেই
      বিন্টারফেসপ্রোটোকল 0 কিছুই নয়
      iInterface 0
        HID ডিভাইস বর্ণনাকারী:
          bLength 9
          বিডিস্ক্রিপ্টর টাইপ 33
          বিসিডিএইচডি 1.01
          bCountryCode 0 সমর্থিত নয়
          বিএনএমডিসিপেক্টর ১
          বিডিস্ক্রিপ্টর টাইপ 34 প্রতিবেদন
          wDescriptorLength 101
          রিপোর্ট বর্ণনাকারী: (দৈর্ঘ্য 101)
            আইটেম (গ্লোবাল): ব্যবহারের পৃষ্ঠা, ডেটা = [0x01] 1
                            জেনেরিক ডেস্কটপ নিয়ন্ত্রণ
            আইটেম (স্থানীয়): ব্যবহার, ডেটা = [0x02] 2
                            মাউস
            আইটেম (প্রধান): সংগ্রহ, ডেটা = [0x01] 1
                            আবেদন
            আইটেম (স্থানীয়): ব্যবহার, ডেটা = [0x01] 1
                            ইশারা
            আইটেম (প্রধান): সংগ্রহ, তথ্য = [0x00] 0
                            শারীরিক
            আইটেম (গ্লোবাল): প্রতিবেদন আইডি, ডেটা = [0x01] 1
            আইটেম (গ্লোবাল): ব্যবহারের পৃষ্ঠা, ডেটা = [0x09] 9
                            বোতাম
            আইটেম (স্থানীয়): ব্যবহার সর্বনিম্ন, ডেটা = [0x01] 1
                            বোতাম 1 (প্রাথমিক)
            আইটেম (স্থানীয়): সর্বাধিক ব্যবহার, ডেটা = [0x03] 3
                            বাটন 3 (তৃতীয়)
            আইটেম (গ্লোবাল): লজিক্যাল মিনিমাম, ডেটা = [0x00] 0
            আইটেম (গ্লোবাল): লজিক্যাল সর্বাধিক, ডেটা = [0x01] 1
            আইটেম (গ্লোবাল): রিপোর্ট গণনা, তথ্য = [0x03] 3
            আইটেম (গ্লোবাল): রিপোর্টের আকার, ডেটা = [0x01] 1
            আইটেম (প্রধান): ইনপুট, ডেটা = [0x02] 2
                            ডেটা ভেরিয়েবল নিখরচায় No_Wrap লিনিয়ার
                            পছন্দসই_সেটেট নং_ নাল_পোস্টেশন নন_ভোলটাইল বিটফিল্ড
            আইটেম (গ্লোবাল): রিপোর্ট গণনা, ডেটা = [0x01] 1
            আইটেম (গ্লোবাল): রিপোর্টের আকার, ডেটা = [0x05] 5
            আইটেম (প্রধান): ইনপুট, ডেটা = [0x03] 3
                            কনস্ট্যান্ট ভেরিয়েবল পরম No_Wrap লিনিয়ার
                            পছন্দসই_সেটেট নং_ নাল_পোস্টেশন নন_ভোলটাইল বিটফিল্ড
            আইটেম (গ্লোবাল): ব্যবহারের পৃষ্ঠা, ডেটা = [0x01] 1
                            জেনেরিক ডেস্কটপ নিয়ন্ত্রণ
            আইটেম (স্থানীয়): ব্যবহার, ডেটা = [0x30] 48
                            দিকনির্দেশনা-এক্স
            আইটেম (স্থানীয়): ব্যবহার, ডেটা = [0x31] 49
                            দিকনির্দেশনা-ওয়াই
            আইটেম (স্থানীয়): ব্যবহার, ডেটা = [0x38] 56
                            চাকা
            আইটেম (গ্লোবাল): লজিক্যাল মিনিমাম, ডেটা = [0x81] 129
            আইটেম (গ্লোবাল): লজিক্যাল সর্বাধিক, ডেটা = [0x7f] 127
            আইটেম (গ্লোবাল): রিপোর্টের আকার, ডেটা = [0x08] 8
            আইটেম (গ্লোবাল): রিপোর্ট গণনা, তথ্য = [0x03] 3
            আইটেম (প্রধান): ইনপুট, ডেটা = [0x06] 6
                            ডেটা ভেরিয়েবল আপেক্ষিক No_Wrap লিনিয়ার
                            পছন্দসই_সেটেট নং_ নাল_পোস্টেশন নন_ভোলটাইল বিটফিল্ড
            আইটেম (প্রধান): সমাপ্তি সংগ্রহ, ডেটা = কোনওটি নয়
            আইটেম (প্রধান): সমাপ্তি সংগ্রহ, ডেটা = কোনওটি নয়

            ......

      সমাপ্তি বর্ণনাকারী:
        বি। দৈর্ঘ্য 7
        বিডিস্কিটার টাইপ 5
        #EndPointAddress 0x84 EP 4 IN
        বিএমঅ্যাট্রিবিউটস 3
          স্থানান্তর প্রকারের বাধা rupt
          সিঙ্ক টাইপ নয়
          ব্যবহারের ধরণের ডেটা
        wMaxPacketSize 0x0040 1x 64 বাইট
        দ্বিখণ্ডকাল 1
ডিভাইসের স্থিতি: 0x0000
  (বাস চালিত)

এবং মেগা 256:

বাস 001 ডিভাইস 014: আইডি 2341: 0042
ডিভাইস বর্ণনাকারী:
  বিলেংথ 18
  বিডেস্কিটার টাইপ 1
  বিসিডিইউএসবি 1.10
  বিডিভাইসক্লাস 2 যোগাযোগ
  বিডিভাইসসব্লাস 0
  বিডিভাইসপ্রোটোকল 0
  bMaxPacketSize0 8
  idVendor 0x2341
  আইডিপ্রডাক্ট 0x0042
  বিসিডি ডিভাইস 0.01
  আইম্যানুচারার 1 আরডুইনো (www.arduino.cc)
  আইপ্রোডাক্ট 2
  আইশেরিয়াল 220 55330313735351910141
  bNumConfigurations 1
  কনফিগারেশন বর্ণনাকারী:
    bLength 9
    বিডিস্কিটার টাইপ 2
    ডাব্লু টোটাললাইন্থ 62
    bNumInterfaces 2
    বি-কনফিগারেশন ভ্যালু 1
    iConfigration 0
    bmAttributes 0xc0
      স্ব শক্তি চালিত
    ম্যাক্সপাওয়ার 100mA
    ইন্টারফেস বর্ণনাকারী:
      bLength 9
      বিডিস্কিটার টাইপ 4
      bInterfaceNumber 0
      বিআলটারনেটসেটিং 0
      বিএনএমএন্ডপয়েন্টস ২
      বিন্টারফেসক্লাস 2 যোগাযোগ
      BInterfaceSubClass 2 বিমূর্ত (মডেম)
      বিন্টারফেসপ্রোটোকল 1 এটি-কমান্ড (v.25ter)
      iInterface 0
      সিডিসির শিরোনাম:
        বিসিডিসিডিসি 10.01
      সিডিসি এসিএম:
        বিএমসিপাবিলিটি 0x06
          বিরতি প্রেরণ
          লাইন কোডিং এবং সিরিয়াল অবস্থা
      সিডিসি ইউনিয়ন:
        বিমাস্টার ইন্টারফেস 0
        বিস্ক্লেভ ইন্টারফেস 1
      সমাপ্তি বর্ণনাকারী:
        বি। দৈর্ঘ্য 7
        বিডিস্কিটার টাইপ 5
        #EndPointAdress 0x82 EP 2 IN
        বিএমঅ্যাট্রিবিউটস 3
          স্থানান্তর প্রকারের বাধা rupt
          সিঙ্ক টাইপ নয়
          ব্যবহারের ধরণের ডেটা
        wMaxPacketSize 0x0008 1x 8 বাইট
        দ্বিখণ্ড 255
    ইন্টারফেস বর্ণনাকারী:
      bLength 9
      বিডিস্কিটার টাইপ 4
      bInterfaceNumber 1
      বিআলটারনেটসেটিং 0
      বিএনএমএন্ডপয়েন্টস 2
      বিন্টারফেসক্লাস 10 সিডিসি ডেটা
      bInterfaceSubClass 0 অব্যবহৃত
      বিন্টারফেসপ্রোটোকল 0
      iInterface 0
      সমাপ্তি বর্ণনাকারী:
        বি। দৈর্ঘ্য 7
        বিডিস্কিটার টাইপ 5
        BEndPointAdress 0x04 EP 4 আউট
        বিএমঅ্যাট্রিবিউটস 2
          স্থানান্তর প্রকারের বাল্ক
          সিঙ্ক টাইপ নয়
          ব্যবহারের ধরণের ডেটা
        wMaxPacketSize 0x0040 1x 64 বাইট
        দ্বিখণ্ডকাল 1
      সমাপ্তি বর্ণনাকারী:
        বি। দৈর্ঘ্য 7
        বিডিস্কিটার টাইপ 5
        #EndPointAddress 0x83 EP 3 IN
        বিএমঅ্যাট্রিবিউটস 2
          স্থানান্তর প্রকারের বাল্ক
          সিঙ্ক টাইপ নয়
          ব্যবহারের ধরণের ডেটা
        wMaxPacketSize 0x0040 1x 64 বাইট
        দ্বিখণ্ডকাল 1
ডিভাইসের স্থিতি: 0x0000
  (বাস চালিত)

lsusb -vvvবলে?
Ignacio Vazquez-Abram 20

আপনি কি একটি আনপ্লাগ করতে পারেন এবং দেখতে পাচ্ছেন কোনটি অদৃশ্য হয়ে গেছে?
বেনামে পেঙ্গুইন

1
আসলেই নয়, আমি এমন একটি রিমোট সোলার চালিত সেন্সর অ্যারের জন্য এটি করতে চাই যা এটি পুনরায় চালু হওয়ার পরে কারও পক্ষে খুব বেশি দূরে থাকবে।
ভ্লাদ খ।

ইগনাসিও ভাস্কেজ-আব্রামস - আমি কীভাবে lsusb -vvv থেকে / dev / ttyACM <x> তথ্য মানচিত্র করতে পারি? আমি কি পার্স করতে পারি lsusb আউটপুটে কিছু আছে? ধারনাটির জন্য তোমাকে ধন্যবাদ!
ভ্লাদ খ।

আপনার সাথে আর আর্দুইনো রয়েছে যা আপনি আউটপুটটির সাথে তুলনা করতে পারেন?
ইগনাসিও ওয়াজকেজ-আব্রামস

উত্তর:


6

ধরে নিচ্ছি আপনার ডিস্ট্রো ব্যবহার করছে udev:

udevadm info --query=all --name=/dev/ttyACM0

এটি চালাতে আপনার রুট সুবিধার দরকার হতে পারে (sudo / su)। এটি তথ্যের একটি তালিকা আউটপুট হবে:

P: /devices/pci0000:00/0000:00:1d.2/usb4/4-2/4-2:1.0/tty/ttyACM0
N: ttyACM0
S: serial/by-id/usb-Dean_Camera_LUFA_USB-RS232_Adapter_74133353537351403012-if00
S: serial/by-path/pci-0000:00:1d.2-usb-0:2:1.0
E: DEVLINKS=/dev/serial/by-id/usb-Dean_Camera_LUFA_USB-RS232_Adapter_74133353537351403012-if00 /dev/serial/by-path/pci-0000:00:1d.2-usb-0:2:1.0
E: DEVNAME=/dev/ttyACM0
E: DEVPATH=/devices/pci0000:00/0000:00:1d.2/usb4/4-2/4-2:1.0/tty/ttyACM0
E: ID_BUS=usb
E: ID_MM_CANDIDATE=1
E: ID_MODEL=LUFA_USB-RS232_Adapter
E: ID_MODEL_ENC=LUFA\x20USB-RS232\x20Adapter
E: ID_MODEL_FROM_DATABASE=Uno R3 (CDC ACM)
E: ID_MODEL_ID=0043
E: ID_PATH=pci-0000:00:1d.2-usb-0:2:1.0
E: ID_PATH_TAG=pci-0000_00_1d_2-usb-0_2_1_0
E: ID_REVISION=0001
E: ID_SERIAL=Dean_Camera_LUFA_USB-RS232_Adapter_74133353537351403012
E: ID_SERIAL_SHORT=74133353537351403012
E: ID_TYPE=generic
E: ID_USB_DRIVER=cdc_acm
E: ID_USB_INTERFACES=:020201:0a0000:
E: ID_USB_INTERFACE_NUM=00
E: ID_VENDOR=Dean_Camera
E: ID_VENDOR_ENC=Dean\x20Camera
E: ID_VENDOR_FROM_DATABASE=Arduino SA
E: ID_VENDOR_ID=2341
E: MAJOR=166
E: MINOR=0
E: SUBSYSTEM=tty
E: UDEV_LOG=3
E: USEC_INITIALIZED=751387324986

এটি atmega16u2 (সিরিয়ালে ইউএসবি) এ সংশোধিত ফার্মওয়্যারযুক্ত একটি ইউনিয়নের জন্য। আগ্রহের লাইনগুলি সম্ভবত ID_MODEL_ID এবং ID_MODEL_FROM_DATABASE।


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

5

আপনি প্রতিটি জন্য একটি উপনাম যোগ করতে পারেন। তাহলে আপনি জানেন যা কোনটি। এটি কীভাবে সেট আপ করবেন তার একটি সুন্দর টিউটোরিয়াল এখানে ।

টিউটোরিয়ালের ভিত্তিতে আমি লিখেছিলাম এমন একটি স্নিপেট। নীচের উদাহরণে, আমি সিরিয়াল অ্যাডাপ্টারে একটি FTDI RS232RL ইউএসবি ব্যবহার করছি, যা আমি বিশ্বাস করি যে আরডুইনোও এটি ব্যবহার করে।

  1. কোনও ইউএসবি-সিরিয়াল ডিভাইসে কোনও উপাধি নির্ধারণের জন্য, আমাদের ডিভাইসটিতে কিছু তথ্য সন্ধান করতে হবে
  2. ইউএসবি প্লাগ করুন। এটি ধরে নেওয়া হয় আপনি ইতিমধ্যে এই ব্যবহারের জন্য ড্রাইভার ইনস্টল করেছেন ডিভাইস হতে এবং টাইপ করার সময় ডিভাইসটি দৃশ্যমান:

lsusb

  1. আমরা নিম্নলিখিত একটি প্রয়োজন হবে। বিক্রেতার আইডি খ। পণ্য আইডি গ। ডিভাইস সিরিয়াল নম্বর
  2. এটি করার জন্য, এটি শিকারের জন্য খানিকটা সময় নেয়। আপনার সমস্ত ডিভাইস '/ var / লগ / বার্তা' এ লগ প্রবেশ করে।

অতএব আমরা এই ফাইলটি পড়তে পারি এবং সঠিক ইউএসবি খুঁজে পেতে পারি:

grep "ftdi" /var/log/messages

আপনি "ইউএসবি" ব্যবহার করতে পারেন

  1. এটি ftdi সহ ট্যাগ করা সমস্ত বার্তা খুঁজে পাবে:

  2. Ftdi_sio এর পরে, 1-1.2 এর মতো সংখ্যা রয়েছে। এটি ইউএসবি ডিভাইস

grep "usb 1-1.2" /var/log/messages

অথবা আপনি ব্যবহার করতে পারেন:

dmesg | grep "usb 1-1.3"
  1. এটি আমাদের প্রয়োজনীয় সমস্ত তথ্য দেয়:

ইউএসবি এলিয়াস

  1. এখন হাতে ক্রমিক সংখ্যাগুলির তালিকা সহ আসুন একটি ইউডিইভি রুলসেট তৈরি করি যা এই ডিভাইসের প্রত্যেকটির জন্য একটি দুর্দান্ত প্রতীকী লিঙ্ক তৈরি করবে। ইউডিইভি নিয়মগুলি সাধারণত /etc/udev/rules.d তে অনেকগুলি ফাইলে ছড়িয়ে পড়ে। 99-usb-সিরিয়াল.rules নামে একটি নতুন ফাইল তৈরি করুন এবং নীচের লাইনগুলি সেখানে রাখুন:

এই উদাহরণে আমার উপন্যাসটিকে 'lcdbox' বলা হয়

SUBSYSTEM=="tty", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", ATTRS{serial}=="A601ERJJ", SYMLINK+="lcdbox"
  1. SYMLINK আপনার উপনামের নাম। এক্ষেত্রে আমার ওরফে এলসিডিবক্স box
  2. ফাইলটি সংরক্ষণ করুন এবং টাইপ করুন

    sudo udevadm নিয়ন্ত্রণ - পুনরায় লোড করুন

  3. আদর্শ

    ls –l / dev / lcdbox

lrwxrwxrwx 1 মূল মূল 7 জানুয়ারী 1970 / dev / lcdbox -> ttyUSB0

  1. এটি দেখায় যে আমার lcdbox ওরফে টিটিআইএসবি 0 তে ম্যাপ করা আছে

4

এটি বেশ সহজ! আপনাকে ftdi চিপ ফার্মওয়্যারটি কাস্টমাইজ করতে হবে এবং একটি udev নিয়ম যুক্ত করতে হবে:

প্রথমে, উত্সগুলির ftdi_eepromমাধ্যমে apt-getবা থেকে পান। Lsusb এর মাধ্যমে আপনার ডিভাইসটি সনাক্ত করুন এবং আইডিটি পান:

lsusb

বাস 001 ডিভাইস 005: আইডি 0403: 6001 ভবিষ্যত প্রযুক্তি ডিভাইসস ইন্টারন্যাশনাল, লিমিটেড FT232 সিরিয়াল (ইউআরটি) আইসি
....

একটি কনফিগার প্রস্তুত করুন এবং নিশ্চিত করুন যে এটি vendor_idএবং product_idমিলছে। Stringsআপনার ডিভাইসের জন্য একটি অনন্য আইডি পেতে বিভাগে স্ট্রিংগুলি কাস্টমাইজ করুন ।

বিক্রেতা_আইডি = 0x0403 # বিক্রেতা আইডি
product_id = 0x6001 # পণ্য আইডি

সর্বোচ্চ_শক্তি = 50 # সর্বোচ্চ। বিদ্যুত ব্যবহার: মান * 2 এমএ। যদি স্ব _ শক্তিযুক্ত = সত্য হয় তবে 0 ব্যবহার করুন।

###########
স্ট্রিং #
########### 
নির্মাতা = "এফটিডিআই" # প্রস্তুতকর্তা
পণ্য = "আরডুইনো ন্যানো" # পণ্য
সিরিয়াল = "আরডুইনো 1" # সিরিয়াল

###########
# বিকল্প #
###########
স্ব_পাওয়ার্ড = মিথ্যা # চালিত বাসের জন্য এটি বন্ধ করুন
রিমোট_উইকআপ = ভুয়া # রিমোট ওয়েকআপ বৈশিষ্ট্যের জন্য এটি চালু করুন
use_serial = true # ক্রমিক নম্বর স্ট্রিং ব্যবহার করুন

# সাধারণত এই পতাকাগুলির মধ্যে একটিও পরিবর্তন করতে হবে না
# BM_type_chip = সত্য # নতুনতর চিপগুলি সমস্ত BM টাইপ
in_is_isochronous = মিথ্যা # শেষ পয়েন্টে আইসোক্রোনাস
আউট_আইস_সোক্রোনাস = মিথ্যা # আউট এন্ডপয়েন্টটি বিচ্ছিন্ন
সাসপেন্ড_পুল_ডাউনস = ভুয়া # কম পাওয়ারের জন্য সাসপেন্ড টান ডাউনগুলি সক্ষম করে
change_usb_version = মিথ্যা # ইউএসবি সংস্করণ পরিবর্তন করুন
usb_version = 0x0200 # শুধুমাত্র তখনই ব্যবহার হয় যখন চেঞ্জ_সুব_ভারশন সক্ষম করা থাকে

########
# বিবিধ #
########

ফাইলের নাম = "eeprom.old" # ফাইলের নাম, ফাইল লেখা এড়াতে খালি ছেড়ে দিন
cbus0 = RXLED #
cbus1 = TXLED #

বর্তমান ftdi- ফার্মওয়্যার ডাম্প:

ftdi_eeprom --read-eprom

এই কমান্ডটি তৈরি করে ${pwd}/eeprom.old, যা ftdi- র বর্তমান ফার্মওয়্যার ধারণ করে। চালিয়ে যাওয়ার আগে এই ফাইলটির ব্যাকআপ দিন , কারণ ফাইলটির সময় পুনরায় লেখা হয়। ব্যাকআপের পরে, ftdi ফ্ল্যাশ করুন:flash-eeprom

ftdi_eeprom --flash-eeprom myconfig.conf

এখন, একটি udev নিয়ম তৈরি করুন, যেমন

SUBSYSTEMS=="usb", ATTRS{idProduct}=="6001", ATTRS{idVendor}=="0403", SYMLINK+="$attr{serial}", OWNER="bananapi", GROUP="pi", MODE="0777"

মধ্যে /etc/udev/rules.d/90-arduino-usb.rulesএবং পুনর্সূচনা udev দ্বারা।

service udev restart

আপনার ডিভাইসটি আনপ্লাগ এবং পুনরায় প্লাগ করুন এবং চেষ্টা করুন

ls -lah /dev/arduino1

উপরের arduino1নীচে স্ট্রিংটি কোথায় সংজ্ঞায়িত করা serialহয়েছে .conf

আরও দেখুন: ftdi_eprom এর ঝুঁকি? - ফ্ল্যাশ করার পরে টিএক্স সর্বদা উচ্চ


3

আমি একটি স্ক্রিপ্ট ব্যবহার করে একটি উপনামের নীচে তৈরি করতাম /dev/ তৈরি করতাম udevএবং অন্যান্য উত্তরগুলির মতো এটিতেও গ্রুপ এবং অধিকার নির্ধারণ করতাম ।

কিন্তু আমি যদি না udevনল আমি করব lsusbমধ্যে grepবাawk মত, lsusb|grep -e "idProduct"

যাই হোক, সঙ্গে udevবা নিয়ম lsusbএবং grepUSB ডিভাইসের, ব্যবহার চিহ্নিত করতে idVendor, idProductএবং iSerialমধ্যে Device descriptorঅংশ lsusbসঠিক idenification করা। idVendorআপনি manufaturer বলে, idProductনির্মাতার থেকে পণ্য indentify উচিত কিন্তু কখনও কখনও তারা একাধিক পণ্যের জন্য একই পণ্য আইডি ব্যবহার করুন। শেষ অবধি, প্রয়োজনে iSerialসেই পণ্যের প্রতিটি উদাহরণের জন্য একটি অনন্য আইডি হওয়া উচিত।


3

উবুন্টু ১.0.০৪ এ (এবং সম্ভবত পূর্ববর্তী সংস্করণগুলি বা অন্যান্য অসুবিধাও হতে পারে), আপনি এটি করতে পারেন:

> ls /dev/serial/by-id

যা প্রদর্শিত হয় (আমার বাক্সে যেখানে একটি আরডুইনো ইউএনও সংযুক্ত রয়েছে):

usb-Arduino__www.arduino.cc__0043_A4139363931351318241-if00

আপনি সহজেই এখানে ডিভাইস আইডি 0043 (ইউএনও) স্পট করতে পারেন।

এই ফাইলটি আসলে /dev/ttyACM0আমার বাক্সে একটি লিঙ্ক ।


2

আপনি সর্বদা অকার্যকর সেটআপে সিরিয়ালের মাধ্যমে কিছু প্রকারের আইডি প্রিন্ট তৈরি করতে পারেন ()। নির্দিষ্ট বোর্ডটি সংযুক্ত হওয়ার পরে এটি আপনার ইউএসবি ইন্টারফেসে এই আইডিটি প্রেরণ করবে (যা আপনি আপনার লিনাক্স বাক্সে কোনও ধরণের ডেমন অ্যাপ দিয়ে শুনছেন)। আপনি আইডিটি পেয়ে গেলে আপনি এটি 'আরডুইনো 1' এর পথে ম্যাপ করতে পারেন: '/ dev / ttyACM0', 'আরডুইনো 2': '/ দেব / টিটিএইসিএম 1', 'আরডুইনো 3': '/ দেবদেব / আইটিএসিএম 2'...etc

সচেতন থাকুন যে কোনও কারণে ডিভাইস সংযোগ বিচ্ছিন্ন হয়ে গেলে এটি তার শারীরিক পথে পরিবর্তন করতে পারে তাই আপনাকে সেগুলি পুনরায় তৈরি করতে হতে পারে। এই ক্ষেত্রে পৃথক ফাংশনটি লেখার জন্য ভাল হতে পারে যেমন: get_id () যা আপনি যে কোনও সময় কল করতে পারবেন (কেবলমাত্র স্টার্টআপে নয়)।


1

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


0

সংক্ষিপ্ত বিবরণ

  • তার উত্তরে উল্লিখিত অ্যান্সি_লুমেনগুলির একটি উপায় হ'ল ftdi চিপ EEPROM ফ্ল্যাশ করা অনন্য সিরিয়াল নম্বর যা ইউডিইভি নিয়ম দ্বারা চিহ্নিত করা যেতে পারে।

    তবে দেখা যাচ্ছে এটি সস্তা চীনা আরডুইনোসে কাজ করবে না যা এফটিডিআইয়ের পরিবর্তে CH340G চিপ রয়েছে যার অনন্য আইডি সংরক্ষণের জন্য EEPROM নেই ( CH340B কাজ করা উচিত )।

  • এই উত্তরটি ইউডিইভি বিধিটি বিশেষ স্ক্রিপ্টের সাথে লেখার পরামর্শ দেয় যা আরডিনোকে সিরিয়ালের মাধ্যমে তার অনন্য আইডি প্রেরণ করতে বলে। এর সাথে সমস্যা হ'ল আপনাকে আরডিনো স্কেচটি সংশোধন করতে হবে এবং সাধারণভাবে এটি বেশ জটিল।

বন্দর দ্বারা চিহ্নিত করা

সুতরাং সবচেয়ে সহজ উপায়টি আমি খুঁজে পেয়েছি ইউডিইভি বিধি ব্যবহার করা এবং ইউএসবি পোর্ট (দেবপাথ) দ্বারা আরডুইনোস সনাক্ত করা যাতে একই পোর্টের সাথে আরডিনোকে সংযুক্ত করা (এমনকি নেস্টেড ইউএসবি হাবগুলিতেও) স্থায়ী নাম তৈরি করে ।

টিএলডিআর সেটআপ:

সংশোধিত সংস্করণ এই

  1. আরডুইনো আইডিভেন্ডার এবং আইডিপ্রডাক্ট সন্ধান করুন:

lsusb

আপনি এরকম কিছু পাবেন:

...
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 124: ID 1a86:7523 QinHeng Electronics HL-340 USB-Serial adapter
Bus 003 Device 123: ID 214b:7000  
Bus 003 Device 122: ID 1a86:7523 QinHeng Electronics HL-340 USB-Serial adapter
Bus 003 Device 121: ID 1a86:7523 QinHeng Electronics HL-340 USB-Serial adapter
Bus 003 Device 120: ID 1a40:0101 Terminus Technology Inc. Hub
...

আরডুইনো সংযোগ / সংযোগ বিচ্ছিন্ন করে এটি কোনটি আবিষ্কার করুন (আমার সাথে 3 টি সংযুক্ত রয়েছে)। আমরা এর আইডি খুঁজছি আমার ক্ষেত্রে "... আইডি 1 এ 86: 7523 কিনহং ..."। সুতরাং আইডিভেন্ডার = 1 এ 86, আইডিপ্রডাক্ট = 7523

  1. নতুন UDEV নিয়ম ফাইল তৈরি করুন:

sudo nano /etc/udev/rules.d/99-usb-serial.rules

  1. আইডিভেন্ডার এবং আইডিপ্রডাক্ট মানগুলিকে সংশোধন করুন যা আমরা অনুলিপি তৈরির পূর্ববর্তী ধাপে অনুলিপিটি তৈরি করেছি তা আমাদের তৈরি করা বিধি ফাইলগুলিতে আটকে দিন:

SUBSYSTEM=="tty", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="7523", SYMLINK+="ttyUSB-arduino%s{/devpath}"

  1. ইউডিইভি বিধিগুলি পুনরায় লোড করুন

sudo udevadm control --reload

  1. আরডুইনোসকে পুনরায় প্লাগ করুন এবং এখন এটির অনন্য নাম থাকবে। এটি পরীক্ষা করতে টাইপ করুন:

ls /dev/ttyUSB*


যা আউটপুট দেবে:

/dev/ttyUSB1 /dev/ttyUSB3 /dev/ttyUSB-arduino2.1 /dev/ttyUSB-arduino2.4 /dev/ttyUSB2 /dev/ttyUSB4 /dev/ttyUSB-arduino2.2 /dev/ttyUSB-arduino3

আপনি দেখতে পাচ্ছেন আমরা এখনও আগের মতো / dev / ttyUSBx পাই যা কোনটি প্রথমে সংযুক্ত ছিল তার উপর নির্ভর করে সর্বদা পরিবর্তিত হয়। তবে এখন আমাদের / dev / ttyUSB- আরডুইনো {বন্দর} যা সর্বদা একই বন্দরের জন্য এবং কেবল আরডুইনোসের জন্য একই। "..Arduino2.4" এর অর্থ কী তা বিশ্লেষণ করতে: 2 ল্যাপটপের দ্বিতীয় বন্দর এবং 4 ইউএসবি হাবের চতুর্থ বন্দরকে বোঝায়।

আরও ভাল দেখতে এটি টাইপ করুন:

lsusb -t

আউটপুট:

...
/:  Bus 03.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 480M
    |__ Port 1: Dev 5, If 0, Class=Human Interface Device, Driver=usbhid, 12M
    |__ Port 1: Dev 5, If 1, Class=Human Interface Device, Driver=usbhid, 12M
    |__ Port 2: Dev 84, If 0, Class=Hub, Driver=hub/4p, 480M
        |__ Port 1: Dev 85, If 0, Class=Vendor Specific Class, Driver=ch341, 12M
        |__ Port 2: Dev 86, If 0, Class=Vendor Specific Class, Driver=ch341, 12M
        |__ Port 3: Dev 87, If 0, Class=Hub, Driver=hub/4p, 480M
        |__ Port 4: Dev 88, If 0, Class=Vendor Specific Class, Driver=ch341, 12M
    |__ Port 3: Dev 89, If 0, Class=Vendor Specific Class, Driver=ch341, 12M
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/2p, 480M
    |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/6p, 480M
...

সংযোগ / সংযোগ বিচ্ছিন্ন করে আপনি দেখতে পারবেন কোন বন্দরগুলিতে কোন ডিভাইস রয়েছে

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