libledmtx-1.3.1 and p18clock-2.0.3 released
30 Dec 2025This post brings some interesting updates about libledmtx / p18clock. It has been quite silent here for a while, but that does not mean that nothing is going on. Actually, the last few months were quite hectic, including some new developments at work, a WG21 (virtual) meeting (Kona, Nov 2025), and some parallel developments around libledmtx and p18clock. Read more below to know what has changed.
libledmtx
libledmtx sits at the core of p18clock, and provides (low resolution, 1 bit per pixel) LED matrix display handling (see also this other blog post for past updates).
Here is what changed in the last three months:
-
r393c164hardware: added the reference KiCad schematic and PCB layout for a 32x8 display based on the KYX-1088B (8x8 common anode LED matrix). In particular, a couple of minor defects were fixed, and the hardware was updated to use P-channel MOSFETs. - Added a 6x8 font for larger displays.
ledmtx_font5x7is deprecated in favor ofledmtx_fontstd.h, which groups declarations for built-in fonts. - Introduced the
LEDMTX_DECLARE_FRAMEBUFFER(_width, _height)preprocessor macro, which provides a convenient interface for static allocation of the framebuffer.LEDMTX_FRAMEBUFFER_RES()has been deprecated. - Fixed display flickering when viewport is changed via
ledmtx_setviewport(). Some other minor fixes.
p18clock
p18clock has not been left behind, and many changes made it into p18clock-2.0.3. In particular, the following changes were applied to hardware:
- p18clock hardware has been updated to leverage the latest changes in the
r393c164reference hardware (see above). The display has also been extended to 40x8. There are some minor corrections to the placement of the bulk capactitors, and noise suppression for the LM35 (analog) output signal. Additionally, the power connector has been replaced by a USB C receptacle. - A DXF file for a simple acrylic cover was added to the repository.

Some software changes were also applied; most importantly,
- A number of
makevariables may be used to control the build, in addition to the formerP18CLOCK_LANG; see here for details. Remarkably,LARGE_DISPLAYmay be specified to build for a 40x8 screen (defaults to legacy 32x7 if not defined). - The large display setting enables the use of a 6x8 font for main modes; 5x7 font is still used for scrolling text (in order to fit more characters on the screen).
- Also, in the
STATE_TIMEmain state, spare space in the right side is used by a ‘alarm-enabled’ indicator. - The default vertical refresh frequency has been raised to 100 Hz.
- Finally, to accommodate the lastest hardware changes, p18clock builds for the PIC18F2510 by default (a cheaper part); PIC18F2550 is still supported though, as it is still present in the original prototype.
Production files for PCBs were sent to jlcpcb for fabrication. Specifically, 25 PCBs were ordered. Components were manually soldered on 16 boards, which were given to friends and relatives. In addition, 5 more boards (+ electronic components, etc.) were given as DIY kits; 1 PCB is kept for myself, and 3 PCBs remain as spare parts. The final result for a fully-mounted p18clock-2 can be seen below.

I hope that people that were given a p18clock, either in fully-mounted or DIY kit, are definitely enjoying it! Happy 2026
!