IBASE IBR215 Series Ruggedized Embedded Computer User Manual

June 10, 2024
iBASE

IBASE IBR215 Series Ruggedized Embedded Computer User Manual

IBR215 Series
Ruggedized Embedded Computer
with NXP ARM@ Cortex@
A53 i.MX8M Plus Quad SOC

Copyright
© 2018 IBASE Technology, Inc. All rights reserved.
No part of this publication may be reproduced, copied, stored in a retrieval system, translated into any language or transmitted in any form or by any means, electronic, mechanical, photocopying, or otherwise, without the prior written consent of IBASE Technology, Inc. (hereinafter referred to as “IBASE”).

Disclaimer
IBASE reserves the right to make changes and improvements to the products described in this document without prior notice. Every effort has been made to ensure the information in the document is correct; however, IBASE does not guarantee this document is error-free. IBASE assumes no liability for incidental or consequential damages arising from misuse or inability to use the product or the information contained herein, and for any infringements of rights of third parties, which may result from its use.

Trademarks
All the trademarks, registrations and brands mentioned herein are used for identification purposes only and may be trademarks and/or registered trademarks of their respective owners.

Compliance

The product described in this manual complies with all applicable European Union (CE) directives if it has a CE marking. For systems to remain CE compliant, only CEcompliant parts may be used. Maintaining CE compliance also requires proper cable and cabling techniques.

This product has been tested and found to comply with the limits for a Class B device, pursuant to Part 15 of the FCC Rules. These limits are designed to provide reasonable protection against harmful interference in a residential installation. This equipment generates, uses and can radiate radio frequency energy and, if not installed and used in accordance with manufacturer’s instructions, may cause harmful interference to radio communications.

WEEE

This product must not be disposed of as normal household waste, in accordance with the EU directive of for waste electrical and electronic equipment (WEEE – 2012/19/EU). Instead, it should be disposed of by returning it to a municipal recycling collection point. Check local regulations for disposal of electronic products.

Green IBASE

  This product complies with the current RoHS directives restricting the use of the following substances in concentrations not to exceed 0.1% by weight (1000 ppm) except for cadmium, limited to 0.01% by weight (100 ppm).

  • Lead (Pb)
  • Mercury (Hg)
  • Cadmium (Cd)
  • Hexavalent chromium (Cr6+)
  • Polybrominated biphenyls (PBB)
  • Polybrominated diphenyl ether (PBDE)

Important Safety Information

Carefully read the following safety information before using this device.

Setting up your system:

  • Put the device horizontally on a stable and solid surface.
  • Do not use this product near water or any heated source.
  • Leave plenty of space around the device and do not block the ventilation openings. Never drop or insert any objects of any kind into the openings.
  • Use this product in environments with ambient temperatures between 0˚C and 60˚C.

Care during use:

  • Do not place heavy objects on the top of the device.
  • Make sure to connect the correct voltage to the device. Failure to supply the correct voltage could damage the unit.
  • Do not walk on the power cord or allow anything to rest on it.
  • If you use an extension cord, make sure the total ampere rating of all devices plugged into the extension cord does not cord’s ampere rating.
  • Do not spill water or any other liquids on your device.
  • Always unplug the power cord from the wall outlet before cleaning the device.
  • Only use neutral cleaning agents to clean the device.
  • Vacuum dust and particles from the vents by using a computer vacuum cleaner.

Product Disassembly
Do not try to repair, disassemble, or make modifications to the device. Doing so will void the warranty and may result in damage to the product or personal injury.

CAUTION
Replace only with the same or equivalent type recommended by the manufacturer.
Dispose of used batteries by observing local regulations.

Warranty Policy

  • IBASE standard products:
    24-month (2-year) warranty from the date of shipment. If the date of shipment cannot be ascertained, the product serial numbers can be used to determine the approximate shipping date.

  • 3rd-party parts:
    12-month (1-year) warranty from delivery for 3rd-party parts that are not manufactured by IBASE, such as CPU, CPU cooler, memory, storage devices, power adaptor, display panel and touch screen.

