"Can I write drivers for remote hardware?"

There are occasionally times when you might want us to access your devices on your premises. It may be that you have a device that we want to do a driver for but you cannot send it to us, or you might be having some unusual problem with a driver that needs diagnosis. In these situations, it is very helpful if we can directly access that device and see what is going on or to work on a driver.

Ethernet Devices

If the device is Ethernet based, then it's usually not a problem, since such devices are easily accessible from anywhere on the network as long as you grant the appropriate access through your router. In some cases, if the device will only accept connections from the local network, you may have to set up a VPN connection for us, so that we can connect to the device and have our packets seem to come from the local network. Even if VPN is not required, you may want to use it for security purposes, since it requires a log on in order to connect, and you can set up a very low privilege Windows account for us to log into. All we need is to access the device, we don't need access to any Windows level resources.

Serial Devices

A long number of devices are controlled via serial port.. In this case, we have a remote port server that you can run, which allows us to access your serial ports as through they were local to us. This does not require any special hardware on your side or ours. It is a pure software-based solution. It does have some limitations, in that if the device requires fancy control line access on the serial port, then it probably will not work. But almost no serially controlled devices use such schemes, so it's not much of a limitation in reality.

As with the Ethernet based devices, this will require you to allow access to the remote port server through your router, since it passes serial port data and control events over the network. In this case, the remote port server is the 'device' in terms of network access. The remote port server gives us access to serial ports and nothing else.

Port Forwarding

In most cases, if you have an internal network, then you will use some sort of router for your network access to your ISP. This router prevents any incoming connections, and is a key part of network security these days, since it doesn't allow anyone to get to your computers from the outside unless you explicitly allow it by setting up the router to 'forward a port'. TCP/IP, the network protocol used on the internet and on your local Windows network, works in terms of addresses and ports. Each computer has an address that is unique within your network. Each program that provides services over the network listens on a port, which has a number form 1 to 65535. So any program on the network can be identified by it's address and port number, something like MyComputer:1492, or mycomputer.mydomain.com:4933, or 192.168.1.12:8411 and so forth.

Most routers allow you to expose particular ports on particular computers to the outside world. This is called a 'port forward', since the router forwards any packets coming to that port to the machine that you have set up to have them forwarded to. Since the router makes your whole internal network look to the outside world like a single computer, you can only forward a given port number to a single internal computer.

So, in the router configuration you should find the port forwarding setup. You will need to know the IP address of the target machine you want to forward to and the port to forward. You can get the address of the target machine either by looking at the settings in the network card (in the Control Panel), or you can open a command line prompt and run the command IPConfig, which will show you the machine address. If you know the internal computer name, you can also 'ping' it from another machine and get its address. Open a command line prompt and type 'ping -a target', where target is the network name of the target computer. Ping will find the target machine, figure out it's name and display it, and then send some test data to it and see if the machine sends it back.

Remote Port Server

To use the remote port server, you must run it on the machine where the device is attached, since it only provides access to serial ports on the machine it is running on. There are only two settings that you provide. One is the port you want it to listen on, which is the port you will forward from the router, and the other is an optional security setting that lets you indicate the only address you will accept a connection from. Normally you'd use this and enter the address of the computer we are connecting to you from. For someone to break in, they would have to know you are running the remote port server, know the port you chose to run it on, and know the address of the computer on our side and be able to spoof that address. So it is highly unlikely that anyone would have all that information. Once you've entered those two values, you can check the enable check box to enable the server and it will start listening for a connection from our side.

You will have to give us your external IP address, which is the address given to you by your ISP. This will either be a dynamic address that your router gets each time it connects or a static address that they assigned to you and which you set in your router. The address we give you for our side is the same sort of public address. These can change over time if either of us disconnects and reconnects to our ISP (if we have dynamic addresses), but they should remain the same for long enough for us to do what we need to do. Once we connect, the serial ports on the machine where the remote port server is running will show up in our list of available serial ports to use in the driver development environment.

To run the remote port server, open the CQC Command Prompt from the Charmed Quark section of the computer's Start Menu. Then run the program CQCRPortSrv, and the remote port server window will come up. Select a port, enter our address that you got from us, set up the port forward to that machine and the port you select, then check the enable check box to enable it.

Close