ibargraph - ISDN bar graph client for LCDProc

This program shows the current throughput on an ISDN line as LED bar graph with LCDProc. Currently, this feature is only supported via the HD44780 extended display driver connect with the LCDTime wiring.


  • only the HD44780 extended / lcdtime display driver is supported
  • the LED bar graph needs to be attached, which renders the backlight switching unusable
  • the program needs to be modified to assign the proper output lines to the LEDs (no configuration available)


  • LCDProc with an attached bar graph (see the LCDProc documentation, or get the wiring as PDF / PS)
  • isdn4linux sub system installed and working (ibargraph won't work with capi4linux)
Make sure the LED bar graph and the ISDN system work properly before installing this program.
I have tested with LCDProc 0.5 (development version) and Linux 2.4.22.


This program is based heavily on imonlcd v0.2. Most of the code is from there. There are two important bugfixes:
  • fixes a buffer overflow in parse_server_reply(), which leads to crashes on my box
  • fixes two memory leaks (allocated memory was never freed)


If your LED bar is connected properly to the parallel port (and the LCD), the installation is simple: just call 'make' and run the resulting program.
If you see strange result on the LED bar, or know that the LEDs are not wired properly, then you need to modify the program.
  • determine how your bar graph is mounted and controlled:
    • open a telnet connection to 'localhost:1366' or where your LCDProc listens, and send these commands:
    • 'connect'
    • 'client_set name test1'
    • 'output 1' -> this should enable the lowest LED
    • 'output 128' -> this should enable the highest LED
    • 'output 255' -> this should enable all LEDs
    • 'output 127' -> this should enable all but the highest LEDs
    • 'output 2' to 'output 64' -> this should enable all the single LEDs in correct order
  • now you know if your bar graph is upside down, all LEDs are in correct order, and maybe if the port itself is negated (then 'output 1' enabled all but the lowest LED)
  • now extract the archive
  • open the file ibargraph.c and go to the function 'setBargraphState()', at the end of the file
  • change the variable 'bar' according to your bar graph (there are already version for a normal bar, and for upside down, and both with inverted port))
  • run 'make'
  • copy the file 'ibargraph' to the desired install location
  • start the program (optionally, you can supply the -s >server< and -p >port< options for name and port of your LCDProc)

change history:

version 0.2

  • handling of multiple open channels added (e.g. when using ibod)
  • changed LED unit to 1000 bytes instead of 1024
  • added documentation
  • some code cleanup

version 0.1

  • initial version