Neznám konkrétní zařízení, ani jsem moc nezkoumal podobné USB-NVMe řadiče, spíš USB-SATA.
Nicméně přesto zkusím nadhodit pár tipů. Bude to asi trochu o laborování.
Pokud je problém s autosuspendem na úrovni USB zařízení, tak máte několik možností.
Zkusit kompletně vypnout autosuspend pro všechna USB zařízení (Parametr udává výchozí čas v sekundách, kdy je zařízení bez aktivity, než se uspí. Když se nastaví -1, autosuspend se vypne).
echo -1 > /sys/module/usbcore/parameters/autosuspend
Což by mohlo být zajímavé na základní ozkoušení. Pokud by to zabralo, můžete to pak např. nastavit jako parametr kernelu po bootu. Tzn. na rpi, přidat na konec řádku do /boot/cmdline.txt další parametr usbcore.autosuspend=-1
Můžete to také selektivně zakázat pouze na konkrétním zařízení.
Nejdřív si dohledejte, kde je to zapojené (sběrnice, zařízení), pomocí lsusb, případně lsusb -t. Pak najdete odpovídající cestu v sysfs a /sys/bus/devices
Tzn. například u mě je mass-storage zařízení 1-1.3 (můžete dál ověřit v iVendor, iProduct)
/sys/bus/usb/devices/1-1.3/
Tam se pak dá také zapsat timeout úplně stejným způsobem jako v předchozím případě:
echo -1 > /sys/bus/usb/devices/1-1.3/power/autosuspend
Pokud byste to pak chtěl aplikovat po startu, napíšete si jen nějaký skript, co to provede, případně systemd službu, udev pravidlo.
Další možnost je, že to suspend úplně nevyřeší, protože některá USB storage zařízení nechodí úplně hezky v UAS (USB Attached SCSI) režimu, třeba kvůli bugu ve firmware.
Naštěstí je pro tyhle případy možné konkrétní zařízení přepnout do standardního USB mass storage režimu pomocí tzn. usb-storage quirků. Je to v určitých situacích pomalejší, ale alespoň použitelné.
Viz.
https://forums.raspberrypi.com/viewtopic.php?f=28&t=245931Tzn. když si potvrdíte, že to zařízení jede v UAS režimu, tak si zjistíte USB VID:PID a přidáte další parametr kernelu (zas /boot/cmdline.txt)
usb-storage.quirks=VID:PID:u (:u je pak speciální switch)
usb-storage.quirks má ještě víc parametrů, kdyžtak můžete experimentovat i dál
https://github.com/torvalds/linux/blob/7ff71e6d923969d933e1ba7e0db857782d36cd19/Documentation/admin-guide/kernel-parameters.txt#L7610Finálně ještě odkážu na referenci quirků pro celý USB subsystém ze stejného dokumentu, kdyby bylo třeba ještě další laborování:
usbcore.quirks
https://github.com/torvalds/linux/blob/7ff71e6d923969d933e1ba7e0db857782d36cd19/Documentation/admin-guide/kernel-parameters.txt#L7531Nakonec varianta - brod, než to vyřešíte jinak. Nastavit si cron úlohu, systemd timer, co pak periodicky sáhne na dané zařízení, aby se neuspalo. Ekvivalent toho vašeho občasného zápisu, čtení.
Většinou není třeba sahat na filesystém, postačí použít třeba hdparm nebo smartctl, co jednou za čas "sáhne" na zařízení.. Např. hdparm /dev/sda