
얼마 전 오래된 영수증 프린터를 노트북에 연결했는데, 프로그램에서는 계속 COM 포트를 고르라고 하고 정작 목록에는 아무것도 안 떠서 꽤 헤맸습니다. 케이블을 뺐다 꽂고 재부팅까지 했는데도 그대로라서 순간 기계가 고장 난 줄 알았죠. 그런데 알고 보면 COM 문제는 고장보다 설정, 드라이버, 포트 번호 충돌에서 생기는 경우가 훨씬 많습니다.
COM은 윈도우에서 시리얼 통신 장치를 구분할 때 쓰는 이름입니다. 예전에는 진짜 9핀 시리얼 포트가 컴퓨터에 달려 있었고 COM1, COM2처럼 불렀습니다. 요즘은 USB로 연결하는 장비도 내부적으로는 가상 COM 포트로 잡히는 경우가 많습니다. 아두이노, 바코드 스캐너, 산업용 장비, 계측기, 카드 단말기, 라벨 프린터 같은 장치에서 자주 만납니다.
COM 포트가 보이는 위치부터 확인하기
가장 먼저 볼 곳은 윈도우의 장치 관리자입니다. 시작 버튼을 마우스 오른쪽으로 누른 뒤 장치 관리자를 열면 됩니다. 여기서 포트 항목을 펼쳤을 때 USB Serial Port, Communications Port 같은 이름이 보이면 장치가 어느 정도 인식된 상태입니다. 괄호 안에 COM3, COM5처럼 번호가 붙어 있는지도 같이 확인하면 됩니다.
만약 포트 항목 자체가 안 보인다면 상단 메뉴에서 숨김 장치 표시를 켜보는 것도 괜찮습니다. 그래도 없다면 케이블, 드라이버, 전원 공급 쪽을 봐야 합니다. 특히 충전만 되는 USB 케이블을 쓰면 데이터 통신이 안 됩니다. 겉보기에는 똑같이 생겼는데 장치가 잡히지 않는 대표적인 이유입니다.
- 장치 관리자에서 포트 항목이 있는지 확인
- 장치 이름 옆에 노란 느낌표가 있는지 확인
- COM 번호가 실제 프로그램 설정과 같은지 확인
- 충전 전용 USB 케이블이 아닌지 확인
드라이버 문제인지 구분하는 방법
장치 관리자에 노란 느낌표가 뜬다면 드라이버 문제일 가능성이 큽니다. 특히 USB 시리얼 변환 칩을 쓰는 장비는 칩 제조사 드라이버가 필요할 때가 있습니다. CH340, CP210x, FTDI 같은 이름을 들어본 적이 있다면 바로 그 부류입니다. 같은 USB 장비라도 안쪽에 들어간 칩이 다르면 필요한 드라이버도 달라질 수 있습니다.
실제 사례로, 아두이노 호환 보드를 연결했는데 정품 보드는 바로 COM 포트가 생기고 저가 호환 보드는 아무 반응이 없는 일이 많습니다. 이때 보드가 불량이라기보다 CH340 계열 드라이버가 빠져 있는 경우가 흔합니다. 드라이버를 설치한 뒤 케이블을 다시 꽂으면 COM7처럼 새 번호가 생기기도 합니다.
근데 여기서 조심할 점이 하나 있습니다. 아무 드라이버나 내려받아 설치하는 건 피하는 게 좋습니다. 장비 제조사, 칩 제조사, 또는 Microsoft의 장치 관리자 업데이트 기능처럼 비교적 신뢰할 수 있는 경로를 먼저 쓰는 편이 안전합니다.
COM 번호가 맞지 않을 때 바꾸는 방법
프로그램에서 COM3만 선택할 수 있는데 실제 장치는 COM12로 잡히는 경우가 있습니다. 오래된 프로그램일수록 높은 번호의 COM 포트를 제대로 읽지 못하는 일이 있습니다. 이럴 때는 장치 관리자에서 포트 번호를 낮은 번호로 바꾸면 해결되는 경우가 많습니다.
방법은 어렵지 않습니다. 장치 관리자에서 해당 포트를 더블 클릭하고 포트 설정으로 들어간 다음 고급 버튼을 누르면 COM 포트 번호를 바꿀 수 있습니다. 이미 사용 중이라고 표시되는 번호가 있어도 예전에 연결했던 장비의 흔적일 수 있습니다. 다만 실제로 현재 쓰는 장치와 겹치면 충돌이 날 수 있으니 COM3, COM4, COM5처럼 비어 보이는 번호부터 고르는 게 무난합니다.
- 구형 프로그램은 COM1부터 COM9까지만 안정적으로 인식하는 경우가 있음
- 포트 번호를 바꾼 뒤에는 프로그램을 완전히 껐다가 다시 실행
- 같은 장치를 다른 USB 포트에 꽂으면 COM 번호가 바뀔 수 있음
통신 설정도 같이 맞춰야 합니다
COM 포트가 보인다고 해서 바로 통신이 되는 건 아닙니다. 속도와 형식이 맞아야 합니다. 장비 설명서에서 baud rate라고 적힌 값이 보일 텐데, 9600, 19200, 115200 같은 숫자가 대표적입니다. 프로그램의 속도 설정이 장비와 다르면 연결은 된 것처럼 보이는데 데이터가 깨지거나 아무 반응이 없을 수 있습니다.
예를 들어 아두이노 예제는 9600bps로 시작하는 경우가 많고, 일부 GPS 모듈은 9600bps나 38400bps를 씁니다. 산업용 계측기는 19200bps, 8 data bits, no parity, 1 stop bit처럼 더 자세한 설정을 요구하기도 합니다. 설명서에 9600 8N1이라고 쓰여 있다면 속도 9600, 데이터 비트 8, 패리티 없음, 스톱 비트 1이라는 뜻입니다.
솔직히 처음 보면 이런 값들이 괜히 복잡해 보입니다. 하지만 통신 양쪽의 약속이라고 생각하면 편합니다. 한쪽은 천천히 말하는데 다른 쪽은 빠르게 듣고 있으면 말이 어긋나는 것과 비슷합니다.
그래도 안 될 때 보는 현실적인 체크리스트
여기까지 확인했는데도 안 된다면 문제를 조금 더 좁혀보면 됩니다. 같은 장치를 다른 컴퓨터에 꽂아보고, 같은 컴퓨터에 다른 USB 장비를 꽂아보면 어느 쪽 문제인지 감이 옵니다. 장치 전원이 따로 필요한 모델이라면 전원 어댑터가 정상인지도 확인해야 합니다. USB만 꽂으면 되는 줄 알았는데 실제 통신은 별도 전원이 들어와야 되는 장비도 꽤 있습니다.
또 하나 자주 놓치는 부분은 프로그램 중복 실행입니다. COM 포트는 보통 한 프로그램이 잡고 있으면 다른 프로그램이 동시에 쓰기 어렵습니다. 시리얼 모니터를 켜둔 상태에서 다른 프로그램을 실행하면 포트를 열 수 없다는 오류가 날 수 있습니다. 이럴 때는 관련 프로그램을 모두 닫고 다시 실행하는 게 빠릅니다.
- 다른 USB 포트에 연결해 보기
- 다른 케이블로 교체해 보기
- 장치 제조사 드라이버를 다시 설치하기
- 시리얼 모니터나 관련 프로그램을 모두 종료하기
- 장치 전원과 통신 속도 설정을 다시 맞추기
COM 포트 문제는 처음엔 굉장히 낯설지만, 순서대로 보면 의외로 단순합니다. 장치가 인식되는지, 드라이버가 맞는지, 번호가 프로그램과 맞는지, 통신 속도가 같은지 차례대로 확인하면 대부분의 막힘은 그 안에서 잡힙니다. 개인적으로는 케이블과 COM 번호에서 가장 많이 걸렸습니다. 별것 아닌 부분에서 시간이 녹는 일이 많아서, 처음부터 이 순서로 보면 훨씬 덜 답답합니다.
