-
Building for a custom board (Based on existing) - No boot.
I am coming from a yocto build for a dev board. I had to make u-boot patches, kernel config changes, and custom DTS tree. I'm trying to adapt this to Armbian, one step at a time. I started with building am image for sk-am62b.conf. I did not expect u-boot to boot from correctly. I was glad to see console messages, but expectedly, u-boot didn't continue. I made a new board config for this, duplicating sk-am62b.conf, but changing a critical line I made to get this to work previously. TIBOOT3_FILE="tiboot3-am62x-gp-evm.bin" Now, the boot process gets through u-boot and loads the Linux kernel. However, the kernel halts because it cannot find the root file system. Waiting for root device PARTUUID=26aa2b10-02... I confirmed the device in u-boot, and it seems to agree. Environment size: 5112/126972 bytes => echo load mmc ${bootpart} ${fdtaddr} ${bootdir}/dtb/${fdtfile} load mmc 1:2 0x88000000 /boot/dtb/ti/k3-am625-sk.dtb => run finduuid => echo part uuid ${boot} ${bootpart} uuid part uuid mmc 1:2 uuid => part uuid mmc 1:2 26aa2b10-02 I then modified my board config: BOOT_FDT_FILE="myir-6254-am62x/myir-6254-am62x.dts" But after booting, u-boot didn't acknowledge this: (From the u-boot environment) fdtfile=ti/k3-am625-sk.dtb So, I finished applying my u-boot patches that I made under the Yocto build. Some of these changes may be redundant: edited: am62x_evm_a53_defconfig + CONFIG_DEFAULT_FDT_FILE="myir-6254-am62x.dts" +CONFIG_TI_FDT_FOLDER_PATH="myir-6254-am62x" After booting into u-boot, now I see the change made: fdtfile=myir-6254-am62x.dts Then I see this: Running uenvcmd ... 14857759 bytes read in 983 ms (14.4 MiB/s) 36805120 bytes read in 1549 ms (22.7 MiB/s) Failed to load '/dtb/myir-6254-am62x.dts' libfdt fdt_check_header(): FDT_ERR_BADMAGIC No FDT memory address configured. Please configure the FDT address via "fdt addr <address>" command. Aborting! ERROR: Did not find a cmdline Flattened Device Tree Could not find a valid device tree Scanning for bootflows in all bootdevs This is not unexpected either - since the files are not the image yet. When u-boot can't find the device tree, it loads a grub interface. And when I 'e'dit that I see the line linux /Image root=PARTUUID=076c4a2a-02 rootwait rootfstype=ext4 and change it to: linux /Image root=/dev/mmcblk1p2 rootwait rootfstype=ext4 The kernel sees the rootfs, and proceeds to boot. If I change it to using the PARTUUID, as above, it also boots. If I manually place the DTB file where u-boot reported it is is looking (copied from my running yocto system) (in /dtb/) The kernel boots, without the grub interface. However, the same situation occurs, where it is waiting for the root device. Waiting for root device PARTUUID=26aa2b10-02... I have a few things going on here. I think in order to boot to an OS I need: 1) Solve why the kernel does not see the root partition when booting from u-boot (but does when I can get into the grub interface) 2) How to properly implement a custom device tree structure. I know there are overlays, but I'd prefer to just drop in my whole custom tree. Once I get there, I can proceed to implement some of the kernel modification I did within the yocto build environment, but this first. Thanks for the assistance.
- Not getting any wireless
-
Not getting any wireless
5) Control a flight vehicle with real time input and outputs. [jgauthier@gamma build]$ diff -u config/kernel/linux-sunxi64-edge.config userpatches/linux-sunxi64-edge.config [jgauthier@gamma build]$ I'm not sure why it's expected that those would be different. I made the configuration with 'make menuconfig' and then copied to to userpatches. I did this because, at the time, I thought it was being overwritten. It was, but that was due to armbian-kernel.sh.
-
Not getting any wireless
@going I can, yes. But at the moment I don't want to distract from the wifi issue I am trying to solve. I am building a test application that must perform real time operations. I have previously done this with other ARM boards/distributions, but for this small project I am trying to go with "simplicity" (nothing is ever simple) I can provide the 'duff -u' for your interest, but I don't know what you want me to compare it against. i have linux-sunxi64-edge.config in my userpatches/ folder. It's generated from make menuconfig, and then I removed 'CGROUP_SCHED' from armbian-kernel.sh. Real-time applications work fine now. (They do not with group scheduling) root:~/# ./cyclictest --mlockall --smp --priority=80 --interval=200 --distance=0 # /dev/cpu_dma_latency set to 0us policy: fifo: loadavg: 0.30 0.37 0.17 2/200 1471 T: 0 ( 1468) P:80 I:200 C: 379209 Min: 7 Act: 18 Avg: 10 Max: 83 T: 1 ( 1469) P:80 I:200 C: 379008 Min: 6 Act: 19 Avg: 10 Max: 68 T: 2 ( 1470) P:80 I:200 C: 378802 Min: 7 Act: 19 Avg: 10 Max: 79 T: 3 ( 1471) P:80 I:200 C: 378595 Min: 7 Act: 20 Avg: 10 Max: 75
-
Not getting any wireless
Thank you for your response. I pulled down one of the "Standard Support" images. I enabled the overlay, and brought the interface up, but scanning does not return anything: root@bananapim4zero:~# iw dev wlan0 scan root@bananapim4zero:~# I wanted a 6.12 kernel that had real time extensions built in. I didn't realize 'current' would handle that. I will end up replacing this with a current kernel. I can't remember how anything < 6.12 handles real time patches. Maybe Armbian does it automatically as part of its patch set.
-
Not getting any wireless
Greetings, I've built a custom image for the BPI M4 Zero and have been using a wired USB cable for my config and development work, It's final destination will require wireless. So I started to configure that today and discovered that it does not find any wireless access points. The device exists. 3: wlan0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN group default qlen 1000 link/ether ac:6a:a3:3f:9c:65 brd ff:ff:ff:ff:ff:ff There is an overlay loaded (I did not add it, it was part of the image build) overlays=bananapi-m4-sdio-wifi-bt usbhost bananapi-m4-pi-5-6-i2c0 bananapi-m4-pi-7-8-i2c1 I do not see any errors from dmesg, but only these: [ 8.484857] brcmfmac: brcmf_fw_alloc_request: using brcm/brcmfmac43455-sdio for chip BCM4345/6 [ 8.851537] brcmfmac: brcmf_c_process_txcap_blob: no txcap_blob available (err=-2) [ 8.852261] brcmfmac: brcmf_c_preinit_dcmds: Firmware: BCM4345/6 wl0: Aug 29 2023 01:47:08 version 7.45.265 (28bca26 CY) FWID 01-b677b91b I am not sure where to begin diagnosing this. I almost never use wireless on Linux so I could be overlooking something basic. # iwlist wlan0 scanning wlan0 No scan results # uname -a Linux bananapim4zero 6.13.11-edge-sunxi64 #5 SMP PREEMPT_RT Thu Apr 10 12:42:07 UTC 2025 aarch64 GNU/Linux
-
A couple of basic questions on image customization
I did see that script. I disabled CGROUP_SCHED by commenting it out. I don't think that is the "right way", but it worked for now.
-
A couple of basic questions on image customization
Understood. Thank you. When I follow that procedure, config settings are set to "Y" after I've explicitly set them to "N". After doing a kernel-config [🐳|🌱] Exporting new kernel defconfig [ /armbian/output/config/linux-sunxi64-edge.config ] [🐳|🔨] 'defconfig' -> '/armbian/output/config/linux-sunxi64-edge.config' [🐳|🌱] Exporting new kernel config - git commit pending [ /armbian/userpatches/linux-sunxi64-edge.config ] [🐳|🔨] 'defconfig' -> '/armbian/userpatches/linux-sunxi64-edge.config' $ cat output/config/linux-sunxi64-edge.config | grep CGROUP [no output] $ diff output/config/linux-sunxi64-edge.config userpatches/linux-sunxi64-edge.config [no output] Then I build the kernel, install it, and on the board: zcat /proc/config.gz |grep CGROUP_SC CONFIG_CGROUP_SCHED=y After reviewing the kernel build output: less -RS output/logs/log-kernel-7c3cd346-d31c-4166-9dc2-4f5c9c641554.log.ans --> (13) COMMAND: ./scripts/config --enable CGROUP_BPF --> (13) COMMAND: ./scripts/config --enable CGROUP_CPUACCT --> (13) COMMAND: ./scripts/config --enable CGROUP_DEVICE --> (13) COMMAND: ./scripts/config --enable CGROUP_FREEZER --> (14) COMMAND: ./scripts/config --enable CGROUP_HUGETLB --> (14) COMMAND: ./scripts/config --enable CGROUP_NET_CLASSID --> (14) COMMAND: ./scripts/config --enable CGROUP_NET_PRIO --> (14) COMMAND: ./scripts/config --enable CGROUP_PERF --> (14) COMMAND: ./scripts/config --enable CGROUP_PIDS --> (14) COMMAND: ./scripts/config --enable CGROUP_SCHED --> (14) COMMAND: ./scripts/config --enable CGROUPS Something has enabled everything I said I wanted disabled. When configuring the kernel subsequent times, these items are enabled again as well.
-
A couple of basic questions on image customization
1) What is the correct way to make kernel configuration changes? I have attempted to: ./compile.sh BOARD=bananapim4zero BRANCH=edge kernel-config saved config,. and then ./compile.sh BOARD=bananapim4zero BRANCH=edge kernel However,after installing the kernel I found the config changes were not applied. I then reran: ./compile.sh BOARD=bananapim4zero BRANCH=edge kernel-config and I see that the config changes I made have been reverted. 2) How to clean the kernel and force a rebuild? I tried ./compile.sh BOARD=bananapim4zero BRANCH=edge CLEAN_LEVEL="make-kernel" kernel But the kernel was not cleaned, nor rebuilt. Thank you!
- Real time scheduling
-
Real time scheduling
I think my issue is actually that CONFIG_RT_GROUP_SCHED is enabled. I was certain I had disabled it. After some sluething.. It turns out I don't know how to configure/build a kernel. I run ./compile.sh BOARD=bananapim4zero BRANCH=edge kernel-config I then make some changes and tell it to save: For instance when I enter menuconfig, I see this. I then REMOVE the check. I say YES OOPS. I realized I wanted to make another change. And now it's back. After unchecking this, and building the kernel, moving the kernel, installing, and rebooting I see the config hasn't change on board. So, I must have a misunderstanding of how this is supposed to work. I checked here: https://docs.armbian.com/Developer-Guide_Build-Commands/ Which says "Add or Remove" modules, but doesn't elaborate if it's copying some defaults or where they might be coming from.
-
Real time scheduling
I'm hesitant to post this here, because I am not really sure that this is an armbian issue to begin with. But I'm somewhat stumped. During the build process I configured the kernel to enable real time threads. CONFIG_NO_HZ_COMMON=y CONFIG_HZ_1000=y CONFIG_HZ=1000 CONFIG_PREEMPT_RT=y However, as I started to migrate my development I discovered I couldn't create a real time thread. So I pulled down areal time test suite (https://wiki.linuxfoundation.org/realtime/documentation/howto/tools/rt-tests) And confirmed it has the same issue: Unable to change scheduling policy! either run as root or join realtime group I am root, it is a real time kernel. Linux bananapim4zero 6.13.7-edge-sunxi64 #1 SMP PREEMPT_RT Thu Mar 13 12:08:08 UTC 2025 aarch64 GNU/Linux I am not sure what might be driving this. For the past several months I've been doing some dev work on a TI AM625 based board that I built a yocto distribution on and it's fine. I know that is a completely different board, but my kernel setting for real time enablement are the same. I pulled them from that build since. Appreciate any input!
jgauthier
Members
-
Joined
-
Last visited