-
Posts
310 -
Joined
-
Last visited
Content Type
Forums
Store
Crowdfunding
Applications
Events
Raffles
Community Map
Everything posted by Nick A
-
Sorry @JamesCL, Werner is correct. I thought 8 would display all kernel messages. Not sure if we can pass ignore_loglevel. Try loglevel 7. The source I got the information from was wrong. https://stackoverflow.com/questions/16390004/change-default-console-loglevel-during-boot-up/16390389#16390389
-
Change the armbianEnv.txt log level to 8 in your sdcard. That should give you a more verbose kernel startup.
-
TX95 Max - Allwinner H618 Quadcore Cortex - A53
Nick A replied to Mark Waples's topic in Allwinner CPU Boxes
These are the instructions MMorales posted in the H618 thread. If your LED display is on then the module is already installed. This was done when you ran the commands "make modules_install" and "modprobe openvfd". I don't see "make clean". You only use that command if you plan on editing the sources and need to compile a new driver. cp openvfd.dts /boot/dtb/allwinner/overlay/ armbian-add-overlay /boot/dtb/allwinner/overlay/openvfd.dts reboot ln -sf /boot/System.map-$(uname -r) /lib/modules/$(uname -r)/build/System.map cd cd /linux_openvfd/driver make -j 4 depmod -a make modules_install modprobe openvfd cd .. chmod +x OpenVFDService cp OpenVFDService /usr/sbin/ cp openvfd.service /etc/systemd/system/openvfd.service #apt install python3-psutil systemctl enable openvfd.service systemctl start openvfd.service Type this command to list the modules already installed and running on your system. lsmod If you don't see openvfd in the list. Run modprobe without the .ko modprobe openvfd Check the directory /sys/class/leds/openvfd/ see if it exits. ls /sys/class/leds/openvfd/ You can skip these lines. We are more interested in the LED Icons. insmod openvfd.ko ./OpenVFDService & (run OpenVFDService Daemon to show time) ./OpenVFDService -t & (run OpenVFDService Daemon in test mode) I haven't looked at the openvfd driver sources much. I guess it's not the job of the driver to check the status of your network, usb etc... I believe the openvfd.service script sets the icons on or off manually using these commands. This is why you don't see any changes after you update your dts. The python script you sent me is based on xbmc/kodi scripts. I don't understand it too much. But I found this in the script. self._vfdon = '/sys/class/leds/openvfd/led_on' self._vfdoff = '/sys/class/leds/openvfd/led_off' The openvfd driver sets the on/off state manually using command for example alarm icon. echo alarm > /sys/class/leds/openvfd/led_on In this function fd650_set_icon(const char *name, unsigned char state) - name is the string we passed to the function (in this example it's "alarm") and the code inside compares name using the strncmp(name,"alarm",5) function. (name = "alarm" and 5 stands for the length of the string). The strncmp returns 0 if the string compare is correct. - dtb->led_dots[LED_DOT1_ALARM] is set in your dts. led_dots[] is an array of numbers. LED_DOT1_ALARM is the first position in the array. Alarm in the array is normally set to 0 but some displays are different. So we can change that value in the dts. - This code turns the LED Icon on or off. "dev->status_led_mask = state ? (dev->status_led_mask | dtb->led_dots[LED_DOT1_ALARM]) : (dev->status_led_mask & ~dtb->led_dots[LED_DOT1_ALARM]);" if (strncmp(name,"alarm",5) == 0) { dev->status_led_mask = state ? (dev->status_led_mask | dtb->led_dots[LED_DOT1_ALARM]) : (dev->status_led_mask & ~dtb->led_dots[LED_DOT1_ALARM]); } else if (strncmp(name,"usb",3) == 0) { dev->status_led_mask = state ? (dev->status_led_mask | dtb->led_dots[LED_DOT1_USB]) : (dev->status_led_mask & ~dtb->led_dots[LED_DOT1_USB]); } else if (strncmp(name,"play",4) == 0) { dev->status_led_mask = state ? (dev->status_led_mask | dtb->led_dots[LED_DOT1_PLAY]) : (dev->status_led_mask & ~dtb->led_dots[LED_DOT1_PLAY]); } else if (strncmp(name,"pause",5) == 0) { dev->status_led_mask = state ? (dev->status_led_mask | dtb->led_dots[LED_DOT1_PAUSE]) : (dev->status_led_mask & ~dtb->led_dots[LED_DOT1_PAUSE]); } else if (strncmp(name,"colon",5) == 0) { dev->status_led_mask = state ? (dev->status_led_mask | dtb->led_dots[LED_DOT1_SEC]) : (dev->status_led_mask & ~dtb->led_dots[LED_DOT1_SEC]); } else if (strncmp(name,"eth",3) == 0) { dev->status_led_mask = state ? (dev->status_led_mask | dtb->led_dots[LED_DOT1_ETH]) : (dev->status_led_mask & ~dtb->led_dots[LED_DOT1_ETH]); } else if (strncmp(name,"wifi",4) == 0) { dev->status_led_mask = state ? (dev->status_led_mask | dtb->led_dots[LED_DOT1_WIFI]) : (dev->status_led_mask & ~dtb->led_dots[LED_DOT1_WIFI]); } break; I don't think we need to make any changes to the driver. We need to figure out the correct number for each icon and test it by manually setting the icon on or off. Then we need to figure out a way to make our own service script to set these icons on or off depending on their state. -
TX95 Max - Allwinner H618 Quadcore Cortex - A53
Nick A replied to Mark Waples's topic in Allwinner CPU Boxes
Hi Mark It looks like that python script might be using these commands. Try these commands maybe they'll work for you. https://github.com/arthur-liberman/linux_openvfd/blob/9264588ba27a964a1e56346202901dd17f9e133d/led_control.txt -
TX95 Max - Allwinner H618 Quadcore Cortex - A53
Nick A replied to Mark Waples's topic in Allwinner CPU Boxes
Hi AlexYMo99 Your transpeed box has a different wifi chip. Maybe this will help. Check your dmesg it will tell you which firmware you need. It's probably already included in armbian. Just needs a name change. -
Yes, the warpme patches adds a lot more features. Apritzel sources will mostly likely be mainlined. You can use Apritzel's kernel source and add warpme patches on top. I took the quickest route and just added all of warpme's patches. warpme: aliases { serial0 = &uart0; mmc0 = &mmc0; mmc1 = &mmc1; mmc2 = &mmc2; ethernet0 = &gmac0; ethernet1 = &gmac1; ethernet2 = &wlan; }; apritzel: aliases { serial0 = &uart0; }; &mmc0 { vmmc-supply = <®_cldo3>; cd-gpios = <&pio 5 6 (GPIO_ACTIVE_LOW | GPIO_PULL_DOWN)>; /* PF6 */ bus-width = <4>; status = "okay"; };
-
Can’t really tell if the image works without a boot log. You would need a USB to TTL serial adapter connected to your uart pins.
-
It's on the next branch. It was added back in Nov 18, 2024. https://github.com/orangepi-xunlong/orangepi-build/commit/0a00a8bc4d7874643203c38fe3c62943931397b3 If it doesn't work then ask the orange pi forums for help.
-
Have you tried building your own orangepi 4a image using the orangpi build scripts? Maybe the build script will let you edit the kernel config or you can replace it with your own. https://github.com/orangepi-xunlong/orangepi-build/tree/next https://github.com/orangepi-xunlong/orangepi-build/blob/0a00a8bc4d7874643203c38fe3c62943931397b3/external/config/kernel/linux-5.15-sun55iw3-current.config
-
TX95 Max - Allwinner H618 Quadcore Cortex - A53
Nick A replied to Mark Waples's topic in Allwinner CPU Boxes
I found another thread https://discourse.coreelec.org/t/how-to-configure-vfd/427/726 If you read the reply here. https://discourse.coreelec.org/t/how-to-configure-vfd/427/732 Try these settings for chars and dot_bits.. This was the config they used. They didn't give us any details on the changes they made to the driver sources. Maybe the current driver already has the changes? We could message TheCoolest and ask him. https://discourse.coreelec.org/uploads/short-url/6Lof0boBxj2HuBDGQ32mKN5Rka7.conf # This file must be renamed to vfd.conf and placed in the /storage/.config/ folder. # # Tanix TX3 Mini - S905L configuration #-------------------- #gpio_xxx: # [0] 0 = &gpio, 1 = &gpio_ao. # [1] pin number - https://github.com/openSUSE/kernel/blob/master/include/dt-bindings/gpio/meson-gxl-gpio.h # [0] Reserved - must be 0. vfd_gpio_clk='1,9,0' vfd_gpio_dat='1,6,0' vfd_gpio_stb='0,0,0xFF' #chars: # < DHHMM > Order of display chars (D=dots, represented by a single char) vfd_chars='2,4,3,2,1' #dot_bits: # Order of dot bits. Typical configurations: # Display Type 0, 1 usually has Alarm, USB, Play, Pause, Col, Ethernet, Wifi dots # Alarm = 0, USB = 1, Play = 2, Pause = 3, Col = 4, Eth = 5, Wifi = 6 # Display Type 2 usually has APPS, USB, SETUP, CARD, Col, HDMI, CVBS dots # APPS = 0, USB = 1, SETUP = 2, CARD = 3, Col = 4, HDMI = 5, CVBS = 6 # Display Type 3 Power, LAN, Col, Low Wifi, High Wifi # N/A = 0, N/A = 1, Power = 2, LAN = 3, Col = 4, Low Wifi = 5, High Wifi = 6 # Position: 0 1 2 3 4 5 6 vfd_dot_bits='0,1,4,5,6,2,3' #display_type: # [0] - Display type. # [1] - Reserved - must be 0.. # [2] - Flags. (bit 0 = '1' - Common Anode display) # [3] - Controller. vfd_display_type='0x01,0x00,0x00,0x03' -
Already assembled image. After you write to your SDcard. Edit the file /boot/armbianEnv.txt. Again this is early bring up work. This will only boot off SDcard not your internel eMMC.
-
There's a board that's similar to orangepi 4a called Avaota A1. https://github.com/armbian/build/blob/main/config/boards/avaota-a1.csc This script uses the legacy kernel and drivers that come with the Avaota A1 vender image. Orangepi probably uses a similar kernel source so I don't know if it will make any difference. legacy) KERNELSOURCE='https://github.com/AvaotaSBC/linux.git' # This is Allwinner's new BSP kernel, # which consists of a specific version of the mainline kernel source code and a folder containing BSP driver source code files. KERNELBRANCH="branch:linux-5.15" declare -g KERNEL_MAJOR_MINOR="5.15" KERNELPATCHDIR="sun55iw3-syterkit-${BRANCH}" LINUXCONFIG="linux-sun55iw3-syterkit-${BRANCH}" https://github.com/armbian/build/blob/main/config/sources/families/sun55iw3-syterkit.conf orangepi 4a https://github.com/orangepi-xunlong/orangepi-build/blob/next/external/config/sources/families/sun55iw3.conf https://github.com/orangepi-xunlong/orangepi-build/blob/next/external/config/sources/arm64.conf
-
Nope, you are better off sticking with vender supplied images if you need hdmi support. It may take months before there's a working hdmi.
-
After looking at the Minimyth2 sources again. Orangepi 4a uses the same u-boot. But the exlinux.conf changes the fdt. (flat device tree) before it boots the kernel. https://github.com/warpme/minimyth2/blob/master/script/bootloaders/board-t527.orangepi_4a/files/extlinux.conf My build uses boot-sun50i-next.cmd instead of exlinux.conf. https://github.com/NickAlilovic/build/blob/warpme-6.12/config/sources/families/sun55iw3.conf https://github.com/NickAlilovic/build/blob/warpme-6.12/config/bootscripts/boot-sun50i-next.cmd So to change the dtb you need to add this in your /boot/armbianEnv.txt fdtfile=sun55i-t527-orangepi-4a.dtb Remember this is early mainline uboot and linux bring up work. There's no HDMI. You'll need a USB to TTL serial converter connected to your uart pins.
-
TX95 Max - Allwinner H618 Quadcore Cortex - A53
Nick A replied to Mark Waples's topic in Allwinner CPU Boxes
I'm pretty sure your controller is FD650 ID=3. I found this forum thread. Someone had a similar LED Display like yours. HAV's posted a few pictures of his display. I don't think he had PLAY/PAUSE icons because there's not enough room on his display. "The only icon that doesn’t work now is the play/pause one. I also can’t test the wifi because it doesn’t work." https://discourse.coreelec.org/t/how-to-configure-vfd/427/924 If we still have issues after playing around with the dot_bits. We might need to add another Display Type with only WIFI, Ethernet, Col, USB icons. https://github.com/arthur-liberman/linux_openvfd/blob/master/driver/controllers/fd650.c static void fd650_set_icon(const char *name, unsigned char state) { struct vfd_dtb_config *dtb = &dev->dtb_active; switch (dtb->display.type) { case DISPLAY_TYPE_5D_7S_NORMAL: case DISPLAY_TYPE_5D_7S_T95: case DISPLAY_TYPE_5D_7S_G9SX: if (strncmp(name,"alarm",5) == 0) { dev->status_led_mask = state ? (dev->status_led_mask | dtb->led_dots[LED_DOT1_ALARM]) : (dev->status_led_mask & ~dtb->led_dots[LED_DOT1_ALARM]); } else if (strncmp(name,"usb",3) == 0) { dev->status_led_mask = state ? (dev->status_led_mask | dtb->led_dots[LED_DOT1_USB]) : (dev->status_led_mask & ~dtb->led_dots[LED_DOT1_USB]); } else if (strncmp(name,"play",4) == 0) { dev->status_led_mask = state ? (dev->status_led_mask | dtb->led_dots[LED_DOT1_PLAY]) : (dev->status_led_mask & ~dtb->led_dots[LED_DOT1_PLAY]); } else if (strncmp(name,"pause",5) == 0) { dev->status_led_mask = state ? (dev->status_led_mask | dtb->led_dots[LED_DOT1_PAUSE]) : (dev->status_led_mask & ~dtb->led_dots[LED_DOT1_PAUSE]); } else if (strncmp(name,"colon",5) == 0) { dev->status_led_mask = state ? (dev->status_led_mask | dtb->led_dots[LED_DOT1_SEC]) : (dev->status_led_mask & ~dtb->led_dots[LED_DOT1_SEC]); } else if (strncmp(name,"eth",3) == 0) { dev->status_led_mask = state ? (dev->status_led_mask | dtb->led_dots[LED_DOT1_ETH]) : (dev->status_led_mask & ~dtb->led_dots[LED_DOT1_ETH]); } else if (strncmp(name,"wifi",4) == 0) { dev->status_led_mask = state ? (dev->status_led_mask | dtb->led_dots[LED_DOT1_WIFI]) : (dev->status_led_mask & ~dtb->led_dots[LED_DOT1_WIFI]); } break; case DISPLAY_TYPE_5D_7S_X92: if (strncmp(name,"apps",4) == 0) { dev->status_led_mask = state ? (dev->status_led_mask | dtb->led_dots[LED_DOT2_APPS]) : (dev->status_led_mask & ~dtb->led_dots[LED_DOT2_APPS]); } else if (strncmp(name,"setup",5) == 0) { dev->status_led_mask = state ? (dev->status_led_mask | dtb->led_dots[LED_DOT2_SETUP]) : (dev->status_led_mask & ~dtb->led_dots[LED_DOT2_SETUP]); } else if (strncmp(name,"usb",3) == 0) { dev->status_led_mask = state ? (dev->status_led_mask | dtb->led_dots[LED_DOT2_USB]) : (dev->status_led_mask & ~dtb->led_dots[LED_DOT2_USB]); } else if (strncmp(name,"sd",2) == 0) { dev->status_led_mask = state ? (dev->status_led_mask | dtb->led_dots[LED_DOT2_CARD]) : (dev->status_led_mask & ~dtb->led_dots[LED_DOT2_CARD]); } else if (strncmp(name,"colon",5) == 0) { dev->status_led_mask = state ? (dev->status_led_mask | dtb->led_dots[LED_DOT2_SEC]) : (dev->status_led_mask & ~dtb->led_dots[LED_DOT2_SEC]); } else if (strncmp(name,"hdmi",4) == 0) { dev->status_led_mask = state ? (dev->status_led_mask | dtb->led_dots[LED_DOT2_HDMI]) : (dev->status_led_mask & ~dtb->led_dots[LED_DOT2_HDMI]); } else if (strncmp(name,"cvbs",4) == 0) { dev->status_led_mask = state ? (dev->status_led_mask | dtb->led_dots[LED_DOT2_CVBS]) : (dev->status_led_mask & ~dtb->led_dots[LED_DOT2_CVBS]); } break; case DISPLAY_TYPE_5D_7S_ABOX: if (strncmp(name,"power",5) == 0) { dev->status_led_mask = state ? (dev->status_led_mask | dtb->led_dots[LED_DOT3_POWER]) : (dev->status_led_mask & ~dtb->led_dots[LED_DOT3_POWER]); } else if (strncmp(name,"eth",3) == 0) { dev->status_led_mask = state ? (dev->status_led_mask | dtb->led_dots[LED_DOT3_LAN]) : (dev->status_led_mask & ~dtb->led_dots[LED_DOT3_LAN]); } else if (strncmp(name,"colon",5) == 0) { dev->status_led_mask = state ? (dev->status_led_mask | dtb->led_dots[LED_DOT3_SEC]) : (dev->status_led_mask & ~dtb->led_dots[LED_DOT3_SEC]); } else if (strncmp(name,"wifi",4) == 0) { dev->status_led_mask = state ? (dev->status_led_mask | dtb->led_dots[LED_DOT3_WIFIHI] | dtb->led_dots[LED_DOT3_WIFILO]) : (dev->status_led_mask & ~(dtb->led_dots[LED_DOT3_WIFIHI] | dtb->led_dots[LED_DOT3_WIFILO])); } break; case DISPLAY_TYPE_5D_X96_X9: if (strncmp(name,"apps",4) == 0) { dev->status_led_mask = state ? (dev->status_led_mask | dtb->led_dots[LED_DOT5_APPS]) : (dev->status_led_mask & ~dtb->led_dots[LED_DOT5_APPS]); } else if (strncmp(name,"usb",3) == 0) { dev->status_led_mask = state ? (dev->status_led_mask | dtb->led_dots[LED_DOT5_USB]) : (dev->status_led_mask & ~dtb->led_dots[LED_DOT5_USB]); } else if (strncmp(name,"sd",2) == 0) { dev->status_led_mask = state ? (dev->status_led_mask | dtb->led_dots[LED_DOT5_CARD]) : (dev->status_led_mask & ~dtb->led_dots[LED_DOT5_CARD]); } else if (strncmp(name,"colon",5) == 0) { dev->status_led_mask = state ? (dev->status_led_mask | dtb->led_dots[LED_DOT5_SEC]) : (dev->status_led_mask & ~dtb->led_dots[LED_DOT5_SEC]); } else if (strncmp(name,"eth",3) == 0) { dev->status_led_mask = state ? (dev->status_led_mask | dtb->led_dots[LED_DOT5_ETH]) : (dev->status_led_mask & ~dtb->led_dots[LED_DOT5_ETH]); } else if (strncmp(name,"wifi",4) == 0) { dev->status_led_mask = state ? (dev->status_led_mask | dtb->led_dots[LED_DOT5_WIFIHI] | dtb->led_dots[LED_DOT5_WIFILO]) : (dev->status_led_mask & ~(dtb->led_dots[LED_DOT5_WIFIHI] | dtb->led_dots[LED_DOT5_WIFILO])); } break; case DISPLAY_TYPE_5D_7S_M9_PRO: if (strncmp(name,"b-t",3) == 0) { dev->status_led_mask = state ? (dev->status_led_mask | dtb->led_dots[LED_DOT4_BT]) : (dev->status_led_mask & ~dtb->led_dots[LED_DOT4_BT]); } else if (strncmp(name,"eth",3) == 0) { dev->status_led_mask = state ? (dev->status_led_mask | dtb->led_dots[LED_DOT4_ETH]) : (dev->status_led_mask & ~dtb->led_dots[LED_DOT4_ETH]); } else if (strncmp(name,"wifi",4) == 0) { dev->status_led_mask = state ? (dev->status_led_mask | dtb->led_dots[LED_DOT4_WIFI]) : (dev->status_led_mask & ~dtb->led_dots[LED_DOT4_WIFI]); } else if (strncmp(name,"spdif",5) == 0) { dev->status_led_mask = state ? (dev->status_led_mask | dtb->led_dots[LED_DOT4_SPDIF]) : (dev->status_led_mask & ~dtb->led_dots[LED_DOT4_SPDIF]); } else if (strncmp(name,"colon",5) == 0) { dev->status_led_mask = state ? (dev->status_led_mask | dtb->led_dots[LED_DOT4_SEC]) : (dev->status_led_mask & ~dtb->led_dots[LED_DOT4_SEC]); } else if (strncmp(name,"hdmi",4) == 0) { dev->status_led_mask = state ? (dev->status_led_mask | dtb->led_dots[LED_DOT4_HDMI]) : (dev->status_led_mask & ~dtb->led_dots[LED_DOT4_HDMI]); } else if (strncmp(name,"cvbs",4) == 0) { dev->status_led_mask = state ? (dev->status_led_mask | dtb->led_dots[LED_DOT4_AV]) : (dev->status_led_mask & ~dtb->led_dots[LED_DOT4_AV]); } break; default: if (strncmp(name,"colon",5) == 0) dev->status_led_mask = state ? (dev->status_led_mask | ledDots[LED_DOT_SEC]) : (dev->status_led_mask & ~ledDots[LED_DOT_SEC]); break; } } https://github.com/arthur-liberman/linux_openvfd/blob/master/driver/openvfd_drv.h enum { DISPLAY_TYPE_5D_7S_NORMAL, // T95U DISPLAY_TYPE_5D_7S_T95, // T95K is different. DISPLAY_TYPE_5D_7S_X92, DISPLAY_TYPE_5D_7S_ABOX, DISPLAY_TYPE_FD620_REF, DISPLAY_TYPE_4D_7S_COL, DISPLAY_TYPE_5D_7S_M9_PRO, DISPLAY_TYPE_5D_7S_G9SX, DISPLAY_TYPE_4D_7S_FREESATGTC, DISPLAY_TYPE_5D_7S_TAP1, DISPLAY_TYPE_5D_X96_X9, DISPLAY_TYPE_MAX, }; enum { LED_DOT1_ALARM, LED_DOT1_USB, LED_DOT1_PLAY, LED_DOT1_PAUSE, LED_DOT1_SEC, LED_DOT1_ETH, LED_DOT1_WIFI, LED_DOT1_MAX }; enum { LED_DOT2_APPS, LED_DOT2_SETUP, LED_DOT2_USB, LED_DOT2_CARD, LED_DOT2_SEC, LED_DOT2_HDMI, LED_DOT2_CVBS, LED_DOT2_MAX }; enum { LED_DOT3_UNUSED1, LED_DOT3_UNUSED2, LED_DOT3_POWER, LED_DOT3_LAN, LED_DOT3_SEC, LED_DOT3_WIFIHI, LED_DOT3_WIFILO, LED_DOT3_MAX }; enum { LED_DOT4_BT, LED_DOT4_ETH, LED_DOT4_WIFI, LED_DOT4_SPDIF, LED_DOT4_SEC, LED_DOT4_HDMI, LED_DOT4_AV, LED_DOT4_MAX }; enum { LED_DOT5_APPS, LED_DOT5_ETH, LED_DOT5_USB, LED_DOT5_CARD, LED_DOT5_SEC, LED_DOT5_WIFIHI, LED_DOT5_WIFILO, LED_DOT5_MAX }; -
Kernel 6.12 does not have hdmi patches. You have to go back to 6.6 or 6.7. I would use the dts I posted above. This dts has the proper settings for your pmic axp305/806. Changing axp313a to axp806 without changing the rest of the settings can be dangerous. There are no dram settings in the dts. Everything ram related is done in the uboot defconfig. So use this defconfig from the patches posted above and add your lpddr3 settings. Change everything with CONFIG_SUNXI_DRAM_* the rest can stay the same. (remove the plus infront of each CONFIG. This was taken from a patch) +CONFIG_ARM=y +CONFIG_ARCH_SUNXI=y +CONFIG_DEFAULT_DEVICE_TREE="allwinner/sun50i-h313-x96q-ddr3" +CONFIG_SPL=y +CONFIG_SUNXI_DRAM_H616_DDR3_1333=y +CONFIG_DRAM_CLK=600 +CONFIG_DRAM_ODT_EN=y +CONFIG_DRAM_SUN50I_H616_UNKNOWN_FEATURE=y +CONFIG_DRAM_SUN50I_H616_BIT_DELAY_COMPENSATION=y +CONFIG_DRAM_SUN50I_H616_READ_CALIBRATION=y +CONFIG_DRAM_SUN50I_H616_DX_ODT=0x03030303 +CONFIG_DRAM_SUN50I_H616_DX_DRI=0x0e0e0e0e +CONFIG_DRAM_SUN50I_H616_CA_DRI=0x00001c16 +CONFIG_DRAM_SUN50I_H616_ODT_EN=0x1 +CONFIG_DRAM_SUN50I_H616_TPR0=0xc0000007 +CONFIG_DRAM_SUN50I_H616_TPR2=0x00000100 +CONFIG_DRAM_SUN50I_H616_TPR10=0x002f6606 +CONFIG_DRAM_SUN50I_H616_TPR11=0xffffdddd +CONFIG_DRAM_SUN50I_H616_TPR12=0xfedf7657 +CONFIG_MACH_SUN50I_H616=y +CONFIG_R_I2C_ENABLE=y +CONFIG_SPL_I2C=y +CONFIG_SPL_I2C_SUPPORT=y +CONFIG_SPL_SYS_I2C_LEGACY=y +CONFIG_SYS_I2C_MVTWSI=y +CONFIG_SYS_I2C_SLAVE=0x7f +CONFIG_SYS_I2C_SPEED=100000 +CONFIG_PHY_REALTEK=y +CONFIG_SUN8I_EMAC=y +CONFIG_I2C3_ENABLE=y +CONFIG_SUNXI_RVBAR_ALTERNATIVE=0x81000040 +CONFIG_USB_EHCI_HCD=y +CONFIG_USB_OHCI_HCD=y +CONFIG_USB_MUSB_GADGET=y +CONFIG_SUPPORT_EMMC_BOOT=y +CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR=0x40 +CONFIG_MMC_SUNXI_SLOT_EXTRA=2
-
TX95 Max - Allwinner H618 Quadcore Cortex - A53
Nick A replied to Mark Waples's topic in Allwinner CPU Boxes
Can you look for the display controller chip on your board. This will at least give us a starting point. Then we can find other boards with a similar chip. Also, a picture of your front display would help. This README describes the values better. https://github.com/arthur-liberman/vfd-configurations/blob/master/README.md I forgot about the command armbian-add-overlay. When I was playing with openvfd I didn't use an overlay file. I added the openvfd node directly to my boards dts. I didn't need to make any changes because I used the original openvfd settings. -
This already has AXP806. You just need to modify the deconfig with the settings that worked for you. u-boot: https://github.com/warpme/minimyth2/blob/master/script/bootloaders/u-boot-h616/files/151-add-x96-q-ddr3-defconfig.patch kernel: https://github.com/warpme/minimyth2/blob/master/script/kernel/linux-6.12/files/0647-arm64-dts-allwinner-h313-add-x96q-TVbox.patch Also, edit /boot/armbianEnv.txt and set verbosity to 7 to get full boot logs. Your directory layout might be different. You can browse the folders. Find the correct path. sudo adb shell su cd /dev/block/
-
TX95 Max - Allwinner H618 Quadcore Cortex - A53
Nick A replied to Mark Waples's topic in Allwinner CPU Boxes
Hi Mark Modify your /boot/dtb/allwinner/overlay/openvfd.dts . You need to change the display-type. I can't really tell by the image you took which chip the display is using. If you can check again. It's the chip beside the LED display. https://github.com/arthur-liberman/vfd-configurations/?tab=readme-ov-file#display-type Try this see what happens... ( ID=01, A display like on the Sunvell T95m. It is similar to T95U, but the icons are positioned differently, and the digits are "upside down".) openvfd_display_type = <0x01000000>; -
TX95 Max - Allwinner H618 Quadcore Cortex - A53
Nick A replied to Mark Waples's topic in Allwinner CPU Boxes
Good question. I'm not sure. First you need to enable Developer options. Then enable Wireless debugging on your device. https://www.androidpolice.com/use-wireless-adb-android-phone/ https://developer.android.com/tools/adb#Enabling If you are using linux you don't need Android SDK platform-tools to access adb software. sudo apt install adb sudo adb connect 192.168.X.X:5555 (x is your local network address for your android box) sudo adb shell ls -al /dev/block/ -
TX95 Max - Allwinner H618 Quadcore Cortex - A53
Nick A replied to Mark Waples's topic in Allwinner CPU Boxes
[ 14.228753] OpenVFD: Failed to verify VFD configuration file, attempt using device tree as fallback. Your openvfd is using the device tree as the configuration file since it cannot find the configuration file vfd.conf. You can edit your device tree overlay or you would need to create a /storage/.config/ directory and put your vfd.conf inside. You’ll need root permission to create the directories and file. Here you can find example vfd.conf files. https://github.com/arthur-liberman/vfd-configurations/ You can also try running this command for help. OpenVFDService --help Then there's also the openvfd.service. This runs OpenVFDService everytime your linux server boots. openvfd.service Other ways of controlling the LED's. You can put these commands in openvfd.service if needed. https://github.com/arthur-liberman/linux_openvfd/blob/9264588ba27a964a1e56346202901dd17f9e133d/led_control.txt Have you tried extracting your dts? you might find your android original openvfd device tree settings there. -
TX95 Max - Allwinner H618 Quadcore Cortex - A53
Nick A replied to Mark Waples's topic in Allwinner CPU Boxes
openvfd,display-type usually is 00 (normal) or 01 if your display translate by 180 degrees (ie: characters are flipped down and specular) Maybe you can find more info here.. https://discourse.coreelec.org/t/how-to-configure-vfd/427/702?page=34 -
I just updated the repository. Wifi now works.
-
TX95 Max - Allwinner H618 Quadcore Cortex - A53
Nick A replied to Mark Waples's topic in Allwinner CPU Boxes
https://forum.armbian.com/topic/29794-how-to-install-armbian-in-h618/#findComment-207680 Using MMorales openvfd scripts I don't remember needing vdf.conf. In openvfd.service you can remove "#" infront of ExecStart=/bin/sh -c '[ `cat /proc/device-tree/openvfd/compatible` = "open,vfd" ] && /sbin/modprobe openvfd; python3 /linux_openvfd/scroll.py' then edit the scroll.py script with your custom settings. Remember to add '#' in the second ExecStart. [Unit] Description=OpenVFD Service ConditionPathExists=/proc/device-tree/openvfd/ [Service] #ExecStart=/bin/sh -c '[ `cat /proc/device-tree/openvfd/compatible` = "open,vfd" ] && /sbin/modprobe openvfd; python3 /linux_openvfd/scroll.py' ExecStart=/bin/sh -c '[ `cat /proc/device-tree/openvfd/compatible` = "open,vfd" ] && /sbin/modprobe openvfd; /usr/sbin/OpenVFDService' ExecStop=/bin/kill -TERM $MAINPID ExecStopPost=-/usr/sbin/rmmod openvfd RemainAfterExit=yes [Install] WantedBy=basic.target -
My build uses warpme-6.12 patches so people with other boards can make a board config to compile their own images. https://github.com/NickAlilovic/build/blob/warpme-6.12/config/boards/radxa-cubie-a5e.csc https://github.com/NickAlilovic/build/tree/warpme-6.12/patch/kernel/archive/warpme-6.12 1170-arm64-dts-allwinner-h728-add-x96q-pro-tvbox-plus.patch 1172-arm64-dts-allwinner-t527-add-orangepi-4a-dts.patch 1173-arm64-dts-allwinner-a527-add-Radxa-A5E-support.patch Orangepi 4a uses the same radxa-a5e_defconfig. https://github.com/warpme/minimyth2/blob/master/script/bootloaders/board-t527.orangepi_4a/Makefile x96q_pro_plus_defconfig https://github.com/warpme/minimyth2/blob/master/script/bootloaders/board-h728.x96q_pro_plus/Makefile