From Waveshare Wiki
Jump to: navigation, search

GMSL Camera Adapter
Deserializer: MAX9296A
Support Jetson Orin Nano/Orin NX
Support MAX9295, MAX96717, MAX96705





The MAX9296-GMSL-Camera-Board is a GMSL camera adapter that allows up to two cameras to be connected to the Jetson Orin Nano/NX host board. Compatible with both GMSL1 and GMSL2 protocol interfaces through software configuration. Adopts MAX9296A chip, specially designed for applications that require high-bandwidth and low-latency video transmission. Suitable for automatic driving, machine vision, intelligent security and other fields.
GMSL (Gigabit Multimedia Serial Link) is a high-speed serial transmission technology designed for high-bandwidth multimedia data transmission, with the advantages of long-distance, low-delay, high anti-interference and simple wiring. It is mainly used in automotive electronics and industrial applications, and is capable of transmitting high-definition video, audio, and data signals over one cable. By using coaxial or twisted-pair cables, GMSL can achieve long-distance signal transmission.


HOST SUPPORT Jetson Orin NX/Nano development kit
GMSL INPUT 2-ch GMSL2 (compatible with GMSL1) cameras
TRIGGER INPUT Supports triggering via internal GPIO or external input signals
OUTPUT INTERFACE 2 × 22-Pin CSI interfaces
GMSL CAMERA SUPPORT IMX390, IMX490, ISX031, OX03C, AR0820, etc.
POWER SUPPLY 12V ~ 20V DC input

Hardware Specification

Onboard Interface


22 PIN Connector




User Guide

Note: The current driver provided only supports Jetpack5.1.2 (R34.5.1) version image. If you need other camera models that support Jetson orin NX and Jetson-Orin Nano, please contact our support team for help.

Supported Sensor Models

  • IMX390
  • IMX490
  • ISX031
  • OX03C
  • OX08B/AR0820

Hardware Connection


  • Connect the CSI0 interface of MAX9296-GMSL-Camera-Board to the Cam0 interface of the Jetson Orin module with the provided cable.
    • Note that the CSI pin definition for CAM0 and CAM1 on the NVIDIA Jetson® Orin™ Nano Kit are different. Currently, the board only can be connected to the CAM0 interface (please refer to the relevant pin definitions and the Jetson® Orin™ Kit schematics for the CAM0/1 interface).
    • The 22-pin FPC does not feature precise impedance control, so when using high-resolution cameras with high CSI rates, it is recommended to use relatively short FPC cables. (Tests have shown that for 8M cameras, only 5cm cables can be used for 2 channels; while for 1-ch connection, 10cm or 15cm cables can be used).
  • Use a Y-type power cable to connect to the DC power port on the GMSL adapter board and the power port on the Jetson Orin module.
    • If you have multiple power supplies, you can also connect them to the power supply separately.
  • Connect the GMSL camera to the MAX9296-GMSL-Camera-Board.
  • Provide 19V power to the devices through the Y-type power cable.

Software Configuration

  • For the Jetson Orin module, it needs to be flashed with the corresponding Jetson system, for more details, you can refer to the related wiki page.
    • The current system version can be viewed with the command.
     cat /etc/nv_tegra_release
    For example, the image version queried here is R35.4.1.
    Jetson Check Version.png
  • After powering on the board, you can open "Terminal", download the driver and extract the driver package.
  • Enter the driver package directory with "cd" command and view the files.
    • Enter the corresponding directory according to the camera model used, here we take the ISX031 as an example.
cd MAX9296-GMSL-Camera-Board-Driver
cd ONXA_SY.ISX031Fx2_L4TR35.4.1
cd kernel
  • In the kernel file, the "dtb" file includes multiple device tree files that support multiple boards. Here, we only need to find the device tree file for the current board.
    • You can first check the device tree currently used by the board using the following command:
    sudo dmesg | gerp kernel 
    • For example, the device tree file queried here is "tegra234-p3767-0004-p3768-0000-a0".
    Jetson Check dtb.png
  • Copy the "dtb" file and Image file of the same model from the driver to the /boot directory of the board:
sudo cp dtb/tegra234-p3767-0004-p3768-0000-a0.dtb /boot
sudo cp Image /boot
  • After copying the files, modify the device tree file referenced in extlinux.conf.
    • Copy and add an additional boot label, updating the FDT file path to the newly copied directory. Set the default boot label to the newly added one.
    Note: here, it's crucial to carefully check and verify the modifications before saving and rebooting the system. Otherwise, it may potentially cause the system to fail to boot properly.
    sudo vi /boot/extlinux/extlinux.conf
    • In the vi editor, you enter the editing mode by pressing "i". To exit the editing mode and return to command mode, press "Esc". After exiting the editing mode, you can save the file and quit by typing: "wq!".
    Jetson Modifiy Bootorder.png
  • Reboot the system after saving the file.

External Trigger

The deserializer board supports external input trigger signals, which can be controlled by specific pins through the Jetson module GPIO headers. (MFP0 of MAX9296 is connected to pin 17 on the CSI interface).

Simulated External Trigger Through Software

Users can simulate external triggering by setting up a software script.

# Power - PAC.00
chmod 777 /sys/class/gpio/export
chmod 777 /sys/class/gpio/unexport

echo "[sync]"
if [ -e /sys/class/gpio/PAC.00 ]; then
	echo "PAC.00 has exported."
	echo 486 > /sys/class/gpio/export

echo out > /sys/class/gpio/PAC.00/direction

while [ true ]; do
	echo 1 > /sys/class/gpio/PAC.00/value
	sleep 0.012 #0.02
	echo 0 > /sys/class/gpio/PAC.00/value
	sleep 0.084 #02
while [ true ]; do
        echo 1 > /sys/class/gpio/PAC.00/value
        sleep 0.02
        echo 0 > /sys/class/gpio/PAC.00/value
        sleep 0.02

External Hardware Trigger

Users can trigger signals through external input. Currently, the expansion board only supports inputting trigger signals through the MFP0 pin.
Connect the MFP0 pin to any GPIO headers, and then it can be controlled to trigger signals through GPIO.


Quick Test

  • Check whether the camera is normally identified:
sudo dmesg | grep connected
  • If it returns the information related to "/dev/video2 is connected", it indicates the camera is normally identified.
  • For preview test, you can use the following commands:
    • The preview test requires an HDMI or DP screen, please ensure it is normally connected and displays well.
    • Note that you need to modify the video device number to the one detected by the last step.
    • Note that you need to modify the command to test according to the resolution supported by the camera.
gst-launch-1.0 v4l2src device=/dev/video2 ! "video/x-raw, format=(string)UYVY, width=(int)1920, height=(int)1536" ! fpsdisplaysink video-sink=xvimagesink sync=false




Technical Support

If you need technical support or have any feedback/review, please click the Submit Now button to submit a ticket, Our support team will check and reply to you within 1 to 2 working days. Please be patient as we make every effort to help you to resolve the issue.
Working Time: 9 AM - 6 PM GMT+8 (Monday to Friday)