y52
Members
-
Joined
-
Last visited
Reputation Activity
-
y52 got a reaction from Igor in ESPRESSObin Firmware/BootloaderHello to regular contributors and everybody who are interested in this issue!
I am late to the thread, as I had to decommission my production setup based on Espressobin V5 before trying everything out. Finally I've completed Physical-to-Virtual migration using QEMU and made board available for this new experience.
@bschnei made a great job and his developments are community available. It was also worth for me making my findings accessible for general public thus improving Espressobin support.
I forked @bschnei repo
https://github.com/bschnei/ebu-bootloader
to my Github
https://github.com/quiseleve/espressobin-bootloader
and made several changes to build bootloaders for Espressobin V5 and V7.
Here are the final changes brought to @bschnei repo :
root@nanopi-r5s:/mnt/nvmep2/espressobin/ebu-bootloader# git remote add upstream https://github.com/bschnei/ebu-bootloader.git
root@nanopi-r5s:/mnt/nvmep2/espressobin/ebu-bootloader# git fetch upstream
From https://github.com/bschnei/ebu-bootloader
* [new branch] main -> upstream/main
root@nanopi-r5s:/mnt/nvmep2/espressobin/ebu-bootloader# git diff --stat upstream/main...main
.github/workflows/build.yml | 92 ++++++++++++++++++++++++++++++++++++++++++---------------------------------
Makefile | 2 ++
patches/0001-fix-tfa-fip-build-behavior.patch | 36 +++++++++++++++++++++++++++++
3 files changed, 90 insertions(+), 40 deletions(-)
This allowed building bootload firmware directly in Github's Workflow and trying them out over UART 1st before flashing it to onboard SPi.
./mox-imager -D /dev/ttyUSB0 -b 3000000 -E flash-image-v5_2GB.CPU_1000_DDR_800.bin
Although Workflow run builds both v5 and v7 variants, I tested 2Gb RAM v5 board, as my 1Gb v7 is currently in production, but there is a high confidence level, that v7 works as well.
DDR_TOPOLOGY variable used for my specific v5 motherboard :
Memory Type: DDR3
Total Capacity: 2 GB
Bus Width: 16-bit
Chip Selects (CS): 2 (Dual CS)
It is worth saying that I built initially the 1.2GHz bootloader, but it appeared worthless, as my physical silicon turned out to be limited to 1GHz only. I found it by retrieving a 32-bit hex string for v5 board :
=> md 0xd0012604 1
d0012604: 19896301 .c..
=>
This hex string gives us the definitive answers we need.
In the Marvell Armada 3720 architecture, this specific register reads from the factory OTP (One-Time Programmable) fuses. The lower bits define the chip's official Speed Bin Index:
0 = 800 MHz Maximum
1 = 1000 MHz (1.0 GHz) Maximum
2 = 1200 MHz (1.2 GHz) Maximum
Because my board register ends in 01, my specific SoC is officially rated by the factory for a maximum clock speed of 1000 MHz (1.0 GHz).
This completely explains why the WTMI secure firmware threw the invalid voltage error when I forced a 1.2 GHz build. The chip physically lacks the factory-fused voltage calibration profile for the 1.2 GHz tier because it wasn't born as a 1.2 GHz chip.
Thus I decided changing the Build Target to 1.0 GHz.
More discussions could be found here as well :
I've also built Armbian-unofficial 26.5.2 sid image to assess overall compatibility.
Here is an excerpt from initial boot logs directly from the bootloader initiation :
TIM-1.0
mv_ddr-devel-g7bcb9dc DDR3 16b 2GB 2CS
WTMI-devel-18.12.1-f423ac6
WTMI: system early-init
SVC REV: 3, CPU VDD voltage: 1.155V
Setting clocks: CPU 1000 MHz, DDR 800 MHz
CZ.NIC's Armada 3720 Secure Firmware v2024.04.15 (Jul 9 2026 20:33:31)
Running on ESPRESSObin
NOTICE: Booting Trusted Firmware
NOTICE: BL1: v2.14.0(release):sandbox/v2.14
NOTICE: BL1: Built : 20:33:33, Jul 9 2026
NOTICE: BL1: Booting BL2
NOTICE: BL2: v2.14.0(release):sandbox/v2.14
NOTICE: BL2: Built : 20:33:35, Jul 9 2026
NOTICE: BL1: Booting BL31
NOTICE: BL31: v2.14.0(release):sandbox/v2.14
NOTICE: BL31: Built : 20:33:36, Jul 9 2026
U-Boot 2026.04-dirty (Jul 09 2026 - 20:32:03 +0000)
DRAM: 2 GiB
Core: 48 devices, 24 uclasses, devicetree: separate
WDT: Not starting watchdog@8300
Comphy chip #0:
Comphy-0: USB3_HOST0 5 Gbps
Comphy-1: PEX0 5 Gbps
Comphy-2: SATA0 6 Gbps
SATA link 0 timeout.
AHCI 0001.0300 32 slots 1 ports 6 Gbps 0x1 impl SATA mode
flags: ncq led only pmp fbss pio slum part sxs
PCIe: Link down
MMC: sdhci@d0000: 0, sdhci@d8000: 1
Loading Environment from SPIFlash... SF: Detected w25q32dw with page size 256 Bytes, erase size 4 KiB, total 4 MiB
OK
Model: Globalscale Marvell ESPRESSOBin Board
Net: eth0: ethernet@30000
Hit any key to stop autoboot: 0
MMC Device 1 not found
no mmc device at slot 1
switch to partitions #0, OK
mmc0 is current device
Scanning mmc 0:1...
Found U-Boot script /boot/boot.scr
1664 bytes read in 25 ms (64.5 KiB/s)
## Executing script at 06d00000
144 bytes read in 19 ms (6.8 KiB/s)
28134196 bytes read in 1702 ms (15.8 MiB/s)
Wrong Image Type for bootm command
ERROR -91: can't get kernel image!
37059072 bytes read in 2231 ms (15.8 MiB/s)
18537158 bytes read in 1121 ms (15.8 MiB/s)
12062 bytes read in 35 ms (335.9 KiB/s)
## Loading init Ramdisk from Legacy Image at 0a000000 ...
Image Name: uInitrd
Image Type: AArch64 Linux RAMDisk Image (gzip compressed)
Data Size: 18537094 Bytes = 17.7 MiB
Load Address: 00000000
Entry Point: 00000000
Verifying Checksum ... OK
## Flattened Device Tree blob at 06f00000
Booting using the fdt blob at 0x6f00000
Working FDT set to 6f00000
Loading Ramdisk to 7d940000, end 7eaeda86 ... OK
Loading Device Tree to 000000007d93a000, end 000000007d93ff1d ... OK
Working FDT set to 7d93a000
Starting kernel ...
Loading, please wait...
Starting systemd-udevd version 261.1-2
Begin: Loading essential drivers ... done.
Begin: Running /scripts/init-premount ... done.
Begin: Mounting root file system ... Begin: Running /scripts/local-top ... done.
Begin: Running /scripts/local-premount ... Scanning for Btrfs filesystems
done.
Begin: Will now check root file system ... fsck from util-linux 2.42.2
[/sbin/fsck.ext4 (1) -- /dev/mmcblk0p1] fsck.ext4 -a -C0 /dev/mmcblk0p1
armbi_root: clean, 28918/949664 files, 425190/3849216 blocks
done.
done.
Begin: Running /scripts/local-bottom ... done.
Begin: Running /scripts/init-bottom ... done.
Welcome to Armbian-unofficial 26.5.2 sid!
[ OK ] Created slice system-getty.slice - Slice /system/getty.
[ OK ] Created slice system-modprobe.slice - Slice /system/modprobe.
[ OK ] Created slice system-serial\x2dgetty.slice - Slice /system/serial-getty.
[ OK ] Created slice user.slice - User and Session Slice.
[ OK ] Started systemd-ask-password-console.path - Dispatch Password Requests to Console Directory Watch.
[ OK ] Started systemd-ask-password-wall.path - Forward Password Requests to Wall Directory Watch.
[ OK ] Set up automount proc-sys-fs-binfmt_misc.automount - Arbitrary Executable File Formats File System Automount Point.
Expecting device dev-ttyMV0.device - /dev/ttyMV0...
[ OK ] Reached target imports.target - Image Downloads.
[ OK ] Reached target remote-fs.target - Remote File Systems.
[ OK ] Reached target slices.target - Slice Units.
[ OK ] Reached target swap.target - Swaps.
[ OK ] Listening on syslog.socket - Syslog Socket.
[ OK ] Listening on systemd-ask-password.socket - Query the User Interactively for a Password.
[ OK ] Listening on systemd-creds.socket - Credential Encryption/Decryption.
[ OK ] Listening on systemd-factory-reset.socket - Factory Reset Management.
[ OK ] Listening on systemd-hostnamed.socket - Hostname Service Socket.
-- Boot 3e598d120dc346829e12f836344429a1 --
Jul 11 00:11:05 espressobin kernel: Booting Linux on physical CPU 0x0000000000 [0x410fd034]
Jul 11 00:11:05 espressobin kernel: Linux version 6.12.95-current-mvebu64 (build@armbian) (aarch64-linux-gnu-gcc (Ubuntu 13.3.0>
Jul 11 00:11:05 espressobin kernel: 5:185m5:185mKASLR disabled due to lack of seed
Jul 11 00:11:05 espressobin kernel: Machine model: Globalscale Marvell ESPRESSOBin Board
Jul 11 00:11:05 espressobin kernel: efi: UEFI not found.
..
Jul 11 00:11:05 espressobin kernel: armada_37xx_wdt d0008300.watchdog: Initial timeout 120 sec
Jul 11 00:11:05 espressobin kernel: advk-pcie d0070000.pcie: host bridge /soc/pcie@d0070000 ranges:
Jul 11 00:11:05 espressobin kernel: advk-pcie d0070000.pcie: MEM 0x00e8000000..0x00efefffff -> 0x00e8000000
Jul 11 00:11:05 espressobin kernel: advk-pcie d0070000.pcie: IO 0x00efff0000..0x00efffffff -> 0x0000000000
Jul 11 00:11:05 espressobin kernel: advk-pcie d0070000.pcie: issuing PERST via reset GPIO for 10ms
Jul 11 00:11:05 espressobin kernel: mvneta d0030000.ethernet end0: renamed from eth0
....
This bootloader seems to deliver many if not all of its promises to name few of them:
cpu frequency scaling is operational :
root@espressobin:~# cpupower frequency-info
analyzing CPU 1:
driver: cpufreq-dt
CPUs which run at the same hardware frequency: 0 1
CPUs which need to have their frequency coordinated by software: 0 1
maximum transition latency: 1000 us
hardware limits: 200 MHz - 1000 MHz
available frequency steps: 200 MHz, 250 MHz, 500 MHz, 1000 MHz
available cpufreq governors: conservative ondemand userspace powersave performance schedutil
current policy: frequency should be within 200 MHz and 1000 MHz.
The governor "ondemand" may decide which speed to use
within this range.
current CPU frequency: 250 MHz (asserted by call to kernel)
Entropy and random number generation (RNG) issue seems to have been resolved
as bschnei's ebu-bootloader fork explicitly includes patches to fix this.
The ebu-bootloader patches bypass the OS entirely and tackle the problem before Linux even starts.
When Linux kernel boots, it immediately detects this perfect cryptographic seed provided by U-Boot and uses it to instantly initialize the OS-level Cryptographic Random Number Generator (CRNG).
Here are my kernel ring buffer timestamps:
root@espressobin:~# dmesg | grep -E "crng|random"
[ 11.785705] systemd[1]: Starting systemd-random-seed.service - Load/Save OS Random Seed...
[ 13.071384] random: crng init done
[ 13.398576] systemd[1]: Finished systemd-random-seed.service - Load/Save OS Random Seed.
The bootloader and kernel working together fixed the entropy pool in exactly 13.07 seconds from the moment the Linux kernel started executing.
Because crng init done happened before the systemd service even finished writing to the disk, it proves the kernel didn't just rely on slow user-space disk jitter. The hardware security engine initialized almost immediately.
Because the ebu-bootloader fork compiled correctly patches, the underlying Trusted Firmware-A (TF-A) and the secure processor (WTMI-devel), the hardware crypto mailboxes are wide open and working perfectly the moment Linux asks for them.
You don't even need haveged or any software workarounds. Your hardware is resolving its own entropy natively in just over a second from user-space initialization!
U-Boot UEFI Support is out of the box as well. I am booting seemlessly both legacy OS (from my old production setup) as well as a new OS build which I used for this testbed
root@espressobin:~# cat /etc/debian_version
forky/sid
root@espressobin:~# uname -a
Linux espressobinv5 6.12.95-current-mvebu64 #1 SMP PREEMPT Sat Jul 4 11:43:36 UTC 2026 aarch64 GNU/Linux
-
y52 got a reaction from TRS-80 in Making EspressoBin V7 work in 2022 ...I've made some advancement in debugging "armbian-ramlog & armbian-truncate-log" complex.
Your /usr/lib/armbian/armbian-ramlog has a syntax error in the array expression
${XTRA_RSYNC_TO[@]+"${XTRA_RSYNC_TO[@]}"} The 1st array lacks a closing } curly braces. Secondly, I can't figure out, why the same array is duplicated.
Even if you parse a variable XTRA_RSYNC_TO=(--delete) from /etc/default/armbian-ramlog, it will result in :
--delete+--delete Another problem comes, when you call
/usr/lib/armbian/armbian-ramlog write >/dev/null 2>&1 from /usr/lib/armbian/armbian-truncate-logs. It actually produces the error:
# /usr/lib/armbian/armbian-truncate-logs /usr/lib/armbian/armbian-truncate-logs: 23: /etc/default/armbian-ramlog: Syntax error: "(" unexpected I believe there is a syntax error in the way the call is made, where the XTRA_RSYNC_TO=(--delete) variable is not accounted for.
Could you give it a glance?
Otherwise, if the XTRA_RSYNC_TO=(--delete) variable is remarked in /etc/default/armbian-ramlog
and "--delete" option is hard coded in /usr/lib/armbian/armbian-ramlog, the complex starts running without raising exceptions.
-
y52 got a reaction from lampra in initramfs-tools not fully installed on Debian Stretch with Armbian Linux 4.19.56-mvebu64Here is what I have :
bubt u-boot/181226.flash-image-ddr3-2g-2cs-1000_800.bin spi usb
Marvell>> bubt u-boot/181226.flash-image-ddr3-2g-2cs-1000_800.bin spi usb
Burning U-BOOT image "u-boot/181226.flash-image-ddr3-2g-2cs-1000_800.bin" from "usb" to "spi"
USB0: Register 2000104 NbrPorts 2
Starting the controller
USB XHCI 1.00
USB1: USB EHCI 1.00
scanning bus 0 for devices... 2 USB Device(s) found
scanning bus 1 for devices... 1 USB Device(s) found
reading u-boot/181226.flash-image-ddr3-2g-2cs-1000_800.bin
Image checksum...OK!
SF: Detected w25q32dw with page size 256 Bytes, erase size 4 KiB, total 4 MiB
676040 bytes written, 212992 bytes skipped in 12.491s, speed 72876 B/s
Done!
Marvell>> version
U-Boot 2018.03-devel-18.12.3-gc9aa92c-armbian (Dec 26 2018 - 13:45:06 +0100)
aarch64-linux-gnu-gcc (Linaro GCC 7.3-2018.05) 7.3.1 20180425 [linaro-7.3-2018.05 revision d29120a424ecfbc167ef90065c0eeb7f91977701]
GNU ld (Linaro_Binutils-2018.05) 2.28.2.20170706
Marvell>> reset
WTMI-devel-18.12.0-a0a1cb8
WTMI: system early-init
SVC REV: 3, CPU VDD voltage: 1.155V
NOTICE: Booting Trusted Firmware
NOTICE: BL1: v1.5(release):1f8ca7e (Marvell-devel-18.12.2)
NOTICE: BL1: Built : 13:48:02, Dec 26 2018
NOTICE: BL1: Booting BL2
NOTICE: BL2: v1.5(release):1f8ca7e (Marvell-devel-18.12.2)
NOTICE: BL2: Built : 13:48:04, Dec 26 2018
NOTICE: BL1: Booting BL31
NOTICE: BL31: v1.5(release):1f8ca7e (Marvell-devel-18.12.2)
NOTICE: BL31: Built : 13:4
U-Boot 2018.03-devel-18.12.3-gc9aa92c-armbian (Dec 26 2018 - 13:45:06 +0100)
Model: Marvell Armada 3720 Community Board ESPRESSOBin
CPU 1000 [MHz]
L2 800 [MHz]
TClock 200 [MHz]
DDR 800 [MHz]
DRAM: 2 GiB
Comphy chip #0:
Comphy-0: USB3 5 Gbps
Comphy-1: PEX0 2.5 Gbps
Comphy-2: SATA0 6 Gbps
SATA link 0 timeout.
AHCI 0001.0300 32 slots 1 ports 6 Gbps 0x1 impl SATA mode
flags: ncq led only pmp fbss pio slum part sxs
PCIE-0: Link down
MMC: sdhci@d0000: 0
Loading Environment from SPI Flash... SF: Detected w25q32dw with page size 256 Bytes, erase size 4 KiB, total 4 MiB
OK
Model: Marvell Armada 3720 Community Board ESPRESSOBin
Net: eth0: neta@30000 [PRIME]
Hit any key to stop autoboot: 0
1119 bytes read in 14 ms (77.1 KiB/s)
## Executing script at 06d00000
243 bytes read in 5 ms (46.9 KiB/s)
15690240 bytes read in 673 ms (22.2 MiB/s)
5981154 bytes read in 270 ms (21.1 MiB/s)
** File not found /boot/dtb/marvell/armada-3720-community.dtb **
8607 bytes read in 10 ms (839.8 KiB/s)
## Loading init Ramdisk from Legacy Image at 01100000 ...
Image Name: uInitrd
Image Type: AArch64 Linux RAMDisk Image (gzip compressed)
Data Size: 5981090 Bytes = 5.7 MiB
Load Address: 00000000
Entry Point: 00000000
Verifying Checksum ... OK
## Flattened Device Tree blob at 06000000
Booting using the fdt blob at 0x6000000
Loading Ramdisk to 7f076000, end 7f62a3a2 ... OK
Using Device Tree in place at 0000000006000000, end 000000000600519e
Starting kernel ...
[ 0.000000] Booting Linux on physical CPU 0x0000000000 [0x410fd034]
[ 0.000000] Linux version 4.18.8-mvebu64 (root@nightly) (gcc version 7.2.1 20171011 (Linaro GCC 7.2-2017.11)) #259 SMP PREEMPT Wed Sep 19 11:14:00 CEST 2018
[ 0.000000] Machine model: Globalscale Marvell ESPRESSOBin Board
[ 0.000000] earlycon: ar3700_uart0 at MMIO 0x00000000d0012000 (options '')
[ 0.000000] bootconsole [ar3700_uart0] enabled
Loading, please wait...
starting version 239
root@espressobin:~# cat /boot/boot.cmd
# DO NOT EDIT THIS FILE
#
# Please edit /boot/armbianEnv.txt to set supported parameters
#
# default values
setenv rootdev "/dev/mmcblk0p1"
setenv verbosity "1"
setenv rootfstype "ext4"
# additional values
setenv ethaddr "F0:AD:4E:03:64:7F"
load ${boot_interface} ${devnum}:1 ${scriptaddr} ${prefix}armbianEnv.txt
env import -t ${scriptaddr} ${filesize}
setenv bootargs "$console root=${rootdev} rootfstype=${rootfstype} rootwait loglevel=${verbosity} usb-storage.quirks=${usbstoragequirks} mtdparts=spi0.0:1536k(uboot),64k(uboot-environment),-(reserved) ${extraargs}"
setenv fdt_name_a dtb/marvell/armada-3720-community.dtb
setenv fdt_name_b dtb/marvell/armada-3720-espressobin.dtb
ext4load $boot_interface 0:1 $kernel_addr ${prefix}$image_name
ext4load $boot_interface 0:1 $initrd_addr ${prefix}$initrd_image
ext4load $boot_interface 0:1 $fdt_addr ${prefix}$fdt_name_a
ext4load $boot_interface 0:1 $fdt_addr ${prefix}$fdt_name_b
booti $kernel_addr $initrd_addr $fdt_addr
# mkimage -C none -A arm -T script -d /boot/boot.cmd /boot/boot.scr
root@espressobin:~# ls -al /boot/dtb/marvell/
total 124
drwxr-xr-x 2 root root 4096 Aug 8 2019 .
drwxr-xr-x 3 root root 4096 Aug 8 2019 ..
-rw-r--r-- 1 root root 9158 Jun 25 2019 armada-3720-db.dtb
-rw-r--r-- 1 root root 8942 Jun 25 2019 armada-3720-espressobin.dtb
And finally "uboot environment" :
Marvell>> printenv
arch=arm
baudrate=115200
board=mvebu_armada-37xx
board_name=mvebu_armada-37xx
boot_a_script=ext4load ${boot_interface} ${devnum}:1 ${scriptaddr} ${prefix}boot.scr;source ${scriptaddr};
boot_efi_binary=load ${devtype} ${devnum}:${distro_bootpart} ${kernel_addr_r} efi/boot/bootaa64.efi; if fdt addr ${fdt_addr_r}; then bootefi ${kernel_addr_r} ${fdt_addr_r};else bootefi ${kernel_addr_r} ${fdtcontroladdr};fi
boot_extlinux=sysboot ${devtype} ${devnum}:${distro_bootpart} any ${scriptaddr} ${prefix}extlinux/extlinux.conf
boot_net_pci_enum=pci enum
boot_net_usb_start=usb start
boot_prefixes=/ /boot/
boot_script_dhcp=boot.scr.uimg
boot_scripts=boot.scr.uimg boot.scr
boot_targets=usb sata mmc1 mmc0
bootcmd=for target in ${boot_targets}; do run bootcmd_${target}; done
bootcmd_dhcp=run boot_net_usb_start; run boot_net_pci_enum; if dhcp ${scriptaddr} ${boot_script_dhcp}; then source ${scriptaddr}; fi;setenv efi_fdtfile ${fdtfile}; setenv efi_old_vci ${bootp_vci};setenv efi_old_arch ${bootp_arch};setenv bootp_vci PXEClient:Arch:00011:UNDI:003000;setenv bootp_arch 0xb;if dhcp ${kernel_addr_r}; then tftpboot ${fdt_addr_r} dtb/${efi_fdtfile};if fdt addr ${fdt_addr_r}; then bootefi ${kernel_addr_r} ${fdt_addr_r}; else bootefi ${kernel_addr_r} ${fdtcontroladdr};fi;fi;setenv bootp_vci ${efi_old_vci};setenv bootp_arch ${efi_old_arch};setenv efi_fdtfile;setenv efi_old_arch;setenv efi_old_vci;
bootcmd_mmc0=setenv devnum 0; setenv boot_interface mmc; run scan_dev_for_boot;
bootcmd_mmc1=setenv devnum 1; setenv boot_interface mmc; run scan_dev_for_boot;
bootcmd_nfs=run get_images; run set_bootargs; booti $kernel_addr_r $ramdisk_addr_r $fdt_addr_r
bootcmd_pxe=run boot_net_usb_start; run boot_net_pci_enum; dhcp; if pxe get; then pxe boot; fi
bootcmd_sata=setenv devnum 0; scsi scan; scsi dev 0; setenv boot_interface scsi; run scan_dev_for_boot;
bootcmd_scsi0=setenv devnum 0; run scsi_boot
bootcmd_usb=setenv devnum 0; usb start;setenv boot_interface usb; run scan_dev_for_boot;
bootcmd_usb0=setenv devnum 0; run usb_boot
bootdelay=2
console=console=ttyMV0,115200 earlycon=ar3700_uart,0xd0012000
cpu=armv8
distro_bootcmd=setenv scsi_need_init; for target in ${boot_targets}; do run bootcmd_${target}; done
efi_dtb_prefixes=/ /dtb/ /dtb/current/
eth1addr=00:51:82:11:22:01
eth2addr=00:51:82:11:22:02
eth3addr=00:51:82:11:22:03
ethact=neta@30000
ethaddr=00:51:82:11:22:00
ethprime=eth0
extra_params=pci=pcie_bus_safe
fdt_addr=0x6000000
fdt_addr_r=0x6f00000
fdt_high=0xffffffffffffffff
fdt_name=fdt.dtb
fdtcontroladdr=7f7142d8
gatewayip=10.4.50.254
get_images=tftpboot $kernel_addr_r $image_name; tftpboot $fdt_addr_r $fdt_name; run get_ramdisk
get_ramdisk=if test "${ramdisk_name}" != "-"; then tftpboot $ramdisk_addr_r $ramdisk_name; else setenv ramdisk_addr_r -;fi
hostname=marvell
image_name=boot/Image
initrd_addr=0x1100000
initrd_image=uInitrd
initrd_size=0x2000000
ipaddr=0.0.0.0
kernel_addr=0x7000000
kernel_addr_r=0x7000000
load_efi_dtb=load ${devtype} ${devnum}:${distro_bootpart} ${fdt_addr_r} ${prefix}${efi_fdtfile}
loadaddr=0x8000000
mmc_boot=if mmc dev ${devnum}; then setenv devtype mmc; run scan_dev_for_boot_part; fi
netdev=eth0
netmask=255.255.255.0
pxefile_addr_r=0x6e00000
ramdisk_addr_r=0xa000000
ramdisk_name=-
root=root=/dev/nfs rw
rootpath=/srv/nfs
scan_dev_for_boot=for prefix in ${boot_prefixes}; do echo ${prefix};run boot_a_script; done
scan_dev_for_boot_part=part list ${devtype} ${devnum} -bootable devplist; env exists devplist || setenv devplist 1; for distro_bootpart in ${devplist}; do if fstype ${devtype} ${devnum}:${distro_bootpart} bootfstype; then run scan_dev_for_boot; fi; done
scan_dev_for_efi=setenv efi_fdtfile ${fdtfile}; for prefix in ${efi_dtb_prefixes}; do if test -e ${devtype} ${devnum}:${distro_bootpart} ${prefix}${efi_fdtfile}; then run load_efi_dtb; fi;done;if test -e ${devtype} ${devnum}:${distro_bootpart} efi/boot/bootaa64.efi; then echo Found EFI removable media binary efi/boot/bootaa64.efi; run boot_efi_binary; echo EFI LOAD FAILED: continuing...; fi; setenv efi_fdtfile
scan_dev_for_extlinux=if test -e ${devtype} ${devnum}:${distro_bootpart} ${prefix}extlinux/extlinux.conf; then echo Found ${prefix}extlinux/extlinux.conf; run boot_extlinux; echo SCRIPT FAILED: continuing...; fi
scan_dev_for_scripts=for script in ${boot_scripts}; do if test -e ${devtype} ${devnum}:${distro_bootpart} ${prefix}${script}; then echo Found U-Boot script ${prefix}${script}; run boot_a_script; echo SCRIPT FAILED: continuing...; fi; done
scriptaddr=0x6d00000
scsi_boot=run scsi_init; if scsi dev ${devnum}; then setenv devtype scsi; run scan_dev_for_boot_part; fi
scsi_init=if ${scsi_need_init}; then setenv scsi_need_init false; scsi scan; fi
serverip=0.0.0.0
set_bootargs=setenv bootargs $console $root ip=$ipaddr:$serverip:$gatewayip:$netmask:$hostname:$netdev:none nfsroot=$serverip:$rootpath $extra_params $cpuidle
soc=mvebu
stderr=serial@12000
stdin=serial@12000
stdout=serial@12000
usb_boot=usb start; if usb dev ${devnum}; then setenv devtype usb; run scan_dev_for_boot_part; fi
vendor=Marvell
Environment size: 5204/65532 bytes
-
y52 got a reaction from Igor in rebuild rtl8189es from GIT for OPI+Thanks to the Armbian team for the headers scripts generation bug fixing and the minor version 5.11 release.
I was able upgrading the 5.10 image to 5.11 and building the 5 october .
Here is a recipe :
root@orangepiplus:~# apt-get update && apt-get upgrade
root@orangepiplus:~# cd /usr/src/linux-headers-$(uname -r)
root@orangepiplus:/usr/src/linux-headers-3.4.112-sun8i# make scripts
root@orangepiplus:~# cd /usr/src
root@orangepiplus:/usr/src# git clone https://github.com/jwrdegoede/rtl8189ES_linux/
root@orangepiplus:/usr/src# cd rtl8189ES_linux
root@orangepiplus:/usr/src/rtl8189ES_linux# git checkout 080f2aaf6bc8e08eeb3b51f0b8c377eae1ea7ed7
root@orangepiplus:/usr/src/rtl8189ES_linux#
wget https://raw.githubusercontent.com/jernejsk/OpenELEC-OPi2/openelec-7.0/packages/linux-drivers/RTL8189ES/patches/RTL8189ES-000-change-build-settings.patch
root@orangepiplus:/usr/src/rtl8189ES_linux# patch -p1 < RTL8189ES-000-change-build-settings.patch
root@orangepiplus:/usr/src/rtl8189ES_linux#
make ARCH=arm KSRC=/usr/src/linux-headers-$(uname -r) CROSS_COMPILE=
The "make install" doesn't run. I copied it manually :
cp -a 8189es.ko /lib/modules/3.4.112-sun8i/kernel/drivers/net/wireless/rtl8189es/
root@orangepiplus:/usr/src/rtl8189ES_linux# modinfo 8189es.ko
filename: /usr/src/rtl8189ES_linux/8189es.ko
version: v4.3.18.1_15373.20151005 <== 5 october 2015
author: Realtek Semiconductor Corp.
description: Realtek Wireless Lan Driver
license: GPL
srcversion: AD6BE9C509ECC03E70462BA
alias: sdio:c*v024Cd8179*
depends:
vermagic: 3.4.112-sun8i SMP preempt mod_unload modversions ARMv7 p2v8
I enabled the Monitor mode in the Make file.
It even shows up in the module capabilities:
root@orangepiplus:/usr/src/rtl8189ES_linux# iw list
Supported Ciphers:
* WEP40 (00-0f-ac:1)
* WEP104 (00-0f-ac:5)
* TKIP (00-0f-ac:2)
* CCMP (00-0f-ac:4)
Available Antennas: TX 0 RX 0
Supported interface modes:
* IBSS
* managed
* AP
* monitor <----
* P2P-client
* P2P-GO
software interface modes (can always be added):
* monitor
Unfortunately, the switch to monitor mode doesn't run :
"iwconfig wlan0 mode monitor"
oot@orangepiplus:/usr/src/rtl8189ES_linux# iwconfig wlan0 mode monitor
Error for wireless request "Set Mode" (8B06) :
SET failed on device wlan0 ; Operation not permitted.
Despite this, the positive bug fix for this driver is that the wlan interface shows up correctly in the single instance and is not duplicated:
root@orangepiplus:~# iwconfig
lo no wireless extensions.
tunl0 no wireless extensions.
wlan0 unassociated Nickname:"<WIFI@REALTEK>"
Mode:Managed Frequency=2.412 GHz Access Point: Not-Associated
I haven't tested the driver performance and the packets drop rate.
I believe it is worth integrating in the new release.