کارکرد زیاد فن (Fan) لپتاپها روی لینوکس یک مشکل شناخته شده است که البته کارهایی هم برای حل آن انجام شده ولی حداقل برای لپتاپ من (Inspiron 5520) این مشکل به صورت پیشفرض حل نشده و نیازمند برخی کارهای اضافه است.
همین امروز به یک راه حل رسیدم که تا انتهای آن نرفته صدای فن قطع شد.
اولین کار، لود کردن درایور i8k است که امکان دسترسی به SSM BIOS لپتاپهای DELL را میدهد. خوشبختانه این درایور از نسخه ۳ به بعد به کرنل لینوکس اضافه شده و فعال کردن آن با دستور زیر به راحتی انجام میگیرد:
sudo modprobe -v i8k
با اجرای این دستور باید خروجی شبیه این دریافت شود:
insmod /lib/modules/3.5.0-30-generic/kernel/drivers/char/i8k.ko
بعد از آن باید ابزار i8kutils را با دستور زیر نصب کنیم تا دمای CPU و سرعت فن را مانیتور کند:
sudo apt-get install i8kutils
بر روی اوبونتو ۱۴.۰۴ من خروجی زیر را گرفتم:
* Starting Dell fan/cpu-temperature monitor i8kmon [ OK ]
که یعنی مانیتورینگ همین الان آغاز شده و البته بلافاصله صدای فن قطع شد.
در صورتی که مانیتورینگ بلافاصله پس از نصب آغاز نشود مشکلی نیست و راه حلی برای آن وجود دارد که در این مقاله به طور کامل توضیح داده شده.
هشدار: لطفاً هیچ وقت بدون مطالعه اینکه هر دستور چه کاری انجام میدهد آن را اجرا نکنید. در مقاله مذکور برخی از دستورات معادل هم هستند و صرفا برای آگاهی و حق انتخاب نوشته شده. نیازی نیست هر دستور را در گوگل سرچ کنید فقط مقاله را به طور کامل مطالعه کنید.
به روز رسانی ۱
پس از ریست کردن سیستم، صدای فن دوباره به حالت اول بازگشت با مشاهده log سیستم احتمال میدهم مشکل بخاطر به روز رسانی BIOS سیستمم باشد که همین چند وقت پیش انجام دادم و احتمالا i8k به همین دلیل نمیتواند امضای DELL را بر روی BIOS تشخصی دهد. در این حالت کافیست i8k را مجبور به این کار کنیم. برای این کار باید سرویس آن ویرایش شود. با دستور زیر میتوانیم از GEdit برای ویرایش استفاده کنیم.
sudo gedit /etc/init.d/i8kmon
خطی که حاوی دستور زیر است:
modprobe i8k >/dev/null 2>&1 || true
باید به دستور زیر تبدیل شود:
modprobe i8k force=1 >/dev/null 2>&1 || true
با اضافه شدن force=1 به i8k اطلاع داده میشود که بدون توجه به امضای BIOS کارش را انجام دهد. با ریست کردن و یا اجرای دستور زیر دوباره فن ساکت میشود:
sudo service i8kmon start
نصب پیشفرض i8k باعث بالا رفتن حرارت لپتاپم شد. چون تنظیمات پیشفرض آن تا حدود دمای ۷۰ درجه را عادی تلقی میکند.
برای تنظیم اینکه فن با چه سرعتی در چه بازه حرارتی کار کند اول باید فایل /etc/i8kmon.conf را ایجاد کنیم:
1
sudo gedit /etc/i8kmon.conf
و داخل آن میتوانیم i8k را کانفیگ کنیم که یک کانفیگ نمونه به شکل زیر است:
# Run as daemon, override with --daemon option
set config(daemon) 0
# Automatic fan control, override with --auto option
set config(auto) 1
# Report status on stdout, override with --verbose option
set config(verbose) 1
# Status check timeout (seconds), override with --timeout option
set config(timeout) 20
# Temperature thresholds: {fan_speeds low_ac high_ac low_batt high_batt}
set config(0) {{-1 0} -1 40 -1 40}
set config(1) {{-1 1} 30 60 30 60}
set config(2) {{-1 2} 53 128 53 128}
# end of file
دقت شود که اگر لپتاپ مجهز به دو فن باشد باید تنظیمات متفاوتی را استفاده کرد.
مهمترین قسمت این تنظیمات خطوط ۱۵ تا ۱۷ هستند که به ترتیب زیر عمل میکند:
در صورتی که دمای CPU زیر ۴۰ درجه باشد فن خاموش میشود
اگر دما زیر ۶۰ درجه باشد فن با سرعت ۱ به کار میافتد
اگر دما بالای ۶۰ درجه باشد فن با سرعت ۲ به کار میافتد
حالا با ریست کردن سرویس i8kmon با دستور زیر و یا ریست کردن سیستم فنها بیشتر کار میکنند و سیستم خنکتر میمانند:1
sudo service i8kmon restart
منبع: امیر کریمی از وبلاگ dev-frame.com برگرفته از Ask Ubuntu