อันดับแรกเลย Kernel คุณต้อง Support I2C ก่อนครับ ไม่งั้น เวลารันโปรแกรมแล้วมันจะฟ้องว่า Kernel ของคุณไม่ Support I2C ขั้นตอนการ Compilied ผมขอข้ามไปนะครับสามารถดูขั้นตอนการ Compilied Kernel ได้ที่ การติดตั้ง
การติดตั้ง LINUX GENTOO หัวข้อที่ 6 ซึ่งส่วนใหญ่จะ Support อยู่แล้ว เพียงแต่คุณต้อง Load Module มันขึ้นมาเท่านั้น
จะแนะนำConfig อย่างคราวๆครับ
Code maturity level options
[*] Prompt for development and/or incomplete code/drivers
Bus options (PCI, PCMCIA, EISA, MCA, ISA)
[*] PCI support
Device Drivers --->
I2C support --->
เลือกให้หมครับถ้าไม่มั่นว่าจะเลือกถูกไหมครับ เพราะมันก็กินพื้นที่ไม่มากและให้เลือกเป็นแบบ buid in (*) ไม่ใช้ควรเลือกแบบ Module (M) ถ้าอยากมานั่ง Load Module เอง
Hardware Monitoring support (since 2.6.13-rc3)
เลือกให้หมครับถ้าไม่มั่นว่าจะเลือกถูกไหมครับ เพราะมันก็กินพื้นที่ไม่มากและให้เลือกเป็นแบบ buid in (*) ไม่ใช้ควรเลือกแบบ Module (M) ถ้าอยากมานั่ง Load Module เอง
ขึ้นตอนการ Install
โปรแกรมที่ใช้คือ lm_sensors ขึ้นตอนการลอง ก็พิมพ์
#apt-get install lm_sensors หรือ
#yum install lm_sensorsหรือ
#emerge install lm_sensors
หลังจากลง เสร็จเรียบร้อยแล้วลองพิมพ์
#sensors-detect
แล้วกด Enter อย่างเดียวจนจบ
ก่อนจบมันจะขึ้นว่า
To make the sensors modules behave correctly, add these lines to
/etc/modules.conf:
#----cut here----
# I2C module options
alias char-major-89 i2c-dev
#----cut here----
To load everything that is needed, add this to some /etc/rc* file:
# I2C adapter drivers
modprobe i2c-viapro
modprobe i2c-isa
# I2C chip drivers
modprobe eeprom
modprobe w83627hf
# sleep 2 # optional
/usr/bin/sensors -s # recommended
ก็ทำตามที่มันบอก
ทำเสร็จแล้วก็ reboot เครื่อง ก่อนรอบ
พอ boot เสร็จพิมพ์คำสั่ง
#sensor
ถ้าทำถูกต้องทุกอย่าง ผลมันจะออกมาในรูปแบบนี้ (แล้วแต่ option ที่คุณมี)
w83697hf-isa-0290
Adapter: ISA adapter
VCore: +4.08 V (min = +1.71 V, max = +1.89 V)
+3.3V: +0.53 V (min = +3.14 V, max = +3.47 V)
+5V: +5.13 V (min = +4.76 V, max = +5.24 V)
+12V: +11.73 V (min = +10.82 V, max = +13.19 V)
-12V: +1.13 V (min = -13.18 V, max = -10.80 V)
-5V: +2.19 V (min = -5.25 V, max = -4.75 V)
V5SB: +5.48 V (min = +4.76 V, max = +5.24 V)
VBat: +3.33 V (min = +2.40 V, max = +3.60 V)
fan1: 0 RPM (min = 67500 RPM, div = 2)
fan2: 0 RPM (min = -1 RPM, div = 2)
temp1: +53ฐC (high = +4ฐC, hyst = +0ฐC) sensor = thermistor
temp2: +36.0ฐC (high = +120ฐC, hyst = +115ฐC) sensor = thermistor alarms:
beep_enable:
Sound alarm disabled
eeprom-i2c-0-52
Adapter: SMBus Via Pro adapter at 0500
Memory type: DDR SDRAM DIMM
Memory size (MB): 256
eeprom-i2c-0-51
Adapter: SMBus Via Pro adapter at 0500
Memory type: DDR SDRAM DIMM
Memory size (MB): 256
โดยกติแล้ว
fan1,fan2 คือพัด ดูได้จาก /etc/sensors.conf
temp1 คืออุณภูมิของ Main Board ดูได้จาก /etc/sensors.conf
temp2 คืออุณภูมิของ CPU ดูได้จาก /etc/sensors.conf
ถ้า CPU มีมากกว่า 1 ก็ต้องดู /etc/sensors.conf ประกอบว่าแต่ละตัวหมายถึงอะไร
นี้คือตัวอย่าง กราฟ MRTG ที่สร้างขึ้นมาเพื่อดุอุณภูมิ
http://oasitzone.pn.psu.ac.th/mrtg/oasitzone/temp.html
ตัวอย่างแฟ้ม mrtg-temp.cfg
workdir: /var/www/mrtg/oasitzone
Target[TEMP]: `/etc/mrtg/temp.sh`
MaxBytes[TEMP]: 100
Options[TEMP]: gauge, nopercent, growright, integer
#Unscaled[TEMP]: dwym
YLegend[TEMP]: ํC
ShortLegend[TEMP]: ํC
LegendI[TEMP]: M/B Temp:
Legend1[TEMP]: M/B Temp
LegendO[TEMP]: CPU Temp:
Legend2[TEMP]: CPU Temp
Title[TEMP]: Temporary on itzone.oas.psu.ac.th
PageTop[TEMP]: <H1>Temporary on itzone.oas.psu.ac.th
</H1>
<TABLE>
<TR><TD>Temporary</TD><TD>on itzone.oas.psu.ac.th</TD></TR>
</TABLE>
ตัวอย่างแฟ้ม temp.sh
#!/bin/sh
temp1=`sensors|grep temp1:|awk '{print $2}'|sed '/$/s/C//'|sed '/$/s/+//'|sed '/$/s/ฐ//'`
temp2=`sensors|grep temp2:|awk '{print $2}'|sed '/$/s/C//'|sed '/$/s/+//'|sed '/$/s/ฐ//'`
echo "$temp1"
echo "$temp2"
time=`uptime`
echo "$time"
echo "Temporary"