ইউএসবি পোর্টে পাওয়ার বন্ধ করা হচ্ছে। অথবা পুরো ইউএসবি সাবসিস্টেমের পাওয়ার বন্ধ করে দিন


28

আমার কাছে একটি ইউএসবি ল্যাম্প রয়েছে যা আমি নির্দিষ্ট সময়ে প্রোগ্রামগতভাবে এটি বন্ধ করার জন্য বিশেষভাবে কিনেছিলাম, সুতরাং এর ইউএসবি বন্দরে শক্তিটি সরিয়ে ফেলতে হবে।

আমি বিশ্বাস করি ইউএসবি-তে আমার একটি ইউএসবি-হাব রয়েছে। প্রদীপটি এই হাবের যে কোনও একটি বন্দরের সাথে সংযুক্ত রয়েছে:

#myhost$ lsusb 
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 008 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
...
...
Bus 008 Device 006: ID 050d:0234 Belkin Components F5U234 USB 2.0 4-Port Hub

এখানে আমি চেষ্টা করেছি:

দুটি সমাধান এখানে রয়েছে , প্রথমটি পরামর্শ দেয়:

echo disabled > /sys/bus/usb/devices/usb1/power/wakeup 
echo suspend > /sys/bus/usb/devices/usb1/power/level  # turn off

তবে আমি write error: Invalid argumentলিখতে চেষ্টা করার সময় পাই /sys/bus/usb/devices/usb1/power/level:

$sudo bash -c 'echo disabled > /sys/bus/usb/devices/usb6/power/wakeup'
$echo suspend|sudo tee /sys/bus/usb/devices/usb6/power/level suspend
tee: /sys/bus/usb/devices/usb6/power/level: Invalid argument
$sudo bash -c 'echo suspend> /sys/bus/usb/devices/usb6/power/level'bash: line 0: echo: write error: Invalid argument

দ্বিতীয় সমাধান:

sudo bash -c 'echo 0 > /sys/bus/usb/devices/usb6/power/autosuspend_delay_ms; echo auto > /sys/bus/usb/devices/usb6/power/control'

যা ইউএসবি-হাব ডিভাইসে পাওয়ার বন্ধ করে দেয়।

আমিও অনুসরণ করার চেষ্টা ছিল এই :

তবে lsusb -tকেবল স্তব্ধ হয়ে যাওয়ার আউটপুট :

$lsusb -t
4-1:0.0: No such file or directory
4-1:0.1: No such file or directory
^C

যা আমাকে '2-1.1' অংশটি পেতে এই পদ্ধতিটি ব্যবহার করতে বাধা দেয়:

echo '2-1.1' > /sys/bus/usb/drivers/usb/unbind

এই তথ্য পাওয়ার বিকল্প উপায় আছে?

বিকল্পভাবে, পুরো ইউএসবি সাবসিস্টেমের জন্য বিদ্যুৎ বন্ধ করার কোনও উপায় আছে কি? এরকম কিছু modprobe -r usb_etc?

আমার কার্নেলটি হ'ল:

$uname -r
3.2.0-4-amd64

কি সিনট্যাক্স ত্রুটি? এই ক্ষেত্রে, সরল স্ট্রিংগুলির 'সাসপেন্ড', 'অক্ষম' উদ্ধৃতি দেওয়ার দরকার নেই। যদি আপনি উদ্ধৃত করার অভ্যাসে থাকেন তবে আপনার পক্ষে দুর্দান্ত, তবে এই ক্ষেত্রে এটির দরকার নেই।
ব্যবহারকারী 84207

আমি lsusb -tকলটি স্ট্রাক করার চেষ্টা করেছি এবং এটির ডিবাগ করার সময়টিতে আমি কোনও কার্যকর কিছু পাইনি। Lsub- এ বাগগুলি সন্ধানের জন্য আমার কাছে এখনই সময় নেই এবং আমি এখনই এটি পুনরুত্পাদন করতে পারি না, তাই এটি সম্ভবত প্লাগ ইন করা ডিভাইসগুলির উপর নির্ভর করে to এটি পুনরুত্পাদন।
ব্যবহারকারী 84207

