ইউএসবি ব্লুটুথ ডঙ্গল স্থগিতকরণ প্রতিরোধ করে


3

স্টক কার্নেল ৪.১৫ সহ আমার 18.04 মেশিনে, আমি একটি রান-অফ-মিল-সিএসআর ব্লুটুথ ডংল ব্যবহার করছি। এখন সমস্যাটি হ'ল মেশিনটি সঠিকভাবে সাসপেন্ড করবে না যখন সেই ডংগলটি প্লাগ ইন করা হয় - এটি 5 থেকে 10 সেকেন্ডের মধ্যে কোনও কিছুর জন্য ঘুমাতে যাবে তবে তারপরে নিজেই আবার শুরু করুন, যদিও কোনও ব্লুটুথ ডিভাইস বর্তমানে সংযুক্ত নেই বা এমনকি চালিত নেই। যখন আমি স্থগিতের আগে ডাঙ্গলটি আনপ্লাগ করি তখন এটি যেমন করা উচিত ততক্ষণ স্থগিত থাকে।

আমি কেবল ইউএসবি জেগআপ পুরোপুরি বন্ধ করে দিতে পারি, তবে আমি আশা করছিলাম যে আরও একটি সার্থক সমাধান রয়েছে যা কেবলমাত্র ব্লুটুথ ডঙ্গলের মাধ্যমে জাগানো প্রতিরোধ করে ...

lsusb, ইউএসবি-ডিভাইসগুলি, ডঙ্গলের জন্য hcitool আউটপুট:

Bus 001 Device 007: ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode)

T:  Bus=01 Lev=02 Prnt=02 Port=02 Cnt=02 Dev#=  7 Spd=12  MxCh= 0
D:  Ver= 2.00 Cls=e0(wlcon) Sub=01 Prot=01 MxPS=64 #Cfgs=  1
P:  Vendor=0a12 ProdID=0001 Rev=88.91
S:  Product=CSR8510 A10
C:  #Ifs= 2 Cfg#= 1 Atr=e0 MxPwr=100mA
I:  If#= 0 Alt= 0 #EPs= 3 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
I:  If#= 1 Alt= 0 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb

hci0:   Type: Primary  Bus: USB
    BD Address: xx:xx:xx:xx:xx:xx  ACL MTU: 310:10  SCO MTU: 64:8
    UP RUNNING PSCAN 
    RX bytes:124465 acl:0 sco:0 events:3928 errors:0
    TX bytes:3182 acl:0 sco:0 commands:51 errors:0
    Features: 0xff 0xff 0x8f 0xfe 0xdb 0xff 0x5b 0x87
    Packet type: DM1 DM3 DM5 DH1 DH3 DH5 HV1 HV2 HV3 
    Link policy: RSWITCH HOLD SNIFF PARK 
    Link mode: SLAVE ACCEPT 
    Name: 'monolith'
    Class: 0x0c0104
    Service Classes: Rendering, Capturing
    Device Class: Computer, Desktop workstation
    HCI Version: 4.0 (0x6)  Revision: 0x22bb
    LMP Version: 4.0 (0x6)  Subversion: 0x22bb
    Manufacturer: Cambridge Silicon Radio (10)

উত্তর:


1

স্থগিতের সময় ডিভাইসটি পাওয়ার অফ, পুনরায় শুরু করার সময় পাওয়ার করুন

এই উত্তর থেকে:

আপনি একটি স্ক্রিপ্ট বলা করতে পারেন /lib/systemd/system-sleep/cambridge.sh

#!/bin/bash
ZeroBUS1=$(lsusb | grep 0a12:0001 | cut -c  5-7 )
BUS1=$(echo $ZeroBUS1 | sed 's/^0*//') # Strip leading zeros
ZeroBUS2=$(lsusb | grep 0a12:0001 | cut -c  16-18 )
BUS2=$(echo $ZeroBUS2 | sed 's/^0*//') # Strip leading zeros
BUS="$BUS1"-"$BUS2"    

case $1 in
    suspend|suspend_hybrid|hibernate)
        echo "Powering off: $BUS"
        echo "$BUS" | sudo tee /sys/bus/usb/drivers/usb/unbind
        ;;
    resume|thaw)
        echo "Powering on: $BUS"
        echo "$BUS" | sudo tee /sys/bus/usb/drivers/usb/bind
        ;;
esac

ফাইলটিকে এক্সিকিউটেবল হিসাবে চিহ্নিত করুন

sudo chmod a+x /lib/systemd/system-sleep/cambridge.sh

পরিবর্তনগুলি কার্যকর করতে আপনাকে পুনরায় বুট করতে হবে।


তবে পুরো বাসের এই পালা, তাই না? আমি এখনও অন্য ইউএসবি ডিভাইসগুলির মাধ্যমে মেশিনটি জেগে উঠতে চাই ...
ফ্লোরিয়ান ইচ্ছিলার

লিঙ্কটিতে সমস্ত ইউএসবি বাস বন্ধ করার পদ্ধতি রয়েছে তবে উত্তরটি কেবলমাত্র ডিভাইসের জন্য:0a12:0001
WinEunuuchs2 ইউনিক্স

এমএমএইচ, আমি এটা মনে করি না। এই স্ক্রিপ্টটি এখনও পুরো বাসটি বন্ধ করে দেয় যার সাথে ডিভাইস 0a12: 0001 সংযুক্ত রয়েছে।
ফ্লোরিয়ান ইচ্ছিলার

আমি সেই স্ক্রিপ্টটির দিকে তাকিয়ে কিছুক্ষণ হয়ে গেল। আমি এটিকে পুরো বিএস থেকে বিএস-এর নির্দিষ্ট ডিভাইসে পরিবর্তন করেছি।
WinEunuuchs2 ইউনিক্স

ঠিক আছে, তাই আমি এটি পরীক্ষা করেছি এবং স্ক্রিপ্টটিতে দুটি সমস্যা রয়েছে: একটি হ'ল BUS2 ভেরিয়েবলটি এখনও জিরোবাস 2 এর পরিবর্তে জিরোবাস 1 (সম্ভবত অনুলিপি-পেস্ট ত্রুটি) এর উপর ভিত্তি করে রয়েছে। তবে অন্যটি, আরও গুরুত্বপূর্ণ বিষয় হ'ল বাস / ডিভাইস নম্বরগুলি সাইফস শনাক্তকারীদের সাথে সামঞ্জস্য করে না, এবং সিসফেসের [আন] বাইন্ড নোডটি এটি প্রত্যাশা করে (যেমন "3-13.2" এর মতো কিছু)।
ফ্লোরিয়ান ইখলার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.