Handheld Recalbox
-
Hello, i made it! I can get the video signal output in the TFT display. Is far from ready to use but at least it "partially" works. Using fbtft (is already in 4.0.0 beta version of recalbox) and fbcp i can get the signal from the HDMI port and use it on the TFT screen. It works in the menu, but when i try to play i game, it goes to the recalbox black screen like the game isn't using HDMI or something. I need to test much more and fix those things and i will post a tutorial.
-
Hello @pinuct @jj thanks for your help. are you look resolution configuration in recalbox.conf
# ------------ H - HERE IT IS - GLOBAL EMULATOR CONFIGURATION ------------ # ## The global value will be used for all emulators, exept if the value ## is redifined in the emulator ## Set game resolution for emulators ## select your mode from the command : tvservice -m [MODE] ## CEA 5 HDMI : 1920x1080 @ 60Hz 16:9, clock:74MHz interlaced ## CEA 4 HDMI : 1280x720 @ 60Hz 16:9, clock:74MHz progressive ## use 'default' for using the default resolution ## (string) global.videomode=CEA 4 HDMI
may be this link you help you. https://github.com/recalbox/recalbox-os/wiki/Video-configuration-detailled-(EN)
-
Hello Acris, Thanks to your help i solve it. The resolution was changing when the emulator was launched, that cuased strange behavoir. As you said, i change
global.videomode=default
for keeping the resolution the same everywhere. And now the menu and the games are in the TFT!! And now how i configure the TFT: Before doing anything o have to say that i'm using Raspberry Pi 3 model B and the lastes version of Realbox 4.0.0 beta3. Also note, that i'm learing at the same time i'm doing this, so maybe i'm using wrong terminology, or saying/doing something wrong. First you have to configure the system to use the TFT screen with fbtft, in my case i'm using the Adafruit 3.5 inches TFT screen, but i think you can use a diferent screen changing a little bit the configuration (if it's supported by fbtft). I have another tft laying around, i'll try it next week. For configure the TFT first we need to enable the SPI bus of the raspberry pi, to do that, write at the end of /boot/config.txt:
dtparam=spi=on
Also you need to add to the file /etc/modules.conf :
spi-bcm2835
Note: i don't know if anyone have this problem, but i read on the forums, and it seem that other people have the same problem. The problem is that when you try to write, you can't because the file systems is only read. To solve it use:
mount -o remount,rw / mount -o remount,rw /boot
After enabling the SPI you can reboot. After reboot you can enable the TFT by using the comand:
modprobe fbtft_device name=pitft
if the TFT screen changes from white to black (maybe with some random color pixels) means that it's working. To make it lanuch at boot you have to add to the file /etc/modules.conf :
fbtft_device
and create a file under /etc/modprobe.d/fbtft.conf with the next line of code:
options fbtft_device custom name=pitft width=320 height=480 rotate=90 speed=62000000 fps=60
And then, if you reboot and wait after the emulatorstation starts you can watch a flash in the screen. And under /dev , if you run the command ls, you must see now two fbx devices: fb0 is the framebuffer from the HDMI and fb1 the framebuffer from the TFT screen. To reproduce the HDMI output in the TFT you have to copy the fb0 to fb1, for that fbcp is used. You can't compile in recalbox, so to test it i made a dirty workaroung, i used Raspbian to compile it (it's a very small program) and then i copied the compiled file to the Recalbox image. For doing it right the fbcp program must be compiled with buildroot, but i don't know how to do it (in the future i'd like to integrate it). Then you can test if it works, executing thos file in Recalbox, it automatically copies the fb0 to fb1 and you must see the same output in the HDMI monitor, and in the TFT. To automatically launch fbcp modify the starting scripts under /etc/init.d/ . I write added it to S99Custom so fbcp is launched at the end of the init scripts. I think i'm forgeting something and there is a little bit of extra configuration to do, but i'm writing it from memory and i'm out of time. Sorry for that, next week i'll complete it. But for now i think you can reproduce it with this indications. Thanks and keep working hard!
-
Hello jj, good job you are my god! But can you explain more about the end of your tutorial from the moment you compile and what emplecement you put the compiled file and how you modify file so that it starts right away? I'm not too good is that you can send me the file as compiled ? Thank you very much for your work!!
-
Hi Cluf20, thanks. Because in recalbox there isn't compilator you can't compile the fbcp directly. It has to be compiled with/in buildroot, don't know how to yet, but there is some totorials on recalbox wiki. A dirty work around you could do is compile it in the SAME raspberry pi, but with other SO that alows you to compile it. In my case i writed an image of raspbian in my SD card and i compiled the fbcp:
sudo apt-get install cmake git clone https://github.com/tasanakorn/rpi-fbcp cd rpi-fbcp/ mkdir build cd build/ cmake .. make
This generates a fbcp file. You can copy this file to your computer, rewrite an image of recalbox in you sd, copy again the file to recalbox, and then you can use it. The compiled file probably won't work in other models of raspberry pi diferent than where it is compiled. Put the fbcp compiled file where you want but remember to use:
chmod +x fbcp
to alow the execution of the file Then for autostart the executable i followed this tutorial in the wiki. In the file S99Custom under /etc/init.d/, you must put the folowing line:
./path_to_the_fbcp_file/fbcp &
replacing path_to_the_fbcp_file with the actual path of the fbcp file. I included my compiled file in the post but you have to be sure to use the same model of raspberry pi (Raspberry Pi 3 Model B) or it won't work. I hope this helps you. In the meantime i'm working in the optimization of the process and in a tutorial for doing it.
-
OK jj what's the extension of your file? I don't see it in your post?
-
JJ, I asked the team if he could compile recalbox basic FBTFT to recalbox for projects of portable consoles . It will be integrated in a future release .
-
Hi, I can't upload the file, i don't know why. About FBTFT, it is already integrated with recalbox in the beta of the new release. The part that it's missing is the FBCP. So if the team include the FBCP compiled file in the next release it will be awesome, because then we will have al the elements necesary for a TFT screen to work with the GPIOs of the raspberry. The fbcp program is very very lightweight so i don't see any problem to include in recalbox if we ask them politely. And a lot of people will be happy (me included) to use recalbox in a portable console. Thanks.
-
Ok so we only need to add this binary to recalbox ? https://github.com/tasanakorn/rpi-fbcp
-
Hi rockaddicted, Yes, with the fbtft already in the beta, the only need is the compiled version fo fbcp, ready for being executed. It will need a litlle bit of extra configuration, but with a good tutorial everyone will be capable of doing it. Thanks!
-
Ok so I'll looking to add it to recalbox, and I'll let you make a full wiki
-
Hello hello! I followed your procedure jj and it works but after restart impossible to run again on the screen. So I hacked ... and it's work for the moment... I detected some errors in your tutorial if you write the wiki I can also watch for mistakes.
-
when I stop the pi and I restart the screen does not work anymore ... I do not understand where it may come ...
-
Yes please!!!, i will make a full wiki happily About my previous "tutorial", it have to have a lot of mistakes XD. I made it from memory and probably the steps are out of order, or worng. But don't worry, if i write the wiki i'll be sure to write the correct steps and test it. About the screen working at restarting, you have to be sure to write in the file /etc/init.d/S99Custom the line:
./path_to_your_fcbp_file/fbcp &
That makes autostart the fbcp executable. And remember if you can't save the file after you modify it, try:
mount -o remount,rw /
And the fbcp must be executable:
chmod +x /path_to_your_fcbp_file/fbcp
Thanks!
-
Yes thanks I do that! I have always the same problem. I need to restart and that's work.... i don't understand...
-
Hi @Cluf20, i'm following with my protable Recalbox project and because i need to add controls to it and the gpio joystick included in recalbox uses some pins that are already used by the TFT screen i decided to fork it and chnage a little bit. I modified the code to alow customization of the gpios used in the module, so you can choose the gpios you want. If you are interested you can check it here. I made a pull request to the repository for those people who want to use it in recalbox.
-
Hi jj, for my project I use a teensy , it allows to be more flexible on the controller . The teensy connects to usb raspberry and after programming is recognized as a Gamepad trade. After you can easily remove and rejouter buttons. IF you are interested I have the program. For the screen , is that you have not forgotten anything in the procedure for it to be recognized after cold reboot ? because each screen reboot is white again as if SPI was more active ? After I have to redo a manipulation to make it work ... search conditions I followed your procedure I remade 5 times lol. I have a doubt against the S99costum contained . In this file you that this line ? If I had my 3D printer I can print the hull !!
-
hello hello jj, I try to rewrite your procedure , do you tell me if I forget something?I try to rewrite your procedure , do you tell me if I forget something? To see where is my error from your screen that works properly ? Change video mode in recalbox.conf: global.videomode=default Enable the SPI bus of the raspberry pi, to do that, write at the end of /boot/config.txt : mount -o remount,rw / mount -o remount,rw /boot nano /boot/config.txt dtparam=spi=on Add to the file /etc/modules.conf : nano /etc/modules.conf spi-bcm2835 After enabling the SPI you can reboot. After reboot you can enable the TFT by using the comand: modprobe fbtft_device name=pitft To make it launch at boot you have to add to the file /etc/modules.conf : mount -o remount,rw / mount -o remount,rw /boot nano /etc/modules.conf fbtft_device Create a file under /etc/modprobe.d/fbtft.conf with the next line of code: nano /etc/modprobe.d/fbtft.conf options fbtft_device custom name=pitft width=320 height=480 rotate=90 speed=62000000 fps=60 Alow execution of the file fbcp: chmod +x /usr/fbcp/fbcp To automatically launch fbcp modify the starting scripts under /etc/init.d/: cd /etc/init.d/ ls cp S00Xxxxx S99custom nano S99custom /usr/fbcp/fbcp & /etc/init.d/S99custom start
-
Hello, I'm going to do a condensed guide for the Adafruit 3.5 inches TFT (I tested other screen, wsaveshare 3.5, and the procedure is a little bit different). Adafruit 3.5: 0. - Note: i don’t know if anyone have this problem, but i read on the forums, and it seem that other people have the same problem. The problem is that when you try to write, you can’t because the file systems is only read. To solve it use:
mount -o remount,rw / mount -o remount,rw /boot
1. - Add to the file /etc/modules.conf
spi-bcm2835 fbtft_device
2, - create a file under /etc/modprobe.d/fbtft.conf with the next line of code:
options fbtft_device custom name=pitft width=320 height=480 rotate=90 speed=62000000 fps=60
3. - Get FBCP, compile it, or copy it. 4. - For autostart, your /etc/init.d/S99custom must look like (is your fbcp file is under /usr/local/bin/fbcp/):
#!/bin/bash ./usr/local/bin/fbcp/fbcp & test -e "/recalbox/share/system/custom.sh" && /recalbox/share/system/custom.sh
5. - Set global.videomode=default in recalbox.conf 6. - Reboot and enjoy I hope this helps you.
-
Hello jj, I think you forget some instructions in your last post like SPI activation.