Unstable device address and COM port number

Thank you for an excellent product.

I have a server that collects data from several devices over the network. Devices have RS-232 interface, so I use Prolific USB-to-RS232, and connect devices to Raspberries running Virtualhere servers (licensed). I have total of 3 Raspberries with 6 devices, and growing.

On the Windows server I have VirtualHere client. It worked almost perfectly for a year with VirtualHere client 2.2.7. Running it as Windows service. After each restart all devices reconnected and even got the same COM port numbers, which is important for me (my monitoring software needs to know which is which).

Now I had to move to another Windows server and installed client 2.4.1. And it did not work the way I expected!

All devices connected both in manual mode and from Windows service. However, after every restart COM port numbers were assigned differently. Forcing them in Device manager did not help as apparently Windows thought these were different devices every time.

When using "-t" mode I saw that the device numbers (the ones in parentheses) also changed after reboot. Perhaps this was the reason.

Do you think it's the issue with the newest version? Or could it be a permission problem (Virtualhere trying to save something and unable?) Can I enable some logging to investigate further?

Thanks a lot

#2

You mean client 2.5.9? Could you try that version as its the latest.

#3

Indeed, for some reason I and copied 2.4.1. Must have confused two files.
Now I downloaded the latest - it says it's 2.6.0. Did not help

1) device numbers in COM port numbers still change after reboot. I am sorry I can't post pictures here, I'll upload them to dropbox. Maybe that's not a problem. Although it would be nice if they stayed the same - then we could control it by batch files.
https://www.dropbox.com/s/55194pi92xnws0x/before_reboot.png?dl=0
https://www.dropbox.com/s/6pnqxwsgbpunzfy/after_reboot.png?dl=0

2) COM port numbers also changed, e.g. from 11,19,5 to 10,17,5.

The same happens after service restart, after PC restart. Perhaps it depend on the order in which devices are connected. Using one of the devices from a different machine seems to reset numbers completely
(e.g.
- 3 devices - COM4,5,6
- stopped service,
- used one of the devices from a different machine
- restarted the service
- got COM7 and COM9)

I can only speculate here - I know it's largely up to Windows and the driver to assign port numbers. But the old version seemed to assign the same ports every time.

In the old version I see they have addresses like Port_#0003.Hub_#0011, and in the new version - like "Port_#0004.Hub_#0000"

In device manager, even after VirtualHere service is stopped and there are no COM ports, I see that many (20 or so) COM port numbers remain in use. Then when I restart the client Windows does not seem recognize the devices. Sometimes it's the same address "Port_#0004.Hub_#0000" etc, but still two different COM ports. Not sure what it means.

https://www.dropbox.com/s/mxrq4pboqqobuf3/ports.png?dl=0

3) vhui64 -t "STOP USING,NUMBER" does not seem to work. The device remains in use. Could it be the real reason? Works with the old version on the same machine.

4) I can't run service with parameters --log and --config - it does not even start (Windows says service failed to start).
What's the proper way? I tried --log=c:\virtualhere\vhui.log --config=c:\virtualhere\vhui.ini - is that correct? It worked from command line but not when I change service path.

5) (minor) Nice names that I gave to the devices in the desktop version are invisible when I run as service. I think that's also true with the old version. Not critical, but nice to have.

6) (minor) - when running from some programs (Far manager) vhui -t seems to think it does not have a console, and displays the output in a messagebox. Inconvenient. Works from regular "cmd"

See https://www.dropbox.com/s/afhx6774vmv4js1/stop_using.png?dl=0

Thank you.
If I can turn on some higher level of logging for investigation - I will gladly do this.

#4

1,2 OK i will try to give the devices the same address, the address scheme was changed to support more servers.
3,4 sound like bugs
5. That should be easy to change in next version
6. This is by design, if you run it in cmd it will output in the console, if you run it directly in file manager it will output to msgbox as there is no console to output to.
Will work on this...

#5

OK i made the fixes in 2.6.1 The address will be more static. See if it works ok for you.

#7

Hi Michael

Thank you, this worked!

1) Device numbers still change after restart. As far as I understand this is because the server numbers change (I guess it's the order in which they connect or something). But it seems to be ok, COM port numbers remain the same, but you may want to look if you think it's important.

Before reboot:
3rd floor kovalski (pione-2.local.:7575)
*--> HCP 108 3 floor (4294967408) (In-use by:SYSTEM (SYSTEM) at 192.168.3.6)
*--> SunTest (4294967409) (In-use by:SYSTEM (SYSTEM) at 192.168.3.6)
Mikrobiologija (pione-3.local.:7575)
*--> Memmert INE-500 Nr. 1 (8589935728) (In-use by:SYSTEM (SYSTEM) at 192.168.3.6)
*--> Memmert IPP-500 Nr 7 (8589935725) (In-use by:SYSTEM (SYSTEM) at 192.168.3.6)
*--> Memmert IPP-500 Nr 2 (8589935723) (In-use by:SYSTEM (SYSTEM) at 192.168.3.6)
3rd floor binder (pione.local.:7575)
--> Binder 02-32457 (12884902001)

after reboot
Mikrobiologija (pione-3.local.:7575)
*--> Memmert INE-500 Nr. 1 (4294968432) (In-use by:SYSTEM (SYSTEM) at 192.168.3.6)
*--> Memmert IPP-500 Nr 7 (4294968429) (In-use by:SYSTEM (SYSTEM) at 192.168.3.6)
*--> Memmert IPP-500 Nr 2 (4294968427) (In-use by:SYSTEM (SYSTEM) at 192.168.3.6)
3rd floor binder (pione.local.:7575)
*--> Binder 02-32457 (8589934705) (In-use by:SYSTEM (SYSTEM) at 192.168.3.6)
3rd floor kovalski (pione-2.local.:7575)
*--> HCP 108 3 floor (12884902000) (In-use by:SYSTEM (SYSTEM) at 192.168.3.6)
*--> SunTest (12884902001) (In-use by:SYSTEM (SYSTEM) at 192.168.3.6)

2) COM port numbers seem to remain the same. Thank you - this is what's important for me.

I am not sure how it happens - port "locations" change, as the server number changes - e.g. from "Serv_#0003.Port_#0006.Hub_#0113" to "Serv_#0002.Port_#0006.Hub_#0113". But somehow now Windows or driver recognizes them after reboot. Magic.

3, 4, 5) fixed.

For the service parameters - it seems that --log=
works but -l=
is ignored.

Anyway, it seems to work very well now. Thanks again.

#8

Yes the order of the servers is entirely random and also their addresses are related to the order in which they are found so the addresses will change. However the address windows receives is always the same if the device is plugged into the same port of the same server and therefore this will cause the COM port to remain static. "-l" i will check and fix in later version if required.

#10

The STOP USING will always work except if the device cannot be disconnected (very likely due to a bug in the raspbian kernel) so make sure to update your raspbian via rpi-update and apt-get update;apt-get upgrade to get the latest firmware whenever you can.