[Unstable Update] April 2026

Welcome to the new monthly unstable branch thread.

Recent News

iptables now defaults to the nft backend

2026-04-05 - Felix Yan

The old iptables-nft package name is replaced by iptables, and the legacy backend is available as iptables-legacy.

When switching packages (among iptables-nft, iptables, iptables-legacy), check for .pacsave files in /etc/iptables/ and restore your rules if needed:

  • /etc/iptables/iptables.rules.pacsave
  • /etc/iptables/ip6tables.rules.pacsave

Most setups should work unchanged, but users relying on uncommon xtables extensions or legacy-only behavior should test carefully and use iptables-legacy if required.

Arch Linux - News: iptables now defaults to the nft backend

kea >= 1:3.0.3-6 update requires manual intervention

2026-04-07 - Robin Candau

The kea package has moved all services to run as a dedicated kea user (instead of root) for improved security. This change requires permission updates to the runtime files created by the kea services.

Users upgrading from an existing kea installation should therefore run the following commands after the upgrade:

chown kea: /var/lib/kea/* /var/log/kea/* /run/lock/kea/logger_lockfile

systemctl try-restart kea-ctrl-agent.service kea-dhcp{4,6,-ddns}.service

Accounts that need to interact with kea services files (e.g. lease files under /var/lib/kea, log files under /var/log/kea or configuration files under /etc/kea) should be added to the kea group.

Arch Linux - News: kea >= 1:3.0.3-6 update requires manual intervention

Notable Package Changes

Known Issues

udev-usb-sync and kernel 7.0-rc

If you experience slow transfers to USB attached disks, remove the package udev-usb-sync. It is not known why the 7.0 kernel causes this. There may be a regression of some sort. Awaiting the final release of the 7.0 kernel before jumping to conclusions.

GNOME Shell extensions being updated to GNOME 50 are delayed

GNOME Shell extensions reviews have become delayed due to our main reviewer being cut off from the Internet. The backlog is getting long and while some community members have stepped up the progress is slow. Much appreciation to those who are stepping up. Please be aware that the review delay means that extensions being updated to GNOME 50 are being delayed.

#242 Shuffling Cards

Additional Info

Python 3.14 info

:information_source: You will need to rebuild any AUR Python packages that install files to site-packages or link to libpython3.13.so.

Print a list of of packages that have files in /usr/lib/python3.13/ :

pacman -Qoq /usr/lib/python3.13/

Rebuild them all at once:*

pamac build $(pacman -Qoq /usr/lib/python3.13)

Use rebuild-detector to see if anything else needs to be rebuilt:

 checkrebuild

* It’s recommended to clean your build cache first with pamac clean --build-files

Info about AUR packages

:warning: AUR (Arch User Repository) packages are neither supported by Arch nor Manjaro. Posts about them in Announcements topics are off-topic and will be flagged, moved or removed without warning.

For help with AUR packages, please create a new topic in Support > AUR and a helpful volunteer may be able to assist you.


Get our latest daily developer images now from Github: Plasma, GNOME, XFCE. You can get the latest stable releases of Manjaro from CDN77.

Check if your mirror has already synced:

2 Likes

Hello,
right after the update, I noticed that the temperature for my RAM is no longer being displayed.
I’m still looking into this in detail, but maybe someone else has noticed something similar.

Update:
After a complete shutdown and restart, everything is working fine again. It probably wasn’t related to the update after all…so forget it.

I have discovered an issue between linux70 and udev-usb-sync. udev-usb-sync prevents caching writes to USB drives. See: Strict limit of write cache / 0s sync time policy for usb devices by default - #25 by linux-aarhus

Under Linux 7.0.0-rc6-1-MANJARO (and all earlier rcs) when copying a large file, like an ISO, to a USB (I’ve tried several, both A and C types, and 2.0 to 3.1) file transfer is unacceptably slow–single and double-digit KiBs/sec–when also using udev-usb-sync.

Removing udev-usb-sync restores file transfer to the usual 60-65 MiBs/sec, but of course, with cached writes.

Conversely, with udev-usb-sync installed, but reverting to earlier kernels (6.18 or 6.19) file transfer also proceeds at the expected higher rate, with uncached writes.

For now, since I like its benefits so much, I’m leaving udev-usb-sync installed and booting to older kernels when I need to copy a new ISO to my Ventoy USB.

While I have not thoroughly tested, there seems to be no issue with smaller writes, (all under 1 MiB).

inxi -zv8

System: Kernel: 7.0.0-rc6-1-MANJARO arch: x86_64 bits: 64 compiler: gcc v: 15.2.1 clocksource: tsc avail: acpi_pm parameters: BOOT_IMAGE=/boot/vmlinuz-7.0-x86_64 root=UUID=ea4f2edd-733a-4b30-a23d-c41894c4e38e rw rd.luks.key=/crypto_keyfile.bin rd.luks.name=8c31f8a9-1dd8-4081-ae58-442709a8aa73=root root=/dev/mapper/root rd.udev.log_priority=3 mitigations=off Desktop: KDE Plasma v: 6.6.3 tk: Qt v: N/A info: frameworks v: 6.24.0 wm: kwin_wayland vt: 2 dm: N/A Distro: Manjaro base: Arch Linux Machine: Type: Laptop System: Dell product: Latitude 5430 v: N/A serial: <superuser required> Chassis: type: 10 serial: <superuser required> Mobo: Dell model: 03G0RF v: A00 serial: <superuser required> part-nu: 0B04 uuid: <superuser required> Firmware: UEFI vendor: Dell v: 1.36.0 date: 12/23/2025 Battery: ID-1: BAT0 charge: 37.1 Wh (89.8%) condition: 41.3/41 Wh (100.8%) health: good temp: 29.5 C volts: 12.28 min: 11.25 model: SMP DELL 78FWY25 made: 2022-05-21 type: Li-poly serial: <filter> charging: status: not charging control: start: 50% end: 90% type: custom avail: adaptive,custom,fast,standard,trickle cycles: N/A Memory: System RAM: total: 32 GiB available: 31.03 GiB used: 3.53 GiB (11.4%) Message: For most reliable report, use superuser + dmidecode. Array-1: capacity: 64 GiB slots: 2 modules: 2 EC: None max-module-size: 32 GiB note: est. Device-1: DIMM A type: DDR4 detail: synchronous size: 16 GiB speed: 3200 MT/s volts: curr: 1 width (bits): data: 64 total: 64 manufacturer: 802C0000802C part-no: 8ATF2G64HZ-3G2E2 serial: <filter> Device-2: DIMM B type: DDR4 detail: synchronous size: 16 GiB speed: 3200 MT/s volts: curr: 1 width (bits): data: 64 total: 64 manufacturer: 802C0000802C part-no: 8ATF2G64HZ-3G2F1 serial: <filter> PCI Slots: Permissions: Unable to run dmidecode. Root privileges required. CPU: Info: model: 12th Gen Intel Core i7-1255U bits: 64 type: MST AMCP arch: Alder Lake level: v3 note: check built: 2021+ process: Intel 7 (10nm ESF) family: 6 model-id: 0x9A (154) stepping: 4 microcode: 0x43B Topology: cpus: 1x dies: 1 clusters: 4 cores: 10 threads: 12 mt: 2 tpc: 2 st: 8 smt: enabled cache: L1: 928 KiB desc: d-8x32 KiB, 2x48 KiB; i-2x32 KiB, 8x64 KiB L2: 6.5 MiB desc: 2x1.2 MiB, 2x2 MiB L3: 12 MiB desc: 1x12 MiB Speed (MHz): avg: 400 min/max: 400/4700:3500 scaling: driver: intel_pstate governor: powersave cores: 1: 400 2: 400 3: 400 4: 400 5: 400 6: 400 7: 400 8: 400 9: 400 10: 400 11: 400 12: 400 bogomips: 62668 Flags: 3dnowprefetch abm acpi adx aes aperfmperf apic arat arch_capabilities arch_lbr arch_perfmon art avx avx2 avx_vnni bmi1 bmi2 bts clflush clflushopt clwb cmov constant_tsc cpuid cpuid_fault cx16 cx8 de ds_cpl dtes64 dtherm dts epb ept ept_ad erms est f16c flexpriority flush_l1d fma fpu fsgsbase fsrm fxsr gfni hfi ht hwp hwp_act_window hwp_epp hwp_notify hwp_pkg_req ibpb ibrs ibrs_enhanced ibt ida intel_pt invpcid lahf_lm lm mca mce md_clear mmx monitor movbe movdir64b movdiri msr mtrr nonstop_tsc nopl nx ospke pae pat pbe pcid pclmulqdq pdcm pdpe1gb pebs pge pku pln pni popcnt pse pse36 pts rdpid rdrand rdseed rdtscp rep_good sdbg sep serialize sha_ni smap smep smx split_lock_detect ss ssbd sse sse2 sse4_1 sse4_2 ssse3 stibp syscall tm tm2 tpr_shadow tsc tsc_adjust tsc_deadline_timer tsc_known_freq umip user_shstk vaes vme vmx vnmi vpclmulqdq vpid waitpkg x2apic xgetbv1 xsave xsavec xsaveopt xsaves xtopology xtpr Vulnerabilities: Type: gather_data_sampling status: Not affected Type: ghostwrite status: Not affected Type: indirect_target_selection status: Not affected Type: itlb_multihit status: Not affected Type: l1tf status: Not affected Type: mds status: Not affected Type: meltdown status: Not affected Type: mmio_stale_data status: Not affected Type: old_microcode status: Not affected Type: reg_file_data_sampling status: Vulnerable Type: retbleed status: Not affected Type: spec_rstack_overflow status: Not affected Type: spec_store_bypass status: Vulnerable Type: spectre_v1 status: Vulnerable: __user pointer sanitization and usercopy barriers only; no swapgs barriers Type: spectre_v2 status: Vulnerable; IBPB: disabled; STIBP: disabled; PBRSB-eIBRS: Vulnerable; BHI: Vulnerable Type: srbds status: Not affected Type: tsa status: Not affected Type: tsx_async_abort status: Not affected Type: vmscape status: Vulnerable Graphics: Device-1: Intel Alder Lake-UP3 GT2 [Iris Xe Graphics] vendor: Dell driver: i915 v: kernel alternate: xe arch: Xe process: Intel 10nm built: 2021-22+ ports: active: eDP-1 off: DP-1 empty: DP-2,HDMI-A-1 bus-ID: 00:02.0 chip-ID: 8086:46a8 class-ID: 0300 Device-2: Microdia Integrated_Webcam_HD driver: uvcvideo type: USB rev: 2.0 speed: 480 Mb/s lanes: 1 mode: 2.0 bus-ID: 3-6:3 chip-ID: 0c45:6d1d class-ID: 0e02 Display: wayland server: X.org v: 1.21.1.21 with: Xwayland v: 24.1.9 compositor: kwin_wayland driver: X: loaded: modesetting alternate: fbdev,vesa dri: iris gpu: i915 display-ID: 0 Monitor-1: DP-1 model: LG (GoldStar) HDR 4K serial: <filter> built: 2023 res: 3840x2160 dpi: 163 gamma: 1.2 chroma: red: x: 0.682 y: 0.314 green: x: 0.278 y: 0.675 blue: x: 0.153 y: 0.047 white: x: 0.314 y: 0.329 size: 600x340mm (23.62x13.39") diag: 690mm (27.2") ratio: 16:9 modes: 3840x2160, 2560x1440, 1920x1080, 1600x900, 1280x1024, 1280x800, 1152x864, 1280x720, 1024x768, 800x600, 720x480, 640x480 Monitor-2: eDP-1 model: LG Display 0x068d built: 2020 res: mode: 1920x1080 hz: 60 scale: 100% (1) dpi: 158 gamma: 1.2 chroma: red: x: 0.596 y: 0.369 green: x: 0.349 y: 0.545 blue: x: 0.149 y: 0.110 white: x: 0.314 y: 0.329 size: 309x174mm (12.17x6.85") diag: 355mm (14") ratio: 16:9 modes: 1920x1080 EDID-Warnings: 1: parse_edid: unknown flag 0 API: EGL v: 1.5 hw: drv: intel iris platforms: device: 0 drv: iris device: 1 drv: swrast gbm: drv: iris surfaceless: drv: iris wayland: drv: iris x11: drv: iris API: OpenGL v: 4.6 compat-v: 4.5 vendor: intel mesa v: 26.0.4-arch1.1 glx-v: 1.4 direct-render: yes renderer: Mesa Intel Iris Xe Graphics (ADL GT2) device-ID: 8086:46a8 memory: 30.3 GiB unified: yes display-ID: :0.0 API: Vulkan v: 1.4.341 layers: 2 device: 0 type: integrated-gpu name: Intel Iris Xe Graphics (ADL GT2) driver: mesa intel v: 26.0.4-arch1.1 device-ID: 8086:46a8 surfaces: N/A Info: Tools: api: clinfo, eglinfo, glxinfo, vulkaninfo de: kscreen-console,kscreen-doctor wl: wayland-info x11: xdpyinfo,xprop Audio: Device-1: Intel Alder Lake PCH-P High Definition Audio vendor: Dell driver: snd_hda_intel v: kernel alternate: snd_soc_avs,snd_sof_pci_intel_tgl bus-ID: 00:1f.3 chip-ID: 8086:51c8 class-ID: 0403 API: ALSA v: k7.0.0-rc6-1-MANJARO status: kernel-api with: aoss type: oss-emulator tools: alsactl,alsamixer,amixer Server-1: sndiod v: N/A status: off tools: aucat,midicat,sndioctl Server-2: JACK v: 1.9.22 status: off tools: N/A Server-3: PipeWire v: 1.6.2 status: active with: 1: pipewire-pulse status: active 2: wireplumber status: active 3: pipewire-alsa type: plugin tools: pactl,pw-cat,pw-cli,wpctl Network: Device-1: Intel Ethernet I219-LM vendor: Dell driver: e1000e v: kernel port: N/A bus-ID: 00:1f.6 chip-ID: 8086:1a1e class-ID: 0200 IF: enp0s31f6 state: down mac: <filter> Device-2: Intel Wi-Fi 7 AX1775 /AX1790 /BE20 /BE401/BE1750 2x2 driver: iwlwifi v: kernel pcie: gen: 3 speed: 8 GT/s lanes: 1 link-max: gen: 4 speed: 16 GT/s bus-ID: 72:00.0 chip-ID: 8086:272b class-ID: 0280 IF: wlp114s0f0 state: up mac: <filter> IP v4: <filter> type: dynamic noprefixroute scope: global broadcast: <filter> IP v6: <filter> type: dynamic noprefixroute scope: global IP v6: <filter> type: noprefixroute scope: link IF-ID-1: proton0 state: unknown speed: N/A duplex: N/A mac: N/A IP v4: <filter> type: noprefixroute scope: global IF-ID-2: pvpnksintrf0 state: unknown speed: N/A duplex: N/A mac: <filter> IP v4: <filter> type: noprefixroute scope: global broadcast: <filter> IP v6: <filter> type: noprefixroute scope: global IP v6: <filter> type: noprefixroute scope: link Info: services: NetworkManager, systemd-timesyncd, wpa_supplicant WAN IP: <filter> Bluetooth: Device-1: Intel BE200 Bluetooth driver: btusb v: 0.8 type: USB rev: 2.0 speed: 12 Mb/s lanes: 1 mode: 1.1 bus-ID: 3-10:4 chip-ID: 8087:0036 class-ID: e001 Report: hciconfig ID: hci0 rfk-id: 2 state: up address: <filter> bt-v: 5.4 lmp-v: 13 sub-v: 409b hci-v: 13 rev: 409b class-ID: 6c010c Info: acl-mtu: 1021:4 sco-mtu: 96:6 link-policy: rswitch sniff link-mode: peripheral accept service-classes: rendering, capturing, audio, telephony Logical: Message: No logical block device data found. Device-1: root maj-min: 253:0 type: LUKS dm: dm-0 size: 128 GiB Components: p-1: nvme0n1p2 maj-min: 259:2 size: 128 GiB Device-2: luks-4f550296-12f7-40e2-a231-7b5f0aa9b7ea maj-min: 253:1 type: LUKS dm: dm-1 size: 3.6 TiB Components: p-1: nvme0n1p3 maj-min: 259:3 size: 3.6 TiB RAID: Message: No RAID data found. Drives: Local Storage: total: 3.84 TiB used: 710.38 GiB (18.1%) SMART Message: Unable to run smartctl. Root privileges required. ID-1: /dev/nvme0n1 maj-min: 259:0 model: XG7000-4TB 2280 size: 3.73 TiB block-size: physical: 512 B logical: 512 B speed: 63.2 Gb/s lanes: 4 tech: SSD serial: <filter> fw-rev: SN19172 temp: 43.9 C scheme: GPT ID-2: /dev/sda maj-min: 8:0 vendor: Samsung model: Type-C size: 119.51 GiB block-size: physical: 512 B logical: 512 B type: USB rev: 3.1 spd: 5 Gb/s lanes: 1 mode: 3.2 gen-1x1 tech: N/A serial: <filter> fw-rev: 1100 scheme: MBR SMART Message: Unknown USB bridge. Flash drive/Unsupported enclosure? Message: No optical or floppy data found. Partition: ID-1: / raw-size: 128 GiB size: 125.43 GiB (97.99%) used: 68.47 GiB (54.6%) fs: ext4 dev: /dev/dm-0 maj-min: 253:0 mapped: root label: N/A uuid: N/A ID-2: /Data raw-size: 3.6 TiB size: 3.54 TiB (98.40%) used: 602.73 GiB (16.6%) fs: ext4 dev: /dev/dm-1 maj-min: 253:1 mapped: luks-4f550296-12f7-40e2-a231-7b5f0aa9b7ea label: Data uuid: ac8d2e7b-87bd-40da-9feb-a11e79f0ca86 ID-3: /boot/efi raw-size: 2 GiB size: 2 GiB (99.80%) used: 85.9 MiB (4.2%) fs: vfat dev: /dev/nvme0n1p1 maj-min: 259:1 label: UEFI uuid: AAC3-479E ID-4: /run/media/brucew/Ventoy-C raw-size: 119.48 GiB size: 119.47 GiB (100.00%) used: 39.11 GiB (32.7%) fs: exfat dev: /dev/sda1 maj-min: 8:1 label: Ventoy-C uuid: B038-B41F Swap: Alert: No swap data was found. Unmounted: ID-1: /dev/sda2 maj-min: 8:2 size: 32 MiB fs: vfat label: VTOYEFI uuid: 626B-4255 USB: Hub-1: 1-0:1 info: hi-speed hub with single TT ports: 1 rev: 2.0 speed: 480 Mb/s (57.2 MiB/s) lanes: 1 mode: 2.0 chip-ID: 1d6b:0002 class-ID: 0900 Hub-2: 2-0:1 info: super-speed hub ports: 2 rev: 3.1 speed: 20 Gb/s (2.33 GiB/s) lanes: 2 mode: 3.2 gen-2x2 chip-ID: 1d6b:0003 class-ID: 0900 Device-1: 2-2:3 info: Silicon Motion - Taiwan (formerly Feiya ) Flash Drive type: mass storage driver: usb-storage interfaces: 1 rev: 3.1 speed: 5 Gb/s (596.0 MiB/s) lanes: 1 mode: 3.2 gen-1x1 power: 304mA chip-ID: 090c:1000 class-ID: 0806 serial: <filter> Hub-3: 3-0:1 info: hi-speed hub with single TT ports: 12 rev: 2.0 speed: 480 Mb/s (57.2 MiB/s) lanes: 1 mode: 2.0 chip-ID: 1d6b:0002 class-ID: 0900 Hub-4: 3-1:2 info: Realtek RTS5411 Hub ports: 5 rev: 2.1 speed: 480 Mb/s (57.2 MiB/s) lanes: 1 mode: 2.0 chip-ID: 0bda:5411 class-ID: 0900 Device-1: 3-6:3 info: Microdia Integrated_Webcam_HD type: video driver: uvcvideo interfaces: 2 rev: 2.0 speed: 480 Mb/s (57.2 MiB/s) lanes: 1 mode: 2.0 power: 500mA chip-ID: 0c45:6d1d class-ID: 0e02 Device-2: 3-10:4 info: Intel BE200 Bluetooth type: bluetooth driver: btusb interfaces: 2 rev: 2.0 speed: 12 Mb/s (1.4 MiB/s) lanes: 1 mode: 1.1 power: 100mA chip-ID: 8087:0036 class-ID: e001 Hub-5: 4-0:1 info: super-speed hub ports: 4 rev: 3.1 speed: 10 Gb/s (1.16 GiB/s) lanes: 1 mode: 3.2 gen-2x1 chip-ID: 1d6b:0003 class-ID: 0900 Sensors: System Temperatures: cpu: 49.0 C mobo: 44.0 C sodimm: 43.0 C Fan Speeds (rpm): cpu: 2090 Repos: Packages: 1466 pm: pacman pkgs: 1450 libs: 324 tools: pamac,paru,yay pm: flatpak pkgs: 16 Active pacman repo servers in: /etc/pacman.d/chaotic-mirrorlist 1: https://us-ny-mirror.chaotic.cx/$repo/$arch 2: https://us-mi-mirror.chaotic.cx/$repo/$arch 3: https://ca-1-mirror.chaotic.cx/$repo/$arch 4: https://ca-2-mirror.chaotic.cx/$repo/$arch 5: https://ca-3-mirror.chaotic.cx/$repo/$arch 6: https://ca-4-mirror.chaotic.cx/$repo/$arch 7: https://us-mirror.chaotic.cx/$repo/$arch 8: https://ca-mirror.chaotic.cx/$repo/$arch 9: https://geo-mirror.chaotic.cx/$repo/$arch 10: https://cdn-mirror.chaotic.cx/$repo/$arch Active pacman repo servers in: /etc/pacman.d/mirrorlist 1: https://nocix.mm.fcix.net/manjaro/unstable/$repo/$arch 2: https://cofractal-ewr.mm.fcix.net/manjaro/unstable/$repo/$arch 3: https://ohioix.mm.fcix.net/manjaro/unstable/$repo/$arch 4: https://repo.ialab.dsu.edu/manjaro/unstable/$repo/$arch 5: https://mirror.xenyth.net/manjaro/unstable/$repo/$arch 6: https://muug.ca/mirror/manjaro/unstable/$repo/$arch 7: https://ziply.mm.fcix.net/manjaro/unstable/$repo/$arch 8: https://mirrors.ocf.berkeley.edu/manjaro/unstable/$repo/$arch Processes: CPU top: 5 of 345 1: cpu: 7.1% command: syncthing pid: 1134 mem: 80.5 MiB (0.2%) 2: cpu: 6.3% command: vivaldi-bin pid: 5068 mem: 435.8 MiB (1.3%) 3: cpu: 4.7% command: vivaldi-bin pid: 5190 mem: 274.4 MiB (0.8%) 4: cpu: 4.3% command: vivaldi-bin pid: 5227 mem: 155.9 MiB (0.4%) 5: cpu: 2.8% command: kwin_wayland pid: 1175 mem: 236.0 MiB (0.7%) Memory top: 5 of 345 1: mem: 435.8 MiB (1.3%) command: vivaldi-bin pid: 5068 cpu: 6.3% 2: mem: 368.0 MiB (1.1%) command: plasmashell pid: 1362 cpu: 2.6% 3: mem: 274.4 MiB (0.8%) command: vivaldi-bin pid: 5190 cpu: 4.7% 4: mem: 236.0 MiB (0.7%) command: kwin_wayland pid: 1175 cpu: 2.8% 5: mem: 233.5 MiB (0.7%) command: protonvpn-app started-by: python pid: 1558 cpu: 0.5% Info: Processes: 345 Power: uptime: 6m states: freeze,mem,disk suspend: s2idle wakeups: 0 hibernate: platform avail: shutdown, reboot, suspend, test_resume image: 12.35 GiB services: org_kde_powerdevil, power-profiles-daemon, upowerd Init: systemd v: 260 default: graphical tool: systemctl Compilers: clang: 22.1.2 gcc: 15.2.1 Shell: Zsh v: 5.9 running-in: konsole inxi: 3.3.40

EDIT: Added inxi

3 Likes

Very nice trouble-shooting @brucew :+1:

I was having the same issues on my Testing branch system, as I download large video files and lots of pictures to an external drive. Video files were slowing down after 30 or so MB, and the Tab Image Saver add-on for firefox was saving the first couple of images (I set it up to write 2 pictures at a time to the external drive which is symlinked to my ~/Downloads directory), and then slowing to a crawl for the other images.

I’ve just removed the udev-usb-sync package, switched back to linux70 RC6, and the files are now saving properly and at a decent speed.

1 Like

Confirmed here. I also have udev-usb-sync installed. I never imagined that would be the culprit. I went back to kernel 6.19.

Thank you for spotting this - strangely I only have the issue with one disk - an older Western Digital MyPassport SSD.

My other storage devices - nvme ssd in enclosures has no issues - which lead me to the conclusion that my WD disk was to be discarded.

Removing udev-usb-sync package resulted in my WD disk to work as expected.

My USB sticks has no issues either.

The udev-usb-script is using the speed reported by the kernel to calculate the metrics matching the device.

I am guessing this is a regression with the 7.0 kernel - other than that I have no idea.

Perhaps the co-author of udev-usb-sync @megavolt has ideas?

3 Likes

Actually, no idea. @linux-aarhus

I modified my script and added logging. You can see the result when I plug in the USB stick below:

2026-04-05 11:20:14 [INFO] 7.0.0-rc4-1-MANJARO
2026-04-05 11:20:14 [INFO] Configuration: /etc/udev-usb-sync/udev-usb-sync.conf
2026-04-05 11:20:14 [INFO] Autocalculation is on.
2026-04-05 11:20:14 [INFO] Called with -> sdb 480
2026-04-05 11:20:14 [INFO] Cache disabled.
2026-04-05 11:20:14 [BDI] max_bytes:5094014976;max_ratio:100;strict_limit:0
2026-04-05 11:20:14 [BUFFER] old -> 5093998592 bytes [4858MB]
2026-04-05 11:20:14 [BUFFER] cal -> 4089446 bytes [4MB]
2026-04-05 11:20:14 [BUFFER] new -> 4085311 bytes [4MB]
2026-04-05 11:20:14 [INFO] Strict limit applied.
2026-04-05 11:20:14 [BDI] max_bytes:4085311;max_ratio:0;strict_limit:1
2026-04-05 11:20:14 [INFO] Duration: 20ms (0.020s)

The same applies to my WD Elements USB HDD.

2026-04-05 11:25:43 [INFO] 7.0.0-rc4-1-MANJARO
2026-04-05 11:25:43 [INFO] Configuration: /etc/udev-usb-sync/udev-usb-sync.conf
2026-04-05 11:25:43 [INFO] Autocalculation is on.
2026-04-05 11:25:43 [INFO] Called with -> sda 5000
2026-04-05 11:25:43 [INFO] Cache disabled.
2026-04-05 11:25:43 [BDI] max_bytes:5154287616;max_ratio:100;strict_limit:0
2026-04-05 11:25:43 [BUFFER] old -> 5154287616 bytes [4916MB]
2026-04-05 11:25:43 [BUFFER] cal -> 42598400 bytes [41MB]
2026-04-05 11:25:43 [BUFFER] new -> 42595032 bytes [41MB]
2026-04-05 11:25:43 [INFO] Strict limit applied.
2026-04-05 11:25:43 [BDI] max_bytes:42594288;max_ratio:0;strict_limit:1
2026-04-05 11:25:43 [INFO] Duration: 22ms (0.022s)

So it does what it should do.

@linux-aarhus @jrichard326 @scotty65 @brucew

Improved script with logging:

udev-usb-sync (with logging)
#!/usr/bin/bash
#
# The script is part of udev-usb-sync package
#
#    This program is free software: you can redistribute it and/or modify
#    it under the terms of the Affero GNU General Public License as published by
#    the Free Software Foundation, either version 3 of the License, or
#    (at your option) any later version.
#
#    This program is distributed in the hope that it will be useful,
#    but WITHOUT ANY WARRANTY; without even the implied warranty of
#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#    GNU General Public License for more details.
#
#    You should have received a copy of the GNU General Public License
#    along with this program.  If not, see <https://www.gnu.org/licenses/>.
#
#    @linux-aarhus - root.nix.dk
#
# configuration : /etc/udev-usb-sync/udev-usb-sync.conf
# triggered by  : /etc/udev/rules.d/99-usb-sync.rules
#
# contributors: @megavolt (Manjaro Forum)
#             : @linux-aarhus (Manjaro Forum)
# inspired by : @kwg (EndeavourOS Forum)
#
# Arguments provided by udev rule
#     $1: usb block device
#     $2: usb bandwidth reported by device
#

VERSION='devel'

START=$(date +%s%N)

if [[ -z $1 || -z $2 ]]; then
    echo ":: Script: udev-usb-sync version $VERSION"
    echo ":: See <https://gitlab.manjaro.org/applications/udev-usb-sync>"
    exit
fi

set -euo pipefail

LANG=C
LC_NUMERIC=C

AUTOCALC=${AUTOCALC:-1}
CONFIG='/etc/udev-usb-sync/udev-usb-sync.conf'
[[ -f $CONFIG ]] && source $CONFIG

LOG=${LOG:-1}
LOGFILE="/var/log/udev-usb-sync.log"

BLOCKDEVICE="$1"
SPEED="$2"

if [[ $LOG == 1 ]]; then
    log() { printf '%(%F %T)T [%s] %s\n' -1 "$1" "${*:2}"; }
    exec > >(tee -a $LOGFILE) 2>&1
fi

log INFO "$(uname -r)"

if [[ -f "$CONFIG" ]]; then
    log INFO "Configuration: $CONFIG"
else
    log WARNING "No configuration file found."
fi

if [[ $AUTOCALC == 1 ]]; then 
    log INFO "Autocalculation is on."
else
    log WARNING "Autocalculation is off. Fallback to strict 16MB buffer size."
fi

log INFO "Called with -> $BLOCKDEVICE $SPEED"

# disable write cache for device if possible

if command -v hdparm &>/dev/null; then
    hdparm -W 0 "/dev/$BLOCKDEVICE" &>/dev/null && log INFO "Cache disabled." || log WARNING "hdparm failed."
else
    log INFO "hdparm not installed, skipping."
fi

# the following rules is introduced with kernel 6.2
# https://docs.kernel.org/admin-guide/abi-testing.html#abi-sys-class-bdi-bdi-max-bytes

bdi_state() { grep . /sys/block/$BLOCKDEVICE/bdi/{max_bytes,max_ratio,strict_limit} | sed 's|.*/||' | paste -sd ';'; }
b2mb() { printf '%.0fMB' $(bc -l <<< "(${1} / 1024 / 1024 )"); }

