এম্বেড করাতে ttyUSB0 এ কাস্টম পিআইডি সহ ইউএসবি-সিরিয়াল ডিভাইস সংযুক্ত করা হচ্ছে


19

আমি কোনও সাফল্য ছাড়াই ttyUSB% n এ স্বয়ংক্রিয়ভাবে (বা এমনকি ম্যানুয়ালি) সংযুক্ত করতে একটি কাস্টম পিআইডি সহ একটি এফটিডিডিআই ইউএসবি-সিরিয়াল ডিভাইস পাওয়ার চেষ্টা করছি। ডিভাইসের স্বাভাবিক ভিআইডি / পিআইডি 0403/6001। এইভাবে প্রোগ্রাম করার সময়, এটি পুরোপুরি কাজ করে এবং প্লাগ ইন করার সময় স্বয়ংক্রিয়ভাবে নিজেকে ttyUSB0 এ সংযুক্ত করে Even এমনকি ড্রাইভারটি নতুন নতুন পিআইডি সম্মান করার জন্য পুনরায় কম্পাইল করে যখন কাস্টম সহ একটি টিটিআইএসবি 0 উপস্থিত হয় না, তবে এটি এটিকে ftdi_sio ডিভাইস হিসাবে স্বীকৃতি দেয় এবং ড্রাইভার লোড।

আমি আমাদের পিআইডি শিরোনাম এবং উত্সে যুক্ত করেছি:

// in ftdi_sio_ids.h
#define FTDI_CUSTOM_PID 0xABCD // not the actual pid
// then in ftdi_sio.c
static struct usb_device_id id_table_combined [] = {
    // devices....
    { USB_DEVICE(FTDI_VID, FTDI_CUSTOM_PID) },
    // ....

পুরো কার্নেলটি পুনরায় সংযুক্ত করে ডিভাইসটিকে পুনরায় চাপিয়ে দেওয়া হয়েছে। আমি যখন ডিভাইসটি প্লাগ ইন করি তখন:

usb 1-1: new full-speed USB device number 2 using at91_ohci
usbcore: registered new interface driver usbserial
usbserial: USB Serial Driver core
USB Serial support registered for FTDI USB Serial Device
usbcore: registered new interface driver ftdi_sio
ftdi_sio: v1.6.0:USB FTDI Serial Converters Driver

lsusb সঠিক কাস্টম ভিআইডি / পিআইডি দেখায়। ড্রাইভারটি এটির সাথে ftdi_sio ব্যবহার করার কথা বলে মনে করেছে, তবে এটি ttyUSB0 এর সাথে সংযুক্ত করে না যা এটি অবিস্মরণিত পিআইডি সহ করবে। আমি এখানে কী ভুল করছি সে সম্পর্কে কোনও পরামর্শ?


1
এটি কোন এমবেডেড টাইপ? এটির কি ইউডিইভি আছে? যদি তা হয় তবে ইউডিইভি হ'ল আপনার সেরা বাজি (এবং আমি এটির সাথে আরও সাহায্য করতে পারি)।
— ব্রায়ান রেডবার্ড

উত্তর:


17

আপনাকে কেবল একবার এটির জন্য কার্নেলটি পরিবর্তন করার দরকার নেই; আপনি এটি ওভাররাইড করতে পারেন।

