July 14, 2026, 05:44:35 AM

Recent posts

#1
ESP32 / Framebuffer on ESP32-P4-PC
Last post by Pjotr - July 13, 2026, 03:14:22 PM
I just need the framebuffer to draw graphics to HDMI output. Is there any demo code?
#2
STMP1 / Re: STM32MP1-OLinuXino-LIME: f...
Last post by dry - July 12, 2026, 07:18:00 AM
Ta daaam ! We can improve that performance by doing small device tree mod : add

sdmmc@58007000 {
    ....
    mmc-ddr-3_3v;  <--- Just this
};

Then, after boot:

[    0.213409] tcp_listen_portaddr_hash hash table entries: 512 (order: 0, 6144 bytes, linear)
[    4.363104] mmci-pl18x 58007000.sdmmc: mmc2: PL180 manf 53 rev1 at 0x58007000 irq 57,0 (pio)
[    4.424492] mmc1: new high speed SDXC card at address aaaa
[    4.489070] mmc2: new DDR MMC card at address 0001    < ----------- HERE
[    4.494029] mmcblk2: mmc2:0001 BJTD4R 29.1 GiB
[    4.497895] mmcblk2boot0: mmc2:0001 BJTD4R partition 1 4.00 MiB
[    4.503835] mmcblk2boot1: mmc2:0001 BJTD4R partition 2 4.00 MiB
[    4.509571] mmcblk2rpmb: mmc2:0001 BJTD4R partition 3 4.00 MiB, chardev (245:0)

