가상 시리얼 포트 설치
가상 시리얼 포트는 두 가지 방식으로 만듭니다.
- 의사 터미널(pty) 모드: 설치가 필요 없습니다.
pdcomm-vserial프로그램만 있으면 macOS와 Linux에서 바로 씁니다. 응용 프로그램은/dev/ttys…나/dev/pts/…경로를 엽니다. - 드라이버 모드: 운영체제에 포트 드라이버를 설치합니다. 응용 프로그램은 Windows의
COMn, Linux의/dev/ttyPDVn처럼 일반 시리얼 포트 이름을 엽니다. 포트 이름을 바꿀 수 없는 응용 프로그램이나 장치 관리자에서 포트를 찾는 프로그램을 시험할 때 씁니다.
| 운영체제 | 사용 방식 |
|---|---|
| Windows 10/11 x64 | 드라이버 모드: MSI 설치 파일 (UMDF2 포트 드라이버) |
| Linux (Debian, Ubuntu) amd64·arm64 | 드라이버 모드: DKMS 커널 모듈 .deb 패키지, 의사 터미널 모드 |
| macOS | 의사 터미널 모드 |
Windows에 설치하기
섹션 제목: “Windows에 설치하기”MSI 설치 파일은 다음을 설치합니다.
C:\Program Files\PDComm\Virtual Serial\bin\pdcomm-vserial.exe: 랩을 실행하고 포트를 관리하는 명령줄 프로그램C:\Program Files\PDComm\Virtual Serial\driver\: 포트 드라이버(PDCommVSerial.dll, UMDF2), 플러시 요청을 전달하는 커널 필터(PDCommVSerialFlt.sys), INF와 카탈로그 파일
설치 프로그램은 파일을 복사한 뒤 COM 포트 장치를 만들고 드라이버를 설치합니다. 기본으로 포트 2개를 만들며, 이름은 Windows가 다른 이름을 정하지 않으면 COM201, COM202입니다.
-
관리자 권한으로 MSI 파일을 실행합니다. 포트 수를 바꾸려면 관리자 명령 프롬프트에서
PORTS속성을 지정합니다.터미널 창 msiexec /i <MSI 파일 경로> PORTS=4 -
장치 관리자의 **포트(COM & LPT)**에서 PDComm Virtual Serial Port (COM201) 같은 항목을 확인합니다. 명령줄에서도 확인할 수 있습니다.
터미널 창 & "$env:ProgramFiles\PDComm\Virtual Serial\bin\pdcomm-vserial.exe" ports list설치한 포트의 장치 인스턴스, 드라이버 포트 번호(
index), COM 이름을 JSON으로 출력합니다. -
포트는 랩이 실행 중일 때만 서로 연결됩니다. 다음 랩 파일은 드라이버 포트 0과 1을 널 모뎀으로 잇습니다.
windows-null-modem.json {"engine": {"pacing": "realistic","nodes": [{"name": "plc", "port": {"line": {"baud": 19200, "data_bits": 8, "parity": "even", "stop_bits": "1"}}},{"name": "hmi", "port": {"line": {"baud": 19200, "data_bits": 8, "parity": "even", "stop_bits": "1"}}}],"media": [{"kind": "null_modem", "a": "plc", "b": "hmi"}]},"ports": [{"node": "plc", "backend": {"type": "driver", "index": 0}},{"node": "hmi", "backend": {"type": "driver", "index": 1}}]}터미널 창 & "$env:ProgramFiles\PDComm\Virtual Serial\bin\pdcomm-vserial.exe" run --config windows-null-modem.json랩이 준비되면 포트 목록을 출력합니다. 이제 한 프로그램은
COM201, 다른 프로그램은COM202를 엽니다. 랩을 멈추려면{"command":"stop"}을 입력하거나 Ctrl+Z, Enter를 누릅니다.
포트 추가와 제거
섹션 제목: “포트 추가와 제거”관리자 권한 PowerShell에서 실행합니다.
$Bin = "$env:ProgramFiles\PDComm\Virtual Serial"& "$Bin\bin\pdcomm-vserial.exe" ports install --inf "$Bin\driver\PDCommVSerial.inf" --count 4& "$Bin\bin\pdcomm-vserial.exe" ports removeports install은 포트가--count개가 될 때까지 새 포트를 만듭니다. 새 포트는 비어 있는 가장 작은 드라이버 포트 번호를 받고 이름은COM<--first-com + 번호>입니다.--first-com의 기본값은 201입니다. 포트는 최대 64개입니다.ports remove는 포트 장치를 모두 지웁니다.ports uninstall은 장치와 함께 드라이버 패키지와 필터 서비스도 지웁니다.
설정 > 앱에서 PDComm Virtual Serial을 제거하거나 msiexec /x <MSI 파일 경로>를 실행합니다. 설치 프로그램은 파일을 지우기 전에 포트 장치, 드라이버 패키지, 필터 서비스를 지웁니다.
Linux에 설치하기
섹션 제목: “Linux에 설치하기”.deb 패키지는 다음을 설치합니다.
| 경로 | 내용 |
|---|---|
/usr/src/pdcomm-vserial-<버전>/ |
DKMS가 빌드하는 커널 모듈 pdcomm_vserial 소스 |
/usr/bin/pdcomm-vserial |
랩 실행 프로그램 |
/lib/systemd/system/pdcomm-vseriald.service |
부팅할 때 기본 랩을 실행하는 서비스 |
/lib/udev/rules.d/60-pdcomm-vserial.rules |
포트를 dialout 그룹이 읽고 쓰게 하는 규칙 |
/etc/pdcomm-vserial/lab.json |
서비스가 실행하는 기본 랩 |
/etc/modprobe.d/pdcomm-vserial.conf |
모듈 옵션 (기본 ports=4) |
-
DKMS가 모듈을 빌드하려면 실행 중인 커널의 헤더가 필요합니다. 먼저 설치합니다.
터미널 창 sudo apt install linux-headers-$(uname -r) -
패키지를 설치합니다.
터미널 창 sudo apt install ./pdcomm-vserial_<버전>_amd64.deb설치 스크립트는 모듈을 빌드해 적재하고
pdcomm-vseriald서비스를 켭니다. arm64 시스템에서는_arm64.deb를 사용합니다. -
포트와 서비스를 확인합니다.
터미널 창 ls -l /dev/ttyPDV*systemctl status pdcomm-vseriald/dev/ttyPDV0부터/dev/ttyPDV3까지 포트 4개가 보입니다. 서비스는 기본 랩으로ttyPDV0과ttyPDV1,ttyPDV2와ttyPDV3을 각각 널 모뎀으로 잇습니다./etc/pdcomm-vserial/lab.json {"engine": {"pacing": "realistic","nodes": [{"name": "port0"}, {"name": "port1"}, {"name": "port2"}, {"name": "port3"}],"media": [{"kind": "null_modem", "a": "port0", "b": "port1"},{"kind": "null_modem", "a": "port2", "b": "port3"}]},"ports": [{"node": "port0", "backend": {"type": "driver", "index": 0}},{"node": "port1", "backend": {"type": "driver", "index": 1}},{"node": "port2", "backend": {"type": "driver", "index": 2}},{"node": "port3", "backend": {"type": "driver", "index": 3}}]} -
일반 사용자가 포트를 열려면
dialout그룹에 추가하고 다시 로그인합니다.터미널 창 sudo usermod -aG dialout "$USER"
배선과 포트 수 바꾸기
섹션 제목: “배선과 포트 수 바꾸기”-
배선을 바꾸려면
/etc/pdcomm-vserial/lab.json을 고친 뒤sudo systemctl restart pdcomm-vseriald를 실행합니다. 패키지를 다시 설치해도 이 파일은 보존합니다. -
포트 수(1~64)를 바꾸려면
/etc/modprobe.d/pdcomm-vserial.conf의ports값을 고치고 모듈을 다시 적재합니다.터미널 창 sudo systemctl stop pdcomm-vserialdsudo modprobe -r pdcomm_vserialsudo modprobe pdcomm_vserialsudo systemctl start pdcomm-vseriald -
서비스 대신 직접 랩을 실행하려면 먼저 서비스를 멈춥니다. 드라이버 제어 장치
/dev/pdcomm-vserial는 한 번에 한 랩만 열 수 있고 root만 열 수 있습니다.터미널 창 sudo systemctl stop pdcomm-vserialdsudo pdcomm-vserial run --config my-lab.json
sudo apt remove pdcomm-vserial서비스를 멈추고 모듈을 내린 뒤 DKMS에서 모듈을 지웁니다.
macOS에서 사용하기
섹션 제목: “macOS에서 사용하기”macOS에서는 의사 터미널 모드를 사용합니다. pdcomm-vserial 프로그램을 원하는 폴더에 두고 PATH에 추가하면 설치가 끝납니다.
pdcomm-vserial --versionpdcomm-vserial pair --link-a /tmp/pdcomm-a --link-b /tmp/pdcomm-b응용 프로그램은 링크 경로(/tmp/pdcomm-a)나 랩이 출력한 path(/dev/ttys…)를 엽니다. 의사 터미널의 동작 차이는 의사 터미널의 동작을 참고합니다.
관리자 GUI와 MCP 서버
섹션 제목: “관리자 GUI와 MCP 서버”pdcomm-vserial-manager는 랩을 편집하고 실행하는 GUI입니다. 자기와 같은 폴더의pdcomm-vserial을 실행합니다. 다른 위치의 프로그램을 쓰려면 환경 변수PDCOMM_VSERIAL_BIN에 경로를 지정합니다. 가상 시리얼 관리자를 참고합니다.pdcomm-vserial-mcp는 AI 도구가 랩을 만들고 제어하는 MCP 서버입니다. MCP로 가상 시리얼 제어하기를 참고합니다.