التحكم في سرعة مروحة تبريد اللابتوب في لينكس

قد يهمك هذا المقال إذا:
- كان الـ BIOS في جهازك لا يسمح لك بالتحكم في سرعة المروحة
- إذا تأكدت أن عيوب المروحة غير ناتجة عن تراكم الأتربة، ولا انثناء أنصالها
- كنت قد حاولت استخدام برامج مثل FanControl و ThinkFan و pwmconfig لكن فشلت البرامج في التعرف عن مجس الاستشعار المتعلق بالمروحة
- إذا كانت المروحة مزعجة جدا وتعمل بأقصى سرعة حتى في حالة عدم استخدامك لأي برامج ثقيلة

أجهزة اللابتوب جيدة التصنيع سترفض العمل في حالة توقف المروحة، لأن انعدام التبريد يؤدي لتلف المعالج. ولهذا - كنوع من زيادة الأمان - ترفض هذه الشركات المصنعة أحيانا أن تعطي لنظام التشغيل (ويندوز أو لينكس) حق التحكم التام في سرعة المروحة، وتجعل المتحكم النهائي هو الجهاز نفسه، عن طريق البرمجيات الصغيرة المدمجة مع الهاردوير.
وهي فكرة جيدة، لكن أحيانا - بعد طول الاستخدام أو حدوث مشاكل كهربية أو زيادة الحرارة - يتلف مجس الاستشعار الذي يخبر الجهاز بدرجة الحرارة. وبالتالي - تلقائيا، ولحماية المعالج وبيانات القرص الصلب - يرفع الجهاز كل القيود عن المروحة ويجعلها تدور بأقصى سرعة ممكنة، وهو وضع يسمى Disengaged.. لأنه ما دام لا يعلم درجة الحرارة فإنه يفترض أنها عالية، وهذا أفضل طبعا من أن يفترض أنها منخفضة.. لأن زيادة التبريد لا تسبب مشكلة أما انعدام التبريد فيؤدي لكارثة.
لكن في هذه الحالة ستظل المروحة تعمل بأقصى طاقتها بشكل دائم! مما يؤدي لضوضاء لا تطاق، وأيضا لتقليل عمر المروحة الافتراضي.. حيث أن الوضع الطبيعي أنها لا تحتاج للعمل إلا عندما تزيد درجة حرارة المعالج عن مستوى معين.

برامج التحكم في سرعة المروحة تعتمد على ما يسمى ACPI، وعلى مجسات الاستشعار.. فلو كان جهازك لا يسمح لطريقة ACPI بالتحكم في المروحة أصلا، وكان مجس الاستشعار تالف.. فما الحل؟
الحل هو اللجوء لطريقة نجبر فيها الهاردوير على تقليل سرعة المروحة، عن طريق ما يسمى Embedded Controller
وهي عملية خطرة (لأنك ربما توقف المروحة نهائيا عن العمل فيذوب المعالج!)، وصعبة (لأن بنية كل جهاز تختلف عن الآخر، وشركات التصنيع لا تنشر هذه التفاصيل)
لكنه حل نهائي، واستخدامه يكون على مسؤوليتك الخاصة.
يتلخص الحل في استخدام سكريبت Perl اسمه acer_ec.pl
(اتضح أنه لا يقتصر فقط على أجهزة شركة acer بل يعمل على عدة أجهزة أخرى، مثل بعض موديلات لينوفو Lenovo مثلا)
قم بتحميل ملفات الكود من هنا
https://github.com/enyone/acers3fand
https://github.com/enyone/acers3fand/blob/master/acer_ec.pl
https://github.com/enyone/acers3fand/blob/master/acers3fand_init
أو من هنا
https://sourceforge.net/projects/acers3fand/
ضع الملفين acers3fand و acers3fand_init في نفس المجلد ثم افتح طرفية Terminal في هذا المجلد واكتب الأمر التالي
sudo perl acers3fand regs
سيظهر لك جدول به مواضع في الذاكرة، مكتوبة بشفرة الـ Hexadecimal أو الـ Binary
اقرأ خانات الأرقام في السطر الأفقي الذي يبدأ بـ 90
كل موديل جهاز يختلف عن الآخر، لكن في الغالب ستجد أن الخانة الرابعة (وهي خانة 93، لأن العد يبدأ من 90) قيمتها 04، وأن الخانتين 94 و 95 قيمتهما تفوق الـ 200
هذه الخانات تتعامل مع المروحة مباشرة:
0x93 تجعل التحكم إما تلقائي أو يدوي
0x94 يمكنك تغييرها لو التحكم يدوي، ومنها يمكنك التحكم في سرعة المروحة
0x95 مهمتها إظهار السرعة الحالية للمروحة
ولهذا علينا استخدام سكريبت acers3fand  لإلغاء التحكم التلقائي وتحويله لتحكم يدوي، ثم إبطاء سرعة المروحة إلى مستوى مقبول
اكتب الأمر التالي
sudo perl acers3fand := 0x93 0x14 & sudo perl acers3fand := 0x94 0x81
ما فعلناه هنا هو
- تغيير قيمة الـ 04 إلى 14 (وهي تعني 20 في نظام Hexadecimal) [يمكنك فهم عملية تحويل الأرقام عن طريق استخدام تطبيق calculator علمي]
- تغيير سرعة المرحة إلى 81 (وهي تعني 129)
هناك قيم أخرى يمكنها زيادة السرعة أو إنقاصها أو إيقاف المروحة تماما، وهي
0xFF = 255 = إيقاف - خطر
0xD0 = 208 = منخفضة
0xB6 = 182
0x9E = 158
0x81 = 129
0x60 = 96 = عالية
0x00 = أقصى سرعة ممكنة - مزعجة

=====
هذه العملية مؤقتة، بمعنى أنك ستحتاج لتفعيلها كل مرة.
قرأت أنه يمكن تثبيتها عن طريق اتباع الخطوات التالية، لكن لم أختبرها بنفسي
Copy acer_ec.pl and acers3fand to /usr/local/bin/
Make sure both are executable (chmod +x) and owned by the root user
Copy acers3fand_init to /etc/init.d/
Make sure it is executable (chmod +x) and owned by the root user
Run: sudo ln -s /etc/init.d/acers3fand_init /etc/rc2.d/S99acers3fand
Reboot and check /var/log/syslog for lines "acers3fand"
=====
روابط قد تفيدك
http://forum.notebookreview.com/threads/acer-aspire-timelinex-3820tg-mods-tweaks-only.562576/#post-7260497
http://aceracpi.googlecode.com/svn/trunk/acer_ec/acer_ec.pl
https://github.com/F0rth/acer_ec/blob/master/acer_ec.pl
https://github.com/mk-fg/fgtk/#fan_control
http://en.wikipedia.org/wiki/Binary_numeral_system
http://en.wikipedia.org/wiki/Hexadecimal

تعليقات

المشاركات الشائعة من هذه المدونة

100 Arabic words in Frank Herbert's Dune

Darth Vader's Jewish Origin - The Golem of Star Wars

الفلك وفلكة المغزل