Ttyusb পুনরায় আরম্ভ করার উপায় *


12

আমার দুটি ডিভাইস রয়েছে যা ক্রমাগত ttyUSB0 এবং ttyUSB1 এর মাধ্যমে ডেটা ফিড করে চলেছে। আমার কাছে পিএইচপি স্ক্রিপ্ট রয়েছে যা এই ডেটা ব্যবহার করছে। আমি যে সমস্যাটি চালাচ্ছি তা হ'ল কখনও কখনও ফিডটি একধরণের হিমশীতল। এটির সমাধানের সবচেয়ে ভাল উপায়টি হ'ল কম্পিউটার থেকে বিইউবি বোর্ড আনপ্লাগ করা এবং এটিকে আবার প্লাগ ইন করা। তবে, আমি এই ক্রিয়াটি স্বয়ংক্রিয় করার জন্য একটি উপায় খুঁজছি। লিনাক্সকে মূলত BUB বোর্ডটি বের করার এবং তারপরে আবার কোনওভাবে বাছাই করার উপায় আছে কি?


1
: এই অন্যান্য থ্রেড সমাধান করার চেষ্টা করুন stackoverflow.com/questions/21580750/...

উত্তর:


11

আমি আপনার মতো একই সমস্যা পেয়েছি তবে অন্য প্রসঙ্গে (আমি একটি লিনাক্স বাক্সে সিরিয়াল কনসোলটি খুলি)। সিরিয়াল লিঙ্কটি কখনও কখনও প্রতিক্রিয়াবিহীন হয়ে যায় এবং আমাকে শারীরিকভাবে ইউএসবি-সিরিয়াল রূপান্তরকারীকে আনপ্লাগ করতে হয়।

নীচে আমার সমস্যার সমাধান মনে হচ্ছে, তবে সবসময় নয়।

  1. আপনার ttyUSBx ডিভাইসের সাথে সম্পর্কিত ড্রাইভারটি সন্ধান করুন।

    [আমার-পিসি] # বিড়াল / প্রোক / টিটিআই / ড্রাইভার

    /dev/tty             /dev/tty        5       0 system:/dev/tty
    /dev/console         /dev/console    5       1 system:console
    /dev/ptmx            /dev/ptmx       5       2 system
    /dev/vc/0            /dev/vc/0       4       0 system:vtmaster
    rfcomm               /dev/rfcomm   216 0-255 serial
    usbserial            /dev/ttyUSB   188 0-253 serial
    ttyprintk            /dev/ttyprintk   5       3 console
    serial               /dev/ttyS       4 64-111 serial
    pty_slave            /dev/pts      136 0-1048575 pty:slave
    pty_master           /dev/ptm      128 0-1048575 pty:master
    unknown              /dev/tty        4 1-63 console
    

    আপনি যে /dev/ttyUSBব্যবহার দেখতে পারেন usbserial। এবার আরও কিছু খনন:

    [আমার-পিসি] # এলএসএমড | গ্রেপ ইউএসসিরিয়াল

      usbserial              37173  1 pl2303
    

    আমার ক্ষেত্রে, আমার ইউএসবি-থেকে-সিরিয়াল রূপান্তরকারী একটি প্রোলিফিক PL2303। আপনার যদি কোনও এফটিডিআই অ্যাডাপ্টার থাকে তবে আমি মনে করি এর ftdi_sioপরিবর্তে আপনার দেখা উচিত pl2303

  2. ড্রাইভারটি আনলোড করুন

    sudo modprobe -r pl2303 # বা আপনার কনফিগারেশনের সাথে মেলে এমন নাম

    sudo modprobe -r usbserial

  3. ড্রাইভারটি পুনরায় লোড করুন

    sudo modprobe pl2303 # বা আপনার কনফিগারেশনের সাথে মেলে এমন নাম

  4. আপনার সিরিয়াল যোগাযোগ পুনরায় চালু করুন


আমি এটি চেষ্টা করছি, এবং আপনার সিস্টেমের বর্ণনা অনুসারে সবকিছু একই রকম। যাইহোক, আমি যখন পদক্ষেপ 2 অনুসরণ করি, তখন এটি বলে "" FATAL: মডিউল usbserial ব্যবহৃত হচ্ছে। " এবং আমাকে এটি অক্ষম করতে দেয় না। কোন ধারনা?
এমিলিক

