
임베디드 작업하다 보면 시리얼 통신할 일이 진짜 많잖아요. 아두이노, ESP32, 라즈베리파이, 산업용 센서, 모뎀... 죄다 USB-시리얼로 붙입니다.
그런데 정작 시리얼 터미널 프로그램은 다 마음에 안 들었어요.
PuTTY는 매번 설정창 들어가서 COM 포트, 보율 입력하고 나서야 연결이 됩니다. 한 번 닫으면 또 처음부터. Arduino IDE 시리얼 모니터는 너무 기본 기능만 있어요. HEX 모드도 없고, 로그 저장도 안 되고. TeraTerm은 인터페이스가 90년대 그대로고. RealTerm은 UI가 너무 어수선합니다.
결국 며칠 전에 우연히 발견한 CNTerminal이라는 도구를 며칠 써보고 있는데, 솔직히 좀 신기해서 후기 한 번 써봅니다.

일단 외형이 좀 마음에 듭니다
다크 앰버 CRT 테마예요. 옛날 도스 시절 PC 부팅 화면 같은 색감. 까만 배경에 주황색 글씨.
처음 봤을 땐 "이게 뭐야 복고풍 컨셉인가?" 싶었는데, 막상 한 시간쯤 보고 있으면 이게 진짜 눈이 편합니다. 일반 흰 배경 터미널보다 훨씬 덜 피곤해요. 야간에 작업할 때도 부담 없고.
그리고 RX 데이터는 초록색, TX 데이터는 앰버색으로 색상 구분이 되니까 "이거 내가 보낸 거였나, 받은 거였나" 헷갈리지 않아서 좋습니다.
설치가 진짜 없습니다
이게 제일 마음에 들었어요. 인스톨러 같은 거 없고, 그냥 .exe 파일 하나가 끝입니다. 용량도 8MB 정도밖에 안 돼요.
다운로드 받아서 더블클릭하면 바로 실행됩니다. 관리자 권한도 필요 없고, .NET이나 WebView2 같은 런타임도 필요 없고, Python 같은 거 깔 필요도 없습니다.
Rust로 만들었다고 하던데, Rust로 만든 GUI 앱들이 보통 이래요. 의존성을 통째로 정적 링크해버려서 진짜 단일 실행파일이 나옵니다.
USB에 넣어 다니거나, 회사 공유 폴더에 던져놓고 누구나 더블클릭으로 쓸 수 있는 그런 도구입니다. 어떤 PC에서도 동일한 환경으로 작업할 수 있어요.
설정이 다 한 화면에 보입니다
PuTTY 쓰다가 짜증 났던 게 이거였어요. 보율 바꾸려면 어디 메뉴 들어가야 하고, 폰트 크기 바꾸려면 또 어디 들어가야 하고.
CNTerminal은 자주 쓰는 거 다 상단 툴바에 노출돼 있습니다.
- 포트 선택 + 새로고침 버튼
- 보율 직접 입력 + 프리셋 8종
- Connect 버튼
- ASCII / HEX 토글
- DTR 토글
- 폰트 크기 조절 (9~24px)
- RX Split (시간 기반 자동 줄 끊기)
- 타임스탬프 ON/OFF
- 자동 스크롤 ON/OFF
설정 메뉴 들어갈 일이 거의 없어요. 그냥 보이는 거 클릭하면 됩니다.
비표준 보율도 그냥 직접 입력하면 됩니다
이게 의외로 큰 장점이에요.
9600, 115200 같은 표준 보율은 드롭다운에 있는데, 가끔 산업용 장비에서 500000이나 250000 같은 이상한 보율 쓰는 애들 있잖아요. 그런 거 그냥 입력 칸에 타이핑하면 됩니다.
그리고 한 번 입력한 비표준 보율은 자동으로 저장돼서 다음 실행 때 드롭다운에 같이 떠요. 산업 장비 자주 다루시는 분들한테 진짜 편한 기능입니다.
HEX 디버깅이 사람답게 됩니다
임베디드 하시는 분들이라면 공감하실 텐데, 바이너리 프로토콜 디버깅이 진짜 지옥이잖아요.
STX(0x02), ETX(0x03)로 감싼 프레임, 체크섬 붙은 패킷, 이런 거 일반 ASCII 터미널로 보면 깨진 글자만 잔뜩 나오죠. 디버깅 거의 불가능합니다.
CNTerminal은 ASCII/HEX 토글 한 번이면 콘솔이 통째로 HEX 덤프로 전환됩니다. 게다가 기존에 받은 데이터도 같이 재렌더링돼요. 일반 터미널은 "지금부터 HEX로 보여줘" 해도 이미 받은 건 그대로인데, 이건 원본 바이트를 보관하고 있다가 토글마다 다시 그려줍니다.
거기에 RX SPLIT이라는 기능이 또 신기해요. 시간 기반 줄 끊기인데요, 예를 들어 "2ms"로 설정해놓으면 2ms 동안 새 바이트가 안 오면 자동으로 줄을 끊습니다. HEX 모드에서 패킷 단위로 자동 정렬되는 거예요. 한 줄이 끝없이 늘어지는 문제가 해결됩니다.
송신 미리보기가 신박합니다
이건 진짜 다른 터미널에서 못 봤던 기능이에요.
송신 박스에 뭘 입력하면, 바로 아래에 WILL SEND 미리보기가 뜹니다. 실제로 어떤 바이트가 와이어로 나갈지를 ASCII랑 HEX 두 줄로 보여줘요.
WILL SEND (5 B)
ASCII A00\r\n
HEX 41 30 30 0D 0A
ENDING(LF/CR/CRLF) 까지 포함된 실제 송신 바이트가 그대로 보입니다. 이게 왜 좋냐면, 송신 실수를 보내기 전에 잡을 수 있어요.
예를 들어 "이 장비는 CRLF로 끝나야 한다는데 내가 LF로 보내고 있나?" 같은 거 미리보기로 바로 확인됩니다. 안 보내고도 알 수 있어요.
송신 히스토리도 자동 저장
예전에 PuTTY 쓰면서 진짜 짜증 났던 게 이거예요. 자주 쓰는 AT 명령어, status 조회 같은 거 매번 다시 타이핑해야 했거든요.
CNTerminal은 송신한 명령을 자동으로 히스토리에 저장합니다. 최대 50개까지. 그리고 클릭하면 송신 박스로 로드되고, 더블클릭하면 즉시 다시 송신됩니다.
거기다 송신해도 입력 박스가 안 비워져요. 같은 명령을 또 보내고 싶으면 그냥 Enter만 한 번 더 누르면 됩니다. 이게 의외로 진짜 편합니다. 같은 status 명령 반복해서 보낼 때.
ESP32 자동 리셋 회피용 DTR 토글
ESP32나 아두이노 쓰시는 분들 중에 이거 모르고 머리 쥐어뜯어본 분 있을 거예요. 시리얼 모니터 연결할 때마다 보드가 자동으로 리셋되는 현상.
DTR 라인이 변화하면 보드 리셋 회로가 작동하도록 설계돼 있어서 그래요. 보통 부팅 시 펌웨어 다운로드 모드 진입하라고 만든 건데, 디버깅 중에는 짜증나죠.
CNTerminal은 상단에 DTR 토글이 따로 있어서, OFF로 해두면 연결/해제와 무관하게 DTR이 가만히 있습니다. 보드가 안 리셋돼요.
ASCII↔HEX 변환기가 따로 있습니다
툴바 우측의 "ASCII ↔ HEX Converter" 버튼 누르면 변환기 팝업이 뜹니다.
양쪽 박스에 뭘 타이핑하면 반대쪽이 자동 변환돼요. 그리고 비printable 바이트도 \xNN 형식으로 정확하게 표시됩니다.
예를 들어:
- ASCII에
\x02A50000\x03입력 → HEX는02 41 35 30 30 30 30 03 - HEX에
02 41 35 30 30 03입력 → ASCII는\x02A500\x03
STX/ETX 들어간 프레임 분석할 때 진짜 유용합니다. round-trip이 정확해서 분석한 결과를 그대로 송신 박스로 보낼 수도 있고요.
설정이 .exe 옆 파일 하나에 다 저장됩니다
이게 진짜 포터블의 핵심이에요.
포트, 보율, 폰트 크기, 송신 히스토리, 비표준 보율 목록, 표시 모드 토글... 이 모든 게 .exe 옆에 cnterminal.cfg라는 텍스트 파일에 자동 저장됩니다.
레지스트리도 안 건드리고, AppData도 안 씁니다. .exe + cnterminal.cfg 두 파일만 USB에 넣어 다니면 어디서든 같은 환경으로 작업할 수 있어요.
그리고 cnterminal.cfg는 사람이 읽을 수 있는 key=value 텍스트 파일이라, 백업하기도 좋고, 여러 PC 동기화하기도 편합니다.
이런 분들한테 추천합니다
제가 써보고 느낀 건, 이건 진짜 임베디드 개발자나 메이커분들한테 좋은 도구예요. 아두이노, ESP32, STM32, 라즈베리파이 피코 같은 거 만지는 분들.
그리고 현장 엔지니어분들도. PLC나 산업용 센서 통신 디버깅할 때, USB에 .exe 하나 넣어 다니면 어느 PC에서든 똑같이 작동하니까요.
학생/교육용으로도 좋습니다. 학교 컴퓨터에 설치 권한 없어도 USB로 들고 다니면서 쓸 수 있고, 인터페이스가 직관적이라 따로 배울 게 거의 없어요.
단점 있긴 합니다
완벽한 도구는 아니에요. 솔직하게 말씀드리면:
1) Windows 전용입니다. 맥북, 리눅스 쓰시는 분들은 직접 빌드해야 합니다. Rust 깔고 cargo build하면 빌드 자체는 통과한다고는 하는데, 일반 사용자한테는 좀 부담이죠.
2) SmartScreen 경고가 뜹니다. 코드 서명이 안 된 .exe라 처음 실행 시 경고가 떠요. 코드 서명은 1년에 몇십만 원씩 드니까 무료 도구에선 보통 안 합니다. "추가 정보 → 실행"으로 넘어가면 되긴 하는데, 회사 보안 정책에 따라 막혀있는 경우도 있어요.
3) USB-시리얼 칩셋 드라이버는 따로 필요합니다. CH340, CP210x, FTDI 같은 거. Windows가 보통 자동으로 잡아주는데, 가끔 안 잡힐 때는 칩 제조사 드라이버 직접 설치해야 합니다. 이건 CNTerminal 문제가 아니라 어느 터미널 써도 똑같아요.
4) 멀티 세션은 안 됩니다. 한 번에 한 포트만 열 수 있어요. 여러 디바이스 동시에 보려면 .exe를 여러 번 실행해야 합니다. 가벼우니까 부담은 없는데, 통합 뷰가 안 되는 건 아쉽긴 합니다.
받는 곳
CNTerminal은 코딩나우 사이트에서 받을 수 있습니다. 만든 분이 다른 도구들도 같이 공개해놓으셨더라고요. 스타크래프트 미니맵 레이더, GUI 앱 컨트롤러, 한국어 TTS 프로그램 Voxsave 같은 것들도 있어요.
📥 코딩나우에서 받기
👉 https://www.coding-now.com/
오픈소스라서 GitHub에 소스도 다 공개돼 있어요. Rust 빌드 환경 있으시면 직접 빌드해서 쓰셔도 됩니다.
마무리
임베디드 쪽에서 오래된 도구들을 그대로 써오던 게 사실이에요. PuTTY는 20년 넘은 거고, TeraTerm은 90년대 산이고. 시리얼 통신이라는 게 기본적으로 단순한 작업이라 새 도구가 잘 안 나오는 분야이기도 했고요.
근데 가끔 이런 도구가 나오면 "아 이렇게 만들 수도 있구나" 싶습니다. 다 한 화면에 보이고, 비표준 보율도 직접 입력하고, HEX 디버깅이 사람답게 되고, 송신 전 미리보기로 실수 잡고, 설정이 옆 파일에 자동 저장되고.
특별히 혁신적인 기능이 있는 건 아니에요. 그냥 기존에 있던 기능들을 사용자 입장에서 깔끔하게 재정리한 느낌입니다. 그리고 그게 가장 좋아요.
아두이노나 ESP32 자주 만지시는 분들, 한 번 받아서 써보세요. 8MB짜리 .exe 하나니까 부담도 없고, 안 맞으면 그냥 지우면 되니까요.
저는 요즘 PuTTY 대신 이거 띄워놓고 작업합니다. 가끔은 도구 하나가 작업 효율을 꽤 바꿔놓더라고요.