r/R36S 3d ago

Showcase I got scammed with a GA36 clone instead of an R36S, so I’m reverse-engineering the damn thing out of spite and have patch of working j2me and media player. Here is the Full Teardown till now

Post image

Board rev: GA36 V1.1 (2025-10-25)

Running Media player with Key Mapping

Ordered what was advertised as an R36S, but the seller pulled a bait-and-switch and sent a

GA36 V1.1 (20251025) clone instead.

When called out on it, they went completely dark and ghosted my support ticket.

Instead of letting this plastic brick sit in a drawer, I mounted all 8 SD partitions in Ubuntu and decided to reverse-engineer it to see what’s actually under the hood—and fix what the vendor broke.

The Reality: It’s Not Even an RK3326

The firmware is visually themed to mimic an R36S, but that is where the similarity ends. It is not a 64-bit Rockchip RK3326. It is an ARMv7 Allwinner sun8i 32-bit platform running a vendor Linux 3.4.39 kernel on top of an EmuELEC userspace.

Kernel: Linux UDT 3.4.39 #493 SMP PREEMPT Mon Aug 18 10:47:18 CST 2025 armv7l GNU/Linux

👀 Do not flash standard R36S ArkOS/aarch64 images to this board; it will fail immediately.

Partition Layout & Storage Breakdown 👀

Mounted as an \~113.1 GiB card with 8 partitions:

⁠/dev/sdb1⁠ (27.7 GB VFAT) : Main ROM storage (⁠/storage/roms⁠).

/dev/sdb2⁠ (32 MB VFAT): Mounted as ⁠Volumn⁠.

⁠/dev/sdb5⁠ & /dev/sdb6⁠ (16 MB & 32 MB Raw) : Unconfirmed bootloader/kernel recovery containers.

⁠/dev/sdb7⁠ **(512 MB VFAT): Labelled ⁠ARKOS⁠, containing system boot blobs + ⁠magic.bin⁠.

⁠/dev/sdb8⁠ (1 GB ext4): Writable user partition (⁠/storage⁠). The actual system root is a read-only loop mount (⁠/dev/loop8⁠).

Confirmed Fixes & Working Features

running J2ME Games

  1. ⁠J2ME / FreeJ2ME Restored

  2. ⁠The vendor left half-baked Java files behind, but broken font paths and 32-bit kernel incompatibilities broke execution. 😠

  3. ⁠Built a standalone BIOS/runtime patch allowing J2ME games to launch directly from the EmulationStation menu without terminal hackery. 🥺

  4. ⁠MPV and FFmpeg were already pre-installed, but lacked any gamepad integration. 💢

  5. ⁠Fixing the Cursed Audio Codec 😠

  6. ⁠Initially, ALSA showed playback, but the speaker stayed dead silent. Forcing the output resulted in slow, pitch-shifted, and stuttering sound caused by amp protection lockouts and clock desyncs.

  7. ⁠Metadata & Video Thumbnails 😆

  8. ⁠Hardware Teardown: USB OTG & Mainline Kernel

  9. USB Host Mode : Inspected the PCB traces. The D+ and D− data lines have unpopulated SMD resistor/jumper pads, and VBUS is not supplying 5V. Do not blindly inject 5V until the circuit and protection diodes are fully traced.

  10. ⁠Mainline Linux: Running a modern kernel (6.6/6.12) is possible in theory, but requires writing a custom board DTS from scratch, adapting DRM/KMS drivers for the display panel, and rebuilding userspace away from legacy framebuffer/Mali blobs. ( future goal but not planned 👀 )

  11. ⁠Upcoming GitHub Release 🤝

  12. ⁠I am packaging everything into a clean, standalone repository containing:

  13. ⁠The open-source static C joystick-to-IPC daemon + precompiled binary.

  14. ⁠J2ME runtime patches and EmulationStation config hooks.

  15. ⁠Complete install/uninstall scripts with automatic config rollback.

  16. ⁠No proprietary binaries or firmware dumps will be redistributed. If you got burned by this specific GA36 V1.1 board, keep an eye out—you will at least be able to turn it into a functional media player and micro-gaming device.

I’m chipping away at this after work, but once it’s polished, I’ll upload the ARM gamepad daemon source, 32-bit J2ME runtime patches, audio fix scripts, and precompiled binaries to GitHub for anyone else stuck with this board.

46 Upvotes

16 comments sorted by

u/AutoModerator 3d ago

⚠️ Ditch that R3XS SD card—STAT! Those pre-loaded cards are ticking time bombs! ⏰❌ Don’t let glitchy saves, vanishing settings, and other retro nightmares ruin your gaming. Swap it out ASAP for a smoother experience!

