HummingBoard EU205 & RZ/G2L/G2LC SoM Quick Start Guide
Revision and Notes
Date | Owner | Revision | Notes |
---|---|---|---|
04/04/2025 | Josua Mayer | 0 | draft |
22/05/2025 | Josua Mayer | 1 | Release (updated photos) |
Table of Contents |
|
Purpose
This guide provides basic instructions for operating the SolidRun HummingBoard-EU205 with RZ-G2L SoM and booting into Linux. Advanced usage scenarios are covered by separate technical documentation.
Hardware Setup
Connections
12V DC Power Adapter (12V recommended, supports up to 48V)
Type-C USB Cable for serial console
microSD Card
Ethernet
Configuration Jumpers
for G2L SoM: J5016 (4 pieces), J5026, J5027
for G2LC SoM: J5017, J5015, J5024, J5018, J5026, J5027
Boot Select
Configure the boot-mode for microSD using onboard DIP switches S3 & S4:
G2L SoM | S3-1 (MD0) | S3-2 (MD1) | S4-1 (MD2) | S4-2 (SD_DEV_SEL) |
---|---|---|---|---|
microSD | 0 | 0 | 0 | 0 |
eMMC | 1 | 0 | 0 | 1 |
Serial Download | 1 | 0 | 1 | X |
G2LC SoM | S3-1 (MD0) | S3-2 (MD1) | S4-1 (MD2) | S4-2 (SD_DEV_SEL) |
---|---|---|---|---|
microSD | 0 | 0 | 0 | 1 |
eMMC | 1 | 0 | 0 | 0 |
Serial Download | 1 | 0 | 1 | X |
Note: 0 = OFF, 1 = ON, X = don't care.
Console
Start an application for serial console - such as PuTTY or tio. Configure it for baud rate 115200 and the COMx or ttyUSBy interface representing the micro-USB console connection. For details also see Serial Connection.
Note that the serial device only appears after powering up the board. On first use it is recommended to follow below procedure:
connect console cable
connect power
find and connect to COMx / ttyUSBy interface with terminal application
push in microSD
press reset button
Software Setup
Prepare bootable microSD Card
Download prebuilt sdcard image based on either Buildroot or Debian:
rzg2l-solidrun-sd-debian-<hash>.img.xz
rzg2l-solidrun-sd-buildroot-<hash>.img.xz
uncompress downloaded image file
write image file to microSD card to create a byte-for-byte copy. https://etcher.io/ is recommended, professionals may use unix “dd” command.
Attention: The SoM modules and carrier boards are programmed with critical identifying information, including the product name and SKU, stored in an EEPROMs at I2C bus 0, addresses 0x50 and 0x57. This data is structured according to the ONIE TLV standard and is essential for initializing the product and aligning the software accordingly. The tlv_eeprom
command in U-Boot can be used to read this data.
Important: If this information is deleted or becomes corrupted, it will impact the correct initialization and functionality of the product. In such cases, please contact SolidRun support for assistance.
First Steps with Buildroot reference system
Log-In
On power-on with valid software on microSD the system should automatically boot to a login prompt displayed on the serial console:
Welcome to Buildroot
rzg2l-solidrun login:
Log in with user-name “root”, password “root”.
Networking
Network interfaces are set to configure automatically using DHCP as soon as an ethernet link has been established.
ping
, curl
and wget
are functional out of the box when connecting to a standard home network.
Show assigned IP:
# ip addr show dev eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
...
inet 192.168.1.181/24 brd 192.168.1.255 scope global dynamic noprefixroute eth0
...
# ip addr show dev eth1
...
Log-In via SSH
SSH Log-In is active by default using the same insecure username and password.
First Steps with Debian reference system
Log-In
On power-on with valid software on microSD the system should automatically boot to a login prompt displayed on the serial console:
Debian GNU/Linux 12 rzg2l-solidrun ttySC0
rzg2l-solidrun login:
Log in with user-name “root”, no password.
Networking
By default networking is not configured. For advanced or persistent configurations please refer to the Debian Documentation.
For connecting the first RJ45 port (next to power connector) using automatic configuration, execute:
root@rzg2l-solidrun:~# dhclient end0
root@rzg2l-solidrun:~# ip addr show end0
2: end0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether d0:63:b4:05:81:94 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.183/24 brd 192.168.1.255 scope global dynamic end0
valid_lft 43195sec preferred_lft 43195sec
inet6 fd78:1be0:f231:0:d263:b4ff:fe05:8194/64 scope global dynamic mngtmpaddr
valid_lft forever preferred_lft forever
inet6 fe80::d263:b4ff:fe05:8194/64 scope link
valid_lft forever preferred_lft forever
Log-In via SSH
To log in via SSH, an ssh key must be installed first. Copy your favourite public key, e.g. from ~/.ssh/id_ed25519.pub
, into a new file in the root users home directory at ~/.ssh/authorized_keys
:
root@rzg2l-solidrun:~# mkdir .ssh
root@rzg2l-solidrun:~# cat > .ssh/authorized_keys << EOF
ssh-ed25519 AAAAinsertyour pubkey@here
EOF
Advanced Steps with Debian/Buildroot reference system
Expand Root Filesystem
After flashing the root filesystem is smaller than the eMMC. To utilize all space, resize both the rootfs partition - and then the filesystem:
inspect partitions:
Using fdisk, view the current partitions. Take note of the start sector for partition 2!
root@rzg2l-solidrun:~# fdisk /dev/mmcblk0 Welcome to fdisk (util-linux 2.38.1). Changes will remain in memory only, until you decide to write them. Be careful before using the write command. This disk is currently in use - repartitioning is probably a bad idea. It's recommended to umount all file systems, and swapoff all swap partitions on this disk. Command (m for help): p Disk /dev/mmcblk0: 14.68 GiB, 15758000128 bytes, 30777344 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: dos Disk identifier: 0xa98926ac Device Boot Start End Sectors Size Id Type /dev/mmcblk0p1 * 16384 38911 22528 11M c W95 FAT32 (LBA) /dev/mmcblk0p2 * 38912 1730559 1691648 826M 83 Linux Command (m for help):
resize partition 2:
Drop and re-create partition 2 at the same starting sector noted before, keeping the ext4 signature when prompted and re-adding the bootable flag:
Command (m for help): d Partition number (1,2, default 2): 2 Partition 2 has been deleted. Command (m for help): n Partition type p primary (1 primary, 0 extended, 3 free) e extended (container for logical partitions) Select (default p): p Partition number (2-4, default 2): 2 First sector (2048-30777343, default 2048): 38912 Last sector, +/-sectors or +/-size{K,M,G,T,P} (38912-30777343, default 30777343): Created a new partition 2 of type 'Linux' and of size 14.7 GiB. Partition #2 contains a ext4 signature. Do you want to remove the signature? [Y]es/[N]o: N Command (m for help): a Partition number (1,2, default 2): 2 The bootable flag on partition 2 is enabled now. Command (m for help): p Disk /dev/mmcblk0: 14.68 GiB, 15758000128 bytes, 30777344 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: dos Disk identifier: 0xa98926ac Device Boot Start End Sectors Size Id Type /dev/mmcblk0p1 * 16384 38911 22528 11M c W95 FAT32 (LBA) /dev/mmcblk0p2 * 38912 30777343 30738432 14.7G 83 Linux Command (m for help): w The partition table has been altered. Syncing disks.
resize root filesystem:
Linux supports online-resizing for the ext4 filesystem. Invoke
resize2fs
on partition 1 to do so:root@rzg2l-solidrun:~# resize2fs /dev/mmcblk0p2
Install to eMMC
eMMC and microSD are not usable at the same time but selected first by boot-select switches and then by software during boot.
Installation of software to the eMMC requires a special procedure:
Download a prebuilt sdcard image based on either Buildroot and create a bootable microSD card.
Format a USB flash drive with FAT32 (or ext4), and place on it the images that are to be installed to the eMMC, both Bootloader and OS - e.g.:
-rzg2l-solidrun-sd-debian-<hash>.img.xz
-rzg2l-solidrun-mmc-bootloader-<hash>.img
Insert microSD, set boot-select switches for microSD, then power-on the board and stop in u-boot at the timeout prompt by pressing any key:
... Hit any key to stop autoboot: 0 =>
Select eMMC and boot into a small rootfs in initramfs:
=> setenv sdio_select mmc => boot switch to partitions #0, OK mmc0 is current device Scanning mmc 0:1... Found /extlinux/extlinux.conf Retrieving file: /extlinux/extlinux.conf 303 bytes read in 1 ms (295.9 KiB/s) RZ/G2* boot options 1: mmc boot 2: initrd boot Enter choice:
Quickly type the number “2”, then press return:
Enter choice: 2 2: initrd boot Retrieving file: /initrd.img 48479777 bytes read in 4013 ms (11.5 MiB/s) ... Welcome to Buildroot buildroot login:
Log-in with user “root”, password “root”
Confirm eMMC is available:
# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS mmcblk0 179:0 0 14.7G 0 disk mmcblk0boot0 179:8 0 4M 1 disk mmcblk0boot1 179:16 0 4M 1 disk zram0 253:0 0 0B 0 disk
When the list includes “mmcblk0boot0” eMMC has been selected successfully.
Connect USB flash drive, then find the images and install them to eMMC:
# [ 165.516448] usb 2-1: new high-speed USB device number 2 using ehci-platform [ 165.691720] usb-storage 2-1:1.0: USB Mass Storage device detected [ 165.698778] scsi host0: usb-storage 2-1:1.0 [ 166.726993] scsi 0:0:0:0: Direct-Access TOSHIBA TransMemory 5.00 PQ: 0 ANSI: 0 CCS [ 168.358467] sd 0:0:0:0: [sda] 2013184 512-byte logical blocks: (1.03 GB/983 MiB) [ 168.366454] sd 0:0:0:0: [sda] Write Protect is off [ 168.371981] sd 0:0:0:0: [sda] No Caching mode page found [ 168.377329] sd 0:0:0:0: [sda] Assuming drive cache: write through [ 168.405783] sda: sda1 [ 168.411371] sd 0:0:0:0: [sda] Attached SCSI removable disk # # mount /dev/sda1 /mnt # cd /mnt # ls rzg2l-solidrun-mmc-bootloader-<hash>.img rzg2l-solidrun-sd-debian-<hash>.img.xz # # remove write-protection on boot partition # echo 0 > /sys/devices/platform/soc/11c00000.mmc/mmc_host/mmc0/mmc0:0001/block/mmcblk0/mmcblk0boot0/force_ro # # # write bootloader image # dd if=rzg2l-solidrun-mmc-bootloader-<hash>.img of=/dev/mmcblk0boot0 # # Ensure boot partition is configured # mmc bootpart enable 1 0 /dev/mmcblk0 # # # write OS image # xzcat rzg2l-solidrun-sd-debian-0bf2343.img.xz | dd of=/dev/mmcblk0 bs=4M conv=fsync
power-off the board, remove microSD and change boot select switches for eMMC.
On next power-on the system will boot from eMMC.
Accessing Sensors, Ports and Peripherals
See below some minimal examples making use of various board features:
RGB LED
The 3-colour LED D7 is controlled using the Linux LED Framework. Each colour is controlled separately supporting On, Off and triggers. E.g.:
echo heartbeat > /sys/class/leds/d7:blue/trigger
echo 1 > /sys/class/leds/d7:green/brightness
echo 0 > /sys/class/leds/d7:red/brightness
Accelerometer
The accelerometer is using the Linux IIO Framework. Sensor data can be accessed using libIIO.
Temperature / Humidity Sensor
The temperature and humidity sensor has no Linux driver at this time. Sensor data can be read out from userspace 2ith i2c cli utilities:
# measure humidity and temperature
i2ctransfer -y 0 w1@0x54 0xf5
# read measurement results: 2 byte humidity, 2 byte temperature, 1 byte crc
i2ctransfer -y 0 r5@0x54
For further information see HS4003 product page.
Ambient Light Sensor
The light sensor has no Linux driver at this time. Sensor data can be read out from userspace with i2c cli utilities:
# setup sensor
i2ctransfer -y 0 w2@0x44 0x00 0x80; i2ctransfer -y 0 w2@0x44 0x01 0x08
# read data: 2 byte lux, 2 byte timer
i2ctransfer -y 0 w1@0x44 0x04 r4
For further information see ISL76683 product page.
Air Quality Sensor
The ZMOD4410 has no Linux driver at this time. See ZMOD4410 and ZMOD4410 Evaluation Kit product pages for further information.
The device responds on I2C Bus 0 at chip address 0x32.
GPS
UART
Note: Available only with G2L SoM
Raw NMEA records can be accessed directly via /dev/gnss0
device:
cat /dev/gnss0
Alternatively for a more friendly UI the gpsd package and its utilities may be used after configuring it to use /dev/gnss0
at 38400 baud (see e.g. /etc/default/gpsd).
I2C
Note: Available only with G2LC SoM
There is no Linux driver for I2C interface of U-Blox MIA-M10Q. Data may be polled at bus 1 chip 0x42 address 0xFD-0xFE (length) and 0xFF (data).
The access protocol should be implemented in a kernel driver as a single transaction must read 0xFD-0xFE plus N additional bytes or abort with a NAK.For details see MIA-M10Q Integration Manual.
RS485
A Half-Duplex (2-wire) RS485 is available on J26-2 (A), J26-1 (B).
Normally the host should automatically switch the transceiver between RX and TX as needed, i.e. RX normally and TX while transmitting data. This is not (currently) supported by the Renesas G2L/C Linux uart driver, users must switch manually from userspace:
Acquire TX/RX control GPIO:
# for G2L only echo 144 > /sys/class/gpio/export cd /sys/class/gpio/P3_0 # for G2LC only echo 442 > /sys/class/gpio/export cd /sys/class/gpio/P40_2 # Both echo out > direction echo 0 > value
Set UART speed as needed:
# e.g. 9600 baud stty -F /dev/ttySC3 9600
Transmit a message:
echo 1 > value echo "Hello, World" > /dev/ttySC3 echo 0 > value
Receive messages:
cat /dev/ttySC3
CAN
Note: Available only with G2L SoM
Two full-duplex CAN interfaces are available on J26: J26-12 (CAN0H), J26-14 (CAN0L), J26-11 (CAN1L), J26-13 (CAN1H)
configure interface:
ip link set can0 up type can bitrate 125000 sample-point 0.75 dbitrate 1000000 dsample-point 0.8 fd on
Transmit a message:
cansend can0 "123#1234"
Receive messages:
candump -i can0
For second interface substitute can0
with can1
.
Digital IO
Two digital inputs and two digital outputs operating at externally supplied voltage are available on J26: J26-5 (DIG_IN1), J26-7 (DIG_IN2), J26-6 (DIG_OUT1), J26-8 (DIG_OUT2)
The signals can be accessed using libgpiod example utilities:
# read inputs
gpioget $(gpiofind bDIG_IN1)
gpioget $(gpiofind bDIG_IN2)
# set outputs low
gpioset $(gpiofind DIG_OUT1)=0
gpioset $(gpiofind DIG_OUT2)=0
# set outputs high
gpioset $(gpiofind DIG_OUT1)=1
gpioset $(gpiofind DIG_OUT2)=1
Note: The inputs are inverting, i.e. reading a 1 means logical 0 on the line.
WiFi
The Linux driver for DA16200 WiFi does not load automatically, but must be loaded manually after boot:
modprobe rswlan
rfkill unblock phy0
After unblocking with rfkill
the new wlan0
interface is operated like any standard Linux wifi device, see e.g. the Debian WiFi/HowToUse page.
Bluetooth
The DA14531 Bluetooth module is available by default as hci0
and may be used after unblocking using the standard bluez stack, e.g.:
rfkill unblock hci0
hciconfig hci0
hcitool -i hci0 lescan
LTE NB-IoT/M1 Cellular Modem
The LTE Module is not currently supported by ModemManager. Instead it should be operated manually or scripted using AT commands.
Access AT Interface
The AT interface is available at /dev/ttySC2
with hardware flow-control at 1843200 baudrate. It can be accessed using any serial terminal, for example picocom
:
picocom -b 1843200 -y none -d 8 -p 1 -f h /dev/ttySC2
By default commands are not echoed but the terminal can be configured into a nicer mode with echo, auto-complete and history by executing AT+SMART=1
.
To leave picocom press ctrl+a, then ctrl+x.
SIM Select
The Board supports either physical SIM via connector J3, and a soldered-on eSIM. The modem can switch between them using AT commands:
# first power off radio
AT+CFUN=0
# select SIM 1 (removable)
AT+CSUS=0
# select SIM 2 (eSIM)
AT+CSUS=1
# return two either airplane mode (CFUN=4) or normal operation (CFUN=1)
AT+CFUN=1
Cat-M1 / NB-IoT Select
The LTE module supports both Cat-M1 and NB-IoT. The choice is made in modem power-off state (AT+CFUN=0
) using AT command AT+SQNMODEACTIVE
(value 1 = LTE-M, value 2 = NB-IoT) followed with reset:
AT+CFUN=0
AT+SQNMODEACTIVE=1
AT^RESET
Automatic Power-On
Normally the modem radio stays off after boot (CFUN=0). It can be reconfigured for connecting to a network automatically (CFUN=1) using AT commands:
AT+SQNAUTOCONNECT=1
DATA Connection
Create file /etc/ppp/options
:
/dev/ttySC2
1843200
nodetach
noauth
local
noipdefault
defaultroute
usepeerdns
crtscts
lock
debug
dump
-chap
connect "/usr/sbin/chat -t6 -f /etc/chatscripts/connect"
disconnect "/usr/sbin/chat -t6 -f /etc/chatscripts/disconnect"
Create file /etc/chatscripts/connect
:
ABORT "NO CARRIER"
TIMEOUT 30
ABORT ERROR
"" AT
OK AT+CGDATA="PPP",1
CONNECT ""
Create file /etc/chatscripts/disconnect
:
"" "\d\d\d+++\c"
Ensure the modem is registering to a network, i.e. AT+CFUN=1
or automatic power-on above.
Finally execute ppp
application to connect:
pppd
Note: pppd version 2.5.2 or later is required, older versions can' t cope with the non-standard
1843200
baudrate (“speed 1843200 not supported“).
CLPD Motor Driver (SLG47115)
Note: I2C Interface available only with G2LC SoM
The SLG47115 has no Linux driver at this time and comes unprogrammed. It responds on I2C Bus 1 at chip address 0x00.
For further information see SLG47115 product page.
SolidRun Ltd.