উত্তর:


20

সামঞ্জস্যপূর্ণ ইউএসবি হাবের জন্য প্রতি পোর্টে ইউএসবি পাওয়ার নিয়ন্ত্রণ করতে আপনি uhubctl - কমান্ড লাইন ইউটিলিটি ব্যবহার করতে পারেন ।

এটি কেবল এমন হাবগুলিতে কাজ করে যা প্রতি বন্দর পাওয়ার স্যুইচিংকে সমর্থন করে তবে লক্ষ করুন যে অনেক আধুনিক মাদারবোর্ডে ইউএসবি হাব রয়েছে যা এই বৈশিষ্ট্যটিকে সমর্থন করে।

সংকলন করতে:

git clone https://github.com/mvp/uhubctl
cd uhubctl
make

সমস্ত হাবের স্থিতি তালিকা করতে, তাদের অবস্থান এবং পোর্টগুলি যে uhubctl দ্বারা নিয়ন্ত্রিত হতে পারে:

uhubctl

একক সামঞ্জস্যপূর্ণ হাবের পোর্ট 5 এ পাওয়ার বন্ধ করতে:

uhubctl -a 0 -p 5

আপনার যদি একাধিক সামঞ্জস্যপূর্ণ হাব সংযুক্ত থাকে তবে -lএটি নিয়ন্ত্রণ করতে হাবের অবস্থান নির্দিষ্ট করতে ব্যবহার করুন :

uhubctl -a 0 -p 5 -l 3-1.2

টগল করার পরে বিদ্যুৎটি বন্ধ করে দিন:

uhubctl -a 2 -p 5

নোট করুন যে ইউএসবি 3.0.০ হাবগুলি সমর্থিত, এবং বেশ কয়েকটি নতুন ইউএসবি 3.0 হাব আসলে ভালভাবে কাজ করে।

এখানে আরও পড়ুন ।

প্রকাশ - আমি uhubctl এর লেখক।


আরও কিছু তথ্য সুন্দর হবে। বিশেষত কারণ আপনি লেখক এবং এটি কীভাবে এটি ব্যবহার করবেন তার কোনও স্ট্যান্ডার্ড প্যাকেজ উদাহরণ নয়, যদি এর কোনও ক্ষমতা / সীমাবদ্ধতা থাকে তবে তা যদি ঝুঁকিপূর্ণ হয় তবে কেবলমাত্র লিঙ্কের উত্তরগুলি অগ্রাধিকার দেওয়া হয় না।
জাচারি ব্র্যাডি

2
ভাল, পুরো README ফাইলটি অনুলিপি / আটকানো আমার কাছে উজ্জ্বল ধারণা বলে মনে হচ্ছে না। এটি সমস্ত সতর্কতা ব্যাখ্যা করা হয়েছে।
এমভিপি

না, পুরো রেডমি অতিরিক্ত হবে। আপনি কীভাবে প্রশ্নটিতে উত্থাপিত সমস্যাটি সমাধান করতে প্রোগ্রামটি ব্যবহার করতে পারেন। এবং যদি সেই নির্দিষ্ট ব্যবহারের ক্ষেত্রে কোনও সতর্কতা থাকে তবে পুরো প্রয়োগটি নয়। আমি আমার প্রথম মন্তব্যে পরিষ্কার না থাকলে দুঃখিত।
জাচারি ব্র্যাডি

1
এফওয়াইআই: এই পদ্ধতিটি পিসিআই-ইউএসবি হোস্ট নিয়ন্ত্রকদের রেনেসাস ইউপিডি 720202 পরিবারের জন্য কাজ করে। :) ধন্যবাদ।
ওয়াসনাম

