본문 바로가기

IT/3D Printing

큐비콘 싱글에서 Octoprint 사용이 어려운 이야기

Palette 2 Pro를 구입하고서, CANVAS Hub를 사용하고자 처음으로 큐비콘 싱글을 Octoprint에 붙여보았는데... 


어라? 온도를 올리고 auto bed leveling을 시작하고나면 Octoprint가 멍~하다가 timeout이 난다. 어라어라... 이러면 안되는데.


Octoprint에 출력되는 serial console 메시지에 따르면 G28 명령 이후에 ok가 돌아오지 않는 것으로 보였는데... 아무래도 미심쩍어서 serial sniffer를 이용해서 PC와 큐비콘 싱글간에 주고 받는 메시지를 잡아보았다. PC쪽의 제어 프로그램은 큐비크리에이터4.1.1.



구현이 좀 독특한데,

보통 G28 명령은 Home All, 즉, X0 Y0 Z0 좌표로 핫엔드를 보내는 명령이다.


그런데, 큐비콘 싱글에서는 G28 명령을 주면, Home all만 수행하는 것이 아니라, Auto TiltAlign, 다시 말해 Auto leveling까지 수행을 해 버리게 되어 있고, 막상 일반적으로 auto leveling을 수행하게 하는 G29 명령은 그냥 ok만 달랑 반환.


그럼 G28 명령을 수행하면 어떤 동작을 하느냐... 하니 Auto TIltAlign을 수행하는 시간 내내 "S3 AutoTilt Alignment"라는 메시지를 줄창 반환하다가, 다 끝나면 ok를 반환한다.


N14G28*6S3 AutoTilt Alignment

S3 AutoTilt Alignment

S3 AutoTilt Alignment

S3 AutoTilt Alignment

...

S3 AutoTilt Alignment

S3 AutoTilt Alignment

S3 AutoTilt Alignment

ok 14



Octoprint에서는 시리얼 로그도 자기가 받아들일 수 있는 것만 기록하는 듯...


큐비콘 싱글은 왜 이렇게 독특한 구현을 했을까...


아마도 펌웨어의 바탕이 된 Repetier Firmware 0.60이 busy protocol을 지원하지 않는 탓에 그랬을 것 같다. Busy protocol을 지원했더라면 그냥 표준화된(?) busy 메시지를 계속 리턴하면 되는데, Repetier Firmware에 busy protocol 지원이 들어간 것은 1.0.0에 들어서나 지원이 되었으니...


그럼, Octoprint와의 호환 문제를 어떻게 해결할 것인가?


단순하게 Octoprint와의 호환 문제에만 초점을 둔다면 두 가지 방법이 있겠다.


첫째는 기존 큐비콘 싱글 펌웨어에 busy protocol을 포팅해 넣는 것. 대신에 저 S3 AutoTilt Alignment 메시지를 날려버려야 할꺼고.


둘째는 큐비콘 싱글 펌웨어를 아에 Repetier Firmware 또는 Marlin 최신 버전으로 대체해 버리는 것. 이쪽은 대신에, 오리지널 Repetier Firmware 0.60과 큐비콘 싱글 펌웨어의 차이점을 제대로 분석해서 다시 역으로 포팅해 넣을 부분을 찾아서 넣어줘야 한다.


그런데, 위 방법들은 문제가... 저러고나면 막상 큐비크리에이터에서의 USB를 통한 출력은 바이바이...가 될 것이라...


마지막으로 생각해볼 수 있는건... Octoprint를 고치는 것. 기본적으로 busy protocol을 지원하지 않는 Repetier Firmware랑 동일하게 취급하되, G28 명령 수행시에는 저 S3 AutoTilt Alignment 메시지를 busy protocol의 busy 메시지처럼 인지하게 하는 것.


어느 쪽도 쉽지는 않을 것 같다...ㅠ