Китайцы такие китайцы... Решил навести разборки с китайской утилитой nuwriter. В винде NuWriter (GUI версия) работает стабильно, в линуксе NuWriter Cmd работает сильно нестабильно.
Два дня трахался, пока на другом проекте тестировал глюки с "-O3 -flto". Разобрался. Помогло побайтное сравнение низкоуровневых USB пакетов, пойманных wireshark, точнее, даже не само содержимое этих пакетов, а время между пакетами. Спойлер: проблема была в том, что у меня быстрый комп.
В линуксовой версии расстояние между bulk пакетами могло составлять 8 мкс (из-за быстрого ПК). В виндовой почти всегда более 100 мкс, видимо, движение данных сквозь слои API сильно медленее.
После того как я добавил задержку 100 мкс в bulk передачах, всё сразу стало работать.
Медленно, конечно, зато надёжно. Исходников загрузчика ROM программы у меня нет, поэтому х.з. какая минимальная задержка допустима.