Device Information | 设备信息
- SOC: S905X3 (Meson SM1)
- Model: HK1 Box / Vontar X3 (MODEL_ID 512)
Armbian Version | 系统版本
- Kernel Version: 6.12.94-ophub(同样在 6.18.37-ophub 上重现;6.1.176-ophub 与 6.6.y 正常)
- Release: bookworm
Describe the bug | 问题描述
使用claude輔助定位問題並修復,提供的方法不一定通用
这台盒子(meson-sm1-hk1box-vontar-x3.dtb)有两颗独立的实体指示灯(红/蓝)。开机瞬间(u-boot阶段)蓝灯会短暂亮起,但只要kernel一接手,灯就會關閉,不管对 /sys/class/leds/sys_led/ 写入任何 brightness 或 trigger 值都无法改变。
用 armbian-update 分别测试 6.1.176 / 6.6.y / 6.12.y / 6.18.y,确认是从 6.12.y 开始出现这个regression,6.1.176 与 6.6.y 完全正常。
已找到的根本原因
sys_led 这个 GPIO-LED 节点使用的是 GPIOAO_11(aobus bank, gpio-11):
leds {
compatible = "gpio-leds";
status = "okay";
sys_led {
label = "sys_led";
gpios = <&gpio_ao 0x0b 0x00>;
default-state = "on";
linux,default-trigger = "default-on";
};
};
用 dtc 分别反解 6.1.176/6.6.y(正常)跟 6.12.94/6.18.37(异常)这几个版本的DTB,比对 leds 节点内容完全一致(唯一差异只有gpio-controller的phandle编号,属于不同版本DTB编译的正常现象)。
但同一支物理腳位(GPIOAO_11),同时也被AO PWM控制器引用:
pwm@7000 {
compatible = "amlogic,meson-g12-pwm-v2\0amlogic,meson8-pwm-v2";
reg = <0x00 0x7000 0x00 0x20>;
status = "okay";
pinctrl-0 = <&pwm_ao_a_pins>; /* pwm_ao_a group -> function pwm_ao_a on GPIOAO_11 */
pinctrl-names = "default";
};
透过 /sys/kernel/debug/pinctrl/*/pinmux-pins 确认:
pin 11 (GPIOAO_11): ff807000.pwm aobus-banks:608 function pwm_ao_a group pwm_ao_a
也就是说,GPIOAO_11 这支腳位在DTS里同时被两个装置引用:sys_led(GPIO功能)跟 pwm@7000(PWM_AO_A功能)。在6.1.176/6.6.y这个冲突似乎不会显现,但从6.12.y开始,PWM控制器的pinmux声明会覆盖掉GPIO的驱动结果,导致藍燈LED电路呈现關閉状态,与leds-gpio实际写入GPIO的逻辑值无关。
重现步骤
- 在HK1 Box / Vontar X3(MODEL_ID 512)上刷入6.12.y或6.18.y版本的Armbian
- 开机观察:u-boot阶段蓝灯短暂闪一下,kernel开机后立刻關閉無法喚起
- 用以下指令确认:
cat /sys/kernel/debug/gpio | grep sys_led
cat /sys/kernel/debug/pinctrl/*/pinmux-pins | grep GPIOAO_11
已验证有效的修复方法
把这颗AO PWM控制器disable掉,释放腳位给sys_led使用,蓝灯就能恢复正常:
sudo fdtput -t s /boot/dtb/amlogic/meson-sm1-hk1box-vontar-x3.dtb /soc/bus@ff800000/pwm@7000 status disabled
sudo reboot
(测试时用的是完整断电重开机,不是单纯reboot软重启)。改完之后蓝灯能像6.1.176/6.6.y时代一样持续常亮,风扇也恢复正常运作。
建议的修正方式
目前没看到HK1 Box这个型号有任何硬体实际接在PWM_AO_A上,建议直接在meson-sm1-hk1box-vontar-x3.dtb(以及可能共用同一份基础DTS的超频版-oc)里,把pwm@7000的status直接设成"disabled",这样以后大家更新kernel就不用每次手动重新patch这个问题了。
Device Information | 设备信息
Armbian Version | 系统版本
Describe the bug | 问题描述
使用claude輔助定位問題並修復,提供的方法不一定通用
这台盒子(meson-sm1-hk1box-vontar-x3.dtb)有两颗独立的实体指示灯(红/蓝)。开机瞬间(u-boot阶段)蓝灯会短暂亮起,但只要kernel一接手,灯就會關閉,不管对
/sys/class/leds/sys_led/写入任何brightness或trigger值都无法改变。用
armbian-update分别测试 6.1.176 / 6.6.y / 6.12.y / 6.18.y,确认是从 6.12.y 开始出现这个regression,6.1.176 与 6.6.y 完全正常。已找到的根本原因
sys_led这个 GPIO-LED 节点使用的是GPIOAO_11(aobus bank, gpio-11):用
dtc分别反解 6.1.176/6.6.y(正常)跟 6.12.94/6.18.37(异常)这几个版本的DTB,比对leds节点内容完全一致(唯一差异只有gpio-controller的phandle编号,属于不同版本DTB编译的正常现象)。但同一支物理腳位(
GPIOAO_11),同时也被AO PWM控制器引用:透过
/sys/kernel/debug/pinctrl/*/pinmux-pins确认:也就是说,
GPIOAO_11这支腳位在DTS里同时被两个装置引用:sys_led(GPIO功能)跟pwm@7000(PWM_AO_A功能)。在6.1.176/6.6.y这个冲突似乎不会显现,但从6.12.y开始,PWM控制器的pinmux声明会覆盖掉GPIO的驱动结果,导致藍燈LED电路呈现關閉状态,与leds-gpio实际写入GPIO的逻辑值无关。重现步骤
已验证有效的修复方法
把这颗AO PWM控制器disable掉,释放腳位给
sys_led使用,蓝灯就能恢复正常:(测试时用的是完整断电重开机,不是单纯
reboot软重启)。改完之后蓝灯能像6.1.176/6.6.y时代一样持续常亮,风扇也恢复正常运作。建议的修正方式
目前没看到HK1 Box这个型号有任何硬体实际接在PWM_AO_A上,建议直接在
meson-sm1-hk1box-vontar-x3.dtb(以及可能共用同一份基础DTS的超频版-oc)里,把pwm@7000的status直接设成"disabled",这样以后大家更新kernel就不用每次手动重新patch这个问题了。