এম্বেড করাতে 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.