geoffwilliams@home:~$

A Raspberry Pi 5 VT100 Cyberdeck build - Part 1 - Pi 5 + Waveshare DSI Display

Cyberdecks are all the rage these days. Not sure terminals qualify but I found a really cool VT100 replica a couple of years ago and built it up with a Raspberry Pi 4, USB NVME SSD and a Waveshare DSI display I’ve had for ages. Recently, it started crashing if bumped.

This little terminal takes up far too much space on the desk (2x power plugs, 1x USB hub, 1x USB NVME enclosure). So lets fix this by upgrading with our spare Raspberry Pi 5, NVME on PCIe, and POE so we can get rid of all those cables.

Raspberry Pi Stackup

Here’s the physical stackup I decided on. I’ve used the POE hat and NVME base individually before but never together. Happy to report they work with no issues

  1. Waveshare POE (F)
  2. Raspberry Pi 5, 4GB
  3. Pimoroni NVME base

POE hat

The hat is really nice. You just connect it and it works like magic to power the Pi over ethernet. No configuration or other changes needed since I have it hooked up to a switch that’s already POE enabled.

Fixing the screen

The stack works nicely hooked up to a monitor, all thats left to do is reconnect the DSI screen. In theory, this should have been as easy as using a mini to standard DSI cable😂

The screen I’m using was bought years ago: Waveshare 5inch Capacitive Touch Display for Raspberry Pi, DSI Interface, 800×480

I already enabled interfaces with raspi-config:

  • SPI on
  • I2C on

config.txt was already configured with device overlays:

dtoverlay=vc4-kms-v3d
dtoverlay=vc4-kms-dsi-7inch

But booting on Pi 5 resulted in boot errors like this:

[    3.774596] i2c_designware 1f00080000.i2c: controller timed out
[    4.830596] i2c_designware 1f00080000.i2c: controller timed out
[    4.831353] edt_ft5x06 11-0038: supply iovcc not found, using dummy regulator
[    5.854606] i2c_designware 1f00080000.i2c: controller timed out
[    6.878608] i2c_designware 1f00080000.i2c: controller timed out
[    7.902596] i2c_designware 1f00080000.i2c: controller timed out
[    8.926595] i2c_designware 1f00080000.i2c: controller timed out
[    9.950597] i2c_designware 1f00080000.i2c: controller timed out
[   10.034747] drm-rp1-dsi 1f00130000.dsi: rp1dsi_host_attach: Attach DSI device name=tc358762 channel=0 lanes=1 format=0 flags=0x815 hs_rate=0 lp_rate=0
[   10.034923] [drm] Initialized drm-rp1-dsi 1.0.0 for 1f00130000.dsi on minor 2
[   10.035398] drm-rp1-dsi 1f00130000.dsi: [drm] rp1dsi: Command time (outvact): 33
[   10.035489] drm-rp1-dsi 1f00130000.dsi: [drm] rp1dsi: Nominal Byte clock 90000000 DPI clock 30000000 (parent rate 90000000)
[   11.038600] i2c_designware 1f00080000.i2c: controller timed out
[   12.062593] i2c_designware 1f00080000.i2c: controller timed out
[   13.086594] i2c_designware 1f00080000.i2c: controller timed out
[   14.110595] i2c_designware 1f00080000.i2c: controller timed out
[   15.134594] i2c_designware 1f00080000.i2c: controller timed out
[   16.158593] i2c_designware 1f00080000.i2c: controller timed out
[   17.182593] i2c_designware 1f00080000.i2c: controller timed out
[   18.206593] i2c_designware 1f00080000.i2c: controller timed out
[   19.230593] i2c_designware 1f00080000.i2c: controller timed out
[   20.254593] i2c_designware 1f00080000.i2c: controller timed out
[   21.278597] i2c_designware 1f00080000.i2c: controller timed out
[   22.302594] i2c_designware 1f00080000.i2c: controller timed out
[   23.326593] i2c_designware 1f00080000.i2c: controller timed out
[   24.350594] i2c_designware 1f00080000.i2c: controller timed out
[   25.374592] i2c_designware 1f00080000.i2c: controller timed out
[   26.398593] i2c_designware 1f00080000.i2c: controller timed out
[   27.518594] i2c_designware 1f00080000.i2c: controller timed out
[   28.542593] i2c_designware 1f00080000.i2c: controller timed out
[   29.566593] i2c_designware 1f00080000.i2c: controller timed out
[   29.566605] edt_ft5x06 11-0038: touchscreen probe failed
[   29.566700] edt_ft5x06 11-0038: probe with driver edt_ft5x06 failed with error -110
[   30.590595] i2c_designware 1f00080000.i2c: controller timed out
[   31.614593] i2c_designware 1f00080000.i2c: controller timed out
[   32.638593] i2c_designware 1f00080000.i2c: controller timed out
[   33.662592] i2c_designware 1f00080000.i2c: controller timed out
[   34.686593] i2c_designware 1f00080000.i2c: controller timed out
[   35.710593] i2c_designware 1f00080000.i2c: controller timed out
[   36.734593] i2c_designware 1f00080000.i2c: controller timed out
[   37.758593] i2c_designware 1f00080000.i2c: controller timed out
[   38.782593] i2c_designware 1f00080000.i2c: controller timed out
[   38.782603] panel-simple 100000001.panel_disp: [drm:drm_panel_enable [drm]] failed to enable backlight: -110
[   38.788350] Console: switching to colour frame buffer device 100x30
[   38.805184] drm-rp1-dsi 1f00130000.dsi: [drm] fb0: drm-rp1-dsidrmf frame buffer device
[   38.810635] drm-rp1-dsi 1f00130000.dsi: rp1dsi_bind succeeded
[   39.838595] i2c_designware 1f00080000.i2c: controller timed out
[   40.862593] i2c_designware 1f00080000.i2c: controller timed out
[   41.886593] i2c_designware 1f00080000.i2c: controller timed out
[   42.910598] i2c_designware 1f00080000.i2c: controller timed out
[   43.934593] i2c_designware 1f00080000.i2c: controller timed out
[   44.958593] i2c_designware 1f00080000.i2c: controller timed out
[   45.982593] i2c_designware 1f00080000.i2c: controller timed out
[   47.006593] i2c_designware 1f00080000.i2c: controller timed out
[   48.030593] i2c_designware 1f00080000.i2c: controller timed out
[   49.054593] i2c_designware 1f00080000.i2c: controller timed out

