Choosing the best Raspberry Pi 5 touchscreen starts with one fork. You either buy a DSI ribbon panel that the Pi powers and detects on its own, or an HDMI panel that sends touch over a separate USB cable. Both work on Raspberry Pi OS. They fail in different ways once the screen is bolted to a wall and running a Home Assistant dashboard all day, and that’s what this guide sorts out.
If you are building a wall panel or a kiosk, we’d buy the official Touch Display 2 from an approved reseller and rotate it to landscape. We shortlisted six products, checked every spec against the maker’s own page and Raspberry Pi’s documentation, and ran the software half (labwc, Chromium in kiosk mode, rotation, touch mapping and the on-screen keyboard) on a Debian 13 VM, the base Raspberry Pi OS is built on, against a live Home Assistant instance. That run turned up one trap: in full kiosk mode the on-screen keyboard never appeared. Prices and stock below were checked in October 2026.
The verdicts
Every screen here works with your Pi 5, but they don’t suit the same job. Here’s where each one wins for you:
- Best overall: Raspberry Pi Touch Display 2 (7-inch). One ribbon, no extra power supply, detected with no config. The list price is $60, but the Amazon listing is a third-party seller at about $105 to $110.
- Best big DSI panel: Waveshare 10.1inch DSI LCD (C). 1280×800 in landscape with optical bonding, about $95 to $105.
- Best plug-and-play HDMI panel: Waveshare 7inch HDMI LCD (H) with case. Driver-free USB touch and a tilt stand, about $65 to $72.
- Cheapest official screen: Raspberry Pi Touch Display 2 (5-inch) at a $40 list price from approved resellers. Good for a status panel, too small for a full dashboard.
- Best large screen: ASUS ZenScreen Touch MB16AMTR. A 15.6-inch 1080p touch monitor with a battery and a tripod socket, about $320 to $335.
- Best enclosure: SmartiPi Touch Pro 3 for the 7-inch Touch Display 2, about $43 to $46. It is a case and stand, not a screen.
If your dashboard needs to be bigger than 10 inches and fixed to a wall, a cheap Android tablet often beats all of these on cost and finish, and our tablet guide for Home Assistant dashboards covers that route. A Pi 5 panel earns its place when you want a real Linux box behind the glass, with no app store, no battery to swell and nothing that phones home.
How we picked and tested
We did not have these six panels on a bench, so nothing below claims a measured brightness or a touch latency. What we did instead, in this order:
- Specs from the maker: resolution, touch points, interface, power and the Pi 5 cable came from Raspberry Pi, Waveshare, ASUS and Smarticase product pages and wikis.
- Listings from Amazon’s catalog API: each link points at the exact model, it was in stock on the day we checked, and the price band is what Amazon charged that day.
- The software in a lab: labwc, Chromium kiosk mode, output rotation, touch-to-output mapping and an on-screen keyboard, run against a live Home Assistant container. The Raspberry Pi OS package versions came from the image’s own package list.
We left out the dozens of no-name 7-inch and 10-inch HDMI panels whose maker has no product page we could check, and two cheaper 15.6-inch touch monitors for the same reason. A panel we cannot trace to a spec sheet cannot carry a claim on this page.
Raspberry Pi 5 touchscreens compared
The columns are the ones that change what you buy: how the panel connects to your Pi, whether you need a separate power supply, and how it sits on your wall.
| Screen | Size and resolution | Video + touch | Touch points | Power | Price band |
|---|---|---|---|---|---|
| Touch Display 2 (7-inch) | 7 in, 720×1280 portrait | DSI ribbon | 5 | From Pi GPIO | $60 list, about $105-$110 on Amazon |
| Waveshare 10.1inch DSI LCD (C) | 10.1 in, 1280×800 IPS | DSI ribbon | 10 | 5V header from Pi (0.88 A or more) | About $95-$105 |
| Waveshare 7inch HDMI LCD (H) | 7 in, 1024×600 IPS | HDMI + USB | 5 on Pi OS | USB, 5V/2A DC if it flickers | About $65-$72 |
| Touch Display 2 (5-inch) | 5 in, 720×1280 portrait | DSI ribbon | 5 | From Pi GPIO | $40 list (resellers) |
| ASUS ZenScreen Touch MB16AMTR | 15.6 in, 1920×1080 IPS | Mini HDMI + USB-C | 10 | Battery or USB-C | About $320-$335 |
| SmartiPi Touch Pro 3 | Case for the 7-inch TD2 | n/a | n/a | n/a | About $43-$46 |
Read the table for two things before you pick. The official panels are portrait natively, so a landscape Home Assistant dashboard always means a rotation step, which the kiosk section below shows on labwc. And only the DSI panels run off the Pi alone. Every HDMI panel adds a USB cable for touch, and some add a power brick, which matters more than it sounds when the cables have to disappear into a wall box.
1. Raspberry Pi Touch Display 2 (7-inch)
Touch Display 2 wins because you have nothing to set up. A Pi 5 detects it at boot over the DSI ribbon, it takes power from the GPIO header, and the box includes both the 22-way to 15-way ribbon a Pi 5 needs and the power lead.

