컴퓨터.전자기기

X96 Air P4 / 전면 LED 활성화 하기 (CoreELEC)

ㅋㅋ잠자 2021. 8. 16. 06:14
반응형

안녕하세요? 이번에는 전면에 LCD ? LED 시계 나오는 곳을 활성화 시켜 보겠습니다.

 

이 부분은 CoreELEC 를 설치하면서 따로 별 생각이 없었는데요. 본래 있는게 없다보니 너무 불쌍해 보여 살려 보았습니다.

 

참고링크는 하기와 같으며, 하기 링크의 첨부 자료를 그대로 활용합니다.

https://github.com/arthur-liberman/vfd-configurations

 

바로 시작하겠습니다.

1. openVFD 애드온 설치

하기와 같이 설치합니다.

설정 --> 애드온 --> 애드온 저장소에서 설치하기 --> CoreELEC 애드온 --> 서비스

2. 애드온 설정파일 넣기

CoreELEC SSH 서버에 접근합니다.

혹은 전에 만들었던 Docker 컨테이너의 SSH 에 접근합니다.

"System is booting up. See pam_nologin(8)"
Welcome to Ubuntu 18.04.5 LTS (GNU/Linux 4.9.113 aarch64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage
This system has been minimized by removing packages and content that are
not required on a system that users do not log into.

To restore this content, you can run the 'unminimize' command.
Last login: Mon Aug 16 05:40:31 2021 from 192.168.0.8
root@CoreELEC:~# ceshell
##############################################
#                  CoreELEC                  #
#            https://coreelec.org            #
##############################################

CoreELEC (official): 19.2-Matrix_rc3 (Amlogic-ng.arm)
CoreELEC:~ #

시작해보겠습니다.

CoreELEC:~ # vi /storage/.config/vfd.conf

# This file must be renamed to vfd.conf and placed in the /storage/.config/ folder.
#
# X96 Max (S905X2) configuration
#--------------------
#gpio_xxx:
# [0] 0 = &gpio, 1 = &gpio_ao.
# [1] pin number - https://github.com/openSUSE/kernel/blob/master/include/dt-bindings/gpio/meson-g12a-gpio.h
# [0] Reserved - must be 0.

vfd_gpio_clk='0,65,0'
vfd_gpio_dat='0,64,0'
vfd_gpio_stb='1,10,0'

#chars:
# < DHHMM > Order of display chars (D=dots, represented by a single char)

vfd_chars='4,0,1,2,3'

#dot_bits:
# Order of dot bits. Typical configurations:
# Display Type 0, 1 usually has Alarm, USB, Play, Pause, Col, Ethernet, Wifi dots
# Alarm = 0, USB = 1, Play = 2, Pause = 3, Col = 4, Eth = 5, Wifi = 6
# Display Type 2 usually has APPS, USB, SETUP, CARD, Col, HDMI, CVBS dots
# APPS = 0, USB = 1, SETUP = 2, CARD = 3, Col = 4, HDMI = 5, CVBS = 6
# Display Type 3 Power, LAN, Col, Low Wifi, High Wifi
# N/A = 0, N/A = 1, Power = 2, LAN = 3, Col = 4, Low Wifi = 5, High Wifi = 6

vfd_dot_bits='0,1,2,3,4,5,6'

#display_type:
# [0] - Display type.
# [1] - Reserved - must be 0..
# [2] - Flags. (bit 0 = '1' - Common Anode display)
# [3] - Controller.

vfd_display_type='0x02,0x00,0x01,0x00'

상기를 입력하고 저장하고 리부팅합니다.

CoreELEC:~ # sync
CoreELEC:~ # reboot

3. 체킹 및 마치며

리부팅하면 정상적으로 LED 화면에 시간과 상태가 표시됩니다.

이 디스플레이 설정을 조금 수정해보려고 했으나, 본래 모습이 좋은 것 같아서 그냥 두기로 마음먹었습니다.

이 부품의 데이타쉬트는 하기와 같습니다.

https://pdf1.alldatasheet.com/datasheet-pdf/view/232882/PTC/PT6964.html

 

무언가 데이타 쉬트로는 SPI 를 사용하는 것처럼 되어 있네요.

드라이버 파일은 하기와 같습니다.

https://github.com/LibreELEC/linux_openvfd/blob/master/driver/openvfd_drv.c

 

상기 드라이버를 보면 misc_register 를 통해 /dev/openvfd 의 장치를 등록하는거 같은데요.

root@CoreELEC:/dev# ls | grep openvfd
openvfd

있습니다.

 

ioctl 및 sysfs 인터페이스를 통해 밝기 조절등을 할 수 있는 것 같은데요. 실제로는 안되는 것 같습니다.

root@CoreELEC:/sys/class/leds/openvfd# ls
brightness  led_cmd  led_on          power      trigger
device      led_off  max_brightness  subsystem  uevent

코드를 살펴보아도, 밝기 부분관련해서는 코드가 구현되어 있지 않았습니다.

static void openvfd_brightness_set(struct led_classdev *cdev,
        enum led_brightness brightness)
{
        pr_info("brightness = %d\n", brightness);

        if(pdata == NULL)
                return;
}

대략적으로 이 부분이 어떻게 돌아가는지 알아보았습니다.

간단하게 마치겠습니다.

 

감사합니다.

 

반응형