ฉันจะควบคุมพัดลมทำงานได้อย่างไร


34

ฉันรู้ว่ามีบางสิ่งที่เรียกว่า fancontrol ซึ่งช่วยให้คุณควบคุมความเร็วในการระบายอากาศของระบบของคุณ ฉันต้องการให้แฟน ๆ ของฉันหมุนเร็วขึ้นเล็กน้อยเนื่องจากแล็ปท็อปของฉันร้อนขึ้นอย่างมาก บทเรียนทั้งหมดและสิ่งที่ฉันพบสำหรับ Ubuntu รุ่นเก่าและดูเหมือนจะไม่ทำงานอีกต่อไป

ทุกคนสามารถอธิบายให้ฉันหรือให้ลิงก์ที่ดีกับฉันเกี่ยวกับวิธีการใช้งานบน Ubuntu ได้ไหม สิ่งที่แตกต่างกับเอฟเฟกต์เดียวกันก็ดีเช่นกัน


ขอข้อมูลเพิ่มเติมเกี่ยวกับฮาร์ดแวร์อาจช่วยได้เช่นแบรนด์แล็ปท็อปชื่อรุ่น / หมายเลขและประเภท / รุ่นของ BIOS
filescraps

@filescraps Dell Latitude D620: paste.ubuntu.com/699801
RobinJ

5
@ RobinJ - คุณได้ทำการตรวจสอบตามปกติสำหรับปัญหาความร้อนสูงเกินไป - ตรวจสอบฝุ่น / การอุดตัน - ดูฮีทซิงค์ประมวลผลของคุณเช่นกัน อัปเดตประวัติของคุณเป็นล่าสุดที่มีอยู่ คุณลองเพิ่ม "acpi_osi = Linux" ลงในด้วงของคุณแล้วหรือยัง? คุณใช้ตัวเลือกการบูตพิเศษหรือไม่? โดยทั่วไปประเด็นของฉันคือ - ปัญหาเรื่องความร้อนสูงเกินไปคือสิ่งที่พิมพ์ฝุ่น / acpi - คุณไม่จำเป็นต้องควบคุมพัดลมด้วยตนเอง
fossfreedom

พัดลมเริ่มทำงานได้เร็วขึ้นเมื่ออุณหภูมิอยู่ที่ 65 ° C และดูเหมือนว่ามันจะสายเกินไปเพราะเมื่อมันเริ่มสูงขึ้นมันจะไม่ไปต่ำกว่า 75 ° C เร็วเกินไปอีกต่อไป มันเป็นแล็ปท็อปและฉันไม่มั่นใจเพียงพอกับฮาร์ดแวร์ที่จะใช้มัน อะไรacpi_osi=Linuxทำอย่างไร ไม่มีตัวเลือกการบูตเพิ่มเติมเพียง GRUB เริ่มต้น
RobinJ

1
@RobinJ - อย่าลืมรูปแบบของเว็บไซต์คือการเพิ่มข้อมูลที่เกี่ยวข้องกลับเข้าไปในคำถามของคุณแทนที่จะฝังไว้ในความคิดเห็น
fossfreedom

คำตอบ:


8

i8kutils ทำงานเพื่อควบคุมแฟนแล็ปท็อป Dell Vostro 3350 ของฉัน

# สำหรับแล็ปท็อป Dell เท่านั้น:
$ sudo apt-get install i8kutils 
$ i8kfan 1 2 # ตั้งค่าพัดลมซ้ายที่ความเร็วต่ำ (1); หนึ่งที่เหมาะสมด้วยความเร็วสูง (2)

มีเพียงดูเหมือนว่าสิ่งที่อยู่ใน BIOS จะตั้งค่ากลับเป็นค่าก่อนหน้าเสมอหลังจากผ่านไปสองสามวินาที: P อย่างไรก็ตามถึงแม้ว่ามันจะช้าไปนิด แต่ก็ยังเป็นคำตอบที่มีประโยชน์ที่สุด
RobinJ

