Re: Raspberry Pi POE+ hat overlay

From: Brian Scott <bscott_at_bunyatech.com.au>
Date: Sat, 13 May 2023 02:58:14 UTC
> [Note: The copy I got in E-mail does not show your message as having
> been sent to the list. Not knowing why, I am just directly replying
> instead of putting your content on the list. If you do send to the
> list, feel free to include any of my content additions.]

[Apologies, finally got covid and my brain is running on fumes in the tank and feels like somebody has snuck a basketball in with it.]

On May 12, 2023, at 18:13, Brian Scott<bscott@bunyatech.com.au>  wrote:

> On 13/5/2023 3:41 am, Mark Millard wrote:
>> On May 12, 2023, at 10:19, Mark Millard<marklmi@yahoo.com>  wrote:
>>
>>> On May 12, 2023, at 10:11, Mark Millard<marklmi@yahoo.com>  wrote:
>>>
>>>> On May 12, 2023, at 09:38, Doug Rabson<dfr@rabson.org>  wrote:
>>>>
>>>>> On Fri, 12 May 2023 at 17:27, Mark Millard<marklmi@yahoo.com>  wrote:
>>>>> On May 12, 2023, at 08:43, Doug Rabson<dfr@rabson.org>  wrote:
>>>>>
>>>>>> I have a pi4 with the official POE+ hat which I want to run FreeBSD on. One thing I noticed is that the fan doesn't run in FreeBSD so I decided to try and write a little driver for it. First step seems to be to load the corresponding devicetree overlay by adding something like this to /boot/msdos/config.txt:
>>>>>>
>>>>>> dtoverlay=rpi-poe-plus
>>>>>> dtparam=poe_fan_temp0=45000,dtparam=poe_fan_temp0_hyst=3000
>>>>>> dtparam=poe_fan_temp1=50000,dtparam=poe_fan_temp1_hyst=3000
>>>>>> dtparam=poe_fan_temp2=62000,dtparam=poe_fan_temp2_hyst=4000
>>>>>> dtparam=poe_fan_temp3=70000,dtparam=poe_fan_temp3_hyst=5000
>>>>>>
>>>>>> Unfortunately this is where I'm stuck - the overlay is not present in the final DTB given to the kernel so there isn't anything to hook a driver to. Are dtoverlays supposed to work on FreeBSD?
>>>>> The RPi* firwmare version that FreeBSD has in ports and uses
>>>>> in making snapshots and other images does not have that overlay:
>>>>>
>>>>> # ls -Tld /usr/local/share/rpi-firmware/overlays/rpi*
>>>>> -rw-r--r--  1 root  wheel   489 Mar  3 05:29:57 2021 /usr/local/share/rpi-firmware/overlays/rpi-backlight.dtbo
>>>>> -rw-r--r--  1 root  wheel  4081 Mar  3 05:29:57 2021 /usr/local/share/rpi-firmware/overlays/rpi-cirrus-wm5102.dtbo
>>>>> -rw-r--r--  1 root  wheel   643 Mar  3 05:29:57 2021 /usr/local/share/rpi-firmware/overlays/rpi-dac.dtbo
>>>>> -rw-r--r--  1 root  wheel  2574 Mar  3 05:29:57 2021 /usr/local/share/rpi-firmware/overlays/rpi-display.dtbo
>>>>> -rw-r--r--  1 root  wheel   842 Mar  3 05:29:57 2021 /usr/local/share/rpi-firmware/overlays/rpi-ft5406.dtbo
>>>>> -rw-r--r--  1 root  wheel  2937 Mar  3 05:29:57 2021 /usr/local/share/rpi-firmware/overlays/rpi-poe.dtbo
>>>>> -rw-r--r--  1 root  wheel   771 Mar  3 05:29:57 2021 /usr/local/share/rpi-firmware/overlays/rpi-proto.dtbo
>>>>> -rw-r--r--  1 root  wheel   893 Mar  3 05:29:57 2021 /usr/local/share/rpi-firmware/overlays/rpi-sense.dtbo
>>>>> -rw-r--r--  1 root  wheel   567 Mar  3 05:29:57 2021 /usr/local/share/rpi-firmware/overlays/rpi-tv.dtbo
>>>>> -rw-r--r--  1 root  wheel  1226 Mar  3 05:29:57 2021 /usr/local/share/rpi-firmware/overlays/rpivid-v4l2.dtbo
>>>>>
>>>>> You do not mention establishing a copy of overlays/rpi-poe-plus.dtbo .
>>>>>
>>>>> I copied the file from a rasbian install I had for another project. Perhaps I should find the corresponding source for it and build it with the device tree source from FreeBSD.
>>>>>
>>>>> You also do not mention what version of FreeBSD you are using
>>>>> on the RPi4B. The output of the command:
> I had a quick look at this a few months ago but seemed too hard for me.
>
> I now have the fan directly connected to the 5V lines and running full time. Not a bad idea in the Australian summer for a box that was sitting outside. I've even installed a second fan to keep the temperatures around 60C. All of that is my problems not yours.
>
> I just checked and I do have the overlay enabled (dtoverlay=rpi-poe) on a "13.2-STABLE stable/13-n255298-7dea7445ba44" system (built a week ago).

