Вы можете найти коды ошибок в errno.h, который включает в себя errno-base.h . Возвращенные коды ошибок по соглашению отрицательны, поэтому -32 - это «сломанный канал», что, скорее всего, является следствием сбоя чтения или записи через USB.
2184800.usbmisc supply vbus-wakeup not found, using dummy regulator
выглядит подозрительно, особенно если он не появляется, когда вы ждете, прежде чем включить его снова.
Первое предположение состоит в том, что слишком быстрое отключение питания не приводит к полной разрядке внутренних мощностей в некоторых микросхемах, связанных с USB, поэтому, если вы включите его снова, он окажется в плохом состоянии, и код инициализации устройства либо не справится с этим состоянием, или не может справиться с этим, потому что это состояние никогда не должно было случиться.
Возможно, это можно будет исправить программно, перейдя к таблице данных с тонкой зубчатой гребенкой и параноидально инициализировав все до надлежащего состояния с таймаутами, когда это необходимо. Но это будет неинтересно, займет много времени, и вам понадобятся навыки для написания кода драйвера. И тогда плохое состояние может быть настолько безумным, что это не сработает.
Таким образом, самый простой обходной путь - «не включайте слишком быстро».