* PRODUCTS, HOWEVER, THAT FAIL DUE TO MISUSE, ACCIDENT, IMPROPER INSTALLATION OR UNAUTHORIZED REPAIR SHALL BE TREATED AS OUT OF WARRANTY AND CUSTOMERS SHALL BE BILLED FOR REPAIR AND SHIPPING CHARGES.

Technical Support & Services

  1. Visit the IBASE website at www.ibase.com.tw to find the latest information about the product.
  2. If you encounter any technical problems and require assistance from your distributor or sales representative, please prepare and send the following information:

• Product model name
• Product serial number
• Detailed description of the problem
• Error messages in text or screenshots if any
• The arrangement of the peripherals
• Software used (such as OS and application software)
3. If repair service is required, please download the RMA form at http://www.ibase.com.tw/english/Supports/RMAService/. Fill out the form and contact your distributor or sales representative.

Chapter 1: General Information

The information provided in this chapter includes:

  • Features
  • Packing List
  • Specifications
  • Overview
  • Dimensions

1.1 Introduction
IBR215 is an ARM®-based embedded system with NXP Cortex® i.MX8M Plus A53 processor. The device offers 2D, 3D graphics and multimedia accelerations while it also features numerous peripherals that are well suited for industrial applications, including RS-232/422/485, GPIO, USB, USB OTG, LAN, HDMI display, M.2 E2230 for wireless connectivity and mini-PCIe for expansion.

FIG 2 Introduction.jpg

1.2 Features

  • NXP ARM® Cortex® A53 i.MX8M Plus Quad 1.6GHz Industrial Grade processor
  • 3 GB LPDDR4, 16 GB eMMC and SD socket
  • External connectivity including USB, HDMI, Ethernet
  • Supports M.2 B-Key (3052) for 5G modules
  • Rich I/O expansion signals for IO board design to support WiFi/BT, 4G/LTE, LCD, Camera, NFC, QR-code, etc.
  • Ruggedized and fanless design

1.3 Packing List
Your product package should include the items listed below. If any of the item below is missing, contact the distributor or the dealer from whom you have purchased the product. User manual are downloadable from our website.

• ISR215-Q316I

1.4 Specifications

FIG 3 Specifications.JPG

FIG 4 Specifications.JPG

FIG 5 Specifications.JPG

All specifications are subject to change without prior notice.

1.5 Product Overview
TOP VIEW

FIG 6 TOP VIEW.jpg

I/O VIEW

FIG 7 I O VIEW.jpg

FIG 8 I O VIEW.jpg

1.6 Dimensions

Unit:mm

FIG 9 I O VIEW.jpg

FIG 10 I O VIEW.jpg

Chapter 2 Hardware Configuration

This section contains general information about:

  • Installations
  • Jumper and connectors

2.1.1 Mini-PCIe & M.2 Cards Installation
To install the mini-PCIe & NGFF M.2 card, remove the device cover first as mentioned above, locate the slot inside the device, and perform the following steps.

  1. Align the keys of the mini-PCIe card with that of the mini-PCIe interface, and insert the card slantwise. (Insert the M.2 card in the same way.)

  2. Push the mini-PCIe card downwards as shown in the picture below, and fix it onto the brass standoff with a screw.
    (Fix the M.2 card also with one screw.)

FIG 12 Hardware Configuration.JPG

2.2.1 Setting the Jumpers
Configure your device by using jumpers to enable the features that you need based on your applications. Contact your supplier if you have doubts about the best configuration for your use.

2.2.2 How to Set Jumpers
Jumpers are short-length conductors consisting of several metal pins with a base mounted on the circuit board. Jumper caps are placed (or removed) on the pins to enable or disable functions or features. If a jumper has 3 pins, you can connect Pin 1 with Pin 2 or Pin 2 with Pin 3 by shorting the jumper.

FIG 13 How to Set Jumpers.JPG

Refer to the illustration below to set jumpers.

FIG 14 How to Set Jumpers.JPG

When two pins of a jumper are encased in a jumper cap, this jumper is closed, i.e. turned On.
When a jumper cap is removed from two jumper pins, this jumper is open, i.e. turned Off.