มันทำงานบน Alienware ของฉัน m14x แต่มันก็ยังไม่สามารถตั้งตัวให้ความเย็นเป็นความเร็วสูงสุดและนั่นก็ยังเป็นสาเหตุให้แล็ปท็อปทำงานในอุณหภูมิที่สูงขึ้น นั่นคืออย่างมีนัยสำคัญที่ร้อนกว่าก็คือบน Windows ...
iLemming

BIOS ชุดมันกลับมาเพื่อฉันเพิ่ม cronjob วิ่งในทุก 2 นาที: และcrontab -e */2 * * * * /usr/bin/i8kfan 1 1ทำงานได้อย่างสมบูรณ์แบบสำหรับตอนนี้
goksel

14

คุณอาจจะสามารถแก้ปัญหาของคุณได้ด้วยสิ่งอื่นที่แทนที่คำสั่งพัดลม i8kctl ของคุณโดยวิธีการที่ให้ไว้ในคำตอบนี้ เพื่อความสมบูรณ์ผมจะรวมถึงการบันทึกทั่วไปบางอย่างเกี่ยวกับการควบคุมแฟนบนแล็ปท็อปของ Dell i8kutilsและคำแนะนำการเต็มรูปแบบสำหรับ

สิ่งที่อาจจะไม่ทำงาน

วิธีการทั่วไปและวิธีการควบคุมพัดลมบนแล็ปท็อปสองวิธีคือผ่าน ACPI และผ่านหมุด PWM อย่างไรก็ตามน่าเสียดายที่:

  • แล็ปท็อปของ Dell ขาดความสามารถในการควบคุมพัดลมACPI (* 1)

    • ดังนั้นการลองด้วยพารามิเตอร์การบูต ACPI และสิ่งที่คล้ายกันจะล้มเหลว
  • แล็ปท็อป Dell Latitude ที่ฉันรู้ไม่มีพัดลม pwm ที่สามารถควบคุมได้ (* 2)

    • ด้วยเหตุนี้fancontrol/ pwmconfigโปรแกรมจะไม่ทำงาน

ใช้i8kutils

แต่มีแพคเกจที่เรียกว่าi8kutilsที่เขียนในการควบคุมพัดลมบนแล็ปท็อป Dell Inspiron ผ่านSMM ไบออส ผู้ใช้หลายคนรายงานความสำเร็จเกี่ยวกับแล็ปท็อปDell Laitudeของพวกเขาเช่นกัน (ฉันเป็นหนึ่งในพวกเขาใน Dell Latitude E7440) - อย่างไรก็ตามจำเป็นต้องใช้กลอุบายเพื่อกำจัดการควบคุมพัดลม BIOS ที่รบกวนบ่อยครั้ง คุณต้องทนทุกข์ทรมานจากสิ่งนั้นเช่นกันตามความคิดเห็นก่อนหน้า

ติดตั้งi8kutils:

$ sudo apt-get install i8kutils

ลองมัน:

$ i8kfan 2 2     # set to max speed
$ i8kfan 0 0     # set to 0 speed

... และฟังเพื่อดูว่ามันใช้งานได้

ปิดใช้งานการควบคุมพัดลม BIOS

ถ้ามันใช้งานได้ แต่ทุกอย่างกำลังต่อสู้กับความเร็วที่กำหนดไว้ (รายงานโดยผู้ใช้จำนวนมากบนแล็ปท็อป Dell Latitude) นี่เป็นเพราะการประชุม SMM ตามกำหนดเวลาที่ตั้งค่าความเร็วพัดลมกลับ โชคดีที่มีวิธีการควบคุมพัดลมปิดไบออสโดยการเขียนเพื่อลงทะเบียน SMM

คำเตือน: ดูคำเตือนที่ด้านบนของ smm.c วิธีนี้จะเขียนถึงการลงทะเบียน SMM อย่างไรก็ตามฉันไม่เห็นรายงานผู้ใช้เกี่ยวกับสิ่งนี้ที่ทำให้เกิดปัญหา นอกจากนี้รายงานทั้งหมดเกี่ยวกับการลองสิ่งนี้ได้แสดงถึงความสำเร็จในการปิดการใช้งานการควบคุมพัดลม BIOS

