LCDd(8)
π LCDd π
okay bestie, gather round β this is the manual page for LCDd, from the LCDproc suite, and I'm gonna walk you through it like we're texting at 2am. Every single detail is staying, I'm just making it cute. β¨
πΈ NAME πΈ
LCDd β the LCDproc server daemon, aka the main character of your little LCD setup. π
π SYNOPSIS π
LCDd [-hf] [-c config] [-d driver] [-i bool] [-a addr] [-p port] [-u user]
[-w time] [-r level] [-s bool]
look at her. so many little flags. we love an options-forward queen. π
π¦ DESCRIPTION π¦
So. LCDd is the server half of LCDproc. It's a daemon that justβ¦ sits there, listening on a port (normally 13666, iconic number tbh) and puts information up on an LCD display. It works with several different types and sizes of displays, so no matter what cursed little screen you've got, there's probably a driver for it. π
Most of LCDd's settings live in its config file, /etc/LCDd.conf, and some of them can be overridden from the command line. Before you run LCDd, please please please actually read through that file and change everything you need to change for your setup. Otherwise you might end up with LCDd justβ¦ not running properly on your system. π And we don't want that for you.
Also, real talk: to actually make full use of LCDd, you need a client. Something like lcdproc(1), lcdexec(1), or lcdvc. Server without a client is giving "party with no guests". π«Ά
β¨ OPTIONS β¨
Here's everything you can throw at her:
-hβ shows you the help screen. the "hi bestie what do u need" option.-cconfig β use a config file that isn't/etc/LCDd.conf. Go off, custom paths. ποΈ-ddriver β pick a driver to use (output only goes to the first one). This overrides theDriverparameter in the[Server]section of the config file.-fβ run in the foreground. This overrides theForegroundparameter in the[Server]section. And FYI: if nothing is specified in the config file, the default is to daemonize LCDd, because she's literally designed to operate in the background. she's a background girlie. π-ibool β tells her whether to enable (1) or disable (0) showing the LCDproc server screen in the screen rotation. OverridesServerScreenin the[Server]section of the config file. π-wwaittime β how long to pause at each screen, in seconds. Overrides theWaitTimeparameter in the[Server]section. she's taking her time, as she should. β³-aaddr β bind to the network address addr. Overrides theBindparameter in the[Server]section. π-pport β listen on port port for incoming connections. Overrides thePortparameter in the[Server]section. πͺ-uuser β run as user user. Overrides theUserparameter in the[Server]section. π§βπ»-sbool β output messages to syslog (1) or to stdout (0). Overrides theReportToSyslogparameter in the[Server]section. π’-rlevel β set the reporting level to level. Overrides theReportLevelparameter in the[Server]section. π
π SUPPORTED DRIVERS π
Right now, the supported display drivers include:
bayradβ BayRAD LCD modules by EMAC Inc.CFontzβ CrystalFontz CFA-632 and CFA-634 serial LCD displaysCFontzPacketβ CrystalFontz CFA-533, CFA-631, CFA-633 and CFA-635 serial/USB LCD displayscursesβ standard video display using the(n)curseslibraryCwLnxβ serial/USB displays by Cwlinux (http://www.cwlinux.com)ea65β VFD front panel display on Aopen XC Cube EA65 media bareboneEyeboxOneβ LCD display on the EyeboxOnefutabaβ the Futaba TOSD-5711BB VFDisplay on Elonex Artisan/Scaleo Media Centre PCsg15β LCD display on the Logitech G15 keyboardglcdβ generic driver for graphical LCDs with FreeType rendering support. This driver supports the following sub-drivers (a.k.a. connection types):glcd2usbβ Till Harbaum's open source/open hardware GLCD2USB (http://www.harbaum.org/till/glcd2usb/)picolcdgfxβ picoLCD 256x64 Sideshow graphic LCD (Mini-Box.com)pngβ write out screens as PNG imagesserdisplibβ uses serdisplib (http://serdisplib.sourceforge.net/) for outputt6963β Toshiba T6963 based LCD displays (graphic mode)
glcdlibβ graphical LCDs supported by graphlcd-baseglkβ Matrix Orbital GLK Graphic Displayshd44780β Hitachi HD44780 LCD displays. This driver supports the following sub-drivers (a.k.a. connection types):4bitβ LCD 4bit-mode, connected to a PC parallel port8bitβ LCD 8bit-mode, connected to a PC parallel portserialLptβ LCD in 4bit-mode through a 4094 shift registerwinampβ LCD in 8bit-mode using WinAmp-wiring, connected to a PC parallel portpicanlcdβ LCD driven by a PIC-an-LCD chip/board by Dale Wheat, connected to a serial portlcdserializerβ LCD driven by a PIC16C54-based piggy-back board, connected to a serial portlos-panelβ LCD driven by an Atmel AVR based board, connected to a serial portezioβ Portwell EZIO-100 and EZIO-300 LCD connected to a serial port (http://drivers.portwell.com/CA_Manual/EZIO/)vdr-lcdβ???, connected to a serial portvdr-wakeupβ VDR-Wake module by Frank Jepsen (http://www.jepsennet.de/vdr/)pertelianβ Pertelian X2040 module (http://pertelian.com/)lis2β LIS2 from VLSystem (http://www.vlsys.co.kr), connected to USBmplayβ MPlay Blast from VLSystem (http://www.vlsys.co.kr), connected to USBusblcdβ LCD device from Adams IT Services (http://www.usblcd.de/)bwctusbβ USB-to-HD44780 converter by BWCT (http://www.bwct.de)lcd2usbβ Till Harbaum's open source/open hardware LCD2USB (http://www.harbaum.org/till/lcd2usb/)usbtinyβ devices based on Dick Streefland's USBtiny firmwareuss720β USS-720 USB-to-IEEE 1284 Bridge (Belkin F5U002 USB Parallel Printer Adapters)usb4allβ Sprut's open source / open hardware USB-4-all (http://www.sprut.de/)ftdiβ USB connection via a FTDI FT2232D chip in bitbang modei2cβ LCD in 4-bit mode driven by PCF8574(A) / PCA9554(A), connected via I2C buspiplateβ Adafruit RGB Positive 16x2 LCD+Keypad for Raspberry Pispiβ LCD with KS0073 or equivalent in serial mode, connected via SPI buspifacecadβ PiFace Control and Display for the Raspberry Pi (http://www.piface.org.uk/)ethlcdβ TCP connection using open source/open hardware ethlcd (http://manio.skyboo.net/ethlcd/)raspberrypiβ LCD driven by the GPIO pins of a Raspberry Pigpioβ LCD connection via GPIO pins controlled by the linux sysfs interface
i2500vfdβ 140x32 pixel VFD Display of the Intra2net Intranator 2500 applianceicp_a106β ICP Peripheral Communication Protocol alarm/LCD board used in QNAP devices and 19" rack cases made by ICPimonβ iMON IR/VFD modules in cases by Soundgraph/Ahanix/Silverstone/Uneed/Accentimonlcdβ iMON IR/LCD modules in cases by Soundgraph/Ahanix/Silverstone/Uneed/Accent/Antecirtransβ IRTrans IR/VFD modules in cases by Ahanix (e.g. MCE303) and possibly others. May require irserver (http://www.irtrans.de/en/download/linux.php) to be running for connectivity.IOWarriorβ Code Mercenaries IOWarriorirmanβ IrMan infrared (input)joyβ Joystick driver (input)lb216β LB216 LCD displayslcdm001β kernelconcepts.de 20x4 serial LCD displayslctermβ serial LCD terminal from Helmut Neumark Elektronik (http://www.neumark.de)linux_inputβ Linux event devices (input)lircβ Infrared (input)lisβ L.I.S MCE 2005 20x2 VFD (http://vlsys.co.kr)MD8800β VFD displays in Medion MD8800 PCsmdm166aβ Futuba MDM166A displaysms6931β MSI-6931 displays in 1U rack servers by MSImtc_s16209xβ MTC_S16209x LCD displays by Microtips Technology IncMtxOrbβ Matrix Orbital displays (except Matrix Orbital GLK displays)mx5000β LCD display on the Logitech MX5000 keyboardNoritakeVFDβ Noritake VFD Device CU20045SCPB-T28AOlimex_MOD_LCD1x9β Olimex MOD-LCD1x9 14 segment displayrawserialβ dumps the entire framebuffer to the serial port at a configurable rate.picolcdβ Mini-box.com USB LCD (PicoLCD 20x4 & picoLCD 20x2)pyramidβ LCD displays from Pyramid (http://www.pyramid.de)sdeclcdβ Watchguard Firebox LCD display based on SDEC LMC-S2D20 (http://www.sdec.com.tw)sed1330β SED1330/SED1335 (aka S1D13300/S1D13305) based graphical displayssed1520β 122x32 pixel graphic displays based on SED1520 controllersserialPOSβ driver for Point Of Sale ("POS") devices using various protocols (currently AEDEX only)serialVFDβ text VFDs of various manufacturers, see LCDproc user-documentation for further details.shuttleVFDβ Shuttle VFD (USB-based)sliβ Wirz SLI driver (unknown)stv5730β STV5730A on-screen display chipSureElecβ LCD devices from SURE electronics (http://www.sureelectronics.net)svgaβ VGA monitors using svgalibt6963β Toshiba T6963 based LCD displays (text mode)textβ standard "hard-copy" text displaytyanβ LCD module in Tyan Barebone GS seriesula200β ULA-200 device from ELV (http://www.elv.de)vlsys_m428β VFD/IR combination in case MonCaso 320 from Moneualyard2β yard2 LCD modulexosdβ On Screen Display on X11
And here's the slay part: multiple drivers can be used simultaneously. So for example, a Matrix Orbital display (the MtxOrb driver) can be combined with an infrared driver (the irmanin driver). β¨π¦
π INVOCATION π
LCDd -d MtxOrb -d joy
The invocation example above will start LCDd reading its configuration from the default configuration file /etc/LCDd.conf, but it overrides the drivers specified in there with the Matrix Orbital driver and the Joystick input driver. two drivers, one daemon, no notes. π₯
ngl bestie, she's a lot. but she's worth it. and there's more coming, so don't go anywhere. π
π LCDPROC CLIENT-SERVER PROTOCOL π
ok so here's the whole vibe of how a client talks to the server, bestie. it's giving very much "structured small talk" and honestly? iconic.
there's a basic sequence, and it goes like this:
- Open a TCP connection to the LCDd server port (usually
13666). - Say
hello - The server will return some information on the type of display available.
- Define (and use) a new screen and its widgets.
- Close the socket when done displaying data.
π CLIENT COMMANDS
there are SO many commands the client can yeet at the LCDd server, and I need you to know every single one:
helloβ this is the opener, the "hi bestie" of it all. It starts a client-server session with the LCDd server, and the server will return a data string detailing the type of display and its size. β¨client_set -namename β sets the client's name. that's it, that's the whole job πscreen_add#id β adds a new screen to the display.screen_del#id β removes a screen from the display.screen_set#id β initializes a screen, or resets its data. it takes a whole lil buffet of flags:
screen_set #id [-name name ] [-wid width] [-hgt height] [-priority prio]
[-duration int] [-timeout int] [-heartbeat mode] [-backlight mode]
[-cursor mode] [-cursor_x xpos] [-cursor_y ypos]
widget_add#screen #id type[-in #frame]β adds a widget of type type to screen #screen.widget_del#screen #id β deletes widget #id from screen #screen.widget_set#screen #id data β sets the data used to define a particular widget #id on screen #screen.
π HEARTBEAT MODES
valid heartbeat mode values (these are for the screen_set command, iykyk) are:
onβ displays a pulsing heart symbol π«Άoffβ no heartbeat display, we're being chillopenβ uses the client's heartbeat setting. this is the default.
π BACKLIGHT MODES
valid backlight mode values (again, for the screen_set command) are:
onβ turn backlight onoffβ turn backlight offtoggleβ turn backlight off when it is on and vice versa (chaotic, love that)openβ uses the client's backlight setting. this is the default.blinkβ blinking backlightflashβ flashing blacklight
π Priorities
valid priority settings (used in the screen_set command) are, in order of main character energy:
inputβ the client is doing interactive input.alertβ the screen has an important message for the user.foregroundβ an active clientinfoβ normal info screen, default priority.backgroundβ the screen is only visible when no normal info screens exists.hiddenβ the screen will never be visible. gone. ghosted. π
for compatibility with older versions of clients, a mapping of numeric priority values is also supported:
1-64βforeground65-192βnormal193- (infinity) βbackground
π§ an example of how to properly use priorities
an example of how to properly use priorities is as follows:
imagine you're making an mp3 player for lcdproc. when the song changes, it's nice to display the new name immediately. so, you could set your screen's priority to foreground, wait for the server to display (or ignore) your screen, then set the screen back to normal. this would cause the mp3 screen to show up as soon as the one on screen was finished, then return to normal priority afterward. literally the glow-up arc of screens. π₯
or, let's say your client monitors the health of hospital patients. if one of the patients has a heart attack, you could set the screen priority to alert, and it would be displayed immediately. it wouldn't even wait for the previous screen to finish. also, the display would stay on screen most of the time until the user did something about it. so yeah, priorities are not a joke bestie, they matter.
π§© WIDGET TYPES
widgets can be any of the following:
stringβ a text string to display (as is).hbarβ a horizontal bar graph.vbarβ a vertical bar graph.titleβ a title displayed across the top of the display, within a banner.iconβ a graphic icon.scrollerβ a scrolling text display, scrolling either horizontally or vertically.frameβ a container to contain other widgets, permitting them to be referred to as a single unit. a widget is put inside a frame by using the-in #idparameter, where#idrefers to the id of the frame.numβ displays a large decimal digit
widgets are drawn on the screen in the order they are created. yes, order matters. first come, first served, no queue-jumping. π
βοΈ SETTING WIDGET DATA
in the widget_set command, the data argument depends on which widget is being set. each widget takes a particular set of arguments which defines its form and behavior, so let's go one by one:
stringx y text β displays text at position (x,y).titletext β uses text as title to display.hbarx y length β displays a horizontal bar starting at position (x,y) that is length pixels wide.vbarx y length β displays a vertical bar starting at position (x,y) that is length pixels high.iconx y name β displays the icon name at position (x,y).scrollerleft top right bottom direction speed text β the text defined will scroll in the direction defined. valid directions areh(horizontal),m(marquee) andv(vertical). the speed defines how many "movements" (or changes) will occur per frame. a positive number indicates frames per movement; a negative number indicates movements per frame. yes you read that right, negative numbers flip it. πframeleft top right bottom wid hgt dir speed β frames define a visible "box" on screen, from the (left, top) corner to the (right, bottom) corner. the actual data may be bigger, and is defined as wid (width) by hgt (height); if it is bigger, then the frame will scroll in the direction (dir) and speed defined.numx int β displays large decimal digit int at the horizontal position x, which is a normal character x coordinate on the display. the special value10for int displays a colon.
π BUGS
if LCDd seems not to work as expected, try to run it in the foreground with reporting level set to maximum and reporting to stderr. this can be achieved without changes to the config file by using the command line:
LCDd -f -r 5 -s 0
ngl, that one line has saved so many people. screenshot it. π«Ά
π FILES
/etc/LCDd.confβ LCDd's default configuration file
π SEE ALSO
lcdproc-config(5), lcdproc(1), lcdexec(1)
π AUTHOR
many people have contributed to LCDd. see the CREDITS file for more details.
all questions should be sent to the lcdproc mailing list. the mailing list, and the newest version of LCDproc, should be available from here:
http://www.lcdproc.org/
βοΈ LEGAL STUFF
the lcdproc package is released as "WorksForMe-Ware". in other words, it is free, kinda neat, and we don't guarantee that it will do anything in particular on any machine except the ones it was developed on. honestly? real.
it is technically released under the GNU GPL license (you should have received the file, COPYING, with LCDproc) (also, look on http://www.fsf.org/ for more information), so you can distribute and use it for free -- but you must make the source code freely available to anyone who wants it.
for any sort of real legal information, read the GNU GPL (GNU General Public License). it's worth reading. fr fr.
ok that's the whole page bestie, you ate that π this was the LCDproc manual, dated February 10, 2014, and if you're wondering about the version, it's whatever LCDproc was shipping back then β go check the CREDITS file like a good lil main character. bye π
π¦ where this page comes from
- arch rolling: lcdproc 0.5.9-11 Β· GPL
- debian bookworm: lcdproc 0.5.9-6+b2 Β· GPL-2.0-only
- debian trixie: lcdproc 0.5.9-7+b3 Β· GPL-2.0-only
- ubuntu jammy: lcdproc 0.5.9-6 Β· GPL-2.0-only
- ubuntu noble: lcdproc 0.5.9-7build2 Β· GPL-2.0-only
- ubuntu questing: lcdproc 0.5.9-7build2
- ubuntu resolute: lcdproc 0.5.9-8 Β· GPL-2.0-only
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms