Log In  


For some time now I have been thinking about making a large 128x128 LED Display for the PICO-8 and finally I did it.

What i used for this project:

Selected pixel panel is well assembled, it is easy to arrange all Raspberry PI guts inside case, but:

  • It has a pre-installed LED matrix controller, but it is not required for this project, so this is an extra cost
  • 16 pin cables too short to daisy chain 2 matrices for use with RGB Matrix HAT
  • For now I don`t understand if its possible to draw enough power from pixel panel unit to drive Raspberry PI so I have to use a separate type-c power adapter for it

For displaying PICO-8 on LED screen i wrote simple C++ program and couple bash scripts, you can find them on github: https://github.com/jenissimo/pico8-led

If you want to make such a screen yourself - feel free to ask questions :)

14


Very cool!


hi! Beautiful project. At the moment I only bought a 64x64 matrix panel. If I wanted to buy 3 more 64x64 panels of the same type, would I just need to connect them together and buy a power supply capable of absorbing at least 15 amps?
I already have an Adafruit Bonnet, do I need more? Thank you


FYI: If you find this post and either have already built your LED Matrix PICO-8 console or you plan to soon, please note that https://github.com/jenissimo/pico8-led currently leaks memory pretty badly.

Fortunately, I was able to find and fix the problem in your code, and I submitted a pull request. It's a one-line change. Very easy to do by hand before you run make. Until/unless my change is merged in, you'll need to fix it for yourself. If you don't, and you play for a long time consecutively (e.g. while exploring lots of new carts in splore) your machine will eventually run out of memory and hard lock on you, forcing you to manually reset it, which can be unhealthy for your disk.

Here's the code you need to change: https://github.com/jenissimo/pico8-led/pull/2/commits/d6402b474f352df0ab3968e93a1e0ad6b4df33bd


@megashub Hi, unfortunately I'm not very knowledgeable about the compilation. Editing the line of that file isn't difficult but I'm not sure how to compile it. Can you explain to me after downloading the project from github and modifying the line, how can I recompile it? Thank you


don’t download from github, follow the instructions https://github.com/jenissimo/pico8-led#instructions to get the code properly, its dependencies and then run make to build


ah thx!


@megashub
Thank you very much for your fix
It`s merged into main branch now


@jen_spb Hello and thanks for the update. I got a new raspberry pi4 with 4GB Ram. Before that I already had another Raspberry pi4 also with 4GB Ram with a micro SD configured with Pico8-Led and I was able to make everything work without any slowdown or flickering. I use Adafruit Hat (with the pwm mod, therefore putting pins 4 and 18 in contact).
When I put everything on the new Raspberry, everything started already configured (having simply inserted the same micro SD), but now I don't understand why many games occasionally lag and flicker. I also did a complete update of the new raspberry pi4, but nothing changed. Did I forget to configure something?


Lag is often because the Pi is busy doing something else. For me, most commonly, it's because splore is making network calls to query/download data. There are also a few carts that scrape the BBS to help you discover/try carts. These commonly lag pretty hard on a Pi+LED matrix. Also, some carts call other cart files, and sometimes these complex cases can be more resource-intensive than your average cart when loading from disk (like Poom for example).

That said, if literally nothing changed besides the versions of software you're running, then it's hard not to focus on a possible issue introduced by one of the packages that was updated. Because you updated everything, that may make it harder to track down. What I do know is that rpi-rgb-led-matrix is very sensitive to GPIO usage conflicts, power consumption, and compute resource availability.

Specific to the flickering issue, that's usually caused by either voltage or config options like --led-slowdown-gpio. And here again, since all you did was migrate your existing and update packages, these settings should still be the same as they were before. So first place I'd check is if the voltage dial on your PSU might have been bumped or otherwise adjusted.

I'm also running a Pi4 4GB. In my case, I'm using a different HAT, but our architectures are very similar. I built mine within the last few months, so the package versions I'm running will be very similar to yours too since you recently updated. I was able to tune/configure out any flickering, and limit any lag to cart-specific shenanigans. Hopefully this means the problem is solveable for you.


