Surenoo LCD2USB LCD display in lcd4Linux

Some time ago i bough a 20×4 LCD display with an LCD2USB controller mounted from AliExpress (

My idea was to use this for an Openmediavault Server when i need to go to a LAN party, to prevent the need for a Monitor connected to the server i could use the display to show the IP and possible other usefull information, that could be handy.

Seems there is little information around the internet, about how to get one of these, displays working compared to back in the days.

Every note that i can locate says that when powering on the display from the USB port it should come up and say lcd2usb version x.xx but in my case the display is blank and looks to be more or less dead, in the beginning i was sure that i had bought a bad display, until i remembered that if the controller somehow was setup to keep the display in a low contrast and brightness in off mode, that would result in a display looking to be dead, so tweeking the contrast and brightness paramaters made the display come to life.

My lcd4linux.conf file:

Note: contrast and brightness are are still a work in progress, but it works.

Display LCD2USB {
Driver 'LCD2USB' #Model: LCD2USB
Size '20x4' #LCD dimension: 1602
# Port '/dev/usbdev3.2' #Port: /dev/usbdev3.2
Contrast 80
Brightness 40
icons 0

Widget IPaddress {
class 'Text' #Type: Text
expression netinfo::ipaddr('ens33') #eth0's ip
prefix 'IP:' #display "IP:"
width 16 #display width: 16
align 'C' #display: central
update 1000

Widget Time {
class 'Text'
expression strftime('%a %H:%M:%S',time())
width 16
align 'C'
update 1000

Layout Default {
Row1 {
Col1 'IPaddress' #Display Widget IPaddress in the first row and first column
Row2 {
Col1 'Time' #Display Widget Time in the second row and first column


Display 'LCD2USB'
Layout 'Default'

to test you can use the following command

root@Debian-test:/etc# lcd4linux -vv -F

the output should look something like this:

root@Debian-test:/etc# lcd4linux -vv -F
LCD4Linux 0.11.0-SVN-1193 starting
Dump of /etc/lcd4linux.conf:
Display 'LCD2USB'
Display:LCD2USB.Brightness 40
Display:LCD2USB.Contrast 80
Display:LCD2USB.Driver 'LCD2USB'
Display:LCD2USB.icons 0
Display:LCD2USB.Size '20x4'
Layout 'Default'
Layout:Default.Row1.Col1 'IPaddress'
Layout:Default.Row2.Col1 'Time'
Widget:IPaddress.align 'C'
Widget:IPaddress.class 'Text'
Widget:IPaddress.expression netinfo::ipaddr('ens33')
Widget:IPaddress.prefix 'IP:'
Widget:IPaddress.update 1000
Widget:IPaddress.width 16
Widget:Time.align 'C'
Widget:Time.class 'Text'
Widget:Time.expression strftime('%a %H:%M:%S',time())
Widget:Time.update 1000
Widget:Time.width 16

[DBus] Error connecting to the dbus session bus: Unable to autolaunch a dbus-daemon without a $DISPLAY for X11

plugin_mpd.c: [MPD] v0.83, check lcd4linux configuration file...
[MPD] WARNING: Plugin is not enabled! (set 'enabled 1' to enable this plugin)
[raspi] WARNING: Plugin is not enabled! (set 'enabled 1' to enable this plugin)
lcd4linux.c: initializing driver LCD2USB
LCD2USB: $Rev: 1130 $
LCD2USB: scanning USB for LCD2USB interface ...
LCD2USB: found LCD2USB interface on bus 001 device 008
LCD2USB: echo test successful
LCD2USB: firmware version 2.02
LCD2USB: installed controllers: CTRL0
initializing layout 'Default'
layout.c: Layout:Default: migrating 'row1.col1' to 'Layer:1.row1.col1'
layout.c: Layout:Default: migrating 'row2.col1' to 'Layer:1.row2.col1'
Creating new timer group (1000 ms)
widget 'IPaddress': Class 'text', Parent '<root>', Layer 1, Row 0, Col 0 (to 0,16)
widget 'Time': Class 'text', Parent '<root>', Layer 1, Row 1, Col 0 (to 1,16)
lcd4linux.c: starting main loop
Timer #0 skipped 31 interval(s) or 3100 ms.

and tada!, the displays show information.