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 V2X Evaluation Kit for development, testing, and prototyping of connected mobility applications.

It combines hardware and software for On-Board Unit (OBU) and Roadside Unit (RSU) scenarios, with support for DSRC (ITS-G5) and C-V2X (LTE-V2X) communication.


1. Overview

The cube:evk is built around the i.MX8MP processor and ships with cube:os, a Linux-based operating system configured for V2X development.

Components

  • Dual-mode V2X Module: Qualcomm V2X 200 chipset (formerly Autotalks SECTON/PLUTON2) supporting DSRC/ITS-G5 and C-V2X/LTE-V2X. 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
  • Operating System: cube:os, based on Variscite's DART-MX8M-PLUS BSP, preconfigured with the V2X software components.

cube:evk

The cube:evk combines V2X hardware with a preconfigured Linux software stack.


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 (for example, /dev/ttyUSB0). After logging in as cube, you should see the 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

Connect a standard Ethernet cable. If a DHCP server is available, an IP address is 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. It is faster than the serial console. To simplify file transfer and local editing, mount the EVK's filesystem using SSHFS:

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

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

Remote Access

Connect the EVK to your network via Ethernet or Wi-Fi. SSH provides remote access; SSHFS allows file sharing for 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, useful 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