Jump to content

Fix USB3-power and Bluetooth for H6 tvbox "V96mini 6k" (DTB customize example)


Recommended Posts

Posted

    Problem:
USB3-power and Bluetooth not work when use original dtb-file "sun50i-h6-tanix-tx6.dtb" on tvbox "V96mini 6k" (brother of TX6),
with Armbian_21.08.0-trunk_Aw-h6-tv_hirsute_current_5.10.53_xfce_desktop.img.xz (distro from Balbes150).
All other stuff works fine: Ethernet100, HDMI+Audio, 2xUSB2.0, WiFi.

 

    Hardware info "V96mini 6k" :
CPU : Allwinner H6; GPU : Mali-T720; RAM 4GB, MMC 64GB
Power Management Unit (PMU) : A8038 ! (not AXP805 !)
Wireless module : AP6256 ! (WiFi 2.5ghz and 5.0ghz, Bluetooth)
Ethernet 100mbit; 1xUSB3.0, 2xUSB2.0; microSD

v96mini6k_box.thumb.jpg.0bad5abbd860dcb1ed61e9d14cec5441.jpg

 

v96mini6k_pcb.thumb.jpg.f32654b5741b90b0f78b069506f6cd36.jpg

 

 

    Solution: (for fix USB3-power and Bluetooth on tvbox "V96mini 6k")

 

Variant 1 (easy) : use attached "sun50i-h6-tanix-tx6_v96mini6k_01.dtb" for fix problem (this mod based on "sun50i-h6-tanix-tx6.dtb").

 

Variant 2 (hardcore) : read next message in this topic for instructions how to fix manually (decompile dtb to dts, edit dts, compile new dtb).

 

 

sun50i-h6-tanix-tx6_v96mini6k_01.dtb

Posted

Variant 2 (hardcore) : decompile dtb to dts, edit dts, compile new dtb.

 

    Step by step instructions for manual fix USB3-power and Bluetooth on tvbox "V96mini 6k":

 

1. Copy original dtb-file "sun50i-h6-tanix-tx6.dtb" from Armbian boot filesystem "/boot/dtb/allwinner/sun50i-h6-tanix-tx6.dtb" to empty work dir.


2. In work dir decompile original "sun50i-h6-tanix-tx6.dtb" to editable text:

$ dtc -I dtb -O dts   sun50i-h6-tanix-tx6.dtb   -o decompiled.dts


3. Open in text editor file "decompiled.dts" for make changes.
Insert new 6 text blocks exactly in places like showed in my example (spoiler below "SRC_DTS_TX6_MOD_FOR_V96MINI6K").
Note: All new 6 text blocks looks like :

/* ADDON part1of3 BEGIN */
  ...
  ...
/* ADDON part1of3 END */

 


"SRC_DTS_TX6_MOD_FOR_V96MINI6K":

Spoiler

/* COMMENT: Custom "Device Tree Source" for tvbox "V96mini 6K" (PCB labels: "V96MINI-H6 V2.1", "20190808"). */
/* COMMENT: This modification based on decompiled "sun50i-h6-tanix-tx6.dtb" from "Armbian_21.08.0-trunk_Aw-h6-tv_hirsute_current_5.10.53_xfce_desktop.img.xz" (distro from Balbes150) */
/* COMMENT: Fixed 2 problems: added power in USB3 port, and enabled Bluetooth. */

/* COMMENT: Created 2 new phandles: "phandle = <0x55>;" and "phandle = <0x66>;" (cause numbers "0x55" and "0x66" not used by any other phandles). */
/* COMMENT: Total 6 new text blocks. */

/* COMMENT: 2021-Sept-05 */
/* COMMENT: USE IT AT YOUR OWN RISK. */
/* COMMENT: Everything works fine on my tvbox "V96mini 6K". */
/* COMMENT: Tested 2 month: no problems on "Armbian_21.08.0-trunk_Aw-h6-tv_hirsute_current_5.10.53_xfce_desktop.img.xz" (distro from Balbes150). */


/dts-v1/;