log BDI "$(bdi_state)"

case $AUTOCALC in 
    0)  # apply 16M as max_bytes
        echo 16777216 > /sys/block/$BLOCKDEVICE/bdi/max_bytes
    ;;
    1) BUFFER_TIME=${BUFFER_TIME:-"0.05"}
       SAFETY_FACTOR=${SAFETY_FACTOR:-"1.3"}
       BUFFER_SIZE=$(printf '%.0f' "$(bc -l <<< "(($SPEED / 8) * $BUFFER_TIME * $SAFETY_FACTOR) * 1024 * 1024")")
       # for x in 12 480 5000 10000; do echo -n "$x -> " ;printf "%.0f\n" ` echo "(($x / 8) * 0.05 * 1.3) * 1024 * 1024" | bc`; done
       # 62915
       # 4089446
       # 42593157
       # 85196800
       # apply calculated buffer size
       OLD_BUFFER=$(cat /sys/block/$BLOCKDEVICE/bdi/max_bytes)
       log BUFFER "old -> ${OLD_BUFFER} bytes [$(b2mb ${OLD_BUFFER})]"
       log BUFFER "cal -> ${BUFFER_SIZE} bytes [$(b2mb ${BUFFER_SIZE})]"
       echo "$BUFFER_SIZE" > /sys/block/$BLOCKDEVICE/bdi/max_bytes
       NEW_BUFFER=$(cat /sys/block/$BLOCKDEVICE/bdi/max_bytes)
       log BUFFER "new -> ${NEW_BUFFER} bytes [$(b2mb ${NEW_BUFFER})]"
    ;;
esac

# https://docs.kernel.org/admin-guide/abi-testing.html#abi-sys-class-bdi-bdi-strict-limit
# apply strict limit
if echo 1 > /sys/block/$BLOCKDEVICE/bdi/strict_limit; then
    log INFO "Strict limit applied."
fi

log BDI "$(bdi_state)"

END=$(date +%s%N)
DURATION_MS=$(( (END - START) / 1000000 ))
DURATION_SC=$(printf '%d.%03d' $(( DURATION_MS / 1000 )) $(( DURATION_MS % 1000 )))
log INFO "Duration: ${DURATION_MS}ms (${DURATION_SC}s)"

Replace the script at /usr/bin/udev-usb-sync with this one and add LOG=1 to your configuration /etc/udev-usb-sync/udev-usb-sync.conf. It will log to /var/log/udev-usb-sync.log

1 Like

With 7.0rc6 I get

2026-04-05 11:49:24 [INFO] 7.0.0-rc6-1-MANJARO
2026-04-05 11:49:24 [INFO] Configuration: /etc/udev-usb-sync/udev-usb-sync.conf
2026-04-05 11:49:24 [INFO] Autocalculation is on.
2026-04-05 11:49:24 [INFO] Called with -> sdi 10000
2026-04-05 11:49:24 [INFO] Cache disabled.
2026-04-05 11:49:24 [BDI] max_bytes:22384701440;max_ratio:100;strict_limit:0
2026-04-05 11:49:24 [BUFFER] old -> 22380494848 bytes [21344MB]
2026-04-05 11:49:24 [BUFFER] cal -> 85196800 bytes [81MB]
2026-04-05 11:49:24 [BUFFER] new -> 85191909 bytes [81MB]
2026-04-05 11:49:24 [INFO] Strict limit applied.
2026-04-05 11:49:24 [BDI] max_bytes:85220117;max_ratio:0;strict_limit:1
2026-04-05 11:49:24 [INFO] Duration: 33ms (0.033s)
2026-04-05 11:49:24 [INFO] 7.0.0-rc6-1-MANJARO
2026-04-05 11:49:24 [INFO] Configuration: /etc/udev-usb-sync/udev-usb-sync.conf
2026-04-05 11:49:24 [INFO] Autocalculation is on.
2026-04-05 11:49:24 [INFO] Called with -> sdi2 10000
2026-04-05 11:49:24 [INFO] Cache disabled.
grep: /sys/block/sdi2/bdi/max_bytes: No such file or directory
grep: /sys/block/sdi2/bdi/max_ratio: No such file or directory
grep: /sys/block/sdi2/bdi/strict_limit: No such file or directory
2026-04-05 11:49:24 [BDI] 
cat: /sys/block/sdi2/bdi/max_bytes: No such file or directory
2026-04-05 11:49:24 [INFO] 7.0.0-rc6-1-MANJARO
2026-04-05 11:49:24 [INFO] Configuration: /etc/udev-usb-sync/udev-usb-sync.conf
2026-04-05 11:49:24 [INFO] Autocalculation is on.
2026-04-05 11:49:24 [INFO] Called with -> sdi1 10000
2026-04-05 11:49:24 [INFO] Cache disabled.
grep: /sys/block/sdi1/bdi/max_bytes: No such file or directory
grep: /sys/block/sdi1/bdi/max_ratio: No such file or directory
grep: /sys/block/sdi1/bdi/strict_limit: No such file or directory
2026-04-05 11:49:24 [BDI] 
cat: /sys/block/sdi1/bdi/max_bytes: No such file or directory
2026-04-05 11:49:24 [INFO] 7.0.0-rc6-1-MANJARO
2026-04-05 11:49:24 [INFO] Configuration: /etc/udev-usb-sync/udev-usb-sync.conf
2026-04-05 11:49:24 [INFO] Autocalculation is on.
2026-04-05 11:49:24 [INFO] Called with -> sdi2 10000
2026-04-05 11:49:24 [INFO] 7.0.0-rc6-1-MANJARO
2026-04-05 11:49:24 [INFO] Configuration: /etc/udev-usb-sync/udev-usb-sync.conf
2026-04-05 11:49:24 [INFO] Autocalculation is on.
2026-04-05 11:49:24 [INFO] Called with -> sdi1 10000
2026-04-05 11:49:24 [INFO] Cache disabled.
2026-04-05 11:49:24 [INFO] Cache disabled.
grep: /sys/block/sdi2/bdi/max_bytes: No such file or directory
grep: /sys/block/sdi2/bdi/max_ratio: No such file or directory
grep: /sys/block/sdi2/bdi/strict_limit: No such file or directory
2026-04-05 11:49:24 [BDI] 
grep: /sys/block/sdi1/bdi/max_bytes: No such file or directory
grep: /sys/block/sdi1/bdi/max_ratio: No such file or directory
grep: /sys/block/sdi1/bdi/strict_limit: No such file or directory
2026-04-05 11:49:24 [BDI] 
cat: /sys/block/sdi2/bdi/max_bytes: No such file or directory
cat: /sys/block/sdi1/bdi/max_bytes: No such file or directory