> I'll note that recent enough stable/13 (going back a ways but not all the
> way back to releng/13.2 being branched) has the kernel fix that avoids
> crashing for more modern RPi* firmware, allowing potential experiments with
> such.
>
> releng/14.0 should be the first RELEASE to have the fix. Later releng/13.3
> would be created and pick up the fix.

Excellent. 14.0 also has the ds3231 etc fix.

> The overlay is from the rpi-firmware port (rpi-firmware-1.20210303.g20210303). I see that I am not using the 'plus' version (my hat is a +) but also that my rpi-firmware package is quite ancient compared to those Mark was quoting.

> 1.20210527/boot/overlays/rpi-poe-plus.dtbo
> 1.20210727/boot/overlays/rpi-poe-plus.dtbo
> 1.20210805/boot/overlays/rpi-poe-plus.dtbo
>
> are all from 2021 (May-27, Jul-27, Aug-05). They are the
> first 3 officially tagged releases after the 1.20210303
> (2021-Mar-03) RPi* firmware that FreeBSD bundles in
> RPi* snapshots and releases as things are.
>
> (The 2021-Jul-27 and 2021-Aug-05 being so close in time
> suggests that 1.20210727 was a bad release.)
>
> For releng/13.2 , 1.20210805 may be the best option that
> officially has an overlays/rpi-poe-plus.dtbo .

I'll try updating (after a backup). I thought I had recently, see initial comment.

