আমার কাছে একটি ইউএসবি জিএসএম মডেম রয়েছে যা কাজের সম্পত্তিকে অলভ্যাস করে না (Huawei E367u-2) কখনও কখনও এটি রিসেট হয় (লগগুলিতে ইউএসবি ডিভাইস সংযোগ বিচ্ছিন্ন / পুনরায় সংযোগ) এবং যখন এটি ফিরে আসে তখন এর বিভিন্ন টিটিআইএসবি নম্বর থাকে। কখনও কখনও বুটে, USB_modswitch মনে হয় কেবল বরখাস্ত হয় নি। কম্পিউটারটি একটি রাস্পবেরি পাই চলমান রাস্পবিয়ান।
আমার এটির একটি সহজ সমাধান রয়েছে, প্রতি মিনিটে সিআরএন নিম্নলিখিত স্ক্রিপ্টটি চালায়:
If WVDIAL is not running:
Run WVDIAL
আমি এটি হতে স্ক্রিপ্টটি পরিবর্তন করতে চাই:
If /dev/ttyUSB0 is not present:
If DevicePresent(12d1:1446):
ResetDevice(12d1:1446)
ElseIs DevicePresemt(12d1:1506)
ResetUSB(12d1:1506)
If WVDIAL is not running:
Run WVDIAL
স্পষ্টতই এটি ছদ্ম কোড, তবে আমার নীচের লাইনগুলি রয়েছে যেগুলি আমাকে এক সাথে স্ট্রিং করতে হবে তবে আমি কীভাবে বুঝতে পারি না:
এটি চালিত না হলে wvdial লোড করে:
#! /bin/sh
# /etc/init.d/wvdial
### BEGIN INIT INFO
# Provides: TheInternet
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Simple script to start a program at boot
# Description: A simple script from www.stuffaboutcode.com which will start / stop a program a boot / shutdown.
### END INIT INFO
# If you want a command to always run, put it here
# Carry out specific functions when asked to by the system
case "$1" in
start)
echo "Starting GPRS Internet"
# run application you want to start
/sbin/start-stop-daemon --start --background --quiet --exec /usr/bin/wvdial internet
;;
stop)
echo "Stopping GPRS Internet"
# kill application you want to stop
/sbin/start-stop-daemon --stop --exec /usr/bin/wvdial
;;
*)
echo "Usage: /etc/init.d/noip {start|stop}"
exit 1
;;
esac
exit 0
এটি আমাকে /sys
একটি নির্দিষ্ট ডিভাইসের পথ খুঁজে পেতে দেয় :
for X in /sys/bus/usb/devices/*; do
echo "$X"
cat "$X/idVendor" 2>/dev/null
cat "$X/idProduct" 2>/dev/null
echo
done
আপনি যদি সঠিক / সিস্টেমে পাথ জানেন তবে এটি একটি ইউএসবি ডিভাইস পুনরায় সেট করে:
echo 0 > /sys/bus/usb/devices/1-1.2.1.1/authorized
echo 1 > /sys/bus/usb/devices/1-1.2.1.1/authorized
সুতরাং, /dev/ttyUSB0
"আমাকে যদি সর্বদা চালানোর জন্য কোনও আদেশ চান তবে এটি এখানে রাখুন" বিভাগের অধীনে সর্বশেষ 2 বিভাগ এবং একটি পরীক্ষাটি এমন একটি বিভাগে স্ট্রিং করা দরকার যা "
আপডেট 1
usbreset, যদিও কাজ করছে, কাজটি করে না। কেবলমাত্র 1 এ 1 প্রতিধ্বনি authroized
সঠিকভাবে কোনও ডিভাইস সংযোগ বিচ্ছিন্ন / পুনরায় সংযোগের অনুকরণ করে।
এটি ডিভাইসটি বুট করার কৌশল বা ইউএসবি_মোডসইচকে জীবনে ফিরিয়ে দেয় trick যেমন আমি একসাথে আবদ্ধ করতে পরিচালিত করেছি:
echo "Searching for $1"
devPath=`lsusb | grep $1 | sed -r 's/Bus ([0-9]{3}) Device ([0-9]{3}).*/bus\/usb\/\1\/\2/g;'`
echo "Found $1 @ $devPath"
echo "Searching for sysPath"
for sysPath in /sys/bus/usb/devices/*; do
echo "$sysPath/uevent"
devName=`cat "$sysPath/uevent" | grep $devPath`
#echo devName=$devName
if [ ! -z $devName ]
then
break
fi
done
if [ ! -z $devName ]
then
echo "Found $1 @ $sysPath, Resetting"
echo "echo 0 > $sysPath/authorized"
echo 0 > $sysPath/authorized
echo "echo 1 > $sysPath/authorized"
echo 1 > $sysPath/authorized
else
echo "Could not find $1"
fi
আমি মনে করি অতএব আমাকে এখন যা করতে হবে তা এটি init.d স্ক্রিপ্টে রেখে দেওয়া হয়েছে:
if ttyUSB0 not present
if 12d1:1446 present
/usr/sbin/resetdevicebyauthorized 12d1:1446
else if 12d1:1506 present
/usr/sbin/resetdevicebyauthorized 12d1:1506
fi
fi
usbreset
হুয়াওয়ে মডেমগুলির সাথে +1 ব্যর্থ হয়, মডেমটি পুনরুদ্ধার করতে সক্ষম হয় না এবং রিবুটটিতে হিমশীতল হয়। আমি বর্তমানে একই সমস্যাটি সমাধান করছি এবং খুব শীঘ্রই একটি সম্পূর্ণ কার্যক্ষম সমাধান হতে পারে।