لینوکس و من

۳ مطلب با کلمه‌ی کلیدی «resume» ثبت شده است

از بین بردن نویز صدای هدفون در درایورهای اینتل

اینجا در مانجارو وقتی سیستم حالت suspend به resume میاد یک نویز عجیب و بد توی هدفون شنیده میشه. برای اینکه این نویز برطرف شه باید ماژول صدا رو یکبار حذف و دوباره بارگذاری کنیم.
ماژول صدای درایور اینتل snd_hda_intel است. با این دستور این ماژول غیرفعال میشه:
sudo rmmod -f snd_hda_intel

حالا با این دستور میبایست مدل درایور اینتلی که دستگاه شما داره مشخص کنیم:
aplay --list-devices

که یه سری توضیحات میاره و عددی شبیه به ALC668 مد نظر ماست. حالا با این دستور ماژول مجددا به شکل صحیح بارگذاری میشه:
sudo modprobe snd_hda_intel ALC668

اما انجام دادن این پروسه بعد از هر resume باید خودکار انجام بشه. بنابراین میایم یه اسکریپت در مسیر /usr/local/bin/ میسازیم:
sudo nano /usr/local/bin/snd_hda_intel-resume

با این محتوی:

#!/bin/bash
rmmod -f snd_hda_intel && sleep 2 && modprobe snd_hda_intel ALC668


و به اون مجوز اجرایی میدیم. (با chmod +x). اما میتونیم این رو تبدیل به یک سرویس systemd بکنیم که بعد از هر resume بصورت خودکار شروع بشه و ما هیچ دخالتی نداشته باشیم:
sudo nano /etc/systemd/system/snd_hda_intel-resume.service

با این محتوی:

[Unit]
Description=Reloading intel sound module after suspend
After=suspend.target

[Service]
Type=oneshot
ExecStart=/usr/local/bin/snd_hda_intel-resume

[Install]
WantedBy=suspend.target
و بعد برای فعال کردن این سرویس:
sudo systemctl enable snd_hda_intel-resume.service

USB3 چرا خاموش شد؟!

امروز برای اولین بار بعد از resume شدن از suspend متوجه شدم که پورت های USB3 کار نمیکنند. چاره ی کار بجستم و مشکل حل شد. صرفا جهت یادآوری خودم مینویسم. اگه این مشکل به طور مداوم برای شما پیش میاد، یه سری به لینک منبع بزنید.
sudo rmmod xhci_hcd
sudo modprobe xhci_hcd

بازی با سرویس ها (اجرای دستورات شما)

سلام.
هدف اصلی: خاموش کردن nvidia ion هنگام boot و بعد از resume
هدف فرعی ۱: اجرای اسکریپت مخصوص خاموش کردن nvidia ion در آدرس usr/bin/disablecard/
هدف فرعی ۲: افزایش زمان باتری و کاهش دمای سیستم!

خیلی گشتم تا این رو در آرچ پیدا کنم. توی دبیان خیلی راحت فایل اسکریپت رو میذاشتیم در یک فولدر خاصی و اون اسکریپت بعد از resume اجرا میشد. برای boot هم با crontab این کار رو انجام میدادم. اما در آرچ اینگونه نیست...
آرچ از systemd  استفاده میکنه. این ابزاریه برای کنترل سرویس های آرچ. (روی لینکش کلیک کنید تا متوجه بشید). برای اینکه اتفاق خاصی در زمان خاصی بیفته، باید اون رو تبدیل به یک سرویس کنیم و بدیمش به آرچ که بفهمه و اجراش بکنه. من زیاد جزئیات و عمق مطلب رو نمیدونم. صرفا با خوندن ویکی و چند بار آزمون و خطا موفق شدم. شما میتونید این کار رو تعمیم بدید و هر کاری که دوست دارید با سیستمتون انجام بدید.

فایل disablecard یک اسکریپت مخصوص خاموش کردن nvidia ion در لپتاپ منه (asus 1215n) که اون رو در usr/bin/ قرار دادم که با دستور sudo disablecard به طور دستی اجراش میکردم تا کارش رو انجام بده. برای اینکه این اتفاق رو تبدیل به یک سرویس کنم این کارها رو کردم.

۱- یک فایل به اسم دلخواه nvidia-off.service در این فولدر میسازیم usr/lib/systemd/system/ و این محتوی رو توش میریزیم!
[Unit]
Description=Turns off nvidia ion
After=slim.service

[Service]
ExecStart=/usr/bin/disablecard
Type=oneshot

[Install]
WantedBy=slim.service

توضیح اینکه After یعنی اینکه این سرویس بعد از اجرای چه سرویسی باید اجرا بشه؟ من لیستی از سرویسهایی رو که هنگام بوت اجرا شده بودند با دستور systemctl list-unit-files --type=service پیدا کردم. و دیدم مثلا کدوم سرویس enabled هست. گفتم بعد از اون این اتفاق بیفته! شما هم میتونید به دلخواه خودتون ببینید سیستمتون چطوری تنظیم شده.
۲- برای resume هم یک فایل به اسم دلخواه nvidia-off-resume.service در همون فولدر میسازیم و این محتوی رو توش میریزیم:
[Unit]
Description=Turns off nvidia after resume
After=suspend.target

[Service]
Type=oneshot
ExecStart=/usr/bin/disablecard

[Install]
WantedBy=suspend.target
۳- حالا دستورات زیر رو یکی یکی اجرا میکنیم تا کارمون تکمیل بشه:

sudo systemctl daemon-reload
sudo systemctl enable nvidia-off-resume
sudo systemctl enable nvidia-off
و در پایان یک بار reboot میکنیم تا نتیجه رو ببینیم. که موفقیت آمیز بود! با مراجعه به ویکی آرچ میتونید کارهای پیچیده تر و جالب تری هم بکنید.