It looks like a regression - now that I think about it - I actually recall having the issue before with the same WD MyPassport SSD - and the issue has come and gone with various iterations over the 7.0 rc kernels.

So it seems to do what it is supposed to do.

It should not call partitions and it doesn’t work with partiition… somehow it is fixed for me… :thinking:

This line at udev rule:

https://gitlab.manjaro.org/applications/udev-usb-sync/-/blob/master/99-usb-sync.rules?ref_type=heads#L34

KERNEL!="sd[a-z]", GOTO="usb_limit_write_cache_end"

Please correct it @linux-aarhus :slight_smile:

2 Likes

I have 2 devices, and these are the udev-usb-sync logs for them:

14TB WD Elements (/dev/sda):

2026-04-05 19:53:52 [INFO] 7.0.0-rc6-1-MANJARO
2026-04-05 19:53:52 [INFO] Configuration: /etc/udev-usb-sync/udev-usb-sync.conf
2026-04-05 19:53:52 [INFO] Autocalculation is on.
2026-04-05 19:53:52 [INFO] Called with -> sda 5000
2026-04-05 19:53:52 [INFO] Cache disabled.
2026-04-05 19:53:52 [BDI] max_bytes:11384553472;max_ratio:100;strict_limit:0
2026-04-05 19:53:52 [BUFFER] old -> 11384406016 bytes [10857MB]
2026-04-05 19:53:52 [BUFFER] cal -> 42598400 bytes [41MB]
2026-04-05 19:53:52 [BUFFER] new -> 42589062 bytes [41MB]
2026-04-05 19:53:52 [INFO] Strict limit applied.
2026-04-05 19:53:52 [BDI] max_bytes:42588511;max_ratio:0;strict_limit:1
2026-04-05 19:53:52 [INFO] Duration: 26ms (0.026s)
2026-04-05 19:53:52 [INFO] 7.0.0-rc6-1-MANJARO
2026-04-05 19:53:52 [INFO] Configuration: /etc/udev-usb-sync/udev-usb-sync.conf
2026-04-05 19:53:52 [INFO] Autocalculation is on.
2026-04-05 19:53:52 [INFO] Called with -> sda1 5000
2026-04-05 19:53:52 [INFO] Cache disabled.
grep: /sys/block/sda1/bdi/max_bytes: No such file or directory
grep: /sys/block/sda1/bdi/max_ratio: No such file or directory
grep: /sys/block/sda1/bdi/strict_limit: No such file or directory
2026-04-05 19:53:52 [BDI] 
cat: /sys/block/sda1/bdi/max_bytes: No such file or directory
2026-04-05 19:53:53 [INFO] 7.0.0-rc6-1-MANJARO
2026-04-05 19:53:53 [INFO] Configuration: /etc/udev-usb-sync/udev-usb-sync.conf
2026-04-05 19:53:53 [INFO] Autocalculation is on.
2026-04-05 19:53:53 [INFO] Called with -> sda1 5000
2026-04-05 19:53:53 [INFO] Cache disabled.
grep: /sys/block/sda1/bdi/max_bytes: No such file or directory
grep: /sys/block/sda1/bdi/max_ratio: No such file or directory
grep: /sys/block/sda1/bdi/strict_limit: No such file or directory
2026-04-05 19:53:53 [BDI] 
cat: /sys/block/sda1/bdi/max_bytes: No such file or directory

Kingston DataTraveler 3.0 14GB USB stick (/dev/sdb):

2026-04-05 19:54:14 [INFO] 7.0.0-rc6-1-MANJARO
2026-04-05 19:54:14 [INFO] Configuration: /etc/udev-usb-sync/udev-usb-sync.conf
2026-04-05 19:54:14 [INFO] Autocalculation is on.
2026-04-05 19:54:14 [INFO] Called with -> sdb 5000
2026-04-05 19:54:14 [INFO] Cache disabled.
2026-04-05 19:54:14 [BDI] max_bytes:11343728640;max_ratio:100;strict_limit:0
2026-04-05 19:54:14 [BUFFER] old -> 11343728640 bytes [10818MB]
2026-04-05 19:54:14 [BUFFER] cal -> 42598400 bytes [41MB]
2026-04-05 19:54:14 [BUFFER] new -> 42595162 bytes [41MB]
2026-04-05 19:54:14 [INFO] Strict limit applied.
2026-04-05 19:54:14 [BDI] max_bytes:42595055;max_ratio:0;strict_limit:1
2026-04-05 19:54:14 [INFO] Duration: 21ms (0.021s)
2026-04-05 19:54:14 [INFO] 7.0.0-rc6-1-MANJARO
2026-04-05 19:54:14 [INFO] Configuration: /etc/udev-usb-sync/udev-usb-sync.conf
2026-04-05 19:54:14 [INFO] Autocalculation is on.
2026-04-05 19:54:14 [INFO] Called with -> sdb2 5000
2026-04-05 19:54:14 [INFO] 7.0.0-rc6-1-MANJARO
2026-04-05 19:54:14 [INFO] Configuration: /etc/udev-usb-sync/udev-usb-sync.conf
2026-04-05 19:54:14 [INFO] Autocalculation is on.
2026-04-05 19:54:14 [INFO] Called with -> sdb1 5000
2026-04-05 19:54:14 [INFO] Cache disabled.
grep: /sys/block/sdb2/bdi/max_bytes: No such file or directory
grep: /sys/block/sdb2/bdi/max_ratio: No such file or directory
grep: /sys/block/sdb2/bdi/strict_limit: No such file or directory
2026-04-05 19:54:14 [BDI] 
2026-04-05 19:54:14 [INFO] Cache disabled.
grep: /sys/block/sdb1/bdi/max_bytes: No such file or directory
grep: /sys/block/sdb1/bdi/max_ratio: No such file or directory
grep: /sys/block/sdb1/bdi/strict_limit: No such file or directory
2026-04-05 19:54:14 [BDI] 
cat: /sys/block/sdb2/bdi/max_bytes: No such file or directory
cat: /sys/block/sdb1/bdi/max_bytes: No such file or directory
2026-04-05 19:54:14 [INFO] 7.0.0-rc6-1-MANJARO
2026-04-05 19:54:14 [INFO] Configuration: /etc/udev-usb-sync/udev-usb-sync.conf
2026-04-05 19:54:14 [INFO] Autocalculation is on.
2026-04-05 19:54:14 [INFO] Called with -> sdb1 5000
2026-04-05 19:54:14 [INFO] Cache disabled.
grep: /sys/block/sdb1/bdi/max_bytes: No such file or directory
grep: /sys/block/sdb1/bdi/max_ratio: No such file or directory
grep: /sys/block/sdb1/bdi/strict_limit: No such file or directory
2026-04-05 19:54:14 [BDI] 
cat: /sys/block/sdb1/bdi/max_bytes: No such file or directory

