← Table of Contents
CHAPTER 4. SOFTWARE CONFIGURATION
This chapter provides details on the software configurations required to set up different components in CAVe-in-a-box for operation. Due to the technical nature of this chapter, the readers are assumed to be familiar with networking and terminal shell in a Linux environment.
V2X HUB INSTALLATION AND INITIALIZATION
V2X Hub
V2X Hub is available as a Docker image that may be run in a containerized environment (FHWA, 2020). The primary requirement for running V2X Hub is a local computer that can support Docker. Having root access to the device is preferred. For the development of this documentation, a Nano-pi M4 board installed with a variant of Ubuntu 18.04 (Canonical, 2020) was used.
The container is configured to use the host network for communications, so being able to control the IP address for the interface connected to the CAVe-in-a-box network on the computer running V2X Hub is required for a successful implementation. It is recommended to configure the computer to use 192.168.0.3 as the static IP address to be able to mimic the configurations stated within this document.
The initialization scripts for AMD or ARM 64-bit architecture processors are available through the V2X Hub GitHub repository. Once the V2X Hub source code has been downloaded, navigate to V2X-Hub/configuration/amd64 or V2X-Hub/configuration/arm64 depending on the system and run the following commands:
$ chmod +x initialization.sh
$ sudo ./initialization.sh
This script will execute the following:
- Ask you to set up a custom username and password to access the V2X Hub GUI. The password must be within the required constraints.
- Remove any older unsupported versions of Docker.
- Run a system update and upgrade.
- Install the latest versions of Docker along with all the prerequisites.
- Install python3-pip and subsequently install docker-compose through pip3.
- Execute the docker-compose.yml file to download and run V2X Hub through the following three images available from Docker Hub:
- Database (mysql)-mysql:5.7.
- Web server (apache-php)-php:7.2.2-apache.
- V2X Hub-usdotfhwaops/v2xhubamd:latest.
Upon successful execution of the initialization script, V2X Hub will be accessible using the local static IP address configured for the V2X Hub computer. Using an internet browser on the computer running V2X Hub or any other computer on the same network, navigate to https://192.168.0.3:19760. A webpage asking you to “add an exception to the security certificate requirements” will open up in the browser. This is to add the self-signed certificate generated by the V2X Hub container to your browser. You will be prompted to accept a security warning. Click to continue. This is a necessary security feature to ensure controlled and secure access to the system in a real-world deployment.
Following successful addition of the certificate, open a new browser tab and navigate to https://192.168.0.3. This will open up the landing screen for V2X Hub. There will be an IP address field at the top left. Re-enter 192.168.0.3 in this space and click the Enter key on the keyboard. This will bring up the login screen. Use the username and password created at the beginning of the initialization script to gain access to the V2X Hub configuration page.
This document will address basic configuration for the V2X Hub applications. For further reading, please visit the V2X Hub GitHub repository.
Plugin Configuration
For successful CAVe-in-a-box implementation, please configure the plugins with the following values.
Immediate Forward Plugin
The RSU will be configured to the IP address shown in Table 2. The port number provided in this document is for a Cohda RSU; please refer to the manufacturer’ any other RSU. The Provider Service Identifier (PSID) configuration is necessary to enable complete utilization of CAVe-in-a-box features. User configuration for the plugin occurs through an inbuilt manifest file in JSON. Table 2 shows a sample manifest file for the Immediate Forward plugin.
Table 2. Sample manifest file for the Immediate Forward plugin.
Key |
Default Value |
Description |
Messages_Destination_1 |
{ “Messages”: [ { “TmxType”: “SPAT-P”, “SendType”: “SPAT”, “PSID”: “0x8002” }, { “TmxType”: “MAP-P”, “SendType”: “MAP”, “PSID”: “0x8002” }, { “TmxType”: “PSM”, “SendType”: “PSM”, “PSID”: “0x8002” }, { “TmxType”: “TIM”, “SendType”: “TIM”, “PSID”: “0x8003” } ] } |
JSON data defining the message types and PSIDs for messages forwarded to the DSRC radio at destination 1. |
Messages_Destination_2 |
{ “Messages”: [ ] } |
JSON data defining the message types and PSIDs for messages forwarded to the DSRC radio at destination 2. |
Messages_Destination_3 |
{ “Messages”: [ ] } |
JSON data defining the message types and PSIDs for messages forwarded to the DSRC radio at destination 3. |
Messages_Destination_4 |
{ “Messages”: [ ] } |
JSON data defining the message types and PSIDs for messages forwarded to the DSRC radio at destination 4. |
Destination_1 |
192.168.0.4:1516 |
The destination UDP server(s) and port number(s) on the DSRC radio for all messages specified by Messages_Destination_1. |
Destination_2 |
0 |
The destination UDP server(s) and port number(s) on the DSRC radio for all messages specified by Messages_Destination_2. |
Destination_3 |
0 |
The destination UDP server(s) and port number(s) on the DSRC radio for all messages specified by Messages_Destination_3. |
Destination_4 |
0 |
The destination UDP server(s) and port number(s) on the DSRC radio for all messages specified by Messages_Destination_4. |
Signature |
FALSE |
True or False value indicating whether the RSU should sign the messages being transmitted. |
MAP Plugin
After the MAP file (ex. map_file.txt) is copied to the MAP folder created in the V2X-Hub/configuration/amd64 or V2X-Hub/configuration/arm64 folder on the V2X Hub computer, replace map_file.txt in the following configuration with the name of the MAP file. Table 3 shows a sample manifest file for the MAP plugin.
Table 3. Sample manifest file for the MAP plugin.
Key |
Default Value |
Description |
Frequency |
1000 |
The frequency to send the MAP message in milliseconds. |
MAP_Files |
{“MapFiles”:[{“Action”:0, “FilePath”:“/var/www/plugins/MAP/map_file.txt”}]} |
JSON data defining a list of map files. One map file for each action set specified by the TSC. |
SPaT Plugin
The Signal Group to Phase mapping is configured by matching the correct Signal Groups in the MAP file to the right phases configured in the TSC. Change the intersection ID and intersection name to match with the MAP file as per constraints set by the transportation authority. The document assumes that the TSC SNMP port number is 501. Table 4 shows a sample manifest file for the SPaT plugin.
Table 4. Sample manifest file for the SPaT plugin.
Key |
Default Value |
Description |
Intersection_Id |
1 |
The intersection ID for SPAT generated by this plugin. |
Intersection_Name |
Intersection |
The intersection name for SPAT generated by this plugin. |
SignalGroupMapping |
{“SignalGroups”:[
{“SignalGroupId”:1, “Phase”:1, “Type”:“vehicle”},
{“SignalGroupId”:2, “Phase”:2, “Type”:“vehicle”},
{“SignalGroupId”:3, “Phase”:3, “Type”:“vehicle”},
{“SignalGroupId”:4, “Phase”:4, “Type”:“vehicle”},
{“SignalGroupId”:5, “Phase”:5, “Type”:“vehicle”},
{“SignalGroupId”:6, “Phase”:6, “Type”:“vehicle”},
{“SignalGroupId”:7, “Phase”:7, “Type”:“vehicle”},
{“SignalGroupId”:8, “Phase”:8, “Type”:“vehicle”},
{“SignalGroupId”:22, “Phase”:2, “Type”:“pedestrian”}]} |
JSON data defining a list of active SignalGroups and phases. |
Local_IP |
192.168.0.3 |
The IPv4 address of the local computer for receiving TSC Broadcast Messages. |
Local_UDP_Port |
6053 |
The local UDP port for reception of TSC Broadcast Messages |
TSC_IP |
192.168.0.5 |
The IPv4 address of the destination TSC. |
TSC_Remote_SNMP_Port |
501 |
The destination port on the TSC for SNMP NTCIP 1202 v2 communication. |
Message Receiver Plugin
The Message Receiver plugin only requires pointing to the IP address of the V2X Hub computer. The port number needs to be configured to 26789 to ensure successful functionality. Table 5 shows a sample manifest file for the Message Receiver plugin.
Table 5. Sample manifest file for the Message Receiver plugin.
Key |
Default Value |
Description |
IP |
192.168.0.3 |
IP address for the incoming message network connection. |
Port |
26789 |
Port for the incoming message network connection. |
RouteDSRC |
FALSE |
Set the flag to route a received J2735 message over DSRC. |
EnableSimulatedBSM |
FALSE |
Accept and route incoming BSMs from a V2XHub simulator. |
EnableSimulatedSRM |
FALSE |
Accept and route incoming SRMs from a V2X Hub simulator. |
EnableSimulatedLocation |
FALSE |
Accept and route incoming GPS location messages from a V2X Hub simulator. |
Pedestrian Plugin
The port number for the WebServicePort may be changed if the specific port mentioned in the following configuration is being used by a different application. Table 6 shows a sample manifest file for the Pedestrian plugin.
Table 6. Sample manifest file for the Pedestrian plugin.
Key |
Default Value |
Description |
Frequency |
1000 |
The frequency to send the PSM in milliseconds. |
Instance |
0 |
The instance of the Pedestrian plugin. |
WebServiceIP |
192.168.0.3 |
The IP address associated with interface where the webservice is listening for requests. This should be set up such that anyone can send valid requests to the webservice; hence, it should be the outside-facing IP address on the V2X Hub machine. |
WebServicePort |
9000 |
The port to which webservice is bound. The incoming requests must be associated with this port; otherwise, they won’t be serviced. |
Preemption Plugin
After the geofence file (ex. geofence.json) is copied to the MAP folder created in the V2X-Hub/configuration/amd64 or V2X-Hub/configuration/arm64 folder on the V2X Hub computer, replace geofence.json in the following configuration with the name of the geofence file. The preemption call is requested in an Econolite Cobalt ATC TSC using SNMP to configure the value for the corresponding Object Identifier in the MIB database defined by the NTCIP 1202 v3 protocol. Please refer to the manufacturer’s instructions to configure the correct object identifier (OID) for other TSCs following the NTCIP 1202v3 protocol. Table 7 shows a sample manifest file for the Preemption plugin.
Table 7. Sample manifest file for the Preemption plugin.
Key |
Default Value |
Description |
BasePreemptionOid |
.1.3.6.1.4.1.1206.4.2.1.6.3.1.2. |
The BasePreemptionOid of Preemption Plugin |
Instance |
0 |
The instance of the Preemption Plugin |
ipwithport |
192.168.0.5:6053 |
The IP address with port number where the TSC is listening on for any request coming from Preemption Plugin |
map_path |
./geofence.json |
Location of the map file that contains geo location for geo fence |
snmp_community |
public |
Snmp_community for Preemption Plugin |
TIM Plugin
The broadcast time for the TIM plugin may be configured manually or through the webservice. For manual configuration, after the TIM file (e.g., tim_file.xml) has been copied to the MAP folder created in the V2X-Hub/configuration/amd64 or V2X-Hub/configuration/arm64 folder on the V2X Hub computer, replace tim_file.xml in the following configuration with the name of the TIM file.
The same information may also be sent to V2X Hub with the information with the broadcast date. This XML input will override any manually inserted information. The port number for the WebServicePort change if the specific port mentioned in the following configuration is being used by a different application. Table 8 shows a sample manifest file for the TIM plugin.
Table 8. Sample manifest file for the TIM plugin.
Key |
Default Value |
Description |
Frequency |
1000 |
The frequency to send the TIM in milliseconds. |
MapFile |
“tim_file.xml” |
Location of a pre-existing TIM file (xml). |
Start_Broadcast_Date |
1/1/2019 |
The Start Broadcast Date for the TIM in the MM-DD-YYYY format. |
Stop_Broadcast_Date |
12/31/2020 |
The Stop Broadcast Date for the TIM in the MM-DD-YYYY format. |
Start_Broadcast_Time |
6:00:00 |
The Start Broadcast Time for the TIM in the HH:MM:SS format. |
Stop_Broadcast_Time |
21:00:00 |
The Start Broadcast Time for the TIM in the HH:MM:SS format. |
WebServiceIP |
192.168.0.3 |
IP address at which the webservice exists. |
WebServicePort |
9999 |
Port at which the webservice exists. |
RSU CONFIGURATION
This section details the configuration for a Cohda RSU. Please refer to manufacturer instructions to perform similar configurations for other RSUs.
IP Address Setup
The default IP address for the Cohda RSU may be determined by converting the last four digits of the device serial number. The first two octets for the IP address by default are 169.254. The third octet may be obtained by converting the first two of the last four digits of the serial number from hexadecimal to decimal. The fourth octet may be obtained by converting the last two digits of the serial number from hexadecimal to decimal.
For example, suppose that the last four digits of the serial number for a Cohda RSU are 3728. The decimal value for “37” is “55” and the decimal value for “28” is “40.” The IP address to access this particular Cohda device would then be 169.254.55.40.
The RSU may be accessed using a SSH client like putty, or a terminal application that allows SSH connections. On the SSH client, use the IP address identified for the RSU along with the port number 22, which is the standard SSH port. Please refer to the user manual for initial login credentials. If using a terminal application, the syntax will be:
$ ssh username@169.254.55.40
Password: “password”
RSU Configuration for CAVe-in-a-box
Once the password has been entered and access has been granted, the next step is be to create a custom username and password. Certain steps need to be executed to ensure successful configuration of the RSU within CAVe-in-a-box. Please refer to manufacturer instructions for any specific actions that need to be performed during the configuration.
Configuring the Static IP Address
Please refer to the manufacturer’s instructions to change the IP address of the RSU to the following values:
$ fw_setenv static_ip_addr “192.168.0.4”
$ fw_setenv static_ip_mask “255.255.255.0”
$ fw_setenv static_ip_bcast “192.168.0.255”
$ fw_setenv static_ip_gw “192.168.0.1”
$ fw_setenv static_ip_ns “8.8.8.8”
Creating an SNMP User (Generally After Halting RSU Functioning)
Change “Admin,” which is the username, and “password” in the following command to the desired values:
$ net-snmp-config --create-snmpv3-user -A password -X password -a SHA -x AES Admin
BSM Forwarding Rules
Replace /this/location/should/be/mib-directory with the location of the MIB directory on the RSU. Also, change “Admin,” which is the username, and “password” in the following commands to the values created in the previous command:
$ snmpset -v3 -lauthPriv -uAdmin -Apassword -Xpassword -aSHA -xAES -mRSU-MIB -M/this/location/should/be/mib-directory -O T 127.0.0.1 iso.0.15628.4.1.99.0 i 2
$ snmpset -v3 -lauthPriv -uAdmin -Apassword -Xpassword -aSHA -xAES -mRSU-MIB -M/this/location/should/be/mib-directory -O T 127.0.0.1 \
iso.0.15628.4.1.7.1.11.1 i 4 \
iso.0.15628.4.1.7.1.2.1 x 0x20 \
iso.0.15628.4.1.7.1.3.1 x 0x000000000000000000000000c0a80003 \
iso.0.15628.4.1.7.1.4.1 i 26789 \
iso.0.15628.4.1.7.1.5.1 i 2 \
iso.0.15628.4.1.7.1.10.1 i 1
$ snmpset -v3 -lauthPriv -uAdmin -Apassword -Xpassword -aSHA -xAES -mRSU-MIB -M/this/location/should/be/mib-directory -O T 127.0.0.1 \
iso.0.15628.4.1.7.1.11.2 i 4 \
iso.0.15628.4.1.7.1.2.2 x 0xBFEE \
iso.0.15628.4.1.7.1.3.2 x 0x000000000000000000000000c0a80003 \
iso.0.15628.4.1.7.1.4.2 i 26789 \
iso.0.15628.4.1.7.1.5.2 i 2 \
iso.0.15628.4.1.7.1.10.2 i 1 \
iso.0.15628.4.1.99.0 i 4
TRAFFIC SIGNAL CONFIGURATION
Most TSCs provide manual configuration using keys available on the device. Please refer to the TSC manufacturer’s instructions for more details:
IP Address Configuration
Configure the TSC to the following IP address:
IP Address: 192.168.0.5
Subnet Mask: 255.255.255.0
Default Gateway: 192.168.0.1
DNS Server: 8.8.8.8
SPaT Forwarding IP Address
This IP address may sometimes be termed as “Ping Server” or “SPaT Server.”
IP Address: 192.168.0.3
Enabling SPaT Forward
Certain TSCs may require an extra step to enable forwarding of SPaT objects to the application. In this case, the user will enable the forwarding of the SPaT objects to the computer running V2X Hub. Any external SNMP application may be used to pass the following command to the TSC to start forwarding SPaT objects. Please refer to the manufacturer’s instructions for the correct OID.
$ snmpset -v3 -c public 192.168.0.5:501 1.3.6.1.4.1.1206.3.5.2.9.44.1.0 i 2
WI-FI ROUTER CONFIGURATION
A Wi-Fi router may be used for access and configuration to CAVe–in–a–box. The router must be configured with the IP address of 192.168.0.1 and client list using the same subnet. It is preferable to enable DHCP for the wireless interface and static IP configuration for the Ethernet interface. A 4G LTE modem may be used to provide internet access to CAVe-in-a-box for remote configuration.
Previous | Next