长话短说:
内核模块 sht3x (https://www.kernel.org/doc/html/latest/hwmon/sht3x.html) 在标准的 Debian 安装中似乎缺失了。我需要它来读取外部传感器。我怎样才能安装这个内核模块?
整个故事
我尝试将 SHT31 温度/湿度传感器连接到我的 Debian 笔记本电脑。为此,我闪存了一个 ATtiny85 微控制器来充当i2c-微型-USB界面。
我让这部分工作 -lsusb
将设备列为
Bus 003 Device 003: ID 0403:c631 Future Technology Devices International, Ltd i2c-tiny-usb interface
我也得到了有希望的回应i2cdetect
$ sudo i2cdetect -l
i2c-3 i2c i915 gmbus dpc I2C adapter
i2c-1 i2c i915 gmbus vga I2C adapter
i2c-8 i2c i2c-tiny-usb at bus 001 device 017 I2C adapter
i2c-6 i2c AUX B/port B I2C adapter
i2c-4 i2c i915 gmbus dpb I2C adapter
i2c-2 i2c i915 gmbus panel I2C adapter
i2c-0 i2c i915 gmbus ssc I2C adapter
i2c-7 i2c AUX D/port D I2C adapter
i2c-5 i2c i915 gmbus dpd I2C adapter
$ sudo i2cdetect 8
WARNING! This program can confuse your I2C bus, cause data loss and worse!
I will probe file /dev/i2c-8.
I will probe address range 0x08-0x77.
Continue? [Y/n] Y
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- 45 -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
但是,我无法读取传感器数据,因为内核模块 sht3x未安装在我的(标准 Debian)系统上,并且未在lsmod
.
问题
如何在 Debian 笔记本上安装并使用 sht3x 内核模块?
答案1
我假设您运行的是 Debian 10,但更高版本的说明类似。 Debian 10 中使用的内核版本支持您要的模块,但未启用;让我们解决这个问题。
安装您发行版中默认版本的内核源代码:
sudo apt install linux-source
提取它:
cd /usr/src tar xf linux-source-*.tar.xz
(假设只有一个
linux-source
tarball 可用,除非您安装了多个软件包,否则就会出现这种情况linux-source
)。复制当前内核配置:
cd linux-source-*/ cp /boot/config-$(uname -r) .config
启用模块的配置
sht3x
:make menuconfig
(这可能会抱怨缺少工具,例如编译器;sudo
apt install build-essential
应该修复问题)。要查找需要启用的选项及其位置,请按/并输入“SHT3X”:
这给出了一些信息:
- 该选项称为
SENSORS_SHT3X
; - 它列在“设备驱动程序”、“硬件监控支持”下;
- 它所依赖的选项已经启用;
- 但它被禁用了。
按Enter退出搜索结果,进入“设备驱动程序”,按Enter,然后进入“硬件监控支持”,Enter再次按,找到“SHT3x”选项,然后按 将M其启用为模块。
按Tab直到突出显示“保存”,然后Enter确认要写入的文件名 (
.config
),然后多次选择“退出”,直到返回提示符。- 该选项称为
最后,构建模块:
make drivers/hwmon/sht3x.ko
这可能需要额外的依赖项,至少
libelf-dev
是libssl-dev
(sudo apt install libelf-dev libssl-dev
)。如果一切顺利,您最终将得到一个
drivers/hwmon/sht3x.ko
可以作为模块加载的文件。