andrzejtp
Posts: 1
Joined: Mon Apr 15, 2019 7:52 pm

[SOLVED] Which dtb for which model?

Mon Apr 15, 2019 7:59 pm

Hi All,

I've been searching the internet but cannot find a simple information: Which dtb file is for which rpi model? I want to prepare a minimal sd card which is _not_ meant to be inserted into different models, so I guess I don't need all the dtb files. My particular case is rpi zero, but I thought it might be useful to know which dtb matches which model.

Speaking of dtbs, is there any relation between kernel config I choose (bcmrpi_defconfig, bcm2835_defconfig and so on) and required dtb (or dts) file?

PhilE
Raspberry Pi Engineer & Forum Moderator
Raspberry Pi Engineer & Forum Moderator
Posts: 2152
Joined: Mon Sep 29, 2014 1:07 pm
Location: Cambridge

Re: Which dtb for which model?

Tue Apr 16, 2019 8:00 am

Most of them ought to be fairly self-explanatory, but some dtbs are used to support multiple boards when they are very similar (the firmware makes some small adjustments where necessary):

Code: Select all

bcm2708-rpi-0-w.dtb:      Pi Zero W
bcm2708-rpi-b.dtb:        Pi Model B and Model A
bcm2708-rpi-b-plus.dtb:   Pi B+, A+ and Zero
bcm2708-rpi-cm.dtb:       Compute Module (a minimal dtb, intended to be a starting point)
bcm2709-rpi-2-b.dtb:      Pi 2B
bcm2710-rpi-3-b.dtb:      Pi 3B
bcm2710-rpi-3-b-plus.dtb: Pi 3B+ and 3A+
bcm2710-rpi-cm3.dtb:      Compute Module 3
Upstream kernel builds use slightly different names, with more variants, and the firmware will use those names if config.txt includes "upstream_kernel=1".

A little known fact: if running on a Pi Zero, the firmware will look for bcm2708-rpi-zero.dtb, falling back to bcm2708-rpi-b-plus.dtb if it doesn't find it, so you could rename bcm2708-rpi-b-plus.dtb for your Zero-dedicated cut-down image.

Chris_G_Miller
Posts: 16
Joined: Sat Nov 14, 2015 3:45 pm
Location: Kent, England

Re: [SOLVED] Which dtb for which model?

Thu Jun 06, 2019 10:14 pm

Thank you for the clarification. I agree the parts of the filename like 'rpi-3-b' are really helpful, but how would one know whether
bcm2710-rpi-3-b.dts
or
bcm2837-rpi-3-b.dts
is the critical one for a Raspberry Pi 3 model B?
I need to add clauses for the i2c_dsi interface under the soc.
Those appear to need to be in the corresponding dtsi files (i.e. 270x.dtsi and 283x.dtsi), but I'm not clear whether it should be in one, the other or both of these locations - but I'd love to understand the conventions and logic used here.
Happy to refer to a more 'academic' document if someone is able to point me at one.

PhilE
Raspberry Pi Engineer & Forum Moderator
Raspberry Pi Engineer & Forum Moderator
Posts: 2152
Joined: Mon Sep 29, 2014 1:07 pm
Location: Cambridge

Re: [SOLVED] Which dtb for which model?

Mon Jun 10, 2019 8:36 am

The bcm27*.dts files are the downstream (written and hosted by Raspberry Pi) device tree files, while bcm28*.dts are the official Linux support files from kernel.org. The differences between upstream and downstream kernel builds vary from configuration changes (some options just not being enabled) to alternative driver usage (the downstream-only dwc_otg USB driver is the prime example - it gets more performance out of the interface, but doesn't support device mode). Mixing and matching upstream/downstream kernels and DTBs is not recommended, but there is an overlay (upstream.dtbo) that may allow an upstream kernel to run with a downstream DTB.

The naming scheme is confusing, but dates back to Broadcom using different part codes to identify the bare SoC die and the packaged part (originally with memory stacked on top). I don't remember which line of numbers is for the die and which the package, but the pairs are:

2708/2835: Pi Model A, Model B, A+, B+, Zero, Zero W, Compute Module
2709/2836: Pi 2B
2710/2837: Pi 3B, 3B+, Compute Module 3

Return to “Device Tree”