i8kutilsรวมถึงซอร์สของโปรแกรมsmmแต่i8kutilsแพ็คเกจไม่รวมไบนารีที่คอมไพล์แล้ว สิ่งที่เราจะทำคือการดาวน์โหลดซอร์สโค้ดของi8kutilsคอมไพล์โปรแกรมsmmและรันด้วยอาร์กิวเมนต์ apropriate เพื่อปิดการใช้งานการควบคุมพัดลม BIOS โดยการเขียนลงทะเบียน SMM

ดาวน์โหลดแพ็คเกจที่จำเป็นสำหรับการสร้าง:

$ sudo apt-get build-dep i8kutils

ดาวน์โหลดi8kutilsซอร์สโค้ดแยกและป้อนไดเรกทอรี (ชื่อที่แน่นอนขึ้นอยู่กับรุ่น i8k):

$ apt-get source i8kutils
$ tar xvf i8kutils_1.33.tar.gz
$ cd i8kutils-1.33/

รวบรวมsmm:

  • หากใช้ระบบ32- บิต :

    $ make
    

    (ด้านบนจะทำงานgcc -g -O2 -Wall -I. -o smm smm.c)

  • หากใช้ระบบ64 บิต :

    $ gcc -g -O2 -Wall -I. -o smm -m32 smm.c
    

เรียกใช้smmด้วยอาร์กิวเมนต์30a3เพื่อปิดใช้งานการควบคุมพัดลม SMM:

$ sudo ./smm 30a3

ตอนนี้การควบคุมพัดลม BIOS จะถูกปิดการใช้งาน ลองด้วยการตั้งค่าความเร็วด้วยi8kctlฟังแฟน ๆ

หมายเหตุ:นี่เป็นการตั้งค่าที่จะคงไว้ซึ่งการรีบูตและการปิดเครื่อง BIOS $ sudo ./smm 31a3ควบคุมพัดลมสามารถเปิดใช้งานอีกครั้งกับ


* 1: ฉันเคยเห็นแหล่งข้อมูลอย่างเป็นทางการเกี่ยวกับเรื่องนี้ไม่สามารถหาได้ในขณะนี้ หากคุณต้องการตรวจสอบว่าฮาร์ดแวร์ของคุณไม่มีให้ทำตามคำแนะนำที่นี่: https://wiki.ubuntu.com/DebuggingACPI

* 2: การตรวจสอบนี้เรียก pwmconfig: sudo apt-get install fancontrol, sudo pwm-configจะบอกได้ว่าเป็นแฟน PWM ที่มีความสามารถที่มีอยู่หรือไม่


ฉันใช้พารามิเตอร์ ACPI acpi_osi='!Windows 2012'เพื่อให้แฟน ๆ Dell Inspiron 15R 5520 ของฉันอยู่ภายใต้การควบคุมเนื่องจากพวกเขาจะหมุนด้วยความเร็วสูงสุดเสมอโดยไม่คำนึงถึงอุณหภูมิ
user311982

นี่ควรเป็นคำตอบที่ถูกต้อง มันเป็นข้อมูลที่ดีและมีความเกี่ยวข้องมาก!
ppr

คำตอบที่ดี พบได้ที่นี่
malat

1
ขอบคุณมากมันใช้งานได้สำหรับฉันหลังจากลองทุกอย่างอื่นเพื่อประโยชน์ เมื่อฉันพยายามที่จะรวบรวม SMM ฉันถูกหายไป SYS / cdefs.h แต่sudo apt-get install g++-multilibนำมันใน (อ้างอิงที่askubuntu.com/questions/470796/... )
ฟิลิปแดเนียลส์

ฉันอาจจะช้าไปหน่อย แต่มีข้อเสียใด ๆ ในการใส่มันด้วยความเร็วสูงสุด?
Zerquix18

