Download the latest image from the website and flash it to an SD card of at least 2GB. There are several ways to write an image depending on your operating system, but if you are not sure where to start, Win32DiskImager is a reliable choice.
Flash it to the card and everything else follows from there. One important warning: writing the image erases whatever is on the card, so back up anything you need first — there is no going back once the flash starts.
That depends on your hardware revision. GStickOS was built for a Game Stick 4K Lite with a Hi3798MV100 SoC and 256MB of RAM, and several revisions of this stick exist that look nearly identical on the outside but differ in hardware.
You can check yours under System Information in the original firmware: a version string such as "SEGAM-M8 2024-10-15" or something similar means you have a compatible stick.
If you have a backup of your original SD card, you can always try the image — it causes no permanent damage. A compatible stick will boot into the RetroArch UI.
No. Everything runs from the SD card — the stick's own hardware is never modified in any way. To go back, simply put your original SD card in, and the stick is restored to its stock state.
GStickOS has a built-in update system. Open the settings menu, check for updates, and follow the on-screen prompts to install the latest version.
Not yet. The RetroArch interface is simple enough to explore on your own, and a usage guide is planned for the future.
No ROMs are included in the image — they are subject to copyright, so you need to provide your own.
One handy trick: if you still have the original SD card, plug it in through a USB adapter and GStickOS will detect it, making its contents available under /mnt/usb.
The stick has only one USB port, so a USB hub is strongly recommended. A self-powered hub works best, but an unpowered one is fine too if you have a good power adapter — the stick will power all your peripherals without issue.
You will need your own ROMs. Plug in a USB drive — the system mounts it automatically — and open the RetroArch file browser to /mnt/sdXY to see its contents. Any vFAT-formatted (FAT32/exFAT) USB key will work, and every file on it will show up.
Which cores to use for a given game, and which ROMs are compatible, is beyond the scope of this FAQ — the RetroArch documentation covers that in detail.
Yes — plug in a USB WiFi dongle. GStickOS ships with a driver for the RTL8188EU chipset, so a dongle built on that chip will work out of the box.
To connect, GStickOS reads a wpa_supplicant.conf file. Place one in the root folder of a USB stick, plug it in, wait a few seconds, then reboot: GStickOS scans every USB device on connection and, if it finds a wpa_supplicant.conf, it replaces the internal configuration with yours. Here is a sample configuration — edit it to match your network:
ctrl_interface=/var/run/wpa_supplicant
update_config=1
country=IT
network={
ssid="my_1st_network"
psk="MyPassword1"
}
network={
ssid="my_2nd_network"
psk="MyPassword1"
}
SSH is open by default. Log in as root with the password gstickos (all lowercase).
You are logging in as root, so you can change or delete anything — including files the system needs to run. Don't worry: if you break something, simply reflash the image and you'll be back to a clean state.
Certainly — use any SCP/SFTP client (such as WinSCP) and the root credentials from above to transfer files. I recommend storing them under /mnt/extended, the largest partition on the card. You can then browse them straight from the RetroArch UI by navigating to /mnt/extended (or wherever you put them).
The extended partition (mounted at /mnt/extended) is only as large as the image you downloaded. If your SD card is bigger (for example, > 2GB), you can resize the partition to use the full available space. There's no GUI for it yet, so you'll run a few commands over SSH:
- SSH into the stick from a terminal:
ssh root@STICK_IP, replacingSTICK_IPwith the IP of the stick on your network. The password isgstickos. - Run
ps | grep retroarchand note the first column of the first two rows — two numbers, usually somewhere in the 1000s. Suppose you got1262and1272. - Type
kill -9 1262 1272using the numbers from the previous step. This stops RetroArch (it's fine). - Type
umount /mnt/extended. - Type
resize2fs /dev/mmcblk0p5. - Wait — it can take a while. You'll know it's done when a message starting with "The filesystem size is now" appears.
- Type
reboot. The stick restarts and your whole SD card is available.
Go for it — just share your improvements with the community. A few things to know before you start:
- Use Linux (a virtual machine is fine). Avoid Windows — you'll regret it.
- GStickOS is BusyBox-based, which among other things means you should be comfortable with the command line.
- The SD is not mounted without your intervention. Without going too deep, that's a consequence of how the stick's hardware is built and isn't easily changed (it means flashing a custom bootloader onto an internal, unlabelled chip — if that's your thing, let me know).
- The SD holds two partitions: a root filesystem and an extended partition. To mount them you have to pass an offset to the
mountcommand; the offsets you need are10MBand138MB. To mount the extended partition, for example:
Be sure to use the correct device path (replacesudo mount -o loop,offset=$((138 * 1024 * 1024)) /dev/sdX /media/sd/dev/sdX) and mount point (replace/media/sd). - Everything is built from scratch with a custom toolchain — from the BusyBox base through RetroArch and its cores. I published a docker image of the toolchain (here) with which you should be able to recompile everything, kernel included. One warning: toolchains are the first step down a rabbit hole. My one tip is that, after loading the docker image, you should
sourcetheenv.shfile. - Most cores build without modification — with your docker container running and
env.shsourced, you should be able tomakethem all. Some require small to big changes, from updating configuration to recompiling libraries and frameworks. - It's easy to get stuck with the toolchain, especially since it's based on an older GCC (4.9.2) and matching glibc. Reach the Discord channel if you have questions — I'm not always around, but I'll do my best to answer.
The best way to reach out is the Discord server — there's a dedicated questions channel. I'm not always online, but I do my best to answer everything posted there: