Before I noticed the "m" format to set fuses from immediate
commandline values, I tried to set them (using an Arduino-as-ISP) from
a binary file obtained by reading them (-U hfuse:r:hfuse.dump:b).
Using "-U hfuse:w:hfuse.dump:b" just fails:
$ avrdude -p m32u4 -c stk500v1 -b 19200 -P /dev/serial/by-id/usb-Arduino__www.arduino.cc__Arduino_Uno_6493534323335151A211-if00 -U hfuse:w:hfuse.dump:b
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.05s
avrdude: Device signature = 0x1e9587
avrdude: reading input file "hfuse.dump"
avrdude: fileio: invalid operation=0
avrdude: read from file 'hfuse.dump' failed
avrdude: safemode: Fuses OK (E:F3, H:D0, L:FC)
avrdude done. Thank you.
OTOH, using "-U hfuse:w:90:m" worked just fine.