본문 바로가기
서버/리눅스 서버

[오드로이드XU] 팬컨트롤 스크립트 , CPUBURN 패키지

by ㅋㅋ잠자 2014. 12. 17.
반응형

안녕하세요. 도정진입니다.

   

시끄러운 팬 컨트롤 때문에 따로 스크립트를 만들어 보았습니다.

   

Odroid XU Fan Control Script.

   

   

   

   

   

1. 확인 사살!

   

터미널에 아래의 명령어를 칩니다.

   

echo 0 > /sys/bus/platform/devices/odroidxu-fan/fan_mode

이는 자동으로 되어있는 팬 컨트롤 모드를 수동으로 설정하는 것입니다.

   

   

그리고 다음으로

   

echo 255 > /sys/bus/platform/devices/odroidxu-fan/pwm_duty

   

이런 명령어를 쳐 봅니다. 그럼 0~255 값에 따라 팬 속도가 변화함을 알 수 있습니다.

   

마지막으로 CPU 온도를 읽어봐야겠죠?

   

nano /sys/devices/virtual/thermal/thermal_zone0/temp

   

이렇게 쳐 봅니다.

   

 

   

이렇게 온도값이 나옴을 알 수 있습니다. 지금 온도는 90도네요.

   

   

그럼 확인사살은 끝났습니다.

   

   

   

   

   

   

   

2. 코드 작성하기

   

  

   

쉘스크립트의 이해가 부족한 상태에서 작성한 것이라 약간 꼴이 좋지 않을 수도 있습니다.

   

먼저 팬 속도를 수동으로 하기 위한 첫번째 줄.

   

그 다음 TEMP 변수에 저 위치를 저장합니다.

   

   

while 문은 true 값으로 계속 실행이 됩니다. 그리고 P 변수에 온도값을 저장하고 if 문으로 비교를 합니다.

   

(주의!!! 참고로 if 문 참거짓 문장은 [ () ] 뛰어쓰기가 되어야합니다. 양쪽으로.

[ $P -gt 90000 ]

   

이것 때문에 개고생 했네요. 참고로 변수도 = 부근에 뛰어쓰기가 없어야합니다.

   

   

if문이 시작되면 끝날때는 fi 로 닫아줘야 합니다.

   

   

이렇게 시행착오를 겪어온 결과 아래처럼 코드를 완성하였습니다

   

#!/bin/bash

echo 0 > /sys/bus/platform/devices/odroidxu-fan/fan_mode

   

TEMP="/sys/devices/virtual/thermal/thermal_zone0/temp"

   

while true; do

P=`cat $TEMP`

if [ $P -gt 90000 ];then

echo 255 > /sys/bus/platform/devices/odroidxu-fan/pwm_duty

else

echo 50 > /sys/bus/platform/devices/odroidxu-fan/pwm_duty

fi

   

sleep 5

   

done

   

if 문의 90000은 90도에서 팬 속도를 255로 조절한다는 뜻이고 아닐때에는 50으로 PWM 을 준다는 소리입니다. 실제로 50 정도가 부드럽고 소음없이 돌아가는 제일 최적화된 값인듯 합니다. 실제로 그냥 사용시 90도를 거의 넘길 일이 없습니다.

   

   

   

   

   

   

   

3. 만든 스크립트 테스트!

   

   

저는 odroid-fan 이라고 저장을 하였습니다.

   

chmod +x odroid-fan

이라고 입력하여 실행할 수 있는 권한을 줍니다.

   

그 다음

   

./odroid-fan

   

이라고 입력하여 실행을 해 보았습니다. 실행을 멈추려면 Ctrl + C 를 누르시면 됩니다.

   

   

그럼 일부러 CPU 온도를 90도까지 올려야 될텐데.. 방법이 cpuburn 패키지가 생각이 났습니다.

   

apt-get install cpuburn

   

으로 간단히 설치가 가능하고 CPU 갯수에 따라 실행 갯수를 정하실 수 있습니다. 오드로이드의 경우 4코어 임으로 아래처럼 4개 프로세스를 실행시켰습니다.

   

   

burnCortexA9 & burnCortexA9 & burnCortexA9 & burnCortexA9

   

끝내실때는 마찬가지로 컨트롤 C 하시면 됩니다.

   

   

   

위 명령들은 한 터미널 창에서 실행이 불가능함으로 (실제로 & 명령어로 계속 실행은 가능합니다만 3개를 열어주세요)

   

하나는 ./odroid-fan 실행용, cpuburn 실행용, htop 으로 CPU 사용량 보는용 ㅎㅎ

   

실제로 CPU가 이렇게 가득 찼습니다.

   

   

으어 암걸리겠네요 ㅎㅎ

   

   

   

그리고 온도값을 잠시 확인해 주면 ㅎ 90도가 넘으면 작동이 됩니다 ㅎ

   

   

cpuburn 을 실행시켜놓고 스크립트 만들다가 오드로이드 죽을 뻔했네요 ㅠㅠ

   

   

   

   

   

   

4. 시작할 떄 자동실행!

   

nano /etc/rc.local

   

로 들어가셔서 아래처럼 수정을 해줍니다. ~ 란 자신의 홈디렉터리를 말하고 스크립트 파일이 다른곳에 있으면 경로 지정을 해주세요 ㅎㅎ

   

   

   

   

   

감사합니다 ㅎㅎ

반응형

댓글