2.1 Jumper & Connector Locations on IBR215 main board Motherboard: IBR215
2.2 Jumper & Connectors Quick Reference for IBR215 main board

FIG 17.JPG

RTC Lithium Cell Connector (CN1)

FIG 18.JPG

2.4.1 Audio Line-In & Line-Out Connector (CN2)

FIG 19 Audio Line-In & Line-Out Connector.JPG

2.4.2 I2C Connector (CN13)

FIG 21 I2C Connector.jpg

2.4.3 DC Power Input (P17,CN18)
P17: 12V~24V DC input
CN18:DC input/output header

FIG 22 DC Power Input.JPG

2.4.4 System ON/OFF Button (SW2, CN17)
SW2:ON/OFF switch
CN17: ON/OFF signal header

2.4.5 Serial port (P16)

2.4.6 IO board port (P18, P19, P20)

P18:

P19:

P20:

2.3 Jumper & Connector Locations on IBR215-IO board

2.4 Jumper & Connectors Quick Reference for IBR215-IO Board

2.6.1 COM RS-232/422/485 Selection (SW3)

2.6.2 COM RS-232/422/485 Port (P14)

2.6.3 LVDS Display Connector (CN6, CN7)

2.6.4 COM RS232 Connector (CN12)

2.6.5 LVDS Backlight Control Connector (CN9)

2.6.6 MIPI-CSI Connector (CN4, CN5)

2.6.7 Dual USB 3.0 Type-A Port (CN3)

2.6.8 BKLT_LCD Power Setup (P11)

2.6.9 LVDS_VCC Power Setup (P10)

2.6.10 PCIE/M.2 audio option (P5)

2.6.11 I2C Connector (CN11)

2.6.12 Can bus (CN14)

Chapter 3 Software Setup

This chapter introduces the following setup on the device: (for advanced users only)

  • Make a recovery SD card
  • Upgrade firmware through the recovery SD card

3.1 Make a Recovery SD Card
Note: This is for advanced users who has IBASE standard image file only.
Basically, IBR215 is preloaded with O.S (Android or Yocto) into eMMC by default. Connect the HDMI with IBR215, and 12V-24V power directly.
This chapter guides you to make a recovery boot-up microSD card.

3.1.1 Preparing the Recovery SD card to Install Linux / Android image into eMMC
Note: All data in the eMMC will be erased.

  1. System requirements:
    Operating System: Windows 7 or later Tool: uuu SD card: 4GB or greater in size

  2. Insert your SD card to this board (i.e. the P1 connector), connect the board to PC through the mini-USB port (i.e. the P4 connector), and change the boot mode to download mode.

  3. boot IBR215 and flash SD via CMD command “uuu.exe uuu-sdcard.auto” or double click “FW_down-sdcard.bat” (Same way as PCBA update)

3.1.2 Upgrade Firmware through the Recovery SD Card

  1. Put recovery files into USB flash disk (FAT32)
    A> Yocto/Ubuntu: Copy all recovery files into PATH:

  2. Plug (step1)SD and (step2)USB flash disk into IBR215

  3. Normal boot IBR215 (SW1 Pin1 OFF), start recovery eMMC automatically.

  4. The update information will show on HDMI.

Chapter 4 BSP Source Guide

This chapter is dedicated for advanced software engineers only to build BSP source. The topics covered in this chapter are as follows:

  • Preparation
  • Building release
  • Installing release to board

4.1 Building BSP Source
4.1.1 Preparation
The recommended minimum Ubuntu version is 18.04 or later.

  1. Install necessary packages before building:

sudo apt-get install gawk wget git-core diffstat unzip texinfo gcc-multilib \
build-essential chrpath socat cpio python python3 python3-pip python3-pexpect \
xz-utils debianutils iputils-ping python3-git python3-jinja2 libegl1-mesa libsdl1.2-dev \
pylint3 xterm

2) Donwload toolchain

The clang used to compile Linux kernel needs to be a newer version. Perform the following steps to set the clang to be used to compile Linux kernel: sudo git clone https://android.googlesource.com/platform/prebuilts/clang/host/linux-x86 /opt/ prebuiltandroid-clang -b master cd /opt/prebuilt-android-clang
sudo git checkout 007c96f100c5322acc37b84669c032c0121e68d0 export CLANG_PATH=/opt/prebuilt-android-clang

