16

I want to build a mini multimedia system based on the raspberry pi B+, which has 2 display screens:

  1. The main screen (like a 42" LED TV), which plays the main video in Full HD.
    • HDMI
    • RCA/AV/Composite
  2. The control touch screen (like a 3~8" TFT/LCD/...), which displays the list of available videos, details of the currently playing video on the main screen, and some options and graphic icons to choose which video you want to be played in the main TV screen.

    • HDMI
    • RCA/AV/Composite
    • USB
    • GPIO (Parallel or Serial)
    • DSI
    • . . . .

    I searched a lot on this over several different forums; it was often noted that once the HDMI is plugged in, the RCA switches off, or vice versa (It it true?). Assuming this to be correct, then the only protocol options for the control screen are USB, GPIO, and DSI.

Now My questions are as follows:

  1. Is it possible to have 2 different display contents using only 1 raspberry pi B+?
  2. If yes, which protocol is best for the control touch screen? (HDMI / RCA / USB / GPIO / DSI / ...).

    And how should I handle these simultaneous display contents?

  3. If no, what do you suggest me to do?

    Are there any other options than using 2 raspberry pi B+ boards?

Thanks a lot for your time and help. It is highly appreciated.

  • 2
    As you've deduced, if you attach the second screen to something other than the HDMI or RCA, you should be able to use both. This is confirmed by raspberrypi.org using an add-on VGA adapter for the 40 pin + models. – goldilocks Jan 21 '15 at 15:35
  • Thanks @goldilocks for your comment. I saw about the Gert VGA Adapter, and related stuff. But my main concern is this: How can I handle these 2 screens to display different contents? Where should I start? Sorry to ask simple questions, but I'm completely new to pi and linux! – Omid1989 Jan 21 '15 at 15:42
  • 2
    You won't be able to start until you've made a decision and actually have the two screens. After that it should be pretty simple, but any questions about it are general linux ones and belong on the Unix & Linux Exchange. If you search around for "linux X dual monitors" you'll find stuff. By default what will probably happen is you'll get the same thing in both screens, but X can be configured to treat them differently. They may or may not have individual framebuffers (which may or may not matter, depending on what you want to do). – goldilocks Jan 21 '15 at 15:55
  • Thanks again @goldilocks for your helpful comment. Would you please give a brief description of what "framebuffer" and "X" are? I've already searched about them, but just got confused! – Omid1989 Jan 21 '15 at 15:58
  • 2
    Wikipedia usually does a decent job with this kind of stuff. X, more properly the Xorg server is the base layer of the normal GUI desktop (lxde runs on top of that). The framebuffer can be used to do graphical things outside of X (e.g. on the pi, omxplayer uses it). If you just want a normal dual headed desktop you don't need to worry about that. – goldilocks Jan 21 '15 at 16:04
7

The Raspberry Pi Foundation claims unambiguously that a VGA adapter on the GPIO header "means you can use it as a secondary monitor alongside HDMI" (from here). You should certainly be able to do that via USB; for evidence of the the pi running multi-headed, see comments below. The exception, of course, is trying to use the HDMI and the RCA video simultaneously. I would guess this limitation has to do with the GPU only being able to handle one output. That USB video can't use the GPU is also an assumption but one I'm pretty sure of; the piTFT and other GPIO based touchscreens can't use it directly either. This is actually good if you want dual heads, because it means there should be two completely separate video systems and linux takes it from there.

If you run two displays under X, they will probably be mirrored by default, but other arrangements can be configured easily. I am not sure about the possibility of running X on one monitor and console framebuffer on the other, or of running two framebuffers. Although the latter is possible it may not be applicable to all setups.

  • Thanks @goldilocks for your answer. Actually, I already found the answer to my question on the raspberry Pi's official forum. Someone has done it before, even in 3 monitors, by first editing the kernel, and then creating 3 framebuffers. More info can be found here: raspberrypi.org/forums/viewtopic.php?p=661085#p661085 – Omid1989 Jan 23 '15 at 20:21
  • 1
    Thank you -- I might be able to use that to confirm some of my other assumptions above. I added this partially because someone just asked a question similar to this one which I've redirected here, since by the S.E. philosophy we don't want 15 different Q&A threads about more or less the same thing ("Can I run multiple displays?"). You can also answer your own question in detail if you like / when you get this working. – goldilocks Jan 23 '15 at 20:27
  • Although I read that topic in raspberry pi's official forum, I couldn't understand the answer fully, because I'm not very much familiar with terms like kernel, framebuffer, etc. So I would be thankful if you summarize that answer and post a step-by-step tutorial here; so that I can choose it as the best answer here. Thanks a billion for your time and help @goldilocks . I do really appreciate it. – Omid1989 Jan 23 '15 at 20:36
  • @goldilocks And how can I switch from lcd to hdmi screen (not mandatory to run same time)? I asked a question here. – Ionică Bizău Aug 13 '15 at 6:15
  • Dear @goldilocks, now that the RaspberryPi foundation has finally released its official screen, maybe we can arrange a better answer to this popular question. It might well help lots of enthusiasts. I look forward to hearing from you. – Omid1989 Nov 5 '15 at 11:34
0

OP did not provide enough information about the software being used to select videos, etc. So I suspect the desire is to have X running on two screens at once, with one controlling the other. In which case the answer is no, as far as I can determine

For other multi-screen functions, here is a quick rundown of what I have done:

1) On the first Rpi with the 3.5 inch touch screen screen I can hook up an HDMI screen and use it as a character-based terminal by pressing Ctrl-Alt-F2. The 3.5" screen freezes and you can do all the commands you want on the HDMI using the same keyboard and mouse. To get back to the 3.5" screen you press Ctrl-Alt-F7

2) On my other Rpi I have it boot to the HDMI in X. Then by using either PuTTY (character) or Remote Desktop (Graphic) or TightVNC (Graphic), I can have a second screen up and running that is invisible on the HDMI. Normal keyboard and mouse keep working on the HDMI. I use Bluetooth to get sound since my monitor is screen-only.

