1. Home
  2. HX400 Technical Resources

HX400 Technical Resources

Drivers and Manuals

User Manual

BIOS Manual

PuTTY Tool

BIOS Updates

Z01-0006A049HX401 BIOS Update (A049)

Frequently Asked Questions (FAQ)

How do I disable auto power on?

Enter the BIOS by pressing Delete while the system is booting, then navigate to Advanced > PCH-IO Configuration > State After G3 and select S5.

CAN Add-in Card

An optional CAN add-in card is available. The add-in card has an NXP i.MX1050-series microcontroller that can communicate with the host processor over USB. The card provides an interactive shell for configuration on a virtual COM port, and two CAN interfaces accessible through two additional virtual COM ports.

Configuring the Add-in Card

The add-in card is configured interactively through its shell using a serial terminal emulator program. The shell is accessed differently depending on operating system.

To access the shell on Windows:

  1. Open Device Manager by pressing Win+X M. Open the “Ports (COM & LPT)” menu.
  2. Note the “COM#” numbers on each port listed. The shell is typically the lowest-numbered “USB Serial Device” port. The first and second CAN interfaces typically have higher port numbers.
  3. Download and install PuTTY from the link above.
  4. Open PuTTY. When prompted, enter the COM port number in the “Serial line” text box, then click “Open”.
  5. If the port number was correct, a “uart:~$” prompt should appear. If not, try a different port.

To access the shell on Linux:

  1. Install picocom, e.g. “sudo apt install picocom” on Ubuntu.
  2. Open the shell’s virtual COM port with picocom by running “picocom /dev/serial/by-id/usb-OnLogic_USB-CAN-*-if00”.
  3. Some Linux distributions may not configure udev to produce by-id links. If those links are missing, try /dev/ttyACM0 and similar devices.

Once the shell is open, type “help” for usage information.

Using slcand in Linux

On Linux, the slcand utility can configure the add-in card’s interfaces as a regular SocketCAN network interface. Make sure the interface is configured for slcan usage by entering “set can-mode VCAN1 slcan” (and similar for “VCAN2”) in the shell.

On most Linux distributions, slcand is part of a package called can-utils; on Ubuntu, it can be installed with “sudo apt install can-utils”. Once installed, start the utility by running e.g. “slcand -oc -s6 /dev/serial/by-id/usb-OnLogic_USB-CAN-*-if02 slcan0” to create a SocketCAN interface named slcan0 running at 500k (“-s6”) from the first CAN interface’s virtual COM port.

The slcan Message Format

The slcan message format is widely supported. High-quality libraries are available for most programming languages that handle the details of the protocol. It can also be implemented manually if needed.

The slcan protocol is stateful; each interface needs to be configured and opened before it can be used, and must be closed before it can be reconfigured. Make sure the interface is configured for slcan usage by entering “set can-mode VCAN1 slcan” (and similar for “VCAN2”) in the shell.

Each CAN interface has a corresponding virtual COM port. Commands are sent on that port to configure the interface and send frames. Each command consists of an ASCII letter, optionally followed by other ASCII text, ending with a newline (“\n”) character.

The interface baudrate is set with the “S” command. Nine baudrates are supported:

Baudrate (kbit/s)Command

Once the baudrate is set, the interface should be opened by sending the open command (“O\n”). Once open, frames can be sent to the microcontoller in the format documented in a comment in the Linux kernel source code. As frames arrive, the microcontroller will send messages back on the virtual COM port. To stop it, close the interface with the close (“C\n”) command.

Alternate CAN Format

The legacy “std” message format is supported for backwards compatibility with other devices, but is not recommended for new development. The standard slcan format should be used instead due to the availability of high-quality tools and libraries for working with that message format in most programming languages.

Updated on March 6, 2023

Was this article helpful?

Keep In Touch.
Subscribe today and we’ll send the latest product and content updates right to your inbox.