/ {
	interrupt-parent = <0x01>;
	#address-cells = <0x01>;
	#size-cells = <0x01>;
	model = "Tanix TX6";
	compatible = "oranth,tanix-tx6\0allwinner,sun50i-h6";

	ac200_clk {
		compatible = "pwm-clock";
		#clock-cells = <0x00>;
		clock-frequency = <0x16e3600>;
		pinctrl-names = "default";
		pinctrl-0 = <0x02>;
		pwms = <0x03 0x01 0x2a 0x00>;
		status = "okay";
		phandle = <0x26>;
	};

	cpus {
		#address-cells = <0x01>;
		#size-cells = <0x00>;

		cpu@0 {
			compatible = "arm,cortex-a53";
			device_type = "cpu";
			reg = <0x00>;
			enable-method = "psci";
			clocks = <0x04 0x15>;
			clock-latency-ns = <0x3b9b0>;
			#cooling-cells = <0x02>;
			operating-points-v2 = <0x05>;
			cpu-supply = <0x06>;
			phandle = <0x08>;
		};

		cpu@1 {
			compatible = "arm,cortex-a53";
			device_type = "cpu";
			reg = <0x01>;
			enable-method = "psci";
			clocks = <0x04 0x15>;
			clock-latency-ns = <0x3b9b0>;
			#cooling-cells = <0x02>;
			operating-points-v2 = <0x05>;
			phandle = <0x09>;
		};

		cpu@2 {
			compatible = "arm,cortex-a53";
			device_type = "cpu";
			reg = <0x02>;
			enable-method = "psci";
			clocks = <0x04 0x15>;
			clock-latency-ns = <0x3b9b0>;
			#cooling-cells = <0x02>;
			operating-points-v2 = <0x05>;
			phandle = <0x0a>;
		};

		cpu@3 {
			compatible = "arm,cortex-a53";
			device_type = "cpu";
			reg = <0x03>;
			enable-method = "psci";
			clocks = <0x04 0x15>;
			clock-latency-ns = <0x3b9b0>;
			#cooling-cells = <0x02>;
			operating-points-v2 = <0x05>;
			phandle = <0x0b>;
		};
	};

	display-engine {
		compatible = "allwinner,sun50i-h6-display-engine";
		allwinner,pipelines = <0x07>;
		status = "okay";
	};

	osc24M_clk {
		#clock-cells = <0x00>;
		compatible = "fixed-clock";
		clock-frequency = <0x16e3600>;
		clock-output-names = "osc24M";
		phandle = <0x13>;
	};

	pmu {
		compatible = "arm,cortex-a53-pmu";
		interrupts = <0x00 0x8c 0x04 0x00 0x8d 0x04 0x00 0x8e 0x04 0x00 0x8f 0x04>;
		interrupt-affinity = <0x08 0x09 0x0a 0x0b>;
	};

	psci {
		compatible = "arm,psci-0.2";
		method = "smc";
	};

	timer {
		compatible = "arm,armv8-timer";
		arm,no-tick-in-suspend;
		interrupts = <0x01 0x0d 0xf04 0x01 0x0e 0xf04 0x01 0x0b 0xf04 0x01 0x0a 0xf04>;
	};

	sound {
		compatible = "simple-audio-card";
		simple-audio-card,format = "i2s";
		simple-audio-card,name = "allwinner-hdmi";
		simple-audio-card,mclk-fs = <0x80>;
		simple-audio-card,frame-inversion;

		simple-audio-card,codec {
			sound-dai = <0x0c>;
		};

		simple-audio-card,cpu {
			sound-dai = <0x0d>;
			dai-tdm-slot-num = <0x02>;
			dai-tdm-slot-width = <0x20>;
		};
	};

	soc {
		compatible = "simple-bus";
		#address-cells = <0x01>;
		#size-cells = <0x01>;
		ranges;

		bus@1000000 {
			compatible = "allwinner,sun50i-h6-de3\0allwinner,sun50i-a64-de2";
			reg = <0x1000000 0x400000>;
			allwinner,sram = <0x0e 0x01>;
			#address-cells = <0x01>;
			#size-cells = <0x01>;
			ranges = <0x00 0x1000000 0x400000>;

			clock@0 {
				compatible = "allwinner,sun50i-h6-de3-clk";
				reg = <0x00 0x10000>;
				clocks = <0x04 0x1d 0x04 0x1e>;
				clock-names = "mod\0bus";
				resets = <0x04 0x01>;
				#clock-cells = <0x01>;
				#reset-cells = <0x01>;
				phandle = <0x0f>;
			};

			mixer@100000 {
				compatible = "allwinner,sun50i-h6-de3-mixer-0";
				reg = <0x100000 0x100000>;
				clocks = <0x0f 0x00 0x0f 0x06>;
				clock-names = "bus\0mod";
				resets = <0x0f 0x00>;
				iommus = <0x10 0x00>;
				phandle = <0x07>;

				ports {
					#address-cells = <0x01>;
					#size-cells = <0x00>;

					port@1 {
						reg = <0x01>;

						endpoint {
							remote-endpoint = <0x11>;
							phandle = <0x32>;
						};
					};
				};
			};
		};

		deinterlace@1420000 {
			compatible = "allwinner,sun50i-h6-deinterlace";
			reg = <0x1420000 0x2000>;
			clocks = <0x04 0x20 0x04 0x1f 0x04 0x3b>;
			clock-names = "bus\0mod\0ram";
			resets = <0x04 0x02>;
			interrupts = <0x00 0x4f 0x04>;
		};

		video-codec@1c0e000 {
			compatible = "allwinner,sun50i-h6-video-engine";
			reg = <0x1c0e000 0x2000>;
			clocks = <0x04 0x26 0x04 0x25 0x04 0x36>;
			clock-names = "ahb\0mod\0ram";
			resets = <0x04 0x05>;
			interrupts = <0x00 0x59 0x04>;
			allwinner,sram = <0x12 0x01>;
			iommus = <0x10 0x03>;
		};

		gpu@1800000 {
			compatible = "allwinner,sun50i-h6-mali\0arm,mali-t720";
			reg = <0x1800000 0x4000>;
			interrupts = <0x00 0x54 0x04 0x00 0x55 0x04 0x00 0x53 0x04>;
			interrupt-names = "job\0mmu\0gpu";
			clocks = <0x04 0x21 0x04 0x22>;
			clock-names = "core\0bus";
			resets = <0x04 0x03>;
			status = "okay";
			mali-supply = <0x06>;
		};

		crypto@1904000 {
			compatible = "allwinner,sun50i-h6-crypto";
			reg = <0x1904000 0x1000>;
			interrupts = <0x00 0x57 0x04>;
			clocks = <0x04 0x24 0x04 0x23 0x04 0x37>;
			clock-names = "bus\0mod\0ram";
			resets = <0x04 0x04>;
		};

		syscon@3000000 {
			compatible = "allwinner,sun50i-h6-system-control\0allwinner,sun50i-a64-system-control";
			reg = <0x3000000 0x1000>;
			#address-cells = <0x01>;
			#size-cells = <0x01>;
			ranges;
			phandle = <0x28>;

			sram@28000 {
				compatible = "mmio-sram";
				reg = <0x28000 0x1e000>;
				#address-cells = <0x01>;
				#size-cells = <0x01>;
				ranges = <0x00 0x28000 0x1e000>;

				sram-section@0 {
					compatible = "allwinner,sun50i-h6-sram-c\0allwinner,sun50i-a64-sram-c";
					reg = <0x00 0x1e000>;
					phandle = <0x0e>;
				};
			};

			sram@1a00000 {
				compatible = "mmio-sram";
				reg = <0x1a00000 0x200000>;
				#address-cells = <0x01>;
				#size-cells = <0x01>;
				ranges = <0x00 0x1a00000 0x200000>;

				sram-section@0 {
					compatible = "allwinner,sun50i-h6-sram-c1\0allwinner,sun4i-a10-sram-c1";
					reg = <0x00 0x200000>;
					phandle = <0x12>;
				};
			};
		};

		clock@3001000 {
			compatible = "allwinner,sun50i-h6-ccu";
			reg = <0x3001000 0x1000>;
			clocks = <0x13 0x14 0x00 0x14 0x02>;
			clock-names = "hosc\0losc\0iosc";
			#clock-cells = <0x01>;
			#reset-cells = <0x01>;
			phandle = <0x04>;
		};

		dma-controller@3002000 {
			compatible = "allwinner,sun50i-h6-dma";
			reg = <0x3002000 0x1000>;
			interrupts = <0x00 0x2b 0x04>;
			clocks = <0x04 0x2b 0x04 0x35>;
			clock-names = "bus\0mbus";
			dma-channels = <0x10>;
			dma-requests = <0x2e>;
			resets = <0x04 0x08>;
			#dma-cells = <0x01>;
			phandle = <0x24>;
		};

		mailbox@3003000 {
			compatible = "allwinner,sun50i-h6-msgbox\0allwinner,sun6i-a31-msgbox";
			reg = <0x3003000 0x1000>;
			clocks = <0x04 0x2c>;
			resets = <0x04 0x09>;
			interrupts = <0x00 0x2c 0x04>;
			#mbox-cells = <0x01>;
		};

		efuse@3006000 {
			compatible = "allwinner,sun50i-h6-sid";
			reg = <0x3006000 0x400>;
			#address-cells = <0x01>;
			#size-cells = <0x01>;

			thermal-sensor-calibration@14 {
				reg = <0x14 0x08>;
				phandle = <0x3c>;
			};

			cpu-speed-grade@1c {
				reg = <0x1c 0x04>;
				phandle = <0x3f>;
			};

			ephy_calib@2c {
				reg = <0x2c 0x02>;
				phandle = <0x27>;
			};
		};

		watchdog@30090a0 {
			compatible = "allwinner,sun50i-h6-wdt\0allwinner,sun6i-a31-wdt";
			reg = <0x30090a0 0x20>;
			interrupts = <0x00 0x32 0x04>;
			clocks = <0x13>;
			status = "disabled";
		};

		pwm@300a000 {
			compatible = "allwinner,sun50i-h6-pwm";
			reg = <0x300a000 0x400>;
			clocks = <0x13 0x04 0x32>;
			clock-names = "mod\0bus";
			resets = <0x04 0x0e>;
			#pwm-cells = <0x03>;
			status = "okay";
			phandle = <0x03>;
		};

		pinctrl@300b000 {
			compatible = "allwinner,sun50i-h6-pinctrl";
			reg = <0x300b000 0x400>;
			interrupts = <0x00 0x33 0x04 0x00 0x35 0x04 0x00 0x36 0x04 0x00 0x3b 0x04>;
			clocks = <0x04 0x1a 0x13 0x14 0x00>;
			clock-names = "apb\0hosc\0losc";
			gpio-controller;
			#gpio-cells = <0x03>;
			interrupt-controller;
			#interrupt-cells = <0x03>;
			vcc-pc-supply = <0x15>;
			phandle = <0x18>;

			rgmii-pins {
				pins = "PD0\0PD1\0PD2\0PD3\0PD4\0PD5\0PD7\0PD8\0PD9\0PD10\0PD11\0PD12\0PD13\0PD19\0PD20";
				function = "emac";
				drive-strength = <0x28>;
			};

			rmii_pins {
				pins = "PA0\0PA1\0PA2\0PA3\0PA4\0PA5\0PA6\0PA7\0PA8\0PA9";
				function = "emac";
				drive-strength = <0x28>;
				phandle = <0x29>;
			};

			hdmi-pins {
				pins = "PH8\0PH9\0PH10";
				function = "hdmi";
				phandle = <0x2f>;
			};

			i2c0-pins {
				pins = "PD25\0PD26";
				function = "i2c0";
				phandle = <0x21>;
			};

			i2c1-pins {
				pins = "PH5\0PH6";
				function = "i2c1";
				phandle = <0x22>;
			};

			i2c2-pins {
				pins = "PD23\0PD24";
				function = "i2c2";
				phandle = <0x23>;
			};

			i2c3-pins {
				pins = "PB17\0PB18";
				function = "i2c3";
				phandle = <0x25>;
			};

			mmc0-pins {
				pins = "PF0\0PF1\0PF2\0PF3\0PF4\0PF5";
				function = "mmc0";
				drive-strength = <0x1e>;
				bias-pull-up;
				phandle = <0x16>;
			};

			mmc1-pins {
				pins = "PG0\0PG1\0PG2\0PG3\0PG4\0PG5";
				function = "mmc1";
				drive-strength = <0x1e>;
				bias-pull-up;
				phandle = <0x19>;
			};

			mmc2-pins {
				pins = "PC1\0PC4\0PC5\0PC6\0PC7\0PC8\0PC9\0PC10\0PC11\0PC12\0PC13\0PC14";
				function = "mmc2";
				drive-strength = <0x1e>;
				bias-pull-up;
				phandle = <0x1d>;
			};

			pwm1-pin {
				pins = "PB19";
				function = "pwm1";
				phandle = <0x02>;
			};

			spdif-tx-pin {
				pins = "PH7";
				function = "spdif";
				phandle = <0x2b>;
			};

			uart0-ph-pins {
				pins = "PH0\0PH1";
				function = "uart0";
				phandle = <0x1e>;
			};

			uart1-pins {
				pins = "PG6\0PG7";
				function = "uart1";
				phandle = <0x1f>;
			};

			uart1-rts-cts-pins {
				pins = "PG8\0PG9";
				function = "uart1";
				phandle = <0x20>;
			};
		};

		interrupt-controller@3021000 {
			compatible = "arm,gic-400";
			reg = <0x3021000 0x1000 0x3022000 0x2000 0x3024000 0x2000 0x3026000 0x2000>;
			interrupts = <0x01 0x09 0xf04>;
			interrupt-controller;
			#interrupt-cells = <0x03>;
			phandle = <0x01>;
		};

		iommu@30f0000 {
			compatible = "allwinner,sun50i-h6-iommu";
			reg = <0x30f0000 0x10000>;
			interrupts = <0x00 0x39 0x04>;
			clocks = <0x04 0x33>;
			resets = <0x04 0x0f>;
			#iommu-cells = <0x01>;
			phandle = <0x10>;
		};

		mmc@4020000 {
			compatible = "allwinner,sun50i-h6-mmc\0allwinner,sun50i-a64-mmc";
			reg = <0x4020000 0x1000>;
			clocks = <0x04 0x43 0x04 0x40>;
			clock-names = "ahb\0mmc";
			resets = <0x04 0x12>;
			reset-names = "ahb";
			interrupts = <0x00 0x23 0x04>;
			pinctrl-names = "default";
			pinctrl-0 = <0x16>;
			max-frequency = <0x8f0d180>;
			status = "okay";
			#address-cells = <0x01>;
			#size-cells = <0x00>;
			vmmc-supply = <0x17>;
			cd-gpios = <0x18 0x05 0x06 0x01>;
			bus-width = <0x04>;
		};

		mmc@4021000 {
			compatible = "allwinner,sun50i-h6-mmc\0allwinner,sun50i-a64-mmc";
			reg = <0x4021000 0x1000>;
			clocks = <0x04 0x44 0x04 0x41>;
			clock-names = "ahb\0mmc";
			resets = <0x04 0x13>;
			reset-names = "ahb";
			interrupts = <0x00 0x24 0x04>;
			pinctrl-names = "default";
			pinctrl-0 = <0x19>;
			max-frequency = <0x8f0d180>;
			status = "okay";
			#address-cells = <0x01>;
			#size-cells = <0x00>;
			vmmc-supply = <0x17>;
			vqmmc-supply = <0x1a>;
			mmc-pwrseq = <0x1b>;
			bus-width = <0x04>;
			non-removable;

			sdio-wifi@1 {
				reg = <0x01>;
				interrupt-parent = <0x1c>;
				interrupts = <0x01 0x00 0x08>;
				interrupt-names = "host-wake";
			};
		};

		mmc@4022000 {
			compatible = "allwinner,sun50i-h6-emmc\0allwinner,sun50i-a64-emmc";
			reg = <0x4022000 0x1000>;
			clocks = <0x04 0x45 0x04 0x42>;
			clock-names = "ahb\0mmc";
			resets = <0x04 0x14>;
			reset-names = "ahb";
			interrupts = <0x00 0x25 0x04>;
			pinctrl-names = "default";
			pinctrl-0 = <0x1d>;
			max-frequency = <0x8f0d180>;
			status = "okay";
			#address-cells = <0x01>;
			#size-cells = <0x00>;
			vmmc-supply = <0x17>;
			vqmmc-supply = <0x15>;
			non-removable;
			cap-mmc-hw-reset;
			bus-width = <0x08>;
		};

		serial@5000000 {
			compatible = "snps,dw-apb-uart";
			reg = <0x5000000 0x400>;
			interrupts = <0x00 0x00 0x04>;
			reg-shift = <0x02>;
			reg-io-width = <0x04>;
			clocks = <0x04 0x46>;
			resets = <0x04 0x15>;
			status = "okay";
			pinctrl-names = "default";
			pinctrl-0 = <0x1e>;
		};

		serial@5000400 {
			compatible = "snps,dw-apb-uart";
			reg = <0x5000400 0x400>;
			interrupts = <0x00 0x01 0x04>;
			reg-shift = <0x02>;
			reg-io-width = <0x04>;
			clocks = <0x04 0x47>;
			resets = <0x04 0x16>;
			status = "okay";
			pinctrl-names = "default";
			pinctrl-0 = <0x1f 0x20>;
			uart-has-rtscts;

/* BT5 ADDON part1of3 (REPLACEMENT) BEGIN */
bluetooth {
	compatible = "brcm,bcm4345c5";
	clocks = <0x14 0x01>;
	clock-names = "lpo";
	device-wakeup-gpios = <0x1c 0x01 0x02 0x00>;
	host-wakeup-gpios = <0x1c 0x01 0x01 0x00>;
	shutdown-gpios = <0x1c 0x01 0x04 0x00>;
	max-speed = <0x16e360>;
};
/* BT5 ADDON part1of3 (REPLACEMENT) END */

		};

		serial@5000800 {
			compatible = "snps,dw-apb-uart";
			reg = <0x5000800 0x400>;
			interrupts = <0x00 0x02 0x04>;
			reg-shift = <0x02>;
			reg-io-width = <0x04>;
			clocks = <0x04 0x48>;
			resets = <0x04 0x17>;
			status = "disabled";
		};

		serial@5000c00 {
			compatible = "snps,dw-apb-uart";
			reg = <0x5000c00 0x400>;
			interrupts = <0x00 0x03 0x04>;
			reg-shift = <0x02>;
			reg-io-width = <0x04>;
			clocks = <0x04 0x49>;
			resets = <0x04 0x18>;
			status = "disabled";
		};

		i2c@5002000 {
			compatible = "allwinner,sun50i-h6-i2c\0allwinner,sun6i-a31-i2c";
			reg = <0x5002000 0x400>;
			interrupts = <0x00 0x04 0x04>;
			clocks = <0x04 0x4a>;
			resets = <0x04 0x19>;
			pinctrl-names = "default";
			pinctrl-0 = <0x21>;
			status = "disabled";
			#address-cells = <0x01>;
			#size-cells = <0x00>;
		};

		i2c@5002400 {
			compatible = "allwinner,sun50i-h6-i2c\0allwinner,sun6i-a31-i2c";
			reg = <0x5002400 0x400>;
			interrupts = <0x00 0x05 0x04>;
			clocks = <0x04 0x4b>;
			resets = <0x04 0x1a>;
			pinctrl-names = "default";
			pinctrl-0 = <0x22>;
			status = "disabled";
			#address-cells = <0x01>;
			#size-cells = <0x00>;
		};

		i2c@5002800 {
			compatible = "allwinner,sun50i-h6-i2c\0allwinner,sun6i-a31-i2c";
			reg = <0x5002800 0x400>;
			interrupts = <0x00 0x06 0x04>;
			clocks = <0x04 0x4c>;
			resets = <0x04 0x1b>;
			pinctrl-names = "default";
			pinctrl-0 = <0x23>;
			status = "disabled";
			#address-cells = <0x01>;
			#size-cells = <0x00>;
		};

		spi@5010000 {
			compatible = "allwinner,sun50i-h6-spi\0allwinner,sun8i-h3-spi";
			reg = <0x5010000 0x1000>;
			interrupts = <0x00 0x0a 0x04>;
			clocks = <0x04 0x52 0x04 0x50>;
			clock-names = "ahb\0mod";
			dmas = <0x24 0x16 0x24 0x16>;
			dma-names = "rx\0tx";
			resets = <0x04 0x1f>;
			status = "disabled";
			#address-cells = <0x01>;
			#size-cells = <0x00>;
		};

		spi@5011000 {
			compatible = "allwinner,sun50i-h6-spi\0allwinner,sun8i-h3-spi";
			reg = <0x5011000 0x1000>;
			interrupts = <0x00 0x0b 0x04>;
			clocks = <0x04 0x53 0x04 0x51>;
			clock-names = "ahb\0mod";
			dmas = <0x24 0x17 0x24 0x17>;
			dma-names = "rx\0tx";
			resets = <0x04 0x20>;
			status = "disabled";
			#address-cells = <0x01>;
			#size-cells = <0x00>;
		};

		i2c@5002c00 {
			compatible = "allwinner,sun6i-a31-i2c";
			reg = <0x5002c00 0x400>;
			interrupts = <0x00 0x07 0x04>;
			clocks = <0x04 0x4d>;
			resets = <0x04 0x1c>;
			pinctrl-names = "default";
			pinctrl-0 = <0x25>;
			status = "okay";
			#address-cells = <0x01>;
			#size-cells = <0x00>;

			mfd@10 {
				compatible = "x-powers,ac200";
				reg = <0x10>;
				clocks = <0x26>;

				phy {
					compatible = "x-powers,ac200-ephy";
					nvmem-cells = <0x27>;
					nvmem-cell-names = "ephy_calib";
				};
			};
		};

		ethernet@5020000 {
			compatible = "allwinner,sun50i-h6-emac\0allwinner,sun50i-a64-emac";
			syscon = <0x28>;
			reg = <0x5020000 0x10000>;
			interrupts = <0x00 0x0c 0x04>;
			interrupt-names = "macirq";
			resets = <0x04 0x21>;
			reset-names = "stmmaceth";
			clocks = <0x04 0x54>;
			clock-names = "stmmaceth";
			status = "okay";
			pinctrl-names = "default";
			pinctrl-0 = <0x29>;
			phy-mode = "rmii";
			phy-handle = <0x2a>;

			mdio {
				compatible = "snps,dwmac-mdio";
				#address-cells = <0x01>;
				#size-cells = <0x00>;

				ethernet-phy@1 {
					compatible = "ethernet-phy-ieee802.3-c22";
					reg = <0x01>;
					phandle = <0x2a>;
				};
			};
		};

		i2s@5091000 {
			#sound-dai-cells = <0x00>;
			compatible = "allwinner,sun50i-h6-i2s";
			reg = <0x5091000 0x1000>;
			interrupts = <0x00 0x13 0x04>;
			clocks = <0x04 0x5f 0x04 0x5c>;
			clock-names = "apb\0mod";
			dmas = <0x24 0x04 0x24 0x04>;
			resets = <0x04 0x26>;
			dma-names = "rx\0tx";
			phandle = <0x0d>;
		};

		spdif@5093000 {
			#sound-dai-cells = <0x00>;
			compatible = "allwinner,sun50i-h6-spdif";
			reg = <0x5093000 0x400>;
			interrupts = <0x00 0x15 0x04>;
			clocks = <0x04 0x63 0x04 0x62>;
			clock-names = "apb\0spdif";
			resets = <0x04 0x29>;
			dmas = <0x24 0x02>;
			dma-names = "tx";
			pinctrl-names = "default";
			pinctrl-0 = <0x2b>;
			status = "disabled";
		};

		usb@5100000 {
			compatible = "allwinner,sun50i-h6-musb\0allwinner,sun8i-a33-musb";
			reg = <0x5100000 0x400>;
			clocks = <0x04 0x74>;
			resets = <0x04 0x35>;
			interrupts = <0x00 0x17 0x04>;
			interrupt-names = "mc";
			phys = <0x2c 0x00>;
			phy-names = "usb";
			extcon = <0x2c 0x00>;
			status = "okay";
			dr_mode = "host";
		};

		phy@5100400 {
			compatible = "allwinner,sun50i-h6-usb-phy";
			reg = <0x5100400 0x24 0x5101800 0x04 0x5311800 0x04>;
			reg-names = "phy_ctrl\0pmu0\0pmu3";
			clocks = <0x04 0x69 0x04 0x6c>;
			clock-names = "usb0_phy\0usb3_phy";
			resets = <0x04 0x2c 0x04 0x2e>;
			reset-names = "usb0_reset\0usb3_reset";
			status = "okay";
			#phy-cells = <0x01>;

/* USB3 ADDON part1of3 BEGIN */
usb0_vbus-supply = <0x55>;
usb3_vbus-supply = <0x55>;
/* USB3 ADDON part1of3 END */

			phandle = <0x2c>;
		};

		usb@5101000 {
			compatible = "allwinner,sun50i-h6-ehci\0generic-ehci";
			reg = <0x5101000 0x100>;
			interrupts = <0x00 0x18 0x04>;
			clocks = <0x04 0x6f 0x04 0x71 0x04 0x68>;
			resets = <0x04 0x30 0x04 0x32>;
			phys = <0x2c 0x00>;
			phy-names = "usb";
			status = "okay";
		};

		usb@5101400 {
			compatible = "allwinner,sun50i-h6-ohci\0generic-ohci";
			reg = <0x5101400 0x100>;
			interrupts = <0x00 0x19 0x04>;
			clocks = <0x04 0x6f 0x04 0x68>;
			resets = <0x04 0x30>;
			phys = <0x2c 0x00>;
			phy-names = "usb";
			status = "okay";
		};

		dwc3@5200000 {
			compatible = "snps,dwc3";
			reg = <0x5200000 0x10000>;
			interrupts = <0x00 0x1a 0x04>;
			clocks = <0x04 0x72 0x04 0x72 0x14 0x00>;
			clock-names = "ref\0bus_early\0suspend";
			resets = <0x04 0x33>;
			dr_mode = "host";
			phys = <0x2d>;
			phy-names = "usb3-phy";
			status = "okay";
		};

		phy@5210000 {
			compatible = "allwinner,sun50i-h6-usb3-phy";
			reg = <0x5210000 0x10000>;
			clocks = <0x04 0x6a>;
			resets = <0x04 0x2d>;
			#phy-cells = <0x00>;
			status = "okay";

/* USB3 ADDON part2of3 BEGIN */
phy-supply = <0x55>;
/* USB3 ADDON part2of3 END */

			phandle = <0x2d>;
		};

		usb@5311000 {
			compatible = "allwinner,sun50i-h6-ehci\0generic-ehci";
			reg = <0x5311000 0x100>;
			interrupts = <0x00 0x1c 0x04>;
			clocks = <0x04 0x70 0x04 0x73 0x04 0x6b>;
			resets = <0x04 0x31 0x04 0x34>;
			phys = <0x2c 0x03>;
			phy-names = "usb";
			status = "okay";
		};

		usb@5311400 {
			compatible = "allwinner,sun50i-h6-ohci\0generic-ohci";
			reg = <0x5311400 0x100>;
			interrupts = <0x00 0x1d 0x04>;
			clocks = <0x04 0x70 0x04 0x6b>;
			resets = <0x04 0x31>;
			phys = <0x2c 0x03>;
			phy-names = "usb";
			status = "okay";
		};

		hdmi@6000000 {
			#sound-dai-cells = <0x00>;
			compatible = "allwinner,sun50i-h6-dw-hdmi";
			reg = <0x6000000 0x10000>;
			reg-io-width = <0x01>;
			interrupts = <0x00 0x40 0x04>;
			clocks = <0x04 0x7e 0x04 0x7c 0x04 0x7b 0x04 0x7d 0x04 0x88 0x04 0x89>;
			clock-names = "iahb\0isfr\0tmds\0cec\0hdcp\0hdcp-bus";
			resets = <0x04 0x39 0x04 0x3e>;
			reset-names = "ctrl\0hdcp";
			phys = <0x2e>;
			phy-names = "phy";
			pinctrl-names = "default";
			pinctrl-0 = <0x2f>;
			status = "okay";
			phandle = <0x0c>;

			ports {
				#address-cells = <0x01>;
				#size-cells = <0x00>;

				port@0 {
					reg = <0x00>;

					endpoint {
						remote-endpoint = <0x30>;
						phandle = <0x35>;
					};
				};

				port@1 {
					reg = <0x01>;

					endpoint {
						remote-endpoint = <0x31>;
						phandle = <0x40>;
					};
				};
			};
		};

		hdmi-phy@6010000 {
			compatible = "allwinner,sun50i-h6-hdmi-phy";
			reg = <0x6010000 0x10000>;
			clocks = <0x04 0x7e 0x04 0x7c>;
			clock-names = "bus\0mod";
			resets = <0x04 0x38>;
			reset-names = "phy";
			#phy-cells = <0x00>;
			phandle = <0x2e>;
		};

		tcon-top@6510000 {
			compatible = "allwinner,sun50i-h6-tcon-top";
			reg = <0x6510000 0x1000>;
			clocks = <0x04 0x7f 0x04 0x82>;
			clock-names = "bus\0tcon-tv0";
			clock-output-names = "tcon-top-tv0";
			resets = <0x04 0x3a>;
			#clock-cells = <0x01>;
			phandle = <0x36>;

			ports {
				#address-cells = <0x01>;
				#size-cells = <0x00>;

				port@0 {
					#address-cells = <0x01>;
					#size-cells = <0x00>;
					reg = <0x00>;

					endpoint@0 {
						reg = <0x00>;
						remote-endpoint = <0x32>;
						phandle = <0x11>;
					};
				};

				port@1 {
					#address-cells = <0x01>;
					#size-cells = <0x00>;
					reg = <0x01>;

					endpoint@2 {
						reg = <0x02>;
						remote-endpoint = <0x33>;
						phandle = <0x37>;
					};
				};

				port@4 {
					#address-cells = <0x01>;
					#size-cells = <0x00>;
					reg = <0x04>;

					endpoint@0 {
						reg = <0x00>;
						remote-endpoint = <0x34>;
						phandle = <0x38>;
					};
				};

				port@5 {
					reg = <0x05>;

					endpoint {
						remote-endpoint = <0x35>;
						phandle = <0x30>;
					};
				};
			};
		};

		lcd-controller@6515000 {
			compatible = "allwinner,sun50i-h6-tcon-tv\0allwinner,sun8i-r40-tcon-tv";
			reg = <0x6515000 0x1000>;
			interrupts = <0x00 0x42 0x04>;
			clocks = <0x04 0x83 0x36 0x00>;
			clock-names = "ahb\0tcon-ch1";
			resets = <0x04 0x3c>;
			reset-names = "lcd";

			ports {
				#address-cells = <0x01>;
				#size-cells = <0x00>;

				port@0 {
					reg = <0x00>;

					endpoint {
						remote-endpoint = <0x37>;
						phandle = <0x33>;
					};
				};

				port@1 {
					#address-cells = <0x01>;
					#size-cells = <0x00>;
					reg = <0x01>;

					endpoint@1 {
						reg = <0x01>;
						remote-endpoint = <0x38>;
						phandle = <0x34>;
					};
				};
			};
		};

		rtc@7000000 {
			compatible = "allwinner,sun50i-h6-rtc";
			reg = <0x7000000 0x400>;
			interrupts = <0x00 0x65 0x04 0x00 0x66 0x04>;
			clock-output-names = "osc32k\0osc32k-out\0iosc";
			#clock-cells = <0x01>;

/* BT5 ADDON part2of3 BEGIN */
clocks = <0x66>;
/* BT5 ADDON part2of3 END */

			phandle = <0x14>;
		};

		clock@7010000 {
			compatible = "allwinner,sun50i-h6-r-ccu";
			reg = <0x7010000 0x400>;
			clocks = <0x13 0x14 0x00 0x14 0x02 0x04 0x03>;
			clock-names = "hosc\0losc\0iosc\0pll-periph";
			#clock-cells = <0x01>;
			#reset-cells = <0x01>;
			phandle = <0x39>;
		};

		watchdog@7020400 {
			compatible = "allwinner,sun50i-h6-wdt\0allwinner,sun6i-a31-wdt";
			reg = <0x7020400 0x20>;
			interrupts = <0x00 0x67 0x04>;
			clocks = <0x13>;
		};

		interrupt-controller@7021000 {
			compatible = "allwinner,sun50i-h6-r-intc\0allwinner,sun6i-a31-r-intc";
			interrupt-controller;
			#interrupt-cells = <0x02>;
			reg = <0x7021000 0x400>;
			interrupts = <0x00 0x60 0x04>;
		};

		pinctrl@7022000 {
			compatible = "allwinner,sun50i-h6-r-pinctrl";
			reg = <0x7022000 0x400>;
			interrupts = <0x00 0x69 0x04 0x00 0x6f 0x04>;
			clocks = <0x39 0x02 0x13 0x14 0x00>;
			clock-names = "apb\0hosc\0losc";
			gpio-controller;
			#gpio-cells = <0x03>;
			interrupt-controller;
			#interrupt-cells = <0x03>;
			phandle = <0x1c>;

			r-i2c-pins {
				pins = "PL0\0PL1";
				function = "s_i2c";
				phandle = <0x3b>;
			};

			r-ir-rx-pin {
				pins = "PL9";
				function = "s_cir_rx";
				phandle = <0x3a>;
			};
		};

		ir@7040000 {
			compatible = "allwinner,sun50i-h6-ir\0allwinner,sun6i-a31-ir";
			reg = <0x7040000 0x400>;
			interrupts = <0x00 0x6d 0x04>;
			clocks = <0x39 0x09 0x39 0x0b>;
			clock-names = "apb\0ir";
			resets = <0x39 0x05>;
			pinctrl-names = "default";
			pinctrl-0 = <0x3a>;
			status = "okay";
			linux,rc-map-name = "rc-tanix-tx5max";
		};

		i2c@7081400 {
			compatible = "allwinner,sun50i-h6-i2c\0allwinner,sun6i-a31-i2c";
			reg = <0x7081400 0x400>;
			interrupts = <0x00 0x6b 0x04>;
			clocks = <0x39 0x08>;
			resets = <0x39 0x04>;
			pinctrl-names = "default";
			pinctrl-0 = <0x3b>;
			status = "disabled";
			#address-cells = <0x01>;
			#size-cells = <0x00>;
		};

		thermal-sensor@5070400 {
			compatible = "allwinner,sun50i-h6-ths";
			reg = <0x5070400 0x100>;
			interrupts = <0x00 0x0f 0x04>;
			clocks = <0x04 0x59>;
			clock-names = "bus";
			resets = <0x04 0x24>;
			nvmem-cells = <0x3c>;
			nvmem-cell-names = "calibration";
			#thermal-sensor-cells = <0x01>;
			phandle = <0x3d>;
		};
	};

	thermal-zones {

		cpu-thermal {
			polling-delay-passive = <0x00>;
			polling-delay = <0x00>;
			thermal-sensors = <0x3d 0x00>;

			trips {

				cpu-alert {
					temperature = <0x14c08>;
					hysteresis = <0x7d0>;
					type = "passive";
					phandle = <0x3e>;
				};

				cpu-crit {
					temperature = <0x186a0>;
					hysteresis = <0x00>;
					type = "critical";
				};
			};

			cooling-maps {

				map0 {
					trip = <0x3e>;
					cooling-device = <0x08 0xffffffff 0xffffffff 0x09 0xffffffff 0xffffffff 0x0a 0xffffffff 0xffffffff 0x0b 0xffffffff 0xffffffff>;
				};
			};
		};

		gpu-thermal {
			polling-delay-passive = <0x00>;
			polling-delay = <0x00>;
			thermal-sensors = <0x3d 0x01>;
		};
	};

	cpu-opp-table {
		compatible = "allwinner,sun50i-h6-operating-points";
		nvmem-cells = <0x3f>;
		opp-shared;
		phandle = <0x05>;

		opp@480000000 {
			clock-latency-ns = <0x3b9b0>;
			opp-hz = <0x00 0x1c9c3800>;
			opp-microvolt-speed0 = <0xd6d80 0xd6d80 0x124f80>;
			opp-microvolt-speed1 = <0xc8320 0xc8320 0x124f80>;
			opp-microvolt-speed2 = <0xc8320 0xc8320 0x124f80>;
		};

		opp@720000000 {
			clock-latency-ns = <0x3b9b0>;
			opp-hz = <0x00 0x2aea5400>;
			opp-microvolt-speed0 = <0xd6d80 0xd6d80 0x124f80>;
			opp-microvolt-speed1 = <0xc8320 0xc8320 0x124f80>;
			opp-microvolt-speed2 = <0xc8320 0xc8320 0x124f80>;
		};

		opp@816000000 {
			clock-latency-ns = <0x3b9b0>;
			opp-hz = <0x00 0x30a32c00>;
			opp-microvolt-speed0 = <0xd6d80 0xd6d80 0x124f80>;
			opp-microvolt-speed1 = <0xc8320 0xc8320 0x124f80>;
			opp-microvolt-speed2 = <0xc8320 0xc8320 0x124f80>;
		};

		opp@888000000 {
			clock-latency-ns = <0x3b9b0>;
			opp-hz = <0x00 0x34edce00>;
			opp-microvolt-speed0 = <0xd6d80 0xd6d80 0x124f80>;
			opp-microvolt-speed1 = <0xc8320 0xc8320 0x124f80>;
			opp-microvolt-speed2 = <0xc8320 0xc8320 0x124f80>;
		};

		opp@1080000000 {
			clock-latency-ns = <0x3b9b0>;
			opp-hz = <0x00 0x405f7e00>;
			opp-microvolt-speed0 = <0xe57e0 0xe57e0 0x124f80>;
			opp-microvolt-speed1 = <0xd6d80 0xd6d80 0x124f80>;
			opp-microvolt-speed2 = <0xd6d80 0xd6d80 0x124f80>;
		};

		opp@1320000000 {
			clock-latency-ns = <0x3b9b0>;
			opp-hz = <0x00 0x4ead9a00>;
			opp-microvolt-speed0 = <0xf4240 0xf4240 0x124f80>;
			opp-microvolt-speed1 = <0xe57e0 0xe57e0 0x124f80>;
			opp-microvolt-speed2 = <0xe57e0 0xe57e0 0x124f80>;
		};

		opp@1488000000 {
			clock-latency-ns = <0x3b9b0>;
			opp-hz = <0x00 0x58b11400>;
			opp-microvolt-speed0 = <0x102ca0 0x102ca0 0x124f80>;
			opp-microvolt-speed1 = <0xf4240 0xf4240 0x124f80>;
			opp-microvolt-speed2 = <0xf4240 0xf4240 0x124f80>;
		};

		opp@1608000000 {
			clock-latency-ns = <0x3b9b0>;
			opp-hz = <0x00 0x5fd82200>;
			opp-microvolt-speed0 = <0x10a1d0 0x10a1d0 0x124f80>;
			opp-microvolt-speed1 = <0xfb770 0xfb770 0x124f80>;
			opp-microvolt-speed2 = <0xfb770 0xfb770 0x124f80>;
		};

		opp@1704000000 {
			clock-latency-ns = <0x3b9b0>;
			opp-hz = <0x00 0x6590fa00>;
			opp-microvolt-speed0 = <0x111700 0x111700 0x124f80>;
			opp-microvolt-speed1 = <0x102ca0 0x102ca0 0x124f80>;
			opp-microvolt-speed2 = <0x102ca0 0x102ca0 0x124f80>;
		};

		opp@1800000000 {
			clock-latency-ns = <0x3b9b0>;
			opp-hz = <0x00 0x6b49d200>;
			opp-microvolt-speed0 = <0x11b340 0x11b340 0x124f80>;
			opp-microvolt-speed1 = <0x10c8e0 0x10c8e0 0x124f80>;
			opp-microvolt-speed2 = <0x10c8e0 0x10c8e0 0x124f80>;
		};
	};

	aliases {
		ethernet0 = "/soc/ethernet@5020000";
		serial0 = "/soc/serial@5000000";
	};

	chosen {
		stdout-path = "serial0:115200n8";
	};

	connector {
		compatible = "hdmi-connector";
		ddc-en-gpios = <0x18 0x07 0x02 0x00>;
		type = [61 00];

		port {

			endpoint {
				remote-endpoint = <0x40>;
				phandle = <0x31>;
			};
		};
	};

/* BT5 ADDON part3of3 BEGIN */
ext_osc32k_clk {
	#clock-cells = <0x00>;
	compatible = "fixed-clock";
	clock-frequency = <0x8000>;
	clock-output-names = "ext_osc32k";
	phandle = <0x66>;
};
/* BT5 ADDON part3of3 END */

	vcc1v8 {
		compatible = "regulator-fixed";
		regulator-name = "vcc1v8";
		regulator-min-microvolt = <0x1b7740>;
		regulator-max-microvolt = <0x1b7740>;
		phandle = <0x15>;
	};

	vcc3v3 {
		compatible = "regulator-fixed";
		regulator-name = "vcc3v3";
		regulator-min-microvolt = <0x325aa0>;
		regulator-max-microvolt = <0x325aa0>;
		phandle = <0x17>;
	};

	vcc-wifi-io {
		compatible = "regulator-fixed";
		regulator-name = "vcc-wifi-io";
		regulator-min-microvolt = <0x1b7740>;
		regulator-max-microvolt = <0x1b7740>;
		regulator-always-on;
		vin-supply = <0x17>;
		phandle = <0x1a>;
	};

	vdd-cpu-gpu {
		compatible = "regulator-fixed";
		regulator-name = "vdd-cpu-gpu";
		regulator-min-microvolt = <0x115198>;
		regulator-max-microvolt = <0x115198>;
		phandle = <0x06>;
	};

/* USB3 ADDON part3of3 BEGIN */
vbus {
	compatible = "regulator-fixed";
	regulator-name = "usb-vbus";
	regulator-min-microvolt = <0x4c4b40>;
	regulator-max-microvolt = <0x4c4b40>;
	startup-delay-us = <0x186a0>;
	gpio = <0x1c 0x00 0x05 0x00>;
	enable-active-high;
	phandle = <0x55>;
};
/* USB3 ADDON part3of3 END */

	wifi-pwrseq {
		compatible = "mmc-pwrseq-simple";
		clocks = <0x14 0x01>;
		clock-names = "ext_clock";
		reset-gpios = <0x1c 0x01 0x03 0x01>;
		phandle = <0x1b>;
	};
};

 

 