And eventually just a red failed to boot LED on the Pi after several attempts to reseat the FPC cable (fixable by disconnecting one end).

Fortunately the Waveshare WIKI for the screen is very helpful and covers this exact scenario. The red LED I was seeing is was Raspberry Pi short circuit protection and the fix was to remove the 4 big capacitors from my very old screen. It’s so old, there is no revision number printed(!)

before

I did manage to do this with a soldering iron, wick and lots of flux but these parts are so small I couldn’t even see that I’d removed/damaged other components until I looked at a photo of the capacitors I’d removed and saw an unexpected shape:

whoops

Sure enough, the board shows damage to the fiddly area near the connector

damaged components

With that said, the screen works fine and even touch still works.

When it breaks in the future, I’ll know why. At this point I would just replace with a HDMI screen as these are a lot less fiddly to install and offer higher resolutions.

Sound

As a finishing touch, I added a Mini USB speaker from Amazon. This one shows up as a USB audio device so installing is as easy as plugging in a USB. To test sound:

# if needed
# sudo apt install alsa-utils
speaker-test -t sine -f 440 -c 2

If you hear nothing, use alsamixer to crank the audio. I heard nothing at 50% level but at 100% it was extremely loud annoying.

Fixed!

I’m glad I had a go at fixing up the display instead of throwing it away. It would have been a pain as well as waste of money to rip the old screen out as its glue gunned in place. I also learned its really hard to do microsoldering on the kitchen worktop without a microscope, so for devices I care about, professional repair is still the best option.

You really have to hand it to Waveshare for finding and documenting the fix needed for Raspberry pi and keeping this information behind a support email. It really makes building things a lot easier. Mental note to buy more Waveshare devices.

Next

Larger NVME drive.

Post comment

Markdown is allowed, HTML is not. All comments are moderated.