> In devinfo -v I see:
>
> unknown pnpinfo name=rpi-poe-fan@0 compat=raspberrypi,rpi-poe-fan
>
> I can't find my old emails quickly but seem to recall a lack of documentation at the time for the chip in the POE+ device. There were a bunch of mystery registers tucked in after the storage area that were in an area that vendors could use for their own purposes. I.e. nothing documented.
>
> Good luck!
>
> Brian
>>>>> I'm running 13.2-RELEASE-p0
>>>> That limits the range of firmware you can experiment with
>>>> but the following tagged vintages should be compatible and
>>>> also have an overlays/rpi-poe-plus.dtbo present:
>>>>
>>>> 1.20210527/boot/overlays/rpi-poe-plus.dtbo
>>>> 1.20210727/boot/overlays/rpi-poe-plus.dtbo
>>>> 1.20210805/boot/overlays/rpi-poe-plus.dtbo
>>>>
>>>> So extracting a consistent/full set of firmware and trying
>>>> it is a possibility.
>>>>
>>>> The first 3 tags links on:
>>>>
>>>> https://github.com/raspberrypi/linux/tags?after=1.20210831
>> That was likely a wasteful reference for me to supply. Trying
>> again:
>>
>> https://github.com/raspberrypi/firmware/tags?after=1.20210831
>>
>> likely avoids ending up with a full set of linux materials
>> to go along with the firmware (smaller download with a smaller
>> expansion).
>>
>>>> are for the above 3 firmware versions.
>>>>
>>>> Anything newer will lead to a FreeBSD kernel crash for
>>>> 13.2-RELEASE-p0 due to mishandling the .dtb file that
>>>> would be used.
>>>>
>>>> As an example of what is in . . ./boot/  from one of those 3:
>>>>
>>>> # ls -Tld firmware-1.20210805/boot/*
>>>> -rw-rw-r--  1 root  wheel    18693 Aug  5 04:11:18 2021 firmware-1.20210805/boot/COPYING.linux
>>>> -rw-rw-r--  1 root  wheel     1594 Aug  5 04:11:18 2021 firmware-1.20210805/boot/LICENCE.broadcom
>>>> -rw-rw-r--  1 root  wheel    26401 Aug  5 04:11:18 2021 firmware-1.20210805/boot/bcm2708-rpi-b-plus.dtb
>>>> -rw-rw-r--  1 root  wheel    25749 Aug  5 04:11:18 2021 firmware-1.20210805/boot/bcm2708-rpi-b-rev1.dtb
>>>> -rw-rw-r--  1 root  wheel    26138 Aug  5 04:11:18 2021 firmware-1.20210805/boot/bcm2708-rpi-b.dtb
>>>> -rw-rw-r--  1 root  wheel    26060 Aug  5 04:11:18 2021 firmware-1.20210805/boot/bcm2708-rpi-cm.dtb
>>>> -rw-rw-r--  1 root  wheel    27076 Aug  5 04:11:18 2021 firmware-1.20210805/boot/bcm2708-rpi-zero-w.dtb
>>>> -rw-rw-r--  1 root  wheel    25883 Aug  5 04:11:18 2021 firmware-1.20210805/boot/bcm2708-rpi-zero.dtb
>>>> -rw-rw-r--  1 root  wheel    27276 Aug  5 04:11:18 2021 firmware-1.20210805/boot/bcm2709-rpi-2-b.dtb
>>>> -rw-rw-r--  1 root  wheel    27425 Aug  5 04:11:18 2021 firmware-1.20210805/boot/bcm2710-rpi-2-b.dtb
>>>> -rw-rw-r--  1 root  wheel    29542 Aug  5 04:11:18 2021 firmware-1.20210805/boot/bcm2710-rpi-3-b-plus.dtb
>>>> -rw-rw-r--  1 root  wheel    28923 Aug  5 04:11:18 2021 firmware-1.20210805/boot/bcm2710-rpi-3-b.dtb
>>>> -rw-rw-r--  1 root  wheel    27421 Aug  5 04:11:18 2021 firmware-1.20210805/boot/bcm2710-rpi-cm3.dtb
>>>> -rw-rw-r--  1 root  wheel    49825 Aug  5 04:11:18 2021 firmware-1.20210805/boot/bcm2711-rpi-4-b.dtb
>>>> -rw-rw-r--  1 root  wheel    49821 Aug  5 04:11:18 2021 firmware-1.20210805/boot/bcm2711-rpi-400.dtb
>>>> -rw-rw-r--  1 root  wheel    50499 Aug  5 04:11:18 2021 firmware-1.20210805/boot/bcm2711-rpi-cm4.dtb
>>>> -rw-rw-r--  1 root  wheel    52456 Aug  5 04:11:18 2021 firmware-1.20210805/boot/bootcode.bin
>>>> -rw-rw-r--  1 root  wheel     7278 Aug  5 04:11:18 2021 firmware-1.20210805/boot/fixup.dat
>>>> -rw-rw-r--  1 root  wheel     5407 Aug  5 04:11:18 2021 firmware-1.20210805/boot/fixup4.dat
>>>> -rw-rw-r--  1 root  wheel     3211 Aug  5 04:11:18 2021 firmware-1.20210805/boot/fixup4cd.dat
>>>> -rw-rw-r--  1 root  wheel     8416 Aug  5 04:11:18 2021 firmware-1.20210805/boot/fixup4db.dat
>>>> -rw-rw-r--  1 root  wheel     8418 Aug  5 04:11:18 2021 firmware-1.20210805/boot/fixup4x.dat
>>>> -rw-rw-r--  1 root  wheel     3211 Aug  5 04:11:18 2021 firmware-1.20210805/boot/fixup_cd.dat
>>>> -rw-rw-r--  1 root  wheel    10262 Aug  5 04:11:18 2021 firmware-1.20210805/boot/fixup_db.dat
>>>> -rw-rw-r--  1 root  wheel    10262 Aug  5 04:11:18 2021 firmware-1.20210805/boot/fixup_x.dat
>>>> drwxrwxr-x  2 root  wheel      236 Aug  5 04:11:18 2021 firmware-1.20210805/boot/overlays
>>>> -rw-rw-r--  1 root  wheel  2959904 Aug  5 04:11:18 2021 firmware-1.20210805/boot/start.elf
>>>> -rw-rw-r--  1 root  wheel  2235712 Aug  5 04:11:18 2021 firmware-1.20210805/boot/start4.elf
>>>> -rw-rw-r--  1 root  wheel   799964 Aug  5 04:11:18 2021 firmware-1.20210805/boot/start4cd.elf
>>>> -rw-rw-r--  1 root  wheel  3731528 Aug  5 04:11:18 2021 firmware-1.20210805/boot/start4db.elf
>>>> -rw-rw-r--  1 root  wheel  2987720 Aug  5 04:11:18 2021 firmware-1.20210805/boot/start4x.elf
>>>> -rw-rw-r--  1 root  wheel   799964 Aug  5 04:11:18 2021 firmware-1.20210805/boot/start_cd.elf
>>>> -rw-rw-r--  1 root  wheel  4803496 Aug  5 04:11:18 2021 firmware-1.20210805/boot/start_db.elf
>>>> -rw-rw-r--  1 root  wheel  3711432 Aug  5 04:11:18 2021 firmware-1.20210805/boot/start_x.elf
>>> Note the lack of config.txt , armstub8-gic.bin , and
>>> armstub8.bin .
>>>
>>>> (I'll not list the overlays/* .)
>>>>
>>>> I've no clue to the consequences of mixing and matching
>>>> materials from different vintages of the firmware. It
>>>> does appear that:
>>>>
>>>> 1.20210727/boot/overlays/rpi-poe-plus.dtbo
>>>> 1.20210805/boot/overlays/rpi-poe-plus.dtbo
>>>>
>>>> (the newer 2 of th3 3) are the same by content but that:
>>>>
>>>> 1.20210527/boot/overlays/rpi-poe-plus.dtbo
>>>>
>>>> is distinct in its older content.
>>> Be warned that the sys-utils/rpi-firmware port installs a
>>> couple of files that are not based on
>>> https://github.com/raspberrypi/  materials:
>>>
>>> # ls -Tld /boot/efi/armstub8*
>>> -rwxr-xr-x  1 root  wheel  5888 Apr 20 19:25:22 2022 /boot/efi/armstub8-gic.bin
>>> -rwxr-xr-x  1 root  wheel  5888 Apr 20 19:25:22 2022 /boot/efi/armstub8.bin

(I was only showing the file naming. I used a more modern
context to do that, which may have been confusing. Ignore
the dates for those 2 files and that I used a mount point
for where they are placed for live use.)

>>> Be sure to keep those 2 files in place (for at least
>>> armstub8-gic.bin ). A similar point goes for your
>>> config.txt .

===
Mark Millard
marklmi at yahoo.com