Edit: I see that @megavolt has already replied to @linux-aarhus while I was copying & pasting my logs here. It looks like exactly the same thing is occurring with my devices.

I have pushed an updated version with logging capability and updated udev rules.

Version 1.1 has been pushed to unstable branch.

3 Likes

I downloaded the package manually from an Unstable mirror and installed it on my Testing system using sudo pacman -U udev-usb-sync-1.1-1-any.pkg.tar.zst. The log looks much better for both drives:

2026-04-05 20:38:02 [INFO] 7.0.0-rc6-1-MANJARO
2026-04-05 20:38:02 [INFO] Configuration: /etc/udev-usb-sync/udev-usb-sync.conf
2026-04-05 20:38:02 [INFO] Autocalculation is on.
2026-04-05 20:38:02 [INFO] Called with -> sda 5000
2026-04-05 20:38:02 [INFO] 7.0.0-rc6-1-MANJARO
2026-04-05 20:38:02 [INFO] Configuration: /etc/udev-usb-sync/udev-usb-sync.conf
2026-04-05 20:38:02 [INFO] Autocalculation is on.
2026-04-05 20:38:02 [INFO] Called with -> sdb 5000
2026-04-05 20:38:02 [INFO] Cache disabled.
2026-04-05 20:38:02 [INFO] Cache disabled.
2026-04-05 20:38:02 [BDI] max_bytes:5938036736;max_ratio:100;strict_limit:0
2026-04-05 20:38:02 [BDI] max_bytes:5938036736;max_ratio:100;strict_limit:0
2026-04-05 20:38:02 [BUFFER] old -> 5936738304 bytes [5662MB]
2026-04-05 20:38:02 [BUFFER] old -> 5936738304 bytes [5662MB]
2026-04-05 20:38:02 [BUFFER] cal -> 42598400 bytes [41MB]
2026-04-05 20:38:02 [BUFFER] cal -> 42598400 bytes [41MB]
2026-04-05 20:38:02 [BUFFER] new -> 42594275 bytes [41MB]
2026-04-05 20:38:02 [INFO] Strict limit applied.
2026-04-05 20:38:02 [BUFFER] new -> 42594833 bytes [41MB]
2026-04-05 20:38:02 [INFO] Strict limit applied.
2026-04-05 20:38:02 [BDI] max_bytes:42594128;max_ratio:0;strict_limit:1
2026-04-05 20:38:02 [BDI] max_bytes:42593040;max_ratio:0;strict_limit:1
2026-04-05 20:38:02 [INFO] Duration: 36ms (0.036s)
2026-04-05 20:38:02 [INFO] Duration: 36ms (0.036s)

Note: /dev/sda & /dev/sdb are mixed together as I rebooted, so they were mounted at the same time.

However, saving 10 images via Tab Image Saver from firefox still took much longer than it should have. These should have completed writing to the drive within a few seconds, not 3 minutes:

ls -lht /run/media/scotty/14TB-Elements/14TB-Rename/ 
total 276M
-rw-r--r-- 1 scotty scotty 40M Apr  5 20:45 'DSC05186 _2B.jpg'
-rw-r--r-- 1 scotty scotty 27M Apr  5 20:45 'DSC05383 _2B.jpg'
-rw-r--r-- 1 scotty scotty 14M Apr  5 20:44 'DSC05039 crop copy.jpg'
-rw-r--r-- 1 scotty scotty 14M Apr  5 20:44 'DSC05039 crop.jpg'
-rw-r--r-- 1 scotty scotty 22M Apr  5 20:43 'DSC05300 rps crop1.jpg'
-rw-r--r-- 1 scotty scotty 20M Apr  5 20:43 'DSC05401 _2B.jpg'
-rw-r--r-- 1 scotty scotty 35M Apr  5 20:42 'DSC05031 _2B.jpg'
-rw-r--r-- 1 scotty scotty 38M Apr  5 20:42 'DSC05040 _2B.jpg'
-rw-r--r-- 1 scotty scotty 37M Apr  5 20:42 'DSC05035 _2B.jpg'
-rw-r--r-- 1 scotty scotty 36M Apr  5 20:42 'DSC05029 _2B.jpg'

