June 9Jun 9 @Nick AIs it possible to configure the front display using the Linux header you provided and the pin details I shared above? I know this is a big request, but if it's possible, it would make this setup complete. Since I am not a programmer, I tried using Google's AI, but it just took me in circles and landed me nowhere. If you require any additional log or configuration details please let me know.
June 9Jun 9 @sr4armbian You could try building your own X98H image and use the kernel headers from your build. Your kernel headers will be in the build/output/debs directory, and the image will be in the build/output/images directory. I would recommend starting with a fresh install with this new image and kernel headers. git clone https://github.com/NickAlilovic/build.git --branch v20250306 cd build ./compile.sh choose "Do not change kernel configuration" choose "Show CSC/WIP/EOS/TVB" choose "I understand and agree" choose "X98H" choose "edge" rest is up to you... I used this method to get my display working. But that was a while ago. Edited June 9Jun 9 by Nick A
August 17Aug 17 trying to build armbian image using v20250306 for vontar-h618 but getting error: Could not find package filename for 'base-files' in distro repo [ looking for base-files, found_package_filename is ] [🚸] Command failed, retrying in 15s [ apt_find_upstream_package_version_and_download_url base-files ] [🚸] Command failed 10 times, giving up [ apt_find_upstream_package_version_and_download_url base-files ] [💥] Cleaning up [ please wait for cleanups to finish ] Edited August 17Aug 17 by firepower
August 18Aug 18 Restart the build with the same options usually works. It’s a known issue need to upgrade the build to a newer version
August 18Aug 18 will do, I also trying official armbian build for tanix-tx6s-axp313 which boots but freezes after few minutes, where as your older build is stable. any chance of your builds making it into mainline armbian ? looking forward to a newer build. I see now Radxa Cubie A7A/A7Z is the new favourite. I been having a break from armbian but want to get back into it again. Edited August 19Aug 19 by firepower
August 18Aug 18 @Kajen Did you get HDMI working? I have a box very similar to yours (Transpeed 6K T98 H616) and i have been trying to get HDMI for a couple days without success. For me the only ARM Linux image that boots is a MiniArch image for pendoo x12 pro that has 7.1.1 kernel. The kernel detects the HDMI TX controller v2.12a after which it reports: sun4i-drm display-engine: [drm] Cannot find any crtc or sizes. I also tried to build custom Armbian image with custom CSC and patch files but i didn't get any of the images to boot the kernel. My specs: - AXP305 PMIC - 2 GB DDR3 Micron D9LGX - 32 GB eMMC KMR21000BM-B809 - AW859A Wireless module Pic of PCB: https://imgur.com/a/higrm6v
August 19Aug 19 just today I got hdmi signal, I turn on pin PI8, leds { compatible = "gpio-leds"; status_led { label = "blue:pwr"; gpios = <&pio 7 6 GPIO_ACTIVE_LOW>; /*PH6*/ linux,default-trigger = "default-on"; }; hdmi_pwr_led { label = "hdmi-pwr-en"; gpios = <&pio 8 8 GPIO_ACTIVE_HIGH>; /* Bank I (8), index 8 = PI8 */ default-state = "on"; }; }; here is my dts, I still need to tune for my board, to get audio, right now I am using https://github.com/jernejsk/linux-1/commits/h616-integration-v1 for my kernel Spoiler /dts-v1/; #include "sun50i-h616.dtsi" #include "sun50i-h616-cpu-opp.dtsi" #include <dt-bindings/gpio/gpio.h> #include <dt-bindings/interrupt-controller/arm-gic.h> #include <dt-bindings/leds/common.h> / { model = "Transpeed T98 616"; compatible = "transpeed,t98-616", "allwinner,sun50i-h616"; aliases { mmc0 = &mmc0; mmc2 = &mmc2; ethernet0 = &emac1; ethernet1 = &wlan; serial0 = &uart0; }; chosen { stdout-path = "serial0:115200n8"; }; leds { compatible = "gpio-leds"; status_led { label = "blue:pwr"; gpios = <&pio 7 6 GPIO_ACTIVE_LOW>; /*PH6*/ linux,default-trigger = "default-on"; }; hdmi_pwr_led { label = "hdmi-pwr-en"; gpios = <&pio 8 8 GPIO_ACTIVE_HIGH>; /* Bank I (8), index 8 = PI8 */ default-state = "on"; }; }; connector { compatible = "hdmi-connector"; type = "a"; port { hdmi_con_in: endpoint { remote-endpoint = <&hdmi_out_con>; }; }; }; // Add bit-banged I2C for the FD650 Front Panel Display fd650 { compatible = "i2c-gpio"; sda-gpios = <&pio 8 12 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; /* PI12 (268) */ scl-gpios = <&pio 8 11 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; /* PI11 (267) */ i2c-gpio,delay-us = <2>; /* ~100 kHz */ #address-cells = <1>; #size-cells = <0>; /* You can map your open-source fd650 / openvfd driver node here if compiled into kernel */ }; reg_vcc5v: vcc5v { /* board wide 5V supply directly from the USB-C socket */ compatible = "regulator-fixed"; regulator-name = "vcc-5v"; regulator-min-microvolt = <5000000>; regulator-max-microvolt = <5000000>; regulator-always-on; regulator-boot-on; }; reg_usb1_vbus: usb1-vbus { compatible = "regulator-fixed"; regulator-name = "usb1-vbus"; regulator-min-microvolt = <5000000>; regulator-max-microvolt = <5000000>; vin-supply = <®_vcc5v>; enable-active-high; /* gpio = <&pio 2 16 GPIO_ACTIVE_HIGH>; PC16 */ status = "okay"; }; reg_vcc3v3: vcc3v3 { /* discrete 3.3V regulator */ compatible = "regulator-fixed"; regulator-name = "vcc-3v3"; regulator-min-microvolt = <3300000>; regulator-max-microvolt = <3300000>; regulator-always-on; }; wifi_pwrseq: wifi_pwrseq { compatible = "mmc-pwrseq-simple"; clocks = <&rtc 1>; clock-names = "ext_clock"; reset-gpios = <&pio 6 18 GPIO_ACTIVE_LOW>; /* PG18 */ post-power-on-delay-ms = <200>; }; }; &cpu0 { cpu-supply = <®_dcdca>; status = "okay"; }; &gpu { mali-supply = <®_dcdcc>; status = "okay"; }; &de {status = "okay";}; &hdmi_out { hdmi_out_con: endpoint { remote-endpoint = <&hdmi_con_in>; }; }; &hdmi { #sound-dai-cells = <0>; hvcc-supply = <&bldo1>; phy-supply = <&cldo1>; status = "okay"; }; &hdmi_phy { phy-supply = <&aldo1>; hvcc-supply = <&bldo1>; status = "okay"; }; &ohci1 {status = "okay";}; &ehci1 {status = "okay";}; &ohci2 {status = "okay";}; &ehci2 {status = "okay";}; &emac1 { pinctrl-names = "default"; pinctrl-0 = <&rmii_pins>; phy-mode = "rmii"; phy-handle = <&rmii_phy>; phy-supply = <&aldo1>; allwinner,rx-delay-ps = <3100>; allwinner,tx-delay-ps = <700>; status = "okay"; }; &mdio1 { rmii_phy: ethernet-phy@1 { compatible = "ethernet-phy-ieee802.3-c22"; reg = <1>; }; }; &mmc0 { vmmc-supply = <®_dcdce>; cd-gpios = <&pio 8 16 GPIO_ACTIVE_LOW>; /* PI16 */ disable-wp; bus-width = <4>; status = "okay"; }; &mmc1 { vmmc-supply = <®_dcdce>; /* 3.3v */ vqmmc-supply = <&bldo1>; /* 1.8v */ mmc-pwrseq = <&wifi_pwrseq>; bus-width = <4>; non-removable; status = "okay"; wlan: wifi@1 { reg = <1>; }; }; &mmc2 { vmmc-supply = <®_dcdce>; vqmmc-supply = <&bldo1>; bus-width = <8>; non-removable; cap-mmc-hw-reset; mmc-hs200-1_8v; status = "okay"; }; &uart0 { pinctrl-names = "default"; pinctrl-0 = <&uart0_ph_pins>; status = "okay"; }; &uart1 { pinctrl-names = "default"; pinctrl-0 = <&uart1_pins>, <&uart1_rts_cts_pins>; uart-has-rtscts; status = "okay"; }; &ir { linux,rc-map-name = "rc-beelink-gs1"; status = "okay"; }; &r_i2c { status = "okay"; clock-frequency = <100000>; axp305: pmic@36 { compatible = "x-powers,axp305", "x-powers,axp805", "x-powers,axp806"; reg = <0x36>; wakeup-source; interrupt-controller; #interrupt-cells = <1>; x-powers,self-working-mode; vina-supply = <®_vcc5v>; vinb-supply = <®_vcc5v>; vinc-supply = <®_vcc5v>; vind-supply = <®_vcc5v>; vine-supply = <®_vcc5v>; aldoin-supply = <®_vcc5v>; bldoin-supply = <®_vcc5v>; cldoin-supply = <®_vcc5v>; regulators { aldo1: aldo1 { regulator-always-on; regulator-min-microvolt = <3300000>; regulator-max-microvolt = <3300000>; regulator-name = "vcc-sys"; }; reg_aldo2: aldo2 { /* Enabled by the Android BSP */ regulator-always-on; regulator-min-microvolt = <3300000>; regulator-max-microvolt = <3300000>; regulator-name = "vcc3v3-ext"; status = "okay"; }; reg_aldo3: aldo3 { /* Enabled by the Android BSP */ regulator-always-on; regulator-min-microvolt = <3300000>; regulator-max-microvolt = <3300000>; regulator-name = "vcc3v3-ext2"; status = "okay"; }; bldo1: bldo1 { regulator-always-on; regulator-min-microvolt = <1800000>; regulator-max-microvolt = <1800000>; regulator-name = "vcc1v8"; status = "okay"; startup-delay-us = <50000>; }; cldo1: cldo1 { regulator-min-microvolt = <2500000>; regulator-max-microvolt = <2500000>; regulator-name = "vcc2v5"; regulator-always-on; regulator-boot-on; }; reg_dcdca: dcdca { regulator-always-on; regulator-min-microvolt = <810000>; regulator-max-microvolt = <1100000>; regulator-name = "vdd-cpu"; }; reg_dcdcc: dcdcc { regulator-always-on; regulator-min-microvolt = <810000>; regulator-max-microvolt = <990000>; regulator-name = "vdd-gpu-sys"; }; reg_dcdcd: dcdcd { regulator-always-on; regulator-min-microvolt = <1360000>; regulator-max-microvolt = <1360000>; regulator-name = "vdd-dram"; }; reg_dcdce: dcdce { regulator-always-on; regulator-min-microvolt = <3300000>; regulator-max-microvolt = <3300000>; regulator-name = "vcc-eth-mmc"; }; }; }; }; &usbotg { dr_mode = "peripheral"; status = "okay"; }; &usbphy { usb1_vbus-supply = <®_usb1_vbus>; status = "okay"; }; &codec { allwinner,audio-routing = "Line Out", "LINEOUT"; status = "okay"; }; &pio { vcc-pa-supply = <®_dcdce>; phy-io-supply = <®_dcdce>; vcc-pc-supply = <&aldo1>; vcc-pf-supply = <&aldo1>; vcc-pg-supply = <&bldo1>; vcc-ph-supply = <&aldo1>; vcc-pi-supply = <&aldo1>; vcc-pl-supply = <®_aldo2>; };
August 19Aug 19 @Kuostiyou can also manually turn on its pin with a script that run after boot echo "264" > "/sys/class/gpio/export" echo "out" > "/sys/class/gpio/gpio264/direction" echo 1 > "/sys/class/gpio/gpio264/value" I still need to test it to see if it work on other images, in that case maybe you dont need to compile it, as long it boot, like pendoo x12 pro
August 22Aug 22 Ok, i built an Armbian v25.05 image with kernel 6.12.11-edge-sunxi64. I used the 158-add-pendoo-x12pro-defconfig.patch for uboot and @Kajen DTS above for kernel patch. HDMI still doesn't work, but the system is stable, ethernet works and the blue power led works too. According to H616 datasheet PI0 is SCL, PI1 SDA, and PI2 is CEC for HDMI so i added them to pinctrl node in dtb to claim them hdmi-pins { pins = "PI0\0PI1\0PI2"; function = "hdmi"; phandle = <0x90>; }; And then these to hdmi@6000000 pinctrl-names = "default"; pinctrl-0 = <0x90>; But i still get "Cannot find any crtc or sizes", and when i force the HDMI on with extraargs=video=HDMI-A-1:1920x1080@60e in /boot/armbianEnv.txt i get "PHY PLL failed to lock". Maybe this board needs some specific kernel fixes? Im a total n00b at tv boxes and Linux kernel so my knowledge is extremely limited... Also, in /sys/kernel/debug/clk/clk_summary the HDMI clock is apparently 172615385Hz which is too high for 1920x1080@60. It is supposed to be 148500000Hz. I think that would explain why PHY PLL fails to lock but i don't know how to fix this.
August 23Aug 23 you can try this script Spoiler #!/bin/bash # Script to iterate through unclaimed GPIOs, set them as output, # toggle them high/low, and test i2cdetect -y 1 for HDMI DDC recovery. SYS_GPIO="/sys/class/gpio" DELAY=0.2 echo "=== Starting GPIO Pin Search and DDC Check ===" # Get lines from gpiochip1 that do NOT have a consumer listed UNCLAIMED_PINS=$(gpioinfo -c gpiochip1 | grep -E "line +[0-9]+:" | grep -v "consumer=" | awk '{print $2}' | tr -d ':') for pin in $UNCLAIMED_PINS; do echo "--------------------------------------------------" echo "[*] Testing GPIO Pin: $pin" # Export GPIO if not already exported if [ ! -d "$SYS_GPIO/gpio$pin" ]; then if ! echo "$pin" > "$SYS_GPIO/export" 2>/dev/null; then echo " └─ [!] Export failed (Resource busy or kernel restricted). Skipping." continue fi fi # Set direction to output if ! echo "out" > "$SYS_GPIO/gpio$pin/direction" 2>/dev/null; then echo " └─ [!] Failed to set direction to output. Unexporting and skipping." echo "$pin" > "$SYS_GPIO/unexport" 2>/dev/null continue fi # Toggle HIGH -> LOW -> HIGH echo 1 > "$SYS_GPIO/gpio$pin/value" 2>/dev/null sleep $DELAY echo 0 > "$SYS_GPIO/gpio$pin/value" 2>/dev/null sleep $DELAY echo 1 > "$SYS_GPIO/gpio$pin/value" 2>/dev/null # Check i2cdetect output on i2c-1 (HDMI DDC) # Count how many ACKs (hex addresses) are detected I2C_COUNT=$(i2cdetect -y 1 | grep -oE " [0-9a-f]{2} " | wc -l) echo " └─ Active addresses on i2c-1: $I2C_COUNT" if [ "$I2C_COUNT" -eq 1 ]; then echo "==================================================" echo " SUCCESS! DDC Bus Recovered on GPIO Pin: $pin" echo "==================================================" i2cdetect -y 1 # Clean up pin export before exit echo "$pin" > "$SYS_GPIO/unexport" 2>/dev/null exit 0 elif [ "$I2C_COUNT" -lt 10 ]; then echo " └─ [*] Partial bus change detected on GPIO $pin ($I2C_COUNT devices active)." fi # Unexport to leave sysfs clean echo "$pin" > "$SYS_GPIO/unexport" 2>/dev/null done echo "--------------------------------------------------" echo "Scan complete. No single unclaimed pin cleared the bus ghosting." this is from gemini, this helped me find the right pin, check i2cdetect -l for right chip and change line 45, with your count on i2cdetect -y x + 1, you board design is a little different from mine, maybe they use other pin
August 23Aug 23 @Kajen I can confirm the right pin is in fact different! For me its PI9. 3 days wasted on diagnosis but at least HDMI is in working state 😂
August 31Aug 31 Hi @Kajen I noticed the Jernej h616-integration-v1 branch and had some time today to test it. I’ve been busy with work and other projects lately. Here’s the Armbian build. It boots, but there are some errors. I’ll have to reconnect the UART pins to see where things went wrong. The build includes Jernej’s patches and the board configuration. I'm also using Werner's 7.2 Armbian build but with a different patch directory. (jernejsk-7.2) https://github.com/EvilOlaf/build/tree/sunxi-7.2 I haven’t made any modifications to the mainline DTS. I’m not sure when I’ll have more time to work on it, but hopefully I can investigate the issues further when I get a chance. https://github.com/NickAlilovic/build/tree/sunxi-7.2 Edited August 31Aug 31 by Nick A
September 6Sep 6 Please share your AI skills to translate vendor android DTS into armbian compatible DTS. The work seems menial and lacks any sort of documentation. An automated workflow would do wonders, if created by someone who understands it fully.
Thursday at 05:46 AM3 days @Nick A I updated the latest patches from jernejsk and added support for x98h. https://github.com/bk3a12/build/tree/sunxi-7.2
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.