@megashub But it's strange anyway, theoretically I haven't touched anything, apart from having moved the micro SD from one Raspberry to another, the rest of the configurations have remained the same as on the old Raspberry (since the Micro SD is the same). Then yes on the new Raspberry after the slowdown problems, I tried to update the OS with apt-get update/upgrade/dist-upgrade and it also updated the Raspberry firmware. The other thing I did is also update the github build of pico8-led with the latest update fixed by @jen_spb
Did you by any chance change the last startup line slightly in the "run_led.sh" file? Yes, since I have 4 Matrix LEDs each measuring 64x64 I changed the parameters slightly. But it's absurd that with the old Raspberry everything worked very well and having changed Raspberry with the same hardware and same settings something is wrong.


@megashub
hi, so today I tried to do some more tests. In the meantime I checked the voltages on the power supply and the 5V are all there. Today, however, I wanted to try again to move everything to the old Raspberry Pi4 and I confirm once again that everything works very well, without any flickering or slowdowns. In fact I put the "--led-show-refresh" parameter to control the Hz in real time. With my old raspberry pi4 and after launching "./run_splore", the Hz are always fixed at around 90Hz and everything works correctly , without slowdowns or anything else, even with the game started (I just do the first stage to check that everything is OK).
However, when I go to put everything back on my new Raspberry pi4 small problems begin. As soon as the Pico8-LED is started, the refresh starts from 50Hz every now and then and then stabilizes at around 85/88/90. But already in the menu every now and then there is some dimming of the LEDs. Then when I start the same game I had tried on the old Raspberry Pi4, every now and then in addition to the flickering there are also some slowdowns and in fact I notice it by taking a look at the Hz which drops from around 90 to 50Hz for a few seconds and then returns to 90. So at this point I don't understand why it behaves like this, given that the Raspberries are practically the same model. The only doubt I have is the installed EEPROM. In fact when I launch the command from Putty "sudo rpi-eeprom-update" this is what I see:

[OLD RASPBERRY PI4]
BOOTLOADER: up to date
CURRENT: gio 11 mag 2023, 06:26:03, UTC (1683786363)
LATEST: gio 11 mag 2023, 06:26:03, UTC (1683786363)
RELEASE: latest (/lib/firmware/raspberrypi/bootloader/latest)
Use raspi-config to change the release.

VL805_FW: Using bootloader EEPROM
VL805: up to date
CURRENT: 000138c0
LATEST: 000138c0

[NEW RASPBERRY PI4]
BOOTLOADER: up to date
CURRENT: gio 11 mag 2023, 06:26:03, UTC (1683786363)
LATEST: gio 11 mag 2023, 06:26:03, UTC (1683786363)
RELEASE: latest (/lib/firmware/raspberrypi/bootloader/latest)
Use raspi-config to change the release.

VL805_FW: Dedicated VL805 EEPROM
VL805: up to date
CURRENT: 000138c0
LATEST: 000138c0

As you can see on the "VL805_FW=" line there are small string differences. I tried looking online, but it didn't help me understand what they mean. Do you think this could have anything to do with it?


Found this forum thread:
https://raspberrypi.stackexchange.com/questions/140846/is-it-safe-to-update-eeprom-to-latest-using-rpi-eeprom-update

"The VL805 is the Pi 4's USB controller, and its firmware is stored in EEPROM separately from the bootloader firmware"

So, unless your rig uses USB devices, I don't think this is a factor. Could be wrong though. I'm certainly no Pi expert.


@megashub Thanks, but perhaps I believe that at this point that difference cannot impact performance. For example, if you do a "sudo rpi-eeprom-update" what do you find on that string?
I guess I give up, I just don't understand why it works on one Raspberry and not on the other. At this point I reuse the old raspberry where everything used to go and use it for this purpose.


Hi! Fist of all thinks for the code!

I was able to make it work with a Raspberry Pi 3b+ and a bad passive chinese hub75 adapter (wich I made some changes and had to test all pins because it had no documentation). It works really well and that push me to buy a copy of Pico-8.

I have a few questions about your code @jen_spb:

  • How do I make the mouse and keyboard work inside the virtual screen of xvfb ? Can it be configured on xvfb or on PICO-8?
  • Can I use xserver-screen to open any software inside de virtual screen and show it in the matrix?

The adapter:
https://pt.aliexpress.com/item/1005005715744615.html?spm=a2g0o.order_list.order_list_main.28.1ca0caa4hDhanY&gatewayAdapt=glo2bra

The Matrix:
https://pt.aliexpress.com/item/1005001958513042.html?spm=a2g0o.order_list.order_list_main.34.1ca0caa4hDhanY&gatewayAdapt=glo2bra



[Please log in to post a comment]