On certain occasions, for example while working remotely, it might be necessary to access a device that is not locally available.
This brief tutorial demonstrates how to share and access a board which is in a remote lab location, or in the possession of a co-worker.
This tutorial is split into two parts:
Part 1: Tasks that must be executed by the person in possession of the board.
Part 2: Tasks that must be executed by the person wishing to access the shared board.
Step 1: Sharing the Board
Connect the board to your computer via USB cable, just as you’d do for local use.
In this example, a ZCU102 board is being shared.
Open a Vivado instance and in the Tcl console on the main page, run the following command:
exec hw_server -d
If you do not add the exec, the warning in the image below will be shown. This warning can be safely ignored.
If the process was successful, the hw_server URL will be displayed. In this example, the URL is anunesgu31
Share this URL with the person who needs to access the board.
Note: for internal URLs, the person you are sharing with will need to be on the same network, usually through a VPN connection.
Please also share the hw_server version that is being used. The person accessing this instance must use the same version of Vivado or an older version. Failing to do so might cause the connection to be refused.
At this point, the Vivado window can be closed and the hw_server process will continue to run in the background.
These are all of the tasks that must be executed by the user sharing the board.
Note: Please review the last part of this tutorial “Killing the hw_server Process” to make sure that you can properly end the hw_server application when you do not wish to share the device any longer.
Not killing the hw_server process can cause issues with opening other Hardware Manager instances and connecting to other devices.
Step 2: Accessing the Board
Open the Hardware Manager and initiate a Target Connection.
Select “Remote Server” and input the hostname provided by the sharer.
After you click next, the Hardware Manager will look for available devices in the host provided.
This can take several seconds, depending on the internet connection speed of the sharer and accessor.
The Hardware Manager will display the devices found. Make sure it is showing the desired device and finish the connection.
Confirm that the connection has been successful, and that the device is now available to be used as normal.
Please note that because any command and data transfer will happen over the internet, any task such as programming the board, viewing ILA data, etc., might take longer than it would in a local environment.
How to kill the hw_server process
As mentioned earlier, once the remote user is no longer accessing the shared board, it is necessary to properly end the hw_server application.
Not killing the hw_server process can cause issues with opening other Hardware Manager instances and connecting to other devices.
Below is an example of the error that can be seen when starting a new, local hw_server while the previous shared instance is still running.
In Windows:
Open the Command Prompt (CMD) and run the following command:
netstat -aon | find “3121”
This command will find all the processes listening on port 3121.
Find the Process ID (PID) for the hw_server application. In this example, the PID is 33232.
Use this PID it in the following command:
taskkill /F /PID 33232
In Linux:
Open a Terminal application and run the following command:
ps aux | grep hw_server
This command will find all the processes that contain the name hw_server in their description.
An alternative is the command below:
pidof hw_server
In this example, the PID is 86328
Use this PID it in the following command:
kill -9 86328