@yong posted an OS image recently. I thought I’d crack it open and see what we’ve got going on in here!
Here’s just some general notes on what’s coming:
Debian 9 – The latest available version of Debian.
3/4 repositories included in the main list are pointing at a Japanese mirror:
# deb http://debian-mirror.sakura.ne.jp/debian/ stretch main deb http://debian-mirror.sakura.ne.jp/debian/ stretch main deb-src http://debian-mirror.sakura.ne.jp/debian/ stretch main deb http://security.debian.org/debian-security stretch/updates main deb-src http://security.debian.org/debian-security stretch/updates main # stretch-updates, previously known as 'volatile' deb http://debian-mirror.sakura.ne.jp/debian/ stretch-updates main deb-src http://debian-mirror.sakura.ne.jp/debian/ stretch-updates main
As you can see, updates are included but
contrib are not. Which could be a good thing or a bad thing, depending on what side of the fence you’re on in regards to Free Software vs. compatibility and available software.
According to dpkg, the system will be running an up to date kernel:
root@thinkrad:/# dpkg -s linux-image-armmp Package: linux-image-armmp Status: install ok installed Priority: optional Section: kernel Installed-Size: 16 Maintainer: Debian Kernel Team <email@example.com> Architecture: armhf Source: linux-latest (80+deb9u2) Version: 4.9+80+deb9u2
I don’t know how to check to see if the uImage also reflects this package version, but if this thing is running mainline Linux, that’s awesome news!
Another thing to note here is that it’s armhf (32-bit).
While we’re waiting for source on the bootloader, we can at least see that in the /boot partition we’ve got a custom .dtb, built on top of the sun8i-r16.dtb.
I’ve uploaded a copy of the .dts on Github
Something worth noting is the entry here:
Which shows that the GPU should be exposed, at least in terms of hardware.
However, I don’t see the library traditionally present on Mali GPU systems which provides it’s GLES acceleration (libMali). Unless the Gameshell is now using the lima binaries, it would seem that GPU acceleration might not be available at launch.
There are GL* libraries installed though:
/usr/lib/arm-linux-gnueabihf# dpkg-query -l "libgl*" Desired=Unknown/Install/Remove/Purge/Hold | Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend |/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad) ||/ Name Version Architecture Description +++-==============-============-============-================================= un libgl-dev <none> <none> (no description available) un libgl1 <none> <none> (no description available) ii libgl1-mesa-de 13.0.6-1+b2 armhf free implementation of the OpenGL ii libgl1-mesa-dr 13.0.6-1+b2 armhf free implementation of the OpenGL ii libgl1-mesa-gl 13.0.6-1+b2 armhf free implementation of the OpenGL ii libglade2-0:ar 1:2.6.4-2 armhf library to load .glade files at r ii libglapi-mesa: 13.0.6-1+b2 armhf free implementation of the GL API un libgles2 <none> <none> (no description available) ii libgles2-mesa: 13.0.6-1+b2 armhf free implementation of the OpenGL ii libgles2-mesa- 13.0.6-1+b2 armhf free implementation of the OpenGL ii libglew-dev:ar 2.0.0-3+b1 armhf OpenGL Extension Wrangler - devel un libglew1.5-dev <none> <none> (no description available) un libglew1.6-dev <none> <none> (no description available) ii libglew2.0:arm 2.0.0-3+b1 armhf OpenGL Extension Wrangler - runti un libglfw-dev <none> <none> (no description available) ii libglfw3:armhf 3.2.1-1 armhf portable library for OpenGL, wind ii libglfw3-dev:a 3.2.1-1 armhf portable library for OpenGL, wind un libglfw3-wayla <none> <none> (no description available) ii libglib2.0-0:a 2.50.3-2 armhf GLib library of C routines ii libglib2.0-bin 2.50.3-2 armhf Programs for the GLib library ii libglib2.0-dat 2.50.3-2 all Common files for GLib library ii libglib2.0-dev 2.50.3-2 armhf Development files for the GLib li un libglib2.0-doc <none> <none> (no description available) un libglu-dev <none> <none> (no description available) un libglu1 <none> <none> (no description available) ii libglu1-mesa:a 9.0.0-2.1 armhf Mesa OpenGL utility library (GLU) ii libglu1-mesa-d 9.0.0-2.1 armhf Mesa OpenGL utility library -- de
Though they’re all mesa provided. And since they’re coming from the upstream debian repositories:
/usr/lib/arm-linux-gnueabihf# apt-cache policy libgles2-mesa libgles2-mesa: Installed: 13.0.6-1+b2 Candidate: 13.0.6-1+b2 Version table: *** 13.0.6-1+b2 500 500 http://debian-mirror.sakura.ne.jp/debian stretch/main armhf Packages 100 /var/lib/dpkg/status
It’s safe to say that all 3D applications will be software rendered.
I’ve pushed up a list of all installed debian packages on Github as well.
It looks like the default window manager may be
I’m personally not familiar with
twm, but it looks to be super old. Which could be good! Window managers have only grown more bloated over the years, and since the Gameshell really just launches one application, a small slim window manager would be a good choice.
The primary username is
In the home directory are three folders (outside the usual hidden configuration files and directories):
/home/cpi# ls apps games music
apps/ we have:
/home/cpi/apps# ls emulators launcher twm.mod
twm.mod is an ELF binary. I suspect this is actually how the main UI is implemented, as a plugin to the
twm window manager. If so, that’s great, because it will mean a tightly integrated user interface.
Drilling deeper, we can see that the launcher and it’s items are derived of python applications and shell scripts:
/home/cpi/apps/launcher/Menu/GameShell# ls 10_Settings 20_Retro Games CaveStory.sh freeDM.sh Music Player PowerOFF RetroArch.sh TinyCloud
From left to right, we have:
Retro Games (which looks like a launcher for emulators
MAME, MGBA, NESTOPIA outside of retroarch)
A Music Player
A retroarch launcher
TinyCloud ( looks like an app for transferring data to/from your gameshell using ssh, samba, etc)
So far, the only retroarch core I see on here is the Cave Story one. But if I remember correctly, they’re downloadable through the retroarch UI.
Overall, looking pretty good!
I had hoped for something a little more standardized for menu items than sourcing shell scripts and directories of Python libraries. But it’ll get the job done.