The panel is 720×1280 with 5-finger capacitive touch and an anti-glare finish, and Raspberry Pi says it will stay in production until at least January 2030. That date matters for a wall install: if the glass cracks in three years, you can buy the same panel and reuse the same cutout. A Pi B+ or later auto-detects it, so the dtoverlay=vc4-kms-dsi-ili9881-7inch line in config.txt is only needed on a Compute Module or when you want to tune touch with parameters such as invx, invy or swapxy.
- Buy it if: you want a 7-inch wall or desk panel with one cable and no power brick.
- Skip it if: you need more than 7 inches, or you’d rather not rotate a portrait panel for a landscape dashboard.
- Watch the price: the Amazon seller charged well over the $60 list price when we checked, so the approved resellers (PiShop, CanaKit, Vilros) are the better buy when they have stock.
A larger 10-inch Touch Display 2 (1200×1920, 10-finger touch, $80 list) now exists for the Pi 5 and CM5 only, with a 22-way to 22-way ribbon. We found no Amazon listing from a trusted seller, so it’s a reseller-only buy for now. It is the one to wait for if you want the official route at tablet size. Pick the 7-inch model if you want the panel the rest of this guide’s kiosk setup was written against.
2. Waveshare 10.1inch DSI LCD (C)
The Waveshare 10.1-inch is where a DSI panel gets big enough for a full dashboard. It is natively landscape at 1280×800, so a Home Assistant grid fits without the rotation step the official panels need, and it has 10-point touch with optical bonding behind 6H glass.
The catch is that it is not auto-detected like the official panel. On a Pi 5 you connect the 12 cm DSI cable to the 22-pin DSI1 port, feed 5V from the Pi through the 4-pin header, and add Waveshare’s overlay to /boot/firmware/config.txt:
dtoverlay=vc4-kms-v3d
dtoverlay=vc4-kms-dsi-waveshare-panel,10_1_inch
Append ,dsi0 to the second line if the ribbon goes into the other connector. Waveshare’s wiki also warns that the panel may not start if its supply delivers less than 0.88 A, so a weak Pi power supply shows up here first. Use the official 27 W Pi 5 supply and the problem does not appear.
- Buy it if: you want a 10-inch landscape panel and a single ribbon to the Pi.
- Skip it if: you don’t want to depend on a vendor overlay. Waveshare lists no brightness figure either, so a sunny room is a gamble.
Amazon has it at about $95 to $105, sold by Waveshare (check the live price). Waveshare’s own store was about $84 when we looked, before shipping.
3. Waveshare 7inch HDMI LCD (H) with case
Buy this panel if you might move it between a Pi, a mini PC and a laptop. It’s a 1024×600 IPS screen on HDMI, touch arrives as a standard USB device with no driver, and the case version adds 6H glass and a stand that tilts to 30 or 50 degrees.
The box includes an HDMI to micro-HDMI adapter for the Pi 5, an HDMI cable and a USB cable for touch, and the panel has an OSD menu and a 3.5 mm audio jack. That makes three cables to hide. Waveshare’s wiki says a USB port that cannot supply enough current makes the screen flicker, and Waveshare’s answer is a separate 5V/2A supply into the DC jack. Budget for that brick on a permanent install.
- Buy it if: you want a desk kiosk or a test screen that works on any machine with HDMI.
- Skip it if: it’s going on a wall. The cable count and the 1024×600 resolution both work against a clean dashboard.
It sells for about $65 to $72 on Amazon from Waveshare; check the current price. HDMI touch panels also suit a second job: a Pi running an IP-KVM build can use one as a local console.
4. Raspberry Pi Touch Display 2 (5-inch)
At a $40 list price, the 5-inch Touch Display 2 is your cheapest way into the official ecosystem. It shares the 7-inch model’s 720×1280 resolution, 5-finger touch, cables and GPIO power, just on a 62 x 110 mm active area.

You get the same pixels on smaller glass, so the image is sharp, but your Home Assistant cards get cramped fast at this size. We’d use it for a single-purpose panel (a thermostat page, a door camera, a garage button) rather than a whole-house dashboard. The only Amazon listing we found is a third-party seller at more than double the list price, so buy it from PiShop, CanaKit or Vilros.
- Buy it if: the panel shows one page and space is tight.
- Skip it if: you’ll ever want more than four or five cards on screen.
5. ASUS ZenScreen Touch MB16AMTR
When the dashboard needs to be readable from across a room, the ZenScreen Touch is the most complete large panel we could verify. It’s a 15.6-inch 1920×1080 IPS screen at 250 cd/m2 with 10-point touch, a built-in battery, a kickstand and a 1/4-inch tripod socket for mounting.

It has two USB-C ports and a mini HDMI input. The Pi 5’s USB-C port is for power, so plan on a micro-HDMI to mini-HDMI cable for video and a USB cable for touch. ASUS doesn’t document Pi use and we have not tested it on one, so treat touch on Raspberry Pi OS as likely rather than confirmed. A generic USB touch monitor usually shows up as a standard HID device, but this is the pick with the most unknowns.
- Buy it if: you want a large kiosk you can also carry to a laptop or a rack.
- Skip it if: cost matters. At about $320 to $335 it costs more than a Pi 5 and two official panels together.
6. SmartiPi Touch Pro 3
A bare Touch Display 2 with a Pi hanging off the back is not something you’d leave on a counter, and the SmartiPi Touch Pro 3 is the case that fixes it. It’s built for the 7-inch Touch Display 2, holds a Pi 3, 4 or 5, and puts the USB and Ethernet ports on the side.

On a Pi 5 a side switch reaches the board’s power button, which you’ll want the first time the kiosk hangs. There’s room for an optional fan and a camera, and a choice of large or small back cover. Wall mounting uses Smarticase’s separate VESA or mini mounts, which we have not checked for fit, so price those in if the panel is not going on a desk.
- Buy it if: you bought the 7-inch Touch Display 2 and want a finished desk or counter unit.
- Skip it if: the panel goes flush into a wall, where a printed bezel or an in-wall box suits better.
It runs about $43 to $46 on Amazon from Smarticase; check the live price. Remember that the display is sold separately.
Set up a Home Assistant kiosk on Raspberry Pi OS (labwc)
Whichever screen you buy, the software side is the same: Raspberry Pi OS runs the labwc Wayland compositor, and a kiosk is Chromium started from labwc’s autostart file. We built that stack on a Debian 13 VM, because Raspberry Pi OS is Debian trixie underneath, and pointed it at a Home Assistant container on the same box. One difference matters, and you’ll see it in the versions:
labwc --version
Debian’s package reports an older release than the labwc build in the October 2026 Raspberry Pi OS image, which lists 0.20.2-1~bpo13+1 in its package manifest:
labwc 0.8.3
So the config syntax below carries over, but treat the one layering quirk we hit (the hidden keyboard further down) as something to re-check on your Pi. Raspberry Pi OS also ships a small autotouch package that ties a touchscreen to its display automatically, which our Debian box did not have.
Let Home Assistant skip the login page
A wall panel that shows a login form after every reboot isn’t a kiosk. Home Assistant’s trusted_networks auth provider lets a named address in without a password, and allow_bypass_login skips the user picker. Home Assistant only bypasses the picker when one user is available to that network, so finish onboarding first and expect the picker to come back if you add a second user. Open Home Assistant’s configuration.yaml (ours lived in the container’s config volume):
vim ~/ha-config/configuration.yaml
Add the auth providers under homeassistant:. Keep the homeassistant provider in the list so password logins still work from every other address:
homeassistant:
auth_providers:
- type: trusted_networks
trusted_networks:
- 127.0.0.1
- ::1
allow_bypass_login: true
- type: homeassistant
Loopback only works because our browser and Home Assistant ran on the same machine. Your Home Assistant may run elsewhere, as it does when the Pi is only a screen for a mini PC running Home Assistant. In that case list the Pi’s own address instead, and remember that anything reaching Home Assistant from that address gets in without a password or MFA. Don’t list an address that is also in trusted_proxies, because Home Assistant’s auth provider docs say a reverse proxy can’t be a trusted network. Restart Home Assistant and check that the provider loaded:
curl -s http://127.0.0.1:8123/auth/providers
Trusted Networks should be listed. If only “Home Assistant Local” shows, the YAML did not load and the panel will still show a login form:
{"providers":[{"name":"Trusted Networks","id":null,"type":"trusted_networks"},{"name":"Home Assistant Local","id":null,"type":"homeassistant"}],"preselect_remember_me":true}
With that in place, Chromium on the same box opened the logged-in Overview dashboard directly, with no login page in between.
Start Chromium in kiosk mode from labwc autostart
labwc runs ~/.config/labwc/autostart as a shell script once it has read its config, so that’s where the kiosk browser goes. Create or edit the file as the desktop user:
vim ~/.config/labwc/autostart
This is the exact file our lab ran. The first line starts the wvkbd keyboard hidden, and the second opens the dashboard full screen with its own Chromium profile:
wvkbd-mobintl --hidden -L 300 &
chromium --kiosk --noerrdialogs --disable-infobars --ozone-platform=wayland --start-maximized --password-store=basic --disable-gpu --no-first-run --check-for-update-interval=31536000 --user-data-dir=/home/valentine/.config/chromium-kiosk http://127.0.0.1:8123/lovelace/0 &
Drop --disable-gpu on a Pi. It was only there because the VM had no GPU and rendered in software. Change the URL to your Home Assistant address and dashboard path, and change the profile path to your own home directory. A separate --user-data-dir means a crash restore prompt from your normal browsing never appears on the panel. From labwc starting to the dashboard banner being drawn took 10.1 seconds on our 2 vCPU VM with a fresh profile, with Home Assistant already running.

You are looking at the Overview dashboard with no login, no tabs and no address bar, which is what the panel shows after every boot.
Rotate the panel with wlr-randr
The official Touch Display 2 is portrait natively, and on Raspberry Pi OS it shows up as DSI-1. You can rotate it live with wlr-randr. Our headless output was called HEADLESS-1, so substitute your output name from a bare wlr-randr listing:
wlr-randr --output HEADLESS-1 --transform 90
The output reports the new transform straight away, and Chromium reflowed the dashboard without a restart:
HEADLESS-1 "Headless output 1"
Enabled: yes
Modes:
1280x720 px (current)
Position: 0,0
Transform: 90
Scale: 1.000000
Adaptive Sync: disabled
Home Assistant moved its sidebar into a menu and stacked the cards into a 720×1280 column. That’s the layout a portrait panel by a door would show if you leave it unrotated:

A wlr-randr change lasts only until the session ends. To keep it, set the orientation in Control Centre under Screens (right-click the DSI-1 rectangle, then Orientation), which Raspberry Pi’s Touch Display 2 documentation gives as the desktop method.
Map touch to the right display
With one DSI panel you probably won’t need this, because Raspberry Pi OS ships autotouch, a package that associates a touchscreen with its display for labwc. The manual step matters when an HDMI panel sends touch over USB, or when two screens are attached and taps land on the wrong one. labwc handles it with a <touch> element in rc.xml:
vim ~/.config/labwc/rc.xml
Our lab file named the virtual touch device we created and mapped it to HEADLESS-1, since the VM had no real panel, so the empty-name form and the DSI-1 mapping below were not run in our lab. The labwc config reference says an empty deviceName applies the mapping to every touch device, which is what you want with a single touchscreen. The window rule asks labwc to drop Chromium’s title bar and maximize the window. It loaded without errors, though the keyboard section below shows a window it didn’t match:
<?xml version="1.0"?>
<labwc_config>
<touch deviceName="" mapToOutput="DSI-1" mouseEmulation="no"/>
<windowRules>
<windowRule identifier="chromium" serverDecoration="no">
<action name="Maximize"/>
</windowRule>
</windowRules>
</labwc_config>
For two touchscreens, add one <touch> line per device with the name sudo libinput list-devices prints for it. In the lab, a tap sent through that mapping landed on the Energy item in Home Assistant’s sidebar and opened the page, so touch reached Chromium as touch and not as an emulated mouse. Reload labwc after editing:
labwc --reconfigure
Run it from a terminal inside the labwc session. Over SSH it fails, and the error is the next heading.
Error: “LABWC_PID not set”
We got this when reconfiguring from an SSH shell, which is how most people manage a panel on a wall:
00:00:00.000 [ERROR] [../src/main.c:72] LABWC_PID not set
labwc exports LABWC_PID only to processes it starts, and --reconfigure uses it to find the compositor to signal. Pass it from the running process and the reload exits 0:
LABWC_PID=$(pgrep -x labwc) labwc --reconfigure
Sending SIGHUP to labwc does the same job, since labwc reloads every config file except autostart on that signal.
Keep the on-screen keyboard visible
This is the failure we didn’t expect. With Chromium in --kiosk mode, neither wvkbd nor Squeekboard ever appeared over the dashboard. The wvkbd process was running the whole time. Both keyboards draw on the layer-shell top layer, and the likely cause is that a fullscreen window covers that layer in our labwc build, which leaves the keyboard hidden behind the page.
The workaround was to drop fullscreen. We started Chromium with --app=http://127.0.0.1:8123/lovelace/0 in place of --kiosk and the URL. In that windowed mode wvkbd appeared at the bottom, and taps on its keys typed into Home Assistant’s search box:

Notice the title bar and the gaps at the sides: our identifier="chromium" window rule did not take effect on that app window, so a windowed kiosk still needs its window rule matched to the identifier your Chromium reports. If your dashboard never needs typing (most don’t, since toggles and sliders are taps), keep --kiosk and skip the keyboard. If it does, test this on your Pi first, because Raspberry Pi OS ships a much newer labwc than the one we ran.
Turn off screen blanking, or tune it
Raspberry Pi OS blanks the screen through swayidle. You can switch blanking off in Control Centre under Display, or with sudo raspi-config under Display Options, then Screen Blanking. Raspberry Pi’s docs say that toggle writes a swayidle line with a 600-second timeout into the same ~/.config/labwc/autostart as your kiosk. If you keep blanking on, edit the timeout on that line, and keep your Chromium line in the file when you do. On our Debian box swayidle was installed but not running, so nothing blanked.
What the kiosk costs in memory
We read memory 20 seconds after the dashboard loaded, so you can size the board. PSS splits shared pages between processes, so it’s the honest figure here. Plain RSS added up to about 1 GB for Chromium’s ten processes because it counts shared libraries once per process:
| Process | Memory (PSS) |
|---|---|
| Chromium (10 processes) | 465,291 KiB (about 454 MiB) |
| labwc | 24,726 KiB |
| wvkbd | 2,019 KiB |
| Home Assistant container (docker stats) | 378.3 MiB |
The display stack comes to under half a gigabyte on our x86 VM with software rendering. Chromium on a Pi’s arm64 build with the GPU enabled will land somewhere different, but the margin suggests a 2 GB Pi 5 is enough when it’s only a screen for Home Assistant running elsewhere. Running Home Assistant on the same Pi adds roughly 380 MiB with a near-empty install, and that number grows with every integration, so we’d buy the 4 GB board for an all-in-one panel.
What to check before you buy a Pi 5 touchscreen
Most returns in this category come from four mismatches, and you won’t spot any of them in the product photos:
- The ribbon size: the Pi 5 has 22-pin mini MIPI connectors, while older Pi boards and many DSI panels use 15-pin. Check that the box includes a 22-pin cable or budget for one.
- Native orientation: the official panels are portrait. That’s fine for a door-side panel and costs a rotation step for a landscape dashboard.
- Power path: DSI panels draw from the Pi, so the 27 W Pi 5 supply is the safe choice. HDMI panels may need their own 5V brick.
- Brightness: almost no Pi panel lists nits. If the screen faces a window, a monitor with a published figure (the ZenScreen’s 250 cd/m2) is the safer bet.
Your choice of Pi matters less than you’d expect. A dashboard in Chromium runs on any Pi 5, and the storage under it matters more for a box that runs for years. Our microSD card guide for the Pi explains when an endurance-rated card beats a faster A2 card. If you’re still choosing the board, our Raspberry Pi 5 kit guide covers the RAM sizes and power supplies. A panel Pi that also runs camera detection for a doorbell feed needs an NPU, and the Raspberry Pi 5 AI accelerator guide explains the single PCIe lane those boards compete for with NVMe. A DSI panel doesn’t use that lane at all.
Which screen to pick for your dashboard
Start from where the screen will live and what it has to show, not from the size on the box:
- A wall panel by a door or in a hallway: the 7-inch Touch Display 2, rotated or left in portrait, with the SmartiPi case if it sits on a shelf.
- A whole-house dashboard on a wall: the Waveshare 10.1-inch DSI, which is landscape natively, or the 10-inch Touch Display 2 if a reseller has it.
- A desk or bench kiosk you might move: the Waveshare 7-inch HDMI, because it also works on any mini PC or laptop.
- One button or one camera feed: the 5-inch Touch Display 2.
- Readable from across a room: the ASUS ZenScreen Touch, or a tablet if the budget is tight.
If you only buy one, we’d take the 7-inch Touch Display 2 from an approved reseller at its $60 list price. Put it on a 2 GB or 4 GB Pi 5 and run your dashboard with --kiosk and no keyboard. It’s the setup with the fewest cables, no vendor overlay and the longest production promise, and taps cover almost everything a Home Assistant panel does. Only move to the windowed keyboard setup above once you’ve confirmed your dashboard needs typing.

