I just had this problem on my linux laptop after upgrading python-trezor, protobuf3 and so on.
Turns out in my case the error only happens if the TREZOR is plugged into the USB3 port, in that
case trezorctl get_features works the first time, but if called again complains about Unexpected magic characters.
After some trial and error it turns out it works fine if I use one of the USB2 ports. So if someone has that
problem, try a different USB port.
Still feels to me that this is some kind of software issue, because it works with the first call.
That was also the symptom in electrum it would detect the trezor (first connection), but then fails
when it connects again (magic error). Maybe this bug
https://github.com/trezor/python-trezor/issues/76is not completely fixed?