are 1-wire devices "discoverable"?
twoerner at gmail.com
Sat Feb 13 13:58:21 EST 2021
I just watched the amazing device tree presentation recently done by Thomas
Petazzoni (from Bootlin) for ST. During the presentation, which is
amazing, by the way ;-), Thomas describes the 1-wire protocol as not being
I was recently playing with the DS18B20 temperature sensor, which uses the
1-wire bus. In fact, I was playing with a bunch of different temperature
sensors with a RaspberryPi, and then gave a talk at a local RaspberryPi Meetup
group that I regularly attend.
My only experience with the 1-wire bus is with this one device, so maybe the
details of how the DS18B20 work are specific to the DS18B20 and not the way
1-wire devices work in general? But my (humble) conclusion is that the 1-wire
bus is discoverable (or at least quasi-discoverable).
It's true that you do need a device tree overlay to tell the kernel that you
want to use the 1-wire bus, and you have to tell the kernel which GPIO pin you
want to use as the 1 wire, but after that, attaching DS18B20 devices to a
running system works quite magically.
Each DS18B20 has a unique 64-bit number burned into it, the first 8 bits
specify the device type (i.e. the DS18B20), the next 48 bits are a unique
serial number, and the last 8 bits are a CRC of the previous 56 bits. Due to
the inclusion of the 8-bit device type, when I plug a DS18B20 into my board,
the kernel automatically creates a sysfs entry for it with a "temperature"
file that I can read to obtain the temperature in Celcius.
I don't know if that qualifies as "discoverable"? It's certainly a lot more
discoverable than I2C or SPI, although maybe not quite as discoverable as,
say, PCI. Specifying the 1 wire is not discoverable, but plugging 1-wire
devices into my board is maybe something that could be described as
More information about the Kernelnewbies