요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.
1. 요약·해설
원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.
2. 영어 원문 전체
번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.
원문 전체 펼치기
==================
Leds BlinkM driver
==================
The leds-blinkm driver supports the devices of the BlinkM family.
They are RGB-LED modules driven by a (AT)tiny microcontroller and
communicate through I2C. The default address of these modules is
0x09 but this can be changed through a command. By this you could
daisy-chain up to 127 BlinkMs on an I2C bus.
The device accepts RGB and HSB color values through separate commands.
Also you can store blinking sequences as "scripts" in
the controller and run them. Also fading is an option.
The interface this driver provides is 3-fold:
a) LED multicolor class interface for use with triggers
#######################################################
The registration follows the scheme::
blinkm-<i2c-bus-nr>-<i2c-device-nr>:rgb:indicator
$ ls -h /sys/class/leds/blinkm-1-9:rgb:indicator
brightness device max_brightness multi_index multi_intensity power subsystem trigger uevent
Hue is controlled by the multi_intensity file and lightness is controlled by
the brightness file.
The order in which to write the intensity values can be found in multi_index.
Exactly three values between 0 and 255 must be written to multi_intensity to
change the color::
$ echo 255 100 50 > multi_intensity
The overall lightness be changed by writing a value between 0 and 255 to the
brightness file.
b) LED class interface for use with triggers
############################################
The registration follows the scheme::
blinkm-<i2c-bus-nr>-<i2c-device-nr>-<color>
$ ls -h /sys/class/leds/blinkm-6-*
/sys/class/leds/blinkm-6-9-blue:
brightness device max_brightness power subsystem trigger uevent
/sys/class/leds/blinkm-6-9-green:
brightness device max_brightness power subsystem trigger uevent
/sys/class/leds/blinkm-6-9-red:
brightness device max_brightness power subsystem trigger uevent
(same is /sys/bus/i2c/devices/6-0009/leds)
We can control the colors separated into red, green and blue and
assign triggers on each color.
E.g.::
$ cat blinkm-6-9-blue/brightness
05
$ echo 200 > blinkm-6-9-blue/brightness
$
$ modprobe ledtrig-heartbeat
$ echo heartbeat > blinkm-6-9-green/trigger
$
b) Sysfs group to control rgb, fade, hsb, scripts ...
#####################################################
This extended interface is available as folder blinkm
in the sysfs folder of the I2C device.
E.g. below /sys/bus/i2c/devices/6-0009/blinkm
$ ls -h /sys/bus/i2c/devices/6-0009/blinkm/
blue green red test
Currently supported is just setting red, green, blue
and a test sequence.
E.g.::
$ cat *
00
00
00
#Write into test to start test sequence!#
$ echo 1 > test
$
$ echo 255 > red
$
as of 07/2024
dl9pf <at> gmx <dot> de
jstrauss <at> mailbox <dot> org
3. 한국어 전문 번역
영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.
BlinkM과 multicolor interface
1-45`leds-blinkm` driver는 BlinkM family device를 지원합니다. 이 device는 (AT)tiny microcontroller가 구동하는 RGB LED module이며 I2C로 통신합니다. 기본 address는 `0x09`이고 command로 바꿀 수 있어 I2C bus 하나에 최대 127개 BlinkM을 daisy-chain할 수 있습니다.
Controller는 별도 command로 RGB와 HSB color 값을 받고, blinking sequence를 script로 저장해 실행할 수 있으며 fading도 지원합니다. Driver는 세 종류의 interface를 제공합니다.
첫 번째는 trigger와 함께 사용하는 LED multicolor class입니다. Device 이름은 `blinkm-<i2c-bus-nr>-<i2c-device-nr>:rgb:indicator` 형식이고, sysfs에는 `brightness`, `max_brightness`, `multi_index`, `multi_intensity`, `trigger` 등이 나타납니다.
Hue는 `multi_intensity`, 전체 lightness는 `brightness`가 제어합니다. `multi_index`에서 component 작성 순서를 확인한 뒤 `multi_intensity`에 0에서 255 사이 값 정확히 세 개를 씁니다. 예시는 `$ echo 255 100 50 > multi_intensity`입니다.
전체 lightness는 `brightness` file에 0에서 255 사이 값을 써서 변경합니다.
RGB component와 전체 밝기를 분리해 제어합니다.
==================
Leds BlinkM driver
==================
The leds-blinkm driver supports the devices of the BlinkM family.
They are RGB-LED modules driven by a (AT)tiny microcontroller and
communicate through I2C. The default address of these modules is
0x09 but this can be changed through a command. By this you could
daisy-chain up to 127 BlinkMs on an I2C bus.
The device accepts RGB and HSB color values through separate commands.
Also you can store blinking sequences as "scripts" in
the controller and run them. Also fading is an option.
The interface this driver provides is 3-fold:
a) LED multicolor class interface for use with triggers
#######################################################
The registration follows the scheme::
blinkm-<i2c-bus-nr>-<i2c-device-nr>:rgb:indicator
$ ls -h /sys/class/leds/blinkm-1-9:rgb:indicator
brightness device max_brightness multi_index multi_intensity power subsystem trigger uevent
Hue is controlled by the multi_intensity file and lightness is controlled by
the brightness file.
The order in which to write the intensity values can be found in multi_index.
Exactly three values between 0 and 255 must be written to multi_intensity to
change the color::
$ echo 255 100 50 > multi_intensity
The overall lightness be changed by writing a value between 0 and 255 to the
brightness file.
b) LED class interface for use with triggers
############################################
The registration follows the scheme::
blinkm-<i2c-bus-nr>-<i2c-device-nr>-<color>
색상별 LED class interface
46-76두 번째는 trigger와 함께 사용하는 일반 LED class interface입니다. 이름은 `blinkm-<i2c-bus-nr>-<i2c-device-nr>-<color>` 형식이며 red, green, blue가 각각 독립적인 `/sys/class/leds/` entry로 등록됩니다.
같은 entry는 I2C device의 `leds` directory에서도 확인할 수 있습니다. 각 color를 분리해 밝기를 제어하고 color마다 서로 다른 trigger를 지정할 수 있습니다.
예제는 blue `brightness`를 읽고 `200`으로 바꿉니다. 이어 `ledtrig-heartbeat` module을 load한 뒤 green channel의 `trigger`에 `heartbeat`를 써서 해당 color에 heartbeat trigger를 연결합니다.
개별 LED class entry 하나에 trigger를 연결하는 절차입니다.
$ ls -h /sys/class/leds/blinkm-6-*
/sys/class/leds/blinkm-6-9-blue:
brightness device max_brightness power subsystem trigger uevent
/sys/class/leds/blinkm-6-9-green:
brightness device max_brightness power subsystem trigger uevent
/sys/class/leds/blinkm-6-9-red:
brightness device max_brightness power subsystem trigger uevent
(same is /sys/bus/i2c/devices/6-0009/leds)
We can control the colors separated into red, green and blue and
assign triggers on each color.
E.g.::
$ cat blinkm-6-9-blue/brightness
05
$ echo 200 > blinkm-6-9-blue/brightness
$
$ modprobe ledtrig-heartbeat
$ echo heartbeat > blinkm-6-9-green/trigger
$
b) Sysfs group to control rgb, fade, hsb, scripts ...
#####################################################
확장 BlinkM sysfs group
77-107세 번째는 RGB, fade, HSB, script 등을 제어하기 위한 확장 sysfs group입니다. I2C device의 sysfs directory 아래 `blinkm` folder로 제공되며 예제 path는 `/sys/bus/i2c/devices/6-0009/blinkm`입니다.
현재 지원되는 항목은 `red`, `green`, `blue` 설정과 test sequence입니다. Directory에는 `blue`, `green`, `red`, `test` file이 나타납니다.
각 color file은 channel 값을 표시하거나 설정합니다. `test`에 값을 쓰면 test sequence를 시작하고, 예를 들어 `$ echo 255 > red`는 red channel을 최댓값으로 설정합니다.
2024년 7월 기준으로 문서화된 기능입니다.
문서의 기준 시점은 07/2024이며, 작성자 연락처는 원문 마지막에 보존되어 있습니다.
This extended interface is available as folder blinkm
in the sysfs folder of the I2C device.
E.g. below /sys/bus/i2c/devices/6-0009/blinkm
$ ls -h /sys/bus/i2c/devices/6-0009/blinkm/
blue green red test
Currently supported is just setting red, green, blue
and a test sequence.
E.g.::
$ cat *
00
00
00
#Write into test to start test sequence!#
$ echo 1 > test
$
$ echo 255 > red
$
as of 07/2024
dl9pf <at> gmx <dot> de
jstrauss <at> mailbox <dot> org
요약·해설
leds-blinkm.rst:1-107BlinkM driver는 I2C RGB module을 multicolor class, 색상별 LED class, device-specific sysfs group이라는 세 interface로 노출합니다.
공통 밝기와 RGB intensity를 함께 조절하거나, red·green·blue에 독립 trigger를 붙이고 test sequence를 실행할 수 있습니다.