June 22, 2026, 02:10:40 PM

Recent posts

#1
DUINOMITE / Re: Displays for Duinomite
Last post by LubOlimex - Today at 01:41:56 PM
I understand, I didn't mean to defend us either, I just wanted to clarify here what was the change exactly in case somebody else encounters similar issue.
#2
DUINOMITE / Re: Displays for Duinomite
Last post by KeesZagers - Today at 11:57:51 AM
Hi Lub, I agree that it is mentioned in the product page, however if you want to copy an existing installation, you don't read all the specifications again. As long as the product is upwards compatible, no problem; however if this is not the case it is better to make the old version obsolete and replace it by a new one. In that case you are more prepared that you have to do additional work. Anyway the reason I wrote it on the Duinomite pages on this forum is that users of the Duinomite products with my Basic software are also notified of the incompatibility.
#3
DUINOMITE / Re: Displays for Duinomite
Last post by LubOlimex - Today at 08:48:53 AM
Kees, there was a change in the touch driver 3 or 4 years ago, the original one was AR1021 and the new one is NS2009 - this is mentioned on the product page and hardware revision changes and we also released a new demo for NS2009 here:

https://github.com/OLIMEX/MOD-LCD2.8RTP/tree/master/SOFTWARE/Arduino
#4
DUINOMITE / Displays for Duinomite
Last post by KeesZagers - June 20, 2026, 03:50:44 PM
Based on the old DMBasic 2.7 I developed my own extensions to Basic, e.g. for all kind of CAN commands, but also some other controls as two kind of displays. The MOD-OLED-128x64 and the MOD-LCD2.8RTP are supported by one Basic statement called OLED which copies the VGA memory on to the screen. Also the touch screen of the MOD-LCD2.8RTP is supported by this statement. This week I ordered a new display module and determined that the touch is not working. Reading the details of the product, I noticed that the touch controller has been changed and the software seems not to be compatible. I will try to make the OLED statement also compatible with the new controller. For those people using my free software be noticed. For Olimex: If a product has software which is not upwards compatible with an old version, give it a new number, or at least specify it more clearly.
#5
A64 / Overheating on mainline Linux
Last post by Roman - June 20, 2026, 12:48:44 PM
With the current Linux-libre, I observe that A64-OLinuXino may overheat under heavy prolonged load.

Interestingly, when I try "stress-ng -c 0", which fully loads all four cores of the CPU, the temperature stabilizes right above the default lower temperature trip point of 75 degrees, even without a heatsink and in BOX-A64-BLACK inside an unventilated cabinet. But that load is synthetic and even.

Under a real-world load, for example, when I run "guix pull", which produces an uneven load over a long period of time (probably an hour), the temperature drifts and at some point may exceed 110 degrees. The last message that I see in the serial console says that 110 degrees were reached and the device is going into reboot. The reboot probably happens too fast for the chip to cool down because the board never starts by itself.

I conclude that the temperature fluctuates too fast under an uneven high load. The default configuration of the kernel does not handle that well. The configuration could probably be changed by configuring the power allocator. But I think that adding even a small heatsink on the A64 BGA should completely resolve the issue. The heatsink will be absorbing heat and should smooth the temperature spikes.

Olimex lists ALUMINIUM-HEATSINK-20x20x6MM as a related product for Allwinner A64. I suppose that it is appropriate for the task. I also saw a member of the forum reporting that a 15x15x15 is the right size for A64 and fits perfectly inside BOX-A64-BLACK. A datasheet for A64 says that it comes in "15x15mm" FBGA396 package. So, I probably should be looking for a 15x15 heatsink. Most of the readily available radiators are 14x14 mm in my local market, however.

If anyone has any advice on preventing overheating or on choosing a heatsink, it will be much appreciated.

