Jump to content

Recommended Posts

Posted (edited)

Hi,

I have installed the latest image "Minimal/IOT images with Armbian Linux v6.12" with the mainline Kernel. Many thanks
@ColorfulRhino , @amazingfate and many others for their hard  work.

 

I have a board with 32GB RAM and 4x NVMe and it is working with HDMI, USB and network. I have installed XFCE on top by my own.


Some parts currently not working (what I have seen so far):

* second HDMI

* HDMI audio

* sensor controlled fan speed

 

This seems to be on the roadmap for 2025 for the upstream Kernel.

 

For the fan control I currently use my own overlay and want to share it.

 

/dts-v1/;
/plugin/;

/ {
	/* our pwm-fan comes with 6 cooling levels (0-5) in relation to 255 <0 50 80 120 160 220> */
	/* this overlay use the sensors of big core 0 to control cooling by the fan */
	/* add new trips for active cooling */
	fragment@0 {
		target-path = "/thermal-zones/bigcore0-thermal/trips";

		__overlay__ {
			bigcore0-active1 {
				/* 55 degree with hysteresis of 5 deg */
				temperature = <55000>;
				hysteresis = <5000>;
				type = "active";
				// internal phandles use a small integer to be able to reference
				phandle = <0x00000001>;
			};
			
			bigcore0-active2 {
				/* 60 degree with hysteresis of 2 deg */
				temperature = <60000>;
				hysteresis = <2000>;
				type = "active";
				// internal phandles use a small integer to be able to reference
				phandle = <0x00000002>;
			};
		};
	};
	
	/* add cooling maps to use the new trips by the pwm-fan with level 0-5 */
	fragment@1 {
		target-path = "/thermal-zones/bigcore0-thermal/cooling-maps";

		__overlay__ {
			map1 {
				trip = <0x00000001>;
				cooling-device = <0xffffffff 0 1>;
			};

			map2 {
				trip = <0x00000002>;
				cooling-device = <0xffffffff 2 5>;
			};
		};
	};
	
	/* we need to poll, because in interrupt mode the fan will not stop */
	/* alternatively we can use type="passive", a poll interval of 250 ms is already defined for passive */
	fragment@2 {
		target-path = "/thermal-zones/bigcore0-thermal";

		__overlay__ {
			/* for active cooling, in milliseconds */
			polling-delay = <2000>;
		};
	};

	/* adjust the original fan levels <0 50 80 120 160 220> a bit */
	/* the fan starts rotating at 40-45, 45 is sufficient to keep <50°C at normal operation */
	fragment@3 {
		target = <0xffffffff>;
		__overlay__ {
			cooling-levels = <0 45 80 120 160 255>;
		};
	};

	__fixups__ {
		fan = "/fragment@1/__overlay__/map1:cooling-device:0", "/fragment@1/__overlay__/map2:cooling-device:0", "/fragment@3:target:0";
	};
	
	// to adjust finally the internal references
	__local_fixups__ {
		fragment@1 {
			__overlay__ {
				map1 {
					trip = <0x00000000>;
				};

				map2 {
					trip = <0x00000000>;
				};

			};
		};
	};
};

 

Edited by g2t

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...

Important Information

Terms of Use - Privacy Policy - Guidelines