Linux on the Retromini

Time for a progress report.

I successfully booted a Linux kernel on the Retromini some weeks ago. I won’t paste the whole kernel boot here, but you can read it by clicking here.

Since then, I"ve been adding support for the various hardware components of the Retromini in the upstream drivers if they exist, or writting new drivers otherwise.

Here is a list of the hardware components, and their current state:

UART Working Upstream
IRQ controller Working Upstream
PLL and Clocks Working Not upstream
Clocksource Working Sent upstream
System timer Working Sent upstream
Watchdog (reboot) Working Sent upstream
PWM (backlight) Working Sent upstream
RTC (power-off) Working Upstream
Pinctrl + GPIO Working Sent upstream
DMA Working Sent upstream
SD card Working Upstream
Memory controller Working Not Upstream
NAND Working Not Upstream
BCH (error correction for NAND) Working Not Upstream
Audio Not working
USB Ethernet / mass storage Not working
Buttons Working except SELECT Upstream
ADC (SELECT button) Not working
LCD Not working

If I find some time in the next few days, I will clean up and push on Github the current git tree I’m working on.

Some things I thought I’d share:

  • The JZ4725B SoC used by the Retromini is actually newer than the JZ4740. Some hardware blocks are more similar to the JZ4770 than the JZ4740.
  • The RTC does not retain the date across reboots. This sucks, as I won’t be able to play Pokémon games then, as they rely a lot on time. Maybe a hardware modification could make it work?
  • The buttons are for the most part GPIO-mapped. The R button is not available when serial logging is enabled, is it uses the same pin as RX. Also, for some reason the SELECT button is not GPIO-mapped, but connected to the Analog-to-Digital Converter (ADC). Whoever thought it was a good idea, should burn in hell.

That’s all folks!

  1. #1Gin, 19 Aug 2018

    Just ordered my own Retromini today. nice progress! Is RTC that important and can it be fixed? I planned to use mine for Pokemon too and was wondering if it’d be a big issue.

    Reply

    1. #1.1pcercuei, 19 Aug 2018 (Reply to Gin)

      Every time you power on the Retromini it will reset to the Epoch time (Thursday, 1 January 1970). That means that the clock in-game won’t synchronize to the real time. Pokémon silver/gold/crystal and rubis/saphir/emeraud have time-based events, which then won’t match the real time.

      Reply

    2. #1.2Gin, 19 Aug 2018 (Reply to Gin)

      I see. Slightly disappointing for me, but as long as the game runs with no hiccups.

      Reply

  2. #2Noah Bechtel, 19 Aug 2018

    Ive been watching this page non-stop. So excited to see something done with this neat device.

    Reply

  3. #3thirty6, 19 Aug 2018

    Great job, keep it up! Glad to see that you’re making progress with this fun little system!

    Reply

  4. #4Cralex, 20 Aug 2018

    Wonderful! I insta-subscribed over RSS. Mine has been sitting on a shelf gathering dust for a while. Poor compatibility with GB/GBC games due to running emulator-within-an-emulator, stupid swapped AB buttons in the NES emulator, annoying Chinese games on the NAND… I thought about selling it, but I hoped that someone would be trying to breathe new life into it, and found this blog.

    Hope there’s some sort of mod that can make RTC persistent. If not, at least there are some hacks that make the clock easy to reset in some Pokemon games.

    I’m not familiar with opendingux at all, but one suggestion I have is maybe a battery testing application? I got a battery that supposedly has better capacity, but it seems flaky.

    I truly wish you the best solving the remaining issues. The Retro Mini is a remarkable device and it needs some great firmware to make it shine.

    Reply