« Back

RG350M Handheld Linux Gaming Console

CPU: JZ4770 1GHz MIPS (Single Core)
RAM: 512MB RAM (DDR2)
Display: 3.5 Inch 640x480 (IPS)
Storage: 2 SD-Card slots
Battery : Li-polymer 2500mAh battery

The RG350M is a portable gaming console based on the OpenDingux project. The devices has 2 SD-Card slots where one is for the root filesystem and the other for external data like roms or videos. It has by default full root access via SSH (over USB). Each document and shop states it being a dual core processor, but I've been only able to see one core in "htop" and also cat /proc/cpuinfo only lists one.

CPU:

system type            : JZ4770
machine                : Unknown
processor              : 0
cpu model              : Ingenic JZRISC V4.15  FPU V0.0
BogoMIPS               : 792.57
wait instruction       : yes
microsecond timers     : no
tlb_entries            : 32
extra interrupt vector : yes
hardware watchpoint    : yes, count: 1, address/irw mask: [0x0fff]
isa                    : mips1 mips32r2
ASEs implemented       :
shadow register sets   : 1
kscratch registers     : 0
core                   : 0
VCED exceptions        : not available
VCEI exceptions        : not available

Kernel:

Linux opendingux 3.12.0-dingux+ #7 Thu May 21 11:21:56 CST 2020 mips GNU/Linux

A kernel source patched for RG350M can be found Here.

Links

Some interesting projects can be found below:

Setup LXC Build Container

When using buildroot in combination with arch-linux one will run into some issues, since buildroot heavily depends on host utils such as compilers. This will create an ubuntu-focal (20.04) container:

lxc-create buildroot -t download -- -d ubuntu -r focal -a amd64
sed -i "s/lxc.net.0.type = empty/lxc.net.0.type = none/g" /var/lib/lxc/buildroot/config

lxc-start buildroot
lxc-attach buildroot

echo 'echo "nameserver 8.8.8.8" > /etc/resolv.conf' >> /root/.bashrc && exit
lxc-attach buildroot

Install Dependencies

apt-get update
apt-get install build-essential bc git bzr subversion mercurial wget libncurses-dev unzip rsync time \
  squashfs-tools gcc-multilib g++-multilib automake cpio gettext mtools dosfstools

Build Instructions: OpenDingux (Mainline)

The OpenDingux Project added official support for the RG350(M) devices. For this, the gcw0 target is used which also provides device trees and bootloaders for the RG350(M) variants. This build is using the latest 5.9-Kernel branch und updated components across the board. However, it still has some issues like graphical glitches and some gmenu2x settings are not working as they should.

Fetch & Compile

su -l ubuntu
git clone https://github.com/OpenDingux/buildroot.git OpenDingux; cd OpenDingux
make od_gcw0_defconfig BR2_EXTERNAL=board/opendingux
make

Install

Create an SDCard with MBR/DOS partition table and create two partitions:

- VFAT (512MB)
- EXT4 (  *MB)

In this example, /dev/sda is the SD-Card device:

cd output/images/
dd if=ubiboot-rg350.bin of=/dev/sda bs=512 seek=1 count=16 conv=notrunc

mkdir -p /mnt/sdcard
mount /dev/sda1 /mnt/sdcard

cat uzImage.bin rg350m.dtb > /mnt/sdcard
cp modules.squashfs rootfs.squashfs mininit-syspart /mnt/sdcard
mkdir -p /mnt/sdcard/dev /mnt/sdcard/root

Build Instructions OD-Contrib (Old Kernel)

There's a project called buildroot-rg350-old-kernel on GitHub which is an effort to provide a toolchain for RG350(M) devices, by using the latest buildroot and opendingux packages where possible. It uses the old kernel that is known to work and patches buildroot/opendingux accordingly.

Fetch & Compile

su -l ubuntu
git clone --recurse-submodules https://github.com/od-contrib/buildroot-rg350-old-kernel.git
cd buildroot-rg350-old-kernel
make rg350m_defconfig BR2_EXTERNAL=board/opendingux:opks
board/opendingux/gcw0/make_initial_image.sh rg350m

Install

cd output-rg350m/images/od-imager/images
dd if=sd_image.bin of=/dev/sda bs=4M conv=fsync