The preceding export commands can be added to “/etc/profile”. When the host boots up,
“AARCH64_GCC_CROSS_COMPILE” and “CLANG_PATH” are set and can be directly used.
乙、Prepare the build environment for U-Boot and Linux kernel.
This step is mandatory because there is no GCC cross-compile tool chain in the one in AOSP codebase.
a. Download the tool chain for the A-profile architecture on arm Developer GNU-A Downloads page. It is recommended
to use the 8.3 version for this release. You can download the “gcc- arm-8.3-2019.03-x86_64-aarch64- elf.tar.xz” or “gcc- arm-8.3-2019.03-x86_64-aarch64-linux-gnu.tar.xz”. The first one is dedicated for compiling bare-metal programs, and the second one can also be used to compile the application programs.
b. Decompress the file into a path on local disk, for example, to “/opt/”. Export a variable named “AARCH64_GCC_CROSS_COMPILE” to point to the tool as follows:

if “gcc-arm-8.3-2019.03-x86_64-aarch64-elf.tar.xz” is used sudo tar -xvJf

gcc-arm-8.3-2019.03-x86_64-aarch64-elf.tar.xz -C /opt
export AARCH64_GCC_CROSS_COMPILE=/opt/gcc- arm-8.3-2019.03-x86_64-aarch64-elf/bin/aarch64-elf-

if “gcc-arm-8.3-2019.03-x86_64-aarch64-linux-gnu.tar.xz” is used sudo tar

-xvJf gcc-arm-8.3-2019.03-x86_64-aarch64-linux-gnu.tar.xz -C /opt export AARCH64_GCC_CROSS_COMPILE=/opt/gcc- arm-8.3-2019.03-x86_64-aarch64-linuxgnu/bin/aarch64-linux-gnu

  1. Decompress the IBR215 source file (example ibr215-bsp.tar.bz2) into “/home/” folder.
    4.1.2 Building release
    4.1.2.1 for yocto/Ubuntu/debian

cd /home/bsp-folder
./build-bsp-5.4.sh

4.1.3.2 for android
cd /home/bsp-folder
source build/envsetup.sh
lunch evk_8mp-userdebug
make ANDROID_COMPILE_WITH_JACK=false
./imx-make.sh –j4
Make –j4

4.1.3 Installing release to board

Appendix

This section provides the information of reference code.

A. How to Use GPIO in Linux

GPIO Value Rule : gpioX_N >> 32*(X-1)+N

Take gpio5_18 as example, export value should be 32*(5-1)+18=146

GPIO example 1: Output

echo 32 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio146/direction
echo 0 > /sys/class/gpio/gpio146/value
echo 1 > /sys/class/gpio/gpio146/value

GPIO example 2: Input

echo 32 > /sys/class/gpio/export
echo in > /sys/class/gpio/gpio146/direction
cat /sys/class/gpio/gpio146/value

B. How to Use Watchdog in Linux

// create fd
int fd;
//open watchdog device
fd = open(“/dev/watchdog”, O_WRONLY);
//get watchdog support
ioctl(fd, WDIOC_GETSUPPORT, &ident);
//get watchdog status
ioctl(fd, WDIOC_GETSTATUS, &status);
//get watchdog timeout
ioctl(fd, WDIOC_GETTIMEOUT, &timeout_val);
//set watchdog timeout
ioctl(fd, WDIOC_SETTIMEOUT, &timeout_val);
//feed dog
ioctl(fd, WDIOC_KEEPALIVE, &dummy);

C. eMMC Test
Note: This operation may damage the data stored in eMMC flash. Before starting the test, make sure there is no critical data in the eMMC flash being used.

Read, write, and check
MOUNT_POINT_STR=”/var”

create data file

dd if=/dev/urandom of=/tmp/data1 bs=1024k count=10

write data to emmc

dd if=/tmp/data1 of=$MOUNT_POINT_STR/data2 bs=1024k count=10

read data2, and compare with data1

