Skip to content

HK1box(S905X3) 更新 6.12 kernel 後無法亮起藍燈 #3576

Description

@ray38080289

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/ 写入任何 brightnesstrigger 值都无法改变。

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的逻辑值无关。

重现步骤

  1. 在HK1 Box / Vontar X3(MODEL_ID 512)上刷入6.12.y或6.18.y版本的Armbian
  2. 开机观察:u-boot阶段蓝灯短暂闪一下,kernel开机后立刻關閉無法喚起
  3. 用以下指令确认:
    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@7000status直接设成"disabled",这样以后大家更新kernel就不用每次手动重新patch这个问题了。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions