简介
很久以前买 R2S 的时候一起买了一个 LCD 小屏幕, 一直没用起来, 这次装了个小主机, 想着看能不能废物利用一下.
LCD4Linux 是一个小程序,它从内核和一些子系统抓取信息并将其显示在外部液晶显示器上。
下面是一些运行 LCD4Linux 的图片:
LCD4Linux 在两个不同尺寸的显示器上

Iomega HMNHD-CE 上 的 LCD4Linux

安装 lcd4linux
$ sudo apt-get install lcd4linux
查看 USB 屏幕的设备名称
$ lsusb
将会看到有lcd2usb interface的设备出现
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 003: ID 8087:0032 Intel Corp. AX210 Bluetooth
Bus 003 Device 013: ID 0403:c630 Future Technology Devices International, Ltd lcd2usb interface
Bus 003 Device 014: ID 2c7c:0125 Quectel Wireless Solutions Co., Ltd. EC25 LTE modem
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 004 Device 002: ID 0bda:8156 Realtek Semiconductor Corp. USB 10/100/1G/2.5G LAN
如果看不到, 可以更换一根线试试, 我就是这么解决的.
这里我们可以看到 当前设备的连接位置是在:
Bus 003 Device 013: ID 0403:c630 Future Technology Devices International, Ltd lcd2usb interface
然后可以在 /dev/bus/usb/003/013 看到我们的 USB 屏幕,记下这个路径, 后续会在配置文件中使用到.
配置
由于安全原因(配置可能包含邮件帐户的用户名/密码),配置文件必须确保仅具有用户的权限。小组或其他人不得读写,否则 lcd4linux 拒绝工作! 因此,如果以 root 身份运行 lcd4linux, /etc/libd4linux.conf 必须是:
chmod 600 /etc/lcd4linux.conf
chown root.root /etc/lcd4linux.conf
$ cd /etc
$ sudo vi lcd4linux.conf
先来个简单的 CPU 监控显示配置:
Display LCD2USB {
Driver 'LCD2USB' # 指定使用LCD2USB驱动
Size '16x2' # LCD dimension: 1602
Port '`/dev/bus/usb/003/002`' # Port: /dev/usbdev3.2
}
# CPU使用率部件
Widget CPU {
class 'Text' #部件类型指定为文本
expression proc_stat::cpu('busy', 500)
prefix 'CPU:' #前缀
postfix '% |' #后缀
width 10 #部件占用字符数
precision 1
align 'L' # L R 分别表示左对齐 和右对齐
update 500 # 更新频率 500毫秒
}
Widget RAM {
class 'Text'
expression meminfo('MemTotal')/1024
prefix 'RAM:'
postfix ' MB'
width 8
precision 0
align 'R'
update 500
}
Widget IPaddress {
class 'Text' # Type: Text
expression netinfo::ipaddr('vmbr0') # eth0's ip
prefix '' # 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 'CPU' # Display Widget Time in the second row and first column
# Col9 'RAM'
}
}
Display 'LCD2USB'
Layout 'Default'
启动
启动 lcd4linux 前请确定配置文件 lcd4linux.conf的权限是 600. 启动命令如下, -v 表示显示启动日志,如果失败将会显示错误原因
$ pkill lcd4linux
$ lcd4linux -v

我的这块是 16x2 的, 显示不了多少信息, 后面看能不能换一个大点的玩玩.
详细配置解释
配文件内容分 3 个部分
屏幕配置
Display LCD2USB {
Driver 'LCD2USB' # 指定使用LCD2USB驱动
Size '16x2' # LCD dimension: 1602
Port '/dev/usbdev3.2' # Port: /dev/usbdev3.2
}
定义显示部件
此处可以定义多个部件,部件中的表达式可以参考 官方提供的部件列表 Plugins
常用到的有:
plugin_meminfo 内存插件
该插件提供了 /proc/meminfo 文件的接口。
meminfo(key)/proc/meminfo 并返回<key>的值‘key’参数没有任何固定值,但作为搜索键进入/ proc / meminfo 文件。常用键是“MemTotal”或“MemFree”。执行’cat / proc / meminfo’以查看系统上可用的值。
Widget RAM {
class 'Text'
expression meminfo('MemTotal')/1024
postfix ' MB RAM'
width 11
precision 0
align 'R'
update 0
}
plugin_proc_stat 系统状态插件
| 表达式 | 解释 |
|---|---|
| proc_stat(key) | 从/proc/stat直接取值 |
| proc_stat(key, delay) | 从/proc/stat取变化量 |
| proc_stat::cpu(key, delay) | 从/proc/stat获取 CPU 信息 |
| proc_stat::disk(device, key, delay) | 从/proc/stat获取硬盘信息 |
示例:CPU:12%
Widget CPU {
class 'Text'
expression proc_stat::cpu('busy', 500)
prefix 'CPU:'
postfix '% |'
width 10
precision 1
align 'L'
update tick
}
Widget CPUBar {
class 'Bar'
expression proc_stat::cpu('busy', 500)
expression2 proc_stat::cpu('system', 500)
length 10
align 'L'
direction 'E'
update tack
}
uptime 启动时间插件
此插件以秒或以用户定义的格式返回当前系统的正常运行时间
| 表达式 | 解释 |
|---|---|
| uptime() | 返回系统启动的秒数 |
| uptime(format) | 以用户定义格式返回时间 |
format 的可选格式(格式指定类似于 printf()方法)
| 表达式 | 解释 |
|---|---|
| %s | 总秒数 |
| %S | 从 00-59 的秒数 |
| %m | 总分钟数 |
| %M | 从 00-59 的分钟数 |
| %h | 总小时数 |
| %H | 从 00-23 的小时数 |
| %d | 总天数 |
例子: Run 12 days 12:32:59
Widget Uptime {
class 'Text'
expression uptime('%d days %H:%M:%S')
width 20
align 'L'
prefix 'Run '
update tick
}
这里是一部分表达式的示例,其余可以通过官方提供的部件列表 Plugins 进行查看
指定布局
通过
Row 行与Col 格进行布局安排, 后面的数字表示具体的行数和格数
Layout Default {
Row1 {
Col1 'MyInfo' # 从第一行第一格开始显示
}
Row2 {
Col1 'CPU' # 从第二行第1格开始显示
Col11 'MEM' # 从第二行第11格开始显示(我的设备总计20格每行)
}
Row3 {
Col1 'IPaddress'
}
Row4 {
Col1 'Uptime'
}
}
