Loading...
 
(Cached)
Design objectives:
  • Small, simple, cheap PCB
  • Doubles as a badge: displays a name or some sort of handle
  • Some way to customize it
  • Can be assembled with limited hw hacking experience
  • Has some practical usage outside of Camp++

The result is EDID nuzzler, an EDID emulator / DDC "MITM" device.
EDID is a data structure describing the capabilities and other metadata about a video display (like the supported resolutions).
DDC is a low speed communication channel between the video source and sink, basically an I2C bus plus two control signals.

Generally this device can be used to work around some edge cases, eg:
  • Dummy display / Ghost display: fake a HDMI display for a headless computer with a certain VNC application on a certain operating system that needs an actual display to function properly
  • To prevent your window manager to rearrange stuff when you change input on your display or switch to other computer on certain KVM switches
  • To force a computer to output a certain resolution, regardless of what kind of display is connected to it

Bonus feature: there is a white area on its back side on which you can write / draw something :)

Assembly:

On the Camp we have PCBs with 3 levels of preparedness:
  • Almost completely assembled, the only missing HW part is the button (it works without it)
  • The HDMI, USB-C and the MUX ICs are populated (these are the most tricky to solder)
  • Apart from the HDMI, USB-C connectors it is empty

PXL 20250705 102218669 2

You can find the HW parts in the red shoe box in the shiny bags.
The 1k5, 5k1 resistors, the 1u, 100n capacitors and the button are unpolarized, they can be placed in any direction.
Leave the place for the two resistors marked DNP empty.
For the CH32V003 and the CH340 pin 1 (marked by a small dot on the package) should be at the top left position (red dot on the drawing).
The rectangular marking on D2 should be on the right side.
The LED should be placed with the small green marking on the top (it is hard to see, but it is there).
Pin 1 of the MUXes are marked by a little dot on the package, but it is easier to identify of the orientation by the YJ letters. Pin 1 should be on the bottom right.
Leave the pin header (circular pads with holes) and the tespoints (solid circles) empty.

Assyembly Drawing

Flashing:

You have to switch the NRTS pin to GPIO mode.
The firmware source is here: https://github.com/boldx/edid-nuzzler/tree/meow/fw
The firmware is based on the ch32fun lib, they made docs for the toolchain setup and stuff: https://github.com/cnlohr/ch32fun/wiki/Installation
Connect pin 3 of the pin header to the SWD pin of esp32s2-funprog.
Connect the USB-C to the same computer as the esp32s2-funprog is connected to.

PXL 20250705 102335320 2

Step-by-step on Ubuntu 24.04.2 LTS:
git clone --recursive https://github.com/boldx/edid-nuzzler.git
cd edid_nuzzler/fw
apt-get install build-essential libnewlib-dev gcc-riscv64-unknown-elf libusb-1.0-0-dev libudev-dev gdb-multiarch
../../ch32fun/minichlink/minichlink -w +a55adf20 option  # this sets the NRTS pin to GPIO
make  # this will attempt to flash the firmware as well


Lanyard:

Get a USB-C breakout board, and glue on the lanyard.
PXL 20250705 104301580 2

Customizing:

Write or draw something on the backside:
Badge 0x7e9

Contributors to this page: boldx .
Page last modified on Saturday 05 of July, 2025 13:00:52 CEST by boldx.

Upcoming Events

No records to display