$ uname -r
7.0.12-arm64-generic
$ cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor | uniq
schedutil
$ ls -l /sys/class/thermal/thermal_zone*/cdev*
lrwxrwxrwx 1 root root    0 Jun 20 12:18 /sys/class/thermal/thermal_zone0/cdev0 -> ../cooling_device0
-r--r--r-- 1 root root 4096 Jun 20 12:18 /sys/class/thermal/thermal_zone0/cdev0_trip_point
-rw-r--r-- 1 root root 4096 Jun 20 12:18 /sys/class/thermal/thermal_zone0/cdev0_weight
lrwxrwxrwx 1 root root    0 Jun 20 12:18 /sys/class/thermal/thermal_zone0/cdev1 -> ../cooling_device0
-r--r--r-- 1 root root 4096 Jun 20 12:18 /sys/class/thermal/thermal_zone0/cdev1_trip_point
-rw-r--r-- 1 root root 4096 Jun 20 12:18 /sys/class/thermal/thermal_zone0/cdev1_weight
$ cat /sys/class/thermal/cooling_device0/type
cpufreq-cpu0
$ cat /sys/class/thermal/thermal_zone0/trip_point_1_type
hot
$ cat /sys/class/thermal/thermal_zone0/trip_point_0_type
passive
$ cat /sys/class/thermal/thermal_zone0/trip_point_0_temp
75000
$ cat /sys/class/thermal/thermal_zone0/cdev0_trip_point
0
$ cat /sys/class/thermal/thermal_zone0/cdev1_trip_point
1
$ cat /sys/class/thermal/thermal_zone0/trip_point_0_hyst
2000
$ cat /sys/class/thermal/thermal_zone0/k_po
0
$ cat /sys/class/thermal/thermal_zone0/k_d
0
$ cat /sys/class/thermal/thermal_zone0/sustainable_power
0
#6
ESP32 / Re: ESP32-PoE-ISO UART1 issue
Last post by LubOlimex - June 18, 2026, 04:50:04 PM
Here is the experimental firmware version 6 - it should have better support for half duplex mode and work fine with Modbus:

https://www.olimex.com/Products/Modules/Interface/MOD-RS485-ISO/resources/MOD-RS485_FIRMWARE_V6.zip

There is also Arduino library and examples inside (ZIP the sub-folder and import in Arduino IDE).

Changing the firmware of MOD-RS485-ISO requires PIC-compatible programmer, there is a hex inside the archive, load it on each RS485-ISO board.

I tested the examples with ESP32-POE-ISO and all seems to work fine but feedback is more than welcome.
#7
A64 / Re: A64-OLinuXino-2Ge16G-IND: ...
Last post by ericstokes - June 18, 2026, 11:47:36 AM
Quote from: Brati on May 18, 2026, 04:52:36 PMI am developing a Yocto 5.0 (Scarthgap) Linux image for the A64-OLinuXino-2Ge16G-IND board and have encountered a critical issue with warm reboot that I have been unable to resolve.

Issue:
The board hangs on every reboot (warm reset and cold reset) after the following boot log line:

INFO: BL31: Preparing for EL3 exit to normal world
INFO: Entry point address = 0x4a000000
INFO: SPSR = 0x3c9
[HANG - no U-Boot output]

First cold power-on always works correctly. The hang occurs every time after any reboot command.

Setup:
- Board: A64-OLinuXino-2Ge16G-IND
- U-Boot: 2024.01 (mainline, from Yocto Scarthgap / poky)
- TF-A: 2.10.4 with SUNXI_PSCI_USE_NATIVE=1 SUNXI_PSCI_USE_SCPI=1
- Crust SCP: v0.6.0 (a64-olinuxino_defconfig)
- Kernel: Linux 6.6.85
- Boot device: SD card (mmcblk0)

What I have tried:
- Added Crust SCP firmware (scp.bin embedded in U-Boot SPL)
- Added R_WDOG fix for A64 in reset_cpu() in board.c
- Added PLL6 lock timeout in clock_init_safe() in clock_sun6i.c
- TF-A rebuilt with LOG_LEVEL=40 - confirmed BL31 completes successfully and hands off to U-Boot at 0x4a000000
- U-Boot freezes before printing a single character

The hang is confirmed to be between BL31 exit and U-Boot's first UART output.

Question:
Can anyone please share which U-Boot version and if any specific patches you use in your Olimage builds for the A64-OLinuXino to make reboot work correctly?
Any guidance would be greatly appreciated.

Best regards,
Bratiranjan Acharya
bratiranjan12@gmail.com
The issue is most likely not TF-A, since BL31 successfully hands off to U-Boot at 0x4a000000. A64 warm-reset problems are often caused by SPL/DRAM/clock state not being fully reinitialized after reboot.

I'd recommend testing a newer mainline U-Boot (2024.10+ or current master) or enabling CONFIG_DEBUG_UART to see how early it hangs.
#8
New Products release / Home Automation with Phone Not...
Last post by olimex - June 11, 2026, 02:46:54 PM
Yes, It's Possible!
How to do it with EUR 4.95 ESP32-C3-DevKit-LiPo tutorial https://olimex.wordpress.com/2026/06/11/home-automation-with-phone-notifications-for-under-e5-yes-its-possible/
#esp32 #espressif #telegram #homeautomation #iot #notifications #door #monitoring #motion #detection
#9
A13 / Re: How update nand flash of m...
Last post by colpamax - June 10, 2026, 01:01:50 PM
New script is ready! Now you can move Linux to NAND without step 4) of previous instruction. Also 7 different Android partitions are combined into nandc. After all you have 3 partitions nanda (uboot and kernel),nandb (configuration), nandc (root).
Please be patient during tar working part.
1) Install Android to NAND using LiveSuit
2) Install Debian to SD card.
3) Run Debian from SD card and run script.
All the steps are described thoroughly in previous posts.

