I just received a package from California from a fellow called Michael Yim. He got in touch some time ago. I think I’d seen his miniature CRT monitor MS-DOS prompt toy available online, and I wrote to him. He said, “Okay, I’ll send you one to play with.”
Here is his link – a good read. I’m not sponsoring anything incidentally.
I’ll cut a long story short: it cost him $23 (US Postage Paid) to send from San Jose, USA to Galera, Southern Spain, and the post-people somehow managed to send the package back to him, so yesterday his second attempt arrived. Interestingly the packages look identical (from his photo of the first one) so goodness knows how the post-people blew the first attempt.
But here is what arrived in the end – absolutely no purpose but great to have, the green USB-powered C: Prompt” monitor is going on top of my PC monitor. This absolutely reminded me of my late-1980’s act Sirius-1 (Victor 9000 in the USA). I love it.
Plug it into USB, prompt lights up complete with flashing underscore cursor – that’s it 🙂 The USB is out the back… Isn’t it great that someone has spent the time to make these.
I also received another one – identical but with a white c:\> prompt… In both cases the screens are even curved like the originals (way before flat screens).
Not a lot more I can say about these but to say that, they’re a great gimmick.
There was a third light-up miniature PC that looks like any of several towers I’ve owned over the years before switching to Mini-PCs. No monitor display on this one – just the various LEDs typical of Tower PCs. Isn’t that fun…
That’s it for the tiny PCs, the only other thing that arrived in the box was a tiny paper-white display board the company sell – It needs hooking up to an ESP to do anything with it – but out of the box it is showing a HELLO world message (typical paper white, no power needed – not a dummy display, non-volatile – only needs power (and processor) to change the message.
Anyway – here it is. It’s just an SPI connection and these days getting the display running should be simple – at least for a “Goodbye world” 🙂
The display arrived as in the image left saying “Hello World”.
I told ChatGPT I want to use ESPHOME rather than Arduino and…
ESPHome DEV version is currently (19/10/2026) and is needed to make that little display work (If you already have ESPHOME sitting in Home Assistant, you can safely run that and the DEV version side by side). And as if by magic… I loaded in the project you see here… I’ve doctored my SSID and password to protect the innocent. Why use a Seeed ESP32-C6 board? Only as I had one handy with pins attached – the display also came with pins attached. EASY. This is fun… see pins in the code – it seems the board can run on 3v3 or 5v, I used 3v3. All pins below connected to the Seeed ESP32-C6. No other parts – just USB-C to the C6 for power.
esphome:
name: eink-c6
friendly_name: E-Ink C6
esp32:
board: seeed_xiao_esp32c6
framework:
type: esp-idf
logger:
api:
ota:
- platform: esphome
wifi:
ssid: "blah"
password: "xxxxxx"
ap:
ssid: "E-Ink-C6 Fallback"
password: "12345678"
spi:
clk_pin: GPIO19
mosi_pin: GPIO18
miso_pin: GPIO20
display:
- platform: epaper_spi
model: SSD1681
dimensions:
width: 152
height: 152
cs_pin: GPIO21
dc_pin: GPIO1
reset_pin: GPIO0
busy_pin:
number: GPIO2
enable_pin: GPIO16
rotation: 0
update_interval: 30s
lambda: |-
it.fill(Color::WHITE);
it.print(
76,
60,
id(font_large),
Color::BLACK,
TextAlign::CENTER,
"GOODBYE"
);
it.print(
76,
90,
id(font_large),
Color::BLACK,
TextAlign::CENTER,
"WORLD!"
);
font:
- file: "gfonts://Roboto"
id: font_large
size: 20
Ok, the code above is simple but with a fairly lame result – how about this – to use – you’d need to change my WiFis and Home Assistant outside temperature and humidity sensors – and to read them, the device would need adding to HA first – but here’s a ready-made use for the e-ink display – again with the ESP32-C6 just as it was handy.
substitutions:
device_name: eink-c6
friendly_name: E-Ink C6
device_version: "0.1"
esphome:
name: ${device_name}
friendly_name: ${friendly_name}
on_boot:
priority: -100
then:
- delay: 15s
- component.update: eink_display
- delay: 8s
- deep_sleep.enter: eink_sleep
esp32:
board: seeed_xiao_esp32c6
framework:
type: esp-idf
logger:
api:
ota:
- platform: esphome
wifi:
networks:
- ssid: !secret wifi_ssid
password: !secret wifi_password
- ssid: !secret wifi_ssid2
password: !secret wifi_password
- ssid: !secret wifi_ssid3
password: !secret wifi_password
- ssid: !secret wifi_ssid4
password: !secret wifi_password
- ssid: !secret wifi_ssid5
password: !secret wifi_password
power_save_mode: none
post_connect_roaming: true
ap:
ssid: "E-Ink-C6 Fallback"
password: "12345678"
deep_sleep:
id: eink_sleep
run_duration: 30s
sleep_duration: 60s
time:
- platform: sntp
id: local_time
timezone: Europe/Madrid
on_time_sync:
then:
- component.update: eink_display
sensor:
- platform: homeassistant
id: outdoor_temperature
entity_id: sensor.outdoor_meter_65_temperature
- platform: homeassistant
id: outdoor_humidity
entity_id: sensor.outdoor_meter_65_humidity
spi:
clk_pin: GPIO19
mosi_pin: GPIO18
miso_pin: GPIO20
font:
- file: "gfonts://Roboto"
id: font_time
size: 56
- file: "gfonts://Roboto"
id: font_day
size: 30
- file: "gfonts://Roboto"
id: font_date
size: 24
- file: "gfonts://Roboto"
id: font_temp
size: 24
- file: "gfonts://Roboto"
id: font_small
size: 16
display:
- platform: epaper_spi
model: SSD1681
id: eink_display
dimensions:
width: 152
height: 152
cs_pin: GPIO21
dc_pin: GPIO1
reset_pin: GPIO0
busy_pin:
number: GPIO2
enable_pin: GPIO16
rotation: 0
update_interval: never
lambda: |-
it.fill(Color::WHITE);
// Time
if (id(local_time).now().is_valid()) {
it.strftime(
76,
2,
id(font_time),
Color::BLACK,
TextAlign::TOP_CENTER,
"%H:%M",
id(local_time).now()
);
// Day
it.strftime(
76,
60,
id(font_day),
Color::BLACK,
TextAlign::TOP_CENTER,
"%A",
id(local_time).now()
);
}
// Date
it.strftime(
76,
90,
id(font_date),
Color::BLACK,
TextAlign::TOP_CENTER,
"%d %b %y",
id(local_time).now()
);
// Temperature and humidity
if (id(outdoor_temperature).has_state() &&
id(outdoor_humidity).has_state()) {
it.printf(
76,
115,
id(font_temp),
Color::BLACK,
TextAlign::TOP_CENTER,
"%.1f °C %.0f%%",
id(outdoor_temperature).state,
id(outdoor_humidity).state
);
}
Caveat: Remember this is an e-Ink, not LCD or LED display and when it refreshes (once a minute in this case) it will flicker briefly and noticeably. All such displays are the same.