  1. যন্ত্রটি খুলে ফেল
  2. modprobe ftdi_sio
  3. echo 0403 6001 >/sys/bus/usb-serial/drivers/ftdi_sio/new_id
  4. ডিভাইসটি প্লাগ করুন

এবং আপনার ডিভাইসের কাজ করা উচিত।

আপনার অন্যান্য বিকল্পটি হচ্ছে bindসিএসএফএস ইন্টারফেস ব্যবহার করা ; আমি lsusb -tসেই ক্ষেত্রে সঠিক পথ + ইন্টারফেসটি বের করতে ব্যবহার করার পরামর্শ দিই ।

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

$ lsusb -t
...
/:  Bus 04.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/2p, 5000M
    |__ Port 1: Dev 5, If 0, Class=Hub, Driver=hub/3p, 5000M
        |__ Port 3: Dev 6, If 0, Class=Hub, Driver=hub/3p, 5000M
            |__ Port 3: Dev 7, If 0, Class=Mass Storage, Driver=usb-storage, 5000M
 ...
 $ echo '4-1.3.3:1.0' >/sys/bus/usb/drivers/usb-storage/bind

সংখ্যা বিন্যাস হল: BUS-PORT(.PORT)+:1.INTERFACE। Lsusb আউটপুটে দৃশ্যমান নয় এমন একমাত্র সংখ্যাটি হ'ল কোলনের পরে প্রথম অঙ্ক; এবং এটি 1আমার অভিজ্ঞতায় সর্বদা একটি ছিল। গভীর কার্নেল জ্ঞানযুক্ত কেউ সম্ভবত আমাকে এটি বলতে পারেন এবং একটি পাল্টা উদাহরণ সরবরাহ করতে পারেন।


ধন্যবাদ নিখুঁতভাবে কাজ। গ্রহণযোগ্য উত্তর হওয়া উচিত।
— আমর বেখিত

1
কেবল ভাবছি: আমি যদি নিজের মতামত পরিবর্তন করি এবং আমি এই ভিডি / পিডটি ftdi_sio ড্রাইভারটি ব্যবহার করতে চাই না তবে অন্য একজন, আমি কীভাবে এই পদক্ষেপটি ফিরিয়ে দেব?
— ব্রাম

প্রতিবেদনটি নতুন_আইডিতে পূর্বাবস্থায় ফেলার জন্য মুছে ফেলার জন্য ভিডি / পিড লিখুন।
— রোবট 2

@ ট্র্যাকচ্যাচ আপনি দয়া করে উত্তরটি গ্রহণ করতে পারেন?
— রোবট

1
@ কে নিউ_আইডি / অপসারণ_আইডি কেবলমাত্র গতিযুক্ত যুক্ত আইডিগুলি সরাতে। যদি আপনি বুঝতে চান তবে আপনি কি করতে চান: আপনি কোনও নির্দিষ্ট ড্রাইভারকে কোনও ডিভাইসের জন্য লোড করা থেকে বিরত রাখতে চান।
— রোবট 2

12

আপনার কার্নেলটি পরিবর্তন করার দরকার নেই, আপনি প্রক্রিয়াটি এভাবে স্বয়ংক্রিয় করতে পারেন:

  1. নিম্নলিখিত একক লাইন যুক্ত করুন /etc/udev/rules.d/99-ftdi.rules

    ACTION=="add", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", RUN+="/sbin/modprobe ftdi_sio" RUN+="/bin/sh -c 'echo 0403 6001 > /sys/bus/usb-serial/drivers/ftdi_sio/new_id'"

  2. হয় পুনরায় বুট করুন বা sudo udevadm control --reloadনতুন নিয়ম তুলতে চালান ।

  3. যন্ত্রটি খুলে ফেল.

  4. ডিভাইসটি প্লাগ করুন।


1

সিল্যাবস থেকে ইওল বোর্ডের সাথে একেবারে একই অবস্থা ঘটেছে - ইউএসবি-ইউআরটি চিপ সিপি 2102 অনিয়মিত ভিআইডি / পিআইডি সরবরাহ করা হচ্ছে:

lsusb

Bus 001 Device 002: ID 10c4:804c Cygnal Integrated Products, Inc.

মডিউল cp210x লোড করে এবং ভিআইডি / পিআইডি প্রেরণ দ্বারা উল্লিখিত হিসাবে সমস্যার সমাধান:

sudo modprobe cp210x

sudo -s

echo 10c4 804c > /sys/bus/usb-serial/drivers/cp210x/new_id

উদেবের জন্য সম্পর্কিত 99-cp210.rules ফাইলটি নীচের দেখায়:

ACTION=="add", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="804c", RUN+="/sbin/modprobe cp210x" RUN+="/bin/sh -c 'echo 10c4 804c > /sys/bus/usb-serial/drivers/cp210x/new_id'"


ভবিষ্যতে ভ্রমণকারীরা কাজ করার জন্য একটি HUSBZB -1 লাঠি পেতে চেষ্টা জন্য, এখানে একটি udev দ্বারা ফাইল যা cp210x ড্রাইভার হিসাবে উপরে উল্লিখিত লিংক হবে এবং TTY ডিভাইসের সিমবলিক লিঙ্ক / dev / ZigBee ও / dev / Z-তরঙ্গ ACTION=="add", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="8a2a", RUN+="/sbin/modprobe cp210x" RUN+="/bin/sh -c 'echo 10c4 8a2a > /sys/bus/usb-serial/drivers/cp210x/new_id'" SUBSYSTEM=="tty", ATTRS{interface}=="HubZ Z-Wave Com Port", SYMLINK+="zwave" SUBSYSTEM=="tty", ATTRS{interface}=="HubZ ZigBee Com Port", SYMLINK+="zigbee"
— আবছা
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.