#!/bin/sh

python -c '
import struct, zlib, os, sys
p = "/sys/class/block/nand/size"
if not os.path.exists(p):
    print "Error"
    sys.exit(1)
with open(p, "r") as f:
    t = int(f.read().strip())
L = [("bootloader", 2048, 32768), ("env", 34816, 4096), ("rootfs", 38912, t - 36864)]
e = ""
for idx, (n, st, sz) in enumerate(L):
    if idx == 0:
        l1 = struct.pack("<BBB5sII", 0, 0, 3, "\x00" * 5, st, 0)
    else:
        l1 = struct.pack("<QII", 0, st, 0)
    e += l1 + struct.pack("<I4sQ", sz, "DISK", 0) + n.ljust(16, "\x00") + "\x00" * 16
b = (struct.pack("<II8s", 0, 0x100, "softw311") + e).ljust(1024, "\x00")
out = ""
for i in range(4):
    c = b[:17] + struct.pack("B", i) + b[18:]
    out += struct.pack("<I", zlib.crc32(c[4:]) & 0xffffffff) + c[4:]
with open("nand_part.bin", "wb") as f:
    f.write(out)
print "Done"
'

dd if=nand_part.bin of=/dev/nand bs=1k count=4
sleep 1
sync
sleep 1
sync
sleep 1

blockdev --rereadpt /dev/nand
sleep 2
blockdev --rereadpt /dev/nand
sleep 2
blockdev --rereadpt /dev/nand
sleep 2

umount /dev/nandc
mkfs.ext4 /dev/nandc
tune2fs -o journal_data_writeback /dev/nandc
tune2fs -O ^has_journal /dev/nandc
e2fsck -f /dev/nandc


mkdir /mnt/nandroot
mount /dev/nandc /mnt/nandroot

tar --exclude=/proc/* \
    --exclude=/sys/* \
    --exclude=/dev/* \
    --exclude=/tmp/* \
    --exclude=/run/* \
    --exclude=/mnt/* \
    --exclude=/media/* \
    --exclude=/var/log/* \
    --exclude=/var/tmp/* \
    -cf - / | (cd /mnt/nandroot && tar -xf -)

cat << 'EOF' > /mnt/nandroot/etc/fstab
/dev/nandc    /              ext4    defaults,noatime,nodiratime,commit=60    0    1
tmpfs         /tmp           tmpfs   defaults,noatime,mode=1777,size=64M      0    0
tmpfs         /var/log       tmpfs   defaults,noatime,mode=0755,size=32M      0    0
tmpfs         /var/tmp       tmpfs   defaults,noatime,mode=1777,size=32M      0    0
EOF

umount  /mnt/nandroot
rmdir /mnt/nandroot


mkdir -p /mnt/sdboot
mount /dev/mmcblk0p1 /mnt/sdboot

mkdir -p /mnt/nandboot
mount /dev/nanda /mnt/nandboot

cp /mnt/sdboot/uImage /mnt/nandboot/
cp /mnt/sdboot/script.bin /mnt/nandboot/
umount /mnt/sdboot
rmdir /mnt/sdboot
umount /mnt/nandboot
rmdir /mnt/nandboot


cat << 'EOF' > u-boot.txt
baudrate=115200
bootdelay=1
console=ttyS0,115200
loglevel=8
machid=102a
nand_root=/dev/nandc
init=/sbin/init
setargs=setenv bootargs console=${console} root=${nand_root} rootwait init=${init} loglevel=${loglevel}
boot_normal=fatload nand 0:0 0x44000000 uImage; bootm 0x44000000
bootcmd=run setargs boot_normal
EOF


python -c "
import zlib, struct
with open('u-boot.txt', 'r') as f:
    lines = [line.strip() for line in f if line.strip()]
data = '\x00'.join(lines) + '\x00'
target_size = 131072 - 4
data = data.ljust(target_size, '\x00')
crc = zlib.crc32(data) & 0xffffffff
header = struct.pack('<I', crc)
with open('env.bin', 'wb') as f:
    f.write(header + data)
print('env.bin reafy! filesize:', len(header + data))
"
sudo dd if=env.bin of=/dev/nandb bs=1k
sync

rm env.bin u-boot.txt

echo "All done! Now power off the board, remove SD card and next time it will boot Linux from NAND!"
#10
FPGA / Re: First time issues programm...
Last post by LubOlimex - June 10, 2026, 09:15:26 AM
Thanks for the feedback and the repo, I will make sure to link at the product page, under "Community".