Because I wanna to use serial to communicate with OVMF via QEMU, I tried to search a workable serial port emulator for free
The first choice is com0com but seems the project owner cannot resign its driver for Windows 10 without need to enabling TESTSIGNING mode or disabling SecureBoot, but the both workaround are not accepable.
Fortunately, there is a workable signed driver provided by PETE’S BLOG.
Download
- Get the driver form here.
Install
- No need to install the software, it just only a driver and setup utility setupc.exe
Setup
- Run setupc.exe
The help message as below for the setupc.exe
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
|
Enter 'help' to get info about usage of Setup for com0com.
command> list
CNCA0 PortName=COM1
CNCB0 PortName=COM2
command> help
Setup for com0com
Usage:
[options] <command>
Options:
--output <file> - file for output, default is console
--wait <to> - wait <to> seconds for install completion
(by default <to> is 0 - no wait)
--detail-prms - show detailed parameters
--silent - suppress dialogs if possible
--no-update - do not update driver while install command
execution (update command expected later)
Commands:
install <n> <prmsA> <prmsB> - install a pair of linked ports with
or identifiers CNCA<n> and CNCB<n>
install <prmsA> <prmsB> (by default <n> is the first not used number),
set their parameters to <prmsA> and <prmsB>
remove <n> - remove a pair of linked ports with
identifiers CNCA<n> and CNCB<n>
disable all - disable all ports in current hardware profile
enable all - enable all ports in current hardware profile
change <portid> <prms> - set parameters <prms> for port with
identifier <portid>
list - for each port show its identifier and
parameters
preinstall - preinstall driver
update - update driver
reload - reload driver
uninstall - uninstall all ports and the driver
busynames <pattern> - show names that already in use and match the
<pattern> (wildcards: '*' and '?')
quit - quit
help - print this help
Syntax of port parameters string:
- - use driver's defaults for all parameters
* - use current settings for all parameters
<par>=<val>[,...] - set value <val> for each parameter <par>
Parameters:
PortName=<name> - set port name to <name>
(port identifier by default)
EmuBR={yes|no} - enable/disable baud rate emulation in the direction
to the paired port (disabled by default)
EmuOverrun={yes|no} - enable/disable buffer overrun (disabled by default)
EmuNoise=<n> - probability in range 0-0.99999999 of error per
character frame in the direction to the paired port
(0 by default)
AddRTTO=<n> - add <n> milliseconds to the total time-out period
for read operations (0 by default)
AddRITO=<n> - add <n> milliseconds to the maximum time allowed to
elapse between the arrival of two characters for
read operations (0 by default)
PlugInMode={yes|no} - enable/disable plug-in mode, the plug-in mode port
is hidden and can't be open if the paired port is
not open (disabled by default)
ExclusiveMode={yes|no} - enable/disable exclusive mode, the exclusive mode
port is hidden if it is open (disabled by default)
HiddenMode={yes|no} - enable/disable hidden mode, the hidden mode port is
hidden as it is possible for port enumerators
(disabled by default)
cts=[!]<p> - wire CTS pin to <p> (rrts by default)
dsr=[!]<p> - wire DSR pin to <p> (rdtr by default)
dcd=[!]<p> - wire DCD pin to <p> (rdtr by default)
ri=[!]<p> - wire RI pin to <p> (!on by default)
The possible values of <p> above can be rrts, lrts, rdtr, ldtr, rout1, lout1,
rout2, lout2 (remote/local RTS/DTR/OUT1/OUT2), ropen, lopen (logical ON if
remote/local port is open) or on (logical ON). The exclamation sign (!) can be
used to invert the value.
Special values:
- - use driver's default value
* - use current setting
Examples:
install - -
install 5 * *
remove 0
install PortName=COM2 PortName=COM4
install PortName=COM5,EmuBR=yes,EmuOverrun=yes -
change CNCA0 EmuBR=yes,EmuOverrun=yes
list
uninstall
busynames COM?*
|
1
|
Install PortName=COM1 PortName=COM2
|
Reference