Jump to content

Dave

Members
  • Posts

    6
  • Joined

  • Last visited

  1. Probably the core reason is following Kernel options defining firmware files compression: CONFIG_FW_LOADER_COMPRESS_ZSTD CONFIG_FW_LOADER_COMPRESS Check https://github.com/armbian/build/blob/main/config/kernel/linux-bcm2711-current.config https://github.com/armbian/build/blob/main/config/kernel/linux-bcm2711-edge.config So there have to be one of the following cases: case 1 (compressed): kernel firmware compression options set CONFIG_FW_LOADER_COMPRESS_ZSTD CONFIG_FW_LOADER_COMPRESS firmware files are compressed (*.zst) case 2 (not compressed): kernel firmware compression options CONFIG_FW_LOADER_COMPRESS_ZSTD CONFIG_FW_LOADER_COMPRESS not set firmware files are not compressed (no *.zst files) By the way "bad" *.zst firmware files come from the linux-firmware-raspi ubuntu package: https://launchpad.net/ubuntu/+source/linux-firmware-raspi https://launchpad.net/ubuntu/+archive/primary/+sourcefiles/linux-firmware-raspi/12-0ubuntu1/linux-firmware-raspi_12.orig-nonfree.tar.gz Check https://github.com/armbian/build/blob/main/config/sources/families/bcm2711.conf pre_install_distribution_specific__add_rpi_packages() function
  2. For Armbian-24.11.0 RPi ubuntu noble based builds wlan interface is missing Issue is present in Rpi3 B plus, RPi4 for current (kernel 6.6.x) and edge (kernel 6.10.x) armbian builds OS info ================ pi@rpi4b:~$ cat /etc/os-release PRETTY_NAME="Armbian-unofficial 24.11.0-trunk noble" NAME="Ubuntu" VERSION_ID="24.04" VERSION="24.04 LTS (Noble Numbat)" VERSION_CODENAME=noble ID=ubuntu ID_LIKE=debian HOME_URL="https://duckduckgo.com/" SUPPORT_URL="https://community.armbian.com/" BUG_REPORT_URL="https://armbian.atlassian.net/" PRIVACY_POLICY_URL="https://duckduckgo.com/" UBUNTU_CODENAME=noble LOGO="armbian-logo" ARMBIAN_PRETTY_NAME="Armbian-unofficial 24.11.0-trunk noble" pi@rpi4b:~$ uname -a Linux rpi4b 6.10.10-edge-bcm2711 #1 SMP PREEMPT Fri Sep 13 15:35:16 UTC 2024 aarch64 aarch64 aarch64 GNU/Linux ================ wlan interface is missing (at all): =============== pi@rpi4b:~$ ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host noprefixroute valid_lft forever preferred_lft forever 2: end0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000 link/ether d8:3a:dd:8e:79:9a brd ff:ff:ff:ff:ff:ff inet 192.168.1.139/24 metric 100 brd 192.168.1.255 scope global dynamic end0 valid_lft 25034sec preferred_lft 25034sec inet6 fe80::da3a:ddff:fe8e:799a/64 scope link valid_lft forever preferred_lft forever =============== The reason is incorrect firmware files format inside /lib/firmware. Firmware files are zstd packed (has *.zst extensons). Broadcom driver is unable to load such files =================== pi@rpi4b:~$ dmesg|grep -i brcmfmac [ 4.387851] brcmfmac: F1 signature read @0x18000000=0x15264345 [ 4.395645] brcmfmac: brcmf_fw_alloc_request: using brcm/brcmfmac43455-sdio for chip BCM4345/6 [ 4.403229] brcmfmac mmc1:0001:1: Direct firmware load for brcm/brcmfmac43455-sdio.raspberrypi,4-model-b.bin failed with error -2 [ 4.403347] brcmfmac mmc1:0001:1: Direct firmware load for brcm/brcmfmac43455-sdio.bin failed with error -2 [ 5.407124] brcmfmac: brcmf_sdio_htclk: HT Avail timeout (1000000): clkctl 0x50 =================== Files from /lib/firmware: ============================ ls -l /lib/firmware/brcm | egrep "raspberrypi,4-model-b" lrwxrwxrwx 1 root root 17 Sep 21 22:27 BCM4345C0.raspberrypi,4-model-b.hcd.zst -> BCM4345C0.hcd.zst lrwxrwxrwx 1 root root 35 Sep 21 22:27 brcmfmac43455-sdio.raspberrypi,4-model-b.bin.zst -> ../cypress/cyfmac43455-sdio.bin.zst lrwxrwxrwx 1 root root 40 Sep 21 22:27 brcmfmac43455-sdio.raspberrypi,4-model-b.clm_blob.zst -> ../cypress/cyfmac43455-sdio.clm_blob.zst lrwxrwxrwx 1 root root 26 Sep 21 22:27 brcmfmac43455-sdio.raspberrypi,4-model-b.txt.zst -> brcmfmac43455-sdio.txt.zst ls -l /lib/firmware/cypress | egrep "cyfmac43455*" lrwxrwxrwx 1 root root 38 Sep 21 22:27 cyfmac43455-sdio.bin.zst -> /etc/alternatives/cyfmac43455-sdio.bin -rw-r--r-- 1 root root 1261 Apr 11 00:46 cyfmac43455-sdio.clm_blob.zst -rw-r--r-- 1 root root 384405 Apr 11 00:46 cyfmac43455-sdio-minimal.bin.zst -rw-r--r-- 1 root root 453440 Apr 11 00:46 cyfmac43455-sdio-standard.bin.zst ls -l /etc/alternatives/cyfmac43455-sdio.bin lrwxrwxrwx 1 root root 55 Apr 11 00:46 /etc/alternatives/cyfmac43455-sdio.bin -> /lib/firmware/cypress/cyfmac43455-sdio-standard.bin.zst ============================ To fix this issue following steps have to be done: 1) install zstd package 2) unpack *.zst files inside /lib/firmware using unzstd 3) recreate all symlinks inside /lib/firmware from symlink_src(*.zst) => to symlink_dst(*.zst) to (no *.zst) 4) recreate /etc/alternatives/cyfmac43455-sdio.bin symlink /etc/alternatives/cyfmac43455-sdio.bin -> -> /lib/firmware/cypress/cyfmac43455-sdio-standard.bin.zst to /etc/alternatives/cyfmac43455-sdio.bin -> -> /lib/firmware/cypress/cyfmac43455-sdio-standard.bin The recipe is proven to be working - wlan interface is back. Tested for Rpi3 B plus, RPi4 current (kernel 6.6.x) and edge (kernel 6.10.x) armbian builds
  3. Hello to everyone Trying to use armbian on RockPi 4C plus. Got kernel OOPS. Kernel crushes in different moments: mostly during systemd units starting or just after boot finished. Backtraces are different (no common). Faulty images: 1) From the https://www.armbian.com/rockpi4/ For Model C+ here: https://redirect.armbian.com/rockpi-4cplus https://mirrors.dotsrc.org/armbian-dl/rockpi-4cplus/archive/ Armbian_22.11.1_Rockpi-4cplus_bullseye_current_5.15.80_minimal.img 2) Built by myself Armbian_22.11.2_Rockpi-4cplus_bullseye_current_5.15.84_minimal.img Armbian_23.02.0-trunk_Rockpi-4cplus_bullseye_edge_6.1.8_minimal.img Armbian_23.02.0-trunk_Rockpi-4cplus_bullseye_edge_6.1.9_minimal.img Armbian_23.02.0-trunk_Rockpi-4cplus_bullseye_edge_6.1.10_minimal.img My image build script for the edge (6.1.x): #!/bin/bash BOARD_NAME_PARAM="rockpi-4cplus" LINUX_DISTRO_PARAM="bullseye" LOG_FILE="_armbian_build_${BOARD_NAME_PARAM}.log" BRANCH_VALUE="edge" log() { local currtime=`date +"%Y/%m/%d %H:%M:%S"` echo "$currtime: $*" echo "$currtime: $*" >> $LOG_FILE } log "$0 begin" ARMBIAN_BUILD_OPTIONS="\ BOARD=$BOARD_NAME_PARAM \ BRANCH=$BRANCH_VALUE \ FULL_DESKTOP=no \ BUILD_DESKTOP=no \ BUILD_MINIMAL=yes \ INSTALL_HEADERS=no \ KERNEL_ONLY=no \ KERNEL_CONFIGURE=no \ RELEASE=$LINUX_DISTRO_PARAM \ COMPRESS_OUTPUTIMAGE=\"sha,img,xz\" \ " log "ARMBIAN_BUILD_OPTIONS=$ARMBIAN_BUILD_OPTIONS" log log "====================================" log "Armbian build - starting ..." log "====================================" sudo ./compile.sh $ARMBIAN_BUILD_OPTIONS armbian_compile_result=$? if [ $armbian_compile_result -eq 0 ]; then log "====================================" log "Armbian build finished: SUCCESS" log "====================================" else log "====================================" log "Armbian build failed: ERROR" log "====================================" fi log "$0 end" exit 0 All the faulty images have common thing in /boot/armbianEnv.txt fdtfile=rockchip/rk3399-rock-pi-4c-plus.dtb As I found out there are 2 dtbs referring to rockpi 4cplus: /boot/dtb-6.1.10-rockchip64/rockchip/rk3399-rock-4c-plus.dtb /boot/dtb-6.1.10-rockchip64/rockchip/rk3399-rock-pi-4c-plus.dtb Vanilla kernel https://github.com/torvalds/linux/tree/master/arch/arm64/boot/dts/rockchip has rk3399-rock-4c-plus dts https://github.com/torvalds/linux/blob/master/arch/arm64/boot/dts/rockchip/rk3399-rock-pi-4c.dts and does not have rk3399-rock-pi-4c-plus I've changed /boot/armbianEnv.txt in the following way fdtfile=rockchip/rk3399-rock-4c-plus.dtb WIth rk3399-rock-4c-plus.dtb my RockPi 4C plus board boots fine and does not hang. I believe there is a mistake in dtb files. Why there are 2 dtbs /boot/dtb/rockchip/rk3399-rock-4c-plus.dtb /boot/dtb/rockchip/rk3399-rock-pi-4c-plus.dtb ?
×
×
  • Create New...

Important Information

Terms of Use - Privacy Policy - Guidelines