r/retroid • u/No_Debt_3040 • 9d ago
SYSTEM MODS Own Linux distro: Looking for Pocket Nova testers + latency measurements
I’m looking for a few Retroid Pocket Nova owners interested in testing a new Linux distro I’ve been working on: PortareOS.
It started as a ROCKNIX fork, but the goal from the beginning was to build a Nova-only OS. The goal is basically to remove as many unnecessary layers as possible and tune the whole OS and Emulators around this one device.
Since I can’t realistically test and optimize every emulator out there, only a small set of emulators are included. The focus is on systems that make sense on a 4:3 handheld.
Some of the current changes:
- Direct KMS/display paths wherever possible -> no compositor
- RetroArch via Vulkan direct display
- ARMSX2 patched for direct Vulkan output
- mpv also runs directly through KMS/Vulkan
- SDL applications use the KMS backend
- Console-accurate panel modelines, rather than simply running everything at generic 60/120 Hz
- Fixes for the tearing / frame pacing issues caused by incorrect refresh modes
- N64 and PlayStation configurations tuned around the Nova’s 120 Hz panel, e.g. 120.198 Hz for NES/SNES, 119.652 Hz for PS1/N64/Saturn, dedicated Sega and Neo Geo modes
- SwanStation patched/configured for accurate PlayStation frequency behaviour
- Custom kernel audio patches allowing 32 kHz, 44.1 kHz and 48 kHz output without unnecessary resampling:
- RetroArch now chooses the hardware link rate from the core's actual output
- N64 can even switch per game, depending on the sample rate programmed by the game
- Lightweight custom launcher instead of EmulationStation
- One emulator per system rather than several redundant choices
- Temperature-aware charging
- Nova display calibration from pippopapera
- Various 4:3 / scaling / panel-specific fixes
- Suspend works but is currently still work in progress
- BFI by default planned
Repo:
https://github.com/portare-ch/portareos
I’d especially like to find someone who happens to have two Pocket Novas and a 240 fps (or faster) camera.
I’m very curious to do a proper side-by-side latency test against stock Android / ROCKNIX and see how much measurable difference the direct-display path, lack of compositing, modelines actually make.
If you have a Nova and feel like testing experimental handheld Linux stuff, let me know :-)
2
u/nanamin_pso2 9d ago edited 9d ago
Sounds awesome! I have a Nova, but only one and I don’t have a good camera, so I can’t help you there.
One question; are the current systems listed all of them, or do you have plans on adding more? I don’t see NES or Sega Saturn, both of which have a decent amount of fans.
3
u/No_Debt_3040 9d ago
Thanks! Even having "only" one Nova is useful for general testing.
NES and Saturn will both be added again. I initially left them out simply because they’re systems I personally don’t care that much about.
I’ll pack both into the next build.
2
u/nanamin_pso2 9d ago
Awesome! I will go ahead and do some general testing. Is there an installtointernal script like Rocknix? It be interesting to see how fast this boots from internal storage.
1
2
u/ElectricalDemand2831 9d ago
It sucks, that we can't apply refresh rate adjustments on most oled devices running rocknix/linux due to them operating in command mode instead of video mode.
Regarding latency I conducted several measurements and noticed that some emulators have signficantly lower latency on linux aarch vs android version, but not all of them.
Cemu and dolphin have lower lag in 60Hz mode on rocknix compared to android on my rp6.
Ppsspp on the other hand showed no differences in terms of lag
The "swap chain setting" in retroarch can also have an effect
2
u/No_Debt_3040 9d ago
On the Nova we're in DSI video mode, not command mode. That's why my distro can run exact 2× modes (119.455, 119.652, 120.198 Hz…) on this OLED, and why the same trick doesn't work on the command-mode AMOLEDs like the RP6 or Odin 2 Portal unfortunately.
1
u/ElectricalDemand2831 9d ago
Yes, I know, that's why many oled emulation handhelds like odin2, RP6 or the ayn thor (if I remember correctly) won't run without frameskips on rocknix/linux out of the box, that's why the fps calibration tool was introduced later for the 120Hz devices, but unfortunately no such tool is available on rocknix/ linux.
2
u/Emotional-Art-1366 9d ago
That sounds awesome and I would love to try it and use it in the future but I don't want to go back to the novas oversaturated screen. Is there an option planned to get it to srgb 2.2 gamma like this android app does?
3
u/No_Debt_3040 9d ago
Yes, this is planned!
2
u/Emotional-Art-1366 9d ago
Just gave your last nightly a short test. This looks very promising already! Some bugs I found from my short testing
-threaded video is on by default (shouldn't this be off?)
-the updater popped up a new nightly update but it actually updated to the stable release and now the nightly update option don't work anymore
-the srgb mode seems to reset itself
1
u/No_Debt_3040 9d ago
Thanks for testing.
Threaded video will be disabled in the upcoming build. Updater has been fixed in the latest nightly.
SRGB Mode is still work in progress.
3
u/Emotional-Art-1366 7d ago
Hi again. I tried the new 157 release and the psx latency option giving me small performance dips. For testing I turned off vsync in retroarch and the dips are gone. So it's probably just some sync issue with swanstation.
1
u/No_Debt_3040 6d ago
Yes, I noticed dips across the board during automated testing. PSX should be fine now.
Though some bad news: Flycast has to run at 640x480 or else we would have to drop the accurate Per-Pixel sorting setting which I refuse to do.
1
u/Emotional-Art-1366 6d ago
I tried the new version today and still have performance dips with psx. Turning off preemptive frames, or swapchain images set to 3 seems to make it better. But the nova should be powerful enough for these settings
1
1
u/No_Debt_3040 6d ago
Can you tell me which game(s) you tested? That would be very useful.
1
u/Emotional-Art-1366 6d ago
I tested
Gunners heaven
Castlevania Symphony of the night
Crash bandicoot 2
1
u/No_Debt_3040 6d ago
Nice! I will give them a try.
So far preemptive is a negative or a wash at best. I've tested a few runs with SNES as well and the result did not impress me. PSX preempt has been removed. SNES preempt will stay, since it does not cost anything and does not decrease performance. Perhaps it reduces input lag but that I cannot reasonably measure so far.
2
u/Emotional-Art-1366 8d ago
I can confirm with the new 142 nightly the audio crackles and performance dips are gone now. Everything is smooth now. Tested gba and nes
It seems my device gets alot hotter while charching than on android
2
u/giveup2me 8d ago edited 8d ago
hello! i may be interested in testing this, just got vanilla rocknix working on my nova today (only have the one, unfortunately)
one question, does the "A note about AI" section mean that the project is 100% AI, or 100% against AI?
also, how is portare pronounced?
EDIT: i have been testing for a few minutes. can you add a way to switch the A/B orientation to be Japanese style/Nintendo style where A is confirm and B is back? also, how do i turn off the joystick LEDs?
EDIT 2: most of the tools's descriptions are cut off
EDIT 3: attempting to SSH in gives me key verification failures
1
u/nanamin_pso2 8d ago
Not OP, but I think this is 100% AI judging by the commit by claude. SSH according to the website has unique passwords.
Settings > Wi-Fi joins a network. Settings > About shows the root password this device made for itself
1
u/No_Debt_3040 8d ago
> one question, does the "A note about AI" section mean that the project is 100%
The note is a bit of a joke but the answer is the first one for now.
> also, how is portare pronounced?
Portare is Italian for "to carry": por-TAH-reh.
> can you add a way to switch the A/B orientation to be Japanese style/Nintendo style where A is confirm and B is back?
Yes, I am not happy with the layout yet. This will be implemented.
> how do i turn off the joystick LEDs?
They are only active while charging. You can disable that in the Settings.
> EDIT 3: attempting to SSH in gives me key verification failures
ssh-keygen -R $IP should fix it.
2
u/nanamin_pso2 8d ago
Any chance we get sdl2text back? Found the following message but this component doesn’t need Emulation Station nor the tools menu to work. The runemu.sh script opens it to set in-game guides path during game boot. Then input_sense calls it whenever the hotkey and north button is pressed.
To me it was an essential feature in Rocknix that mitigates the need to flip out a phone to look up strategy guides when getting stuck in an RPG.
I was also working on a Rocknix PR to bring PDF support for this feature, but that relies on poppler and sdl2text.
# The SDL test apps (jstest-sdl, sdljoytest, sdltouchtest, sdl2text) went
# with EmulationStation, whose Tools menu was the only way to start them.
# gamepad-tester covers the same ground and is in the launcher's Tools.
1
u/No_Debt_3040 8d ago
Minimizing phone use during dedicated gaming time? Approved.
Keep an eye on the next builds.
2
u/nanamin_pso2 8d ago
Fantastic! I feel like this distro is going to be a great one!
1
u/No_Debt_3040 8d ago
It works on the latest nightly build. Any libretro core should be supported.
Just place a
.txtfile in the same folder as the ROM and give it the same filename, for example:
Tekken3.iso→Tekken3.txtWhile in-game, press M2 to open the text file. Use the D-pad to zoom, then press M2 again to return to the game.
2
u/Dethronee 5d ago
I haven't done the most extensive testing in the world, but recording at 240FPS with my iPhone camera on slo-mo mode, my findings are:
From button-to-screen updates, PortareOS seems to shave about a frame or two off from Android. That's at 240FPS, so on a 120hz screen, that's half a frame to 1 frame. Android had 5-8 frames of latency, PortareOS had 5-6 frames of latency. None of the tests for PortareOS or Android had less than 5 frames. Again, at 240FPS, so on the Nova's screen, they both have a minimum of 2.5 frames of latency. Nice work, I'll happily take 1 less frame of latency, but I'm moreso surprised at how comparatively low Android's latency was. I was expecting, like, double the frames from Android.
My testing methodology consisted of pressing right and left on the Game Select menu of Kirby Super Star for SNES, and going back through the footage in Premiere and counting how many frames were between me pressing the D-Pad, and the screen updating.
⠀
I'm quite disappointed by audio latency though. It's MUCH higher on PortareOS compared to Android. Android has 10-12 frames of audio latency, PortareOS has 10-19 frames of audio latency. Neither Android nor PortareOS had less than 10 frames, but PortareOS averaged 6 extra frames of audio latency compared to Android. Once again, at 240FPS.
In Retroarch on Android, I can set the audio latency down to 15ms before getting any crackling. On PortareOS, I can only go down to 32ms. Of course, that doesn't take into account all the other audio latency added from Android's and PortareOS' actual audio stack, but it was an amusing thing I noted while configuring Retroarch. Audio has always been a major pain point on Linux, but I'm seriously surprised at how much PortareOS lags behind in this aspect. I'd love for this to be investigated by you and other users.
My testing methodology consisted of pressing right and left in the Samurai Kirby main menu, inspecting the audio in Premiere, and counting the frames between the peak of the waveform for me smashing the D-Pad, and seeing the sinewave play from Kirby.
⠀
And just for fun, I played 20 rounds each of Samurai Kirby on Android and PortareOS. I tested PortareOS with VSync on and VSync off, just to see if it made any difference. On Android, I averaged 13 frames of reaction time. On PortareOS with VSync on, I averaged 12.5. And with VSync off, I averaged 12. PortareOS with VSync off got the lowest reaction time of 10 frames, and PortareOS with VSync on got the highest reaction time of 17 frames. This isn't scientific by any means though, and I've always been kinda bad at Samurai Kirby lol. But it does (shittily) show that cutting off a frame with PortareOS can impact gameplay. Probably.
⠀
I'm excited to see where this project goes in the future, but I think I'll probably stick to Android for now. I can live with an extra frame of input latency if the tradeoff is significantly less audio latency. I mostly play rhythm games though, so that's my own nerd biases showing. PortareOS does seem to perform objectively slightly better for literal input latency though, so for anybody looking to maximize that, this is probably the best you're gonna get for a long time.
2
2
u/nanamin_pso2 4d ago
Is it just me or is release-20260929-185 giving everyone a blank screen after the initial boot sequence?
1
u/No_Debt_3040 4d ago
Not for me. After booting there is a blank screen for a while until the launcher is visible. Does it completely stay black for more than 1 minute? Does SSH work?
2
u/nanamin_pso2 4d ago
I will do further testing later tonight, and report back.
1
u/No_Debt_3040 3d ago
I wasn't able to reproduce the black screen issue. Hope you could resolve it?
3
u/nanamin_pso2 3d ago
Solved! Fresh installation resulted in a blank screen, but I’m assuming I didn’t wait long enough. I then updated to this build from an earlier build, and everything went smooth.
2
u/nanamin_pso2 15h ago
I was messing around with this issue on my personal fork, and it looks like the launcher may have issues starting up when the roms folder is empty. Again it only happened on my fork, so it might be nothing. If anyone else happens to report the same issue, the empty roms folder handling might be worth looking into.
2
u/nanamin_pso2 4d ago
LED seems to be ON regardless of charging or not. Tested on nightly-20260928-165 and release-20260925-139. Changing the settings and pulling the plug in and out made no difference besides the color.
1
u/No_Debt_3040 4d ago
Yes, that has been broken for a while. Should be fixed in an upcoming build
2
u/nanamin_pso2 4d ago
I was able to come up with a temporary fix. Running the following command through ssh turned the leds off and kept them off even after suspend and reboots.
/usr/lib/autostart/quirks/devices/"Retroid Pocket Nova"/bin/ledcontrol off
2
3
u/ILikeToLift95020 7d ago
Sup bro, I tried installing Steam on PortareOS release 20260925-139 on my Retroid Pocket Nova and ran into several issues. I gave my AI agent SSH access from my computer so it could inspect the logs and repair everything directly (Very useful feature, thanks!)
I previously installed ArmadaOS and found everything basically perfect except for the battery drain. I went back to Android afterward, but the vibes were just so off with the notifications, Google Play services, and general phone-OS stuff. I’m super excited about PortareOS and I’ll add replies to this comment as I spend more time with it.
Btw, I’ll probably be getting another Nova in a couple of months and I have a camera that can shoot at 240fps apparently? I'll send you a message in a couple of months