cmp $MOUNT_POINT_STR/data2 /tmp/data1

eMMC speed test
MOUNT_POINT_STR=”/var”

get emmc write speed”

time dd if=/dev/urandom of=$MOUNT_POINT_STR/test bs=1024k count=10

clean caches

echo 3 > /proc/sys/vm/drop_caches

get emmc read speed”

time dd if=$MOUNT_POINT_STR/test of=/dev/null bs=1024k count=10

D. USB (flash disk) Test
Insert the USB flash disk. Then make sure it is in IBR210 device list.
Note: This operation may damage the data stored in the USB flash disk. Before starting the test, make sure there is no critical data in the eMMC flash being used.

Read, write, and check
USB_DIR=”/run/media/mmcblk1p1″

create data file

dd if=/dev/urandom of=/var/data1 bs=1024k count=100

write data to usb flash disk

dd if=/var/data1 of=$USB_DIR/data2 bs=1024k count=100

read data2, and compare with data1

cmp $USB_DIR/data2 /var/data1

USB speed test
USB_DIR=”/run/media/mmcblk1p1″

usb write speed

dd if=/dev/zero of=$BASIC_DIR/$i/test bs=1M count=1000 oflag=nocache

usb read speed

dd if=$BASIC_DIR/$i/test of=/dev/null bs=1M oflag=nocache

E. SD Card Test
When IBR210 is booted from eMMC, SD card is “/dev/mmcblk1” and able to see by “ls /dev/mmcblk1*” command:
/dev/mmcblk1 /dev/mmcblk1p2 /dev/mmcblk1p4 /dev/mmcblk1p5 /dev/mmcblk1p6
Note: This operation may damage the data stored the SD card. Before starting the test, make sure there is no critical data in the eMMC flash being used.

Read, write, and check
SD_DIR=”/run/media/mmcblk1″

create data file

dd if=/dev/urandom of=/var/data1 bs=1024k count=100

write data to SD card

dd if=/var/data1 of=$ SD_DIR/data2 bs=1024k count=100

read data2, and compare with data1

cmp $SD_DIR/data2 /var/data1

SD card speed test
SD_DIR=”/run/media/mmcblk1″

SD write speed

dd if=/dev/zero of=$SD_DIR/test bs=1M count=1000 oflag=nocache

SD read speed

dd if=$SD_DIR/test of=/dev/null bs=1M oflag=nocache

F. RS-232 Test
//open ttymxc1
fd = open(/dev/ttymxc1,O_RDWR );
//set speed
tcgetattr(fd, &opt);
cfsetispeed(&opt, speed);
cfsetospeed(&opt, speed);
tcsetattr(fd, TCSANOW, &opt)
//get_speed
tcgetattr(fd, &opt);
speed = cfgetispeed(&opt);
//set_parity
// options.c_cflag
options.c_cflag &= ~CSIZE;
options.c_cflag &= ~CSIZE;
options.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG); /Input/
options.c_oflag &= ~OPOST; /Output/
//options.c_cc
options.c_cc[VTIME] = 150;
options.c_cc[VMIN] = 0;

set parity

tcsetattr(fd, TCSANOW, &options)
//write ttymxc1
write(fd, write_buf, sizeof(write_buf));
//read ttymxc1
read(fd, read_buf, sizeof(read_buf)))

G. RS-485 Test
//open ttymxc1
fd = open(/dev/ttymxc1,O_RDWR );
//set speed
tcgetattr(fd, &opt);
cfsetispeed(&opt, speed);
cfsetospeed(&opt, speed);
tcsetattr(fd, TCSANOW, &opt
//get_speed
tcgetattr(fd, &opt);
speed = cfgetispeed(&opt);
//set_parity
// options.c_cflag
options.c_cflag &= ~CSIZE;
options.c_cflag &= ~CSIZE;
options.c_cflag &= ~CRTSCTS;
options.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG); /Input/
options.c_oflag &= ~OPOST; /Output/
//options.c_cc
options.c_cc[VTIME] = 150;
options.c_cc[VMIN] = 0;

set parity