sudo cat /sys/kernel/debug/mmc2/ios
actual clock:    49500000 Hz
vdd:        21 (3.3 ~ 3.4 V)
bus mode:    2 (push-pull)
chip select:    0 (don't care)
power mode:    2 (on)
bus width:    3 (8 bits)
timing spec:    8 (mmc DDR52)    <--------- NOTE HERE
signal voltage:    0 (3.30 V)
driver type:    0 (driver type B)



So re-running the fio tests, this gives a speed-up / bump:

Compared with your earlier non-DDR / MMC high-speed raw results
Test              Before: MMC high-speed SDR After: DDR52 Change
Less-severe sequential write ~27.1 MiB/s 36.6 MiB/s +35%
Less-severe sequential read ~27.5 MiB/s 34.4 MiB/s +25%
Less-severe random write ~1730 IOPS 1934 IOPS +12%
Less-severe random read         ~2481 IOPS 2726 IOPS +10%
Severe sequential write         ~12.8 MiB/s 13.3 MiB/s +4%
Severe sequential read         ~27.4 MiB/s 35.0 MiB/s +28%
Severe random write         ~1001 IOPS 1021 IOPS +2%
Severe random read         ~2600 IOPS 2862 IOPS +10%


So you can decide if you need this bump. Also, any longer run stability issues not tested, if this may affect it or not.

#3
STMP1 / Re: STM32MP1-OLinuXino-LIME: f...
Last post by dry - July 12, 2026, 06:06:26 AM
Looks like I cannot attach anything on posts, so I'll inline my fio scripts.
(Btw, thanks got bot /chatGPT for help with these reports).

#    FIO Severe test
#!/bin/sh
set -eu

# Raw block target.
# WARNING: write tests will overwrite data on this device/partition.
# Change this in one place if needed.
TARGET_DEV="/dev/mmcblk2p1"

# Output directory for logs.
LOG_DIR="/tmp"

# Common fio settings.
COMMON_OPTS="--ioengine=psync \
  --iodepth=1 \
  --numjobs=1 \
  --runtime=30 \
  --time_based \
  --direct=1 \
  --group_reporting \
  --lat_percentiles=1 \
  --percentile_list=50:90:95:99:99.9:99.99"

echo "Target device: $TARGET_DEV"
echo "Logs written to: $LOG_DIR"
echo
echo "WARNING: write tests will overwrite data on $TARGET_DEV"
echo "Make sure the target is unmounted before running write tests."
echo

sync
echo 3 | tee /proc/sys/vm/drop_caches >/dev/null

fio --name=seqwrite_raw_sync \
  --filename="$TARGET_DEV" \
  --rw=write \
  --bs=1M \
  --sync=1 \
  $COMMON_OPTS \
  --output="$LOG_DIR/seqwrite_raw_sync_test.txt"

sync
echo 3 | tee /proc/sys/vm/drop_caches >/dev/null

fio --name=seqread_raw_direct_severe \
  --filename="$TARGET_DEV" \
  --readonly=1 \
  --rw=read \
  --bs=1M \
  $COMMON_OPTS \
  --output="$LOG_DIR/seqread_raw_direct_severe_test.txt"

sync
echo 3 | tee /proc/sys/vm/drop_caches >/dev/null

fio --name=randwrite_raw_sync \
  --filename="$TARGET_DEV" \
  --rw=randwrite \
  --bs=4k \
  --sync=1 \
  $COMMON_OPTS \
  --output="$LOG_DIR/randwrite_raw_sync_test.txt"

sync
echo 3 | tee /proc/sys/vm/drop_caches >/dev/null

fio --name=randread_raw_direct_severe \
  --filename="$TARGET_DEV" \
  --readonly=1 \
  --rw=randread \
  --bs=4k \
  $COMMON_OPTS \
  --output="$LOG_DIR/randread_raw_direct_severe_test.txt"

echo
echo "Done. Logs:"
echo "  $LOG_DIR/seqwrite_raw_sync_test.txt"
echo "  $LOG_DIR/seqread_raw_direct_severe_test.txt"
echo "  $LOG_DIR/randwrite_raw_sync_test.txt"
echo "  $LOG_DIR/randread_raw_direct_severe_test.txt"


# FIO less Severe setting test
#!/bin/sh
set -eu

# Raw block target.
# WARNING: write tests will overwrite data on this device/partition.
# Change this in one place if needed.
TARGET_DEV="/dev/mmcblk2p1"

# Output directory for logs.
LOG_DIR="/tmp"

# Common fio settings.
COMMON_OPTS="--ioengine=psync \
  --iodepth=1 \
  --numjobs=1 \
  --runtime=30 \
  --time_based \
  --direct=1 \
  --group_reporting \
  --lat_percentiles=1 \
  --percentile_list=50:90:95:99:99.9:99.99"

echo "Target device: $TARGET_DEV"
echo "Logs written to: $LOG_DIR"
echo
echo "WARNING: write tests will overwrite data on $TARGET_DEV"
echo "Make sure the target is unmounted before running write tests."
echo

sync
echo 3 | tee /proc/sys/vm/drop_caches >/dev/null

fio --name=seqwrite_raw_direct \
  --filename="$TARGET_DEV" \
  --rw=write \
  --bs=1M \
  --end_fsync=1 \
  $COMMON_OPTS \
  --output="$LOG_DIR/seqwrite_raw_direct_test.txt"

sync
echo 3 | tee /proc/sys/vm/drop_caches >/dev/null

fio --name=seqread_raw_direct_less_severe \
  --filename="$TARGET_DEV" \
  --readonly=1 \
  --rw=read \
  --bs=1M \
  $COMMON_OPTS \
  --output="$LOG_DIR/seqread_raw_direct_less_severe_test.txt"

sync
echo 3 | tee /proc/sys/vm/drop_caches >/dev/null

fio --name=randwrite_raw_direct \
  --filename="$TARGET_DEV" \
  --rw=randwrite \
  --bs=4k \
  --end_fsync=1 \
  $COMMON_OPTS \
  --output="$LOG_DIR/randwrite_raw_direct_test.txt"

sync
echo 3 | tee /proc/sys/vm/drop_caches >/dev/null

fio --name=randread_raw_direct_less_severe \
  --filename="$TARGET_DEV" \
  --readonly=1 \
  --rw=randread \
  --bs=4k \
  $COMMON_OPTS \
  --output="$LOG_DIR/randread_raw_direct_less_severe_test.txt"

echo
echo "Done. Logs:"
echo "  $LOG_DIR/seqwrite_raw_direct_test.txt"
echo "  $LOG_DIR/seqread_raw_direct_less_severe_test.txt"
echo "  $LOG_DIR/randwrite_raw_direct_test.txt"
echo "  $LOG_DIR/randread_raw_direct_less_severe_test.txt"

#4
STMP1 / STM32MP1-OLinuXino-LIME: flash...
Last post by dry - July 12, 2026, 06:02:42 AM
Continuing my 'speed' testing of storage options. External microSD tested here:
https://www.olimex.com/forum/index.php?topic=10025.0

I tested eMMC flash on the external flash module for the board https://www.olimex.com/Products/OLinuXino/Accessories/Flash-e32Gs16M/. So at minimum we know we have 8 data lines on this 'on-board' eMMC, vs 4 on the external microSD line.
I bought 32GB one.

I used diskpd and fio to test speed, but in the end decided to stick to fio for all tests.

I tested on top of fs first, but that gave suspicious speed bumps in some cases, so I re-tested just on top of block device level. I've ran with more 'severe' case with --sync, and 'less severe' with --end_fsync on writes. Note in scrits (attached) I also include flushing (or trying to) caches bewteen each test runs.

In brief, in sum,  I'm getting this:

Sequential read:                  ~27.5 MiB/s
Sequential write, severe sync:     ~12.8 MiB/s
Sequential write, less severe:     ~27.1 MiB/s
4 KiB random read:                 ~2.5k IOPS / ~10 MiB/s
4 KiB random write, severe sync:   ~1.0k IOPS / ~3.9 MiB/s
4 KiB random write, less severe:   ~1.7k IOPS / ~6.8 MiB/s

With Severe vs less so

| Test             |                 Severe raw |            Less severe raw | Change       |
| ---------------- | -------------------------: | -------------------------: | ------------ |
| Sequential write |             **12.8 MiB/s** |             **27.1 MiB/s** | ~2.1× faster |
| Sequential read  |             **27.4 MiB/s** |             **27.5 MiB/s** | Same         |
| Random write     | **1001 IOPS / 3.91 MiB/s** | **1730 IOPS / 6.76 MiB/s** | ~1.7× faster |
| Random read      | **2600 IOPS / 10.2 MiB/s** | **2481 IOPS / 9.70 MiB/s** | Same range   |

.. while testing with file on ext4 formated on top of that block I get suspicious/ too good read results and IOPS for random reads.

| Test             |  Filesystem severe fio |       Raw block severe fio | Better number to quote                                            |
| ---------------- | ---------------------: | -------------------------: | ----------------------------------------------------------------- |
| Seq write sync   |       ~23.7–24.1 MiB/s |             **12.8 MiB/s** | Depends on workload; raw is stricter                              |
| Seq read direct  |            ~37.5 MiB/s |             **27.4 MiB/s** | Raw is cleaner                                                    |
| Rand write sync  | ~291 IOPS / 1.14 MiB/s | **1001 IOPS / 3.91 MiB/s** | Raw for media/block capability; filesystem for real file workload |
| Rand read direct |   suspicious ~22k IOPS | **2600 IOPS / 10.2 MiB/s** | Raw result                                                        |

So better to run from this eMMC of course. I kind of hoped it could be faster as this STM32MP1x might support faster mode - see
stm forum link enable hs200/hs400 mode

Based on board design, we cannot get higher HS200 mode as I understand it - again needs that ~1.8V signaling - , but I wonder if DDR52 (at 3.3v) mode could be tried / set to see if that would work: currently based on kernel logs:

Card Type [CARD_TYPE: 0x57], so advertises modes 0x01 to 0x40 (HS400),  but also it logs
HS_TIMING: 0x01, so its in high-speed mode.

Might try it next.
#5
DUINOMITE / Re: Displays for Duinomite
Last post by KeesZagers - July 09, 2026, 01:30:25 PM
I modified the Basic (SI2-CBB software) and it detects now if an old or new touch display is connected. Software remains the same, only the new display includes the variable in Z-direction (pressure on the screen). The new manual of our Basic can be downloaded on:
https://www.si-kwadraat.nl/si2-cbb/manuals/en/can-manual2_6.pdf

In the command OLED you can see how the complete display is covered by just one Basic statement.

BTW I have seen that in the new version also the quality of the display is improved. Compliments to Olimex for that.
#6
New Products release / Turning the ESP32-CAM-8MB into...
Last post by olimex - July 08, 2026, 04:52:36 PM
paired with ESPectre — WiFi CSI motion sensing, no PIR, no IR light, works in total darkness camera node only wakes up when something actually moves. https://olimex.wordpress.com/2026/07/08/turning-the-esp32-cam-8mb-into-a-smart-security-camera-for-home-assistant/
 #iot #espectre #esp32cam
#7
ST / Re: OLIMEXINO-STM32F3 and ADXL...
Last post by mgolbs - July 07, 2026, 03:16:07 PM
Hello,
many thanks for the information an the listing of ports/pins!

Greeting Markus

#8
ST / Re: OLIMEXINO-STM32F3 and ADXL...
Last post by LubOlimex - July 07, 2026, 11:36:48 AM
SPI should be possible why not. You should use 4-wire SPI. If using the UEXT connector:

ADXL375 pin    UEXT pin    OLIMEXINO-STM32F3 signal
----------------------------------------------------
VIN            1           +3.3V
GND            2           GND
SDO            7           SPI1 MISO, D12 / PA6
SDA            8           SPI1 MOSI, D11 / PA7
SCL            9           SPI1 SCK,  D13 / PA5
CS             10          GPIO chip select, D4 / PB5

The onboard microSD uses SPI2 separately.

So the recommended setup is ADXL375 on UEXT/SPI1 and microSD on SPI2. Of course, some software effort will be needed.
#9
ST / OLIMEXINO-STM32F3 and ADXL375 ...
Last post by mgolbs - July 07, 2026, 10:13:37 AM
Hello,
can I use a adafruit ADXL375 - High G Accelerometer (+-200g) with SPI and mircosd write on a OLIMEXINO-STM32F3 and witch port must I use, 3 ore 4 wire SPI?
 [CS, SDO, SDA and SCL]

https://github.com/OLIMEX/OLIMEXINO-STM32F3/blob/master/HARDWARE/OLIMEXINO-STM32F3-revision-D/OLIMEXINO-STM32F3_Rev_D.pdf

Goal is, use the raw x, y and z acce with 100Hz sample, internal ADXL375 ADXL375_DATA_RATE_200. 24g are not enough in a drum. If SPI not possible, then must I use I2C.

Greeting Markus
#10
STMP1 / Re: STM32MP1-OLinuXino-LIME: s...
Last post by LubOlimex - July 07, 2026, 08:50:56 AM
Try testing the SD cards. Good free software for testing the SD cards is either f3
(fight flash fraud) or H2testW. There are a lot of counterfeit SD cards out
there and also cards tend to get damaged easily.