Portmon
This excellent utility for monitoring serial port activity can be downloaded from http://www.sysinternals.com/ and http://technet.microsoft.com/en-us/sysinternals/bb896644.aspx.
Quoting the Sysinternals website: “Portmon is a utility that monitors and displays all serial and parallel port activity on a system. It has advanced filtering and search capabilities that make it a powerful tool for exploring the way Windows works, seeing how applications use ports, or tracking down problems in system or application configurations."
Portmon works on all versions of Windows supported by HRD and DM780.
It is often useful to run Portmon when unexpected results are returned from a radio or other device such as a rotator or keyer.
Typically the problems are either:
- Incorrect / unexpected data returned, or
- Timeouts when reading the radio.
Timeouts are the most common problem, often caused by USB => serial port converters having poor drivers.
If the IRP_MJ_READ entries do not contain any data then the radio is simply not responding, a typical example is shown here:
0.00002276 HamRadioDeluxe. IRP_MJ_WRITE Serial0 SUCCESS Length 3: 50 53 3B
0.99979074 HamRadioDeluxe. IRP_MJ_READ Serial0 TIMEOUT Length 0:
The Steps
- Close any programs connected to your radio or device being interrogated.
- Start Portmon.exe
- Make sure the options below are set:
- Menu: Options, Show Time
Value: ON
- Menu: Options, Show HEX
Value: OFF if Elecraft, Kenwood, Yaesu FT-2000, FT-450, FT-950
ON if ICOM, Older Yaesu or TenTec
ON if you are not sure (programmers can read hex).
- Menu: Options, Clock Time
Value: OFF
- Menu: Computer, Select your local computer
- Menu: Capture, Ports
Value: The COM port where you have connected the interface
to your radio, select only one COM port to avoid confusion.
- Menu: Capture, Capture Events
Value: ON
- Start HRD then connect to your radio.
- Let HRD run for about 60 seconds while you perform your tests.
- Stop HRD (File menu: Disconnect).
- In Portmon set the Capture: Capture Events option to OFF.
- Look at the results - if the IRP_MJ_READ does not return any data then the radio is not responding.
- If IRP_MJ_READ is returning data but the frequency is not displayed correctly then:
Sample Logfile
A sample logfile for a TS-480SAT connecting at 115,200 baud is shown below. To save space the Process (HamRadioDeluxe) and Port (Serial0) are not shown. All data is in ASCII as the Kenwood protocol uses ASCII, there is not need to display hex. There are no errors in this logfile.
# Time Request Result Other
2 0.00006733 IRP_MJ_CREATE SUCCESS Options: Open
3 0.00000307 IOCTL_SERIAL_SET_QUEUE_SIZE SUCCESS InSize: 1024 OutSize: 1024
4 0.00000279 IOCTL_SERIAL_PURGE SUCCESS Purge: TXABORT RXABORT TXCLEAR RXCLEAR
5 0.00000196 IOCTL_SERIAL_GET_BAUD_RATE SUCCESS
6 0.00000168 IOCTL_SERIAL_GET_LINE_CONTROL SUCCESS
7 0.00000140 IOCTL_SERIAL_GET_CHARS SUCCESS
8 0.00000168 IOCTL_SERIAL_GET_HANDFLOW SUCCESS
9 0.00000894 IOCTL_SERIAL_SET_BAUD_RATE SUCCESS Rate: 115200
10 0.00000447 IOCTL_SERIAL_SET_RTS SUCCESS
11 0.00000447 IOCTL_SERIAL_CLR_DTR SUCCESS
12 0.00000335 IOCTL_SERIAL_SET_LINE_CONTROL SUCCESS StopBits: 1 Parity: NONE WordLength: 8
13 0.00000168 IOCTL_SERIAL_SET_CHAR SUCCESS EOF:0 ERR:3f BRK:3f EVT:0 XON:11 XOFF:13
14 0.00000335 IOCTL_SERIAL_SET_HANDFLOW SUCCESS Shake:8 Replace:40 XonLimit:341 XoffLimit:341
15 0.00000168 IOCTL_SERIAL_SET_TIMEOUTS SUCCESS RI:500 RM:500 RC:500 WM:500 WC:500
16 0.00000447 IOCTL_SERIAL_CLR_DTR SUCCESS
17 0.00000447 IOCTL_SERIAL_SET_RTS SUCCESS
18 0.00000223 IOCTL_SERIAL_SET_WAIT_MASK SUCCESS Mask: RXCHAR TXEMPTY CTS DSR RLSD BRK RING
19 0.00000223 IOCTL_SERIAL_PURGE SUCCESS Purge: TXABORT RXABORT TXCLEAR RXCLEAR
20 0.00002989 IRP_MJ_WRITE SUCCESS Length 4: AI0;
21 0.00000196 IOCTL_SERIAL_GET_BAUD_RATE SUCCESS
22 0.00000168 IOCTL_SERIAL_GET_LINE_CONTROL SUCCESS
23 0.00000140 IOCTL_SERIAL_GET_CHARS SUCCESS
24 0.00000140 IOCTL_SERIAL_GET_HANDFLOW SUCCESS
25 0.00000894 IOCTL_SERIAL_SET_BAUD_RATE SUCCESS Rate: 115200
26 0.00000447 IOCTL_SERIAL_SET_RTS SUCCESS
27 0.00000447 IOCTL_SERIAL_CLR_DTR SUCCESS
28 0.00000307 IOCTL_SERIAL_SET_LINE_CONTROL SUCCESS StopBits: 1 Parity: NONE WordLength: 8
29 0.00000168 IOCTL_SERIAL_SET_CHAR SUCCESS EOF:0 ERR:3f BRK:3f EVT:0 XON:11 XOFF:13
30 0.00000335 IOCTL_SERIAL_SET_HANDFLOW SUCCESS Shake:0 Replace:40 XonLimit:341 XoffLimit:341
31 0.00002626 IRP_MJ_WRITE SUCCESS Length 3: PS;
32 0.00174883 IRP_MJ_READ SUCCESS Length 1: P
33 0.00000391 IRP_MJ_READ SUCCESS Length 1: S
34 0.00000279 IRP_MJ_READ SUCCESS Length 1: 1
35 0.00000279 IRP_MJ_READ SUCCESS Length 1: ;
36 0.00000223 IOCTL_SERIAL_GET_BAUD_RATE SUCCESS
37 0.00000196 IOCTL_SERIAL_GET_LINE_CONTROL SUCCESS
38 0.00000168 IOCTL_SERIAL_GET_CHARS SUCCESS
39 0.00000196 IOCTL_SERIAL_GET_HANDFLOW SUCCESS
40 0.00000978 IOCTL_SERIAL_SET_BAUD_RATE SUCCESS Rate: 115200
41 0.00000447 IOCTL_SERIAL_SET_RTS SUCCESS
42 0.00000447 IOCTL_SERIAL_CLR_DTR SUCCESS
43 0.00000307 IOCTL_SERIAL_SET_LINE_CONTROL SUCCESS StopBits: 1 Parity: NONE WordLength: 8
44 0.00000168 IOCTL_SERIAL_SET_CHAR SUCCESS EOF:0 ERR:3f BRK:3f EVT:0 XON:11 XOFF:13
45 0.00000335 IOCTL_SERIAL_SET_HANDFLOW SUCCESS Shake:8 Replace:40 XonLimit:341 XoffLimit:341
46 0.00002850 IRP_MJ_WRITE SUCCESS Length 4: AI0;
47 0.00002794 IRP_MJ_WRITE SUCCESS Length 3: IF;
48 0.00193712 IRP_MJ_READ SUCCESS Length 1: I
49 0.00000391 IRP_MJ_READ SUCCESS Length 1: F
50 0.00000307 IRP_MJ_READ SUCCESS Length 1: 0
51 0.00000335 IRP_MJ_READ SUCCESS Length 1: 0
52 0.00000196 IRP_MJ_READ SUCCESS Length 1: 0
53 0.00000223 IRP_MJ_READ SUCCESS Length 1: 1
54 0.00000196 IRP_MJ_READ SUCCESS Length 1: 4
55 0.00000223 IRP_MJ_READ SUCCESS Length 1: 0
56 0.00042128 IRP_MJ_READ SUCCESS Length 1: 7
57 0.00000335 IRP_MJ_READ SUCCESS Length 1: 0
58 0.00000279 IRP_MJ_READ SUCCESS Length 1: 0
59 0.00000279 IRP_MJ_READ SUCCESS Length 1: 0
60 0.00000279 IRP_MJ_READ SUCCESS Length 1: 0
61 0.00000279 IRP_MJ_READ SUCCESS Length 1:
62 0.00000279 IRP_MJ_READ SUCCESS Length 1:
63 0.00000279 IRP_MJ_READ SUCCESS Length 1:
64 0.00055985 IRP_MJ_READ SUCCESS Length 1:
65 0.00000503 IRP_MJ_READ SUCCESS Length 1:
66 0.00000307 IRP_MJ_READ SUCCESS Length 1: -
67 0.00000307 IRP_MJ_READ SUCCESS Length 1: 0
68 0.00000279 IRP_MJ_READ SUCCESS Length 1: 0
69 0.00000279 IRP_MJ_READ SUCCESS Length 1: 4
70 0.00000279 IRP_MJ_READ SUCCESS Length 1: 0
71 0.00000279 IRP_MJ_READ SUCCESS Length 1: 0
72 0.00047380 IRP_MJ_READ SUCCESS Length 1: 0
73 0.00000363 IRP_MJ_READ SUCCESS Length 1: 0
74 0.00000251 IRP_MJ_READ SUCCESS Length 1: 1
75 0.00005364 IRP_MJ_READ SUCCESS Length 1: 2
76 0.00000223 IRP_MJ_READ SUCCESS Length 1: 0
77 0.00000196 IRP_MJ_READ SUCCESS Length 1: 2
78 0.00000196 IRP_MJ_READ SUCCESS Length 1: 0
79 0.00000279 IRP_MJ_READ SUCCESS Length 1: 0
80 0.00049196 IRP_MJ_READ SUCCESS Length 1: 0
81 0.00000335 IRP_MJ_READ SUCCESS Length 1: 0
82 0.00000279 IRP_MJ_READ SUCCESS Length 1: 0
83 0.00000279 IRP_MJ_READ SUCCESS Length 1: 8
84 0.00000279 IRP_MJ_READ SUCCESS Length 1: 0
85 0.00000251 IRP_MJ_READ SUCCESS Length 1: ;
86 0.00003883 IRP_MJ_WRITE SUCCESS Length 3: IF;
87 0.00144348 IRP_MJ_READ SUCCESS Length 1: I
88 0.00000475 IRP_MJ_READ SUCCESS Length 1: F
89 0.00000251 IRP_MJ_READ SUCCESS Length 1: 0
90 0.00000251 IRP_MJ_READ SUCCESS Length 1: 0
91 0.00000223 IRP_MJ_READ SUCCESS Length 1: 0
92 0.00000223 IRP_MJ_READ SUCCESS Length 1: 1
93 0.00000223 IRP_MJ_READ SUCCESS Length 1: 4
94 0.00000223 IRP_MJ_READ SUCCESS Length 1: 0
95 0.00000223 IRP_MJ_READ SUCCESS Length 1: 7
96 0.00000223 IRP_MJ_READ SUCCESS Length 1: 0
97 0.00000196 IRP_MJ_READ SUCCESS Length 1: 0
98 0.00000223 IRP_MJ_READ SUCCESS Length 1: 0
99 0.00000223 IRP_MJ_READ SUCCESS Length 1: 0
100 0.00000223 IRP_MJ_READ SUCCESS Length 1:
101 0.00000196 IRP_MJ_READ SUCCESS Length 1:
102 0.00000223 IRP_MJ_READ SUCCESS Length 1:
103 0.00050258 IRP_MJ_READ SUCCESS Length 1:
104 0.00000307 IRP_MJ_READ SUCCESS Length 1:
105 0.00000223 IRP_MJ_READ SUCCESS Length 1: -
106 0.00000223 IRP_MJ_READ SUCCESS Length 1: 0
107 0.00000223 IRP_MJ_READ SUCCESS Length 1: 0
108 0.00000251 IRP_MJ_READ SUCCESS Length 1: 4
109 0.00000223 IRP_MJ_READ SUCCESS Length 1: 0
110 0.00000223 IRP_MJ_READ SUCCESS Length 1: 0
111 0.00039949 IRP_MJ_READ SUCCESS Length 1: 0
112 0.00000363 IRP_MJ_READ SUCCESS Length 1: 0
113 0.00000223 IRP_MJ_READ SUCCESS Length 1: 1
114 0.00000223 IRP_MJ_READ SUCCESS Length 1: 2
115 0.00000223 IRP_MJ_READ SUCCESS Length 1: 0
116 0.00000223 IRP_MJ_READ SUCCESS Length 1: 2
117 0.00000223 IRP_MJ_READ SUCCESS Length 1: 0
118 0.00000223 IRP_MJ_READ SUCCESS Length 1: 0
119 0.00038943 IRP_MJ_READ SUCCESS Length 1: 0
120 0.00000251 IRP_MJ_READ SUCCESS Length 1: 0
121 0.00000223 IRP_MJ_READ SUCCESS Length 1: 0
122 0.00000251 IRP_MJ_READ SUCCESS Length 1: 8
123 0.00000223 IRP_MJ_READ SUCCESS Length 1: 0
124 0.00000223 IRP_MJ_READ SUCCESS Length 1: ;
125 0.00002598 IRP_MJ_WRITE SUCCESS Length 3: FB;
126 0.00172284 IRP_MJ_READ SUCCESS Length 1: F
127 0.00000503 IRP_MJ_READ SUCCESS Length 1: B
128 0.00000670 IRP_MJ_READ SUCCESS Length 1: 0
129 0.00000251 IRP_MJ_READ SUCCESS Length 1: 0
130 0.00000251 IRP_MJ_READ SUCCESS Length 1: 0
131 0.00000251 IRP_MJ_READ SUCCESS Length 1: 1
132 0.00000223 IRP_MJ_READ SUCCESS Length 1: 4
133 0.00000223 IRP_MJ_READ SUCCESS Length 1: 0
134 0.00021260 IRP_MJ_READ SUCCESS Length 1: 4
135 0.00000251 IRP_MJ_READ SUCCESS Length 1: 0
136 0.00000223 IRP_MJ_READ SUCCESS Length 1: 0
137 0.00000223 IRP_MJ_READ SUCCESS Length 1: 0
138 0.00000223 IRP_MJ_READ SUCCESS Length 1: 0
139 0.00000223 IRP_MJ_READ SUCCESS Length 1: ;
140 0.00003129 IRP_MJ_WRITE SUCCESS Length 3: IF;
141 0.00146639 IRP_MJ_READ SUCCESS Length 1: I
142 0.00000335 IRP_MJ_READ SUCCESS Length 1: F
143 0.00000251 IRP_MJ_READ SUCCESS Length 1: 0
144 0.00001173 IRP_MJ_READ SUCCESS Length 1: 0
145 0.00000223 IRP_MJ_READ SUCCESS Length 1: 0
146 0.00000251 IRP_MJ_READ SUCCESS Length 1: 1
147 0.00000251 IRP_MJ_READ SUCCESS Length 1: 4
148 0.00000279 IRP_MJ_READ SUCCESS Length 1: 0
149 0.00000223 IRP_MJ_READ SUCCESS Length 1: 7
150 0.00000251 IRP_MJ_READ SUCCESS Length 1: 0
151 0.00000307 IRP_MJ_READ SUCCESS Length 1: 0
152 0.00000279 IRP_MJ_READ SUCCESS Length 1: 0
153 0.00000335 IRP_MJ_READ SUCCESS Length 1: 0
154 0.00000251 IRP_MJ_READ SUCCESS Length 1:
155 0.00000251 IRP_MJ_READ SUCCESS Length 1:
156 0.00000307 IRP_MJ_READ SUCCESS Length 1:
157 0.00041849 IRP_MJ_READ SUCCESS Length 1:
158 0.00000419 IRP_MJ_READ SUCCESS Length 1:
159 0.00000223 IRP_MJ_READ SUCCESS Length 1: -
160 0.00000196 IRP_MJ_READ SUCCESS Length 1: 0
161 0.00000223 IRP_MJ_READ SUCCESS Length 1: 0
162 0.00000223 IRP_MJ_READ SUCCESS Length 1: 4
163 0.00000196 IRP_MJ_READ SUCCESS Length 1: 0
164 0.00000223 IRP_MJ_READ SUCCESS Length 1: 0
165 0.00013326 IRP_MJ_READ SUCCESS Length 1: 0
166 0.00000251 IRP_MJ_READ SUCCESS Length 1: 0
167 0.00000223 IRP_MJ_READ SUCCESS Length 1: 1
168 0.00000223 IRP_MJ_READ SUCCESS Length 1: 2
169 0.00000223 IRP_MJ_READ SUCCESS Length 1: 0
170 0.00000223 IRP_MJ_READ SUCCESS Length 1: 2
171 0.00000196 IRP_MJ_READ SUCCESS Length 1: 0
172 0.00000223 IRP_MJ_READ SUCCESS Length 1: 0
173 0.00074535 IRP_MJ_READ SUCCESS Length 1: 0
174 0.00000335 IRP_MJ_READ SUCCESS Length 1: 0
175 0.00000223 IRP_MJ_READ SUCCESS Length 1: 0
176 0.00000223 IRP_MJ_READ SUCCESS Length 1: 8
177 0.00000223 IRP_MJ_READ SUCCESS Length 1: 0
178 0.00000196 IRP_MJ_READ SUCCESS Length 1: ;
179 0.00002598 IRP_MJ_WRITE SUCCESS Length 3: FB;
180 0.00154042 IRP_MJ_READ SUCCESS Length 1: F
181 0.00000363 IRP_MJ_READ SUCCESS Length 1: B
182 0.00000251 IRP_MJ_READ SUCCESS Length 1: 0
183 0.00000223 IRP_MJ_READ SUCCESS Length 1: 0
184 0.00000223 IRP_MJ_READ SUCCESS Length 1: 0
185 0.00000223 IRP_MJ_READ SUCCESS Length 1: 1
186 0.00000251 IRP_MJ_READ SUCCESS Length 1: 4
187 0.00000223 IRP_MJ_READ SUCCESS Length 1: 0
188 0.00073976 IRP_MJ_READ SUCCESS Length 1: 4
189 0.00000363 IRP_MJ_READ SUCCESS Length 1: 0
190 0.00000279 IRP_MJ_READ SUCCESS Length 1: 0
191 0.00000307 IRP_MJ_READ SUCCESS Length 1: 0
192 0.00000279 IRP_MJ_READ SUCCESS Length 1: 0
193 0.00000279 IRP_MJ_READ SUCCESS Length 1: ;
194 0.00003129 IRP_MJ_WRITE SUCCESS Length 3: BY;
195 0.00064338 IRP_MJ_READ SUCCESS Length 1: B
196 0.00000279 IRP_MJ_READ SUCCESS Length 1: Y
197 0.00000223 IRP_MJ_READ SUCCESS Length 1: 1
198 0.00000223 IRP_MJ_READ SUCCESS Length 1: 0
199 0.00000223 IRP_MJ_READ SUCCESS Length 1: ;