14

เซ็นเซอร์ lm- package ติดตั้งเซ็นเซอร์ lmอาจเป็นสิ่งที่คุณกำลังมองหา

และตามที่คุณแนะนำfancontrol ติดตั้ง fancontrol

ตรวจสอบให้แน่ใจว่าแฟน ๆ ทุกคนที่คุณพยายามควบคุมผ่านซอฟต์แวร์มีขั้วต่อ 4 พิน

"พัดลมที่มีความสามารถ PWM เชื่อมต่อกับขั้วต่อแบบ 4 ขา (pinout: Ground, + 12V, sense, control)" แหล่ง

เมื่อฉันวิ่งpwmconfigซึ่งเป็นส่วนหนึ่งของ fancontrol ที่ฉันได้รับ

/usr/sbin/pwmconfig: There are no pwm-capable sensor modules installed มันจะแนะนำคุณหากคุณมีฮาร์ดแวร์ที่รองรับ

นี่คือสคริปต์บางส่วนที่จะใช้ร่วมกับไฟล์ปรับแต่งที่สร้างขึ้น ฉันคิดว่าคุณสามารถตั้งค่าที่สูงกว่าที่นี่

label fan1 "Side Fan"
set fan1_min 1000
label fan2 "PSU Fan"
set fan2_min 1000
label fan5 "CPU Fan"
set fan5_min 1000

แต่อย่างที่ฉันบอกว่าฉันไม่สามารถทดสอบตัวเองได้เนื่องจากฮาร์ดแวร์ของฉันไม่รองรับฉันสามารถควบคุมแฟน ๆ ของฉันจากไบออส แต่มันเป็นเกรด 3 ฉันใช้มันเพื่อทำให้แฟนของฉันช้าและเงียบ


1
/ usr / sbin / pwmconfig: ไม่มีโมดูลเซ็นเซอร์ที่มีความสามารถ pwm ติดตั้งวิธีอื่น ๆ ?
RobinJ

โดยปกติคุณจะต้องเรียกใช้sensors-detectก่อนและโหลดโมดูลที่แจ้งว่ารับอุณหภูมิและความเร็วพัดลมที่อ่านข้อมูลจากนั้น pwmconfig สามารถจัดการได้
psusi

@RobinJ ดูเหมือนว่าคุณไม่มีชิปที่รู้จัก / รองรับ
psusi

ฉันจะมอบรางวัลให้คุณเพราะนี่เป็นคำตอบที่ให้ข้อมูลมากที่สุดซึ่งจะช่วยคนอื่นได้มากที่สุด
RobinJ

5

ตกลงนี่อาจไม่ใช่คำตอบที่คุณกำลังมองหา แต่ปัญหาความร้อนสูงเกินไปของฉันได้รับการแก้ไขเมื่อเอาฝุ่นออกโดยใส่เครื่องดูดฝุ่นลงในช่องระบายอากาศ หากคุณมีประสบการณ์ความร้อนสูงเกินที่ความถี่ซีพียูต่ำอาจเป็นการลอง โปรดระวังว่าชิ้นส่วนเล็ก ๆ อาจถูกดูดเข้ามาหากคุณโชคดีวิธีการนี้อาจช่วยคุณแก้ปัญหาความร้อนสูงเกินไป


ฉันได้รับรางวัลสำหรับคำตอบดังกล่าวข้างต้นเพราะเป็นข้อมูลที่ให้ข้อมูลมากที่สุด แต่ปัญหาของฉันดูเหมือนว่าจะเกี่ยวข้องกับฮาร์ดแวร์ดังนั้นคำตอบของคุณจึงเข้าใกล้โซลูชันมากที่สุด แต่เนื่องจากฉันไม่มั่นใจว่าจะยุ่งกับฮาร์ดแวร์แล็ปท็อปของฉันฉันเพิ่งนำมันมาที่ร้านเพราะมันยังอยู่ภายใต้การรับประกัน
RobinJ

