Is there a list of compatible MIPI displays?

After days of googling without any success:

I have seen posts on the forums for various Banana Pi models showing how the developers made such and such screen work on a particular Banana Pi model.

Is there a list of compatible screens?

Maybe I’m too much of a n00b and pretty much any screen fits and works. It’s just that I can’t find any.

My particular requirement 1: 4,5 - 6,0 inch resolution as high as possible

My particular requirement 2: 7,0 - 8,5 inch at least 1024x600, full HD preferred

For starters I’m not too picky, I’ll take anything that works, I’d just like to know what works in the first place.

I’m also not emotionally attached to this particular model, so if there’s more choice elsewhere, please point me to it.

this one is HDMI interface

this one is 7.0 LCD support MIPI and LVDS

we also have 10.1 mipi ,and test success on BPI-M64

?? Just two displays ?? Neither matching requirements too.

What about all those mipi FPC displays I see on AliExpress? I know the connector is physically incompatible, but is it also electrically incompatible?

How you want to communicate with the display, over MIPI DSI connector on the board or via HDMI connector?

For the first you might want to check the pinout on the DSI matching see

Each panel is usually controlled by a bridge, so you actually not controlling the display directly but communicate with the bridge and as such need to have a driver for this particular IC. That is why you can’t just plug any screen onyour board. For example the Bananapi S070WV20-CT16 with 800x480, 4-lane MIPI-DSI panel uses an ICN6211 MIPI-DSI to RGB bridge, which hase to be either compiled into the kernel or be available as loadable module. So if you are looking for a particular screen you foremost want to check the driver chip and if there is a driver in your kernel. Last but not least your display resolution and refresh rate needs to be supported, as it either stay black/white or only use a part of your screen.

I just fear you may have to compile them yourself and if you look for drivers you should find them under drivers/video/sunxi.

If you want to go over HDMI instead you could use a MIPI/HDMI adapter like shown here:

In the later case you can most likely just use the generic HDMI driver. The only limiting factor then would be if the display resolutionand refresh rate is supported. Unfortunatley a bunch of common, particular small display resolutions like 320x240 aren’t support I think, but max I guess is 1920x1080 using one of the 1080p settings.


Thanks @sisyphos. This was a very informative post. So, if I understand you correctly, I need to match two things:

  1. Find a display which has a connector fitting the BananaPi in question. I also need to make sure the display itself has a resolution the BPi supports.
  2. I need to find the drivers for its MIPI bridge, whichever that is.

Is that about right?

Well, there are some limitating factors from the board itself like that a resolution of 1024x768 in 256 colors already takes about 800k, and 1920x1080 takes about 2GB of memory and the board itself only has 2GB (unless we talk about static images). Additional higher resolution panels need usually more data lanes to transfer this amount of image data and the Bpi-M64 has max 4. Last but not least painting this data with a certain refresh rate ask for a very high operation frequency to process and deliver the data. So while there are reports of people to output 4k via HDMI on raspberry pi, they usually then had a refresh rate of only 15Hz.

Apart from that the board itself isn’t necessarily the limiting factor but the software and drivers are.

If you are able to run one of the more recent OS like it is available from Android or Armbian, then you have a good chance this version already support more display drivers and higher resolutions out of the box. Also the Armbian community may be able to help you more on the software side to get a particular screen up and running.

Sadly for me, my board doesn’t like this latest Armbian and crashes with kernel panic, but it might be related to my particular board revision. So I currently attempt to recompile the Debian 9.5 image and hopefully will be able to add some of the currently disabled drivers and modules. But this is an entirely different topic.

That isn’t meant to discourage you but to say that there is no one trick poney answer as it might depend on your willingness to tinker with software and board and which is why I asked for the OS you are or intend to use.

I would suggest, try if you can get Armbian running then you should already be able to load some driver modules at runtime without needing a recompile.

Actually looking through a bunch of available MIPI displays, I think the biggest issue with MIPI DSI is, that the communication between board and display is specified, but the connector is not.

To illustrate the problems with MIPI take a look at the 40 pin DSI connector on the board and the 40 pin connection of an example display 5" 720×1280 IPS LCD - WF50DTYA3MNN0

While it is a MIPI display, you can’t just connect the flat cable as the the connections do not match. Another display 8.8" 480x1920 IPS TFT LCD - WF88BTYA8MNN0 once again has a different pin layout. So the chance to find a pin compatible screen, or one where you directly find the HDMI bridge is difficult.

So either you directly look for a combo like 2K LCD display with HDMI to MIPI controller board or you look up some controller here Prisma MIPI-HDMI Controller qnd try to find the display and controller in on a china vendor.

Then just run it as a regular HDMI output of the BPI-M64.

Agree: this is exactly why I started this topic. The displays, even though specifying MIPI, they had different connectors (more / less pins, the connector was flat cable or somechip-like thingy).

THEN it’s the resolutions, timings, etc. Nothing ever seems to match. And converter boards also don’t seem to be “standard” among all these different connectors.

The easiest thing really seems to be HDMI to display combos, but that thing boosts the pricing from 25 EUR to 60 - 100 EUR. While for one prototype that isn’t a problem, any quantity is going to feel it badly.

Thank you for your in-depth analysis and explanation. It is most educational.

The keywords MIPI and DSI are a trap, and I must admit that I fell for it as well in the past.

The DSI (Display Serial Interface) is a specification from the MIPI (Mobile Industry Processor Interface) that soley describe that for communication between controller and display a serial bus is used, the electrical specifications and how the communication protocol (package size, checksums, error correction, …) works.

Unfortunatley it does not include a connector definition, nor does it give recommendations about the order of pins. As far as I understand one is not even required to use those FFC (Flexible flat cable) connectors. Mainly because different sized displays can use different amount of DSI channels. So every display producer is free to choose the pin layout and so they do. Essentially a simple 20-30pin connector for LVDS/RGB on the board would have been probably more usefull.

If you do not want to use the HDMI connector and you need higher resolution, you could try to get hands on an interface bridge like DSI to DPI(RGB) or DSI to LVDS. Pairing this then for example with parallel RGB or serial LVDS screens instead. But it requires you to build your own specific bridge board/hat/friend.

However, for the driver you would need to try to integrate this kernel patch for the TC358764, to get support for the DSI to LVDS bridge. Which should show up in the kernel configuration next to NXP and Parade eDP/LVDS bridge.

If you can live with lower resolutions (max ~800x480) you can also try to go the SPI route. This is what I am currently follow as I only need 480x320. Those screens are controlled via the GPIO pins for serial SPI/I2C. I saw some advertisements for rather expensive1024x600 screens, but not sure they work, as the pictures usually show them with an HDMI connection.

1 Like

For an adapter board have a look here: