Knowledge Base

Everything you need to know and understand to develop V2X applications.

denm-generator.py
msg = self.generate_denm()
future = self.send_request(msg)
future.add_done_callback(self.request_completed)

Getting Started with cube:evk

The cube:evk is a complete V2X Evaluation Kit designed to accelerate development, testing, and prototyping of connected mobility applications.

It combines hardware and software into a ready-to-use platform for both On-Board Unit (OBU) and Roadside Unit (RSU) scenarios, enabling fast experimentation with DSRC (ITS-G5) and C-V2X (LTE-V2X) communication.


1. Overview

The cube:evk is powered by an NXP i.MX 8M Plus processor and preloaded with cube:os, a Linux-based operating system optimized for V2X development.

Key Components

  • Dual-mode V2X Module:
    Autotalks SECTON/PLUTON2 chipset supporting both DSRC/ITS-G5 and C-V2X/LTE-V2X. Equipped with a robust dual-channel RF frontend for diversity reception.

  • Interfaces:

    • GNSS (u-blox M8U or M8L) with integrated IMU
    • CAN interface (SocketCAN compatible)
    • Ethernet and USB ports
    • HDMI display output
    • LTE module (Quectel EC21-EU)
    • Wi-Fi and Bluetooth connectivity
  • Operating System:
    cube:os, based on Variscite’s DART-MX8M-PLUS BSP, comes preconfigured with all V2X software components.

cube:evk

The cube:evk combines powerful hardware and a preconfigured Linux-based software stack to provide a fast path from prototype to production.


2. First Power-On and Login

When powered, the cube:evk boots automatically into cube:os. Two users are available by default:

UsernamePasswordPermissions
cubecubeStandard development user
rootrootAdministrative user

You can log in via the debug USB port, which provides a serial console connection. Use a terminal tool such as picocom (or minicom, screen, or putty) on your host computer.

Example (on Linux host)

host:~$ picocom -b 115200 -p n -d 8 /dev/ttyUSBX

Replace /dev/ttyUSBX with the correct device path on your system (e.g., /dev/ttyUSB0). After logging in as cube, you’ll see the command prompt (cube:~$). You can now configure networking and access the device remotely.

Initial Access

The cube:evk provides serial console access through the debug USB port for initial setup. Use cube/cube or root/root credentials, and change them after first login for security.


3. Network Configuration

You can connect the cube:evk to your local network via Ethernet or Wi-Fi.

Ethernet

Simply connect a standard Ethernet cable.
If a DHCP server is available, an IP address will be assigned automatically.

To display the assigned IP address:

cube:~$ ip a

Wi-Fi

To connect to a wireless network, use the nmcli tool:

cube:~$ nmcli dev wifi connect '<ssid>' password '<password>'

If your network is not listed:

cube:~$ nmcli device wifi rescan

You can then verify the connection:

cube:~$ ip a

Remote Access via SSH

Once the cube:evk has network access, you can connect remotely from your development PC using SSH (Secure Shell):

host:~$ ssh cube@<ip-address>

SSH provides a secure, encrypted terminal connection over the network — much faster and more convenient than the serial console.
To simplify file transfer and local editing, you can mount the EVK’s filesystem using SSHFS:

host:~$ sshfs cube@<ip-address>:/home/cube/ /mnt/evk

This lets you work on files directly from your PC as if they were local.

SSH is your Friend

Use Ethernet or Wi-Fi to connect the EVK to your network. Once connected, SSH provides secure remote access, and SSHFS allows seamless file sharing and development.


4. LED Indicators

The cube:evk is equipped with four status LEDs that provide quick visual feedback on system power, GNSS synchronization, and user-defined states.

LEDFunctionDescription
1 (Top)System statusTurns solid green once the EVK is powered and has successfully completed the boot process. This indicates that the system is ready for operation.
2GNSS PPS signalBlinks in sync with the Pulse-Per-Second (PPS) output of the GNSS receiver, confirming that a valid GNSS fix and timing synchronization are active.
3–4User configurableReserved for custom user applications or debugging purposes. These LEDs can be controlled manually or programmatically via GPIO.

Controlling User LEDs

LEDs 3 and 4 are connected to GPIO pins 14 and 15 of gpiochip1.
You can toggle them manually using the gpioset command from the gpiod utilities.

Example: Control LED 3

Turn on LED 3:

cube:~$ sudo gpioset gpiochip1 14=1

Turn off LED 3:

cube:~$ sudo gpioset gpiochip1 14=0

Example: Control LED 4

Turn on LED 4:

cube:~$ sudo gpioset gpiochip1 15=1

Turn off LED 4:

cube:~$ sudo gpioset gpiochip1 15=0

These LEDs can be integrated into scripts or applications for visual feedback — for example, to signal software status, test results, or V2X message activity.

LEDs

  • LED 1 confirms system power and boot completion.
  • LED 2 blinks with the GNSS PPS signal to indicate valid satellite synchronization.
  • LEDs 3 and 4 are user-controllable via GPIO commands — ideal for custom indicators or development feedback.

5. LTE Connectivity (Quectel EC21-EU)

The cube:evk includes an LTE modem for remote connectivity and data transfer. By default, the EC21 module is disabled and must be activated manually.

  1. Insert a suitable microSIM card into the slot.
  2. Connect to the LTE module’s serial interface:
cube:~$ picocom -b 115200 -p n -d 8 /dev/ttyUSB3
  1. Configure the APN (example for Telekom):
ec21:~$ at+cgdcont=1,"IP","internet.telekom"
  1. Enable Ethernet-over-USB mode and restart:
ec21:~$ at+qcfg="usbnet",1
ec21:~$ at+cfun=1,1

After a few seconds, a new network interface will appear. You can verify it using:

cube:~$ ip a

It can now be used for internet access. To deactivate the EC21 adapter again:

ec21:~$ at+qcfg="usbnet",0

Remote Access over LTE

The LTE module can be activated via AT commands and provides mobile internet access through a virtual network interface. This allows remote connectivity when Wi-Fi or Ethernet are unavailable.


6. CAN Interface

The cube:evk includes a CAN interface based on Linux’s SocketCAN framework. It is available as can0 and configured automatically during boot.

To manually set the bitrate:

cube:~$ sudo ip link set can0 type can bitrate 500000

You can send and receive CAN frames using the can-utils package:

cube:~$ cansend can0 123#DEADBEEF
cube:~$ candump can0

Developers can also use the SocketCAN API directly to build custom CAN-enabled applications.

SocketCAN

SocketCAN provides a native Linux interface for CAN communication. Use candump and cansend for testing, or integrate CAN access directly into your applications.


7. Next Steps

Now that your cube:evk is online and accessible, you can:

Previous
Hardware