Weather Cape does not work with BeagleBone after Debian 10 upgrade

It still works with eMMc boot, but not with microSD boot. What to do or is it not fixable?

Today I tried to connect without microSD to verify it works without disk or Weather cape, and the result is I don’t connect at all. Maybe I programmed or corrupted eMMC .

I have found BeagleBoard Black instructions to reflash but no BeagleBoard Bone. I only see reset button, no boot. Trying emmc flasher image and by holding down reset and powering up with image inserted. Shortly, all four lights are lit again and wondering if it will power off. Is that the correct procedure for Bone?

Do you have the original (White PCB) BeagleBone, or the (Black PCB) BeagleBone Black?

The original BeagleBone, does not have onboard eMMC, the flasher will just timeout and fail…

Regards,

I seem to remember I had to do something to uEnv.txt when Weather Cape was installed, but it’s been too long for me to remember. If there is no eMMC, then is it something that can be fixed or not on microSD?

Original.

Okay, just do not user a “flasher” image, any of the normal microsd images should be fine.

Sorry, i don’t remember what the weather cape had on it, i do remember it being one of the first cape’s…

Regards,

I installed $ sudo apt install bb-cape-overlays,
and in uEnv.txt I am unsure how to edit to enable Weather Cape. Some have used “optargs=capemgr.enable_partno=BB-BONE-WTHR-01” in a Black, but I suspect more needs to be done to current uEnv.txt.
uEnv.txt (2.0 KB)

Not knowing the version of u-boot, i’d first try:

uboot_overlay_addr4=/lib/firmware/BB-BONE-WTHR-01-00B0.dtbo

if that doesn’t work, please run and report the output of:

sudo beagle-version

If it’s not installed, just run: sudo apt update ; sudo apt install bb-beagle-version

Regards,

@mwx Do you know if your weather cape is a rev A or rev B ? Hopefully it will be printed on it somewhere.

It appears there are 2 revisions of the weather cape. If using the rev A board, I think that overlay will not work.

From reading the wiki page, the rev A board was not compatible with the BeagleBone Black. Looks like it used a GPIO pin for the single wire temperature sensors which I guess was used for eMMC. Everything else is I2C which is the same between revisions. In the rev B board this was fixed. Can’t find a schematic for the rev B board, I think the board used an integrated pressure/temp sensor and so no need to single wire interface.

There is also a change in the pressure measurement chip, from SHT21 to HPP828E031. If using a rev A board will need to make sure the drivers for SHT21 are still included in the kernel.

Rev A, host is a Beagleboard Bone, not Black.

ok, then I don’t think the overlay that @RobertCNelson has suggested will work. That is for the rev B board.

I don’t suppose you have the original overlay ?

beagle-version.txt (2.9 KB)
uEnv.txt (2.1 KB)
I have not yet got an old program that i wrote to work yet, but

mwindham@bbab299d0e59:/sys/bus/i2c/devices$ ls
0-0024 0-0050 2-0039 2-0040 2-0054 2-0055 2-0056 2-0057 2-0077 i2c-0 i2c-1 i2c-2

looks promising.

It seems directory structure differs from previous

char* c_path_lux1 = “/sys/bus/i2c/devices/1-0039/lux1_input”;

yes I think that device tree will partially work. If you relied on the single wire temperature sensor then that will not work.

The light and pressure sensors are the same on both rev boards.

The rev B board uses a different temp/humidity sensor. an SHT21 on rev A and HPP828 on rev B.

The devicetree has an htu21 driver, which is neither of the above. Perhaps it is compatible with one or the other though.

Original code was 1-xxxx instead of 2-xxxx; directory structure in actual 2-xxxx has no named things like humidity1_input, temp1_input, etc.

FILE* str_humidity1;
	char* c_unc_humidity1 = "//bbab299D0E59/bbab/sys/bus/i2c/devices/2-0040/humidity1_input";
	char* c_path_humidity1 = "/sys/bus/i2c/devices/2-0040/humidity1_input";
	char c_humidity1[0x20] = { 0 };
	//temp1
	FILE* str_temp1;
	char* c_path_temp1 = "/sys/bus/i2c/devices/2-0040/temp1_input";
	char c_temp1[0x20] = { 0 };
	//  pressure0_input
	FILE* str_pressure0;
	char* c_path_pressure0 = "/sys/bus/i2c/devices/2-0077/pressure0_input";
	char c_pressure0[0x20] = { 0 };
	//  temp0_input
	FILE* str_temp0;
	char* c_path_temp0 = "/sys/bus/i2c/devices/2-0077/temp0_input";
	char c_temp0[0x20] = { 0 };

This gets two values, have not found others:

   FILE* str_pressure0;
char* c_path_pressure0 = "/sys/bus/i2c/devices/2-0077/iio:device1/in_pressure_input";
char c_pressure0[0x20] = { 0 };
//  temp0_input
FILE* str_temp0;
char* c_path_temp0 = "/sys/bus/i2c/devices/2-0077/iio:device1/in_temp_input";
char c_temp0[0x20] = { 0 };

It would appear this is as far as the overlays will do:

ls
0-0024 0-0050 2-0039 2-0040 2-0054 2-0055 2-0056 2-0057 2-0077 i2c-0 i2c-1 i2c-2
ls 0-0024
driver name power subsystem tps65217-charger tps65217-pwrbutton
modalias of_node regulator tps65217-bl tps65217-pmic uevent
ls 0-0050
0-00500 driver eeprom modalias name of_node power subsystem uevent
ls 0-0050/0-00500
nvmem of_node power subsystem uevent
ls 2-0039
modalias name of_node power subsystem uevent
ls 2-0040
modalias name of_node power subsystem uevent
ls 2-0055
modalias name of_node power subsystem uevent
ls 2-0056
modalias name of_node power subsystem uevent
ls 2-0057
modalias name of_node power subsystem uevent
ls 2-0077
driver iio:device1 modalias name of_node power subsystem uevent
ls 2-0077/iio:device1
dev in_temp_input of_node
in_pressure_input in_temp_oversampling_ratio power
in_pressure_oversampling_ratio in_temp_oversampling_ratio_available subsystem
in_pressure_oversampling_ratio_available name