Ultra wide monitor* for a Pi

(*or rather ultra tall as I found out)

Making a 1920×480 screen work on the Raspberry Pi

UPDATE – see this post for details on a 3D printable case for this screen.

I found this apparent ultrawide monitor 1920×480 on AliExpress and I thought it would be interesting to use it for an upgrade to the network monitor that I posted earlier. if you are interested, you can get the screen here, but do read on first.

Once the screen and controller arrived I went to try it out on a PC before trying with the Pi. power was easy to connect as I have plenty of standard Micro USB power leads and adapters. HDMI however was another mater as although it is shown and described as HDMI, it is in fact mini HDMI. Luckily I had an adapter and was able to connect it up.

Once connected the PC detected it and automatically extended my desktop to include it. This was where I found out the screen detects and works as 480 wide and 1920 high making this the ultra tall and not ultra wide screen I was expecting. in windows you can easily rotate a screen so this was not an issue but did catch me out.

Next step connect up the Pi in place of the PC and see what happens.
Screen flashed briefly on startup and the Pi LEDs come on, but nothing on the display.

Luckily I was using an existing Pi that I had already set up and enabled SSH on. If you are using a new Pi then best set it up using a normal monitor to allow you to enable SSH before configuring.

Use a suitable remote terminal tool and connect to the Pi from your main computer.

I use Putty for remote access, and you can get that here.

To find out what the screen details where, I ran the following command which gives the output from the screen listing its modes along with other information from the Pi

tvservice -d edid.dat; /opt/vc/bin/edidparser edid.dat

At the top of this output was the key information needed:

HDMI:EDID found monitor range descriptor tag 0xfd
HDMI:EDID monitor range offsets: V min=0, V max=0, H min=0, H max=0
HDMI:EDID monitor range: vertical is 48-62 Hz, horizontal is 30-70 kHz, max pixel clock is 150 MHz
HDMI:EDID monitor range does not support GTF
HDMI:EDID found monitor name descriptor tag 0xfc
HDMI:EDID monitor name is 13728626231
HDMI:EDID failed to find a matching detail format for 480x1920p hfp:30 hs:30 hbp:30 vfp:6 vs:6 vbp:6 pixel clock:66 MHz
HDMI:EDID calculated refresh rate is 60 Hz

In particular this shows the 480×1920 that matches what we were seeing from the PC.

I could now use this information to force the setting on the Pi to this.

To do that edit the file /boot/config.txt using nano or whichever editor you prefer. But do remember to use sudo as this is a system file and will need the access. Add/edit the settings to include:

hdmi_timings=480 0 30 30 30 1920 0 6 6 6 0 0 0 60 0 66000000 8
hdmi_group=2
hdmi_mode=87
display_rotate=3
hdmi_force_mode=1

UPDATE, I was seeing some flickering once a minute and this seems to be caused by the clock rate not being quite right. On the PC I see it was happier set to 59Hz so I have changed the HDMI timings to:

hdmi_timings=480 0 30 30 30 1920 0 6 6 6 0 0 0 59 0 55000000 8

This may look like a lot of random numbers but most of them come from the EDID data above. If you want to look up the individual elements, take a look a this page.

Note I also used the rotate setting to turn the screen by 270 degrees as I do want it to be in landscape mode.

This worked to an extent as I had display on screen but it was not using all the width and seemed to be limited to 1280 wide out of the 1920 the screen allowed.

I tried various options of overscan and the related drive options, and although I could make the screen smaller, I could not extend it wider. Note if you do not rotate the issue still existed but was top and bottom that was unusable.

Eventually I found the issue was relating to the frame buffer and adding the following lines to the config.txt file allowed a full screen use.

framebuffer_width=1920
framebuffer_height=480
max_framebuffer_width=1920
max_framebuffer_height=1920

Note that both the maximum width and height need to be set to 1920 for this to work.

I also added the line

max_framebuffers=1

I am not sure if this is needed but I have left it for now.

With all this done, you can reboot and you should see the screen come to life, either in a very wide console or wide GUI depending on your Pi’s configuration.

GUI
Console

As you can probably see the Pi is held on the back with masking tape at the moment, but I am working on a 3D printed case to fit the screen and I will update this post when I get it finished.

Follow Me

Get new content delivered directly to your inbox.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: