top of page

Touch display on Raspberry Pi with a single USB-C cable

Problem


Raspberry Pi only exposes HDMI display ports.


That means every time I want to connect a monitor to the Pi I have to power my monitor using a separate power adapter.


I use portable monitors a lot and wished I could just use one USB-C cable to both power the monitor and send video signals.


One of my portable displays also has touch support which works when I connect it to my Macbook.


I would like to also get touch display working with a single USB-C cable setup. This would allow me to put my Home Assistant dashboard on it and control everything with touch.


Solution


A super compact adapter board that connects to Raspberry Pi (and possibly other SBCs) and exposed a USB-C out connector; which would carry video/audio/power/touch(USB 2.0 data).


This is often referred to as full-featured USB-C or full-function USB-C.


The image below shows the high level set-up

ree

How?


The video over USB-C cable is performed through something called USB-C DP Alt Mode.


Basically the monitor negotiates with the other device (host) to see if it supports DP Alt Mode over control lines (C1, C2). If the host supports this, it reconfigures the pin-out assignment of the USB connector to use them as DisplayPort data lines.


When in DP Alt mode, USB data can be only transferred via D+/D- lines with USB 2.0 standard.


There are other standards like Thunderbolt that can send data at higher speeds but I am not getting into it here.


The downstream and upstream devices can also negotiate power roles via control lines (C1/C2) to decide who is going to provide to who, at what voltage, etc.


Implementation


As you can imagine sending HDMI video signals over USB-C is not a trivial task. This task cannot be done by a passive converter and you need a dedicated chip that can perform conversion at very high speed.


Note that HDMI 2.0 has a data transfer rate of 18 Gigabits per second (Gbps).


Thankfully I have found an IC that can do the job. It is LT6711A by Lontium Semiconductors.


LT6711 is an HDMI2.0 to DP1.2 with Type-C chip, supporting 4Kx2K@60Hz, and is a re-driver IC that enhances signal quality.


Proof of Concept


I was able to get this set-up working with a dev board and some tricks to ensure I am not smoking cr*ck.


Here's a 10 min video running you through the setup and sharing further details on the design plan:


Demo or implementation plan

MelonHD Module


I found a module called MelonHD that is designed by indie hacker Mackie KS which uses the same LT6711 IC. I am planning to use that in my first revision of this design.


MelonHD module designed by Mackie KS
MelonHD module designed by Mackie KS

There are some potential challenges in using this module which may cause some issues:


  1. The module is designed to negotiate to receive power from upstream monitor. I am trying to power the monitor from the downstream device (the sideboard).

  2. It does not expose the HDMI DDC connections which is used to communicate extended display identification data (EDID).


Essentially, I won't know for sure if this module works for my use case until I build the first rev but it will definitely accelerate the prototyping process for me.


Adaptor Board (Alpha Design)


The image below shows the plan to build the first revision of this design.


I have done the some floor planning but I need to finish the routing and send the design to get the PCB made. One I receive the PCB, I will do a hand assembly.


ree

I designed the current generation of the sideboard for an open source project I am about to release called Ubo Pod. You can learn more about it here.


For more information about this sideboard design and design files checkout my post here.


The video below shows the 3D model of the USB-C sideboard PCB rev 1.


3D view of the sideboard that performs the HDMI to USB-C conversion

Limitations


The available power to the Pi and monitor are 27 watts total when using Pi 5 adaptor and 17 watts with Pi 4 adapter. The portable monitors usually draw around 5 watts.


This should be okay if your system is not drawing too much power by itself. Also larger monitors may need more power, so in general you have to be aware of the power budget.


The design can be further improved to use USB-PD power-in.


It is also possible to get the board powered up with USB-PD from upstream monitor. In this setup, Raspberry Pi connect with only one cable to the monitor and also gets the power from the monitor. The monitor connects to both Pi and the USB-PD Adaptor.


This is shown in the image below:


Monitor powering Raspberry Pi
Monitor powering Raspberry Pi

I can also consider this design but it adds more complications that must be thought through.


This design will also depend on the monitor design and if it is capable of negotiating power with a downstream device.


This could be a different design...? Perhaps you can let me know if you'd like the design to support this via this survey link.


Taking this further


It would be also possible to convert both Raspberry Pi HDMI outputs to DP Alt Mode to drive two touch displays simultaneously, each with a single cable.


This would be pushing the power profile as both displays would be drawing 10 watts combined (5 watts each) and Pi is left with 17 watts out of 27 watts maximum deliverable power of Pi 5 adapter.


ree

Survey


Hearing your thoughts on how you'd imagine using this in your setup would be immensely valuable to me. So I made a survey link and I would greatly appreciate it if you could answer some of the questions there.



It will probably take 1-2 minutes to do the design survey.


About Ubo Project


Ubo Project aims to build a class of open source devices that are modular, customizable, and upgradable. I am using this methodology to build the first open source manifestation called Ubo Pod. If you would like to support this project, please consider backing my upcoming Kickstarter campaign here.


 
 
 
bottom of page