You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

LFS系统Elan触控板故障:加载i2c_designware_core模块遇符号重复错误

解决LFS系统中Elan触控板+i2c_designware_core模块符号冲突问题

我之前在LFS环境折腾硬件驱动时也碰到过类似的模块符号冲突问题,结合你的排查信息,给你几个针对性的解决思路:

1. 先排查内核编译的配置冲突

你遇到的exports duplicate symbol错误,90%的概率是**内核已经把i2c_designware_core相关代码编译成内置组件(built-in)**了,而你现在又尝试加载同名的可加载模块,导致符号重复。

你可以去内核源码目录检查配置文件:

grep -i "i2c_designware" /usr/src/linux/.config

如果输出里有CONFIG_I2C_DESIGNWARE_CORE=y(注意是y不是m),就说明这个模块已经被编译进内核了,自然不能再加载外部模块。这种情况下需要修改配置:

cd /usr/src/linux
make menuconfig  # 找到I2C -> Designware I2C core support,把它改成模块模式(M)
make && make modules_install
cp arch/x86/boot/bzImage /boot/vmlinuz-lfs-你的内核版本号

重启后再尝试加载模块,应该就不会有冲突了。

2. 确认内核中是否已存在目标符号

即使rmmod显示模块未加载,也可能有其他依赖模块(比如i2c_designware_platform或i2c_designware_pci)被内置进内核,它们同样会导出i2c_dw_probe符号。你可以用这个命令验证:

cat /proc/kallsyms | grep i2c_dw_probe

如果能找到这个符号的输出,说明内核里已经有代码实现了它,这时候完全不需要再手动加载i2c_designware_core模块。

3. 验证Elan触控板的I2C设备是否被识别

假设内核已经正确内置/加载了i2c_designware组件,接下来要确认触控板本身是否被检测到:

  • 先查看系统中的I2C总线:
i2cdetect -l
  • 找到对应的总线后,扫描总线上的设备(比如总线编号是0):
i2cdetect -y 0

Elan触控板一般会显示15或2c这类地址,如果能看到,说明硬件连接没问题。

  • 最后加载触控板专属模块:
modprobe elan_i2c

然后检查输入设备是否被识别:

cat /proc/bus/input/devices | grep -A 5 -B 5 Elan

如果能看到对应的input设备,就可以用xinput(需要先安装Xorg工具链)来配置触控板的手势、灵敏度等参数了。

4. 调整LFS的模块加载顺序

LFS默认的模块加载规则可能没有处理好i2c模块的依赖关系,你可以创建一个自定义配置文件来强制依赖加载:
在/etc/modprobe.d/下新建elan.conf,写入:

install elan_i2c /sbin/modprobe i2c_designware_core; /sbin/modprobe --ignore-install elan_i2c
# 可选:添加ignore_lid参数解决合盖后触控板失效的问题
options elan_i2c ignore_lid=1

这个配置会在加载elan_i2c时自动先加载i2c_designware_core,避免依赖缺失。


内容的提问来源于stack exchange,提问作者TheVaffel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 10:11:41