iMac HDD 교체 후 Fan noise 이슈

최근 사용하는 iMac(Late 2009)의 HDD를 교체하였다. 그런데 HDD 교체 후 idle 상태에서 fan 회전 속도가 4000rpm 이상으로 돌면서 시끄러운 노이즈를 내는 현상이 발생했다.

fan speed of HDD

처음에는 설치를 잘못했나 싶어서 다시 뜯어 재조립도 해봤다. 원래 HDD를 넣고 조립하면 조용한데, 새 HDD를 넣고 조립하면 어김없이 시끄러운 fan 소음이 났다.

뭔가 있겠구나 싶어 인터넷을 뒤져봤더니, 애플에 공급되는 HDD는 펌웨어가 달라서 다른 일반 HDD를 설치하면 온도 측정을 제대로 하지 못해, fan이 최고 속도로 돈다는 것이다. http://www.hddfancontrol.com/imac-hard-drive-replacement-fan-noise-issue/ 이와같은 이유로 SMC 리셋, PRAM 소거를 해도 이 문제는 해결되지 않는다.

일단 소프트웨어적으로 fan 속도를 낮출 수 있는 smcFanControl이라는 무료 프로그램이 있다는 것을 확인했다. 그런데 이 프로그램의 UI에서는 minimum 값만 설정할 수 있어서 UI만으로는 fan 속도를 낮출 수 없다. UI에서는 못 하지만 다음과 같이 커맨드를 직접 실행하면 fan의 최고 속도에 제한을 걸 수 있다. -w 뒤의 숫자는 (fan speed) * 4의 hex 값이다.

/Applications/smcFanControl.app/Contents/Resources/smc -k F1Mx -w 0f50

그런데 사용을 해 보니 sleep에서 깨울 때 이 값이 초기화가 된다. 따라서 wakeup할 때마다 이 프로그램을 실행시켜줄 뭔가가 필요했다. 찾아보니 sleepwatcher라는 무료 프로그램이 있었다. 맥이 sleep에 진입할 때, 깨어날 때 특정 스크립트를 실행할 수 있게 해준다.

sleepwatcher에 wakeup할 때마다 smc 스크립트를 실행하도록 등록을 해 두니 iMac이 다시 조용해졌다. 🙂

눈에 띄지않는 자바스크립트

HTML + CSS + JAVASCRIPT 구조에 의거하여 HTML페이지 내에 Javascript를 바로 작성하지 않는 것을 의미하고?unobtrusive 방식이라고 말한다. 즉, onClick등으로 이벤트에 대한 처리 함수를 직접 기술하는 것이 아니고, Javascript 내에서 다음과 같이 이벤트를 동적으로 할당하는 방식이다..

addEventListener하는 method를 이용하며, 이벤트 이름, callback 함수, 이벤트 버블링 을 파라메터로 받는다.

이벤트 버블링이란 발생한 이벤트를 부모 element에게 전달할지의 여부를 나타내며 보통은 false를 사용한다.

document.getElementById("btn").addEventListener("click", callAlert, false);