firmware: adds timeout + failure response
separate repo for firmware, re-add as submodule