#!/bin/bash
sudo sh -c "echo 0 > /sys/bus/usb/devices/usb1/authorized"
sleep 1
sudo sh -c "echo 1 > /sys/bus/usb/devices/usb1/authorized"
مشکل از اونجایی شروع شد که مودم adsl رو با کابل usb به سیستم وصل کردم (دبیان ۱۱) که در کمال تعجب بدون هیچ مقدمه ای و نصب هیچ بسته ای مودم رو شناسایی کرد ولی وقتی سیستم رو suspend می کنم و دوباره wakeup میشه نتورک منیجر به شکل زیر درمیاد و اینترنت قطع میشه :
(https://s6.uupload.ir/files/untitled_q378.jpg)
برای حل این مشکل با کمی سعی و خطا پورت usb مربوط به مودم رو پیدا کردم و یه اسکریپت دوخطی با سرچ پیدا کردم که بصورت زیر هست :کد: [انتخاب]#!/bin/bash
sudo sh -c "echo 0 > /sys/bus/usb/devices/usb1/authorized"
sleep 1
sudo sh -c "echo 1 > /sys/bus/usb/devices/usb1/authorized"
این اسکریپت رو توی مسیر /lib/systemd/system-sleep/ قرار دادم و همه چی عالی بود مشکل حل شد اما مثل اینکه با اتصال یه فلش یا همچین چیزی (با اینکه پورت usb مودم ثابت هست ) جای اسم پورتها در لینوکس عوض میشه و دیگه این اسکریپت کار نمی کنه . لطفا اگه راه حلی می دونین بنده رو بی نصیب نزارید :)
ممنونمشکل از اونجایی شروع شد که مودم adsl رو با کابل usb به سیستم وصل کردم (دبیان ۱۱) که در کمال تعجب بدون هیچ مقدمه ای و نصب هیچ بسته ای مودم رو شناسایی کرد ولی وقتی سیستم رو suspend می کنم و دوباره wakeup میشه نتورک منیجر به شکل زیر درمیاد و اینترنت قطع میشه :
(https://s6.uupload.ir/files/untitled_q378.jpg)
برای حل این مشکل با کمی سعی و خطا پورت usb مربوط به مودم رو پیدا کردم و یه اسکریپت دوخطی با سرچ پیدا کردم که بصورت زیر هست :کد: [انتخاب]#!/bin/bash
sudo sh -c "echo 0 > /sys/bus/usb/devices/usb1/authorized"
sleep 1
sudo sh -c "echo 1 > /sys/bus/usb/devices/usb1/authorized"
این اسکریپت رو توی مسیر /lib/systemd/system-sleep/ قرار دادم و همه چی عالی بود مشکل حل شد اما مثل اینکه با اتصال یه فلش یا همچین چیزی (با اینکه پورت usb مودم ثابت هست ) جای اسم پورتها در لینوکس عوض میشه و دیگه این اسکریپت کار نمی کنه . لطفا اگه راه حلی می دونین بنده رو بی نصیب نزارید :)
اگر برند و مدل کارت شبکهتون رو بگید، شاید بشه بهتر راهنمایی کرد.
اگر تبلیغی برای اینتل و AMD و حومه برداشت نشه، معمولا این مواقع مخازن non-free رو باید اضافه کنید و intel-microcode و amd-microcode (بسته به سختافزار مورد استفاده) رو نصب کنید.
راستش vrms رو نصب کردم و با جمله :جالبه چرا واسه من افتخار نمیکنه؟ ;D
No non-free or contrib packages installed on ashkan! rms would be proud.
مواجه شدم همون بهتره که خرابش نکنم اینجوری بیشتر حال میده :) ریچارد استالمن افتخار بکنه :)
No non-free or contrib packages installed on debian! You have completed the first step to enlightenment
نمی دونم حتما یه کاری کردی که ریچارد ناراحت شده ! :)راستش vrms رو نصب کردم و با جمله :جالبه چرا واسه من افتخار نمیکنه؟ ;D
No non-free or contrib packages installed on ashkan! rms would be proud.
مواجه شدم همون بهتره که خرابش نکنم اینجوری بیشتر حال میده :) ریچارد استالمن افتخار بکنه :)نقلقولNo non-free or contrib packages installed on debian! You have completed the first step to enlightenment
$ apt show vrms
جالبه بررسی کنید که چه نسخهای از vrms روی سیستم نصب شده است.روی دبیان ناپایدار هستم و منطقاً نسخۀ آخر رو دارم. نگاهی به کدها و کامیت ها انداختم. نام ریچارد استالمن رو حذف کردهان و خودشون انگار گفتن که به رهبر نیازی ندارن و نمیخوان از شخصی نام برده بشه(؟)، همچنین نام vrms رو به check-dsfg-status تغییر دادهان. تقریباً چهارهفته پیش این اتفاق افتاده.
من روی دبیان ۱۱ کدهای بسته را دریافت کردم و نتونستم اون رشته را در کدها پیدا کنم.
HISTORY
This program was written by Bdale Garbee and Bill Geddes for the Debian GNU/Linux system, in response to an open discussion with Richard Stallman
about the issues surrounding the availability/desirability of the 'non-free' package tree in Debian.
ممنون جالبتر شد. باید سر فرصت بررسی کنم.رفتم بیشتر بررسی کردم. یه بابایی بهشون گفته که این vrms ربطی به ریچارد استالمن و یه شخص خاص نداره بلکه ربط به رهنمودهای دبیان(DFSG) داره که اتفاقا حرفشون بسیار منطقی بوده.
...فکر کنم پورتهای usb یا کنترلرهای اونها یه id داشته باشند که ثابت هست. احتمالا اگه از اون id استفاده کنید، مشکل حل میشه. خروجی lsusb رو ببینید.
اما مثل اینکه با اتصال یه فلش یا همچین چیزی (با اینکه پورت usb مودم ثابت هست ) جای اسم پورتها در لینوکس عوض میشه و دیگه این اسکریپت کار نمی کنه . لطفا اگه راه حلی می دونین بنده رو بی نصیب نزارید :)
ممنون بله درست می فرمایید آیدی پورت ثابت هست...فکر کنم پورتهای usb یا کنترلرهای اونها یه id داشته باشند که ثابت هست. احتمالا اگه از اون id استفاده کنید، مشکل حل میشه. خروجی lsusb رو ببینید.
اما مثل اینکه با اتصال یه فلش یا همچین چیزی (با اینکه پورت usb مودم ثابت هست ) جای اسم پورتها در لینوکس عوض میشه و دیگه این اسکریپت کار نمی کنه . لطفا اگه راه حلی می دونین بنده رو بی نصیب نزارید :)
sudo sh -c "echo 0 > /sys/bus/usb/devices/usb1/authorized"
اگه راه دیگه ای هم داره لطفا بفرمایید
#!/bin/sh
set -e
readonly SYS_USB_DEVICES_DIR='/sys/bus/usb/devices'
readonly ID_VENDOR=''
readonly ID_PRODUCT=''
readonly WAITE=2
unset TARGET
[ ! -d "${SYS_USB_DEVICES_DIR}" ] && echo "${SYS_USB_DEVICES_DIR} directory does not exist" && exit 1
for usb_dev in "${SYS_USB_DEVICES_DIR}"/*; do
[ ! -L "${usb_dev}" ] && continue
if [ -r "${usb_dev}/idVendor" ] && [ -r "${usb_dev}/idProduct" ]; then
if [ "$(cat "${usb_dev}/idVendor")" = "${ID_VENDOR}" ] && [ "$(cat "${usb_dev}/idProduct")" = "${ID_PRODUCT}" ]; then
readonly TARGET="${usb_dev}"
break
fi
fi
done
unset usb_dev
[ -z "${TARGET}" ] && exit 0
echo '0' > "${TARGET}/authorized"
sleep "${WAITE}"
echo '1' > "${TARGET}/authorized"
readonly ID_VENDOR='008b'
readonly ID_PRODUCT='a7fc'
بزرگ و کوچک بودن حروف مهم هست.این اسکریپت رو امتحان کنیدبسیار عالی بود درست شد :) :)کد: [انتخاب]#!/bin/sh
set -e
readonly SYS_USB_DEVICES_DIR='/sys/bus/usb/devices'
readonly ID_VENDOR=''
readonly ID_PRODUCT=''
readonly WAITE=2
unset TARGET
[ ! -d "${SYS_USB_DEVICES_DIR}" ] && echo "${SYS_USB_DEVICES_DIR} directory does not exist" && exit 1
for usb_dev in "${SYS_USB_DEVICES_DIR}"/*; do
[ ! -L "${usb_dev}" ] && continue
if [ -r "${usb_dev}/idVendor" ] && [ -r "${usb_dev}/idProduct" ]; then
if [ "$(cat "${usb_dev}/idVendor")" = "${ID_VENDOR}" ] && [ "$(cat "${usb_dev}/idProduct")" = "${ID_PRODUCT}" ]; then
readonly TARGET="${usb_dev}"
break
fi
fi
done
unset usb_dev
[ -z "${TARGET}" ] && exit 0
echo '0' > "${TARGET}/authorized"
sleep "${WAITE}"
echo '1' > "${TARGET}/authorized"
مقادیر متغیرهای ID_VENDOR و ID_PRODUCT رو بر اساس id مربوط که از lsusb میگیرید، تغییر بدید.
برای مثال اگه idProduct برابر 008b و idVendor برابر a7fc باشه، خطهای ۶ و ۷ به این شکل در میان:کد: [انتخاب]readonly ID_VENDOR='008b'
بزرگ و کوچک بودن حروف مهم هست.
readonly ID_PRODUCT='a7fc'
مقدار متغیر WAITE رو هم میتونید تغییر بدید. عدد مورد نظر حتما بیشتر از صفر و بر مبنای ده باشه.
بهتره خروجی lsusb رو قرار بدید تا بیشتر بشه راهنمایی کرد.
Bus 002 Device 003: ID aaaa:bbbb Trendchip Technologies Corp.
Bus 002 Device 001: ID xxxx:xxxx Linux Foundation 2.0 root hub
Bus 007 Device 001: ID xxxx:xxxx Linux Foundation 1.1 root hub
Bus 006 Device 001: ID xxxx:xxxx Linux Foundation 1.1 root hub
Bus 005 Device 001: ID xxxx:xxxx Linux Foundation 1.1 root hub
Bus 001 Device 001: ID xxxx:xxxx Linux Foundation 2.0 root hub
Bus 004 Device 001: ID xxxx:xxxx Linux Foundation 1.1 root hub
Bus 003 Device 001: ID xxxx:xxxx Linux Foundation 1.1 root hub
بعد مقادیر ID_VENDOR و ID_PRODUCT رو به ترتیب در ابتدای اسکریپت قرار می دیم (من WAITE رو دست نزدم)chmod +x usb-reset.sh
و در مسیر /lib/systemd/system-sleep/ کپی اش می کنیم :sudo cp usb-reset.sh /lib/systemd/system-sleep/
و تمام !
لارم نیست اون id ها رو مخفی کنید. چیز خاصی نیستند. اولی مربوط به سازنده دستگاه هست و دومی مربوط به id که سازنده، به اون مدل سختافزار داده.ببخشید من نمی دونستم !