tcsetattr(fd, TCSANOW, &options)
//write ttymxc1
write(fd, write_buf, sizeof(write_buf));
//read ttymxc1
read(fd, read_buf, sizeof(read_buf)))

H. Audio Test
Yocto/debian/ubuntu
// play mp3 by audio (ALC5640)
gplay-1.0 /home/root/ testscript/audio/a.mp3 –audio-sink=”alsasink –device=hw:1”
// record mp3 by audio (ALC5640)
arecord -f cd $basepath/b.mp3 -D plughw:1,0
for android:
please record and playback apk

I. Ethernet Test
• Ethernet Ping test

ping server 192.168.1.123

ping -c 20 192.168.1.123 >/tmp/ethernet_ping.txt
• Ethernet TCP test

server 192.168.1.123 run command “iperf3 -s”

communicate with server 192.168.1.123 in tcp mode by iperf3

iperf3 -c 192.168.1.123 -i 1 -t 20 -w 32M -P 4
• Ethernet UDP test

server 192.168.1.123 run command “iperf3 -s”

communicate with server 192.168.1.123 in udp mode by iperf3

iperf3 -c $SERVER_IP -u -i 1 -b 200M

J. LVDS Test(android not support)
//Open the file for reading and writing
framebuffer_fd = open(“/dev/fb0”, O_RDWR);
// Get fixed screen information
ioctl(framebuffer_fd, FBIOGET_FSCREENINFO, &finfo)
// Get variable screen information
ioctl(framebuffer_fd, FBIOGET_VSCREENINFO, &vinfo)
// Figure out the size of the screen in bytes
screensize = vinfo.xres vinfo.yres vinfo.bits_per_pixel / 8;
// Map the device to memory
fbp = (char )mmap(0, screensize, PROT_READ | PROT_WRITE, MAP_SHARED, framebuffer_fd,
0);
// Figure out where in memory to put the pixel
memset(fbp, 0x00,screensize);
//draw point by fbp
long int location = 0;
location = (x+g_xoffset)
(g_bits_per_pixel/8) +
(y+g_yoffset) g_line_length;
(fbp + location + 0) = color_b;
(fbp + location + 1) = color_g;
(fbp + location + 2) = color_r;
//close framebuffer fd
close(framebuffer_fd);

K. HDMI Test
• HDMI display test
//Open the file for reading and writing
framebuffer_fd = open(“/dev/fb2”, O_RDWR);
// Get fixed screen information
ioctl(framebuffer_fd, FBIOGET_FSCREENINFO, &finfo)
// Get variable screen information
ioctl(framebuffer_fd, FBIOGET_VSCREENINFO, &vinfo)
// Figure out the size of the screen in bytes
screensize = vinfo.xres vinfo.yres vinfo.bits_per_pixel / 8;
// Map the device to memory
fbp = (char )mmap(0, screensize, PROT_READ | PROT_WRITE, MAP_SHARED,
framebuffer_fd, 0);
// Figure out where in memory to put the pixel
memset(fbp, 0x00,screensize);
//draw point by fbp
long int location = 0;
location = (x+g_xoffset)
(g_bits_per_pixel/8) +
(y+g_yoffset) g_line_length;
(fbp + location + 0) = color_b;
(fbp + location + 1) = color_g;
(fbp + location + 2) = color_r;
//close framebuffer fd
close(framebuffer_fd);

• HDMI audio test

enable hdmi audio

echo 0 > /sys/class/graphics/fb2/blank

play wav file by hdmi audio

aplay /home/root/testscript/hdmi/1K.wav -D plughw:0,0

L. 3G Test(not for android, android have 3g config in setting)
• Checking 3G state

Check UC20 module state and sim state

cat /dev/ttyUSB4 &
• Testing 3G

the command will connect 3g to network

make sure that the simcard is inserted right, and ANT connected

pppd call quectel-ppp
echo “ping www.baidu.com to make sure the network ok”
ping www.baidu.com

M. Onboard Connector Types

Connector types may be subject to change without prior notice.

Read More About This Manual & Download PDF:

References

Read User Manual Online (PDF format)

Read User Manual Online (PDF format)  >>

Download This Manual (PDF format)

Download this manual  >>

Related Manuals