Save modified file as "modified.dts".


4. Compile modified DTS to new DTB:

$ dtc -I dts -O dtb   modified.dts   -o sun50i-h6-tanix-tx6_v96mini6k_0x.dtb


5. Copy new DTB-file to Armbian boot filesystem:
/boot/dtb/allwinner/sun50i-h6-tanix-tx6_v96mini6k_0x.dtb


6. Edit boot config file "/boot/extlinux/extlinux.conf":

  ###commented orig line:###FDT /boot/dtb/allwinner/sun50i-h6-tanix-tx6.dtb
  FDT /boot/dtb/allwinner/sun50i-h6-tanix-tx6_v96mini6k_0x.dtb


7. Reboot.

 

 

Posted

@ultradrom this is really great. it definitely enables the USB3 port.

I don't think it makes it an USB3.0 port.

I connected a USB3 Flash drive that does 50MB/s easily however all I got was 9MB/s

 

root@octoprint:/mnt/usb# dd if=/dev/zero of=512MB bs=1M count=512 oflag=direct
512+0 records in
512+0 records out
536870912 bytes (537 MB, 512 MiB) copied, 55.715 s, 9.6 MB/s

 

Posted

Old distro from balbes150 "(2021-07-27) Armbian_21.08.0-trunk_Aw-h6-tv_hirsute_current_5.10.53_xfce_desktop.img.xz"
with DTB-file "sun50i-h6-tanix-tx6_v96mini6k_01.dtb
enables power for USB_3.0-port on tvbox "V96mini 6k".
And all my USB_2.0-devices in USB_3.0-port works fine without any problems.

 

But USB_3.0-devices in USB_3.0-port glitching so much.
Devices constantly appear, disappear, and dmesg have many messages:
"Device not responding to setup address." and "reset SuperSpeed Gen 1 USB device number 3 using xhci-hcd".

 

Good news:
Latest distro from balbes150 "(2021-09-24) Armbian_21.11.0-trunk_Aw-h6-tv_hirsute_current_5.10.68_xfce_desktop.img.xz"
with DTB-file "sun50i-h6-tanix-tx6_v96mini6k_01.dtb
works fine with my USB_3.0-devices in USB_3.0-port.
Tested on usb3-cardreader and usb3-sata-adapter.

 

Speed tests:

	WRITE TEST: SD-card "Transcend 330S SDXC 64 GB" inside USB3-CardReader "Transcend TS-RDF8K USB3.0":
# dd if=/dev/urandom of=/media/user/9C33-6BBD/file500mb.bin bs=1048576 count=500 status=progress
511705088 bytes (512 MB, 488 MiB) copied, 13 s, 39.4 MB/s
500+0 records in
500+0 records out
524288000 bytes (524 MB, 500 MiB) copied, 13.5384 s, 38.7 MB/s

	READ TEST: SD-card "Transcend 330S SDXC 64 GB" inside USB3-CardReader "Transcend TS-RDF8K USB3.0":
# sudo dd if=/dev/sdb of=/dev/zero bs=1048576 count=500 status=progress
456130560 bytes (456 MB, 435 MiB) copied, 5 s, 91.0 MB/s
500+0 records in
500+0 records out
524288000 bytes (524 MB, 500 MiB) copied, 5.75727 s, 91.1 MB/s

===================

	WRITE TEST: old sata-hdd in usb3-sata-adapter
# dd if=/dev/urandom of=/media/user/1TB_HDD/file500mb.bin bs=1048576 count=500 status=progress
517996544 bytes (518 MB, 494 MiB) copied, 18 s, 28.8 MB/s
500+0 records in
500+0 records out
524288000 bytes (524 MB, 500 MiB) copied, 18.2126 s, 28.8 MB/s

	READ TEST: old sata-hdd in usb3-sata-adapter
# sudo dd if=/dev/sda of=/dev/zero bs=1048576 count=500 status=progress
[sudo] password for iuser: 
386924544 bytes (387 MB, 369 MiB) copied, 3 s, 129 MB/s
500+0 records in
500+0 records out
524288000 bytes (524 MB, 500 MiB) copied, 3.95053 s, 133 MB/s

 

P.S.
Note:
in latest distro from balbes150 "(2021-09-24) Armbian_21.11.0-trunk_Aw-h6-tv_hirsute_current_5.10.68_xfce_desktop.img.xz":
DTB-file "sun50i-h6-tanix-tx6.dtb" changed and WiFi not work for my tvbox (cause wifi part is deleted from this DTS-source).
But with my DTB-file "sun50i-h6-tanix-tx6_v96mini6k_01.dtb" (mod based on 2021-07-27 "sun50i-h6-tanix-tx6.dtb" from balbes150)
everything works on tvbox "V96mini 6k": wifi, bt, usb3, usb2, lan.

 