ฉันเพิ่งลองและใช้งานได้ ขอบคุณ! แฟนของฉันเริ่มดังขึ้นและฉันมีการปิดเครื่องหนึ่งหรือสองครั้งเนื่องจากความร้อนสูงเกินไป หวังว่านี่จะแก้ไขได้แล้ว ตอนนี้พัดลมกำลังเปิดและปิดด้วยการใช้งาน CPU ตามปกติซึ่งยอดเยี่ยมมาก (ก่อนที่จะใช้งานได้ตลอดเวลา)
Cymen

@Cymen เพียงแค่ให้แน่ใจว่าสูญญากาศเป็นสูญญากาศป้องกันไฟฟ้าสถิตย์เพื่อความปลอดภัย ฉันใช้กระป๋องอัดอากาศเพื่อทำความสะอาดช่องระบายอากาศซึ่งคุณอาจทำแทนก็ได้
user311982

3

ฉันมี Dell Latitude e4200 และตัวเลือกต่อไปนี้ใช้งานได้จริงเพราะ BIOS กำลังแก้ไขการตั้งค่า i8kfan อุณหภูมิเริ่มต้นของคอมพิวเตอร์ของฉันคือ 105F องศาและประมาณ 10 นาทีหลังจากใช้ขั้นตอนเหล่านี้ (การตั้งค่าพัดลม = 2) อุณหภูมิ CPU / Core ลดลงถึง 96F มีคนโพสต์ขั้นตอนนี้แล้ว:

ขั้นตอน 1. ดาวน์โหลดและติดตั้ง i8ktutils:

# sudo apt-get install i8kutils

ขั้นตอนที่ 2 แทนที่ BIOS เพื่อไม่ให้ขัดขวางการตั้งค่าพัดลมที่กำหนดเอง ดาวน์โหลดซอร์สโค้ดและคอมไพล์โปรแกรม (SMM) เพื่อทำสิ่งนี้:

# sudo apt-get build-dep i8kutils

แล้ว:

# apt-get source i8kutils

ขั้นตอน 3. แยกซอร์สโค้ดและ cd ลงในไดเร็กทอรี:

# tar xvf i8kutils_1.33.tar.gz

แล้ว:

# cd i8kutils-1.33/

ขั้นตอน 4. รวบรวม SMM

For 32-bit systems:

# make SMM

(Output: # gcc -g -O2 -Wall -I. -o smm smm.c.)

For 64-bit systems

# make SMM:

(Output: # gcc -g -O2 -Wall -I. -o smm -m32 smm.c)

ขั้นตอนที่ 5. ดำเนินการ SMM ด้วยพารามิเตอร์:

# sudo ./smm 30a3

ขั้นตอน 6. ตั้งค่าความเร็วพัดลม:

# i8kfan 2 2 (Listen as this will set fans to maximum speed)

# i8kfan 1 1 (This will set fans to slow speed)

ตอนนี้การควบคุมพัดลม BIOS ไม่ควรแทนที่การตั้งค่าพัดลม การตั้งค่านี้จะยังคงอยู่แม้ว่าระบบจะรีบูต ในการให้การควบคุมกลับไปที่ BIOS ด้วยเหตุผลบางประการให้ทำตามขั้นตอนต่อไปนี้:

# sudo ./smm 31a3.

นอกจากนี้ยังมีวิธีการตรวจสอบอุณหภูมิโดยใช้ lm_sensors:

http://www.cyberciti.biz/faq/howto-linux-get-sensors-information/

1
พยายามทำสิ่งนี้สำหรับ i8kutils-1.41 เวอร์ชันล่าสุดบน Ubuntu 14.04 และได้รับ "ในไฟล์ที่รวมจาก /usr/include/stdio.h:27==, จาก smm.c: 27: /usr/include/features.h: 374: 25: ข้อผิดพลาดร้ายแรง: sys / cdefs.h: ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว "อย่างไรก็ตามวิธีนี้จะแก้ไขปัญหาที่askubuntu.com/questions/470796/…
k-den
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.