I’m going to remove udev-usb-sync from my (Testing branch) system for the time being as it is getting late (we just ended daylight saving, so 9pm feels like 10pm at the moment) and I need to do some downloads at full writing speed before I go to bed.

2026-04-05 13:01:52 [INFO] 7.0.0-rc6-1-MANJARO
2026-04-05 13:01:52 [INFO] Configuration: /etc/udev-usb-sync/udev-usb-sync.conf
2026-04-05 13:01:52 [INFO] Autocalculation is on.
2026-04-05 13:01:52 [INFO] Called with -> sdi 10000
2026-04-05 13:01:52 [INFO] Cache disabled.
2026-04-05 13:01:52 [BDI] max_bytes:22657822720;max_ratio:100;strict_limit:0
2026-04-05 13:01:52 [BUFFER] old -> 22657826816 bytes [21608MB]
2026-04-05 13:01:52 [BUFFER] cal -> 85196800 bytes [81MB]
2026-04-05 13:01:52 [BUFFER] new -> 85193074 bytes [81MB]
2026-04-05 13:01:52 [INFO] Strict limit applied.
2026-04-05 13:01:52 [BDI] max_bytes:85193074;max_ratio:0;strict_limit:1
2026-04-05 13:01:52 [INFO] Duration: 21ms (0.021s)

This is for my WD disk - the copying of a 700MB file is insanely slow - until I remove the package - then it copies fast as it should.

Perhaps we should have a disable option in the config - this way it should not be necessary to remove the package.

In any case I am thinking this is kernel related somehow.

2 Likes

I just tested with the updated package on a WD My Passport, older drive USB 2.0, I believe via USB Hub. The drive is XFS formatted. It was insanely slow . Removal of the package restored appropriate speeds. For some reason, I didn’t get much information on the log that was created.

2026-04-05 07:07:44 [INFO] 7.0.0-rc6-1-MANJARO
2026-04-05 07:07:44 [INFO] Configuration: /etc/udev-usb-sync/udev-usb-sync.conf
2026-04-05 07:07:44 [INFO] Autocalculation is on.
2026-04-05 07:07:44 [INFO] Called with -> sdb 480
2026-04-05 07:07:44 [INFO] Cache disabled.
2026-04-05 07:07:44 [BDI] max_bytes:15003648;max_ratio:100;strict_limit:0
2026-04-05 07:07:44 [BUFFER] old -> 15003648 bytes [14MB]
2026-04-05 07:07:44 [BUFFER] cal -> 4089446 bytes [4MB]
2026-04-05 07:07:44 [BUFFER] new -> 4087803 bytes [4MB]
2026-04-05 07:07:44 [INFO] Strict limit applied.
2026-04-05 07:07:44 [BDI] max_bytes:4087803;max_ratio:27;strict_limit:1
2026-04-05 07:07:44 [INFO] Duration: 16ms (0.016s)

It’s my pleasure to be of service, sir. :saluting_face:

I really do enjoy the uncached writes. Puts a little smile on my face every time.

After breakfast I’ll fire up the unstable-branch laptop and try it out.

@linux-aarhus @scotty65 @jrichard326 @brucew
I did some tests and can confirm also that there is speed drop when using linux7.0. After some adjustments, it seems that the write cache was too low and increased the IO drastically. No idea why this happens only in linux7. :man_shrugging:

I increased the buffer time from 0.05 to 0.1.

BUFFER_TIME='0.1'
SAFETY_FACTOR='1.6'

Now there is a 10MB Buffer instead of 4MB. It fluctuates a bit at first, but then stabilizes:

Starting write test: 1000 MB in 50 MB chunks...
Target: /run/media/user/Ventoy/testfile.img

Block | Written     | Speed           | Duration
---------------------------------------------------
   1  |      50 MB |     2.6 MB/s | 19151 ms
   2  |     100 MB |    17.6 MB/s |  2846 ms
   3  |     150 MB |    12.7 MB/s |  3944 ms
   4  |     200 MB |     5.3 MB/s |  9408 ms
   5  |     250 MB |     5.6 MB/s |  8863 ms
   6  |     300 MB |     5.4 MB/s |  9288 ms
   7  |     350 MB |     5.4 MB/s |  9336 ms
   8  |     400 MB |     4.4 MB/s | 11267 ms
   9  |     450 MB |     5.4 MB/s |  9316 ms
  10  |     500 MB |     2.7 MB/s | 18288 ms
  11  |     550 MB |    18.6 MB/s |  2687 ms
  12  |     600 MB |     4.8 MB/s | 10447 ms
  13  |     650 MB |     5.4 MB/s |  9268 ms
  14  |     700 MB |     5.4 MB/s |  9336 ms
  15  |     750 MB |     5.4 MB/s |  9296 ms
  16  |     800 MB |     4.5 MB/s | 11119 ms
  17  |     850 MB |     6.1 MB/s |  8148 ms
  18  |     900 MB |     2.3 MB/s | 21482 ms
  19  |     950 MB |    18.2 MB/s |  2751 ms
  20  |    1000 MB |     8.2 MB/s |  6061 ms
---------------------------------------------------
Waiting for final sync (actually writing data to the drive)...
Sync duration: 1066ms (1.066s)
2026-04-05 18:29:13 (sdb) [INFO] 7.0.0-rc4-1-MANJARO
2026-04-05 18:29:13 (sdb) [INFO] Configuration: /etc/udev-usb-sync/udev-usb-sync.conf
2026-04-05 18:29:13 (sdb) [INFO] Autocalculation is on.
2026-04-05 18:29:13 (sdb) [INFO] Called with -> sdb 480
2026-04-05 18:29:13 (sdb) [INFO] Cache disabled.
2026-04-05 18:29:13 (sdb) [BDI] max_bytes:19901760;max_ratio:0;strict_limit:1
2026-04-05 18:29:13 (sdb) [BUFFER] old -> 19901760 bytes [19MB]
2026-04-05 18:29:13 (sdb) [BUFFER] cal -> 10066330 bytes [10MB]
2026-04-05 18:29:13 (sdb) [BUFFER] new -> 10061116 bytes [10MB]
2026-04-05 18:29:13 (sdb) [INFO] Strict limit applied.
2026-04-05 18:29:13 (sdb) [BDI] max_bytes:10060611;max_ratio:0;strict_limit:1
2026-04-05 18:29:13 (sdb) [INFO] Duration: 26ms (0.026s)

My WD Elements USB HDD:

Starting write test: 1000 MB in 50 MB chunks...
Target: /srv/nfs/wdelements/no_cow/testfile.img

Block | Written     | Speed           | Duration
---------------------------------------------------
   1  |      50 MB |   268.8 MB/s |   186 ms
   2  |     100 MB |   357.1 MB/s |   140 ms
   3  |     150 MB |   359.7 MB/s |   139 ms
   4  |     200 MB |   354.6 MB/s |   141 ms
   5  |     250 MB |   347.2 MB/s |   144 ms
   6  |     300 MB |   347.2 MB/s |   144 ms
   7  |     350 MB |   349.7 MB/s |   143 ms
   8  |     400 MB |   352.1 MB/s |   142 ms
   9  |     450 MB |   354.6 MB/s |   141 ms
  10  |     500 MB |   390.6 MB/s |   128 ms
  11  |     550 MB |   390.6 MB/s |   128 ms
  12  |     600 MB |   393.7 MB/s |   127 ms
  13  |     650 MB |   390.6 MB/s |   128 ms
  14  |     700 MB |   340.1 MB/s |   147 ms
  15  |     750 MB |   370.4 MB/s |   135 ms
  16  |     800 MB |   322.6 MB/s |   155 ms
  17  |     850 MB |   362.3 MB/s |   138 ms
  18  |     900 MB |   344.8 MB/s |   145 ms
  19  |     950 MB |   367.6 MB/s |   136 ms
  20  |    1000 MB |   344.8 MB/s |   145 ms
