That's an odd looking connector up there. From the view of the lit LCD and the part number, it's likely that the core LCD is some sort of 16x2 HD44780-based LCD module, but it looks tough to guess which lines at the connector might correspond to which standard HD447800 signals because the die is under an epoxy blob, not in a standard PLCC or QFP package that one might trace out.
I won't say it's impossible to figure out but it looks quite difficult.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Thank you for answering so fast. Do you think is a good idea to try different drivers until someone works? Which ones do you think it could be the best start to try them? Thank you again.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
The driver isn't the issue, it's the connection back to the CPU. It's likely that's just an HD44780 under one of those epoxy bubbles. That's the driver you probably need. What you have to know is what I/O location in memory the ports are at, and what bits control which functions. Even more than that, the HD44780 can be talked to in 4-bit mode or 8-bit mode and you'd need to know that just to begin speaking to the LCD.
In the case of attaching a raw HD44780-type 16x2 LCD, there are examples in the LCDproc docs about how to wire them up to a PC parallel port. The port has one of several known addresses and the wiring has to match what the driver is told about the data pins and the handshake lines.
Without knowing how the DX4000 is wired and how it talks to its LCD, you can't just "load a driver" for LCDproc and have anything work. You have to know the ports and pins first.
Last edit: Ethan Dicks 2018-11-03
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
i know this is an old topic, but relevant to me here as I have a DX4000 now running IPFire and have been able to get atleast (for now) LCD4Linux to recognize the device. I am also interested in testing LDCproc, but will be doing that next.
One thing to note about this LCD is that it is 'compatible' with the generic HD44780 and on the DX4000 it uses parallel port 0x378
I have not tested much yet.. i literally "just" got this working. you will need to add the parport device to the system by executing as root:
'mknod /dev/parport0 c 99 0'
this helped me to get the device to initialize for lcd4linux
I "highly" recommend you watch this video and mod the pcb on the DX4000 to use a serial console (https://www.youtube.com/watch?v=amUXkdGdcTg&t=264s), it makes install, config, and everything so much better.
I hope to be able to try LCDproc very soon, i want to see how easy and well it works too!
hope this helps some.
[edit] some details of the device:
lcd4linux.c: initializing driver HD44780
HD44780: $Rev: 1066 $
HD44780: using model 'generic'
HD44780: using parallel port
HD44780: using 1 Controller(s)
HD44780: using 8 bit mode
udelay: using gettimeofday() delay loop
HD44780: using ppdev /dev/parport0
HD44780: wiring: DISPLAY:RS - PARPORT:INIT (Pin 16)
HD44780: wiring: DISPLAY:RW - PARPORT:AUTOFD (Pin 14)
HD44780: wiring: DISPLAY:ENABLE - PARPORT:STROBE (Pin 1)
HD44780: wiring: DISPLAY:ENABLE2 - PARPORT:GND
HD44780: wiring: DISPLAY:ENABLE3 - PARPORT:GND
HD44780: wiring: DISPLAY:ENABLE4 - PARPORT:GND
HD44780: wiring: DISPLAY:BACKLIGHT - PARPORT:GND
HD44780: wiring: DISPLAY:GPO - PARPORT:GND
HD44780: wiring: DISPLAY:GPI - PARPORT:GND
HD44780: wiring: DISPLAY:POWER - PARPORT:GND
HD44780: timing: CY = 1000 ns (default)
HD44780: timing: PW = 450 ns (default)
HD44780: timing: AS = 140 ns (default)
HD44780: timing: AH = 20 ns (default)
HD44780: timing: INIT1 = 4100 us (default)
HD44780: timing: INIT2 = 100 us (default)
HD44780: timing: EXEC = 80 us (default)
HD44780: timing: WRCG = 120 us (default)
HD44780: timing: CLEAR = 2250 us (default)
HD44780: timing: HOME = 2250 us (default)
HD44780: timing: ONOFF = 2250 us (default)
HD44780: using busy-flag checking
HD44780: timeout waiting for busy flag on controller 1 (0x92)
HD44780: timeout waiting for busy flag on controller 1 (0xd1)
HD44780: using 0 GPI's and 0 GPO's
initializing layout 'Default'
layout.c: Layout:Default: migrating 'row1.col1' to 'Layer:1.row1.col1'
Creating new timer group (500 ms)
widget 'CPU': Class 'text', Parent '<root>', Layer 1, Row 0, Col 0 (to 0,9)
lcd4linux.c: starting main loop</root>
Last edit: Raz Black 2019-04-05
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
ppc1: <parallel port=""> port 0x378-0x37f irq 5 on acpi0
ppc1: Generic chipset (NIBBLE-only) in COMPATIBLE mode
ppbus0: <parallel bus="" port=""> on ppc1
lpt0: <printer> on ppbus0
lpt0: Interrupt-driven port
ppi0: <parallel i="" o=""> on ppbus0
ppc0: cannot reserve I/O port range</parallel></printer></parallel></parallel>
I've tried, /dev/lcd /dev/lpt0 /dev/cuau1 /dev/ppc1 and anything else i could think of.. but nothing, only able to get the LCD to clear and the first line just seems to blink solid, but just faintly so i'm not sure that is good here in this case.
unfortunately, i am unable to get LCDd and lcdproc working here with hd44780 driver... not sure why yet. Here are the contents of my LCDd.conf file:
I am trying to get the LCD working on the DX4000 as well, but I have Ubuntu server running. I have the display working, ie. if dispalys the hello and exit information, but NOw I need to understand how to get it to display the information I want. I deally I want to use the up and down buttons, but have not got those working yet (at least as far as I can tell.
I want it to show these screens (2 Line dispaly):
Host name
CPU load
IP address /Status for ETH0
IP Address/Status for ETH1
Upload Transfer Rate
Download Transfer Rate
Ideally it would change screens automatically, but also change with the buttons.
I am guessing I have to develop some sort of code/script for this??
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
On Sun, 2020-01-05 at 23:04 +0000, Lou Ciotti wrote:
I am trying to get the LCD working on the DX4000 as well, but I have
Ubuntu server running. I have the display working, ie. if dispalys
the hello and exit information, but NOw I need to understand how to
get it to display the information I want. I deally I want to use
the up and down buttons, but have not got those working yet (at least
as far as I can tell.
I want it to show these screens (2 Line dispaly):
Host name
CPU load
IP address /Status for ETH0
IP Address/Status for ETH1
Upload Transfer Rate
Download Transfer Rate
Ideally it would change screens automatically, but also change with
the buttons.
I am guessing I have to develop some sort of code/script for this??
Hello, I'm asking for help. I want to install this amazing driver, LCDproc to my NAS, using Rockstor (CentOS based).
Could you help me, please? I have no experience on this issue. Here some pictures:
The NAS itself:
https://support.wdc.com/product.aspx?ID=1601&lang=en
Thank you very much!
Last edit: Dante León Marín Carril 2018-11-02
That's an odd looking connector up there. From the view of the lit LCD and the part number, it's likely that the core LCD is some sort of 16x2 HD44780-based LCD module, but it looks tough to guess which lines at the connector might correspond to which standard HD447800 signals because the die is under an epoxy blob, not in a standard PLCC or QFP package that one might trace out.
I won't say it's impossible to figure out but it looks quite difficult.
Thank you for answering so fast. Do you think is a good idea to try different drivers until someone works? Which ones do you think it could be the best start to try them? Thank you again.
The driver isn't the issue, it's the connection back to the CPU. It's likely that's just an HD44780 under one of those epoxy bubbles. That's the driver you probably need. What you have to know is what I/O location in memory the ports are at, and what bits control which functions. Even more than that, the HD44780 can be talked to in 4-bit mode or 8-bit mode and you'd need to know that just to begin speaking to the LCD.
In the case of attaching a raw HD44780-type 16x2 LCD, there are examples in the LCDproc docs about how to wire them up to a PC parallel port. The port has one of several known addresses and the wiring has to match what the driver is told about the data pins and the handshake lines.
Without knowing how the DX4000 is wired and how it talks to its LCD, you can't just "load a driver" for LCDproc and have anything work. You have to know the ports and pins first.
Last edit: Ethan Dicks 2018-11-03
Well.. This is sad... :c Thanks for your advice.
i know this is an old topic, but relevant to me here as I have a DX4000 now running IPFire and have been able to get atleast (for now) LCD4Linux to recognize the device. I am also interested in testing LDCproc, but will be doing that next.
One thing to note about this LCD is that it is 'compatible' with the generic HD44780 and on the DX4000 it uses parallel port 0x378
I have not tested much yet.. i literally "just" got this working. you will need to add the parport device to the system by executing as root:
'mknod /dev/parport0 c 99 0'
this helped me to get the device to initialize for lcd4linux
I "highly" recommend you watch this video and mod the pcb on the DX4000 to use a serial console (https://www.youtube.com/watch?v=amUXkdGdcTg&t=264s), it makes install, config, and everything so much better.
I hope to be able to try LCDproc very soon, i want to see how easy and well it works too!
hope this helps some.
[edit] some details of the device:
lcd4linux.c: initializing driver HD44780
HD44780: $Rev: 1066 $
HD44780: using model 'generic'
HD44780: using parallel port
HD44780: using 1 Controller(s)
HD44780: using 8 bit mode
udelay: using gettimeofday() delay loop
HD44780: using ppdev /dev/parport0
HD44780: wiring: DISPLAY:RS - PARPORT:INIT (Pin 16)
HD44780: wiring: DISPLAY:RW - PARPORT:AUTOFD (Pin 14)
HD44780: wiring: DISPLAY:ENABLE - PARPORT:STROBE (Pin 1)
HD44780: wiring: DISPLAY:ENABLE2 - PARPORT:GND
HD44780: wiring: DISPLAY:ENABLE3 - PARPORT:GND
HD44780: wiring: DISPLAY:ENABLE4 - PARPORT:GND
HD44780: wiring: DISPLAY:BACKLIGHT - PARPORT:GND
HD44780: wiring: DISPLAY:GPO - PARPORT:GND
HD44780: wiring: DISPLAY:GPI - PARPORT:GND
HD44780: wiring: DISPLAY:POWER - PARPORT:GND
HD44780: timing: CY = 1000 ns (default)
HD44780: timing: PW = 450 ns (default)
HD44780: timing: AS = 140 ns (default)
HD44780: timing: AH = 20 ns (default)
HD44780: timing: INIT1 = 4100 us (default)
HD44780: timing: INIT2 = 100 us (default)
HD44780: timing: EXEC = 80 us (default)
HD44780: timing: WRCG = 120 us (default)
HD44780: timing: CLEAR = 2250 us (default)
HD44780: timing: HOME = 2250 us (default)
HD44780: timing: ONOFF = 2250 us (default)
HD44780: using busy-flag checking
HD44780: timeout waiting for busy flag on controller 1 (0x92)
HD44780: timeout waiting for busy flag on controller 1 (0xd1)
HD44780: using 0 GPI's and 0 GPO's
initializing layout 'Default'
layout.c: Layout:Default: migrating 'row1.col1' to 'Layer:1.row1.col1'
Creating new timer group (500 ms)
widget 'CPU': Class 'text', Parent '<root>', Layer 1, Row 0, Col 0 (to 0,9)
lcd4linux.c: starting main loop</root>
Last edit: Raz Black 2019-04-05
here are some details after installing OPNsense:
ppc1: <parallel port=""> port 0x378-0x37f irq 5 on acpi0
ppc1: Generic chipset (NIBBLE-only) in COMPATIBLE mode
ppbus0: <parallel bus="" port=""> on ppc1
lpt0: <printer> on ppbus0
lpt0: Interrupt-driven port
ppi0: <parallel i="" o=""> on ppbus0
ppc0: cannot reserve I/O port range</parallel></printer></parallel></parallel>
I've tried, /dev/lcd /dev/lpt0 /dev/cuau1 /dev/ppc1 and anything else i could think of.. but nothing, only able to get the LCD to clear and the first line just seems to blink solid, but just faintly so i'm not sure that is good here in this case.
unfortunately, i am unable to get LCDd and lcdproc working here with hd44780 driver... not sure why yet. Here are the contents of my LCDd.conf file:
LCDd.conf
[server]
DriverPath=/usr/local/lib/lcdproc/
Driver=hd44780
Bind=127.0.0.1
Port=13666
ReportLevel=5
ReportToSyslog=yes
User=nobody
Foreground=no
Hello="--- OPNsense ---"
Hello=" . "
GoodBye=" System "
GoodBye=" Shutdown "
WaitTime=5
ServerScreen=no
Heartbeat=off
[menu]
[hd44780]
ConnectionType=8bit
Port=0x378
Device=/dev/lpt0
Speed=0
Keypad=no
Backlight=no
OutputPort=no
Size=16x2
CharMap=hd44780_default
DelayMult=2
DelayBus=true
hello again,
i have it working now with LCDproc in OPNsense.. works great. here are my files:
LCDd.conf
LCDd
[server]
DriverPath=/usr/local/lib/lcdproc/
Driver=hd44780
Bind=127.0.0.1
Port=13666
ReportLevel=5
ReportToSyslog=yes
User=nobody
Foreground=no
Hello="--- OPNsense ---"
Hello=" . "
GoodBye=" System "
GoodBye=" Shutdown "
WaitTime=5
ServerScreen=no
Backlight=on
Heartbeat=off
[menu]
Hitachi HD44780 driver
[hd44780]
ConnectionType=winamp
Port=0x378
bidirectional=yes
Speed=0
Keypad=no
Contrast=100
Brightness=100
OffBrightness=0
Backlight=no
OutputPort=no
Size=16x2
CharMap=hd44780_default
DelayMult=2
DelayBus=true
The lcdproc.conf is pretty much default as provided... things scroll a bit fast though :)
hope this helps you with your DX4000
I am trying to get the LCD working on the DX4000 as well, but I have Ubuntu server running. I have the display working, ie. if dispalys the hello and exit information, but NOw I need to understand how to get it to display the information I want. I deally I want to use the up and down buttons, but have not got those working yet (at least as far as I can tell.
I want it to show these screens (2 Line dispaly):
Host name
CPU load
IP address /Status for ETH0
IP Address/Status for ETH1
Upload Transfer Rate
Download Transfer Rate
Ideally it would change screens automatically, but also change with the buttons.
I am guessing I have to develop some sort of code/script for this??
On Sun, 2020-01-05 at 23:04 +0000, Lou Ciotti wrote:
Have a look at lcdproc the LCDproc system status information viewer, it
does some of what you want.
Martin