balbes150 distros downloaded from:
https://disk.yandex.ru/d/NdhF0c0iM0TnzQ/ArmbianTV?w=1
https://users.armbian.com/balbes150/aw-h6-tv/

Posted

Hello Ultradom, please, do you have an update to your DTB or a direction  that I could take to make the USB3 a USB3 not just USB 2.0 ?

I noticed that the Logitech Brio webcam won't work on the USB3 port and USB sticks on it work slowly.

 

I tried your DTB on: Armbian 21.05.0-trunk Focal with Linux 5.10.27-aw-h6-tv and Armbian 22.05.0-trunk  with Linux 5.15.27-station both with the latest updates, it does a great job fixing the WIFI and making the USB3 port available.

thank you

Posted

Hello charlesrg1.
Yes, have some directions ... :)

 

Short answer: imho, wrong distro for your task.

 

Long answer with variants:

 

1) tvbox versions:
My tvbox is "V96mini 6k". 
Not "V96mini 4k". Not "V96mini".
My tvbox and USB3-port location on photo above in this thread.
 

2) distro versions:
You tested unknown for me distros:
"Armbian 21.05.0-trunk Focal with Linux 5.10.27-aw-h6-tv
and 
Armbian 22.05.0-trunk  with Linux 5.15.27-station"

 