---------------------------------------------------
Waiting for final sync (actually writing data to the drive)...
Sync duration: 13377ms (13.377s)
2026-04-05 18:53:18 (sda) [INFO] 7.0.0-rc4-1-MANJARO
2026-04-05 18:53:18 (sda) [INFO] Configuration: /etc/udev-usb-sync/udev-usb-sync.conf
2026-04-05 18:53:18 (sda) [INFO] Autocalculation is on.
2026-04-05 18:53:18 (sda) [INFO] Called with -> sda 5000
2026-04-05 18:53:18 (sda) [INFO] Cache disabled.
2026-04-05 18:53:18 (sda) [BDI] max_bytes:202303339;max_ratio:3;strict_limit:1
2026-04-05 18:53:18 (sda) [BUFFER] old -> 202299851 bytes [193MB]
2026-04-05 18:53:18 (sda) [BUFFER] cal -> 104857600 bytes [100MB]
2026-04-05 18:53:18 (sda) [BUFFER] new -> 104857127 bytes [100MB]
2026-04-05 18:53:18 (sda) [INFO] Strict limit applied.
2026-04-05 18:53:18 (sda) [BDI] max_bytes:104854415;max_ratio:2;strict_limit:1
2026-04-05 18:53:18 (sda) [INFO] Duration: 22ms (0.022s)

Here is the script, so we can compare. Run it like: usb-bench /mount/path

usb-bench
#!/usr/bin/bash
set -euo pipefail

# ADJUST HERE: Path to your mounted USB drive
TARGET="$1"

CHUNK_MB=50      # Size of each block in MB
TOTAL_MB=1000    # Total amount to write (here 1 GB)

echo "Starting write test: $TOTAL_MB MB in $CHUNK_MB MB chunks..."
echo "Target: $TARGET"
echo ""
echo "Block | Written     | Speed           | Duration"
echo "---------------------------------------------------"

# Delete old file if it exists
rm -f "$TARGET"
touch "$TARGET"

for ((i=0; i<TOTAL_MB/CHUNK_MB; i++)); do
    START_NS=$(date +%s%N)
    
    # Write chunks to the end of the file (oflag=append)
    dd if=/dev/urandom of="$TARGET" bs=1M count=$CHUNK_MB oflag=append conv=notrunc 2>/dev/null
    
    END_NS=$(date +%s%N)
    
    DURATION_MS=$(( (END_NS - START_NS) / 1000000 ))
    [[ $DURATION_MS -eq 0 ]] && DURATION_MS=1 # Prevent division by zero
    
    # Calculate MB/s
    SPEED_MBPS=$(awk "BEGIN {printf \"%.1f\", ($CHUNK_MB / ($DURATION_MS / 1000))}")
    WRITTEN=$(( (i+1) * CHUNK_MB ))
    
    printf " %3d  | %7d MB | %7s MB/s | %5d ms\n" $((i+1)) $WRITTEN "$SPEED_MBPS" $DURATION_MS
done

echo "---------------------------------------------------"
echo "Waiting for final sync (actually writing data to the drive)..."

SYNC_START=$(date +%s%N)
sync "$TARGET"
SYNC_END=$(date +%s%N)

SYNC_MS=$(( (SYNC_END - SYNC_START) / 1000000 ))
SYNC_S=$(awk "BEGIN {printf \"%.3f\", $SYNC_MS / 1000}")
echo "Sync duration: ${SYNC_MS}ms (${SYNC_S}s)"

# Cleanup (optional, can be commented out)
rm -f "$TARGET"

This just came in for linux7.0-rc7; maybe there’s something in there that explains the current issues:

@linux-aarhus @megavolt

Reporting in from the unstable-branch laptop:

I did a full pacman -Syu, noting version 1.1-1 was included. Rebooted, then selected a 131.5 MiB mp3 as the test file. Began copying to a Samsung USB-C 3.1 flash drive.

No joy.

While it’s roughly 10x faster than before, it’s still unacceptably slow.

As an ordinary user, the tools I know best are the Dolphin notifications and Resources. Both shown in the following screenshot:

If there are other diagnostic tools you’d like me to run, just ask, but please provide instructions assuming I know nothing. Which is pretty close to the mark.

Thanks for the effort so far!

Open /etc/udev-usb-sync/udev-usb-sync.conf as root with an text editor adjust the values to:

BUFFER_TIME='0.1'
SAFETY_FACTOR='1.6' #Maybe 1.3 is still ok
LOG=1

Unplug and then plug the USB back in. Check the log at /var/log/udev-usb-sync.log if the new buffer size was applied. Then test the speed again by copying something.

No significant improvement.

2026-04-05 14:00:00 [INFO] 7.0.0-rc6-1-MANJARO
2026-04-05 14:00:00 [INFO] Configuration: /etc/udev-usb-sync/udev-usb-sync.conf
2026-04-05 14:00:00 [INFO] Autocalculation is on.
2026-04-05 14:00:00 [INFO] Called with -> sda 5000
2026-04-05 14:00:00 [INFO] Cache disabled.
2026-04-05 14:00:00 [BDI] max_bytes:6122631168;max_ratio:100;strict_limit:0
2026-04-05 14:00:00 [BUFFER] old -> 6122569728 bytes [5839MB]
2026-04-05 14:00:00 [BUFFER] cal -> 42598400 bytes [41MB]
2026-04-05 14:00:00 [BUFFER] new -> 42593891 bytes [41MB]
2026-04-05 14:00:00 [INFO] Strict limit applied.
2026-04-05 14:00:00 [BDI] max_bytes:42593463;max_ratio:0;strict_limit:1
2026-04-05 14:00:00 [INFO] Duration: 15ms (0.015s)
2026-04-05 15:01:57 [INFO] 7.0.0-rc6-1-MANJARO
2026-04-05 15:01:57 [INFO] Configuration: /etc/udev-usb-sync/udev-usb-sync.conf
2026-04-05 15:01:57 [INFO] Autocalculation is on.
2026-04-05 15:01:57 [INFO] Called with -> sda 5000
2026-04-05 15:01:57 [INFO] Cache disabled.
2026-04-05 15:01:57 [BDI] max_bytes:39779695;max_ratio:0;strict_limit:1
2026-04-05 15:01:57 [BUFFER] old -> 39778926 bytes [38MB]
2026-04-05 15:01:57 [BUFFER] cal -> 42598400 bytes [41MB]
2026-04-05 15:01:57 [BUFFER] new -> 42596930 bytes [41MB]
2026-04-05 15:01:57 [INFO] Strict limit applied.
2026-04-05 15:01:57 [BDI] max_bytes:42594702;max_ratio:0;strict_limit:1
2026-04-05 15:01:57 [INFO] Duration: 13ms (0.013s)
2026-04-05 17:39:46 [INFO] 7.0.0-rc6-1-MANJARO
2026-04-05 17:39:46 [INFO] Configuration: /etc/udev-usb-sync/udev-usb-sync.conf
2026-04-05 17:39:46 [INFO] Autocalculation is on.
2026-04-05 17:39:46 [INFO] Called with -> sda 5000
2026-04-05 17:39:46 [INFO] Cache disabled.
2026-04-05 17:39:46 [BDI] max_bytes:6162554880;max_ratio:100;strict_limit:0
2026-04-05 17:39:46 [BUFFER] old -> 6162497536 bytes [5877MB]
2026-04-05 17:39:46 [BUFFER] cal -> 104857600 bytes [100MB]
2026-04-05 17:39:46 [BUFFER] new -> 104851829 bytes [100MB]
2026-04-05 17:39:46 [INFO] Strict limit applied.
2026-04-05 17:39:46 [BDI] max_bytes:104850783;max_ratio:1;strict_limit:1
2026-04-05 17:39:46 [INFO] Duration: 16ms (0.016s)