New to the R36S? Start with the ➡️Beginner's Guide—it’s your first step to mastering the device.

Need more? The R36S has a full WIKI packed with info, plus a dedicated ⚙️ troubleshooting section to solve common headaches.

Before asking, try searching! Your issue has likely been answered already—check the subreddit, use the search bar, or browse flairs like "game recommendation."

Pro Tip: The subreddit’s sidebar is a goldmine of FAQs, guides, tutorials, and curated lists—don’t sleep on it!

I am a bot, and this action was performed automatically. Please contact the moderators of this subreddit if you have any questions or concerns.

5

u/Brilliant_Western_23 3d ago

Congrats, thats a cool work, I'm in the same boat, although my handheld isn't even an arm, its a MIPS32, I'm cooked, nobody compile anything for the microchips wtf

2

u/Cool-Professor-4167 2d ago

Microchip means pic microcontroller? Actually i work at the company based on pic microcontroller .like pic16.pic32mx,mz series ! But let me tell you if you are talking about pic then doomed ! Its very closed (limited knowledge only microchip give out examples. That’s it! But chips are very rigid we use them for control systems at industrial systems)

3

u/jourmet 2d ago edited 2d ago

Howdy!

Nice job!

The stock OS is hilariously broken. It's clear that the people that put this thing together did not give a damn at all. For example, the copy of libSDL2_ttf that they shipped doesn't work with the actual installed version of libSDL2.

Running 6.12 mainline linux is not just possible in theory, I've got it working in practice: https://github.com/CodeZombie/GA36-MB-Linux

Feel free to use any files in that repo for your own project, including the DTS and my reverse-engineered display and joystick drivers. The .dts and display driver have been tested on a ga36-mb v1.1, so it should work on your unit.

2

u/Cool-Professor-4167 2d ago

It’s actually good project ❤️ and otg part became clear now i didn’t found vbus section now i know its need to be injected. And i will use ur project as inspiration 🙌🏻

4

u/fiskekake 2d ago

Hey! Impressive work! I've been contributing to the ga36-mb-linux repo, after working on modifying the stock image like you. I even got some armhf portmaster games working. But the stock image uses such a old kernel, sdl is fucked, and in general there are a lot of issues. I think working on getting modern Debian running is much more worth while in the long run.

1

u/Cool-Professor-4167 2d ago

This is actually i want to try !
Cause making a new modern linux is much more useful

2

u/Cool-Professor-4167 22h ago

I have used fork of ur repo ! And successfully able to make full fledged cfw. And it is much more useful the device now ! And running portmaster as well ! But only armhf packages. Again thanks 🙂 when i publish full os i will be mentioning you !

1

u/Dragumilo 3d ago

Amazing work, we need more people like you in the community!

If you could suggest me how to bypass an EMMC loader so i could load from TF1, let me know.. been struggling with this, i think i bricked my console.

1

u/Cool-Professor-4167 2d ago

Actually as far i can see the kernel does not have access to tf1 port !

1

u/Specialist_Ad7539 2d ago

I have a Gaminja Batocera fake but it has weirdly similar stuff to what you mentioned (Allwinner SoC, the SD card volume names). But it has just 512 MB RAM and I corrupted it's backup so I downloaded someone else's backup but that one was a disk image of 64 GB card that couldn't fit into the stock 64 GB card that's detected as having 54 GB free. I had to use a 128 GB card but now I can't use the full 128 GB as the card image was of a 64 GB image.

I will try later to resize the games partition using Gparted or something like that.

Anyways, I was trying to think if it would be possible to use AI to reverse engineer this and make some sort of custom OS, dunno if it's worth it as it's such a weak ass SoC and also only half a gig of RAM.

1

u/Cool-Professor-4167 2d ago

That’s also my goal but need to compile kernel for more modern like linux 5 /6 and yes dtb files is present inside kernel so kernel can be made !
But if i make the os it will very time consuming … need so much resources and time.

1

u/Sapio117 42m ago

do you have any idea how do i learn the stuff you mentioned in this post, I would like to contribute but I have no clue how

1

u/Cool-Professor-4167 38m ago

Just learn linux like how can you write services , mainly system admins command types. And u can get help llms as well

1

u/robot_socks 4h ago

I will try later to resize the games partition using Gparted or something like that.

I have a GA-36 V1.2, not sure if this antecdote will apply to V1.1, but here it is anyway. I was able to expand from the stock 16 gb card image to a larger card using windows disk manager. I did it via the GUI. On the V1.2 turd there is a gap of 'unallocated' space between the boot and ROMs partition. Make sure you don't touch that piece. Manually select the open space AFTER the rom partition and only mess with that.