마더보드 SMBus와 SuperIO칩 관련 질문입니다.

RuBisCO   
   조회 5219   추천 0    

남는 아두이노 키트를 주물럭거리다 한번 하드웨어 모니터/팬컨트롤러를 만들어볼까 생각이 들어 하다보니 하는김에 좀 더 공을 들이고자 합니다.

보통 시스템의 온도나 소비전력 같은 상황을 모니터링 할때 데스크탑 어플리케이션을 상주시켜 이걸 아두이노로 전송해 확인하는 방식은 작게나마 시스템의 리소스를 잡아먹기도 하고, 시스템이 다운되었다거나 어플리케이션이 충돌한다거나 하는 상황에선 정확한 정보가 안나오는 문제에 응답속도가 생각처럼 빠릿하게 굴러가주질 않는 부분까지 더해져서 아예 아두이노가 관련정보를 SuperIO 칩에서 바로 받아올 방법은 없는지 알아보는 중입니다.

넷상에 검색해서 나오는건 거의 대부분이 데스크탑에 하드웨어 모니터 어플리케이션을 상주시켜 아두이노로 정보를 전송하는 방식이고, 마더보드의 컨트롤러칩의 I2C 버스를 스니핑하는 방법은 현재 보드가 사용중인 SuperIO칩인 NCT6798D의 핀아웃 정보도 없을뿐더러 있더라도 다리가 너무 가늘어서 제 손으로 손대기가 많이 난감합니다.

혹여 아두이노에서 시스템의 온도나 소비전력 정보 등에 SMBus의 정보에 바로 접근할 마땅한 다른 방법이 있는지 궁금합니다.

짧은글 일수록 신중하게.
구차니 2023-06
찾아보니 i2c or smbus sniffer using arduino 라는게 보이네요
smbus도 i2c 인데 multi master 지원되도록 설계 된게 아니라면 arduino가 직접 smbus master로서 작동하는건 위험하지 않을까 합니다.

https://storepeter.dk/linux/i2c-sniffer-using-arduino

핀은 라이저 이용해서 pciex의 smbus(i2c) 를 빼내면 되지 않을까 합니다.
     
RuBisCO 2023-06
아. 핀을 PCI-E에서 라이저로 뽑아오는 방법도 있었군요. 감사합니다. 일단 밑에 답변대로 아예 연결되어있지 않을 가능성을 감안하고, 연결되어있지 않을 가능성을 먼저 체크해보고 연결 되어있으면 그 방법을 써야겠네요. 답변 감사합니다!
SiCMOS 2023-06
그냥 bmc 붙은 메인보드 구매하시고 IPMI 센서 항목 보시는게 좋습니다.
BMC는 팬 컨트롤도 자동으로 됩니다..
SuperIO는 LPC 버스에 주로 물리는걸로 알고 있는데 이건 전용 하드웨어 아니면 아두이노 수준 IO로 구현 불가능합니다.
     
RuBisCO 2023-06
흑 일반 데스크탑 보드라서요 ㅡㅠ
isaiah 2023-06
NCT6798D가.. 아마 NCT6796이랑 비슷한 친구 일 겁니다.. 그거 데이터 시트 참고해 보세요.. 최종적인 확인은 하셔야 겠지만요...

그 일단 한가지 말씀드리자면 SIO칩은 보통 SMBUS를 지원하긴 하지만.
보드 제조사 입장에서는 꼭 SMBUS를 쓸 이유는 없습니다.
데스크탑 보드의 경우 호스트 CPU말고 다른 장치가 SIO 칩에서 하드웨어 모니터링 정보를 읽어 갈 수 있도록 만들어야 할 절실함이 크지 않고
host CPU는 그냥 LPC 버스로 접근해서 필요한 정보를 전부 긁어 가면 그만입니다.
그래서 SIO칩의 I2c 핀이 호스트의 SMBUS 에 연결 되어 있지 않은 보드도 많습니다.
 
 https://www.2cpu.co.kr/bbs/new_view.php?bo_table=freeboard_2011&wr_id=1089440&qstr=&page=12
이건 제가 비슷한 짓을 했던 건데.. 이 보드도 호스트의 SMBUS에 SIO의 i2c 버스가 연결 되어 있지 않았습니다.

호스트 PC의 SMBUS를 DIMM등에서 따 네서 스니핑 하더라도 부질 없을 가능성이 꽤 크다는 거죠.
참고로 데스크탑 보드의 경우 PCIE 규격에 있는 SMBUS 연결도 생략되어 있는 경우 많습니다.
     
isaiah 2023-06
아 그리고 말미에 물으신
SIO칩과 통신하는걸 포기하고 다른 방법을 찾자면 사실상 방법은 하나 뿐인데..
SIO가 수집하던 자료를 몽땅 아두이노가 대신 수집하게 만드는겁니다..
 
그런데 여기서 곤란한게 CPU 온도를 수집하는 1 wire 인터페이스가 공개가 아닙니다.
물론 나머지 도 만만하지는 않은게.. 전압 모니터링 핀을 따 네는것도 눈알 빠지는 일이고
팬속 핀 카운팅 하는것도 8bit 아두이노로는 좀 곤란할 수 있습니다..
     
RuBisCO 2023-06
그렇군요... 생각처럼 단순한 일이 아니었네요. 그래도 우회할 방법이 있다니 희망이 생깁니다. 답변 감사합니다!
          
RuBisCO 2023-06
으악 망했습니다 현재 사용중인 보드는 패러랠 포트가 없었습니다... 혹여 다른 핀도 있나 해서 NCT6978D의 데이터시트틑 없고 NCT6796의 데이터시트는 참조해보았는데 하필 AUXFAN 핀으로 사용중인 보드에서 사용하지 않는 핀이었습니다. 칩에서 직접 따내지 않으면 안된다는 소린데 칩이랑 다리 사이즈 보니까 엄두가 안나네요.
               
isaiah 2023-06
아.. 그걸 시도해 보셨군요..
 제가 그 보드를 쓸때 프린터 포트를 쓸 수 있었던 것은 조금 운빨(?) 이여서 자세히 말씀을 드리지는 않았는데..
 사실 그 땜질 난이도 극복 안 고서는 답이 나오기 힘듭니다.
 SIO 대신 아두이노를 사용해서 정보를 수집하는 방안도 비슷한 난이도 땜질을 여러차래 해야 하구요.

 인터넷에 검색해서 잘 안 나오는 건 다 이유가 있기 마련입죠...
     
댕댕이 2023-06
가장 정답에 가까운 답변입니다.
EDK2로 EFI 어플리케이션을.. 최고십니다..bb
박문형 2023-06
저는 SMBUS 나 I2C는 잘 모릅니다.. 그러나 서버보드를 다루다 보니 알게된 게 몇 개 있습니다..

BMC가 붙어 있는 서버 마더보드에는 PMBUS 라는 것이 있습니다..

파워쪽 모니터링을 하기 위한 인터페이스 입니다..

보드의 24핀 파워 커넥터 부근에 CD-ROM 연결 커넥터 같이 생긴 커넥터로 되어 있습니다.. (신호선은 5개이지만 실제 PMBUS는 2개 일 것입니다..)

PMBUS는 표준도 있지만 일반적으로 보드 제조사에서 이것을 변형 시켜 자기 독자적 신호를 만들어 사용합니다..

따라서 그 제조사가 만들거나 그 제조사가  호환되는 파워만 그 파워에 연결시 재대로 동작합니다..

PMBUS는 각종 신호를 마더보드에 BMC 에 보내거나 받거나 하는데 이것은 IPMI 에서 몇가지 파워 관련 항목과 연결됩니다..

수퍼마이크로 같은 경우는 옛날 시스템에서는 I2C 를 이용하고 신형 시스템에서는 PMBUS 혹은 I2C를 사용합니다..

슈퍼마이크로 서버 파워 모듈의 스팩 자료를 구한다면 어떻게 신호가 주어지고 동작하는지 정리되어 있습니다..


https://www.youtube.com/watch?v=3BXkVnz8vNo

https://www.youtube.com/@johannes4gnu_linux96

SMBUS 구글링하다가 찾은 유튜브인데 이것저것 많이 들어 있는 듯합니다..
     
RuBisCO 2023-06
데탑보드다 보니까 IPMI를 이용할 수가 없으니 직접적으로 로우레벨에서 접근할 궁리를 했던건데 생각 이상으로 이야기가 복잡해지네요 ㅠㅠ 답변 감사합니다
댕댕이 2023-06
결코 불가능하진 않습니다.
하지만 매우 어렵다고(불가능할 정도로) 생각합니다.
질문글인데 도움이 안되는 답변이라 죄송합니다..
     
RuBisCO 2023-06
윗분들 댓글 보니 생각한것 이상으로 사정이 많이 복잡하네요. 그래도 실마리가 대충 잡히는거 같으니 도전해봐야겠습니다.
제온프로 2023-06
하드웨어인포 처럼 온도 값과 팬 RPM 값을 읽어서.

새로운 팬의 동작을 시키고 또 그 팬의 RPM 을 읽어서
그 팬을 컨트롤 하면 될 것 같네요.
     
RuBisCO 2023-06
예. 그건 현재 인터넷에 많이 올라와있습니다. 다만 이게 어플리케이션이 수집해서 아두이노로 전송하는거라 시스템이 다운된다거나 어플리케이선이 이런저런 이유로 멈추는 경우 제대로 작동을 안하는 문제도 있고 빠릿하지 못한 감이 있어서요.


QnA
제목Page 2793/5705
2015-12   1661871   백메가
2014-05   5126919   정은준1
2008-12   5127   박진국
2013-09   5127   아이트리
2016-06   5127   미수맨
2016-08   5127   김훈1
2006-12   5127   최원식
2007-09   5127   계유찬
2017-04   5128   이희주
2009-03   5128   손석우
2006-11   5128   정은준
2014-05   5128   권희석
2006-06   5128   강승휘
2016-07   5128   김익태
2016-02   5128   장동건2014
2018-06   5128   song05
2008-04   5128   윤호용
2008-12   5128   배정한
2022-06   5128   akfalles
2007-11   5128   이형진
2007-12   5128   문경윤
2005-12   5128   이재섭