ধন্যবাদ @ ওয়াসনাম। এটিকে github.com/mvp/uhubctl/issues এ নতুন সমস্যা হিসাবে যুক্ত করার আপত্তি কি আপনার? আমি সমর্থিত ডিভাইসগুলির তালিকা আপডেট করব।
এমভিপি

20

নতুন কার্নেলগুলির জন্য "সাসপেন্ড" আর কাজ করে না এমন জন্য লিনাক্স , সংক্ষিপ্ত সংস্করণ সহ একটি ইউএসবি পাওয়ার সরবরাহ (চালু / বন্ধ) নিয়ন্ত্রণ করা দেখুন :

echo "0" > "/sys/bus/usb/devices/usbX/power/autosuspend_delay_ms"
echo "auto" > "/sys/bus/usb/devices/usbX/power/control"

তবে এটি আক্ষরিকভাবে শক্তিটি কাটবে না, এটি ডিভাইসটিকে পাওয়ার অফে সংকেত দেয়, পাওয়ার ম্যানেজমেন্ট বাস্তবায়ন করতে এবং সঠিক কাজটি করার জন্য এটি ডিভাইসটির উপর নির্ভর করে।

কার্নেলের অফিসিয়াল ডকুমেন্টেশনে আপনার কাছে প্রচুর বিশদ রয়েছে , সেখানে এটি /sys/bus/usb/devices/.../power/ডিভাইস এবং পোর্টগুলিতে বিভিন্ন ফাইল এবং কীভাবে পরিচালনা করবেন তা ব্যাখ্যা করে ।

যে জিনিসগুলি সত্যিকারের ইউএসবি ডিভাইসগুলি নয় (আপনার ইউএসবি প্রদীপটি কি লসুব্বুতে প্রদর্শিত হবে?) আপনি ভাগ্য থেকে দূরে থাকবেন, আমি নিজেকে একটি ইউএসবি ল্যাম্প দিয়ে চেষ্টা করেছি এবং একটি জিপিএস লগার যা তার ব্যাটারি চার্জ করে এবং ইউএসবির মাধ্যমে ডেটা স্থানান্তর করে যা দেখায় সিরিয়ালটিতে cp210x ইউএসবি হিসাবে আপ, এবং না পাওয়ার অফ off আমি জিপিএসকে "সংযোগ বিচ্ছিন্ন" করতে echo '5-4.6' > /sys/bus/usb/drivers/usb/unbindএবং এটির সাথে পুনরায় সংযোগ করতে পারি echo '5-4.6' > /sys/bus/usb/drivers/usb/bindতবে ব্যাটারি চার্জিং লিগথটি সর্বদা চালু থাকে।

তবে মনে হয় কিছু হাব এটি সঠিকভাবে করে


0

এটা না স্বতন্ত্রভাবে সম্পাদনা "প্রয়োজনীয় autosuspend_delay_ms " ফাইল।

ইউএসবি autosuspend অক্ষম করা যেতে পারে বিশ্বব্যাপী এবং নিরবচ্ছিন্নভাবে সঙ্গে

sed -i 's/GRUB_CMDLINE_LINUX_DEFAULT="/&usbcore.autosuspend=-1 /' /etc/default/grub

update-grub

systemctl reboot

প্রস্তাবিত ফিক্সটি পরীক্ষা করতে এবং এর 'যথার্থতা যাচাই করতে কয়েক সেকেন্ড সময় নেয়।

নীচে একটি উবুন্টু 18.04 বর্ণিত স্ক্রিনশটটি উপরে বর্ণিত হিসাবে এটি সংশোধন করে যা সমস্ত ইউএসবি অটোসপেন্ড সেটিংস অক্ষম করে হোস্টের পুনরায় বুট করার ফলে :

উবুন্টু 18.04 ডেমো বিশ্বব্যাপী ইউএসবি অটোসপেন্ডকে অক্ষম করছে

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