انجمنهای فارسی اوبونتو
کمک و پشتیبانی => سایر توزیعهای گنو/لینوکس => آرچ => نویسنده: بابک طور در 01 شهریور 1396، 06:11 بظ
-
سلام.
من مانجارو دارم. یه مدتی هست که بعضی وقتها(بیشتر اوقات) برای بازگشت از suspend باید دکمهی پاور سیستم رو بزنم! در صورتی که قبلاً فقط با زدن چند دکمهی صفحه کلید یا موس از suspend خارج میشد.
کدوم log رو باید چک کنم؟ اصلاً این مشکل از کجا می تونه باشه؟
-
سلام بابک جان
در مورد log باید بگم اگه برای suspend از pm-utils استفاده می کنین باید فایل زیر رو چک کنین:
cat /var/log/pm-suspend.log
ولی اگه از systemctl suspend استفاده می کنین باید خروجی دستور زیر رو چک کنین:
sudo journalctl | less
ولی در مورد مشکل شما باید بگم بعید می دونم مشکل رو تو اون log ها پیدا کنین به نظر من چک کردن فایل زیر از هر دوتای بالا واجب تر:
cat /proc/acpi/wakeup
خروجی دستور بالا نیشون می ده کدوم دیوایس ها و با کدوم پورت ها power شون فعال و کدوما غیرفعال هستن پس خروجی دستور بالا به همراه خروجی lsusb رو بذارین تا نیگاه کنیم کیبورد و موس شما به کدوم پورت وصله و وضعیت اون پورت تو حالت suspend چطوریه؟
-
[babak@home-pc ~]$ cat /proc/acpi/wakeup
Device S-state Status Sysfs node
P0P1 S3 *disabled pci:0000:00:01.0
PS2K S4 *disabled
PS2M S4 *disabled pnp:00:02
UAR1 S3 *disabled pnp:00:03
P0P2 S4 *disabled pci:0000:00:1e.0
USB0 S3 *enabled pci:0000:00:1d.0
USB1 S3 *enabled pci:0000:00:1d.1
USB2 S3 *enabled pci:0000:00:1d.2
USB5 S3 *disabled
USB6 S3 *enabled pci:0000:00:1a.2
EUSB S3 *enabled pci:0000:00:1d.7
USB3 S3 *enabled pci:0000:00:1a.0
USB4 S3 *enabled pci:0000:00:1a.1
USBE S3 *enabled pci:0000:00:1a.7
PEX0 S4 *disabled pci:0000:00:1c.0
PEX1 S4 *disabled pci:0000:00:1c.1
PEX2 S4 *disabled pci:0000:00:1c.2
PEX3 S4 *disabled pci:0000:00:1c.3
PEX4 S4 *disabled pci:0000:00:1c.4
PEX5 S4 *disabled pci:0000:00:1c.5
SLPB S4 *enabled platform:PNP0C0E:00
PWRB S3 *enabled platform:PNP0C0C:0
[babak@home-pc ~]$ lsusb
Bus 002 Device 002: ID 0402:5603 ALi Corp. M5603 Video Camera Controller
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 008 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 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 002: ID 192f:0716 Avago Technologies, Pte.
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
صفحه کلید به ps/2 متصل هست.
-
فک کنم مشکل رو درست حدس زدم چوون به این خط نیگاه کنین:
PS2K S4 *disabled
اون PS2K همون کیبورد شماس که در واقع PS/2 keyboard هستش
که همون طور که می بینین disable هستش اگه کیبوردتون از نوع usb بود قاعدتاً تنظیمات wakup اش باید تو مسیر زیر باشه:
/sys/bus/usb/devices/usbX/power/wakeup
که اون usbX شماره ی پورت هستش
ولی شما خروجی دستور زیر رو بذارین تا ببینم تنظیمات کیبورد شما تو کجا قرار داره:
grep . /sys/bus/*/devices/*/power/wakeup
dmesg | grep -i keyboard
به طور موازی این راه رو هم تست کنین:
1.اول نرم افزار acpitool رو نصب کنین (یه سرچی زدم تو aur هستش ظاهراً اگه نبود خودتون بگردین ببینین چطوری میشه اینو تو مانجارو نصب کرد)
sudo yaourt -S acpitool
یه بار دیگه با دستور زیر چک کنین PS2K چندم هستش (البته قاعدتاً باید دوم باشه)
acpitool -w
حالا دستور زیر رو اجرا کنین تا اونو (با فرض دوم بودن) فعالش کنیم (حرف W اینجا بزرگ هستش) (با وارد کردن دوباره ی دستور پایین PS2K دوباره disable می شه پس فقط یه بار وارد کنین):
sudo acpitool -W 2
الان تست کنین ببینین مشکل حل می شه یا نه ؟
فقط اینکه بعد ری استارت به احتمال زیاد این تنظیمات به حالت اول برمی گرده پس اگه راه دوم (قبل ری استارت کردن سیستم) جواب داد یه بار سیستم رو ری استارت کنین ببینین به حالت اول برمی گرده یا نه و نتیجه رو اعلام کنین ...
پ.ن:موس شما هم به پورت PS/2 وصله ؟ آخه اونجا خروجی یه PS2M هم شناخته که اونم disable هستش ...
-
ممنون از راهنماییهات تا اینجا.
از کجا میشه فهمید هر وسیله توی فهرست lsusb به کدوم usbX تو فهرست wakeup ربط داره؟
سوال دیگه اینکه چجوریه که هفتهی پیش این مشکل برطرف شده بود و دوباره اینجوری شد؟ ممکنه برنامه یا آپدیتی نصب کرده باشم که باعث اینکار شده باشه؟
-
خواهش می کنم فقط ایکاش به نتیجه برسه چون من این مشکلو با usb داشتم ولی قضیه ی ps2 یکمی فرق داره
بهترین راهی که به ذهنم می رسه استفاده از idVendor یا idProduct هستش
مثلاً شما می خواین بفهمین این خط مربوط به کدوم usbX می شه:
Bus 004 Device 002: ID 192f:0716 Avago Technologies, Pte.
اینجا idVendor مون 192f هستش
و idProduct مون 0716 هستش
الان مثلاً می خوام با idVendor چک کنم:
grep . /sys/bus/*/devices/*/idVendor | grep 192f
اگه idVendor چند تا خروجی داشت با idProduct هم چک کنین:
grep . /sys/bus/*/devices/*/idProduct | grep 0716
با کنار هم قرار دادن این دو خروجی می تونین بفهمین usbX کدومه
ویرایش:در مورد سوال دیگه تون هم بله ممکنه با آپدیت شدن بعضی پکیج ها مثل acpi تنظیمات به هم ریخته باشه یا حتی با نصب پکیج ها جدید هم ممکنه
-
یه اشتباهی کردم، ولی نمیدونم چرا درست شد!!!!
با nano فایل زیر رو به enabled تغییر دادم مشکل فعال نشدن با صفحه کلید درست شد.
sudo nano /sys/bus/usb/devices/usb4/power/wakeup
ولی بعدش که بررسی کردم، متوجه این اتفاقات شدم:
تو جواب cat /proc/acpi/wakeup که براتون نوشتم، usb4 در حالت enabled قرار داشت، ولی موقع تغییر فایل /sys/bus/usb/devices/usb4/power/wakeup با nano داخل فایل نوشته شده بود disabled.
جالبترش اینجاست که با تغییر اون فایل، PS2K در فهرست cat /proc/acpi/wakeup به حالت enabled دراومد!!
###############
از کمک شما خیلی ممنونم.
تا اینجا فهمیدم که تنظیمات مربوط به wakeup رو از کجا بررسی کنم.
-
بله کاملاً درسته دلیل اینکه گفتم تنظمیات wakeup تو اینجا قرار داره هم همینه چون تنظمیات اینجا قرار داره:
/sys/bus/usb/devices/usbX/power/wakeup
ولی نمی دونم چرا اون usb4 با اون ps2k بنده خدا ! تداخل داره ولی به هر حال اگه با این کار مشکلتون حل میشه کارای زیر رو انجام بدین تا این به عنوان یک rule قرار بگیره و تو هر ری استارت و بعد هر خروجی suspend این عمل اتفاق بیوفته:
فایل زیر رو بسازین:
sudo nano /etc/rc.local
بعد محتویات زیر رو توش بریزین:
echo enabled > /sys/bus/usb/devices/usb4/power/wakeup
و فایل رو سیو کنین بعدش دستور زیر رو بزنین:
sudo nano /etc/udev/rules.d/10-wakeup.rules
بعد محتویات زیر رو توش بریزین:
ACTION=="add", SUBSYSTEM=="usb", ATTRS{idVendor}=="192f", ATTRS{idProduct}=="0716" RUN+="/bin/sh -c 'echo enabled > /sys/bus/usb/devices/usb4/power/wakeup'"
فقط تو دستور بالا من idVendor و idProduct رو از روی خروجی lsusb حدس زدم اگه اشتباهه خودتون عوض کنین
حالا یه دور سیستم رو ری استارت کنین ببینین مشکل حل می شه یا نه؟
-
بدون تعریف rule هم بعد از ریاستارت درست کارمیکنه. \\:D/
-
بدون تعریف rule هم بعد از ریاستارت درست کارمیکنه. \\:D/
خب پس خدا رو شکر که خوش شانس بودین چون من به تعریف rule هم نیاز پیدا کرده بودم ;D
اگه مشکلتون کامل حل شد عنوان رو (حل شد) کنین
-
مشکل من که حل شد.
فقط سوالی که باقی میمونه این هست که هرکدوم از deviceهای فهرست /proc/acpi/wakeup چی هستن و از کجا میشه حالتشون رو تغییر داد؟
بعضیهاش مشخصه که چی هستن، مثل usbها. و خوب شما آدرسش رو هم گفتی.
و یا اون آخر به ترتیب sleep button و power button هستن. ولی نمیدونم اگر بخوام تغییری در حالتشون ایجاد کنم باید به چه آدرسی برم.
یک سری هم که مثل p0p1 و یا uar و... که اصلاً نمیدونم چی هستن.
اصلاً با تغییر خود اون فایل میشه تغییرشون داد؟ (شاخهی proc برای چی بود؟)
-
فقط سوالی که باقی میمونه این هست که هرکدوم از deviceهای فهرست /proc/acpi/wakeup چی هستن
این دیوایس ها توسط acpi (بخوام دقیق تر بگم توسط dsdt که قسمتی از مشخصات acpi هستش) شناسایی می شن و از اونجایی که تو استاندارد acpi ،سیستم عامل از طریق بایوس دسترسی به سخت افزارا رو پیدا می کنه پس امکان تغییر وضعیت اکثر این دیوایس ها از طریق خود سیستم عامل ممکنه ولی وضعیت بعضی از این دیوایس ها فقط از طریق بایوس قابل تغییر هستن
این دیوایس های شامل دیوایس های یکپارچه با مادربورد شما و دیوایس های متصل به ماردبورد شما هستن
اسم این دیوایس ها به این صورت هستش (البته من خودم هم همش رو بلد نیستم) :
PWRB : دکمه ی پاور
SLPB : دکمه ی sleep
PS2K : کیبورد با اتصال ps/2
PS2M : ماوس با اتصال ps/2
EHC : یو اس بی ۲
USB : بازم یو اس بی ۲
XHC : یو اس بی ۳
PEG : اسلات PCI-Express مخصوص گرافیک
HDEF : چیپ صدا
IGBE : چیپ اترنت
UAR : گیرنده ی ناهمگام جهانی (Universal Asynchronous Receiver)
P0P : [فک کنم چون اینو مطمئن نیستم] چیپ اترنت (integrated Ethernet)
LID : بستن لپ تاپ
از کجا میشه حالتشون رو تغییر داد؟
تمام اونایی که می شه حالتش رو از طریق خود سیستم عامل (و نه بایوس) تغییر داد رو با دستور زیر پیدا کنین:
grep . /sys/bus/*/devices/*/power/wakeup
این یه لیست دیوایس رو بهتون می ده که آپشن wakeup رو داره بقیه wakeup ندارن
یه سری دیوایس ها هم هستن که از طریق BIOS باید تغییرش بدین (البته اگه بایوس چنین امکانی در اختیارتون بذاره)
و یا اون آخر به ترتیب sleep button و power button هستن. ولی نمیدونم اگر بخوام تغییری در حالتشون ایجاد کنم باید به چه آدرسی برم.
مثلا خروجی این دستور رو رو سیستم خودم می ذارم تا ببینیم مسیر sleep button گذاشت:
cat /proc/acpi/wakeup | grep SLPB
SLPB S4 *enabled platform:PNP0C0E:00
الان همون طور که از قسمت 4 ام معلومه باید تو مسیر platform باشه و اسم دیوایسش PNP0C0E:00 باشه ولی اینو چک می کنم:
grep . /sys/bus/*/devices/*/power/wakeup | grep "PNP0C0E:00" | grep "platform"
/sys/bus/platform/devices/PNP0C0E:00/power/wakeup:disabled
همون طور که می بین چنین دیوایسی هستش
اصلاً با تغییر خود اون فایل میشه تغییرشون داد؟ (شاخهی proc برای چی بود؟)
اگه این فایل رو می گین:
cat /proc/acpi/wakeup
یه زمانی می شد ...
مثلاً تو اینترنت برای حل مشکلاتی مشابه شما چنین دستوراتی پیشنهاد کردن مثلاً گفته می شد (الان نمی شه) برای غیرفعال کردن USB3 باید اینو با شل روت بزنین:
echo XHC > /proc/acpi/wakeup
ولی الان بلافاصله با خروج از حالت suspend و یا ری استارت سیستم این فایل دوباره بازنویسی می شه و محتوای اون به حالت اول برمی گرده در ضمن این فایل دیگه توسط سیستم خونده نمی شن و فقط یه خروجی هستش برای کاربر تا بفهمه اوضاع چطوریه و سیستم کانفیگ های توی مسیر /sys/bus/usb/devices/usb4/power/wakeup رو می خونه
ولی خب بهترین جا برای دیدن و چک کردن وضعیت wake up فایل /proc/acpi/wakeup هستش که تمام وضعیت رو یک جا داره و اون فایل برای اون هستش
-
واقعاً دست شما درد نکنه. یجورایی یه ویکی شد!
من که به جواب سوالهام رسیدم. امیدوارم کسان دیگهای هم که چنین مشکلی پیدا میکنن با خوندن این پستها مشکلشون برطرف شه.
-
خواهش می کنم بابک جان
موفق باشین