I use Ubuntu-based Armbian distro from balbes150 released 2021-07-27.
Image name "Armbian_21.08.0-trunk_Aw-h6-tv_hirsute_current_5.10.53_xfce_desktop.img.xz".
With added my custom DTB-file "sun50i-h6-tanix-tx6_v96mini6k_01.dtb". 
Newest distro versions from balbes150 not tested, but may be also work.
You can try latest distro from balbes150: 
"balbes150: 2021-12-03: Armbian_21.11.0-trunk_Aw-h6-tv_hirsute_current_5.10.82_xfce_desktop.img.xz"
If latest distro not work for you, then try the distro i am using:
"balbes150: 2021-07-27: Armbian_21.08.0-trunk_Aw-h6-tv_hirsute_current_5.10.53_xfce_desktop.img.xz"

 

You can donwload balbes150 releases here:

here many versions:
https://disk.yandex.ru/d/NdhF0c0iM0TnzQ/ArmbianTV?w=1
	2021-07-27: (i use this)
Armbian_21.08.0-trunk_Aw-h6-tv_hirsute_current_5.10.53_xfce_desktop.img.xz
	2021-09-07:
Armbian_21.11.0-trunk_Aw-h6-tv_hirsute_current_5.10.62_xfce_desktop.img.xz
	2021-09-24:
Armbian_21.11.0-trunk_Aw-h6-tv_hirsute_current_5.10.68_xfce_desktop.img.xz
	2021-12-03: (latest)
Armbian_21.11.0-trunk_Aw-h6-tv_hirsute_current_5.10.82_xfce_desktop.img.xz

here only one version (not latest):
https://users.armbian.com/balbes150/aw-h6-tv/
	2021-09-25:
Armbian_21.11.0-trunk_Aw-h6-tv_hirsute_current_5.10.68_xfce_desktop.img.xz

 

 

3) My USB3 fork at full speed. See above in this thread my speed tests for HDD and SD-card.

Linux kernel version info:

	kernel version after install 2021-07-27:
user@aw-h6-tv:~$ uname -a
Linux aw-h6-tv 5.10.53-station #trunk SMP PREEMPT Mon Jul 26 14:23:22 MSK 2021 aarch64 aarch64 aarch64 GNU/Linux
	after update 2021-aug-07:
user@aw-h6-tv:~$ uname -a
Linux aw-h6-tv 5.10.52-station #21.08.1 SMP PREEMPT Sun Jul 25 09:44:48 UTC 2021 aarch64 aarch64 aarch64 GNU/Linux

 

USB3 stuff info:

user@aw-h6-tv:~$ lsusb -t
/:  Bus 07.Port 1: Dev 1, Class=root_hub, Driver=musb-hdrc/1p, 480M
/:  Bus 06.Port 1: Dev 1, Class=root_hub, Driver=ohci-platform/1p, 12M
/:  Bus 05.Port 1: Dev 1, Class=root_hub, Driver=ohci-platform/1p, 12M
    |__ Port 1: Dev 2, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M
/:  Bus 04.Port 1: Dev 1, Class=root_hub, Driver=ehci-platform/1p, 480M
/:  Bus 03.Port 1: Dev 1, Class=root_hub, Driver=ehci-platform/1p, 480M
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci-hcd/1p, 5000M
    |__ Port 1: Dev 8, If 0, Class=Mass Storage, Driver=usb-storage, 5000M
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci-hcd/1p, 480M


user@aw-h6-tv:~$ sudo lsusb -vv
...
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
...
  idVendor           0x1d6b Linux Foundation
  idProduct          0x0003 3.0 root hub
  bcdDevice            5.10
  iManufacturer           3 Linux 5.10.52-station xhci-hcd
  iProduct                2 xHCI Host Controller
  iSerial                 1 xhci-hcd.1.auto
...
      Device can operate at SuperSpeed (5Gbps)
    bFunctionalitySupport   3
      Lowest fully-functional device speed is SuperSpeed (5Gbps)
...

 

 

4) May be...
May be your USB3-software part work, but USB3-hardware not.
USB3-software part can be checked via commands : 

$ lsusb -t
	and
$ sudo lsusb -vv

 

USB3-hardware part:
May be bad contacts problem between your USB3-cable and your USB3-port.
Or mechanically incompatible pair of your USB3-cable and your USB3-port.
Sometime USB3-cables have too long incompatible plug with bad compatibility.
If not all of USB3-contacts connected inside your USB3-port, but connected all USB2-contacts -
your device will work as USB2.0.
USB 2.0 can deliver up to 500mA power.
USB 3.0 can deliver up to 900mA power.
If your webcam need more than 500mA but your USB-port deliver only 500mA -
you can try "usb Y cable", which can deliver 2*500mA via 2*plugs to one device.

 

Guest
This topic is now closed to further replies.
×
×
  • Create New...

Important Information

Terms of Use - Privacy Policy - Guidelines