The PC's keyboard and mouse work in the remote access program. By far my favorite is Remote Desktop, but TightVNC makes file transfers easier.
In all cases, you will most likely want to also have FileZilla running for transfers, especially if your control PC is dual monitor itself.

More related to the OP's question, the only way I've found to control the boot HDMI from the remote access programs is through the camera functions. But there is a caveat.

HERE IS THE RUB: Whenever you use the camera functions, like raspivid, raspistill, etc., it ALWAYS displays on the HDMI output. And it isn't even polite enough to go full-screen which means you can still see your X desktop behind it. It seems to fit the display top-to-bottom, then when the camera functions complete the HDMI will either go back to the desktop or to black if you have exceeded the normal inactivity time that blanks the screen.

3) I have also booted my other Rpi to a 60 inch screen to show some tricks to the family and simply accepted the fact that they could see me invoke the functions. I just keep a small terminal window open (in the center of the screen so videos will overlay on top of it) to where I have some BASH scripts to issue whatever commands I need, (like to show them my latest timelapse or the critters the NoIR camera motion sensor caught in the yard at night) and the command part went over their heads. They just watched the videos.

If you are using a graphical interface on your music-selection program, so much the better, because then they would get to see what you are doing. Then they can ooh and ahhh about how you can make such a tiny computer do all that, genius that you are.

But for a bottom line in relation to the question, I sense the OP is thinking more along the lines of a business presentation environment. I submit that in that case there is no real substitute for a small notebook PC that can handle dual displays.

0

Just found a short video that shows how this guy was able to support two monitors by changing things in the Kernel. I can't comment on this other than to simply list the link:

https://www.youtube.com/watch?v=dTcU5YSq-Ww

  • Welcome to Raspberry Pi! Whilst this may theoretically answer the question, it would be preferable to include the essential parts of the answer here, and provide the link for reference. – Steve Robillard Sep 16 '16 at 23:54
  • Understood. It was beyond my level of expertise. Yet was pertinent to the OP. – SDsolar Sep 21 '16 at 22:36
  • Or rather have pasted this a comment on the OP's question. – Piotr Kula Dec 7 '16 at 8:36
0

There is one way but you have to do a little manual labour for that. It has been stated at the official site of the pi foundation that omxplayer is suitable for dual audio output, but you have to do it from the command line. Just type following command: omxplayer --display=5 [FILE PATHNAME]

This command will let you play videos on HDMI output with simultaneously using the touchscreen.

0

This is possible if you use the Kivy framework. You will be able code your UI in python (for the touchscreen), and then play videos independently via the HDMI output.

For a basic example of the code structure on a RPi3 with the official 7" touchscreen, go here.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.