1
আমি কোন ডিভাইস / প্রক্রিয়াটি সাফল্য ছাড়াই ইউএসবিরিয়াল মডিউলটি ব্যবহার করে তার সংজ্ঞা দেওয়ার একটি উপায় খুঁজতে চেষ্টা করছিলাম। আপনি কি "rmmod --for usbserial" চেষ্টা করতে পারেন?
এসডাইভ

7

এসডাইভের উত্তরের সাথে আমি "ফ্যাটাল: মডিউল ইউএসসিরিয়াল ব্যবহৃত হচ্ছে getting

আমি অবশেষে এখানে লিলোর জবাব থেকে কিছু গাইডেন্স দিয়ে সমস্যার সমাধান করেছি: /ubuntu//a/661/379851

তবে কিছু সি কোড ব্যবহার করার পরিবর্তে, আমি একটি অজগর সমতুল্য লিখেছি যা বাস এবং ডিভাইসটিকেও প্রশ্নযুক্ত:

#!/usr/bin/env python
import os
import sys
from subprocess import Popen, PIPE
import fcntl
driver = sys.argv[-1]
print "resetting driver:", driver
USBDEVFS_RESET= 21780

try:
    lsusb_out = Popen("lsusb | grep -i %s"%driver, shell=True, bufsize=64, stdin=PIPE, stdout=PIPE, close_fds=True).stdout.read().strip().split()
    bus = lsusb_out[1]
    device = lsusb_out[3][:-1]
    f = open("/dev/bus/usb/%s/%s"%(bus, device), 'w', os.O_WRONLY)
    fcntl.ioctl(f, USBDEVFS_RESET, 0)
except Exception, msg:
    print "failed to reset device:", msg

এটিকে রিসেট_ইউএস.পি বা অন্য কিছু হিসাবে সংরক্ষণ করুন এবং তারপরে এটি চালান:

sudo python reset_usb.py driver_name

ড্রাইভার_নাম যেখানে আউটপুট

lsmod | grep usbserial

আমার ক্ষেত্রে এটি সিপি 210x ছিল, সুতরাং আমি এটি এটিকে চালিয়েছি:

sudo python reset_usb.py cp210x

আইওএসটিএল (চ, ইউএসবিডিভিএসএফএফএসএসএসএসটি, 0) / ডিভ / বাস / ইউএসবি / এক্সএক্সএক্সএক্স / ইয়াহিতে সংশ্লিষ্ট ডিভাইসটি কি সত্যিই প্রয়োজনীয়? যখন ডেটা আর উপস্থিত হয় না তা সনাক্ত করে কেবল অ্যাপ্লিকেশনটিকে () এবং / dev / ttyUSBx ডিভাইসটি খুলতে দেওয়া যথেষ্ট নয়?
প্রতি লিন্ডবার্গ

1

মডিউলটির জন্য আমার উত্তর এখানে ftdi_sio। পদক্ষেপগুলি উপরের উত্তর এবং মূল প্রশ্নের একটি মন্তব্য থেকে লিঙ্ক থেকে অভিযোজিত।

আমি মডিউলটি সরিয়ে ফেলতে পারি না:

% sudo rmmod ftdi_sio
rmmod: ERROR: Module ftdi_sio is in use
% sudo modprobe -r ftdi_sio
modprobe: FATAL: Module ftdi_sio is in use.

সুতরাং আমি নিম্নলিখিত কৌশলটি ব্যবহার করি:

% sudo dmesg | grep ttyUSB0
[    4.784615] usb 3-2.4: FTDI USB Serial Device converter now attached to ttyUSB0

যা সত্যই যাচাই করেছে:

% tree /sys/bus/usb/drivers/ftdi_sio     
/sys/bus/usb/drivers/ftdi_sio
├── 3-2.4:1.0 -> ../../../../devices/pci0000:00/0000:00:14.0/usb3/3-2/3-2.4/3-2.4:1.0
├── bind
├── module -> ../../../../module/usbserial
├── uevent
└── unbind

2 directories, 3 files

তারপরে মডিউলটি সরানো সহজ ছিল:

# echo -n "3-2.4:1.0"  > /sys/bus/usb/drivers/ftdi_sio/unbind
# rmmod ftdi_sio 
# rmmod usbserial 

এবং তারপরে সহজভাবে:

# modprobe ftdi_sio

এটি কেন পরিষ্কার নয় যে ftdi_sio কেন এইরকম খারাপ আকার ধারণ করে, সম্ভবত এখনও বাগ হিসাবে থাকবেন:

তবে মনে হচ্ছে কার্নেল ৪.৯.২০ এ এখনও খারাপ ftdi_sioমডিউল রয়েছে ।

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